【问题标题】:Symfony2 Translations with XLIFF / XLF Best PracticesSymfony2 翻译与 XLIFF / XLF 最佳实践
【发布时间】:2025-11-30 14:50:01
【问题描述】:

我已经开始使用 Symfony2 中的翻译系统了。

一切都很好。

但是,在从 twig 视图文件中引用源/目标字符串时,我有一个关于最佳实践的问题。

鉴于此:

<?xml version="1.0"?>
<xliff version="1.2" xmlns="urn:oasis:names:tc:xliff:document:1.2">
    <file source-language="en" datatype="plaintext" original="file.ext">
    <body>
        <trans-unit id="1">
            <source>Short String</source>
            <target>Short String</target>
        </trans-unit>

        <trans-unit id="2">
            <source>Some really long string for example a paragraph about some random thing that is likely to change in the future</source>
            <target>Some really long string for example a paragraph about some random thing that is likely to change in the future</target>
        </trans-unit>       

    </body>
    </file>
</xliff>

使用like没有问题:

{% trans_default_domain 'messages' %}

<h3>{{ 'Multicoin Cryptocurrency Online Wallet' | trans }}</h3>

<p>{{ 'Some really long string for example a paragraph about some random thing that is likely to change in the future' | trans }}</p>

我知道您可以在源代码部分使用简短的源代码引用,例如:

<trans-unit id="2">
            <source>page.long.paragraph</source>
            <target>Some really long string for example a paragraph about some random thing that is likely to change in the future</target>
</trans-unit> 

这使得树枝部分更干净:

{% trans_default_domain 'messages' %}

<h3>{{ 'Multicoin Cryptocurrency Online Wallet' | trans }}</h3>

<p>{{ 'page.long.paragraph' | trans }}</p>

问题是,如果我想将原始 en 翻译文件提供给翻译人员以翻译成另一种语言,那么将需要在现场翻译的整个字符串会好得多。然而,这使得树枝代码相当凌乱。是否有另一种方法来引用 twig 中的翻译字符串而不必使用整个源字符串?

【问题讨论】:

    标签: symfony translation xliff


    【解决方案1】:

    不,您只有 2 个选项:真实消息或关键字消息。

    是的,如果您要添加一种新语言,关键字消息就不会那么容易。 Xliff 并没有很好的支持它。这就是您在使用 Xliff 文件时看到正在使用的真实消息的原因。

    【讨论】:

    • 谢谢 - 我已在 中添加真正的源字符串,其中源代码过长,并在 中使用关键字。
    • 我建议只使用一种类型的消息,所以在任何地方都使用关键字消息(这意味着对于长字符串和短字符串)
    • 不敢相信 Symfony 正在以这种愚蠢的方式滥用 XLF 文件。他们为什么不按照它应该使用的方式使用它呢?检查源文件中是否存在ID,并在翻译文件中找到对应的ID?这完全破坏了 XLF 文件对翻译人员的好处,如果我们使用另一种方式,我们最终会在 100 个地方(控制器、Twig 等)获得翻译,或者我们为“开发人员”创建第三种语言你知道是否有任何请求改变这种行为?