为什么Symfony的忽略浏览器的语言环境设置(HTTP请求的Accept-Language头)?(

2019-07-31 04:46发布

目前,我试图启用的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与同样的要求。

有人能告诉我可能是错的?

是的,我曾尝试以清除缓存并删除了我的饼干(omnomnom):)

Answer 1:

这是预期的行为。 Symfony的默认不使用接受语言头,而是依赖于对区域设置symfony的配置。 事实上,它是建议不要使用相同的网址不同地区的内容,请参阅本文档:

Symfony的2书-翻译-区域设置和URL

但是,如果你想忽略这个建议,并使用接受语言头,你可以用这个代码在你的控制器做到这一点:

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

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


文章来源: Why does Symfony ignore the browsers locale-setting (HTTP-Request Accept-Language Header)?