<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.tiffa.net/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AEngvar</id>
	<title>Module:Engvar - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.tiffa.net/w/index.php?action=history&amp;feed=atom&amp;title=Module%3AEngvar"/>
	<link rel="alternate" type="text/html" href="https://wiki.tiffa.net/w/index.php?title=Module:Engvar&amp;action=history"/>
	<updated>2026-04-04T07:41:36Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.0</generator>
	<entry>
		<id>https://wiki.tiffa.net/w/index.php?title=Module:Engvar&amp;diff=3764&amp;oldid=prev</id>
		<title>imported&gt;Fire: Created page with &quot;-- This module implements Template:Engvar. -- Template:Engvar is to be build into the template (like an infobox), with default &amp; variant spellings defined. -- That template should also allow parameter &#039;|engvar=&#039; for the editor (article page). -- The module/template Engvar then returns the spelling variant as is set in that article (for example &#039;|engvar=en-GB&#039;). -- The defaultWord is returned, unless the engvar input hits on a defined (en-XX) variant word. local p = {} lo...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.tiffa.net/w/index.php?title=Module:Engvar&amp;diff=3764&amp;oldid=prev"/>
		<updated>2023-01-03T07:49:48Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- This module implements Template:Engvar. -- Template:Engvar is to be build into the template (like an infobox), with default &amp;amp; variant spellings defined. -- That template should also allow parameter &amp;#039;|engvar=&amp;#039; for the editor (article page). -- The module/template Engvar then returns the spelling variant as is set in that article (for example &amp;#039;|engvar=en-GB&amp;#039;). -- The defaultWord is returned, unless the engvar input hits on a defined (en-XX) variant word. local p = {} lo...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- This module implements Template:Engvar.&lt;br /&gt;
