支持文件类型 (Strings)

.PO - gettext files (Strings)

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

文件扩展名 

.po

API 扩展 

gettext

导入 

导出 

复数形式支持 

描述支持 

格式选项

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

  • msgid_as_default

  • is_bilingual_file

.PO(可移植对象)是用于本地化的标准文件格式,使用GNUgettext,这是一个开源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"
"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 "简单的键,简单的信息,太简单了。2"

#, 模糊
msgid "unverified_key"
msgstr "我需要验证,请验证我!"(In some formats we also export this status)"

典型的gettext条目: 

# 描述(可选)
msgid "键名"
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符号来区分相同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.