1 881
edições
Sem resumo de edição |
Sem resumo de edição |
||
| Linha 184: | Linha 184: | ||
}); | }); | ||
// --- SISTEMA DE BANDEIRAS, CACHE E REDIRECIONAMENTO --- | // --- SISTEMA DE BANDEIRAS, CACHE E REDIRECIONAMENTO (VERSÃO TURBO) --- | ||
(function() { | |||
var pageName = mw.config.get('wgPageName'); | var pageName = mw.config.get('wgPageName'); | ||
// 1. Identifica | // 1. Identifica o idioma atual | ||
var match = pageName.match(/\/(en|es|pl)$/); | var match = pageName.match(/\/(en|es|pl)$/); | ||
var urlLang = match ? match[1] : 'pt'; | var urlLang = match ? match[1] : 'pt'; | ||
var basePageName = pageName.replace(/\/(en|es|pl)$/, ''); | var basePageName = pageName.replace(/\/(en|es|pl)$/, ''); | ||
// 2. Lógica de Redirecionamento Automático | // 2. Lógica de Redirecionamento Automático | ||
if (urlLang === 'pt') { | if (urlLang === 'pt') { | ||
var prefLang = localStorage.getItem('otp_lang'); | var prefLang = localStorage.getItem('otp_lang'); | ||
if (!prefLang) { | if (!prefLang) { | ||
| Linha 205: | Linha 203: | ||
} | } | ||
if (prefLang && ['en', 'es', 'pl'].includes(prefLang)) { | if (prefLang && ['en', 'es', 'pl'].includes(prefLang)) { | ||
// Redirecionamento ultrarrápido antes de a página renderizar | |||
window.location.replace('/' + basePageName + '/' + prefLang + '?uselang=' + prefLang); | |||
return; | return; | ||
} | } | ||
} | } | ||
// 3. Monta as URLs | // 3. Monta as URLs diretas (Sem depender de pacotes externos do MediaWiki) | ||
var urlPT = | var urlPT = '/' + basePageName + '?uselang=pt-br'; | ||
var urlEN = | var urlEN = '/' + basePageName + '/en?uselang=en'; | ||
var urlES = | var urlES = '/' + basePageName + '/es?uselang=es'; | ||
var urlPL = | var urlPL = '/' + basePageName + '/pl?uselang=pl'; | ||
var flags = '<div id="wiki-flags" style="text-align:center; padding:15px 0 5px 0; margin-bottom:10px;">' + | 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="' + urlPT + '" id="flag-pt" style="font-size:26px; margin:0 4px; text-decoration:none; display:inline-block; padding:3px;" title="Português">🇧🇷</a>' + | ||
| Linha 227: | Linha 223: | ||
'</div>'; | '</div>'; | ||
// Injeta as bandeiras na | // 4. Injeta as bandeiras no exato milissegundo que o menu surgir na tela | ||
$('#p-navigation').before(flags); | var checkExist = setInterval(function() { | ||
if ($('#p-navigation').length) { | |||
$('#p-navigation').before(flags); | |||
$('#flag-' + urlLang).addClass('flag-ativa'); | |||
// Salva a escolha do jogador | |||
$('#wiki-flags a').on('click', function() { | |||
var clickedLang = $(this).attr('id').replace('flag-', ''); | |||
localStorage.setItem('otp_lang', clickedLang); | |||
}); | |||
clearInterval(checkExist); // Para o timer de verificação | |||
} | |||
}, 10); // Checa a cada 10 milissegundos | |||
})(); | |||
}); | |||
}); | |||