2012-11-09 98 views
1

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

回答

0

三件事是至关重要的。 默认郎(在config设置好的),如果您使用翻译理论的扩展:当默认的语言环境不会去

# app/config/config.yml 
framework: 
    session:   { default_locale: 'fr_FR' } 
    translator:  { fallback: 'en' } 
..... 

stof_doctrine_extensions: 
    default_locale: 'fr_FR' 

他们必须因为循环引用例外的是不同的出现。

翻译正在寻找文件yaml|xml|gettext与sufix 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/

+0

我我没有在这里使用Doctrine翻译,大部分翻译都是通过枝条完成的。 我检查了默认值(使用Symfony 2.1,session:{default_locale:'fr_FR'}替换为default_locale:%locale%),它们都是正确的(fr)。 我也注意到,在诸如/ register或/ login这样的页面上,语言环境现在被考虑在内。 我不明白的是,为什么在语言环境和网址中都使用了英语。 –

相关问题