<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ml">
	<id>https://schoolwiki.in/index.php?action=history&amp;feed=atom&amp;title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82%3AFallback</id>
	<title>ഘടകം:Fallback - നാൾവഴി</title>
	<link rel="self" type="application/atom+xml" href="https://schoolwiki.in/index.php?action=history&amp;feed=atom&amp;title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82%3AFallback"/>
	<link rel="alternate" type="text/html" href="https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;action=history"/>
	<updated>2026-05-13T20:21:46Z</updated>
	<subtitle>വിക്കിയിൽ ഈ താളിന്റെ നാൾവഴി</subtitle>
	<generator>MediaWiki 1.43.4</generator>
	<entry>
		<id>https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;diff=2507723&amp;oldid=prev</id>
		<title>Ranjithsiji: ഒരു പതിപ്പ് ഇറക്കുമതി ചെയ്തു</title>
		<link rel="alternate" type="text/html" href="https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;diff=2507723&amp;oldid=prev"/>
		<updated>2024-06-27T12:02:34Z</updated>

		<summary type="html">&lt;p&gt;ഒരു പതിപ്പ് ഇറക്കുമതി ചെയ്തു&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;ml&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;←പഴയ രൂപം&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;17:32, 27 ജൂൺ 2024-നു നിലവിലുണ്ടായിരുന്ന രൂപം&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;ml&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(വ്യത്യാസം ഇല്ല)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key schoolwiki_db-sch_:diff:1.41:old-2507722:rev-2507723 --&gt;
&lt;/table&gt;</summary>
		<author><name>Ranjithsiji</name></author>
	</entry>
	<entry>
		<id>https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;diff=2507722&amp;oldid=prev</id>
		<title>en&gt;MusikBot II: Changed protection settings for &quot;Module:Fallback&quot;: High-risk template or module (more info) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))</title>
		<link rel="alternate" type="text/html" href="https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;diff=2507722&amp;oldid=prev"/>
		<updated>2021-08-23T18:01:07Z</updated>

		<summary type="html">&lt;p&gt;Changed protection settings for &amp;quot;&lt;a href=&quot;/%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&quot; title=&quot;ഘടകം:Fallback&quot;&gt;Module:Fallback&lt;/a&gt;&amp;quot;: High-risk template or module (&lt;a href=&quot;/index.php?title=%E0%B4%89%E0%B4%AA%E0%B4%AF%E0%B5%8B%E0%B4%95%E0%B5%8D%E0%B4%A4%E0%B4%BE%E0%B4%B5%E0%B5%8D:MusikBot_II/TemplateProtector&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;ഉപയോക്താവ്:MusikBot II/TemplateProtector (ഇതുവരെ എഴുതപ്പെട്ടിട്ടില്ല)&quot;&gt;more info&lt;/a&gt;) ([Edit=Allow only administrators] (indefinite) [Move=Allow only administrators] (indefinite))&lt;/p&gt;
&lt;a href=&quot;https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;amp;diff=2507722&amp;amp;oldid=1023469&quot;&gt;മാറ്റങ്ങൾ കാണിക്കുക&lt;/a&gt;</summary>
		<author><name>en&gt;MusikBot II</name></author>
	</entry>
	<entry>
		<id>https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;diff=1023469&amp;oldid=prev</id>
		<title>Adithyak1997: വിക്കിമീഡിയ കോമ്മൺസിൽ നിന്നും ഇറക്കുമതി ചെയ്തു</title>
		<link rel="alternate" type="text/html" href="https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;diff=1023469&amp;oldid=prev"/>
		<updated>2020-09-28T11:58:05Z</updated>

		<summary type="html">&lt;p&gt;വിക്കിമീഡിയ കോമ്മൺസിൽ നിന്നും ഇറക്കുമതി ചെയ്തു&lt;/p&gt;
