
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 结构。
大多数团队采取的实际路径:
- 将 WordPress 内容导出为 Markdown 或 JSON(像
wordpress-export-to-markdown这样的工具处理机械部分) - 使用 PolyLingo 将导出的内容翻译成目标语言
- 将生成的文件存储在新的内容结构中,与源语言并列
PolyLingo 的批量端点(POST /translate/batch)正是为此设计。你可以在一次请求中发送多达 100 条内容,每条内容格式不同,但共享相同的目标语言集合。对于有数百页的站点迁移,这是合适的工具。
并排总结
| PolyLingo | Polylang | |
|---|---|---|
| 无需 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"]
}'