Symfony 2 - 双向翻译
Symfony 2 - Bidirectionnal translation
我必须翻译一个网页内容可以用英文或法文书写的网站。
所以我在我的翻译库中制作了两个文件:
- message.en.yml(当区域设置为 en_us 或 en_gb[=55= 时,将 法语翻译成英语 ])
- message.fr.yml(当区域设置为 fr 时,将 英语翻译成法语 )
为了解释我的问题,我举个例子,一对单词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 语言环境查看页面时 Hardware
被 Maté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 Hardware
by Matériel
)
- 将 :
Matériel: Hardware
放入我的 message.en.yml。 (if en locale translate Matériel
by 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 语言环境...
上运行良好
我必须翻译一个网页内容可以用英文或法文书写的网站。
所以我在我的翻译库中制作了两个文件:
- message.en.yml(当区域设置为 en_us 或 en_gb[=55= 时,将 法语翻译成英语 ])
- message.fr.yml(当区域设置为 fr 时,将 英语翻译成法语 )
为了解释我的问题,我举个例子,一对单词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 语言环境查看页面时 Hardware
被 Maté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 translateHardware
byMatériel
) - 将 :
Matériel: Hardware
放入我的 message.en.yml。 (if en locale translateMatériel
byHardware
) - 将 :
Hardware: Hardware
放入我的 message.en.yml。 (if en locale 不翻译Hardware
)
我认为所有这一切都是因为翻译回退,我要求翻译 Hardware
所以 symfony 在 message.en.yml.first 中寻找一个(因为语言环境是 en),如果它没有找到任何东西,它在 message.fr.yml 中寻找它,在这里它找到 Hardware: Matériel
所以它使用它。
我仍然不明白为什么有时候,根据缓存,翻译在 en_gb 语言环境...