Рейтинг:2

Лак на многоязычном сайте

флаг uy

У меня есть многоязычный сайт, где я использую в большинстве своих пользовательских модулей (файлы .module) и в файле mycustomtheme.theme следующие строки кода: \Drupal::languageManager()->getCurrentLanguage()->getId();

\Drupal::service('domain.negotiator')->getActiveId(); Я хочу установить Varnish на свой сайт, и я знаю, что могу указать некоторые URL-адреса, которые не будут кэшироваться, например, я указал путь пользовательского контроллера, где \Drupal::languageManager()->getCurrentLanguage()->getId(); используется, чтобы страница, связанная с этим контроллером, не кэшировалась. Однако я не знаю, что делать со всеми файлами .module, в которых я использовал эту строку кода. Эта функция ->getCurrentLanguage()->getId(); есть определенный путь, чтобы я мог указать его путь для игнорирования лаком? PS: это важно, потому что некоторые функции различаются от одного пользователя к другому в зависимости от языка веб-сайта.

Рейтинг:2
флаг cn

Для анонимного трафика не получить текущий язык () -> получить идентификатор () проблема, это метод определения языка. На основе браузера не рекомендуется.Для производительности кеша лучше перенаправить на метод определения языка на основе пути после того, как вы определили язык браузера, например, с помощью модуля перенаправить. Для этого вам необходимо настроить языковой префикс для всех языков.

флаг uy
Спасибо за ваш ответ.не могли бы вы немного уточнить? В основном я использую это выражение не для перенаправления пользователя, а просто для определения его языка. У меня уже есть языковой префикс, например /fr для французского. но в моем customtheme.theme я использую его, например, в hook_page_attachments_alter или в пользовательском модуле для отправки определенного блока на основе языка веб-сайта. Я часто использую его, и я боюсь, что если страница кэшируется, все пользователи увидят один и тот же блок на том же языке.
4uk4 avatar
флаг cn
Как говорится проблема не в этом. Все на странице Drupal переводимо, не имеет значения, если вы добавите еще один переводимый блок. Конечно, вы не можете перенаправить с хука или блока. Вам нужен подписчик событий. Модуль Redirect был бы решением без кода, потому что у него уже есть подписчик событий, перенаправляющий на канонический путь страницы. Это включает префикс языка. Префикс должен быть настроен для всех языков, а также для языка сайта по умолчанию, а приоритет в списке обнаружения должен быть выше, чем обнаружение браузером.

Ответить или комментировать

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