<?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%3AGadget-linkLanguageHeaders.js</id>
	<title>MediaWiki:Gadget-linkLanguageHeaders.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%3AGadget-linkLanguageHeaders.js"/>
	<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=MediaWiki:Gadget-linkLanguageHeaders.js&amp;action=history"/>
	<updated>2026-04-09T14:15:37Z</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:Gadget-linkLanguageHeaders.js&amp;diff=475019&amp;oldid=prev</id>
		<title>Sware: 1 revision imported</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=MediaWiki:Gadget-linkLanguageHeaders.js&amp;diff=475019&amp;oldid=prev"/>
		<updated>2025-11-04T17:52:25Z</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;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 17:52, 4 November 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&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;/table&gt;</summary>
		<author><name>Sware</name></author>
	</entry>
	<entry>
		<id>https://linguifex.com/w/index.php?title=MediaWiki:Gadget-linkLanguageHeaders.js&amp;diff=475018&amp;oldid=prev</id>
		<title>wikt&gt;Surjection at 14:02, 29 September 2024</title>
		<link rel="alternate" type="text/html" href="https://linguifex.com/w/index.php?title=MediaWiki:Gadget-linkLanguageHeaders.js&amp;diff=475018&amp;oldid=prev"/>
		<updated>2024-09-29T14:02:18Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;quot;use strict&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
// {{documentation}}&lt;br /&gt;
// &amp;lt;nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(function linkLanguageHeadersGadget() {&lt;br /&gt;
	var CACHE_DURATION = 24 * 60 * 60; // 24 hours&lt;br /&gt;
&lt;br /&gt;
	var ALLOWED_NAMESPACES = [&lt;br /&gt;
		0,      // main&lt;br /&gt;
		118     // Reconstruction&lt;br /&gt;
	];&lt;br /&gt;
&lt;br /&gt;
	function categoryNameFromLanguageName(name) {&lt;br /&gt;
		return (name + &amp;quot; language&amp;quot;).replace(/ Language language$/, &amp;quot; Language&amp;quot;);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function getLanguageCodesByCanonicalName(callback, cacheDuration) {&lt;br /&gt;
		var KEY = &amp;quot;enwiktLanguageCanonicalNamesJson&amp;quot;;&lt;br /&gt;
		var timeNow = new Date().getTime() * 1e-3;&lt;br /&gt;
		try {&lt;br /&gt;
			var cachedData = JSON.parse(localStorage.getItem(KEY));&lt;br /&gt;
			if (timeNow - cachedData.timestamp &amp;lt; cacheDuration) {&lt;br /&gt;
				callback(cachedData.data);&lt;br /&gt;
				return;&lt;br /&gt;
			}&lt;br /&gt;
		} catch (e) { }&lt;br /&gt;
&lt;br /&gt;
		var request = new mw.Api().get({&lt;br /&gt;
			&amp;quot;action&amp;quot;: &amp;quot;parse&amp;quot;,&lt;br /&gt;
			&amp;quot;page&amp;quot;: &amp;quot;Module:languages/canonical names.json&amp;quot;,&lt;br /&gt;
			&amp;quot;prop&amp;quot;: &amp;quot;wikitext&amp;quot;,&lt;br /&gt;
			&amp;quot;formatversion&amp;quot;: 2,&lt;br /&gt;
			&amp;quot;format&amp;quot;: &amp;quot;json&amp;quot;&lt;br /&gt;
		});&lt;br /&gt;
		request.done(function(response) {&lt;br /&gt;
			var languageData = JSON.parse(response.parse.wikitext);&lt;br /&gt;
			callback(languageData);&lt;br /&gt;
			localStorage.setItem(KEY, JSON.stringify({&lt;br /&gt;
				timestamp: timeNow,&lt;br /&gt;
				data: languageData&lt;br /&gt;
			}));&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	function linkLanguageHeaders(codeByCanonicalName) {&lt;br /&gt;
		var categoryPrefix = encodeURIComponent(mw.config.get(&amp;quot;wgFormattedNamespaces&amp;quot;)[14].replace(/ /g, &amp;quot;_&amp;quot;)) + &amp;quot;:&amp;quot;;&lt;br /&gt;
		$(&amp;quot;#mw-content-text h2 .mw-headline, #mw-content-text .mw-heading2 h2&amp;quot;).each(function() {&lt;br /&gt;
			var headline = $(this);&lt;br /&gt;
			var languageName = headline.text();&lt;br /&gt;
			var languageCode = codeByCanonicalName[languageName];&lt;br /&gt;
			if (languageCode) {&lt;br /&gt;
				var categoryName = categoryNameFromLanguageName(languageName);&lt;br /&gt;
				headline.html($(&amp;quot;&amp;lt;a&amp;gt;&amp;quot;, {&lt;br /&gt;
					text: languageName,&lt;br /&gt;
					title: languageName + &amp;quot; [&amp;quot; + languageCode + &amp;quot;]&amp;quot;,&lt;br /&gt;
					href: mw.config.get(&amp;quot;wgArticlePath&amp;quot;).replace(&amp;quot;$1&amp;quot;, categoryPrefix + encodeURIComponent(categoryName.replace(/ /g, &amp;quot;_&amp;quot;)))&lt;br /&gt;
				}));&lt;br /&gt;
			}&lt;br /&gt;
		});&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	mw.hook(&amp;quot;wikipage.content&amp;quot;).add(function($) {&lt;br /&gt;
		if (mw.config.get(&amp;quot;wgAction&amp;quot;) === &amp;quot;view&amp;quot; &amp;amp;&amp;amp;&lt;br /&gt;
				ALLOWED_NAMESPACES.indexOf(mw.config.get(&amp;quot;wgNamespaceNumber&amp;quot;)) &amp;gt;= 0) {&lt;br /&gt;
			getLanguageCodesByCanonicalName(function (codeByCanonicalName) {&lt;br /&gt;
				linkLanguageHeaders(codeByCanonicalName);&lt;br /&gt;
			}, CACHE_DURATION);&lt;br /&gt;
		}&lt;br /&gt;
	});&lt;br /&gt;
})();&lt;br /&gt;
&lt;br /&gt;
// &amp;lt;/nowiki&amp;gt;&lt;/div&gt;</summary>
		<author><name>wikt&gt;Surjection</name></author>
	</entry>
</feed>