PBG Community

Присоединяйтесь к PBG Community

Современный движок для серверов Counter-Strike 1.6: панель управления, магазин, статистика и модули — всё в одном месте. Регистрируйтесь, чтобы скачивать сборки, получать обновления и задавать вопросы разработчикам.

  • Движок и модули
  • Регулярные обновления
  • Поддержка сообщества
Launge — PBGcms

Launge — PBGcms 2.0.0

Нет прав для скачивания
  • Автор темы Автор темы Root
  • Дата начала Дата начала

Root

Команда форума
Разработчик
VIP FULL
  • Не могу остановиться!
  • Снова и снова возвращаетесь
  • Кому-то вы нравитесь.
  • Первое сообщение
Регистрация
22 Авг 2026
Сообщения
138
Root разместил(а) новый ресурс:

Launge — PBGcms - Современный модуль для PBGcms, предназначенный для создания мультиязычного сайта

Launge — современный модуль для PBGcms, предназначенный для создания мультиязычного сайта. Модуль позволяет добавлять новые языки, управлять переводами и предоставляет удобный кастомный виджет для переключения языка на вашем сайте.

Основные возможности

  • Добавление новых языков для сайта.
  • Управление доступными языками через административную панель.
  • Кастомный виджет переключения...

Посмотреть страницу этого ресурса...
 
Проблема с переключением с любого языка на русский.

При переключении на не-дефолтный язык вы программно дёргаете select.goog-te-combo (triggerGoogleCombo → синтетический change). Этот change долетает до внутреннего обработчика самого Google Translate — а он сам пишет свою cookie googtrans, и делает это с доменом через точку (.hostname) — это его собственное, недокументированное, но давно известное поведение. Поэтому после forward-переключения на странице оказываются две куки с одинаковым новым значением: ваша (host-only) и гугловская (с точкой).

Когда вы кликаете на ru (дефолт), ваш код (setStoredLang + PHP switch_lang) чистит только host-only куку (без domain=). Кука Google (.domen) остаётся лежать с прежним значением — её никто не трогает.

Дальше происходит location.reload(). На новой загрузке страницы снова отрабатывает bindWidget(), который вызывает getStoredLang(defaultLang). localStorage уже пуст, поэтому функция идёт читать document.cookie — и находит выжившую гугловскую куку со старым языком. Она парсит из неё код (например uk), видит, что он не равен ru, и сама заново запускает loadGoogleTranslate + triggerGoogleCombo('uk') — то есть заново включает старый перевод, хотя вы только что кликнули "вернуть оригинал".

То есть проблема не в рассинхроне между кук, а в том, что ваш собственный код после релоада заново читает уцелевшую куку Google и сам переводит страницу обратно — самим этим циклом.

-----------------------------------

При возврате на ru удаляется только host-only googtrans, а domain-cookie Google остаётся. После reload твой getStoredLang() воспринимает оставшуюся cookie как сохранённый выбранный язык и повторно запускает перевод.
 
Root обновил ресурс Launge — PBGcms новой записью:

2.0.0

Исправлены ошибки
(ajax.js) — раньше стирала куку только host-only. Теперь дополнительно чистит её под domain=hostname, domain=.hostname и родительскими доменами покрывает вариант, который сам ставит Google Translate.
(actions.php) — та же проблема на серверной стороне: setrawcookie без domain тоже не трогал гугловскую .domain-версию. Добавили явный сброс с $host и .$host.
защитный второй рубеж — добавили флаг pbgame_launge_explicit_default в localStorage. Он взводится при явном...

Посмотреть подробности об этом обновлении...
 
Назад
Сверху