PO/Gettext 翻译
目标语言: zh-Hans-CN (Chinese, Simplified Chinese, China)
目标语言的代码。例如:zh, zh-CN, fil,zh-Hans-CN。输入以搜索。
翻译元数据:
指示是否在翻译消息字符串的同时翻译 PO 文件元数据(如译者注释和标题字段)。禁用此选项可确保元数据在翻译后的输出中保持不变。
使用缩写:
指示是否使用语法缩写。使用缩写会使翻译不那么正式。
使用简化:
指示是否在翻译比源文本长时使用简化形式。
术语:
PO 源内容:
AI 翻译需要时间(最多 5 分钟),因为 AI 需要处理您的内容。此 PO 翻译页面实时翻译,不会在我们的服务器上存储您的内容。对于大型 PO 文件,我们建议使用 I18N 文件翻译 页面以获得更可靠的交付。在翻译完成前,请勿离开此页面。

如何在线翻译 PO/Gettext 文件

使用我们基于 AI 的服务翻译 PO (Portable Object) 文件既快速又准确。请按照以下步骤翻译您的 gettext 本地化内容,同时保留 PO 格式结构。

  1. 粘贴您的 PO 内容: 在“PO 源内容”部分,粘贴您的 PO 或 POT 文件内容。我们的服务可识别标准 PO 格式,包括 msgid、msgstr、注释、复数形式和上下文条目。
  2. 设置目标语言: 输入目标语言代码(例如,'fr-FR' 代表法语,'de-DE' 代表德语)进行翻译。
  3. 开始翻译: 点击“翻译”按钮开始。我们的 AI 会处理 PO 结构,在翻译 msgstr 值的同时保留 msgid 条目、注释和格式占位符。
  4. 复制或保存: 翻译完成后,将翻译后的 PO 内容复制到剪贴板,或将其保存为可在项目中直接使用的 .po 文件。

什么是 PO 和 POT 文件?

PO (Portable Object) 文件是由 GNU gettext 国际化系统创建的一种广泛使用的本地化格式。它们使用 msgid(原始文本)和 msgstr(翻译文本)条目将可翻译字符串存储为键值对。

PO 文件是许多开源项目和框架的标准本地化格式,包括 WordPress、PHP 应用程序、Python (Django, Flask)、Ruby on Rails、C/C++ 程序以及使用 GTK 或 GNOME 构建的桌面应用程序。

PO 文件格式结构

PO 文件由包含以下关键元素的条目组成:

# Translation file for MyApp
#: src/components/header.js:12
msgid "Welcome to our application"
msgstr ""

#: src/components/login.js:8
msgid "Sign in to your account"
msgstr ""

