<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AUpdateLanguageNameAndCode.js</id>
	<title>MediaWiki:UpdateLanguageNameAndCode.js - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://linguifex.com/w/index.php?action=history&amp;feed=atom&amp;title=MediaWiki%3AUpdateLanguageNameAndCode.js"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=MediaWiki:UpdateLanguageNameAndCode.js&amp;action=history"/>
	<updated>2026-05-13T16:26:56Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>https://linguifex.com/w/index.php?title=MediaWiki:UpdateLanguageNameAndCode.js&amp;diff=524096&amp;oldid=prev</id>
		<title>Sware at 12:19, 13 May 2026</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=MediaWiki:UpdateLanguageNameAndCode.js&amp;diff=524096&amp;oldid=prev"/>
		<updated>2026-05-13T12:19:05Z</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;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 12:19, 13 May 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l108&quot;&gt;Line 108:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 108:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;					&amp;quot;name_to_code&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;					&amp;quot;name_to_code&amp;quot;,&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;					&amp;quot;script&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;					&amp;quot;script&amp;quot;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;				),&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;				updatePageWithTemplateExpansion(&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					&quot;Module:Hani-sortkey/data/serialized&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					&quot;{{#invoke:Hani-sortkey/data/serializer|main}}&quot;,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					summary,&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;					(expanded) =&amp;gt; `return &quot;${expanded}&quot;`&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				),&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;				),&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			]);&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;			]);&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=MediaWiki:UpdateLanguageNameAndCode.js&amp;diff=524086&amp;oldid=prev</id>
		<title>Sware: Created page with &quot;/* jshint undef: true */ /* globals $, apiWrapper, mw, OO */ // &lt;nowiki&gt; mw.loader.using(&quot;oojs-ui-core&quot;).then(() =&gt; { 	&quot;use strict&quot;;  	const api = new mw.Api({ 		timeout: 30 * 1000, // Dirty hack to hopefully get rid of timeout errors. 	});  	const updatePageWithTemplateExpansion = async ( 		title, 		template, 		summary, 		changeTemplateExpansion 	) =&gt; { 		await mw.loader.using(&quot;mediawiki.api&quot;); 		try { 			const data = await api.get({ 				action: &quot;expandtemplates&quot;, 				t...&quot;</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=MediaWiki:UpdateLanguageNameAndCode.js&amp;diff=524086&amp;oldid=prev"/>
		<updated>2026-05-13T12:10:45Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&lt;span class=&quot;autocomment&quot;&gt;jshint undef: true: &lt;/span&gt; &lt;span class=&quot;autocomment&quot;&gt;globals $, apiWrapper, mw, OO: &lt;/span&gt; // &amp;lt;nowiki&amp;gt; mw.loader.using(&amp;quot;oojs-ui-core&amp;quot;).then(() =&amp;gt; { 	&amp;quot;use strict&amp;quot;;  	const api = new mw.Api({ 		timeout: 30 * 1000, // Dirty hack to hopefully get rid of timeout errors. 	});  	const updatePageWithTemplateExpansion = async ( 		title, 		template, 		summary, 		changeTemplateExpansion 	) =&amp;gt; { 		await mw.loader.using(&amp;quot;mediawiki.api&amp;quot;); 		try { 			const data = await api.get({ 				action: &amp;quot;expandtemplates&amp;quot;, 				t...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;/* jshint undef: true */&lt;br /&gt;
/* globals $, apiWrapper, mw, OO */&lt;br /&gt;
// &amp;lt;nowiki&amp;gt;&lt;br /&gt;
mw.loader.using(&amp;quot;oojs-ui-core&amp;quot;).then(() =&amp;gt; {&lt;br /&gt;
	&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	const api = new mw.Api({&lt;br /&gt;
		timeout: 30 * 1000, // Dirty hack to hopefully get rid of timeout errors.&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	const updatePageWithTemplateExpansion = async (&lt;br /&gt;
		title,&lt;br /&gt;
		template,&lt;br /&gt;
		summary,&lt;br /&gt;
		changeTemplateExpansion&lt;br /&gt;
	) =&amp;gt; {&lt;br /&gt;
		await mw.loader.using(&amp;quot;mediawiki.api&amp;quot;);&lt;br /&gt;
		try {&lt;br /&gt;
			const data = await api.get({&lt;br /&gt;
				action: &amp;quot;expandtemplates&amp;quot;,&lt;br /&gt;
				title,&lt;br /&gt;
				text: template,&lt;br /&gt;
				prop: &amp;quot;wikitext&amp;quot;,&lt;br /&gt;
			});&lt;br /&gt;
			const expanded = data.expandtemplates.wikitext;&lt;br /&gt;
			const editResponse = await api.edit(title, () =&amp;gt; ({&lt;br /&gt;
				text: changeTemplateExpansion&lt;br /&gt;
					? changeTemplateExpansion(expanded)&lt;br /&gt;
					: expanded,&lt;br /&gt;
				summary,&lt;br /&gt;
			}));&lt;br /&gt;
			if (editResponse.nochange) {&lt;br /&gt;
				mw.notify(`${title} was up-to-date already.`);&lt;br /&gt;
			} else {&lt;br /&gt;
				mw.notify(`Updated ${title}.`);&lt;br /&gt;
			}&lt;br /&gt;
		} catch (error) {&lt;br /&gt;
			mw.notify(&amp;quot;Failed to post!&amp;quot;);&lt;br /&gt;
			console.error(error);&lt;br /&gt;
		}&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	const summary = &amp;quot;[[MediaWiki:UpdateLanguageNameAndCode.js|updated]]&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
	const updateLanguageData = async (title, moduleFunction, moduleType) =&amp;gt; {&lt;br /&gt;
		await updatePageWithTemplateExpansion(&lt;br /&gt;
			title,&lt;br /&gt;
			`{{#invoke:languages/print|${moduleFunction}|plain|${moduleType}}}`,&lt;br /&gt;
			summary&lt;br /&gt;
		);&lt;br /&gt;
		return updatePageWithTemplateExpansion(&lt;br /&gt;
			`${title}.json`,&lt;br /&gt;
			`{{#invoke:languages/print|${moduleFunction}|json|${moduleType}}}`,&lt;br /&gt;
			summary&lt;br /&gt;
		);&lt;br /&gt;
	};&lt;br /&gt;
	&lt;br /&gt;
	const updateButton = new OO.ui.ButtonWidget({&lt;br /&gt;
		label: &amp;quot;Update language, etymology language, language family and script modules, and Hani-sortkey serialized data module&amp;quot;,&lt;br /&gt;
		flags: [&lt;br /&gt;
			&amp;#039;primary&amp;#039;,&lt;br /&gt;
			&amp;#039;progressive&amp;#039;&lt;br /&gt;
		]&lt;br /&gt;
	});&lt;br /&gt;
	updateButton.$element.attr(&amp;quot;id&amp;quot;, &amp;quot;update-module&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
	updateButton.on(&amp;quot;click&amp;quot;, async () =&amp;gt; {&lt;br /&gt;
		updateButton.setDisabled(true);&lt;br /&gt;
		try {&lt;br /&gt;
			await Promise.all([&lt;br /&gt;
				updateLanguageData(&lt;br /&gt;
					&amp;quot;Module:languages/code to canonical name&amp;quot;,&lt;br /&gt;
					&amp;quot;code_to_name&amp;quot;,&lt;br /&gt;
					&amp;quot;language&amp;quot;&lt;br /&gt;
				),&lt;br /&gt;
				updateLanguageData(&lt;br /&gt;
					&amp;quot;Module:languages/canonical names&amp;quot;,&lt;br /&gt;
					&amp;quot;name_to_code&amp;quot;,&lt;br /&gt;
					&amp;quot;language&amp;quot;&lt;br /&gt;
				),&lt;br /&gt;
				updateLanguageData(&lt;br /&gt;
					&amp;quot;Module:etymology languages/code to canonical name&amp;quot;,&lt;br /&gt;
					&amp;quot;code_to_name&amp;quot;,&lt;br /&gt;
					&amp;quot;etymology&amp;quot;&lt;br /&gt;
				),&lt;br /&gt;
				updateLanguageData(&lt;br /&gt;
					&amp;quot;Module:etymology languages/canonical names&amp;quot;,&lt;br /&gt;
					&amp;quot;name_to_code&amp;quot;,&lt;br /&gt;
					&amp;quot;etymology&amp;quot;&lt;br /&gt;
				),&lt;br /&gt;
				updateLanguageData(&lt;br /&gt;
					&amp;quot;Module:families/code to canonical name&amp;quot;,&lt;br /&gt;
					&amp;quot;code_to_name&amp;quot;,&lt;br /&gt;
					&amp;quot;family&amp;quot;&lt;br /&gt;
				),&lt;br /&gt;
				updateLanguageData(&lt;br /&gt;
					&amp;quot;Module:families/canonical names&amp;quot;,&lt;br /&gt;
					&amp;quot;name_to_code&amp;quot;,&lt;br /&gt;
					&amp;quot;family&amp;quot;&lt;br /&gt;
				),&lt;br /&gt;
				updateLanguageData(&lt;br /&gt;
					&amp;quot;Module:scripts/code to canonical name&amp;quot;,&lt;br /&gt;
					&amp;quot;code_to_name&amp;quot;,&lt;br /&gt;
					&amp;quot;script&amp;quot;&lt;br /&gt;
				),&lt;br /&gt;
				updateLanguageData(&lt;br /&gt;
					&amp;quot;Module:scripts/canonical names&amp;quot;,&lt;br /&gt;
					&amp;quot;name_to_code&amp;quot;,&lt;br /&gt;
					&amp;quot;script&amp;quot;&lt;br /&gt;
				),&lt;br /&gt;
				updatePageWithTemplateExpansion(&lt;br /&gt;
					&amp;quot;Module:Hani-sortkey/data/serialized&amp;quot;,&lt;br /&gt;
					&amp;quot;{{#invoke:Hani-sortkey/data/serializer|main}}&amp;quot;,&lt;br /&gt;
					summary,&lt;br /&gt;
					(expanded) =&amp;gt; `return &amp;quot;${expanded}&amp;quot;`&lt;br /&gt;
				),&lt;br /&gt;
			]);&lt;br /&gt;
		} catch (error) {&lt;br /&gt;
			console.error(error);&lt;br /&gt;
		} finally {&lt;br /&gt;
			updateButton.setDisabled(false);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
&lt;br /&gt;
	// Insert the button before the first paragraph in .mw-parser-output.&lt;br /&gt;
	$(&amp;quot;.mw-parser-output p:first-of-type&amp;quot;).before(updateButton.$element);&lt;br /&gt;
});&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
</feed>