MediaWiki:Gadget-LiensAncresDansCategories.js

Définition, traduction, prononciation, anagramme et synonyme sur le dictionnaire libre Wiktionnaire.

Remarque: après avoir sauvegardé, vous devez vider le cache de votre navigateur pour que les changements prennent effet. Mozilla, cliquez sur Actualiser (ou ctrl-r). Internet Explorer / Opera: ctrl-f5. Safari: cmd-r. Konqueror ctrl-r.

/*
 * Cet outil ajoute une ancre aux liens des pages dans les catégories,
 * vers la section de langue ad hoc
 */
if (mw.config.get('wgNamespaceNumber') === 14) {
	jQuery(function () {
		// Nom de la catégorie, en ignorant "Catégorie:" ou "Catégorie:Wiktionnaire:" au début
		var cat_name = mw.config.get('wgPageName').split(':').reverse()[0],
			lang, ancre;
		
		/** On récupère le nom de langue à partir du nom de la catégorie **/
		// Pour un lexique
		if (cat_name.split('_', 1)[0] == 'Lexique') {
			lang = cat_name.replace(/.+_en_(.+)_(?:de_la_|du_|de_l’).+/, '$1');
		} // Pour une catégorie d'origine étymologique
		else if (/Mots_en_.+_(?:issus|préfixés|suffixés)_.+/.test(cat_name)) {
			lang = cat_name.replace(/Mots_en_(.+)_(?:issus|préfixés|suffixés)_.+/, '$1');
		} // Pour une thématique
		else if (/.+_en_(.+)/.test(cat_name)) {
			lang = cat_name.replace(/.+_en_(.+)/, '$1');
		} // Pour une catégorie de langue (i.e. la catégorie est catégorisée dans Catégorie:Langues)
		else if (mw.config.get('wgCategories').includes('Langues')) {
			lang = cat_name;
		}
		else { // si la catégorie n'est pas liée à une langue (e.g. cat. de maitenance)
			return;
		}
		ancre = '#' + lang.charAt(0).toUpperCase() + lang.slice(1);
		jQuery("#mw-pages>.mw-content-ltr li>a").each(function () {
			if (this.innerHTML.indexOf(":") < 0) // pages dans l'espace principal uniquement
			  this.setAttribute("href", this.getAttribute("href", 2) + ancre);
		});
	});
}