我必须翻译一个网页,其中的网页内容可以用英文或法文写成。
所以我在翻译库中制作了两个文件:
为了解释我的问题,我将举一个例子,即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文件就可以完美地工作,也许有些事情要做,我在使用多个文件时没有注意到。
有人可以解释我如何处理这种双向翻译吗?
答案 0 :(得分:1)
使用变量。
我正在使用这样的翻译:
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}) }}
答案 1 :(得分:0)
好的,我理解我做错了什么。 对于这种情况,你必须:
Hardware: Matériel
。 (如果fr locale通过Hardware
翻译Matériel
)Matériel: Hardware
。 (如果en locale通过Matériel
翻译Hardware
)Hardware: Hardware
。 (如果语言环境不翻译 Hardware
)我认为所有这一切都是因为翻译后备,我要求翻译Hardware
所以symfony在message.en.yml.first中查找一个(因为语言环境是en),如果它是doens& #39; t find any,它在message.fr.yml中找到它,在这里找到Hardware: Matériel
所以它使用它。
我仍然不知道为什么有时候,根据缓存,翻译在en_gb语言环境中正常工作......