MediaWiki:Common.js

De otPokemon Wiki
Revisão de 16h16min de 5 de março de 2026 por Felipeaugusto (discussão | contribs)
Ir para navegação Ir para pesquisar

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);
    });
});