前段时间,我开始翻译我正在处理的Symfony 2.1网站,在URL中使用/ {_locale}中的“正确方法”。现在,大多数路由的翻译工作正常,但其中一些(/ login,/ register,...)保持采用默认语言(本例中为fr),因为它们中没有{_locale}部分网址。Symfony2翻译:语言环境被忽略
通过调试面板,我意识到该区域设置实际上没有通过网址导航进行更改(不像this让我相信)。
所以我去了there,在那里我找到了信息和链接来建立一个监听器,以便改变被调用路径的会话区域设置。 所有默认的语言环境声明(config.yml和listener本身)都是“fr”。
当我切换语言时,实际上可以在调试面板上看到会话区域设置发生更改。然而,翻译似乎已被打破:尽管默认语言是法语,并且尽管会话区域设置为“fr”,但每个翻译位都是用英语制作的。
从哪里来?我该如何解决它?
在此先感谢。
的更多技术信息:
的routing.yml:
AuraeLCUserBundle:
resource: "@AuraeLCUserBundle/Resources/config/routing.yml"
prefix: /{_locale}/
defaults: { _locale: fr }
requirements:
_locale: en|fr
树枝例如:这里
<p>{{ 'layout.greeting.welcome'|trans({}, 'AuraeLCUserBundle') }}</p>
我我没有在这里使用Doctrine翻译,大部分翻译都是通过枝条完成的。 我检查了默认值(使用Symfony 2.1,session:{default_locale:'fr_FR'}替换为default_locale:%locale%),它们都是正确的(fr)。 我也注意到,在诸如/ register或/ login这样的页面上,语言环境现在被考虑在内。 我不明白的是,为什么在语言环境和网址中都使用了英语。 –