我目前正在尝试在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):)
答案 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')));