本地化文件格式

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

提示

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

自动检测

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

翻译类型功能

请参考每个单一文件格式的文档页获得哪些功能在相应格式中是受支持的信息。

双语和单语格式

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

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

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

字符串状态

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

源字符串描述

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

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

解释

字符串的 解释 可被存储并从一些文件格式被解析。

目前只在 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 中对其进行编辑。只有少数格式(XLIFF 1.1 和 1.2 和 Android 字符串资源)原生支持此功能,但可以通过添加 read-only 标记在其他格式中进行模拟,请参阅 使用标记定制行为。

支持其他格式

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

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

文件格式参数

文件格式参数提供了配置与文件格式有关的设置的方法。它们配置在部件层级并允许你自定义如何处理文件解析和序列化。

文件格式参数列表

参数名

文件格式

标签

帮助文本

csv_encoding

  • csv

  • csv-multi

文件编码

CSV 文件所用的编码

可用选项:

auto

自动检测

utf-8

UTF-8

csv_escape_formulas

  • csv

  • csv-multi

  • csv-simple

转义电子表格公式

看上去像保存 CSV 文件时带撇号电子表格公式的前缀值。

csv_simple_encoding

  • csv-simple

文件编码

简单 CSV 文件所用的编码

可用选项:

auto

自动检测

utf-8

UTF-8

iso-8859-1

ISO-8859-1

dos_eol

所有文件格式

DOS 行尾

在字符串中使用 DOS 行结束符 (rn) 而非 UNIX 行结束符 (n)。

flatxml_key_name

  • flatxml

FlatXML 键名称

flatxml_root_name

  • flatxml

FlatXML 根名称

flatxml_value_name

  • flatxml

FlatXML 值名称

gwt_encoding

  • gwt

文件编码

GWT 属性文件所用的编码

可用选项:

utf-8

UTF-8

iso-8859-1

ISO-8859-1

json_indent

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

JSON 缩进

json_indent_style

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

JSON 缩进风格

可用选项:

spaces

空格

tabs

制表符

json_sort_keys

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

对 JSON 键排序

json_use_compact_separators

  • json

  • json-nested

  • webextension

  • i18next

  • i18nextv4

  • arb

  • go-i18n-json

  • go-i18n-json-v2

  • formatjs

  • gotext

分隔符后避免空格

line_max_length

  • markdown

  • mdx

行最大长度

输出文件中每一行字符的最大数量。

md_extract_code_blocks

  • markdown

  • mdx

提取代码块

在 Markdown 和 MDX 文件中是否从代码块中提取可翻译内容。

md_extract_frontmatter

  • markdown

  • mdx

提取 front matter

在 Markdown 和 MDX 文件中是否提取并翻译 YAML front matter 块。

md_frontmatter_translate_values

  • markdown

  • mdx

翻译前言值

解析 YAML front matter 且只翻译 scalar 字符串值。将尽可能保留键、结构、注释和格式。

md_no_placeholders

  • markdown

  • mdx

禁用占位符

在 Markdown 和 MDX 文件中不检测和处理占位符。

merge_duplicates

  • markdown

  • mdx

  • html

  • txt

  • dokuwiki

  • mediawiki

  • asciidoc

去重相同字符串

整合相同源字符串到单个翻译单元。通过去除依赖位置的上下文防止文件重组或表格顺序调整期间的翻译丢失。

po_fuzzy_matching

  • po

使用模糊匹配

po_keep_previous

  • po

保持已翻译字符串先前的 msgid

控制模糊字符串先前的 msgid 注释。

po_line_wrap

  • po

  • po-mono

自动换行

默认情况下,gettext 会在每行第 77 个字符处与换行符处换行。添加 --no-wrap 参数后,换行只会在换行符处发生。

可用选项:

77

在 77 个字符和换行符处换行(xgettext 默认)

65535

只在换行符处换行(比如 xgettext --no-wrap)

-1

不换行

po_no_location

  • po

不在文件中包括位置信息

po_remove_obsolete

  • po

  • po-mono

移除陈旧字符串

保存翻译更改或自 POT 文件上传时从 PO 文件删除陈旧条目。

po_report_msgid_bugs_to

  • po

  • po-mono

报告 msgid 故障到

如果设置了源字符串故障报告地址,让 Weblate 更新 "Report-Msgid-Bugs-To" 文件标头。

po_set_language_team

  • po

  • po-mono

更新语言团队标头

让 Weblate 更新 "Language-Team" 文件标头。

po_set_last_translator

  • po

  • po-mono

更新上个译者标头

让 Weblate 更新 "Last-Translator" 文件标头。

po_set_x_generator

  • po

  • po-mono

更新 X-Generator 标头

让 Weblate 更新 "X-Generator" 文件标头。

properties_encoding

  • properties

文件编码

Java 属性文件所用编码

可用选项:

iso-8859-1

ISO-8859-1

utf-8

UTF-8

utf-16

UTF-16

strings_encoding

  • strings

文件编码

iOS 字符串文件所用的编码

可用选项:

utf-8

UTF-8

utf-16

UTF-16

xml_closing_tags

  • ts

  • plainxliff

  • xliff

  • xliff2

  • xliff2-placeables

  • poxliff

  • apple-xliff

  • resx

  • aresource

  • moko-resource

  • cmp-resource

  • tbx

包括空白 XML 标记的结束标记

yaml_indent

  • yaml

  • ruby-yaml

YAML 缩进

yaml_line_break

  • yaml

  • ruby-yaml

换行符

可用选项:

dos

DOS (\r\n)

unix

UNIX (\n)

mac

MAC (\r)

yaml_line_wrap

  • yaml

  • ruby-yaml

自动换行

可用选项:

80

在 80 个字符处换行

100

在 100 个字符处换行

120

在 120 个字符处换行

180

在 180 个字符处换行

65535

不换行