支持文件类型 (Strings)

.PO - gettext 文件 (字符串)

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

文件扩展名 

.po

API 扩展 

gettext

导入 

导出 

复数形式支持 

描述支持 

格式选项

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

  • msgid_as_default

  • is_bilingual_file

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

gettext 从源代码提取字符串到 .POT (可移植对象模板) 中。根据定义的区域,gettext 然后将 .POT 文件转换为特定区域的 .PO 文件,以便上传到 CAT 工具进行翻译。翻译后,gettext 将翻译后的 .PO 文件转换为 .MO 文件 (机器对象文件),最终用于本地化。

.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 ""
"语言: 英语\n"
"MIME-Version: 1.0\n"
"内容类型: text/plain; charset=UTF-8\n"
"内容传输编码: 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 "看看吧!"这个键有一个描述!(至少在某些格式中)"

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 "简单的键,简单的信息,如此简单。2"

#, 模糊
msgid "unverified_key"
msgstr "我需要验证,请验证我!"(在某些格式中,我们也导出此状态)"

典型的gettext条目: 

# 描述(可选)
msgid "key-name"
msgstr "我的翻译"

gettext头部

gettext文件的头部可能包含区域名称和在导入期间提取的复数形式的数据:

msgid ""
msgstr ""
"语言:en\n"
"MIME-Version: 1.0\n"
"内容类型: text/plain; charset=UTF-8\n"
"内容传输编码: 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 "新消息"
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.