# General Translation Knowledge Base: 如何在 Sanity 中翻译内容？
URL: https://generaltranslation.com/zh/kb/translate-sanity-content.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 将每种语言存储为独立文档，或在每个字段中按区域设置分别存储值，然后将源内容翻译为每个目标区域设置。General Translation 的 gt-sanity 插件会在 Sanity Studio 中添加 Translate 操作，并默认将每条译文导入为草稿，供你审阅后发布。
Category: 工作流工具
Last updated: 2026-10-21
Authors: Kevin Liu, Kevin Wu
Published: 2026-10-21

要在 Sanity 中翻译内容，可以将每种语言存储为独立文档，并用语言字段加以标记 (文档级本地化) ；也可以在每个字段内按区域设置分别存储值 (字段级本地化) 。然后，再根据源内容填充每种目标语言。这项工作的难点在于，文档是结构化数据：Portable Text (Sanity 的富文本格式) 必须保留原有的区块和标记；图片、日期和数字必须原样复制；如果每种语言对应一个文档，每个引用都必须指向相应的译文；此外，编辑人员对译文所做的修改，在下次更新后也必须得以保留。

## Video

The video is narrated in English, with English captions.

[How do I translate content in Sanity?](https://caxecubb9c64cezv.public.blob.vercel-storage.com/films/kb-translate-sanity-content.mp4) (47秒)

General Translation lets you click Translate on a Sanity document with the `gt-sanity` plugin. Add `gtPlugin` to `sanity.config.ts` with your locales and document types, give the article a language field, store your API key in a private document, publish the drafts the plugin imports, and query each language by its language field.

## 翻译 Sanity 内容的几种方式

| 方式                                    | 擅长之处                                        | 译文如何进入 Sanity                                | 需要你自行处理的工作                                                              |
| ------------------------------------- | ------------------------------------------- | -------------------------------------------- | ----------------------------------------------------------------------- |
| 仅使用 Sanity 的本地化插件                     | 将每种语言存储为独立文档，或在每个字段中按区域设置分别存储值              | 由编辑或译者在 Sanity Studio 中逐一录入每种语言              | 所有翻译工作，以及每次源内容变更后的更新                                                    |
| Google Translate                      | 翻译粘贴进去的文本，无需初始化设置                           | 复制粘贴，或通过脚本调用 Sanity 的 API 写入                 | 它逐条孤立地翻译字符串；将 Portable Text 拆分为字符串再重建、复制其他字段、重新指向引用、保持术语一致以及审校，都需要你自己完成 |
| 基于 AI API (OpenAI API、Claude API) 的脚本 | 一次脚本运行即可翻译大量文档，并可在提示词中指定语气和术语               | 通过脚本调用 Sanity 的 API 写入                       | 拆分并重建 Portable Text、复制其他字段、重新指向引用、为每个请求提供上下文和术语，以及审校                    |
| General Translation (`gt-sanity`)     | 结合项目中的上下文组 (词汇表和自定义提示词) 翻译文本和 Portable Text | 在 Studio 中执行 **Translate** 操作，将各区域设置的译文导入为草稿 | 一个语言字段、一个凭据文档，以及发布前的审校                                                  |

如果每种语言都由译者撰写，且内容很少变动，仅使用 Sanity 的本地化插件即可；如果只是一次性文本，且发布前会有人审校，可以使用 Google Translate 或 AI API 脚本。如果文档包含富文本和引用，且内容持续更新，请使用 General Translation。

## 使用 gt-sanity 翻译文档

General Translation 的 `gt-sanity` 插件会在 Sanity Studio 中添加 **Translate** 操作，同时支持这两种模型，`translationLevel` 默认为文档级。

1. 运行 `npm install gt-sanity` 进行安装。

2. 为每个需要翻译的文档类型添加 `language` 字段。

3. 将项目 ID 和项目 API 密钥存储在私有的 `generaltranslation.secrets` 文档中。

4. 在 `sanity.config.ts` 中添加 `gtPlugin`，并配置区域设置和文档类型：

   ```ts title="sanity.config.ts"
   import { defineConfig } from 'sanity';
   import { gtPlugin } from 'gt-sanity';
   export default defineConfig({
     // ... 你现有的配置
     plugins: [
       gtPlugin({
         sourceLocale: 'en',
         locales: ['es', 'zh', 'ja'],
         translateDocuments: [{ type: 'article' }, { type: 'page' }],
       }),
     ],
   });
   ```

5. 在源文档上点击 **Translate**。

## 一次翻译运行会做什么

在默认的文档级初始化设置中，**Translate** 会将文档的文本和 Portable Text 发送去翻译，图片、日期、数字和引用保持不变，并将每个区域设置的译文导入为草稿。自动发布、引用修补 (将每个引用重新指向同一区域设置的译文) 以及 **Save local edits** (在源文本未变更时保留编辑者的修改) 默认均为关闭状态。你的前端可以通过 GROQ 过滤器 (例如 `language == "es"`) 查询各语言的内容。如果你的应用也使用了 General Translation，请为两个项目分配同一个上下文分组，确保术语译法一致。完整步骤请参阅 [Sanity 快速入门](/docs/integrations/sanity/quickstart)。

## Related questions

- [如何在 Storyblok 中翻译内容？](https://generaltranslation.com/zh/kb/translate-storyblok-content.mdx): 在 Storyblok 中，先将目标语言添加到空间，再为每个可翻译字段按语言分别设置值。General Translation 的 Storyblok 集成可在仪表板中通过“同步并应用”填充这些值，并生成草稿，供你在 Storyblok 中审阅并发布。
- [如何翻译 Mintlify 文档站点？](https://generaltranslation.com/zh/kb/translate-mintlify-docs.mdx): 为每种语言创建一个文件夹，在其中存放每个页面的译文副本，并将每种语言添加到 docs.json 导航中。General Translation 的 AI 智能体 Locadex 会提交一个拉取请求，添加翻译后的页面和各语言的导航，之后还会持续翻译后续变更。
- [如何翻译 Google Slides？](https://generaltranslation.com/zh/kb/translate-google-slides.mdx): 为每种语言复制一份演示文稿，替换每个文本框、表格单元格和演讲者备注中的文本，并缩放溢出的文本。General Translation 的 Google Drive 集成会把每种语言分别写入源文件旁的独立副本，并执行一轮格式化处理，让新文本适配每张幻灯片。
- [如何审阅和编辑译文？](https://generaltranslation.com/zh/kb/review-translations.mdx): 将每条译文与其源内容及其他区域设置的版本进行对比，修正读着别扭的地方。借助 General Translation，你可以在仪表板的翻译页面中编辑译文，并通过标签和评论跟踪审阅进度；其 AI 智能体 Locadex 下一次运行翻译时，会将这些修改纳入拉取请求。

## Previous and next questions

- Previous question: [如何使用 Cursor 或 Claude Code 为应用实现国际化？](https://generaltranslation.com/zh/kb/ai-agent-i18n-setup.mdx)
- Next question: [如何在 Storyblok 中翻译内容？](https://generaltranslation.com/zh/kb/translate-storyblok-content.mdx)

## Sitemap

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