<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.scout.clutch.engineering/index.php?action=history&amp;feed=atom&amp;title=Module%3ALanguages%2Fconfig</id>
	<title>Module:Languages/config - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.scout.clutch.engineering/index.php?action=history&amp;feed=atom&amp;title=Module%3ALanguages%2Fconfig"/>
	<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Module:Languages/config&amp;action=history"/>
	<updated>2026-04-17T19:33:29Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.3</generator>
	<entry>
		<id>https://wiki.scout.clutch.engineering/index.php?title=Module:Languages/config&amp;diff=11&amp;oldid=prev</id>
		<title>Featherless: Created page with &quot;-- Ported from https://wiki.openstreetmap.org/wiki/Module:Languages/config on Sep 2, 2025  local p = {}  -- Map all known language codes to their autonyms per MediaWiki, then fix up a -- few codes and names that are incorrect in MediaWiki for historical reasons. local languageNamesByCode = mw.language.fetchLanguageNames() languageNamesByCode.gcf = &quot;kréyòl gwadloupéyen&quot; -- Guadeloupean Creole French languageNamesByCode[&quot;sr-cyrl&quot;] = languageNamesByCode[&quot;sr-ec&quot;] language...&quot;</title>
		<link rel="alternate" type="text/html" href="https://wiki.scout.clutch.engineering/index.php?title=Module:Languages/config&amp;diff=11&amp;oldid=prev"/>
		<updated>2025-09-02T15:10:52Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;-- Ported from https://wiki.openstreetmap.org/wiki/Module:Languages/config on Sep 2, 2025  local p = {}  -- Map all known language codes to their autonyms per MediaWiki, then fix up a -- few codes and names that are incorrect in MediaWiki for historical reasons. local languageNamesByCode = mw.language.fetchLanguageNames() languageNamesByCode.gcf = &amp;quot;kréyòl gwadloupéyen&amp;quot; -- Guadeloupean Creole French languageNamesByCode[&amp;quot;sr-cyrl&amp;quot;] = languageNamesByCode[&amp;quot;sr-ec&amp;quot;] language...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;-- Ported from https://wiki.openstreetmap.org/wiki/Module:Languages/config on Sep 2, 2025&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
