我目前正在尝试在 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) :)
最佳答案
这是预期的行为。 Symfony 默认不使用 Accept Language header ,而是依赖 symfony 配置进行区域设置。实际上,建议不要对不同语言环境的内容使用相同的 URL,请参阅此文档:
Symfony 2 The Book - Translations - The Locale and the URL
但是,如果您想忽略此建议并使用 Accept 语言 header ,您可以在 Controller 中使用以下代码:
$request = $this->getRequest();
$session = $this->get('session');
$session->setLocale($request->getPreferredLanguage(array('de', 'en')));
关于symfony - 为什么 Symfony 会忽略浏览器的区域设置(HTTP-Request Accept-Language Header)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12140162/