|
文件扩展名 |
.PO |
|
API 扩展 |
gettext |
|
导入 |
是 |
|
导出 |
是 |
|
复数形式支持 |
是 |
|
描述支持 |
是 |
|
格式选项 这些选项可以在上传和/或下载文件时指定。根据上传/下载方法(API、CLI、Repo 同步等),它们可以在查询参数 |
|
.PO (Portable Object) 是使用 GNU gettext 进行本地化的标准文件格式,这是一个旨在简化本地化过程的开源 GNU 库。使用 GNU gettext,可本地化的 Strings 会从源代码中提取到 PO 文件中进行翻译。.PO 文件是一系列键值对。键 msgid 是放置原文/源语字符串的地方,而值 msgstr 是放置翻译的地方。
gettext 将字符串从源代码提取到 .POT(便携式对象模板)中。根据定义的区域,gettext 然后将 .POT 文件转换为特定于区域的 .PO 文件,以便上传到 CAT 工具进行翻译。翻译后,gettext 将翻译后的 .PO 文件转换为最终用于本地化的 .MO 文件(机器对象文件)。
.PO 文件与 .POT 文件相同,只是 .POT 文件通常由 gettext 用于生成特定于区域的 .PO 文件。直接翻译 .POT 文件并根据后续预期的区域对其重命名不会产生问题。Phrase 支持翻译:
-
.PO 文件
-
双语 .PO 文件
-
机器可读的 .MO 文件
msgctxt 将用作键前缀,与 msgid 组合并由 || 分隔。
格式选项
|
标识符 |
is_bilingual_file |
|
类型 |
布尔值 |
|
上传 |
true |
|
下载 |
false |
|
默认 |
false |
|
说明 |
原文内容和译文内容都将从上传的文件中导入:原文内容将从 |
代码示例
msgid \"\" msgstr "" \"Language: Chinese\\n\" "MIME-Version: 1.0\n" \"Content-Type: text/plain; charset=UTF-8\\n\" \"Content-Transfer-Encoding: 8bit\\n\" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: 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 \"此译文包含\n换行符。\" msgid \"nested.deeply.key\" msgstr \"哇,此键嵌套得更深。\" msgid \"nested.key\" msgstr \"此键嵌套在命名空间内。\" msgid "null_translation" msgstr "" msgid \"pluralized_key\" msgid_plural "" msgstr[0] \"仅找到一个复数形式。\" msgstr[1] \"哇,你有 %s 个复数形式!\" msgid "sample_collection" msgstr \"---\n- 第一条目\n- 第二条目\n- 第三条目\n\" msgid "simple_key" msgstr "simple key, simple message, so simple.2" #, 模糊匹配 msgid "unverified_key" msgstr "我需要验证,请验证我!"(In some formats we also export this status)"
典型的 gettext 条目:
# 描述(可选) msgid "key-name" msgstr "我的翻译"
gettext 标头
gettext 文件的标头可能包含区域名称和在导入期间提取的复数形式数据:
msgid \"\" msgstr "" "语言: en\n" "MIME-Version: 1.0\n" \"Content-Type: text/plain; charset=UTF-8\\n\" \"Content-Transfer-Encoding: 8bit\\n\" "Plural-Forms: nplurals=2; plural=(n != 1);\n" "X-Generator: PhraseApp (phraseapp.com)\n"
描述
gettext 文件中的注释在导入期间被添加为键描述:
# 这是我的描述 msgid "app_title" msgstr "我的软件项目"
上下文
gettext 使用 msgctxt 符号来区分相同 键 的不同上下文。每个键名称必须是唯一的,因此 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] "您有一条新消息"}}}-end-of-json-content--16777216-
msgstr[1] "您有 %{count} 条新消息"
模糊匹配
模糊匹配 关键字用于翻译验证。模糊匹配 会自动在 Phrase 中调用未验证流程。
#, 模糊匹配 msgid "app_title" msgstr "我的软件项目"