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

标签 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) :)

最佳答案

这是预期的行为。 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/

相关文章:

php - Laravel 迁移 - 删除列

Java:sv 和 sv_SE 语言环境有什么区别?

android - 获取用户所在国家/地区的可靠方法?

postgresql - 在函数postgres中分配参数

java - 在 Java 中解析 A​​ccept-Language header

javascript - Symfony2 + NodeJS + AngularJS?

php - 符号复杂的环境变量

Symfony2预定义参数

redirect - Varnish 重定向基于浏览器语言设置

django - 如何将全局 header 参数添加到 drf_spectaulous 中的所有 url 路径?