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