MediaWiki:Common.js
Nota: Após publicar, você pode ter que limpar o "cache" do seu navegador para ver as alterações.
- Firefox / Safari: Pressione Shift enquanto clica Recarregar, ou pressione Ctrl-F5 ou Ctrl-R (⌘-R no Mac)
- Google Chrome: Pressione Ctrl-Shift-R (⌘-Shift-R no Mac)
- Internet Explorer/Edge: PressioneCtrl enquanto clica Recarregar, ou Pressione Ctrl-F5
- Opera: Pressione Ctrl-F5.
// --- SISTEMA DE BANDEIRAS, CACHE E REDIRECIONAMENTO ---
mw.loader.using(['mediawiki.util']).then(function() {
var pageName = mw.config.get('wgPageName');
// 1. Identifica em qual idioma o jogador está agora (pela URL)
var match = pageName.match(/\/(en|es|pl)$/);
var urlLang = match ? match[1] : 'pt'; // Se não tem sufixo, assumimos PT
var basePageName = pageName.replace(/\/(en|es|pl)$/, '');
// 2. Lógica de Redirecionamento Automático
if (urlLang === 'pt') { // Só redireciona se ele tentar acessar a página raiz (em português)
// Tenta pegar o idioma salvo. Se não tiver, pega o idioma nativo do Google Chrome/PC dele
var prefLang = localStorage.getItem('otp_lang');
if (!prefLang) {
var browserLang = navigator.language || navigator.userLanguage;
if (browserLang.startsWith('en')) prefLang = 'en';
else if (browserLang.startsWith('es')) prefLang = 'es';
else if (browserLang.startsWith('pl')) prefLang = 'pl';
}
// Se a preferência dele for estrangeira, manda ele pra página traduzida instantaneamente!
if (prefLang && ['en', 'es', 'pl'].includes(prefLang)) {
var redirectUrl = mw.util.getUrl(basePageName + '/' + prefLang) + '?uselang=' + prefLang;
window.location.replace(redirectUrl);
return; // Para o script aqui para não carregar mais nada
}
}
// 3. Monta as URLs para as bandeiras
var urlPT = mw.util.getUrl(basePageName) + '?uselang=pt-br';
var urlEN = mw.util.getUrl(basePageName + '/en') + '?uselang=en';
var urlES = mw.util.getUrl(basePageName + '/es') + '?uselang=es';
var urlPL = mw.util.getUrl(basePageName + '/pl') + '?uselang=pl';
// Cria o HTML adicionando um "ID" para cada bandeira
var flags = '<div id="wiki-flags" style="text-align:center; padding:15px 0 5px 0; margin-bottom:10px;">' +
'<a href="' + urlPT + '" id="flag-pt" style="font-size:26px; margin:0 4px; text-decoration:none; display:inline-block; padding:3px;" title="Português">🇧🇷</a>' +
'<a href="' + urlEN + '" id="flag-en" style="font-size:26px; margin:0 4px; text-decoration:none; display:inline-block; padding:3px;" title="English">🇺🇸</a>' +
'<a href="' + urlES + '" id="flag-es" style="font-size:26px; margin:0 4px; text-decoration:none; display:inline-block; padding:3px;" title="Español">🇪🇸</a>' +
'<a href="' + urlPL + '" id="flag-pl" style="font-size:26px; margin:0 4px; text-decoration:none; display:inline-block; padding:3px;" title="Polski">🇵🇱</a>' +
'</div>';
// Injeta as bandeiras na barra lateral
$('#p-navigation').before(flags);
// 4. Aplica a classe CSS (borda/brilho) na bandeira do idioma atual
$('#flag-' + urlLang).addClass('flag-ativa');
// 5. Salva a escolha no PC do jogador quando ele clica em uma bandeira
$('#wiki-flags a').on('click', function() {
var clickedLang = $(this).attr('id').replace('flag-', '');
localStorage.setItem('otp_lang', clickedLang);
});
});