XLIFF

备注

Weblate 当前支持 XLIFF 1.2。XLIFF 2.0 不受支持且不向后兼容 XLIFF 1.2。

基于 XML 的格式,为标准化翻译文件而生,但最终它也只是这个领域的 众多标准 之一。

XML Localization Interchange File Format (XLIFF) 通常用作双语言格式,但 Weblate 也支持其作为单语言格式。

Weblate 支持数种变体的 XLIFF:

XLIFF 1.2 翻译文件

简单的 XLIFF 文件,其中元素的内容存储为纯文本(所有 XML 元素都被转义)。

`支持 placeables 的 XLIFF 1.2 `

标准 XLIFF 支持可放置对象和其他 XML 元素。

带 gettext 扩展的 XLIFF 1.2

XLIFF 使用 XLIFF 1.2 Gettext PO 表示指南 进行丰富,以支持复数。

翻译状态

文件中的 state 属性在 Weblate 中被部分处理并映射为 “Needs edit” (需要编辑)的状态(如果出现目标的话,后面的状态用于将字符串标记为需要编辑: newneeds-translationneeds-adaptationneeds-l10n )。如果应该省略 state 属性,只要 <target> 元素存在,那么字符串被认为需要翻译。

如果翻译字符串具有 approved="yes",那么它还将作为“Approved”(已核准)导入 Weblate,其他的将作为 “Waiting for review”(待审校)导入(符合 XLIFF 规范)。

当存储时,Weblate 如无必要不会添加其它属性:

  • state 属性只在字符串标记为需要编辑的情况下添加。

  • approved 属性只在字符串已审校的情况下添加。

  • 在其它情况下不添加属性,但在它们出现的情况下更新。

这意味着在使用 XLIFF 格式时,强烈推荐打开 Weblate 审校过程,以便查看和更改字符串的核准状态。

相似地在导入这样的文件时(在上传表单中),应该选择 处理需要编辑的字符串 之下的 导入为已翻译

XLIFF 中的空格和换行符

通常空格的类型和数量和在 XML 格式中的一样对待。如果想要保留,必须将 xml:space="preserve" 标记添加到字符串中。

例如:

    <trans-unit id="10" approved="yes">
        <source xml:space="preserve">hello</source>
        <target xml:space="preserve">Hello, world!
</target>
    </trans-unit>

指定翻译标记

还可以通过使用 weblate-flags 属性指定附加的翻译标记(请参见 使用标记定制行为)。Weblate 还理解来自 XLIFF 规范的 maxwidthfont 属性:

<trans-unit id="10" maxwidth="100" size-unit="pixel" font="ubuntu;22;bold">
   <source>Hello %s</source>
</trans-unit>
<trans-unit id="20" maxwidth="100" size-unit="char" weblate-flags="c-format">
   <source>Hello %s</source>
</trans-unit>

解析 font 属性用于字体集、尺寸和粗细,上面的示例显示了全部,尽管只需要字符集。字符集中的任何空格被转换为下划线,所以 Source Sans Pro 变成 Source_Sans_Pro,当命名字符集时请记住这些请参见 管理字型)。

字符串键

Weblate 通过 resname 属性(如果有的话)识别 XLIFF 文件中的单元,并会回退到 id (如果有的话,则与 file 标签一起)。

resname 属性被认为是人类友好的单元标识符,这也使其比 id 更适合 Weblate 显示。在整个 XLIFF 文件中 resname 必须是唯一的。这是 Weblate 的要求,XLIFF 标准没有涉及到这一点——它没有对此属性施加任何唯一性限制。

示例文件

示例 XLIFF 文件:

<?xml version='1.0' encoding='UTF-8'?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.1">
    <file>
        <body>
            <trans-unit weblate-flags="c-format, max-length:100">
                <source xml:space="preserve">Hello, world!
</source>
            </trans-unit>
            <trans-unit>
                <source xml:space="preserve">Orangutan has %d banana.
</source>
            </trans-unit>
            <trans-unit>
                <source xml:space="preserve">Try Weblate at &lt;https://demo.weblate.org/&gt;!
</source>
            </trans-unit>
            <trans-unit>
                <source>Thank you for using Weblate.</source>
            </trans-unit>
        </body>
    </file>
</xliff>

Weblate 配置

用于双语言 XLIFF 的典型 Weblate 部件配置

文件掩码

localizations/*.xliff

单语言译文模版语言文件

新语种的翻译模版

localizations/en-US.xliff

文件格式

XLIFF 翻译文件

用于单语言 XLIFF 的典型 Weblate 部件配置

文件掩码

localizations/*.xliff

单语言译文模版语言文件

localizations/en-US.xliff

新语种的翻译模版

localizations/en-US.xliff

文件格式

XLIFF 翻译文件