为什么Symfony会忽略浏览器区域设置(HTTP-Request Accept-Language Header)?

时间:2012-08-27 10:22:34

标签: symfony locale http-accept-language

我目前正在尝试在Symfony 2.0中启用翻译器。 Symfony忽略了Accept-Language Header变量并使用了default_locale(当没有定义回退时)。

我的请求如下:

Accept-Language de-DE,de;q=0.8,en-us;q=0.5,en;q=0.3

$this->getRequest()->getLocale();使用同一请求获取en

有人可以告诉我可能出现的问题吗?

是的,我试图清除缓存并删除我的cookie(omnomnom):)

1 个答案:

答案 0 :(得分:20)

这是预期的行为。 Symfony默认情况下不使用Accept Language标头,而是依赖于symfony配置进行区域设置。实际上,建议不要对不同语言环境中的内容使用相同的URL,请参阅此文档:

Symfony 2 The Book - Translations - The Locale and the URL

但是如果你想忽略这个建议并使用Accept语言标题,你可以在你的控制器中使用这个代码:

$request = $this->getRequest();
$session = $this->get('session');

$session->setLocale($request->getPreferredLanguage(array('de', 'en')));