Почему Symfony игнорирует настройку локали браузера (HTTP-запрос Accept-Language Header)?
В настоящее время я пытаюсь включить переводчик в Symfony 2.0. Symfony игнорирует переменную заголовка Accept-Language и использует default_locale (и когда это не определено как запасной вариант).
Мой запрос выглядит так:
Accept-Language de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3
но $this->getRequest()->getLocale();
получает меня en
с тем же запросом.
Может кто-нибудь сказать мне, что может быть не так?
Да, я попытался очистить кеш и удалить мои куки (омномном):)
1 ответ
Это ожидаемое поведение. Symfony по умолчанию не использует заголовок Accept Language и вместо этого полагается на конфигурацию Symfony для настроек локали. На самом деле, рекомендуется не использовать один и тот же URL для контента в разных локалях, см. Этот документ:
Symfony 2 The Book - Переводы - Локаль и URL
Но если вы хотите игнорировать этот совет и использовать заголовок языка Accept, вы можете сделать это с помощью этого кода в вашем контроллере:
$request = $this->getRequest();
$session = $this->get('session');
$session->setLocale($request->getPreferredLanguage(array('de', 'en')));