MediaWiki:Common.js
From koreapedia
Note: After publishing, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5.
/* Any JavaScript here will be loaded for all users on every page load. */
/* Google Translate widget for Chameleon skin (selected languages only) */
(function () {
var LANGS = 'ko,ja,es,de,zh-CN,zh-TW,fr,ar,hi,pt,ru'; // note: no 'en' (it's pageLanguage)
var CONTAINER_ID = 'google_translate_element';
// Ensure container exists before init
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 bust any stale init
window.koreapediaGTEInit = function () {
ensureContainer();
new google.translate.TranslateElement({
pageLanguage: 'en',
includedLanguages: LANGS,
layout: google.translate.TranslateElement.InlineLayout.SIMPLE
}, CONTAINER_ID);
};
// Load script only if needed; otherwise call init directly
function loadOrInit() {
// If library is already there, just init with our options
if (window.google && google.translate && google.translate.TranslateElement) {
window.koreapediaGTEInit();
return;
}
// Avoid adding duplicate script tags
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();
});
});
})();
(function () {
function sizeGTEFrame() {
var f = document.getElementById('goog-te-menu-frame');
if (f) {
f.style.width = '480px'; // must match the CSS above
f.style.borderRadius = '8px';
f.style.overflow = 'hidden';
}
}
// When the trigger is clicked, the iframe appears shortly after
document.addEventListener('click', function (e) {
if (e.target.closest('#google_translate_element')) {
setTimeout(sizeGTEFrame, 120);
setTimeout(sizeGTEFrame, 400); // run twice to catch late loads
}
});
})();
