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

sem sumário de edição
Sem resumo de edição
Sem resumo de edição
Linha 113: Linha 113:


/* --- Tradutor Integrado com a API Oficial do MediaWiki --- */
/* --- Tradutor Integrado com a API Oficial do MediaWiki --- */
mw.loader.using(['mediawiki.util']).then(function() {
/* --- Tradutor na Barra Lateral (Compatível com Múltiplos Temas) --- */
$(document).ready(function() {
     var defaultLang = 'pt';
     var defaultLang = 'pt';


     // 1. Carrega o Google Translate invisível
     // 1. Carrega o Google Translate invisível (apenas se ainda não existir)
     $('body').append('<div id="google_translate_element" style="display:none;"></div>');
     if ($('#google_translate_element').length === 0) {
    window.googleTranslateElementInit = function() {
        $('body').append('<div id="google_translate_element" style="display:none;"></div>');
        new google.translate.TranslateElement({
        window.googleTranslateElementInit = function() {
            pageLanguage: defaultLang,
            new google.translate.TranslateElement({
            includedLanguages: 'pt,en,es,pl',
                pageLanguage: defaultLang,
            autoDisplay: false
                includedLanguages: 'pt,en,es,pl',
        }, 'google_translate_element');
                autoDisplay: false
    };
            }, 'google_translate_element');
    $.getScript("https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit");
        };
        $.getScript("https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit");
    }


     // 2. Adiciona os links no menu "Navegação" (p-navigation) usando a API nativa
     // 2. Rastreador de Barra Lateral: Procura onde colocar o menu dependendo do seu tema
    // Se preferir no menu "Ferramentas", troque 'p-navigation' por 'p-tb'
     var sidebar = $('#mw-panel'); // Tema Vector Clássico
     var ptLink = mw.util.addPortletLink('p-navigation', '#', 'Português (Brasil)', 'n-lang-pt', 'Mudar para Português');
     if (sidebar.length === 0) sidebar = $('#vector-main-menu'); // Tema Vector 2022
     var enLink = mw.util.addPortletLink('p-navigation', '#', 'English', 'n-lang-en', 'Change to English');
     if (sidebar.length === 0) sidebar = $('#mw-site-navigation'); // Tema Timeless
     var esLink = mw.util.addPortletLink('p-navigation', '#', 'Español', 'n-lang-es', 'Cambiar a Español');
     if (sidebar.length === 0) sidebar = $('#column-one'); // Tema Monobook
     var plLink = mw.util.addPortletLink('p-navigation', '#', 'Polski', 'n-lang-pl', 'Zmień na Polski');


     // 3. Prepara os links para o script de tradução
     // 3. Injeta o menu "Idiomas" se a barra for encontrada
     $(ptLink).find('a').addClass('lang-btn').attr('data-lang', 'pt');
     if (sidebar.length > 0 && $('#p-lang-custom').length === 0) {
    $(enLink).find('a').addClass('lang-btn').attr('data-lang', 'en');
        var menuHTML = `
    $(esLink).find('a').addClass('lang-btn').attr('data-lang', 'es');
        <div class="portal vector-menu vector-menu-portal" id="p-lang-custom">
    $(plLink).find('a').addClass('lang-btn').attr('data-lang', 'pl');
            <h3 class="vector-menu-heading" style="padding-left:14px; font-size:1em; color:#54595d; margin-top:10px;">
                <span>Idiomas</span>
            </h3>
            <div class="body vector-menu-content">
                <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-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-pl" style="margin-bottom:4px;"><a href="#" class="lang-btn" data-lang="pl">Polski</a></li>
                </ul>
            </div>
        </div>`;
        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 clique para traduzir
     // 4. Lógica de tradução
     $(document).on('click', '.lang-btn', function(e) {
     $(document).on('click', '.lang-btn', function(e) {
         e.preventDefault();
         e.preventDefault();
Linha 146: Linha 163:
         var select = document.querySelector('.goog-te-combo');
         var select = document.querySelector('.goog-te-combo');


        // Retorna ao original (PT)
         if (targetLang === defaultLang) {
         if (targetLang === defaultLang) {
             document.cookie = "googtrans=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
             document.cookie = "googtrans=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;";
Linha 154: Linha 170:
         }
         }


        // Aciona o Google Translate
         if (select) {
         if (select) {
             select.value = targetLang;
             select.value = targetLang;