MediaWiki:Common.js: различия между версиями

Материал из bolshe.wiki
Нет описания правки
Метка: ручная отмена
Нет описания правки
Метка: ручная отмена
 
(не показано 11 промежуточных версий этого же участника)
Строка 1: Строка 1:
/* Размещённый здесь код JavaScript будет загружаться пользователям при обращении к каждой странице */
// Ждем полной загрузки базовых модулей MediaWiki и jQuery
/* Динамическое добавление виджета Google Translate в боковую панель MediaWiki */
mw.loader.using(['mediawiki.util']).done(function () {
(function () {
  // 1. Создаем глобальную функцию инициализации (Google ищет именно её)
    // Ждем полной загрузки структуры документа MediaWiki
    window.googleTranslateElementInit = function() {
    mw.hook('wikipage.content').add(function () {
         new google.translate.TranslateElement({
       
             pageLanguage: 'ru', // Язык оригинала вашего сайта
        // Находим элемент бокового меню (подходит для скинов Vector, Monobook)
        }, 'google_translate_element');
        var sidebar = document.getElementById('mw-panel') || document.getElementById('sidebar') || document.getElementById('p-navigation');
    };
          
        if (sidebar && !document.getElementById('google_translate_element')) {
             // 1. Создаем HTML-контейнер для самого виджета
            var translateDiv = document.createElement('div');
            translateDiv.id = 'google_translate_element';
            translateDiv.style.padding = '10px';
            translateDiv.style.marginBottom = '10px';
           
            // Вставляем контейнер в самое начало бокового меню
            sidebar.insertBefore(translateDiv, sidebar.firstChild);


            // 2. Объявляем глобальную функцию инициализации для Google API
            window.googleTranslateElementInit = function () {
                new google.translate.TranslateElement({
                    pageLanguage: 'ru', // Исходный язык вашей Вики (измените, если основной язык другой)
                    layout: google.translate.TranslateElement.InlineLayout.SIMPLE, // Компактный вид виджета
                    autoDisplay: false
                }, 'google_translate_element');
            };


            // 3. Динамически загружаем внешний JS-скрипт Google Translate API
    // 2. Безопасно загружаем скрипт Google через встроенный загрущик MediaWiki
            var googleScript = document.createElement('script');
    mw.loader.getScript('https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit&hl=en')
            googleScript.type = 'text/javascript';
        .catch(function(e) {
            googleScript.src = '//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit';
             console.error("Ошибка загрузки Google Translate:", e);
             document.head.appendChild(googleScript);
         });
         }
});
    });
})();

Текущая версия от 19:16, 22 августа 2026

// Ждем полной загрузки базовых модулей MediaWiki и jQuery
mw.loader.using(['mediawiki.util']).done(function () {
   // 1. Создаем глобальную функцию инициализации (Google ищет именно её)
    window.googleTranslateElementInit = function() {
        new google.translate.TranslateElement({
            pageLanguage: 'ru', // Язык оригинала вашего сайта
        }, 'google_translate_element');
    };


    // 2. Безопасно загружаем скрипт Google через встроенный загрущик MediaWiki
    mw.loader.getScript('https://translate.google.com/translate_a/element.js?cb=googleTranslateElementInit&hl=en')
        .catch(function(e) {
            console.error("Ошибка загрузки Google Translate:", e);
        });
});