# General Translation Knowledge Base: General Translation 与 Locize 对比：该选哪个？
URL: https://generaltranslation.com/zh/kb/general-translation-vs-locize.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Locize 是由 i18next 创建者打造的翻译管理系统，通过 CDN 分发译文，从运行中的应用收集新键，并提供 AI 翻译和上下文内编辑器。但国际化库及其键仍需你自己维护。General Translation 既可以充当你的国际化库并负责翻译，也可以翻译你现有的 i18next 文件。
Category: 工作流工具
Last updated: 2026-10-16
Authors: Kevin Wu, Jackie Chen
Published: 2026-10-16

Locize 是由 i18next 背后团队打造的翻译管理系统 (TMS) 。你的应用继续使用 i18next (或其他国际化库) ，Locize 负责存储键及其译文，由 AI 或你的译者补全各语言版本，应用再从 Locize 的 CDN 加载结果，因此修正后的译文无需重新部署即可上线。Locize 是与你的国际化库配合使用，而非取而代之，所以库的初始化设置、键以及集成工作仍需由你的工程师负责。General Translation 则能兼顾两者：既可提供自有的开源国际化库并负责翻译，也可以只为你现有的 i18next 文件提供翻译。

## Video

The video is narrated in English, with English captions.

[General Translation vs. Locize: which should you use?](https://caxecubb9c64cezv.public.blob.vercel-storage.com/films/kb-general-translation-vs-locize.mp4) (45秒)

Locize is a TMS from the creators of i18next that delivers translations from a CDN, collects new keys from your app, and adds AI translation, while you still maintain the i18n library and its keys. General Translation can be your i18n library and translate it, or translate the i18next files you already have: point the CLI at your JSON files and run `npx gt translate`, or move a feature into a `<T>` component with no keys to name.

## Locize 的优势

* **专为 i18next 打造。** [`i18next-locize-backend`](https://github.com/locize/i18next-locize-backend) 从 Locize 的 CDN 加载译文；配合 i18next 的 `saveMissing` 选项，它会在你开发过程中将新键发送到 Locize。[`i18next-cli`](https://github.com/i18next/i18next-cli) 内置 Locize 的同步、下载和迁移命令，其 `localize` 命令只需运行一次，即可将硬编码字符串包裹在 `t()` 中、提取键、连接 Locize 项目并请求 AI 翻译。
* **无需重新部署即可更新。** 译文发布到 CDN (所有套餐均提供 Standard CDN，Growth 及以上套餐提供 Pro CDN) ，你可以[为每个版本单独设置缓存时长](https://www.locize.com/docs/integration/cdn-types-standard-vs-pro)，也可以选择私有发布，仅允许通过 API 密钥访问。
* **版本。** 每个项目都有一个 `latest` 工作版本、一个 `production` 版本，以及任意数量的自定义版本 (例如 `staging`，或为每次移动应用发布单独创建的版本) ，因此你可以脱离代码独立地升级或回滚译文。 (参见 [Locize 版本管理](https://www.locize.com/docs/versioning)。) 
* **上下文内编辑。** 当 URL 包含 `?incontext=true` 时，[`locize` 包](https://github.com/locize/locize)会在你的网站上添加一个编辑器弹窗，并通过文本识别将截图与键自动匹配。
* **AI 与机器翻译。** 你可以使用 [Locize 自有的 AI 服务](https://www.locize.com/ai)，也可以接入自己的 OpenAI、Gemini、Mistral 或 DeepL 密钥，结合你的风格指南、词汇表和翻译记忆进行翻译，并提供质量评估、AI 审核和人工审核工作流。
* **按语言生成复数键。** 对于 i18next JSON，Locize 会[生成每种目标语言所需的复数键](https://www.locize.com/docs/integration/i18n-formats/pluralization) (例如波兰语的 `_few` 和 `_many`) ，并在编辑器中展示所有复数形式。
* **不止于 i18next。** [`locize-cli`](https://github.com/locize/locize-cli) 支持导入和导出多种格式，包括 XLIFF、Android XML、Apple `.strings`、PO、RESX、Fluent 和 Java properties；Locize 还提供了 react-intl、vue-i18n 和 Lingui 的示例。此外，它还提供 GitHub Action、MCP 服务器和 Figma 插件。

## Locize 仍需工程师自行处理的部分

下面用 `i18next` 26.4.7 和 `i18next-locize-backend` 10.0.3 演示 `saveMissing`：以西班牙语渲染一个 Locize 尚未收录的键。示例中的请求函数代替 Locize 的服务器，并记录每次调用：

```js title="test.mjs"
import i18next from 'i18next';
import Backend from 'i18next-locize-backend';

// 模拟 CDN：目前英语和西班牙语各只有一个键。
const cdn = {
  en: { inbox: { title: 'Inbox' } },
  es: { inbox: { title: 'Bandeja de entrada' } },
};

await i18next.use(Backend).init({
  lng: 'es',
  fallbackLng: 'en',
  saveMissing: true,
  backend: {
    projectId: 'demo-project',
    apiKey: 'demo-write-key', // 写入密钥：仅限开发环境
    referenceLng: 'en',
    allowedAddOrUpdateHosts: () => true,
    reloadInterval: false,
    request: async ({ url, method, body }) => {
      console.log(method, url, body ? JSON.stringify(body) : '');
      const lng = url.match(/latest\/(\w+)\//)?.[1];
      return { status: 200, data: JSON.stringify(method === 'GET' ? cdn[lng] ?? {} : {}) };
    },
  },
});

// 代码中新增的文案，附带英文默认值
console.log(i18next.t('inbox.title'));
console.log(i18next.t('inbox.empty', 'No messages yet.'));
await new Promise((r) => setTimeout(r, 6000)); // saveMissing 做了防抖处理
```

```text title="Output"
GET https://api.lite.locize.app/demo-project/latest/es/translation
GET https://api.lite.locize.app/demo-project/latest/en/translation
Bandeja de entrada
No messages yet.
POST https://api.lite.locize.app/missing/demo-project/latest/en/translation {"inbox.empty":"No messages yet."}
```

此示例展示了 `saveMissing` 注册的内容：英文键和值。翻译和发布都在注册之后进行。Locize 集成会将这些步骤串联起来：

1. 设置 i18next，为每个字符串命名一个键，并用该键调用 `t()`。
2. 在开发环境中通过 `saveMissing` 将新键发送到 Locize (默认仅限 `localhost`，且[写入密钥绝不能随应用发布](https://www.locize.com/docs/guides/going-to-production)) ，或在 CI 中通过同步命令发送。
3. 由 AI 或您的译员进行翻译，审核结果，然后将其发布到应用读取的版本。
4. 在运行时从 CDN 加载译文，或将其下载到构建产物中，并在应用中注册每种新语言。

译员或 AI 能获得的上下文包括键、对应的英文值、上下文备注 (如有) 以及[与之匹配的截图](https://www.locize.com/docs/context)，但不包括渲染该字符串的组件。

Locize 套餐按月收取基础费用，包含一定的字数、CDN 下载量、语言、命名空间和版本额度；更高级的套餐可额外购买字数和下载量包，AI 翻译和机器翻译则按词元或字符计费。 (参见 [Locize 定价](https://www.locize.com/pricing)，查阅于 2026 年 10 月。)

## 面向 i18next 团队的 General Translation

无需重写任何代码，即可试用 General Translation。CLI 会自动检测 `package.json` 中的 `i18next`，在翻译 JSON 文件时保留 i18next 的插值语法 (如果你使用 `i18next-icu`，则保留 ICU 语法) ：

```json title="gt.config.json"
{
  "defaultLocale": "en",
  "locales": [
    "es"
  ],
  "files": {
    "json": {
      "include": [
        "locales/[locale]/*.json"
      ]
    }
  }
}
```

[`npx gt translate --dry-run`](/docs/cli/reference/commands/translate) 会找到 `locales/en/translation.json`，而 [`npx gt translate`](/docs/cli/reference/commands/translate) 会写入 `locales/es/translation.json`。如果源消息与目标消息的键结构一致，就可以使用这种基于文件的工作流。借助配套元数据文件，你可以为任意键附加 `context` 备注或 `maxChars` 长度限制。详见[键级元数据](/docs/cli/reference/keyed-metadata)。

你也可以更进一步，直接把 General Translation 用作库。[`<T>`](/docs/react/reference/components/t) 可包裹 JSX 并原地翻译，[`useGT`](/docs/react/reference/hooks/use-gt) 则负责处理字符串，因此完全无需为键命名。如果团队仍希望使用基于键的字典，可以选择 [`useTranslations`](/docs/react/reference/hooks/use-translations)。`gt-next`、`gt-react` 和 `gt-vue` 均采用 MIT 许可证，底层不依赖 i18next，且无需 General Translation 账户即可使用。

## Locize 与 General Translation 速览

| 功能        | Locize                                  | General Translation                                                                                                       |
| --------- | --------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
| 产品定位      | 与 i18next 或其他国际化库搭配使用的 TMS              | 开源国际化库 + AI 翻译，也可直接翻译你现有的文件                                                                                               |
| 字符串存放位置   | 键在代码中，值在 Locize 中                       | 位于代码中的 [`<T>`](/docs/react/reference/components/t) 内，或你现有的资源文件中                                                           |
| 新文案如何接入   | 开发环境中使用 `saveMissing`，或在 CI 中运行同步命令     | 在构建中运行 [`npx gt translate`](/docs/cli/reference/commands/translate)，或通过 [Locadex](/docs/platform/locadex/quickstart) 拉取请求 |
| 由谁翻译      | Locize 的 AI、使用你自己的 AI 或机器翻译密钥，或由你的译者翻译  | AI 结合代码、词汇表和自定义提示词提供的上下文进行翻译，再由你的团队在仪表板中审校                                                                                |
| 每个字符串的上下文 | 键、英文值、上下文备注、截图、词汇表和风格指南                 | 内联库使用带标记的 JSX 结构；消息目录使用键级元数据；词汇表和自定义提示词全局共享                                                                               |
| 投递        | 默认通过 CDN 投递并支持版本管理；也可下载到构建中             | 打包进应用包，或通过 General Translation 的 CDN 发布更新，无需重新部署应用                                                                        |
| 定价        | 按字数、CDN 下载量、语言数和版本数划分套餐等级；AI 和机器翻译需额外充值 | [按用量计费](https://generaltranslation.com/pricing)                                                                           |

## 为什么团队选择 General Translation 而非 Locize

General Translation 让使用 i18next 的团队可以先采用翻译生成和仪表板审校，等到希望连键维护工作也一并省去时，再迁移到内联文案。

* **更快。** 在构建之前运行翻译，新文案即可以你支持的所有语言随版本发布。CLI 会复用已有译文，只翻译新增或变更的内容；添加一种语言只需在 `gt.config.json` 中加一行。
* **运行成本更低。** 直接从你现有的 i18next 文件起步。将某个功能迁移到 [`<T>`](/docs/react/reference/components/t) 后，就不必再为键命名，也不必让源字典与对应组件保持同步。
* **质量更高。** 为目录中的键添加上下文备注，或使用内联 [`<T>`](/docs/react/reference/components/t) 代码块，将句子的 JSX 结构和复数分支一并交给翻译。共享的[上下文分组](/docs/platform/dashboard/guides/defining-context-for-translations)可确保产品术语在应用和文档项目之间保持一致，审校人员可直接在仪表板中编辑翻译结果。
* **风险更低。** 评估 General Translation 期间，可继续保留 i18next 和已审校的译文。打包的翻译文件在运行时不会调用 General Translation；只要自行提供译文，其采用 MIT 许可的 JavaScript 库无需账户也能使用。

借助 General Translation，Cursor 的网站和文档已支持 14 种以上区域设置。 (参见[生产环境部署案例](https://generaltranslation.com/enterprise)。)

## 何时更适合选择 Locize

如果译者希望直接在线上站点中编辑，或者你需要为每个移动应用发布版本分别维护翻译版本，又或者你需要交换 XLIFF、Fluent 或 Java properties 文件，请选择 Locize。如果你希望组件中的源文案保持可读，并在翻译时一并纳入已标记的 JSX 结构，请选择 General Translation 的内联库。如果你想在更换库之前先评估翻译效果和仪表板审阅功能，可以先用现有消息目录试用其 CLI。

## 从 Locize 迁移到 General Translation

先使用 `locize-cli` 下载现有译文并保存到代码仓库中，然后将 `gt.config.json` 指向英文文件，再运行 [`npx gt upload`](/docs/cli/reference/commands/upload)，把源文件和现有译文上传到平台。之后，你既可以继续使用 i18next，让 CLI 翻译新增的键，也可以按功能逐步迁移到 [`<T>`](/docs/react/reference/components/t)。 (参见[迁移国际化库](/docs/react/guides/migrating-i18n-libraries)。) 词汇表术语同样可以迁移：上下文分组支持导入 CSV、TSV、JSON 和文本文件。

## 要点总结

* Locize 出自 i18next 的创建者之手，是一款适用于 i18next 应用的出色 TMS，提供 CDN 分发、`saveMissing`、版本管理、上下文内编辑和 AI 翻译等功能。
* 它需要搭配你的国际化库及其基于键的消息目录使用；翻译、审校和发布都围绕这些消息目录来配置。
* General Translation 既可以翻译你现有的 i18next 文件，也可以同时作为你的国际化库和翻译方案，借助代码上下文进行翻译，并在每次发布时一并交付所有语言。

## Related questions

- [General Translation 与 i18next、react-intl 和 next-intl 对比：应该选择哪个国际化库？](https://generaltranslation.com/zh/kb/general-translation-vs-i18n-libraries.mdx): i18next、react-intl 和 next-intl 等开源库本身并不翻译任何内容。它们只负责显示你在各语言目录文件中提供的译文，这些译文由你、你的译者或其他服务编写。General Translation 的库同样开源，承担同样的工作，此外 General Translation 还会以你的代码为上下文完成翻译。
- [General Translation 与 TMS（Crowdin、Lokalise、Phrase）对比](https://generaltranslation.com/zh/kb/general-translation-vs-tms.mdx): 如果开发者希望译文生成、源自代码的上下文以及审校流程都与产品发布紧密衔接，请选择 General Translation。你可以保留现有的消息目录和渲染库，也可以直接编写内联 JSX，无需翻译键。TMS 适合以语言供应商、CAT 编辑器和 XLIFF 交换为核心的翻译项目，其集成可以自动完成文件传输。
- [General Translation 与 Tolgee：该如何选择？](https://generaltranslation.com/zh/kb/general-translation-vs-tolgee.mdx): Tolgee 是一个可自托管的平台，集基于键的消息、上下文内编辑和 AI 翻译于一体。General Translation 则将可读的文案直接保留在组件中，并根据标记的 JSX 生成译文，无需维护消息键，即可用所有语言发布新文案。
- [General Translation 与 Weblate：该选哪一个？](https://generaltranslation.com/zh/kb/general-translation-vs-weblate.mdx): Weblate 是一个可自托管、基于 Git 的本地化平台，专为社区或团队协作翻译代码仓库文件而设计。General Translation 则将译文生成融入开发与发布流程，依托已标记的 JSX 和共享的产品上下文完成翻译。你可以继续沿用现有的 gettext 文件，也可以改用内联编写，连源文案目录的维护工作也一并省去。
- [不使用翻译文件能实现 i18n 吗？](https://generaltranslation.com/zh/kb/i18n-without-translation-files.mdx): 可以。借助 General Translation 的 gt-react 和 gt-next 库，你可以为 React 和 Next.js 实现 i18n，既无需翻译键，也不用为每种语言维护 JSON 文件。文案以内联方式写在 JSX 的 `<T>` 组件中，gt translate 命令会在构建时结合代码中的上下文，为每种语言生成译文。Locadex 还能通过拉取请求让译文保持最新。

## Previous and next questions

- Previous question: [General Translation 与 Lingui：该选哪一个？](https://generaltranslation.com/zh/kb/general-translation-vs-lingui.mdx)
- Next question: [General Translation 与 Mobility：该选哪一个？](https://generaltranslation.com/zh/kb/general-translation-vs-mobility.mdx)

## Sitemap

See the [Knowledge Base sitemap](https://generaltranslation.com/zh/kb/sitemap.md) for every article.