#: src/components/dashboard.js:15
msgid "You have %d new messages"
msgid_plural "You have %d new messages"
msgstr[0] ""
msgstr[1] ""
  • msgid — 原始未翻译字符串(源文本)。这用作查找翻译的键。
  • msgstr — 目标语言的翻译字符串。空的 msgstr 值表示未翻译的字符串。
  • 注释 (#) — 为译者提供上下文。#: 表示源文件引用,#. 包含提取的注释,#, 包含 fuzzy 等标志。
  • 复数形式 (msgid_plural, msgstr[N]) — 处理特定语言的复数规则。不同的语言有不同数量的复数形式(例如,英语有 2 种,波兰语有 3 种,阿拉伯语有 6 种)。
  • 上下文 (msgctxt) — 区分需要根据上下文进行不同翻译的相同源字符串(例如,“Open”作为动词与形容词的区别)。

PO 与 POT 文件

POT (Portable Object Template) 文件是用于创建 PO 文件的模板。它包含所有带有空 msgstr 值的源字符串。开始新翻译时,您需要复制 POT 文件,将其重命名为目标语言(例如 fr.po),然后填入翻译内容。

我们的服务同时接受 PO 和 POT 内容。只需粘贴任一格式,AI 就会为所有 msgstr 条目生成翻译。

POT 文件示例

以下是一个典型的带有标题和可翻译字符串的 POT 模板文件:

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-01-01 00:00+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \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"

#: src/app.py:42
msgid "Hello, World!"
msgstr ""

为什么使用我们的 PO 翻译服务

  • AI 驱动的上下文翻译: 我们先进的 AI 能够理解 PO 文件结构,处理 gettext 格式占位符(如 %s, %d, %(name)s),并根据目标语言的文化细微差别调整翻译。
  • 全面的 gettext 格式支持: 我们的服务处理所有 PO 格式功能,包括标题、注释、上下文条目 (msgctxt)、复数形式和格式标志。翻译过程中会完整保留 PO 结构。
  • 复数形式处理: 根据目标语言规则正确生成复数形式翻译。无论您的目标语言有 2、3 还是 6 种复数形式,我们的 AI 都会生成相应的 msgstr[N] 条目。
  • 特定区域设置调整: 自动调整翻译字符串中的数字、日期和其他对区域设置敏感的内容,以符合目标语言的惯例。
  • 错误处理: 检测并纠正 AI 翻译错误,确保始终如一的高质量 PO 文件输出。
  • 高性价比: 享受实惠的定价,每月有 30,000 个免费字符额度。查看定价
  • 针对大型 PO 文件优化: 通过将大型 PO 文件拆分为可管理的块来高效处理,确保所有条目的术语和上下文翻译一致。

PO 文件翻译的常见用例

PO 文件是各种平台和框架的标准本地化格式:

  • WordPress: WordPress 主题和插件使用 PO/POT 文件进行国际化。gettext 系统是使 WordPress 内容能够翻译成 200 多种语言的标准方式。
  • PHP 应用程序: PHP 的 gettext 扩展原生使用 PO 文件。Laravel、Symfony 和 CakePHP 等框架支持基于 PO 的多语言应用程序本地化。
  • Python (Django, Flask): Django 使用 gettext 和 PO 文件作为其标准本地化机制。makemessages 命令将可翻译字符串提取到 POT 文件中,compilemessages 将 PO 文件编译为二进制 MO 文件。
  • Ruby on Rails: 虽然 Rails 默认使用 YAML,但许多 Ruby 项目使用带有 PO 文件的 gettext gem 进行本地化,特别是在与现有的基于 gettext 的翻译工作流集成时。
  • C/C++ 程序: GNU gettext 最初是为 C 程序设计的。许多系统实用程序、命令行工具和桌面应用程序使用 PO 文件进行用户界面翻译。
  • JavaScript/TypeScript (Lingui): Lingui 是一个用于 React、Next.js 和其他 JavaScript 框架的现代 i18n 库,它使用 PO/POT 文件作为其主要翻译格式。@lingui/cli 工具将可翻译字符串提取到 PO 目录中,Lingui 的运行时在构建时加载编译后的翻译以获得最佳性能。
  • 桌面应用程序 (GTK/GNOME/KDE): Linux 桌面环境和 GTK/Qt 应用程序依赖于 PO 文件。GNOME 和 KDE 项目管理着数十种语言的数千个 PO 文件。

PO 翻译与其他本地化格式的对比

PO 文件是建立时间最长的本地化格式之一,在开源社区拥有超过 30 年的历史。与基于 JSON 或 YAML 的格式不同,PO 文件内置了对复数形式、译者注释、源引用和上下文消歧的支持。

虽然现代框架通常使用 JSON (i18next, React Intl) 或 YAML (Rails),但 PO 仍然是 WordPress 插件、PHP 应用程序、Python Django 项目和 Linux 桌面软件的首选格式。我们的服务连接了这两个世界——在此处翻译 PO 内容,或使用我们的“I18N 文件翻译”页面进行任何格式的批量处理。

我们的 AI 翻译保留了完整的 PO 文件结构,包括标题(Project-Id-Version, Content-Type, Plural-Forms)、译者注释、源文件引用和格式标志,确保您翻译后的 PO 文件可以直接与 msgfmt 等 gettext 工具配合使用。