&lt;a href=&quot;https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;amp;diff=1023469&amp;amp;oldid=523773&quot;&gt;മാറ്റങ്ങൾ കാണിക്കുക&lt;/a&gt;</summary>
		<author><name>Adithyak1997</name></author>
	</entry>
	<entry>
		<id>https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;diff=523773&amp;oldid=prev</id>
		<title>Ranjithsiji: ഒരു പതിപ്പ് ഇറക്കുമതി ചെയ്തു</title>
		<link rel="alternate" type="text/html" href="https://schoolwiki.in/index.php?title=%E0%B4%98%E0%B4%9F%E0%B4%95%E0%B4%82:Fallback&amp;diff=523773&amp;oldid=prev"/>
		<updated>2018-09-06T15:04:13Z</updated>

		<summary type="html">&lt;p&gt;ഒരു പതിപ്പ് ഇറക്കുമതി ചെയ്തു&lt;/p&gt;
&lt;p&gt;&lt;b&gt;പുതിയ താൾ&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
  __  __           _       _        _____     _ _ _                _    &lt;br /&gt;
 |  \/  | ___   __| |_   _| | ___ _|  ___|_ _| | | |__   __ _  ___| | __&lt;br /&gt;
 | |\/| |/ _ \ / _` | | | | |/ _ (_) |_ / _` | | | &amp;#039;_ \ / _` |/ __| |/ /&lt;br /&gt;
 | |  | | (_) | (_| | |_| | |  __/_|  _| (_| | | | |_) | (_| | (__|   &amp;lt; &lt;br /&gt;
 |_|  |_|\___/ \__,_|\__,_|_|\___(_)_|  \__,_|_|_|_.__/ \__,_|\___|_|\_\&lt;br /&gt;
 &lt;br /&gt;
 Authors and maintainers:&lt;br /&gt;
* User:Zolo   - original version&lt;br /&gt;
* User:Jarekt &lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
local function normalize_input_args(input_args, output_args)&lt;br /&gt;
	for name, value in pairs( input_args ) do &lt;br /&gt;
		if value ~= &amp;#039;&amp;#039; then -- nuke empty strings&lt;br /&gt;
			if type(name)==&amp;#039;string&amp;#039; then name=string.lower(name) end -- convert to lower case&lt;br /&gt;
			output_args[name] = value&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return output_args&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
_langSwitch&lt;br /&gt;
 &lt;br /&gt;
This function is the core part of the LangSwitch template. &lt;br /&gt;
 &lt;br /&gt;
Example usage from Lua:&lt;br /&gt;
text = _langSwitch({en=&amp;#039;text in english&amp;#039;, pl=&amp;#039;tekst po polsku&amp;#039;}, lang)&lt;br /&gt;
 &lt;br /&gt;
Parameters:&lt;br /&gt;
  args - table with translations by language&lt;br /&gt;
  lang - desired language (often user&amp;#039;s native language)&lt;br /&gt;
&lt;br /&gt;
 Error Handling:&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
function p._langSwitch(args, lang) -- args: table of translations&lt;br /&gt;
	-- Return error if there is not default and no english version&lt;br /&gt;
	if not args.en and not args.default then&lt;br /&gt;
		if args.nocat == &amp;#039;1&amp;#039; then&lt;br /&gt;
			return &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;LangSwitch Error: no default&amp;lt;/strong&amp;gt;&amp;#039; &lt;br /&gt;
		else&lt;br /&gt;
			return &amp;#039;&amp;lt;strong class=&amp;quot;error&amp;quot;&amp;gt;LangSwitch Error: no default&amp;lt;/strong&amp;gt;[[Category:LangSwitch template without default version]]&amp;#039; &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- get the list of accepetable language (lang + those in lang&amp;#039;s fallback chain) and check their content&lt;br /&gt;
	assert(lang, &amp;#039;LangSwitch Error: no lang&amp;#039;)&lt;br /&gt;
	local langList = mw.language.getFallbacksFor(lang)&lt;br /&gt;
	table.insert(langList,1,lang)&lt;br /&gt;
	table.insert(langList,math.max(#langList,2),&amp;#039;default&amp;#039;)&lt;br /&gt;
	for _, language  in ipairs(langList) do &lt;br /&gt;
		if args[language ] == &amp;#039;~&amp;#039; then &lt;br /&gt;
			return &amp;#039;&amp;#039;&lt;br /&gt;
		elseif args[language] and args[language] ~= &amp;#039;&amp;#039; then &lt;br /&gt;
			return args[language] &lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
langSwitch&lt;br /&gt;
 &lt;br /&gt;
This function is the core part of the LangSwitch template. &lt;br /&gt;
 &lt;br /&gt;
Example Usage from a template:&lt;br /&gt;
{{#invoke:fallback|langSwitch|en=text in english|pl=tekst po polsku|lang={{int:lang}} }}&lt;br /&gt;
 &lt;br /&gt;
Parameters:&lt;br /&gt;
  frame.args - table with translations by language&lt;br /&gt;
  frame.args.lang - desired language (often user&amp;#039;s native language)&lt;br /&gt;
&lt;br /&gt;
 Error Handling:&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
function p.langSwitch(frame) -- version to be used from wikitext&lt;br /&gt;
	args = frame.args&lt;br /&gt;
	-- if no expected args provided than check parent template/module args&lt;br /&gt;
	if args.en==nil and args.default==nil and args.nocat==nil then&lt;br /&gt;
		args = mw.getCurrentFrame():getParent().args &lt;br /&gt;
	end&lt;br /&gt;
	local lang = args.lang&lt;br /&gt;
	if not lang or not mw.language.isSupportedLanguage(lang) then&lt;br /&gt;
		lang = frame:callParserFunction( &amp;quot;int&amp;quot;, &amp;quot;lang&amp;quot; )           -- get user&amp;#039;s chosen language &lt;br /&gt;
	end&lt;br /&gt;
	args.lang = nil&lt;br /&gt;
	return p._langSwitch(args, lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
autotranslate&lt;br /&gt;
 &lt;br /&gt;
This function is the core part of the Autotranslate template. &lt;br /&gt;
 &lt;br /&gt;
Usage from a template:&lt;br /&gt;
{{#invoke:fallback|autotranslate|base=|lang= }}&lt;br /&gt;
 &lt;br /&gt;
Parameters:&lt;br /&gt;
  frame.args.base - base page name&lt;br /&gt;
  frame.args.lang - desired language (often user&amp;#039;s native language)&lt;br /&gt;
&lt;br /&gt;
 Error Handling:&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
function p.autotranslate(frame) &lt;br /&gt;
&lt;br /&gt;
	-- switch to lowercase parameters to make them case independent&lt;br /&gt;
	local args = {}&lt;br /&gt;
	args = normalize_input_args(frame:getParent().args, args)&lt;br /&gt;
	args = normalize_input_args(frame.args, args)&lt;br /&gt;
&lt;br /&gt;
	-- get language fallback list&lt;br /&gt;
	if not args.lang or not mw.language.isSupportedLanguage(args.lang) then&lt;br /&gt;
		args.lang = frame:callParserFunction( &amp;quot;int&amp;quot;, &amp;quot;lang&amp;quot; )           -- get user&amp;#039;s chosen language &lt;br /&gt;
	end&lt;br /&gt;
	local langList = mw.language.getFallbacksFor(args.lang)&lt;br /&gt;
	table.insert(langList,1,args.lang)&lt;br /&gt;
 &lt;br /&gt;
	-- find base page&lt;br /&gt;
	local base = args.base&lt;br /&gt;
	args.base = nil&lt;br /&gt;
	assert(base and  #base&amp;gt;0, &amp;#039;Base page not provided for autotranslate&amp;#039; )&lt;br /&gt;
	if not mw.ustring.find(base,&amp;#039;:&amp;#039;) then   -- if base page does not indicate namespace&lt;br /&gt;
		base = &amp;#039;Template:&amp;#039; .. base          -- than assume it is a template &lt;br /&gt;
	end&lt;br /&gt;
 &lt;br /&gt;
	-- find base template language subpage&lt;br /&gt;
	local page = nil&lt;br /&gt;
	for _, language in ipairs(langList) do&lt;br /&gt;
		if mw.title.new(base .. &amp;#039;/&amp;#039; .. language).exists then&lt;br /&gt;
			page =  base .. &amp;#039;/&amp;#039; .. language -- returns only the page&lt;br /&gt;
			break&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	assert(page, string.format(&amp;#039;No fallback page found for autotranslate (base=[[%s]], lang=%s)&amp;#039;, base, args.lang))&lt;br /&gt;
 &lt;br /&gt;
	-- Transclude {{page |....}} with template arguments the same as the ones passed to {{autotranslate}} template.&lt;br /&gt;
	return frame:expandTemplate{ title = page, args = args}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
translatelua&lt;br /&gt;
 &lt;br /&gt;
Allows easy translation or internalization of pages in Lua. &lt;br /&gt;
 &lt;br /&gt;
Example Usage from a template:&lt;br /&gt;
{{#invoke: fallback|translatelua| i18n/oil on canvas|lang={{{lang|}}}}}&lt;br /&gt;
 &lt;br /&gt;
Parameters:&lt;br /&gt;
  frame.args.1 - name of translation module&lt;br /&gt;
	frame.args.2 - field name of the structure in Module:[frame.args.1] to use&lt;br /&gt;
  frame.args.lang - desired language (often user&amp;#039;s native language)&lt;br /&gt;
&lt;br /&gt;
 Error Handling:&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
function p.translatelua(frame)&lt;br /&gt;
	local lang = frame.args.lang&lt;br /&gt;
	local page = require(&amp;#039;Module:&amp;#039; .. mw.text.trim(frame.args[1])) -- page should only contain a simple of translations&lt;br /&gt;
	if not lang or mw.text.trim(lang) == &amp;#039;&amp;#039; then&lt;br /&gt;
		lang = frame:callParserFunction( &amp;quot;int&amp;quot;, &amp;quot;lang&amp;quot; )&lt;br /&gt;
	end&lt;br /&gt;
	if frame.args[2] then&lt;br /&gt;
		page = page[mw.text.trim(frame.args[2])]&lt;br /&gt;
	end&lt;br /&gt;
	return p._langSwitch(page, lang)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
fblist&lt;br /&gt;
 &lt;br /&gt;
Similar to  mw.language.getFallbacksFor(lang) but uses Commons old fallback chain &lt;br /&gt;
 &lt;br /&gt;
Parameters:&lt;br /&gt;
  lang - desired language (often user&amp;#039;s native language)&lt;br /&gt;
&lt;br /&gt;
 Error Handling:&lt;br /&gt;
&lt;br /&gt;
]]&lt;br /&gt;
function p.fblist(lang) -- list the full fallback chain from a language to en&lt;br /&gt;
	local fbtable = p.fallbackloop{ lang:lower() }&lt;br /&gt;
	table.insert(fbtable, &amp;#039;default&amp;#039;)&lt;br /&gt;
	table.insert(fbtable, &amp;#039;en&amp;#039;)&lt;br /&gt;
	return fbtable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function _inArray(x, t)&lt;br /&gt;
	for i, v in ipairs(t) do&lt;br /&gt;
		if v == x then return i end&lt;br /&gt;
	end&lt;br /&gt;
	return -1&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p.fallbackloop(fbtable)  --list of fallback languages in string format (more convenient than tables)&lt;br /&gt;
	local langlist = require(&amp;#039;Module:Fallbacklist&amp;#039;)&lt;br /&gt;
	local changes = false&lt;br /&gt;
	for i, j in ipairs(fbtable) do&lt;br /&gt;
		local seq = langlist[j]&lt;br /&gt;
		if seq then&lt;br /&gt;
			for k, l in ipairs(seq) do&lt;br /&gt;
				if _inArray(l, fbtable) == -1 then&lt;br /&gt;
					table.insert(fbtable, l)&lt;br /&gt;
					changes = true&lt;br /&gt;
				end&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	if changes then&lt;br /&gt;
		return p.fallbackloop(fbtable)&lt;br /&gt;
	end&lt;br /&gt;
	return fbtable&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Ranjithsiji</name></author>
	</entry>
</feed>