Symfony2转换:忽略语言环境

时间:2012-11-09 12:06:25

标签: symfony translation symfony-2.1

前段时间,我开始翻译我正在处理的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>

1 个答案:

答案 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/