Symfony形式的捆绑包之间的翻译冲突


Translation conflict between bundles in Symfony forms

我创建了一个Symfony应用程序,我正在我的应用程序中对文本使用翻译。
我的一个捆绑包中的翻译覆盖了所有其他捆绑包,而翻译是特定于捆绑包的,我没有使用 app 级别!例如,我有这两个名为 MessagingBundle & CongratBundle 的捆绑包,Title 键在它们中定义如下:

src/ITW/CongratBundle/Resources/translations/messages.en.yml:

...
Title: Congrat Title 
...

src/ITW/MessagingBundle/Resources/translations/messages.en.yml:

...
Title: Message Title 
...

尽管如此,在MessagingBundleCongratBundle中,当我使用{{ "Title"|trans }}时,我都会Congrat Title

我正在使用Symfony 2.5.6
问题出在哪里?

摘自文档:

Symfony在下面寻找消息文件(即翻译) 地点:

应用程序/资源/翻译目录;

应用程序/资源//翻译目录;

任何捆绑包中的资源/翻译/目录。

此处以最高优先级列出的位置。那 是的,您可以在任何 前 2 个目录。

我认为这里重要的部分是选项三的任何捆绑包。看起来Symfony正在从第一个捆绑包(两个捆绑包之一)获得翻译。

我会试试这个:

  • 摆脱捆绑包中的翻译目录。
  • 创建app/Resources/CongratBundle/translations目录并添加其messages.en.yml
  • 创建app/Resources/MessagingBundle/translations目录并添加其messages.en.yml

重要提示:即使您处于开发环境中,也不要忘记清除缓存:

php app/console cache:clear

希望这能解决问题。