Метод определения языка "Браузер" не работает, если я проверяю "Страницы кэша для анонимных пользователей"
У меня активированы два метода обнаружения в следующем порядке:
1-URL
2- Браузер
Проблема в том, что метод "Браузер" вообще не работает, если установлен флажок "Кэшировать страницы для анонимных пользователей" в разделе "администратор/конфигурация/разработка/производительность". Язык по умолчанию загружается постоянно, независимо от языка браузера.
Все будет нормально, если я сниму флажок "Кэшировать страницы для анонимных пользователей".
См. захваты.
2 answers
Вы видели и пробовали:
Https://stackoverflow.com/questions/22792062/drupal-7-always-redirecting-to-default-language
Возможно, на вас повлияла ошибка в ядре Drupal. Некоторое время у меня была та же проблема , и я, наконец, нашел причину и обходной путь для нее.
Это звучит так:
Добавьте этот код в пользовательский модуль (измените "mymodule" на имя ваших модулей):
/** * Implements hook_language_negotiation_info_alter(). * * Remove the 'cache' setting from LOCALE_LANGUAGE_NEGOTIATION_BROWSER since * the code that utilizes this setting will in fact prevent browser negotiation. */ function mymodule_language_negotiation_info_alter(&$negotiation_info) { unset($negotiation_info[LOCALE_LANGUAGE_NEGOTIATION_BROWSER]['cache']); }
Очистить все тайники (например, "drush cc все")
Перейдите в раздел admin/config/regional/language/configure и нажмите "Сохранить настройки" один раз (это приведет к перестройке переменной "language_negotiation_language").
Теперь определение языка браузера должно работать правильно.
Я также ищу реальное решение, но это требует изменений в ядре и, возможно, некоторого обсуждения заранее из-за характера ошибки. Я открыл проблему здесь: Определение языка браузера для анонимные запросы нарушены
Теперь есть патч от Бердира
Вам нужно написать пользовательский модуль, чтобы отменить настройку местных языков, тогда это решит вашу проблему