支持的文件格式#

Weblate 支持各种各样的翻译格式。每种格式之间有略微的不同,提供不同的功能集。

提示

为您的应用程序选择文件格式时,最好在您使用的工具包/平台中保留一些支持完善的格式。这样,您的翻译人员可以额外使用他们习惯使用的任何工具,并且更有可能为您的项目作贡献。

自动检测#

Weblate 尝试在 添加翻译项目和部件 过程中检测文件格式。对于同一序列化格式的不同变体或文件编码,检测可能出错(JSON, YAML, properties),因此在创建部件前请验证 文件格式 正确无误。

翻译类型功能#

所有受支持格式的功能#

格式

语言能力 [1]

复数 [2]

描述 [3]

上下文 [4]

位置 [5]

标记 [8]

更多状态 [6]

GNU gettext PO (Portable Object)

双语

支持

支持

支持

支持

支持 [9]

需要编辑

单语 gettext

单语

支持

支持

支持

支持

支持 [9]

需要编辑

XLIFF

二者

支持

支持

支持

支持

支持

需要编辑、已核准

Java 属性

二者

不支持

支持

不支持

不支持

不支持

mi18n lang 文件

单语

不支持

支持

不支持

不支持

不支持

GWT 属性

单语

支持

支持

不支持

不支持

不支持

Joomla 翻译

单语

不支持

支持

不支持

支持

不支持

Qt Linguist .ts

二者

支持

支持

不支持

支持

支持

需要编辑

Android 字符串资源

单语

支持

支持 [7]

不支持

不支持

支持

苹果 iOS 字符串

二者

不支持

支持

不支持

不支持

不支持

PHP 字符串

单语

不支持 [10]

支持

不支持

不支持

不支持

JSON 文件

单语

不支持

不支持

不支持

不支持

不支持

i18next JSON 文件

单语

支持

不支持

不支持

不支持

不支持

go-i18n JSON 文件

单语

支持

支持

不支持

不支持

不支持

gotext JSON 文件

单语

支持

支持

不支持

支持

不支持

ARB 文件

单语

支持

支持

不支持

不支持

不支持

WebExtension JSON

单语

支持

支持

不支持

不支持

不支持

.NET 资源文件 (RESX, RESW)

单语

不支持

支持

不支持

不支持

支持

ResourceDictionary 文件

单语

不支持

不支持

不支持

不支持

支持

CSV 文件

二者

不支持

支持

支持

支持

不支持

需要编辑

YAML 文件

单语

不支持

不支持

不支持

不支持

不支持

Ruby YAML 文件

单语

支持

不支持

不支持

不支持

不支持

DTD 文件

单语

不支持

不支持

不支持

不支持

不支持

Flat XML 文件

单语

不支持

不支持

不支持

不支持

支持

Windows RC 文件

单语

不支持

支持

不支持

不支持

不支持

Excel Open XML

单语

不支持

支持

支持

支持

不支持

需要编辑

应用商店元数据文件

单语

不支持

不支持

不支持

不支持

不支持

字幕文件

单语

不支持

不支持

不支持

支持

不支持

HTML 文件

单语

不支持

不支持

不支持

不支持

不支持

Markdown 文件

单语

不支持

不支持

不支持

不支持

不支持

OpenDocument 格式

单语

不支持

不支持

不支持

不支持

不支持

IDML 格式

单语

不支持

不支持

不支持

不支持

不支持

INI 翻译

单语

不支持

不支持

不支持

不支持

不支持

Inno Setup INI 翻译

单语

不支持

不支持

不支持

不支持

不支持

TermBase eXchange 格式

双语

不支持

支持

不支持

不支持

支持

文本文件

单语

不支持

不支持

不支持

不支持

不支持

Stringsdict 格式

单语

支持

不支持

不支持

不支持

不支持

Fluent 格式

单语

不支持 [11]

支持

不支持

不支持

不支持

双语和单语格式#

支持 单语 和 双语 格式。双语格式在单个文件中存储两种语言文本——原文和译文(典型示例是 GNU gettext PO (Portable Object)XLIFF苹果 iOS 字符串 字符串)。另一方面,单语格式通过 ID 识别字符串,每个语言文件仅包含那些语言到任何给定语言(典型为 Android 字符串资源)的映射。两种变体都使用某些文件格式,请参见下面的详细说明。

为了正确使用单语文件,Weblate 需要访问一个包含要翻译的字符串及其原文的完整列表的文件——该文件在 Weblate 中被称为 单语言译文模版语言文件,尽管命名上和你的叫法可能会有所不同。

另外,可以利用 中间语言文件 扩展此工作流程,以包括开发人员提供的字符串,但不要在最终的字符串中使用。

字符串状态#

许多文件格式只区分 “未翻译” 和 “已翻译”字符串。而某些格式可以储存更精细的状态信息,比如“需要编辑”或“已批准”。

源字符串描述#

源字符串描述可用于传递要翻译的字符串的附加信息。

有几个格式原生支持向译者提供附加信息(比如,XLIFF, GNU gettext PO (Portable Object), WebExtension JSON, CSV 文件, Excel Open XML, Qt Linguist .ts, go-i18n JSON 文件, gotext JSON 文件, ARB 文件, .NET 资源文件 (RESX, RESW))。许多其他格式提取最近注释作为源字符串描述。

解释#

字符串的 :ref:`additional-explanation`可被存储并从一些文件格式被解析。

目前只在 TermBase eXchange 格式 中受支持。

源字符串位置#

字符串在源代码中的位置可能会帮助经验丰富的译者弄清楚字符串是如何使用的。

此信息通常在双语言格式中可用,这些格式中,使用工具从源代码中提取字符串。比如,GNU gettext PO (Portable Object)Qt Linguist .ts

翻译标记#

翻译标志允许自定义 Weblate 行为。某些格式支持在翻译文件中定义它们(您始终可以在 Weblate 界面中定义它们,请参阅 使用标记定制行为 )。

这个功能是以 GNU gettext PO (Portable Object) 中的标志为模型。

此外,对于所有基于 XML 的格式,标记是从非标准属性 weblate-flags 中提取的。而且还通过 XLIFF 标准中定义的 maxwidth 属性 支持了 max-length:N ,请参阅 指定翻译标记

上下文#

上下文用于区分双语格式下用于不同领域的相同字符串(例如 Sun 可以是 “Sunday” 的缩写,也可以是离我们最近的恒星的名字)。

对单语言格式,字符串标识符(常被称为 key)可以服务于相同目的,而且不需要额外的上下文。

复数字符串#

复数形式对于正确定位具有变量计数的字符串是必需的。这些规则取决于目标语言,许多格式都遵循 CLDR 规范。

提示

复数字符串也需要应用程序框架的适当支持。选择平台的原生格式,例如 GNU gettext PO (Portable Object)Android 字符串资源Stringsdict 格式

只读字符串#

翻译文件中的只读字符串将被包含在 Weblate 中,但不能在 Weblate 中对其进行编辑。只有少数格式(XLIFFAndroid 字符串资源)原生支持此功能,但可以通过添加 read-only 标记在其他格式中进行模拟,请参阅 使用标记定制行为

支持其他格式#

translate-toolkit 支持的大多数支持序列化的格式都可以轻松支持,但它们(尚未)接受任何测试。在大多数情况下,Weblate 需要一些薄层来隐藏不同 translate-toolkit 存储的行为差异。

要添加对新格式的支持,首选方法是首先在 translate-toolkit 中实现对它的支持。