<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://themidnight.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ALangSwitch</id>
	<title>Module:LangSwitch - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://themidnight.wiki/index.php?action=history&amp;feed=atom&amp;title=Module%3ALangSwitch"/>
	<link rel="alternate" type="text/html" href="https://themidnight.wiki/index.php?title=Module:LangSwitch&amp;action=history"/>
	<updated>2026-04-03T19:46:41Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://themidnight.wiki/index.php?title=Module:LangSwitch&amp;diff=7654&amp;oldid=prev</id>
		<title>Timothy: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://themidnight.wiki/index.php?title=Module:LangSwitch&amp;diff=7654&amp;oldid=prev"/>
		<updated>2023-06-12T15:53:33Z</updated>

		<summary type="html">&lt;p&gt;1 revision imported&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;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 11:53, 12 June 2023&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;4&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;
&lt;!-- diff cache key themidnightwiki_wiki:diff:1.41:old-7653:rev-7654 --&gt;
&lt;/table&gt;</summary>
		<author><name>Timothy</name></author>
	</entry>
	<entry>
		<id>https://themidnight.wiki/index.php?title=Module:LangSwitch&amp;diff=7653&amp;oldid=prev</id>
		<title>wikimedia&gt;Mdaniels5757: per edit request</title>
		<link rel="alternate" type="text/html" href="https://themidnight.wiki/index.php?title=Module:LangSwitch&amp;diff=7653&amp;oldid=prev"/>
		<updated>2022-10-29T17:41:02Z</updated>

		<summary type="html">&lt;p&gt;per edit request&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;--[[&lt;br /&gt;
  __  __           _       _        _                      ____          _ _       _     &lt;br /&gt;
 |  \/  | ___   __| |_   _| | ___ _| |    __ _ _ __   __ _/ ___|_      _(_) |_ ___| |__  &lt;br /&gt;
 | |\/| |/ _ \ / _` | | | | |/ _ (_) |   / _` | &amp;#039;_ \ / _` \___ \ \ /\ / / | __/ __| &amp;#039;_ \ &lt;br /&gt;
 | |  | | (_) | (_| | |_| | |  __/_| |__| (_| | | | | (_| |___) \ V  V /| | || (__| | | |&lt;br /&gt;
 |_|  |_|\___/ \__,_|\__,_|_|\___(_)_____\__,_|_| |_|\__, |____/ \_/\_/ |_|\__\___|_| |_|&lt;br /&gt;
                                                     |___/                               &lt;br /&gt;
 Authors and maintainers:&lt;br /&gt;
* User:Zolo   - original version in Module:Fallback&lt;br /&gt;
* User:Jarekt &lt;br /&gt;
]]&lt;br /&gt;
&lt;br /&gt;
-- add optional module &lt;br /&gt;
-- used for debugging purposes as it detects cases of unintended global variables&lt;br /&gt;
require(&amp;#039;strict&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
local function add_labels(args)&lt;br /&gt;
	-- add invisible but machine readable labels to the files, which can be used to add titles to wikidata items&lt;br /&gt;
	local createTag = require(&amp;#039;Module:TagQS&amp;#039;).createTag -- lazy loading of the module: only for the files that need it&lt;br /&gt;
	local qsTable = {&amp;#039;&amp;#039;}&lt;br /&gt;
&lt;br /&gt;
	-- add text of invisible tag brodcasted by the template which allows creation of QuickStatements command used to add this info to Wikidata&lt;br /&gt;
	for lang, text in pairs( args ) do &lt;br /&gt;
		if type(lang)==&amp;#039;string&amp;#039; and mw.language.isSupportedLanguage(lang)  then -- lang has to be a valid language &lt;br /&gt;
			table.insert( qsTable, createTag(&amp;#039;label&amp;#039;, &amp;#039;L&amp;#039;..lang, &amp;#039;&amp;quot;&amp;#039; .. text .. &amp;#039;&amp;quot;&amp;#039;) )&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return table.concat( qsTable, &amp;#039;\n&amp;#039;)&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 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;
		local err = &amp;#039;&amp;lt;b class=&amp;quot;error&amp;quot;&amp;gt;LangSwitch Error: no default&amp;lt;/b&amp;gt;&amp;#039;&lt;br /&gt;
		if args.nocat == &amp;#039;1&amp;#039; then&lt;br /&gt;
			return err&lt;br /&gt;
		else&lt;br /&gt;
			return err .. &amp;#039;[[Category:LangSwitch template without default version]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- To improve performance try quick switch, and load fallback chain only if needed. &lt;br /&gt;
	-- In the vast majority of cases fast switch is sufficient&lt;br /&gt;
	local val = args[lang]&lt;br /&gt;
	if val == &amp;#039;~&amp;#039; then &lt;br /&gt;
		return &amp;#039;&amp;#039;&lt;br /&gt;
	elseif val and val ~= &amp;#039;&amp;#039; then &lt;br /&gt;
		return val &lt;br /&gt;
	elseif args.quick then&lt;br /&gt;
		return nil&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;
		val = args[language]&lt;br /&gt;
		if val == &amp;#039;~&amp;#039; then &lt;br /&gt;
			return &amp;#039;&amp;#039;&lt;br /&gt;
		elseif val and val ~= &amp;#039;&amp;#039; then &lt;br /&gt;
			return val &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;
	local 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.isKnownLanguageTag(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;
	&lt;br /&gt;
	-- add text of invisible tag brodcasted by the template which allows creation of QuickStatements command used to add this info to Wikidata&lt;br /&gt;
	local labels = &amp;#039;&amp;#039;&lt;br /&gt;
	if args.add_labels then&lt;br /&gt;
		labels = add_labels(args)&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Try quick switch which checks the most likely option when fallback is not needed&lt;br /&gt;
	args.quick = true;&lt;br /&gt;
	local val = p._langSwitch(args, lang)&lt;br /&gt;
	if val then&lt;br /&gt;
		return val .. labels&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	-- Allow input in format: {{LangSwitch|de=Grün|es/it/pt=Verde|fr=Vert|en=Green |lang=en}}&lt;br /&gt;
	-- with multiple languages mapping to a single value&lt;br /&gt;
	local args1 = {}&lt;br /&gt;
	for name, value in pairs( args ) do &lt;br /&gt;
		if value ~= &amp;#039;&amp;#039; and type(name)==&amp;#039;string&amp;#039; then &lt;br /&gt;
    		for str in string.gmatch( name, &amp;quot;([^/]+)&amp;quot; ) do&lt;br /&gt;
				args1[str] = value&lt;br /&gt;
			end&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return p._langSwitch(args1, lang) .. labels&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>wikimedia&gt;Mdaniels5757</name></author>
	</entry>
</feed>