Symfony 2 - 双向翻译

Symfony 2 - Bidirectionnal translation

我必须翻译一个网页内容可以用英文或法文书写的网站。
所以我在我的翻译库中制作了两个文件:

为了解释我的问题,我举个例子,一对单词Hardware | Matériel

当使用 fr 语言环境查看页面时 Hardware 需要由 Matériel.
翻译 所以我把: Hardware: Matériel 放在我的 message.fr.yml.

当使用 en_us 或 en_gb 语言环境查看页面时 Matériel 需要由 Hardware.
翻译 所以我把: Matériel: Hardware 放在我的 message.en.yml.

此时翻译行为为:
使用 fr 语言环境查看页面时 Hardware 已正确翻译。
当使用 en_gb 语言环境查看页面时 Hardware 未正确翻译。
当使用 en_us 语言环境查看页面时 HardwareMatériel 错误翻译。

更有趣的是,如果我清除 Symfony 缓存,行为就会改变,有时一切都会被 Matériel 翻译,有时什么也不会...
一周前,我只需要将法语翻译成英语,并且仅使用 message.en.yml 文件就可以完美地工作,也许当您使用多个文件时我没有注意到一些事情要做。
谁能解释一下如何处理这种双向翻译?

使用变量。

我正在使用这样的翻译:

messages.en.yml

string.hardware: Hardware

messages.fr.yml

string.hardware: Matériel

在树枝上:

{{ "string.hardware"|trans }}

与动态变量一起使用:

string.hardware: %variable% Hardware

在树枝中的用法:

{{ "string.hardware"|trans({"%variable%": your_variable_or_string}) }}

好的,我知道我做错了什么。 对于这种情况你必须:

  • 将 : Hardware: Matériel 放入我的 message.fr.yml。 (if fr locale translate Hardwareby Matériel)
  • 将 : Matériel: Hardware 放入我的 message.en.yml。 (if en locale translate Matérielby Hardware)
  • 将 : Hardware: Hardware 放入我的 message.en.yml。 (if en locale 不翻译 Hardware)

我认为所有这一切都是因为翻译回退,我要求翻译 Hardware 所以 symfony 在 message.en.yml.first 中寻找一个(因为语言环境是 en),如果它没有找到任何东西,它在 message.fr.yml 中寻找它,在这里它找到 Hardware: Matériel 所以它使用它。
我仍然不明白为什么有时候,根据缓存,翻译在 en_gb 语言环境...

上运行良好