返回博客
Side-by-side illustration comparing a WordPress multilingual admin interface on the left with a JSON translation API workflow on the right.

PolyLingo 与 Polylang:有什么区别以及何时使用各自

By Robert M

PolyLingo 与 Polylang:有什么区别以及何时使用

如果你来到这里,可能有两种情况:你对 WordPress 中的 Polylang 感到满意,但想知道是否有适用于非 WordPress 项目的类似工具,或者你正在完全迁移离开 WordPress,想弄清楚你的多语言设置会发生什么。

这篇文章直接回答这两个问题。我们将介绍每个工具的实际功能、适用场景以及如何选择。


Polylang 是什么(以及它不是什么)

Polylang 是一个 WordPress 插件。它是 WordPress 生态系统中最好的多语言插件之一。它管理语言切换器,允许你创建文章和页面的翻译版本,处理 hreflang 标签,并且与 WordPress 块编辑器整合良好。如果你运行的是 WordPress 网站,它是一个严肃且维护良好的工具,这也是它拥有数百万活跃安装的原因。

限制就在描述中:它是一个 WordPress 插件。它没有可以从 WordPress 外部调用的 API。它没有 JSON 语言文件、Markdown 内容文件或 Next.js 项目中的 HTML 模板的概念。它的整个模型假设内容存储在 WordPress 数据库中,并由 WordPress 渲染。

这不是批评,只是工具的适用范围。


PolyLingo 是什么

PolyLingo 是一个翻译 API。你发送内容(纯文本、Markdown、JSON 或 HTML),它会在一次请求中返回你所需的所有语言的翻译版本。它对你的 CMS、框架或部署设置没有任何偏见。只要能发出 HTTP 请求,它就能工作。

核心设计目标是格式保留。大多数翻译 API 是围绕句子构建的:你发送一个字符串,得到一个字符串返回。当你的内容有结构时,这种模型很快就会失效。将 JSON 语言文件粘贴到典型的翻译服务中,你会得到被翻译的键名、损坏的分隔符,或者原本是对象的地方变成了散文。PolyLingo 将结构视为禁区。只有字符串值会改变;其他一切都原样返回。

一个具体例子。你发送:

{"btn": {"save": "Save", "cancel": "Cancel"}}

基于句子的翻译器可能会返回:

{"button": {"save": "Guardar", "cancel": "Cancelar"}}

btn 变成了 button。这会破坏你的应用。PolyLingo 返回:

{"btn": {"save": "Guardar", "cancel": "Cancelar"}}

键保持不变,只有值被翻译。

同样的原则适用于 Markdown(标题保持标题,代码块保持原样,链接 URL 不变)和 HTML(标签和属性被保留,只有文本节点和适当的属性被翻译)。


实际区别:适用范围

最简单的说法:

Polylang 管理 WordPress 内的多语言内容。 它是一个 CMS 层。它处理哪个文章是哪个英文文章的西班牙语版本,生成语言切换器,并在你更新内容时保持翻译同步。

PolyLingo 通过 API 翻译结构化内容。 它是一个翻译层。你提供内容,它返回翻译。你如何使用这些翻译由你决定。

它们解决的是相邻的问题,而不是同一个问题。这就是为什么比较不是“哪个更好”,而是“我有什么问题”。


何时使用 Polylang

  • 你的网站运行在 WordPress 上,并且你想继续使用 WordPress
  • 你需要内容管理工作流程:编辑者在语言版本间切换,翻译状态跟踪,主题中的语言切换器
  • 你不是开发者,想要一个基于 UI 的解决方案
  • 你使用 WooCommerce,需要在 WordPress 内管理产品翻译

Polylang 在这些方面表现出色。如果 WordPress 是你的技术栈,它是合适的工具。


何时使用 PolyLingo

  • 你在使用 Next.js、Nuxt、SvelteKit、Astro 或任何其他非 WordPress 框架开发
  • 你使用无头 CMS(Contentful、Sanity、Prismic),需要在发布时或通过 webhook 翻译内容
  • 你的内容存储在 JSON 语言文件中,需要翻译且不破坏键结构
  • 你正在迁移离开 WordPress,想保留你的多语言工作流程
  • 你有 Markdown 内容(博客文章、文档、产品描述),需要翻译版本且不破坏格式
  • 你想通过单次 API 调用翻译多种语言,而不是每种语言调用一次

PolyLingo 的 /translate 端点接受一个 targets 数组,因此一次请求可以返回所有 36 种支持语言。对于需要发布十种语言的语言文件,这就是一次 API 调用而不是十次。


迁移离开 WordPress 怎么办?

如果你将 WordPress 网站迁移到无头或静态架构,Polylang 内容不会自动随你迁移。翻译存储为 WordPress 文章元数据,不能干净地导出为 Markdown 文件或 JSON 结构。

大多数团队采取的实际路径:

  1. 将 WordPress 内容导出为 Markdown 或 JSON(像 wordpress-export-to-markdown 这样的工具处理机械部分)
  2. 使用 PolyLingo 将导出的内容翻译成目标语言
  3. 将生成的文件存储在新的内容结构中,与源语言并列

PolyLingo 的批量端点(POST /translate/batch)正是为此设计。你可以在一次请求中发送多达 100 条内容,每条内容格式不同,但共享相同的目标语言集合。对于有数百页的站点迁移,这是合适的工具。


并排总结

PolyLingoPolylang
无需 WordPress 即可工作
格式保留(JSON、Markdown、HTML)仅限 WordPress 内容
一次请求,所有语言
REST API 访问
内容管理 UI翻译者 UI(无代码)完整 WordPress 管理后台
自动检测内容格式不适用
支持 RTL 语言
按使用量计费免费插件 / Polylang Pro 固定费用

简短版本

如果你在 WordPress 上并且继续使用 WordPress:使用 Polylang。它为该环境构建,且表现良好。

如果你不在 WordPress 上,或者正在离开 WordPress,或者构建任何非 WordPress 的东西:PolyLingo 通过 API 提供相同的结构化多语言工作流程,适用于你所用的任何技术栈。

这两个工具也可以共存。有些团队在其主要营销网站(保持在 WordPress 上)运行 Polylang,同时使用 PolyLingo 处理文档站点、Web 应用 UI 字符串或电子邮件模板。工作流程相同;技术栈不必相同。


试试吧

PolyLingo 的免费额度包括每月 100,000 个令牌。足够支持十种语言的多篇博客文章,或 36 种语言的中等大小语言文件。无需信用卡。

curl -sS -X POST "https://api.usepolylingo.com/v1/translate" \
  -H "Authorization: Bearer $POLYLINGO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "# Welcome\n\nTranslate **any format** without breaking the structure.",
    "format": "markdown",
    "targets": ["es", "fr", "de", "ja"]
  }'

开始免费翻译