# General Translation Knowledge Base: Google Translate 替代方案：General Translation 与 Google Translate 对比
URL: https://generaltranslation.com/zh/kb/general-translation-vs-google-translate.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Google Translate 适合快速翻译一次性文本，但要以另一种语言发布产品，还需要结合上下文翻译每个字符串、保持术语一致、正确处理变量和复数形式、进行审校，并建立发布流程。General Translation 能理解代码中每个字符串的上下文，将从代码、审校到每一次发布的整个本地化工作流全面自动化。
Category: 翻译
Last updated: 2026-10-16
Authors: General Translation Team
Published: 2026-10-16

用 Google Translate 快速阅读外语网页或临时翻译一段文字非常方便。但产品本地化真正的难点在于：按照每个字符串在 UI 中的实际含义进行翻译，在多次发布之间保持术语一致，并把译文交付到应用加载它们的位置。无论以哪种方式在应用中使用 Google Translate，总有一部分工作得靠你自己完成。

## 在应用中使用 Google Translate 的三种方式

### 让访问者的浏览器翻译页面

当页面语言不是用户能读懂的语言时，Chrome 会主动提示翻译。翻译在页面加载后于访问者的浏览器中进行：Google 的翻译脚本会将页面文本替换为包裹在 `<font>` 元素中的译文。你既看不到也无法审核翻译结果，也没有可供搜索引擎抓取的翻译版 URL；而 Google 对多语言网站的建议是将每种语言发布在各自独立的 URL 上 ([管理多语言网站](https://developers.google.com/search/docs/specialty/international/managing-multi-regional-sites)) 。

这种改写还可能导致 React 应用出错。React 会保留对其所渲染文本节点的引用，因此一旦这些节点被翻译替换，下一次更新就可能失败并报错 `NotFoundError: Failed to execute 'removeChild' on 'Node'`。React 维护者已于 2018 年关闭了相关 issue ([react#11538](https://github.com/react/react/issues/11538)) ，并解释称 React 自身无法在不掩盖其他 bug 或拖慢常见场景的前提下规避该问题。标记了 `translate="no"` 的元素则不会被改动。

### 添加 Website Translator 小组件

Google 提供的可嵌入 Website Translator 仅限学术、政府、非营利及非商业网站使用，因此企业无法将其集成到自己的产品中 ([Google 翻译帮助](https://support.google.com/translate/answer/2534559?co=GENIE.Platform%3DDesktop)) 。

### 调用 Cloud Translation API

Cloud Translation API 是专为开发者打造的方案，能够完整保留 HTML 标签。对于 HTML 输入，其 Advanced 版本会跳过标记为 `translate="no"` 或 `class="notranslate"` 的文本，并额外提供词汇表、基于示例句对的自适应翻译，以及基于 Gemini 构建的 Translation LLM。请求中需包含文本和语言，还可以选择指定模型和词汇表：

```json title="translateText request body"
{
  "contents": ["Save"],
  "mimeType": "text/plain",
  "sourceLanguageCode": "en",
  "targetLanguageCode": "de"
}
```

API 中没有字段用来说明字符串出现在什么位置。在德语中，&quot;Save&quot; 既可以译为 *speichern* (保存文件) ，也可以译为 *sparen* (节省开支) ，而只含一个单词的请求无法给模型提供任何判断依据。流水线的其余部分都得由你自己构建：从 i18n 文件中提取字符串、保护 `{{count}}` 之类的占位符、为每种语言生成相应的复数形式、将结果写回、每次变更后重新运行，还要为审校人员提供修改输出的地方，并确保这些修改不会在下一次运行时被覆盖。如果要向用户展示翻译结果，Google 还要求注明出处：在结果旁显示 &quot;powered by Google Translate&quot; 标识，为未经修改的输出添加免责声明，并在会被搜索引擎索引的页面上添加机器翻译标记 ([出处注明要求](https://docs.cloud.google.com/translate/attribution)) 。

## 各方案对比

| 方案                    | 每个字符串的上下文                  | 变量和复数形式                                                                                                                  | 搜索引擎                                    | 审校与更新                                   |
| --------------------- | -------------------------- | ------------------------------------------------------------------------------------------------------------------------ | --------------------------------------- | --------------------------------------- |
| 浏览器翻译                 | 页面上的可见文本                   | 作为纯文本翻译                                                                                                                  | 不产生新的可索引内容                              | 无审校；在每位访客的浏览器中重新翻译                      |
| Cloud Translation API | 文本本身，外加可选的词汇表或示例对          | 需自行保护占位符，并为每种语言构建复数形式                                                                                                    | 将每种语言发布到独立 URL 后即可被索引                   | 需自行重新运行脚本并搭建审校流程                        |
| General Translation   | 周围的 JSX、上下文备注、你的词汇表和自定义提示词 | [`<Var>`](/docs/react/reference/components/var) 的值不参与翻译，[`<Plural>`](/docs/react/reference/components/plural) 的分支按完整句子翻译 | 通过 `gt-next` 区域设置路由 (如 `/es/about`) 被索引 | 每次构建或 Locadex 拉取请求都会翻译变更内容，审校人员可在仪表板中编辑 |

如果只是阅读外语内容，或一次性翻译内部文本，请使用 Google Translate。如果你需要原始机器翻译，并愿意自行处理上下文、占位符、复数形式、审校和署名，请使用 Cloud Translation API。如果译文要随产品一同交付 (例如应用 UI、文档或营销网站) ，需要在每种语言中都准确地道，并随每次发布保持更新，请使用 General Translation。

## General Translation 的不同之处

Google Translate 把很多本地化工作留给你自己处理，而 General Translation 正是为这些工作而打造的。它有两大不同之处：

* **它理解完整的上下文。** 一个 Cloud Translation 请求只包含文本和语言，外加一个可选的词汇表。而 General Translation 在翻译每个字符串时，会结合它在你产品中所处的位置：周围的组件和元素、句子中的变量和复数形式、你添加的上下文备注，以及你的词汇表和自定义提示词。上下文分组会将相同的术语和语气应用到分配给它的每个项目，让你的应用、文档和营销网站保持措辞一致。
* **它将整个本地化工作流自动化。** 开源库可在 React、Next.js、Vue 和 Node.js 中为你的代码实现国际化；对于 Next.js 和 React 应用，General Translation 的 AI 智能体 [Locadex](/docs/platform/locadex/quickstart) 还能替你编写这些代码。[`npx gt translate`](/docs/cli/reference/commands/translate) 在你的构建或 CI 流程中运行，将译文写入你的代码仓库或 General Translation 的 CDN；审校人员可在仪表板的 **译文** 页面中编辑译文；每次发布都能同时提供所有语言版本。

下面来看看上下文在代码中是什么样子。这个计费切换开关上的徽标显示为“Save 20%”：

```tsx title="BillingToggle.tsx"
import { T, Var } from 'gt-react';

export function BillingToggle({ discount }: { discount: string }) {
  return (
    <T context="Pricing page billing toggle. Save means pay less, not store data.">
      <button>Yearly</button>
      <span className="badge">Save <Var>{discount}</Var></span>
    </T>
  );
}
```

[`<T>`](/docs/react/reference/components/t) 会将整个区块作为一个整体发送，连同其中的元素 (一个按钮和一个徽章) 以及 [`context`](/docs/react/reference/components/t#context) 备注一并提交，使翻译能够准确解析 &quot;Save&quot; 的含义，并按照各语言的习惯放置折扣信息。[`<Var>`](/docs/react/reference/components/var) 为折扣保留一个占位符，其值绝不会发送到 General Translation API。词汇表可在所有语言中固定产品名称等术语，自定义提示词则可设定规则，例如在德语中使用正式的 &quot;Sie&quot;。 (参见[为翻译定义上下文](/docs/platform/dashboard/guides/defining-context-for-translations)和[审阅与编辑译文](/docs/platform/dashboard/guides/reviewing-translations)。) 对于仅在运行时才产生的内容，例如用户生成的文本或 CMS 文本，可使用 `gt-node` 中的 [`tx`](/docs/node/reference/functions/tx) 按需翻译。

General Translation 支持 120 多种区域设置。你可以从 [Next.js 快速入门](/docs/react/nextjs-quickstart)或 [React 快速入门](/docs/react/react-quickstart)开始上手。

## 要点总结

* Google Translate 的文本翻译效果不错。但浏览器翻译既不支持审校，也无法生成可被索引的页面，还可能导致 React 应用出错；Website Translator 小组件则仅限非商业网站使用。
* Cloud Translation API 的请求中没有用于标明字符串出现位置的字段，占位符、复数形式、审校、交付和署名都得你自己实现。
* General Translation 能够理解代码中每个字符串的上下文，并将翻译相关的整个工作流自动化：从代码国际化、审校，到每次发布都以所有语言交付上线。

## 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（Smartling、Lokalise、Phrase、Crowdin 或 Transifex）？](https://generaltranslation.com/zh/kb/general-translation-vs-tms.mdx): Smartling、Lokalise、Phrase、Crowdin 或 Transifex 等翻译管理系统（TMS）负责协调译员，但工程师仍需提取字符串、发送出去、等待译文，再把译文接回产品中。General Translation 结合上下文直接翻译代码中的内容，每次发布都同步交付所有语言，并基于开源库运行，不存在供应商锁定。
- [如何在 JSX 中翻译条件文本？](https://generaltranslation.com/zh/kb/translate-conditional-jsx.mdx): 与其分别翻译三元表达式的两个分支，不如将整句包裹在 `<T>` 组件中，并用 `<Branch>` 表达条件。这样译者能看到完整的上下文，并能根据每种语言调整句子语序。
- [如何在 React 中处理复数形式？](https://generaltranslation.com/zh/kb/how-to-handle-plurals-in-react.mdx): 不要用 n === 1 这类判断硬编码复数逻辑。如果应用只支持英语，一个简单的辅助函数就够用了；但多语言应用需要符合区域设置的复数规则，而 gt-react 或 gt-next 中的 `<Plural>` 等 i18n 组件能够为每种语言处理这些规则。
- [如何为多语言 Next.js 应用设置 SEO？](https://generaltranslation.com/zh/kb/multilingual-nextjs-seo.mdx): 为每种语言提供独立的 URL，设置 html lang 属性，将每个页面的规范网址指向页面自身，为每种语言添加 hreflang 替代项，翻译标题和描述，并在站点地图中列出所有语言版本。

## Previous and next questions

- Previous question: [General Translation 与 Weblate：该选哪一个？](https://generaltranslation.com/zh/kb/general-translation-vs-weblate.mdx)
- Next question: [i18next 替代方案：General Translation 与 i18next 对比](https://generaltranslation.com/zh/kb/general-translation-vs-i18next.mdx)

## Sitemap

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