|
|
| Linha 184: |
Linha 184: |
| }); | | }); |
|
| |
|
| // --- SISTEMA DE BANDEIRAS, CACHE E REDIRECIONAMENTO (VERSÃO BLINDADA) --- | | /* Adiciona o Google Translate ao menu pessoal no topo (Skin Vector) */ |
| (function() { | | $(document).ready(function() { |
| var pageName = mw.config.get('wgPageName'); | | // Cria o container para o Google Translate |
| var namespace = mw.config.get('wgNamespaceNumber'); // Pega o ID do tipo da página
| | var translateDiv = $('<div id="google_translate_element"></div>'); |
|
| |
| // 1. Identifica o idioma atual da URL
| |
| var match = pageName.match(/\/(en|es|pl)$/); | |
| var urlLang = match ? match[1] : 'pt';
| |
| var basePageName = pageName.replace(/\/(en|es|pl)$/, '');
| |
|
| |
|
| // Regra de Ouro: NUNCA redirecionar páginas de sistema (Special = -1, User = 2, MediaWiki = 8) | | // Insere o container no menu de ferramentas de usuário (canto superior direito) |
| var isSystemPage = (namespace === -1 || namespace === 8 || namespace === 2 || namespace === 3); | | // Se quiser na barra lateral, mude '#p-personal ul' para '#p-navigation ul' |
| | $('#p-personal ul').prepend($('<li id="pt-translate"></li>').append(translateDiv)); |
|
| |
|
| // 2. Lógica de Redirecionamento Automático | | // Define a função de inicialização do Google |
| if (!isSystemPage && urlLang === 'pt') { | | window.googleTranslateElementInit = function() { |
| var prefLang = localStorage.getItem('otp_lang'); | | new google.translate.TranslateElement({ |
|
| | pageLanguage: 'pt', // Mude para o idioma base do seu wiki (ex: 'en' para inglês) |
| if (!prefLang) {
| | layout: google.translate.TranslateElement.InlineLayout.SIMPLE, |
| var browserLang = navigator.language || navigator.userLanguage; | | autoDisplay: false |
| if (browserLang.startsWith('en')) prefLang = 'en';
| | }, 'google_translate_element'); |
| else if (browserLang.startsWith('es')) prefLang = 'es'; | | }; |
| else if (browserLang.startsWith('pl')) prefLang = 'pl'; | |
| }
| |
|
| |
|
| // Redireciona APENAS se a preferência for gringa e estivermos numa página normal
| | // Carrega o script oficial do Google Translate |
| if (prefLang && ['en', 'es', 'pl'].includes(prefLang)) {
| | $.getScript("//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"); |
| // Usa link 100% limpo para o SubTranslate funcionar
| | }); |
| window.location.replace('/' + basePageName + '/' + prefLang);
| |
| return;
| |
| }
| |
| }
| |
| | |
| // 3. Monta as URLs diretas LIMPAS para os botões das bandeiras
| |
| var urlPT = '/' + basePageName;
| |
| var urlEN = '/' + basePageName + '/en';
| |
| var urlES = '/' + basePageName + '/es';
| |
| var urlPL = '/' + basePageName + '/pl';
| |
| | |
| 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>';
| |
| | |
| // 4. Injeta as bandeiras | |
| var checkExist = setInterval(function() {
| |
| if ($('#p-navigation').length) {
| |
| $('#p-navigation').before(flags);
| |
| $('#flag-' + urlLang).addClass('flag-ativa');
| |
| | |
| // 5. A MÁGICA QUE EVITA O LOOP: Grava a escolha ANTES de mudar de página
| |
| $('#wiki-flags a').on('click', function(e) {
| |
| e.preventDefault(); // Impede o link de abrir imediatamente
| |
| var clickedLang = $(this).attr('id').replace('flag-', '');
| |
|
| |
| // Grava a escolha no PC na mesma hora
| |
| localStorage.setItem('otp_lang', clickedLang);
| |
|
| |
| // Agora sim, libera o link para abrir
| |
| window.location.href = $(this).attr('href');
| |
| });
| |
| | |
| clearInterval(checkExist);
| |
| }
| |
| }, 10);
| |
| })();
| |