-- Map all known language codes to their autonyms per MediaWiki, then fix up a&lt;br /&gt;
-- few codes and names that are incorrect in MediaWiki for historical reasons.&lt;br /&gt;
local languageNamesByCode = mw.language.fetchLanguageNames()&lt;br /&gt;
languageNamesByCode.gcf = &amp;quot;kréyòl gwadloupéyen&amp;quot; -- Guadeloupean Creole French&lt;br /&gt;
languageNamesByCode[&amp;quot;sr-cyrl&amp;quot;] = languageNamesByCode[&amp;quot;sr-ec&amp;quot;]&lt;br /&gt;
languageNamesByCode[&amp;quot;sr-latn&amp;quot;] = languageNamesByCode[&amp;quot;sr-el&amp;quot;]&lt;br /&gt;
languageNamesByCode[&amp;quot;cnr&amp;quot;] = &amp;quot;Crnogorski&amp;quot; -- Montenegrin language&lt;br /&gt;
&lt;br /&gt;
--- A table mapping language codes to their autonyms. Every language code in&lt;br /&gt;
--- languageCodes must have a pair in this table, but this table has many pairs&lt;br /&gt;
--- that go unused in languageCodes.&lt;br /&gt;
p.languageNamesByCode = languageNamesByCode&lt;br /&gt;
&lt;br /&gt;
--- A table of ISO 639 language codes for the languages used on this wiki,&lt;br /&gt;
--- sorted by autonym. A language code may be included only if there is at least&lt;br /&gt;
--- one content page in the language that has the code in its title (either as a&lt;br /&gt;
--- namespace or a pseudonamespace). Empty categories and redirects don’t count.&lt;br /&gt;
p.languageCodes = {&lt;br /&gt;
	-- After modifying this table, rerun p.languageCodesSortedByName() in the&lt;br /&gt;
	-- debug console below and paste the re-sorted results here. This ensures&lt;br /&gt;
	-- that the codes are sorted by language name.&lt;br /&gt;
	&amp;quot;af&amp;quot;, &amp;quot;ast&amp;quot;, &amp;quot;az&amp;quot;, &amp;quot;id&amp;quot;, &amp;quot;ms&amp;quot;, &amp;quot;bs&amp;quot;, &amp;quot;br&amp;quot;, &amp;quot;ca&amp;quot;, &amp;quot;cs&amp;quot;, &amp;quot;cnr&amp;quot;, &amp;quot;da&amp;quot;, &amp;quot;de&amp;quot;,&lt;br /&gt;
	&amp;quot;et&amp;quot;, &amp;quot;en&amp;quot;, &amp;quot;es&amp;quot;, &amp;quot;eo&amp;quot;, &amp;quot;eu&amp;quot;, &amp;quot;fr&amp;quot;, &amp;quot;fy&amp;quot;, &amp;quot;gd&amp;quot;, &amp;quot;gl&amp;quot;, &amp;quot;hr&amp;quot;, &amp;quot;io&amp;quot;, &amp;quot;ia&amp;quot;,&lt;br /&gt;
	&amp;quot;is&amp;quot;, &amp;quot;it&amp;quot;, &amp;quot;ht&amp;quot;, &amp;quot;gcf&amp;quot;, &amp;quot;ku&amp;quot;, &amp;quot;lv&amp;quot;, &amp;quot;lb&amp;quot;, &amp;quot;lt&amp;quot;, &amp;quot;hu&amp;quot;, &amp;quot;nl&amp;quot;, &amp;quot;no&amp;quot;, &amp;quot;nn&amp;quot;,&lt;br /&gt;
	&amp;quot;oc&amp;quot;, &amp;quot;pl&amp;quot;, &amp;quot;pt&amp;quot;, &amp;quot;ro&amp;quot;, &amp;quot;sc&amp;quot;, &amp;quot;sq&amp;quot;, &amp;quot;sk&amp;quot;, &amp;quot;sl&amp;quot;, &amp;quot;sr-latn&amp;quot;, &amp;quot;fi&amp;quot;, &amp;quot;sv&amp;quot;, &amp;quot;tl&amp;quot;,&lt;br /&gt;
	&amp;quot;vi&amp;quot;, &amp;quot;tr&amp;quot;, &amp;quot;diq&amp;quot;, &amp;quot;el&amp;quot;, &amp;quot;be&amp;quot;, &amp;quot;bg&amp;quot;, &amp;quot;mk&amp;quot;, &amp;quot;mn&amp;quot;, &amp;quot;ru&amp;quot;, &amp;quot;sr&amp;quot;, &amp;quot;uk&amp;quot;, &amp;quot;hy&amp;quot;,&lt;br /&gt;
	&amp;quot;he&amp;quot;, &amp;quot;ar&amp;quot;, &amp;quot;skr&amp;quot;, &amp;quot;fa&amp;quot;, &amp;quot;pnb&amp;quot;, &amp;quot;ps&amp;quot;, &amp;quot;ne&amp;quot;, &amp;quot;mr&amp;quot;, &amp;quot;hi&amp;quot;, &amp;quot;bn&amp;quot;, &amp;quot;pa&amp;quot;, &amp;quot;ta&amp;quot;,&lt;br /&gt;
	&amp;quot;ml&amp;quot;, &amp;quot;si&amp;quot;, &amp;quot;th&amp;quot;, &amp;quot;my&amp;quot;, &amp;quot;ko&amp;quot;, &amp;quot;ka&amp;quot;, &amp;quot;tzm&amp;quot;, &amp;quot;zh-hans&amp;quot;, &amp;quot;zh-hant&amp;quot;, &amp;quot;ja&amp;quot;, &amp;quot;yue&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- A table of language codes for languages that are only nominally used on this&lt;br /&gt;
--- wiki. A language code is included in this table if there is at least one&lt;br /&gt;
--- non-redirect page in the language, such as a category or template. If there&lt;br /&gt;
--- is a content page in the language, place the code in languageCodes instead.&lt;br /&gt;
--- Unlike the table above, this is sorted by code (and manually).&lt;br /&gt;
p.minorLanguageCodes = {&lt;br /&gt;
	&amp;quot;ab&amp;quot;, &amp;quot;am&amp;quot;, &amp;quot;an&amp;quot;, &amp;quot;as&amp;quot;, &amp;quot;av&amp;quot;, &amp;quot;ay&amp;quot;, &amp;quot;ba&amp;quot;, &amp;quot;bm&amp;quot;, &amp;quot;bo&amp;quot;, &amp;quot;co&amp;quot;, &amp;quot;cy&amp;quot;, &amp;quot;dv&amp;quot;,&lt;br /&gt;
	&amp;quot;ext&amp;quot;, &amp;quot;ga&amp;quot;, &amp;quot;gsw&amp;quot;, &amp;quot;gu&amp;quot;, &amp;quot;ha&amp;quot;, &amp;quot;ie&amp;quot;, &amp;quot;ig&amp;quot;, &amp;quot;jv&amp;quot;, &amp;quot;kk&amp;quot;, &amp;quot;km&amp;quot;,&lt;br /&gt;
	&amp;quot;kn&amp;quot;, &amp;quot;ky&amp;quot;, &amp;quot;la&amp;quot;, &amp;quot;ldn&amp;quot;, &amp;quot;li&amp;quot;, &amp;quot;lo&amp;quot;, &amp;quot;mg&amp;quot;, &amp;quot;min&amp;quot;, &amp;quot;mt&amp;quot;, &amp;quot;nan&amp;quot;, &amp;quot;nds&amp;quot;,&lt;br /&gt;
	&amp;quot;nds-nl&amp;quot;, &amp;quot;om&amp;quot;, &amp;quot;or&amp;quot;, &amp;quot;sa&amp;quot;, &amp;quot;sd&amp;quot;, &amp;quot;so&amp;quot;, &amp;quot;su&amp;quot;, &amp;quot;sw&amp;quot;, &amp;quot;te&amp;quot;,&lt;br /&gt;
    &amp;quot;tg&amp;quot;, &amp;quot;tk&amp;quot;, &amp;quot;ug&amp;quot;, &amp;quot;ur&amp;quot;, &amp;quot;uz&amp;quot;, &amp;quot;vec&amp;quot;, &amp;quot;wa&amp;quot;, &amp;quot;wo&amp;quot;,  &amp;quot;wuu&amp;quot;, &amp;quot;xh&amp;quot;, &amp;quot;yi&amp;quot;, &amp;quot;yo&amp;quot;, &amp;quot;za&amp;quot;,&lt;br /&gt;
    &amp;quot;zh&amp;quot;, &amp;quot;zu&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- A table mapping deprecated language codes to their preferred replacements.&lt;br /&gt;
--- Deprecated language codes should not be used on new pages, but a few content&lt;br /&gt;
--- pages remain under these pseudonamespaces for now.&lt;br /&gt;
p.deprecatedLanguageCodes = {&lt;br /&gt;
	[&amp;quot;pt-br&amp;quot;] = &amp;quot;pt&amp;quot;,&lt;br /&gt;
	[&amp;quot;ro-md&amp;quot;] = &amp;quot;ro&amp;quot;,&lt;br /&gt;
	[&amp;quot;zh-tw&amp;quot;] = &amp;quot;zh-hant&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- A table mapping language codes to their content namespaces. For historical&lt;br /&gt;
--- reasons, several early languages got dedicated content namespaces, but most&lt;br /&gt;
--- languages rely on pseudonamespaces in the main content namespace. Apart from&lt;br /&gt;
--- pseudonamespaces, the main content namespace is assumed to be in English.&lt;br /&gt;
p.namespacesByLanguage = {&lt;br /&gt;
	[&amp;quot;de&amp;quot;] = &amp;quot;DE&amp;quot;,&lt;br /&gt;
	[&amp;quot;en&amp;quot;] = &amp;quot;&amp;quot;,&lt;br /&gt;
	[&amp;quot;es&amp;quot;] = &amp;quot;ES&amp;quot;,&lt;br /&gt;
	[&amp;quot;fr&amp;quot;] = &amp;quot;FR&amp;quot;,&lt;br /&gt;
	[&amp;quot;it&amp;quot;] = &amp;quot;IT&amp;quot;,&lt;br /&gt;
	[&amp;quot;ja&amp;quot;] = &amp;quot;JA&amp;quot;,&lt;br /&gt;
	[&amp;quot;nl&amp;quot;] = &amp;quot;NL&amp;quot;,&lt;br /&gt;
	[&amp;quot;ru&amp;quot;] = &amp;quot;RU&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
--- A table mapping certain language codes to the names of the categories&lt;br /&gt;
--- tracking missing translations in those languages. This table only includes&lt;br /&gt;
--- languages that have dedicated namespaces.&lt;br /&gt;
p.unavailablePageCategoryNames = {&lt;br /&gt;
	[&amp;quot;de&amp;quot;] = &amp;quot;Pages unavailable in German&amp;quot;,&lt;br /&gt;
	[&amp;quot;en&amp;quot;] = &amp;quot;Pages unavailable in English&amp;quot;,&lt;br /&gt;
	[&amp;quot;es&amp;quot;] = &amp;quot;Pages unavailable in Spanish&amp;quot;,&lt;br /&gt;
	[&amp;quot;fr&amp;quot;] = &amp;quot;Pages unavailable in French&amp;quot;,&lt;br /&gt;
	[&amp;quot;it&amp;quot;] = &amp;quot;Pages unavailable in Italian&amp;quot;,&lt;br /&gt;
	[&amp;quot;ja&amp;quot;] = &amp;quot;Pages unavailable in Japanese&amp;quot;,&lt;br /&gt;
	[&amp;quot;nl&amp;quot;] = &amp;quot;Pages unavailable in Dutch&amp;quot;,&lt;br /&gt;
	[&amp;quot;ru&amp;quot;] = &amp;quot;Pages unavailable in Russian&amp;quot;,&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
if mw.title.getCurrentTitle().fullText == &amp;quot;Module:Languages/config&amp;quot; then&lt;br /&gt;
	--- Logs a table of language codes sorted by autonym. This function is only&lt;br /&gt;
	--- available in the debug console, because NFD normalization uses a lot of&lt;br /&gt;
	--- memory.&lt;br /&gt;
	p.languageCodesSortedByName = function ()&lt;br /&gt;
		local siteLanguage = mw.getContentLanguage()&lt;br /&gt;
		&lt;br /&gt;
		local codes = {}&lt;br /&gt;
		local sortingKeys = {}&lt;br /&gt;
		for i, code in ipairs(p.languageCodes) do&lt;br /&gt;
			table.insert(codes, code)&lt;br /&gt;
			local foldedName = siteLanguage:caseFold(languageNamesByCode[code])&lt;br /&gt;
			-- Fold diacritics by isolating and deleting combining characters.&lt;br /&gt;
			sortingKeys[code] = mw.ustring.gsub(mw.ustring.toNFD(foldedName),&lt;br /&gt;
				&amp;quot;[^%a%p%s]+&amp;quot;, &amp;quot;&amp;quot;)&lt;br /&gt;
		end&lt;br /&gt;
		table.sort(codes, function (a, b)&lt;br /&gt;
			return sortingKeys[a] &amp;lt; sortingKeys[b]&lt;br /&gt;
		end)&lt;br /&gt;
		mw.log((table.concat(codes, &amp;quot; &amp;quot;):gsub(&amp;quot;(%S+)&amp;quot;, &amp;quot;\&amp;quot;%1\&amp;quot;,&amp;quot;)))&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Featherless</name></author>
	</entry>
</feed>