gre*_*emo 11 translation localization symfony
在关于翻译的 Symfony2指南之后,我发现从http标头(存储在$this->get('session')->getLocale())中的推断区域设置是错误的(发送它,推断en):
主机localhost用户代理Mozilla/5.0(Windows NT 6.1; WOW64; rv:7.0.1)Gecko/20100101 Firefox/7.0.1接受text/html,application/xhtml + xml,application/xml; q = 0.9,/ ; q = 0.8 Accept-Language it-it,it; q = 0.8,en-us; q = 0.5,en; q = 0.3
这是正常行为吗?或者我应该设置一些东西,以使本地化开箱即用?
我今天更仔细地研究了代码,因为我遇到了和你一样的问题,而且看起来语言来自于Session::getLocale().但Symfony2从不调用Session::setLocale(),并设置对象的locale成员Session.谷歌搜索"symfony2 session setlocale"会导致文档的这个§
所以我最终将这一行放在我正在处理的控制器之上,并且它有效:
$this->getRequest()->getSession()->setLocale(
$this->getRequest()->getPreferredLanguage());
Run Code Online (Sandbox Code Playgroud)
现在我想这是不可接受的,因为你不会在每个控制器的顶部添加它.此外,这不应该针对每个请求执行,只应在第一个请求时完成,此时用户还没有会话.如果有人知道如何做到这一点随时编辑这个答案.
| 归档时间: |
|
| 查看次数: |
13388 次 |
| 最近记录: |