# General Translation Knowledge Base: Sanity でコンテンツを翻訳するには？
URL: https://generaltranslation.com/ja/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 でコンテンツを翻訳するには、各言語を language フィールドでタグ付けした個別のドキュメントとして保存する (ドキュメント単位のローカライズ) か、各フィールドにロケールごとの値として保存し (フィールド単位のローカライズ) 、翻訳元をもとにすべての対象言語を埋めていきます。これが難しいのは、ドキュメントが構造化データであるためです。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 経由で書き込むスクリプト         | 文字列を 1 つずつ個別に翻訳するため、Portable Text の文字列への分割と再構築、その他のフィールドのコピー、参照の付け替え、用語の統一、レビューはすべて自分で対応 |
| AI API (OpenAI API、Claude API) を使うスクリプト | 1 回のスクリプト実行で多数のドキュメントを翻訳でき、トーンや用語をプロンプトで指定可能                   | Sanity の API 経由で書き込むスクリプト                      | Portable Text の分割と再構築、その他のフィールドのコピー、参照の付け替え、リクエストごとの文脈と用語の指定、レビュー                        |
| General Translation (`gt-sanity`)       | プロジェクトのコンテキストグループ (用語集とカスタムプロンプト) を適用してテキストと Portable Text を翻訳 | Studio の **Translate** アクションで各ロケールを下書きとしてインポート | language フィールド、認証情報ドキュメント、公開前のレビュー                                                       |

翻訳者がすべての言語を自ら書き、コンテンツがほとんど変更されない場合は、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** (原文が変更されていない箇所で編集者の変更を保持する機能) は、いずれもデフォルトでオフです。フロントエンドでは、`language == "es"` のような GROQ フィルターを使って言語ごとにクエリします。アプリで General Translation も使用している場合は、両方のプロジェクトに同じコンテキストグループを割り当てて、用語の訳を統一してください。詳しい手順は [Sanity クイックスタート](/docs/integrations/sanity/quickstart)を参照してください。

## Related questions

- [Storyblok でコンテンツを翻訳するにはどうすればよいですか？](https://generaltranslation.com/ja/kb/translate-storyblok-content.mdx): Storyblok では、スペースに対象言語を追加し、翻訳可能な各フィールドに言語ごとの値を設定します。General Translation の Storyblok インテグレーションを使うと、ダッシュボードの「同期して適用」でこれらの値が下書きとして入力されるので、Storyblok 上でレビューして公開できます。
- [Mintlify のドキュメントサイトを翻訳するには？](https://generaltranslation.com/ja/kb/translate-mintlify-docs.mdx): すべてのページの翻訳版を言語ごとのフォルダーに作成し、各言語を docs.json のナビゲーションに追加します。General Translation の AIエージェントである Locadex が、翻訳済みページと言語別ナビゲーションを追加するプルリクエストを作成し、以降の変更も翻訳します。
- [Google Slides を翻訳するには？](https://generaltranslation.com/ja/kb/translate-google-slides.mdx): 言語ごとにデッキを1部ずつコピーし、すべてのテキストボックス、表のセル、スピーカーノートのテキストを置き換えたうえで、はみ出したテキストのサイズを調整します。General Translation の Google Drive インテグレーションは、言語ごとに翻訳元と同じ場所に個別のコピーを作成して書き込み、フォーマット処理を実行して新しいテキストを各スライドに収めます。
- [翻訳をレビュー・編集するにはどうすればよいですか？](https://generaltranslation.com/ja/kb/review-translations.mdx): 各翻訳を翻訳元や他のロケールと見比べ、不自然な箇所を修正します。General Translation では、ダッシュボードの翻訳ページで翻訳を編集し、ラベルとコメントでレビューの進捗を管理します。編集内容は、AIエージェントである Locadex による次回の翻訳実行でプルリクエストに取り込まれます。

## Previous and next questions

- Previous question: [React アプリを翻訳するには？](https://generaltranslation.com/ja/kb/translate-react-app.mdx)
- Next question: [Storyblok でコンテンツを翻訳するにはどうすればよいですか？](https://generaltranslation.com/ja/kb/translate-storyblok-content.mdx)

## Sitemap

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