MediaWiki:Common.js: mudanças entre as edições

Ir para navegação Ir para pesquisar
sem sumário de edição
Sem resumo de edição
Sem resumo de edição
Linha 112: Linha 112:




/* --- Tradutor Integrado com a API Oficial do MediaWiki --- */
 
/* --- Tradutor na Barra Lateral (Compatível com Múltiplos Temas) --- */
 
 
 
 
 
/* --- Tradutor na Barra Lateral (Compatível com ECMAScript 5) --- */
$(document).ready(function() {
$(document).ready(function() {
     var defaultLang = 'pt';
     var defaultLang = 'pt';


     // 1. Carrega o Google Translate invisível (apenas se ainda não existir)
     // 1. Carrega o Google Translate invisível
     if ($('#google_translate_element').length === 0) {
     if ($('#google_translate_element').length === 0) {
         $('body').append('<div id="google_translate_element" style="display:none;"></div>');
         $('body').append('<div id="google_translate_element" style="display:none;"></div>');
Linha 130: Linha 135:
     }
     }


     // 2. Rastreador de Barra Lateral: Procura onde colocar o menu dependendo do seu tema
     // 2. Procura a barra lateral
     var sidebar = $('#mw-panel'); // Tema Vector Clássico
     var sidebar = $('#mw-panel');  
     if (sidebar.length === 0) sidebar = $('#vector-main-menu'); // Tema Vector 2022
     if (sidebar.length === 0) sidebar = $('#vector-main-menu');  
     if (sidebar.length === 0) sidebar = $('#mw-site-navigation'); // Tema Timeless
     if (sidebar.length === 0) sidebar = $('#mw-site-navigation');  
     if (sidebar.length === 0) sidebar = $('#column-one'); // Tema Monobook
     if (sidebar.length === 0) sidebar = $('#column-one');  


     // 3. Injeta o menu "Idiomas" se a barra for encontrada
     // 3. Injeta o menu usando concatenação de strings clássica (ES5)
     if (sidebar.length > 0 && $('#p-lang-custom').length === 0) {
     if (sidebar.length > 0 && $('#p-lang-custom').length === 0) {
         var menuHTML = `
         var menuHTML = '<div class="portal vector-menu vector-menu-portal" id="p-lang-custom">' +
        <div class="portal vector-menu vector-menu-portal" id="p-lang-custom">
             '<h3 class="vector-menu-heading" style="padding-left:14px; font-size:1em; color:#54595d; margin-top:10px;">' +
             <h3 class="vector-menu-heading" style="padding-left:14px; font-size:1em; color:#54595d; margin-top:10px;">
                 '<span>Idiomas</span>' +
                 <span>Idiomas</span>
             '</h3>' +
             </h3>
             '<div class="body vector-menu-content">' +
             <div class="body vector-menu-content">
                 '<ul class="vector-menu-content-list" style="list-style:none; padding-left:14px; margin:0;">' +
                 <ul class="vector-menu-content-list" style="list-style:none; padding-left:14px; margin:0;">
                     '<li id="n-lang-pt" style="margin-bottom:4px;"><a href="#" class="lang-btn" data-lang="pt">Português (Brasil)</a></li>' +
                     <li id="n-lang-pt" style="margin-bottom:4px;"><a href="#" class="lang-btn" data-lang="pt">Português (Brasil)</a></li>
                     '<li id="n-lang-en" style="margin-bottom:4px;"><a href="#" class="lang-btn" data-lang="en">English</a></li>' +
                     <li id="n-lang-en" style="margin-bottom:4px;"><a href="#" class="lang-btn" data-lang="en">English</a></li>
                     '<li id="n-lang-es" style="margin-bottom:4px;"><a href="#" class="lang-btn" data-lang="es">Español</a></li>' +
                     <li id="n-lang-es" style="margin-bottom:4px;"><a href="#" class="lang-btn" data-lang="es">Español</a></li>
                     '<li id="n-lang-pl" style="margin-bottom:4px;"><a href="#" class="lang-btn" data-lang="pl">Polski</a></li>' +
                     <li id="n-lang-pl" style="margin-bottom:4px;"><a href="#" class="lang-btn" data-lang="pl">Polski</a></li>
                 '</ul>' +
                 </ul>
             '</div>' +
             </div>
         '</div>';
         </div>`;
       
         sidebar.append(menuHTML);
         sidebar.append(menuHTML);
    } else {
        console.error("ERRO: Barra lateral não encontrada. O script do tradutor não conseguiu achar onde se ancorar.");
     }
     }


     // 4. Lógica de tradução
     // 4. Lógica de tradução adaptada para navegadores/sistemas mais restritos
     $(document).on('click', '.lang-btn', function(e) {
     $(document).on('click', '.lang-btn', function(e) {
         e.preventDefault();
         e.preventDefault();
Linha 172: Linha 175:
         if (select) {
         if (select) {
             select.value = targetLang;
             select.value = targetLang;
             select.dispatchEvent(new Event('change'));
             // Dispara o evento de forma compatível com ES5
            var event;
            if (typeof Event === 'function') {
                event = new Event('change');
            } else {
                event = document.createEvent('HTMLEvents');
                event.initEvent('change', true, false);
            }
            select.dispatchEvent(event);
         } else {
         } else {
             alert('O tradutor está carregando. Aguarde um segundo e tente novamente.');
             alert('O tradutor está carregando. Aguarde um segundo e tente novamente.');

Menu de navegação