-- Template:Engvar is to be build into the template (like an infobox), with default &amp;amp; variant spellings defined.&lt;br /&gt;
-- That template should also allow parameter &amp;#039;|engvar=&amp;#039; for the editor (article page).&lt;br /&gt;
-- The module/template Engvar then returns the spelling variant as is set in that article (for example &amp;#039;|engvar=en-GB&amp;#039;).&lt;br /&gt;
-- The defaultWord is returned, unless the engvar input hits on a defined (en-XX) variant word.&lt;br /&gt;
local p = {}&lt;br /&gt;
local getArgs = require(&amp;#039;Module:Arguments&amp;#039;).getArgs&lt;br /&gt;
local gsub = string.gsub&lt;br /&gt;
local lower = string.lower&lt;br /&gt;
local upper = string.upper&lt;br /&gt;
&lt;br /&gt;
function p.variants(frame)&lt;br /&gt;
local args = getArgs(frame)&lt;br /&gt;
	return p._variants(args)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function p._variants(args)&lt;br /&gt;
local returnWord = nil&lt;br /&gt;
&lt;br /&gt;
	local defaultWord = args.defaultWord or &amp;#039;&amp;#039;&lt;br /&gt;
	if args.engvar == nil then&lt;br /&gt;
		-- Nothing to look for; use defaultWord right away&lt;br /&gt;
		returnWord = defaultWord&lt;br /&gt;
	elseif args.defaultLang == gsub(lower(args.engvar), &amp;#039;^en%-(%w%w)$&amp;#039;, formatISO) then&lt;br /&gt;
		-- By the defaultLang, the defaultWord is asked&lt;br /&gt;
		returnWord = defaultWord&lt;br /&gt;
	else&lt;br /&gt;
		returnWord = args[gsub(lower(args.engvar), &amp;#039;^en%-(%w%w)$&amp;#039;, formatISO)]&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	if returnWord == nil then&lt;br /&gt;
		-- No hit so far. Search by words in the engvar entered, checking the list&lt;br /&gt;
		local useLang = engvarLang(args.engvar)&lt;br /&gt;
		if useLang == nil then&lt;br /&gt;
			returnWord = defaultWord .. addMaintCat(args)&lt;br /&gt;
		else&lt;br /&gt;
			returnWord = args[useLang] or defaultWord&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	return returnWord&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Returns arguments and intermediate result. Plus the template result, in front.&lt;br /&gt;
function p.explain(frame)&lt;br /&gt;
local args = getArgs(frame)&lt;br /&gt;
local ret = {}&lt;br /&gt;
	table.insert(ret, &amp;#039;\n\n: Settings:&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;defaultWord=&amp;#039; .. (args.defaultWord or &amp;#039;&amp;#039;) .. &amp;#039;; &amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;defaultLang=&amp;#039; .. (args.defaultLang or &amp;#039;&amp;#039;) .. &amp;#039;; &amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;engvarCat=&amp;#039; .. (args.engvarCat or &amp;#039;[default:yes]&amp;#039;) .. &amp;#039;; &amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039;engvarCatSort=&amp;#039; .. (args.engvarCatSort or &amp;#039;&amp;#039;))&lt;br /&gt;
	table.insert(ret, &amp;#039;\n\n: engvar=&amp;#039; .. (args.engvar or &amp;#039;&amp;#039;) .. &amp;#039; [input] &amp;#039;)&lt;br /&gt;
	local useLang = engvarLang(args.engvar or &amp;#039;&amp;#039;)&lt;br /&gt;
	table.insert(ret, &amp;#039; =&amp;gt; Engvar code [used]: &amp;gt;&amp;#039; .. (useLang or &amp;#039;&amp;#039;) .. &amp;#039;&amp;lt;.&amp;#039;)&lt;br /&gt;
	&lt;br /&gt;
	for k, v in pairs(args) do&lt;br /&gt;
		if k == &amp;#039;en-UK&amp;#039; then&lt;br /&gt;
			table.insert(ret, k .. &amp;#039; ? better: use &amp;quot;en-GB&amp;quot;; &amp;#039;)&lt;br /&gt;
		elseif k == &amp;#039;en-SA&amp;#039; then&lt;br /&gt;
			table.insert(ret, k .. &amp;#039; ? misleading; use &amp;quot;en-ZA&amp;quot;; &amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
		&lt;br /&gt;
		if k == &amp;#039;defaultWord&amp;#039; then&lt;br /&gt;
		elseif k == &amp;#039;defaultLang&amp;#039; then&lt;br /&gt;
		elseif k == &amp;#039;engvar&amp;#039; then&lt;br /&gt;
		elseif k == &amp;#039;engvarcat&amp;#039; then&lt;br /&gt;
		elseif k == gsub(lower(k), &amp;#039;^en%-(%w%w)$&amp;#039;, formatISO) then&lt;br /&gt;
			table.insert(ret, k .. &amp;#039;=&amp;#039; .. v .. &amp;#039;; &amp;#039;)&lt;br /&gt;
		else&lt;br /&gt;
			table.insert(ret, k .. &amp;#039; [not standard:]=&amp;#039; .. v .. &amp;#039;; &amp;#039;)&lt;br /&gt;
		end&lt;br /&gt;
&lt;br /&gt;
	end&lt;br /&gt;
	return (args.engvar or &amp;#039;&amp;#039;) .. &amp;#039; =&amp;gt; &amp;#039; .. p._variants(args) .. table.concat(ret, &amp;#039; &amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- Turn a match into pattern &amp;#039;en-XX&amp;#039;&lt;br /&gt;
function formatISO(country)&lt;br /&gt;
	return (&amp;#039;en-&amp;#039; .. upper(country) or &amp;#039;&amp;#039;)&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function engvarLang(searchEngvar)&lt;br /&gt;
-- Search verbose language identifiers to ISO-format &amp;#039;en-XX&amp;#039;&lt;br /&gt;
-- Assumed: not a blank string &amp;#039;&amp;#039; to search&lt;br /&gt;
local match = string.match&lt;br /&gt;
&lt;br /&gt;
	searchEngvar = gsub(searchEngvar, &amp;#039;^%s*en%-(.*)&amp;#039;, &amp;#039;%1&amp;#039;) -- rm any opening &amp;#039;en-&amp;#039;.&lt;br /&gt;
	searchEngvar = gsub(lower(searchEngvar), &amp;#039;[%s%(%)%-]&amp;#039;, &amp;#039;&amp;#039;) -- To lc, remove all: (, ) , ws, hyphen.&lt;br /&gt;
	local useLang&lt;br /&gt;
	--Special codes&lt;br /&gt;
	if match(searchEngvar, &amp;#039;oxford&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;oed&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-OED&amp;#039; -- &amp;#039;oxford&amp;#039; to catch before anyting &amp;#039;british&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;iupac&amp;#039;) then&lt;br /&gt;
			useLang = &amp;#039;en-IUPAC&amp;#039; -- chemistry&lt;br /&gt;
	-- Very often used&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;british&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;uk&amp;#039;&lt;br /&gt;
		or searchEngvar == &amp;#039;gbr&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-GB&amp;#039;&lt;br /&gt;
	elseif searchEngvar == &amp;#039;us&amp;#039;&lt;br /&gt;
		or match(searchEngvar, &amp;#039;unitedstates&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;american&amp;#039;&lt;br /&gt;
		or searchEngvar == &amp;#039;usa&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-US&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;australia&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;aus&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-AU&amp;#039;&lt;br /&gt;
	-- Often used&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;india&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;ind&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-IN&amp;#039;&lt;br /&gt;
	elseif searchEngvar == &amp;#039;newzealand&amp;#039;&lt;br /&gt;
		or searchEngvar == &amp;#039;nzl&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-NZ&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;southafrica&amp;#039;) -- not: en-SA&lt;br /&gt;
		or searchEngvar == &amp;#039;zaf&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-ZA&amp;#039;&lt;br /&gt;
	elseif searchEngvar == &amp;#039;canada&amp;#039;&lt;br /&gt;
		or searchEngvar == &amp;#039;can&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-CA&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;hiberno&amp;#039;)&lt;br /&gt;
		or match(searchEngvar, &amp;#039;ireland&amp;#039;)&lt;br /&gt;
		or match(searchEngvar, &amp;#039;irish&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;irl&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-EI&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;hongkong&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;hkg&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-HK&amp;#039;&lt;br /&gt;
	-- Less often used&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;jamaica&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;jam&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-JM&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;malawi&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;mwi&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-MW&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;nigeria&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;nga&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-NG&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;pakistan&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;pak&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-PK&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;philippine&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;phl&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-PH&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;scotland&amp;#039;)&lt;br /&gt;
		or match(searchEngvar, &amp;#039;scottish&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;sco&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-SCO&amp;#039; -- Has no alpha-2 code; not &amp;#039;scotch&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;singapore&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;sgp&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-SG&amp;#039;&lt;br /&gt;
	elseif match(searchEngvar, &amp;#039;trinidad&amp;#039;)&lt;br /&gt;
		or match(searchEngvar, &amp;#039;tobago&amp;#039;)&lt;br /&gt;
		or searchEngvar == &amp;#039;tto&amp;#039; then&lt;br /&gt;
			useLang = &amp;#039;en-TT&amp;#039;&lt;br /&gt;
	else&lt;br /&gt;
		useLang = nil&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return useLang&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function addMaintCat(args)&lt;br /&gt;
local catMaintenance&lt;br /&gt;
	if args.engvarCat == &amp;#039;no&amp;#039; then&lt;br /&gt;
	else&lt;br /&gt;
		local title = mw.title.getCurrentTitle()&lt;br /&gt;
		if title:inNamespaces(0) then  -- 0=main, 10=templ, 828=module&lt;br /&gt;
			if args.engvarCatSort then&lt;br /&gt;
				catMaintenance = &amp;#039;|&amp;#039; .. args.engvarCatSort .. &amp;#039;, &amp;#039; .. title.text&lt;br /&gt;
			end&lt;br /&gt;
			catMaintenance = &amp;#039;[[Category:Articles using an unknown Template:Engvar option&amp;#039; .. (catMaintenance or &amp;#039;&amp;#039;) .. &amp;#039;]]&amp;#039;&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	return catMaintenance or &amp;#039;&amp;#039;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;Fire</name></author>
	</entry>
</feed>