【发布时间】:2015-09-11 09:25:25
【问题描述】:
我一直在尝试为此寻找解决方案,但没有找到适合我的答案。基本上我想要的是 Symfony2 中使用 twig 和服务lingohub 的性别特定翻译。
我们的英文翻译文件(XLIFF 格式)如下所示:
<trans-unit id="1234" resname="some_key">
<source xml:lang="en">My text goes here </source>
<target xml:lang="en">My text goes here </target>
</trans-unit>
对于另一种语言,它看起来像这样:
<trans-unit id="2345" resname="some_key">
<source xml:lang="en">My text goes here </source>
<target xml:lang="es">My text in Spanish goes here</target>
</trans-unit>
我现在想要的是针对特定性别的翻译。 我很想使用 transchoice 并使用我文件中的翻译
在Symfony doc我只能找到静态文本的例子。
问题是我必须在 twig 中放入什么以及在翻译文件中放入什么?
我尝试将选项放在 twig 中,但它根本无法翻译。 我还尝试将一个键和选项放在翻译文件中,但这也不起作用。它总是选择第二个选项并按原样打印文本(包括女性的 {f})
我想要的是这样的:
{% transchoice gender with {'%lastname%': user.lastname} %}
{f} key_for_female |{m} key_for_male | {u} key_for_unknown
{% endtranschoice %}
这将被替换为类似的翻译
<trans-unit id="1234" resname="key_for_female">
<source xml:lang="en">Hello Ms %lastname% </source>
<target xml:lang="en">Hello Ms %lastname% </target>
</trans-unit>
所以输出最后是“Hello Ms Doe”。什么是正确的语法? ;)
【问题讨论】:
-
也许捆绑包可以提供帮助:github.com/webfactory/icu-translation-bundle
-
我找到了一个使用普通翻译的简单解决方法。我在 twig 中使用来自我们已经拥有的不同跨域的现有密钥定义了一个新变量,并使用了这个变量。示例:{% set salutation = (user.gender) |反式({},'user_gender')%}; user_gender 在此是被翻译为正常的键(例如,“f”将解析为 Ms)。
-
很好,做出回答并接受它以帮助他人。
标签: symfony twig translation