18

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

4

1 回答 1

26

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

Symfony 2 本书 - 翻译 - 语言环境和 URL

但是,如果您想忽略此建议并使用 Accept 语言标头,则可以在控制器中使用以下代码:

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

$session->setLocale($request->getPreferredLanguage(array('de', 'en')));
于 2012-08-27T10:36:50.460 回答