Jump to content

MediaWiki:Common.js: Difference between revisions

No edit summary
No edit summary
 
(4 intermediate revisions by the same user not shown)
Line 1: Line 1:
/* Any JavaScript here will be loaded for all users on every page load. */
/* Any JavaScript here will be loaded for all users on every page load. */


/* Widget de Tradução GTranslate */
$(document).ready(function() {
$(document).ready(function() {
   if ($('#p-navigation').length && !$('#custom-lang-selector').length) {
   if ($('#p-navigation').length) {
   
    if (!$('.gtranslate_wrapper').length) {
    // Lista de idiomas suportados
       $('#p-navigation').prepend('<div class="gtranslate_wrapper"></div>');
    var languages = [
    }
       { code: 'en', name: 'English' },
      { code: 'pt', name: 'Portuguese' },
      { code: 'es', name: 'Spanish' },
      { code: 'fr', name: 'French' },
      { code: 'de', name: 'German' },
      { code: 'it', name: 'Italian' },
      { code: 'nl', name: 'Dutch' },
      { code: 'pl', name: 'Polish' },
      { code: 'ja', name: 'Japanese' }
    ];


     // Identificar idioma atual pela cookie do GTranslate (ou 'en' por defeito)
     window.gtranslateSettings = {
    var currentLangCode = (document.cookie.match(/googtrans=\/en\/([a-z]{2})/) || [])[1] || 'en';
       "default_language": "en",
    var currentLangObj = languages.find(l => l.code === currentLangCode) || languages[0];
       "languages": ["en", "pt", "es", "fr", "de", "it", "nl", "pl", "ja"],
 
       "wrapper_selector": ".gtranslate_wrapper"
    // Construir HTML do Dropdown Customizado
    var optionsHtml = '';
    languages.forEach(function(lang) {
       var isSelected = lang.code === currentLangObj.code ? ' selected' : '';
       optionsHtml += '<div class="custom-lang-option' + isSelected + '" data-code="' + lang.code + '">' + lang.name + '</div>';
    });
 
    var dropdownHtml =
      '<div class="gtranslate_wrapper" id="custom-lang-selector">' +
        '<div class="custom-lang-trigger">' +
          '<span class="custom-lang-current">' + currentLangObj.name + '</span>' +
          '<span class="custom-lang-arrow"></span>' +
        '</div>' +
        '<div class="custom-lang-menu">' + optionsHtml + '</div>' +
        '<div id="google_translate_element" style="display:none;"></div>' +
       '</div>';
 
    $('#p-navigation').prepend(dropdownHtml);
 
    // Carregar o Widget Google Translate Base
    window.googleTranslateElementInit = function() {
      new google.translate.TranslateElement({pageLanguage: 'en'}, 'google_translate_element');
     };
     };
    $.getScript('//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit');
    // Eventos de Abrir/Fechar e Selecionar
    var $wrapper = $('#custom-lang-selector');
    var $trigger = $wrapper.find('.custom-lang-trigger');
    var $menu = $wrapper.find('.custom-lang-menu');
    $trigger.on('click', function(e) {
      e.stopPropagation();
      $wrapper.toggleClass('open');
    });


     $(document).on('click', function() {
     $.getScript('https://cdn.gtranslate.net/widgets/latest/dropdown.js');
      $wrapper.removeClass('open');
    });
 
    $wrapper.on('click', '.custom-lang-option', function() {
      var code = $(this).data('code');
      var name = $(this).text();
 
      $('.custom-lang-option').removeClass('selected');
      $(this).addClass('selected');
      $('.custom-lang-current').text(name);
      $wrapper.removeClass('open');
 
      // Aplicar tradução
      document.cookie = "googtrans=/en/" + code + "; path=/; domain=" + location.hostname;
      document.cookie = "googtrans=/en/" + code + "; path=/;";
      location.reload();
    });
   }
   }
});
});