Вот так не срабатывает
const googleTranslateConfig = {
/* Original language */
lang: "ru",
/* Если хотите подписаться на событие "FinishTranslate" (Момент когда скрипт закончил перевод), расскоментируйте и добавьте любое проверочное слово на оригинальном языке */
testWord: "куки",
/* Язык, на который переводим при первом посещении */
// langFirstVisit: 'en',
/* Если скрипт не работает или работает неправильно, раскомментируйте и укажите основной домен в свойстве domain */
// domain: "lik-astana.kz"
domain: "undefined"
};
document.addEventListener("DOMContentLoaded", (event) => {
/* Подключаем виджет google translate */
let script = document.createElement("script");
script.src = `//translate.google.com/translate_a/element.js?cb=TranslateWidgetIsLoaded`;
document.getElementsByTagName("head")[0].appendChild(script);
});
function TranslateWidgetIsLoaded() {
TranslateInit(googleTranslateConfig);
}
function TranslateInit(config) {
if (config.langFirstVisit && !Cookies.get("googtrans")) {
/* Если установлен язык перевода для первого посещения и куки не назначены */
TranslateCookieHandler("/auto/" + config.langFirstVisit);
}
let code = TranslateGetCode(config);
TranslateHtmlHandler(code);
if (code == config.lang) {
/* Если язык по умолчанию, совпадает с языком на который переводим, то очищаем куки */
TranslateCookieHandler(null, config.domain);
}
if (config.testWord) TranslateMutationObserver(config.testWord, code == config.lang);
/* Инициализируем виджет с языком по умолчанию */
new google.translate.TranslateElement({
pageLanguage: config.lang,
multilanguagePage: true, // Your page contains content in more than one languages
});
/* Вешаем событие клик на флаги */
TranslateEventHandler("click", "[data-google-lang]", function (e) {
TranslateCookieHandler(
"/" + config.lang + "/" + e.getAttribute("data-google-lang"),
config.domain
);
/* Перезагружаем страницу */
window.location.reload();
});
}
function TranslateGetCode(config) {
/* Если куки нет, то передаем дефолтный язык */
let lang =
Cookies.get("googtrans") != undefined && Cookies.get("googtrans") != "null"
? Cookies.get("googtrans")
: config.lang;
return lang.match(/(?!^\/)[^\/]*$/gm)[0];
}
function TranslateCookieHandler(val, domain) {
/* Записываем куки /язык_который_переводим/язык_на_который_переводим */
Cookies.set("googtrans", val, {
domain: document.domain,
path: '/'
});
Cookies.set("googtrans", val, {
domain: "." + document.domain,
path: '/'
});
if (domain == "undefined") return;
/* записываем куки для домена, если он назначен в конфиге */
Cookies.set("googtrans", val, {
domain: domain,
path: '/'
});
Cookies.set("googtrans", val, {
domain: "." + domain,
path: '/'
});
}
function TranslateEventHandler(event, selector, handler) {
document.addEventListener(event, function (e) {
let el = e.target.closest(selector);
if (el) handler(el);
});
}
function TranslateHtmlHandler(code) {
/* Получаем язык на который переводим и производим необходимые манипуляции с DOM */
if (document.querySelector('[data-google-lang="' + code + '"]') !== null) {
document
.querySelector('[data-google-lang="' + code + '"]')
.classList.add("language__img_active");
}
}
function TranslateMutationObserver(word, isOrigin) {
if (isOrigin) {
document.dispatchEvent(new CustomEvent("FinishTranslate"));
} else {
/* Создаем скрытый блок в который добавляем тестовое слово на оригинальном языке. Это позволит нам отследить момент когда сайт будет переведен и вызвать событие "FinishTranslate" */
let div = document.createElement('div');
div.id = 'googleTranslateTestWord';
div.innerHTML = word;
div.style.display = 'none';
document.body.prepend(div);
let observer = new MutationObserver(() => {
document.dispatchEvent(new CustomEvent("FinishTranslate"));
observer.disconnect();
});
observer.observe(div, {
childList: false,
subtree: true,
characterDataOldValue: true
});
}
}
document.addEventListener("FinishTranslate", () => {
// Тут удаляем куки
Cookies.remove("googtrans");
})