MediaWiki:Common.js
From WIKI
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.
/* Any JavaScript here will be loaded for all users on every page load. */
mw.hook('wikipage.content').add(function () {
console.log("[Language Menu] Script started");
var path = mw.config.get("wgPageName");
console.log("[Language Menu] Current path:", path);
var currentLang = '';
var base = path;
var langs = ['pt', 'en', 'es'];
// Detecta idioma pelo sufixo
langs.forEach(function (lang) {
var suffix = '/' + lang;
if (path.toLowerCase().endsWith(suffix)) {
currentLang = lang;
base = path.slice(0, -suffix.length);
console.log("[Language Menu] Detected language:", lang, "Base:", base);
}
});
// Se não detectou idioma → assume inglês (default)
if (!currentLang) currentLang = 'en';
// 🔧 Força mapeamento da página principal para "Main_Page"
if (base === 'Main_Page' || base === 'Página_principal') {
base = 'Main_Page';
}
// Labels
var labels = {
'pt': 'Português',
'en': 'English',
'es': 'Español'
};
// Links finais
var links = {
'pt': base + '/pt',
'en': base,
'es': base + '/es'
};
// Monta menu de idiomas
function insertContent(id, lang) {
var el = document.getElementById(id);
if (!el) return;
var href = '/doc/' + encodeURIComponent(links[lang]); // Gera URL corretamente
if (lang === currentLang) {
el.textContent = labels[lang];
} else {
el.innerHTML = '<a class="lang-menu-link" href="' + href + '">' + labels[lang] + '</a>';
}
}
insertContent("link-pt", "pt");
insertContent("link-en", "en");
insertContent("link-es", "es");
// 🌀 Reescreve links do conteúdo para o idioma atual
console.log("[Language Menu] Rewriting content links for:", currentLang);
document.querySelectorAll('#mw-content-text a[href^="/"]').forEach(function (link) {
//if (link.classList.contains('lang-menu-link')) return; // ignora menu de idiomas
var href = link.getAttribute('href');
if (!href) return;
var hrefNormalized = decodeURIComponent(href.replace(/\/$/, ''));
// Ignora âncoras e parâmetros
if (href.includes('?') || href.includes('#')) return;
// Ignora namespaces especiais
if (hrefNormalized.match(/\/(Special:|File:|Category:|Help:|MediaWiki:)/)) return;
// Ignora se já tem idioma
if (hrefNormalized.match(/\/(pt|en|es)$/)) return;
// Adiciona idioma se não for inglês
if (currentLang !== 'en') {
var newHref = hrefNormalized + '/' + currentLang;
link.setAttribute('href', newHref);
console.log("[Language Menu] Link modificado:", href, "→", newHref);
}
});
});
