支持文件类型 (Strings)

.PO - gettext 文件 (Strings)

文本由 Phrase Language AI 从英语机器翻译而得。

文件扩展名 

.PO

API 扩展 

gettext

导入 

导出 

复数形式支持 

描述支持 

格式选项

这些选项可以在上传和/或下载文件时指定。根据上传/下载方法(API、CLI、Repo 同步等),它们可以在查询参数 上传下载phrase.yml 配置文件中指定。

  • msgid_as_default

  • is_bilingual_file

.PO (Portable Object) 是 GNU gettext 本地化的标准文件格式,GNU gettext 是一个旨在简化本地化流程的开源 GNU 库。使用 GNU gettext,可本地化的 Strings 会从源代码中提取到 PO 文件中进行翻译。.PO 文件是一系列键值对。键 msgid 是放置原文/源语字符串的地方,而值 msgstr 是放置翻译的地方。

gettext 将字符串从源代码提取到 .POT (Portable Object 模板) 中。基于定义的区域,gettext 随后将 .POT 文件转换为特定于区域的 .PO 文件,以便上传到 CAT 工具进行翻译。翻译完成后,gettext 会将翻译后的 .PO 文件转换为最终用于本地化的 .MO 文件 (Machine Object 文件)。

.PO 文件与 .POT 文件相同,只是 .POT 文件通常由 gettext 用于生成特定于区域的 .PO 文件。直接翻译 .POT 文件并根据后续预期的区域对其重命名不会产生问题。Phrase 支持翻译:

  • .PO 文件

  • 双语 .PO 文件

  • .POT 文件 

  • 机器可读的 .MO 文件

msgctxt 将用作键前缀,与 msgid 组合并由 || 分隔。 

格式选项

标识符

msgid_as_default

类型

布尔值

上传

true

下载

false

默认

false

说明

msgid 值而非 msgstr 获取译文内容

标识符

is_bilingual_file

类型

布尔值

上传

true

下载

false

默认

false

说明

原文和译文都将从上传的文件中导入:原文内容将从 msgid 值中提取,译文从 msgstr 的值中提取

代码示例

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 ""
"Language: 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 符号来区分相同 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} 条新消息\"

模糊匹配

模糊匹配 关键字用于翻译验证。模糊匹配 会自动在 Phrase 中调用未验证流程。

#, 模糊匹配
msgid "app_title"
msgstr "我的软件项目"
这篇文章有帮助吗?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.