PO/Gettext翻译
源语言: en-US (English, United States)
源语言的代码。例如:fr, fr-FR, fil, zh-Hans-CN。输入以搜索。
目标语言: zh-Hans-CN (Chinese, Simplified Chinese, China)
目标语言的代码。例如:en, en-US, fil, zh-Hans-CN。输入以搜索。管理词汇表管理语言指令
翻译元数据:
生成并保存词汇表:
AI翻译需要时间(最多5分钟),因为AI需要处理您的内容。此PO翻译页面可实时翻译,且不会在我们的服务器上存储您的内容。对于大型PO文件,我们建议使用国际化文件翻译页面以获得更可靠的交付。请在翻译完成前不要离开此页面。

如何在线翻译PO/Gettext文件

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

  1. 粘贴您的PO内容: 在“源PO内容”部分,粘贴您的PO或POT文件内容。我们的服务可识别标准PO格式,包括msgid、msgstr、注释、复数形式和上下文条目。
  2. 设置目标语言: 输入翻译的目标语言代码(例如,'fr-FR'代表法语,'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/Gettext翻译生成AI词汇表

我们的AI词汇表生成功能可帮助您在所有PO本地化文件中保持术语一致。通过在翻译选项中切换生成词汇表来启用它:

  • 术语一致性 — AI会分析您的源PO内容和现有的目标翻译,以构建关键术语词汇表,确保产品名称、UI标签和技术术语在整个项目中以相同方式翻译。
  • 领域专用词汇 — 在目标字符串字段中提供已翻译PO内容的样本。AI会学习您的首选术语,并自动将其应用于新的msgstr条目。
  • 如何使用 — 将您已翻译的PO内容粘贴到启用词汇表生成后出现的“目标字符串”可选字段中。AI提取重复出现的术语对并将其用作翻译指南。如果未提供目标内容,AI将仅从源字符串中生成词汇表。

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

  • AI驱动的上下文感知翻译: 我们先进的AI能够理解PO文件结构,处理gettext格式占位符(如%s%d%(name)s),并根据目标语言的文化细微差别调整翻译。
  • 全面支持gettext格式: 我们的服务处理所有PO格式功能,包括页眉、注释、上下文条目 (msgctxt)、复数形式和格式标志。翻译过程中PO结构得到完整保留。
  • 复数形式处理: 根据目标语言规则正确生成复数形式翻译。无论您的目标语言有2种、3种还是6种复数形式,我们的AI都会生成适当的msgstr[N]条目。
  • 区域设置调整: 自动调整翻译字符串中的数字、日期和其他对区域设置敏感的内容,以匹配目标语言的惯例。
  • 错误处理: 检测并纠正AI翻译错误,确保始终如一的高质量PO文件输出。
  • 高性价比: 享受实惠的定价,每月享有 10,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框架的现代国际化库,它使用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内容,或使用我们的“国际化文件翻译”页面进行任何格式的批量处理。

我们的AI翻译保留了完整的PO文件结构,包括页眉(Project-Id-Version, Content-Type, Plural-Forms)、译者注释、源文件引用和格式标志,确保您翻译后的PO文件可立即用于msgfmt等gettext工具。