文件扩展名 |
.po |
API 扩展 |
gettext |
导入 |
是 |
导出 |
是 |
复数形式支持 |
是 |
描述支持 |
是 |
格式选项 |
|
.PO(可移植对象)是本地化的标准文件格式;带有GNU gettext,是一个开源的GNU库,旨在简化本地化过程。使用 GNU gettext,Localizable Strings 从原文/源语代码中提取到 PO 文件中进行翻译。.PO 文件是一系列键-值对。键 msgid
是原文/源语字符串的放置位置,而值 msgstr
是Translatation。”
gettext 将原文/源语代码中的 Strings 提取到 a=%.POT(可移植对象模板)。根据定义的区域,gettext 然后将 .POT 文件转换为特定于区域的 .PO 文件,以上传至 OrchestratorCAT 工具进行翻译。翻译完成后,gettext 会将翻译后的 PO 文件转换为最终用于本地化的 .MO 文件(机器对象文件)。
.PO 文件和 .POT 文件相同,但 .POT 文件通常由 gettext 用于生成特定区域的 .PO 文件。直接翻译 .POT 文件并根据后续目标区域重命名不会产生问题。phrase 支持翻译:
-
PO 文件
-
双语 PO 文件
-
机器可读 .MO 文件
msgctxt
将作为键前缀,与 msgid
结合,并用 ||
分隔。
格式选项
标识符 |
is_bilingual_file |
类型 |
布尔值 |
上传 |
true |
下载 |
false |
默认 |
false |
说明 |
将从上传的文件导入原文/源语和译文翻译:原文/源语内容将从 |
代码示例
msgid "" msgstr "" "语言:English\n" "MIME 版本:1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "内容传输编码:8bit\n" "复数形式: nplurals=2; plural=(n !=1);\n" "X 发电机:PhraseApp (phraseapp.com)\n" "msgid""boolean_key""" msgstr "--- true\n" msgid "empty_string_translation" msgstr "" # 这是这个键的惊人描述! msgid "key_with_description" msgstr "看看!This key has a description!(At least in some formats)" msgid "key_with_line-break" msgstr "此翻译包含\na 换行符。" msgid "nested.deeply.key" msgstr "哇,这个键嵌套的更深。"key:"哇,这个键嵌套的更深"。 msgid "nested.key" msgstr "此键嵌套在命名空间内。"key:"此键嵌套在命名空间内。" msgid "null_translation" msgstr "" msgid "pluralized_key" msgid_plural "" msgstr[0] "只找到一个复数。" msgstr[1]: "Wow, you have %s pluralizations!" "msgid""sample_collection""" "msgstr""---\n- first item\n- second item\n- third item\n" "msgid""simple_key""" msgstr "simple key, simple message, so simple.2" "Simple key, simple message, so simple.", #,模糊匹配 msgid "unverified_key" msgstr "我需要验证,请验证我!(In some formats we also export this status)"
典型的 gettext 条目:
# 描述(可选) msgid "key-name" msgstr "我的翻译"
gettext 标题
gettext 文件的标题可以包含导入过程中提取的复数形式的区域名称和数据:
msgid "" msgstr "" "语言: en\n" "MIME 版本:1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "内容传输编码:8bit\n" "复数形式: nplurals=2; plural=(n !=1);\n" "X 发电机:PhraseApp (phraseapp.com)\n"
描述
gettext 文件中的备注在导入时作为键描述添加:
# 这是我的描述 msgid "app_title" msgstr "我的软件项目"
上下文
gettext 使用 msgctxt
表示法区分同一 msgid
的不同上下文。每个键名都必须是唯一的,因此 msgctxt
被添加为键名的第一部分,由两个管道符号分隔 ||
:
msgctxt "menu" msgid“打开” msgstr "我是翻译" msgctxt "forum" msgid“打开” msgstr "我是其他翻译"
要将 msgctxt
添加到新键,请在键名之前添加:
my_context||my_key_name
结果 gettext 输出:
... msgctxt "my_context" msgid "my_key_name" ...
复数形式
gettext 支持复数形式的翻译:
msgid "new_messages" msgid_plural "" msgstr[0] "您有一条新消息" msgstr[1] “您有 %{count} 条新消息”
模糊
模糊匹配的关键词用于译员验证。模糊匹配会自动调用 app 中的未验证流程。
#,模糊匹配 msgid "app_title" msgstr "我的软件项目"