1

前段时间,我开始翻译我正在处理的 Symfony 2.1 网站,使用 URL 中通过 /{ _locale } 的“正确方式”。现在翻译对大多数路线都很好,但其中一些(/login、/register、...)一直使用默认语言(在本例中为 fr),因为它们的 { _locale } 部分没有网址。

通过调试面板,我意识到区域设置实际上并没有通过 url 导航更改(不像让我相信)。

于是我去了那里,在那里我找到了设置监听器的信息和链接,以便根据调用的路径更改会话区域设置。所有默认语言环境声明(在 config.yml 和侦听器本身中)都是“fr”。

当我切换语言时,我实际上可以在调试面板上看到会话区域设置发生了变化。然而,翻译似乎被破坏了:每个翻译位都是用英语制作的,即使默认语言是法语,尽管会话区域设置是“fr”。

那是从哪里来的?我该如何解决?

提前致谢。

更多技术信息:

路由.yml:

AuraeLCUserBundle:
    resource: "@AuraeLCUserBundle/Resources/config/routing.yml"
    prefix: /{_locale}/
    defaults: { _locale: fr }
    requirements:
        _locale: en|fr

树枝示例:

<p>{{ 'layout.greeting.welcome'|trans({}, 'AuraeLCUserBundle') }}</p>
4

1 回答 1

0

这里有 3 件事很关键。默认语言(设置在 中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_FRex 的文件:

messages.fr_FR.yml
messages.en.yml
yourcatalogue.fr_FR.yml
yourcatalogue.en.yml

阅读本文了解更多详情:

更改 Symfony2 中的默认语言环境

http://symfony.com/doc/2.0/book/translation.html

http://0hlsson.se/2011/07/27/symfony2-and-translatable-example/

于 2012-11-09T12:20:07.210 回答