<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pool.calebcooper.ie/index.php?action=history&amp;feed=atom&amp;title=Module%3AAutotranslate</id>
	<title>Module:Autotranslate - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://pool.calebcooper.ie/index.php?action=history&amp;feed=atom&amp;title=Module%3AAutotranslate"/>
	<link rel="alternate" type="text/html" href="https://pool.calebcooper.ie/index.php?title=Module:Autotranslate&amp;action=history"/>
	<updated>2026-04-10T18:30:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://pool.calebcooper.ie/index.php?title=Module:Autotranslate&amp;diff=16779&amp;oldid=prev</id>
		<title>Caleb Cooper: Created page with &quot;  --[[   __  __           _       _           _         _        _                       _       _         |  \/  | ___   __| |_   _| | ___ _   / \  _   _| |_ ___ | |_ _ __ __ _ _ __  ___| | __ _| |_ ___   | |\/| |/ _ \ / _` | | | | |/ _ (_) / _ \| | | | __/ _ \| __| &#039;__/ _` | &#039;_ \/ __| |/ _` | __/ _ \  | |  | | (_) | (_| | |_| | |  __/_ / ___ \ |_| | || (_) | |_| | | (_| | | | \__ \ | (_| | ||  __/  |_|  |_|\___/ \__,_|\__,_|_|\___(_)_/   \_\__,_|\__\___/ \__|_|  \__,_|...&quot;</title>
		<link rel="alternate" type="text/html" href="https://pool.calebcooper.ie/index.php?title=Module:Autotranslate&amp;diff=16779&amp;oldid=prev"/>
		<updated>2023-04-19T11:04:58Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;  --[[   __  __           _       _           _         _        _                       _       _         |  \/  | ___   __| |_   _| | ___ _   / \  _   _| |_ ___ | |_ _ __ __ _ _ __  ___| | __ _| |_ ___   | |\/| |/ _ \ / _` | | | | |/ _ (_) / _ \| | | | __/ _ \| __| &amp;#039;__/ _` | &amp;#039;_ \/ __| |/ _` | __/ _ \  | |  | | (_) | (_| | |_| | |  __/_ / ___ \ |_| | || (_) | |_| | | (_| | | | \__ \ | (_| | ||  __/  |_|  |_|\___/ \__,_|\__,_|_|\___(_)_/   \_\__,_|\__\___/ \__|_|  \__,_|...&amp;quot;&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;
 | |  | | (_) | (_| | |_| | |  __/_ / ___ \ |_| | || (_) | |_| | | (_| | | | \__ \ | (_| | ||  __/&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 to help normalize input arguments&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;
-- initialize object to be returned&lt;br /&gt;
local p = {}&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:autotranslate|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          -- then 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 = args.default  -- default page if provided or nil otherwise&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;
return p&lt;/div&gt;</summary>
		<author><name>Caleb Cooper</name></author>
	</entry>
</feed>