MediaWiki:Common.js: Difference between revisions
From WIKI
No edit summary |
No edit summary |
||
| Line 59: | Line 59: | ||
insertContent("link-es", "es"); | insertContent("link-es", "es"); | ||
// 🌀 Reescreve links do conteúdo | // 🌀 Reescreve links do conteúdo para o idioma atual | ||
console.log("[Language Menu] Rewriting content links for:", currentLang); | console.log("[Language Menu] Rewriting content links for:", currentLang); | ||
Revision as of 13:45, 17 September 2025
/* 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);
}
});
});
