Цитата:
Попробовать взять новую версию и вручную ее запихнуть. |
файл mootools-core.js был в одну строку, начал переносить строки и сайт начал автоматически переводить сайт на Казахский. Начали появятся ошибки в консоли. Сейчас перенесу все строки посмотрим что покажет.
Цитата:
|
Цитата:
Цитата:
|
Чистил и в браузере и кэш на сайте
|
Тут вот на что я обратил внимание. Если посмотреть на сайт, который работает (_https://studio-it.kz/), то там устанавливается два кука
googtrans /ru/kk для studio-it.kz googtrans /ru/kk для .studio-it.kz А для _https://update.lik-astana.kz/ три googtrans /ru/kk для .update.lik-astana.kz googtrans /ru/en для update.lik-astana.kz googtrans /ru/en для .lik-astana.kz Причем с разными значениями Тут уже надо разбираться и экспериментировать. Файл google-translate.js строки 23-25 /* Если скрипт не работает или работает неправильно, раскомментируйте и укажите основной домен в свойстве domain */ /* If the script does not work or does not work correctly, uncomment and specify the main domain in the domain property */ // domain: "Get-Web.Site" Я, честно говоря, не очень понимаю, что там должно стоять. Можно попробовать раскомментировать и поставить туда domain: "lik-astana.kz" Еще в этом файле меня очень смущает строка 103 if (domain == "undefined") return; Я не могу ее объяснить. Либо попробовать ее исправить на if (typeof domain == "undefined") return; (при этом закомментировать строку 25) Или попытаться в строку 25 написать domain: "undefined" |
Может можно как-то после отработки скрипта чистить куки googtrans
|
Цитата:
В файле google-translate.js строки 15-17, раскомментариваем и ставим какое-нибудь слово, например /* Если хотите подписаться на событие "FinishTranslate" (Момент когда скрипт закончил перевод), расскоментируйте и добавьте любое проверочное слово на оригинальном языке */ /* If you want to subscribe to the "FinishTranslate" event (The moment when the script finished translating), uncomment and add any test word in the original language */ testWord: "Кошка", Затем ставим обработчик события "FinishTranslate"
<script>
document.addEventListener("FinishTranslate", () => {
// Тут удаляем куки
Cookies.remove("googtrans");
})
</script>
Только наверно надо удалять все куки с путями, как их устанавливали в google-translate.js (строки 94-114). Пробовать надо. Я мог попробовать только на простейшем примере. |
так не срабатывает
|
Цитата:
document.addEventListener("FinishTranslate", () => {
// Тут удаляем куки
Cookies.remove("googtrans");
})
Это срабатывает? Слово в testWord: "Кошка", лучше ставить русское, что бы она его переводила. Хотя событие вроде и так посылает. Правда где оно у вас ловится, я не нашел. |
Вот так не срабатывает
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");
})
|
| Часовой пояс GMT +3, время: 20:30. |