支持文件类型 (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 库。使用 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 文件

  • .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 ""
"语言: 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 "我的软件项目"
这篇文章有帮助吗?

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.