MediaWiki:Common.js

From eMushpedia
Revision as of 02:31, 9 April 2026 by Admin (talk | contribs)
Jump to navigation Jump to search

Note: After publishing, you may have to bypass your browser's cache to see the changes.

  • Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
  • Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
  • Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Tout JavaScript présent ici sera exécuté par tous les utilisateurs à chaque chargement de page. */

//override selectable languages for translation
wgULSLanguages = [];
wgULSLanguages.fr = 'french';
wgULSLanguages.en = 'english';
wgULSLanguages.es = 'spanish';
wgULSAcceptLanguageList = ["fr", "en", "es"];

// Override the page the user is redirected to when clicking on the Logo
// according to the lang retrieve in difference locations.
(function () {
	function getLang() {
		const params = new URLSearchParams(window.location.search);
		const urlLang = params.get('uselang') || params.get('lang');
		if (urlLang && ['fr', 'en', 'es'].includes(urlLang)) {
			document.cookie = 'emushpedia_lang=' + urlLang + '; path=/; max-age=' + (365 * 24 * 60 * 60);
			return urlLang;
		}

		const cookieMatch = document.cookie.match(/(?:^|;\s*)emushpedia_lang=([^;]+)/);
		if (cookieMatch && ['fr', 'en', 'es'].includes(cookieMatch[1])) {
			return cookieMatch[1];
		}

		const mwLang = mw.config.get('wgUserLanguage');
		if (['fr', 'en', 'es'].includes(mwLang)) {
			return mwLang;
		}

		const browserLang = (navigator.language || 'en').slice(0, 2).toLowerCase();
		if (['fr', 'en', 'es'].includes(browserLang)) {
			return browserLang;
		}

		return 'en';
	}

	function getHomeTitle(lang) {
		if (lang === 'fr') return 'Accueil';
		if (lang === 'es') return 'Inicio';
		return 'Home';
	}

	function rewriteMainLinks() {
		const lang = getLang();
		const target = getHomeTitle(lang);
		const url = mw.util.getUrl(target, { uselang: lang });

		// Logo
		document.querySelectorAll('a.mw-wiki-logo, a.mw-logo').forEach(function (a) {
			a.href = url;
			a.title = target;
		});

		// Sidebar "Main page" style links
		document.querySelectorAll('#n-mainpage-description a, a[accesskey="z"]').forEach(function (a) {
			a.href = url;
		});
	}

	mw.loader.using(['mediawiki.util']).then(rewriteMainLinks);
}());