MediaWiki:Common.js: Difference between revisions

From koreapedia
No edit summary
No edit summary
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. */
/* Google Translate widget for Chameleon skin (selected languages only) */
/* Google Translate widget (shows English via pageLanguage:auto) */
 
(function () {
(function () {
   var LANGS = 'ko,es,de,zh-CN,zh-TW,fr,ar,hi,pt-PT,ru'; // note: no 'en' (it's pageLanguage)
   var LANGS = 'en,ko,ja,es,de,zh-CN,zh-TW,fr,ar,hi,pt,ru';
   var CONTAINER_ID = 'google_translate_element';
   var CONTAINER_ID = 'google_translate_element';


  // Ensure container exists before init
   function ensureContainer() {
   function ensureContainer() {
     if (!document.getElementById(CONTAINER_ID)) {
     if (!document.getElementById(CONTAINER_ID)) {
Line 17: Line 15:
   }
   }


   // NEW callback name to bust any stale init
   // New callback name to avoid stale inits
   window.koreapediaGTEInit = function () {
   window.koreapediaGTEInit = function () {
     ensureContainer();
     ensureContainer();
     new google.translate.TranslateElement({
     new google.translate.TranslateElement({
       pageLanguage: 'en',
       pageLanguage: 'auto', // 👈 allows English to appear
       includedLanguages: LANGS,
       includedLanguages: LANGS,
       layout: google.translate.TranslateElement.InlineLayout.SIMPLE
       layout: google.translate.TranslateElement.InlineLayout.SIMPLE
Line 27: Line 25:
   };
   };


  // Load script only if needed; otherwise call init directly
   function loadOrInit() {
   function loadOrInit() {
    // If library is already there, just init with our options
     if (window.google && google.translate && google.translate.TranslateElement) {
     if (window.google && google.translate && google.translate.TranslateElement) {
       window.koreapediaGTEInit();
       window.koreapediaGTEInit();
       return;
       return;
     }
     }
    // Avoid adding duplicate script tags
     if (!document.querySelector('script[src*="translate_a/element.js"]')) {
     if (!document.querySelector('script[src*="translate_a/element.js"]')) {
       var s = document.createElement('script');
       var s = document.createElement('script');

Revision as of 15:54, 15 October 2025

/* Any JavaScript here will be loaded for all users on every page load. */
/* Google Translate widget (shows English via pageLanguage:auto) */
(function () {
  var LANGS = 'en,ko,ja,es,de,zh-CN,zh-TW,fr,ar,hi,pt,ru';
  var CONTAINER_ID = 'google_translate_element';

  function ensureContainer() {
    if (!document.getElementById(CONTAINER_ID)) {
      var host = document.querySelector('.navbar-collapse') || document.body;
      var el = document.createElement('div');
      el.id = CONTAINER_ID;
      el.style.marginLeft = '15px';
      host.appendChild(el);
    }
  }

  // New callback name to avoid stale inits
  window.koreapediaGTEInit = function () {
    ensureContainer();
    new google.translate.TranslateElement({
      pageLanguage: 'auto', // 👈 allows English to appear
      includedLanguages: LANGS,
      layout: google.translate.TranslateElement.InlineLayout.SIMPLE
    }, CONTAINER_ID);
  };

  function loadOrInit() {
    if (window.google && google.translate && google.translate.TranslateElement) {
      window.koreapediaGTEInit();
      return;
    }
    if (!document.querySelector('script[src*="translate_a/element.js"]')) {
      var s = document.createElement('script');
      s.src = '//translate.google.com/translate_a/element.js?cb=koreapediaGTEInit';
      document.head.appendChild(s);
    }
  }

  mw.loader.using('mediawiki.util', function () {
    $(function () {
      ensureContainer();
      loadOrInit();
    });
  });
})();