前段时间,我开始翻译我正在处理的Symfony 2.1网站,使用URL中的“正确方式”/ {_locale}。现在翻译对于大多数路由工作正常,但其中一些(/ login,/ register,...)保持默认语言(在本例中为fr),因为他们没有{_locale}部分网址。
通过调试面板,我意识到实际上并未通过网址导航更改区域设置(与我相信this不同。)
然后我去there,在那里我找到了信息和链接以设置一个监听器,以便根据被调用的路径更改会话区域设置。 所有默认的语言环境声明(在config.yml和监听器本身中)都是“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>
答案 0 :(得分:0)
这里有3件事是至关重要的。
默认lang(在config
中设置)以及如果您使用可翻译的学说扩展名:
# app/config/config.yml
framework:
session: { default_locale: 'fr_FR' }
translator: { fallback: 'en' }
.....
stof_doctrine_extensions:
default_locale: 'fr_FR'
它们必须不同,因为当默认语言环境不会出现时会出现循环引用异常。
译员正在寻找带有yaml|xml|gettext
前缀的文件fr_FR
messages.fr_FR.yml
messages.en.yml
yourcatalogue.fr_FR.yml
yourcatalogue.en.yml
阅读本文了解更多详情:
Change default locale in Symfony2
http://symfony.com/doc/2.0/book/translation.html
http://0hlsson.se/2011/07/27/symfony2-and-translatable-example/