# General Translation Integrations: コンテンツの翻訳 URL: https://generaltranslation.com/ja/docs/integrations/sanity/guides/translating-content.mdx --- title: コンテンツの翻訳 description: ドキュメントアクション、タブビュー、または翻訳ページから Sanity ドキュメントを翻訳する方法。 related: links: - /docs/integrations/sanity/guides/managing-translations - /docs/integrations/sanity/guides/querying-translations - /docs/integrations/sanity/guides/configuring-sanity --- General Translation プラグインを使用して、ドキュメント単位またはフィールドレベルの翻訳を生成します。 ドキュメント単位の翻訳では、ロケールごとに 1 つのドキュメントが作成されます。フィールドレベルの翻訳では、ソースドキュメント内の国際化配列にローカライズされた値が追加されます。 ## 1 つのドキュメントを翻訳する [#translate-one] **翻訳** アクションはすべてのドキュメントで利用できますが、翻訳ツールが表示されるのはソース言語のドキュメントのみです。翻訳済みドキュメントでは、代わりにダイアログにメッセージが表示されます。 1. Sanity Studio でソース言語のドキュメントを開きます。 2. ドキュメントのアクションバーで **翻訳** をクリックします。 3. **翻訳** で、対象ロケールを選択します。 4. **翻訳** をクリックします。 翻訳が生成されると、ダイアログの **翻訳ステータス** に進行状況がポーリング表示されます。ドキュメントレベルのローカライゼーションでは、このダイアログで自動インポート、自動パッチ、自動公開がデフォルトで有効になっているため、プラグインは各ロケールのドキュメントをインポートし、参照をパッチして公開します。各動作は個別に切り替えられるほか、ステータス行からロケールを手動でインポートしたり、**すべてインポート**、**参照を修正**、**翻訳を公開** を使用したりできます。 フィールドレベルのローカライゼーションでは、インポート時に翻訳済みの値が同じドキュメント上の `internationalizedArray*` フィールドにマージされます。そのドキュメントを Sanity でレビューして公開してください。参照のパッチ適用と翻訳の公開コントロールは、ドキュメントレベルの翻訳にのみ適用されます。 ## 翻訳タブを使う [#translations-tab] Studio に `TranslationsTab` が含まれている場合は、ドキュメントで **General Translation** タブを開いてください。**翻訳** アクションと同じワークフローを、ドキュメントエディタ内で常に表示された状態で利用できます。 タブを追加するには、[Sanity を設定する](/docs/integrations/sanity/guides/configuring-sanity#translations-tab) を参照してください。 ## 複数のドキュメントを翻訳する [#translate-many] サイト全体の **翻訳** ツールを使うと、翻訳可能なすべてのドキュメントを一括で操作できます。ここでは次の操作を行えます。 * すべてのドキュメントの翻訳を生成する (**すべて翻訳**) 。 * 準備ができた翻訳をすべてインポートする (**すべてインポート**) 。 * まだインポートされていない翻訳のみをインポートする (**未インポート分をインポート**) 。 * 翻訳済みドキュメント間の参照を修正する (**参照を修正**) 。 * 原文が公開済みの翻訳済みドキュメントを公開する (**翻訳を公開**) 。 * Sanity にすでにある翻訳を General Translation に送信する (**ローカル編集を保存**) 。 [翻訳の管理](/docs/integrations/sanity/guides/managing-translations)を参照してください。 ## 翻訳に加えた編集を保持する [#preserve-edits] 編集者は、General Translation から翻訳済みコンテンツが返された後に修正を加えることがあります。デフォルトでは、後続の翻訳実行でコンテンツが再生成され、こうした編集は失われます。 編集を保持するには、**ローカル編集を保存**をオンにします。このトグルをオンにすると、各翻訳実行ではまず、すでに General Translation のソースバージョンがあるドキュメントについて、現在 Sanity にある翻訳が General Translation に送信されます。その後、ソーステキストが変更されていないコンテンツは再翻訳されず、Sanity から再利用されます。 このトグルは **翻訳**ツール内、およびドキュメントタブでは **翻訳前にローカル編集を保存**として表示されます。デフォルトではオフです。オンにすると、まず確認を求められます。オフにすると、すぐに反映されます。 このトグルは、現在の Studio セッションから開始された翻訳実行に適用され、Studio を再読み込みするとリセットされます。開始時の状態は、[`preserveExistingTranslations`](/docs/integrations/sanity/reference/plugin-configuration#preserve-existing-translations) で設定します。 どちらのローカライゼーション戦略にも対応しています。ドキュメント単位の翻訳は `translation.metadata` から読み取られ、未公開の編集も反映されるよう、公開済みドキュメントより下書きが優先されます。フィールドレベルの翻訳は、ソースドキュメントの国際化配列から読み取られます。既存のコンテンツがないロケールはスキップされます。 これをオンにすると、Sanity が信頼できる情報源になります。Sanity 内の内容が、そのバージョンのドキュメントについて General Translation が保持している内容を置き換えます。これには、完了しているもののまだインポートされていない翻訳も含まれます。まず、保留中の翻訳をインポートしてください。 プラグインが既存の翻訳を送信できない場合でも、翻訳実行は続行され、編集が上書きされる可能性があることを Studio が警告します。 ## 翻訳せずにローカル編集を保存 [#save-local-edits] **ローカル編集を保存** アクションを使用すると、翻訳実行を開始せずに、Sanity にすでにある翻訳を General Translation に送信できます。プラグインは必要なソースファイルをアップロードし、各ロケールの既存コンテンツをそのバージョンの翻訳として保存します。ドキュメントに General Translation のソースバージョンがまだない場合は、トグルを有効にする前にこのアクションを使用してください。 これは、別の環境で翻訳済みのプロジェクトにプラグインを導入する場合に便利です。General Translation は、すでにあるコンテンツをもとに開始できます。 このアクションは **翻訳** ツールとドキュメントタブで利用できます。オンデマンドで実行され、**ローカル編集を保存** トグルには依存しません。 ## 翻訳を再生成する [#retranslate] 既存の翻訳を破棄して再生成するには、**すべて翻訳** を開き、**最初から再翻訳** をオンにします。確認ボタンが **すべて再翻訳** に変わります。 これにより、Studio で翻訳済みドキュメントに加えた編集が破棄され、この実行では **ローカル編集を保存** のステップがスキップされます。既存の翻訳を再利用する場合は、チェックボックスをオフのままにしてください。 このオプションは **すべて翻訳** ダイアログでのみ使用できます。単一ドキュメントの **翻訳** ワークフローは常に既存の翻訳を再利用し、**ローカル編集を保存** の切り替え設定に従います。 ## 翻訳対象 [#what-translated] このプラグインはドキュメントを HTML にシリアライズし、その HTML を翻訳に送信して、`translationLevel` に応じて、翻訳済みの HTML をロケールドキュメントまたは internationalized-array フィールドにマージします。次の要素は再帰的に処理されます。 * 文字列フィールドとテキストフィールド。 * Portable Text ブロック。 * ネストされたオブジェクト。 * 配列。 一部のフィールド型はそのまま保持され、デフォルトでは翻訳に送信されません。これには、参照、日付、ファイル、画像、数値、ブール値、URL、色、コード、ジオポイントが含まれます。完全な一覧は [default stop types](/docs/integrations/sanity/reference/plugin-configuration#stop-types) を参照してください。 スラッグフィールドはデフォルトでは除外されないため、スラッグの `current` 値は翻訳に送信されます。スラッグの動作を制御するには、`dedupeFields` または `skipFields` を使用してください。 ## 参照を処理する [#references] ドキュメントレベルの翻訳は、ほかのドキュメントを参照できます。プラグインは参照先ドキュメントごとの翻訳を参照し、存在する場合は、その参照先が正しいロケール版を指すように書き換えます。 これはドキュメントダイアログでのインポート後に自動的に実行されるほか、翻訳ページの **参照を修正** で必要に応じて実行することもできます。詳しくは、[翻訳を管理する](/docs/integrations/sanity/guides/managing-translations#patch-references)を参照してください。 ## スラッグとコピーされるフィールドの扱い [#slugs-fields] 一部のフィールドは、直接翻訳しないほうがよい場合があります。これらはフィールドマッチャーを使って制御します。 * `dedupeFields` — `source value` をコピーし、末尾に `locale` を追加して、ドキュメントごとに一意になるようにします。たとえば `about` は `about-es` になります。通常はスラッグに使用します。 * `ignoreFields` — `source value` を変更せずに各翻訳済みドキュメントへコピーします。 * `skipFields` — 翻訳済みドキュメントからそのフィールドを完全に削除します。 [翻訳を管理する](/docs/integrations/sanity/guides/managing-translations#field-behavior) を参照してください。 ## Next steps - /docs/integrations/sanity/guides/managing-translations - /docs/integrations/sanity/guides/querying-translations - /docs/integrations/sanity/guides/configuring-sanity