MediaWiki:Common.js: Difference between revisions

From eMushpedia
Jump to navigation Jump to search
No edit summary
No edit summary
Line 1: Line 1:
/* Tout JavaScript présent ici sera exécuté par tous les utilisateurs à chaque chargement de page. */
// Override the page the user is redirected to when clicking the logo
// based only on ?uselang=fr|en|es in the URL, then remember it.
(function () {
const ALLOWED_LANGS = [ 'fr', 'en', 'es' ];
const STORAGE_KEY = 'emushpedia_lang';


//override selectable languages for translation
function getLangFromUrl() {
wgULSLanguages = [];
const params = new URLSearchParams( window.location.search );
wgULSLanguages.fr = 'french';
const uselang = params.get( 'uselang' );
wgULSLanguages.en = 'english';
return ALLOWED_LANGS.includes( uselang ) ? uselang : null;
wgULSLanguages.es = 'spanish';
}
wgULSAcceptLanguageList = ["fr", "en", "es"];


// Override the page the user is redirected to when clicking on the Logo
function getStoredLang() {
// according to the lang retrieve in difference locations.
const stored = localStorage.getItem( STORAGE_KEY );
(function () {
return ALLOWED_LANGS.includes( stored ) ? stored : null;
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=([^;]+)/);
function saveLang( lang ) {
if (cookieMatch && ['fr', 'en', 'es'].includes(cookieMatch[1])) {
if ( ALLOWED_LANGS.includes( lang ) ) {
return cookieMatch[1];
localStorage.setItem( STORAGE_KEY, lang );
}
}
}


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


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


return 'en';
return getStoredLang() || 'en';
}
}


function getHomeTitle(lang) {
function getHomeTitle( lang ) {
if (lang === 'fr') return 'Accueil';
if ( lang === 'fr' ) {
if (lang === 'es') return 'Inicio';
return 'Accueil';
}
if ( lang === 'es' ) {
return 'Inicio';
}
return 'Home';
return 'Home';
}
}
Line 45: Line 45:
function rewriteMainLinks() {
function rewriteMainLinks() {
const lang = getLang();
const lang = getLang();
const target = getHomeTitle(lang);
const target = getHomeTitle( lang );
const url = mw.util.getUrl(target, { uselang: lang });
const url = mw.util.getUrl( target, { uselang: lang } );


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


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


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

Revision as of 03:39, 9 April 2026

// Override the page the user is redirected to when clicking the logo
// based only on ?uselang=fr|en|es in the URL, then remember it.
(function () {
	const ALLOWED_LANGS = [ 'fr', 'en', 'es' ];
	const STORAGE_KEY = 'emushpedia_lang';

	function getLangFromUrl() {
		const params = new URLSearchParams( window.location.search );
		const uselang = params.get( 'uselang' );
		return ALLOWED_LANGS.includes( uselang ) ? uselang : null;
	}

	function getStoredLang() {
		const stored = localStorage.getItem( STORAGE_KEY );
		return ALLOWED_LANGS.includes( stored ) ? stored : null;
	}

	function saveLang( lang ) {
		if ( ALLOWED_LANGS.includes( lang ) ) {
			localStorage.setItem( STORAGE_KEY, lang );
		}
	}

	function getLang() {
		const urlLang = getLangFromUrl();

		if ( urlLang ) {
			saveLang( urlLang );
			return urlLang;
		}

		return getStoredLang() || '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 links
		document.querySelectorAll( '#n-mainpage-description a, a[accesskey="z"]' ).forEach( function ( a ) {
			a.href = url;
			a.title = target;
		} );
	}

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