GNU gettext PO (Portable Object)

翻译自由软件用得最广泛的格式。

支持通过调整文件标头或链接到相应的源文件,在文件中存储上下文信息。

显示源字符串更改

如果存在 PO 文件,Weblate 可以从这些文件中提取先前的源字符串并基于此显示需要编辑字符串的字符串区别。要包含这些,必须使用 --previous 参数运行 msgmerge,由此生成的 PO 文件会包括特定的行,比如:

#, fuzzy
#| msgid "previous-untranslated-string"
msgid "untranslated-string"
msgstr "translated-string"

PO 文件标头

PO 文件的标头由 Weblate 自动维护。可选地,它可以包含 源字符串错误报告地址设置 "Language-Team" 标头

还可以用 在注释中添加贡献信息 更新标头注释来包含作者名。

换行

换行主要匹配 GNU gettext 行为。GNU gettext 的换行机制和换行所基于的 Unicode 数据都会变化,这在少数情况下可能造成差异。

可以用 po_line_wrap 参数配置换行宽度,见 文件格式参数

生成匹配的 MO 文件

如何 MO 文件和 PO 文件一起留在仓库中,那么可以用 生成 MO 文件 确保 MO 文件和 PO 文件保持同步。

从 POT 文件更新 PO 文件

可以用 更新 PO 文件以匹配 POT 文件 (msgmerge) 从 POT 文件更新 PO 文件,见 更新目标语言文件

单语 gettext

一些项目决定使用 gettext 作为单语格式 —— 它们仅在源代码中编码 ID,然后将字符串翻译成所有语言,包括英语。支持此功能,尽管在将部件导入 Weblate 时必须明确选择此文件格式。

示例文件

双语 gettext PO 文件通常如下所示:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Monday"
msgstr "Pondělí"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "Tuesday"
msgstr "Úterý"

#: weblate/accounts/avatar.py:163
msgctxt "No known user"
msgid "None"
msgstr "Žádný"

单语言的 gettext PO 文件通常如下所示:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Pondělí"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Úterý"

#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "Žádný"

基本语言文件将是:

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-monday"
msgstr "Monday"

#: weblate/media/js/bootstrap-datepicker.js:1421
msgid "day-tuesday"
msgstr "Tuesday"

#: weblate/accounts/avatar.py:163
msgid "none-user"
msgstr "None"

Weblate 配置

典型的 Weblate 双语 gettext 部件配置

文件掩码

po/*.po

单语言译文模版语言文件

新语种的翻译模版

po/messages.pot

文件格式

Gettext PO 文件

典型的 Weblate 单语 gettext 部件配置

文件掩码

po/*.po

单语言译文模版语言文件

po/en.po

新语种的翻译模版

po/messages.pot

文件格式

Gettext PO 文件(单语)

文件格式参数

po_* 模式的 文件格式参数 可用来配置 gettext 格式的行为。