# General Translation Integrations: 翻訳の管理
URL: https://generaltranslation.com/ja/docs/integrations/sanity/guides/managing-translations.mdx
---
title: 翻訳の管理
description: "General Translation Sanity の翻訳を管理する方法。このガイドでは、インポート、参照のパッチ適用、一括公開、フィールドの動作、カスタムシリアライズについて説明します。"
related:
links:
- /docs/integrations/sanity/guides/translating-content
- /docs/integrations/sanity/guides/querying-translations
- /docs/integrations/sanity/guides/configuring-sanity
---
セットアップ後、プラグインの翻訳ツールを使って生成された Sanity の翻訳を管理できます。
このガイドでは、サイト全体の**翻訳**ツール、参照のパッチ適用、一括公開、フィールドの動作、カスタムシリアライズについて説明します。
## 翻訳ツールを使う [#translations-tool]
このプラグインは、翻訳可能なすべてのドキュメントを一覧表示する、サイト全体用の**翻訳**ツールを登録します。このツールから、次の操作を行えます。
* すべてのドキュメントの翻訳を生成します (**すべて翻訳**) 。
* 準備ができている翻訳をすべてインポートし、既存の翻訳を上書きします (**すべてインポート**) 。
* ソースドキュメントのメタデータにまだ記録されていない翻訳のみをインポートします (**未登録分をインポート**) 。
* 翻訳済みドキュメント間の参照を修正します (**ドキュメント参照を修正**) 。
* ソースドキュメントが公開されている翻訳済みドキュメントを公開します (**翻訳を公開**) 。
翻訳のステータスを定期的に確認するには**自動更新**をオンにするか、1回だけ確認するには**ステータスを更新**を使用します。
## 翻訳をインポート [#import]
生成された翻訳は、翻訳済みドキュメントとして表示される前に、Sanity にインポートする必要があります。インポート時には、プラグインが翻訳済みフィールドをソースドキュメントにマージするため、翻訳対象として送信されなかったフィールドも引き継がれます。
* 単一のドキュメントは、**Translate** アクションまたは任意で表示される **General Translation** タブからインポートします。
* 複数のドキュメントは、翻訳ツールの **Import All** または **Import Missing** を使用します。
## 参照のパッチ適用 [#patch-references]
翻訳済みドキュメントは、ほかのドキュメントを参照していることがあります。参照のパッチ適用では、各参照の `_ref` を、同じロケールの参照先ドキュメントの翻訳が存在する場合は、その翻訳を指すように書き換えます。プラグインは、これらの対応関係を `translation.metadata` ドキュメントから解決します。
既存の翻訳済みドキュメント全体にこれを実行するには、**翻訳** ツールの **Patch Document References** を使用します。単一ドキュメントのダイアログでは、インポート後にも自動的に実行されます (こちらでは自動パッチ適用がデフォルトで有効です) 。
## 翻訳を公開 [#publish]
**翻訳を公開**を使うと、翻訳済みドキュメントを一括で公開できます。このプラグインで公開されるのは、ソースドキュメントが公開済みの翻訳ドキュメントのみです。これは、多数の翻訳をインポートした後や、ロケール内の参照を修正した後に便利です。
## フィールドの動作を管理する [#field-behavior]
一部のフィールドを通常どおりに翻訳しないようにしたい場合は、フィールドマッチャーを使用します。各マッチャーは、JSONPath の `property` 式と、必要に応じてドキュメントの `_id` を使って、対象のフィールドを指定します。
### 翻訳せずにフィールドをコピーする
カテゴリ、タグ、内部メタデータなど、source document からコピーするものの、translation API には送信しないフィールドには `ignoreFields` を使用します。
```ts
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
ignoreFields: [
{ fields: [{ property: '$.category' }] },
{ fields: [{ property: '$..linkType' }] },
],
});
```
### フィールドをコピーしてロケールごとに重複しないようにする
ソース値をもとにしつつ、ロケールごとに固有の値にしたいフィールドには `dedupeFields` を使用します。これはスラッグでよくあるケースです。
```ts
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
dedupeFields: [{ fields: [{ property: '$.slug', type: 'slug' }] }],
});
```
Sanity のスラッグでは、スペイン語の場合、`{ _type: 'slug', current: 'about' }` は `{ _type: 'slug', current: 'about-es' }` になります。後でエディタが翻訳後のスラッグを変更した場合、その後のインポートでもその変更後の値が保持されます。
### 翻訳からフィールドを除外する
`skipFields` は、ソース専用のメタデータや、編集者が言語ごとに手動で設定するスラッグなど、翻訳先ドキュメントに一切コピーしたくないフィールドに使用します。
```ts
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
skipFields: [
{ fields: [{ property: '$.slug', type: 'slug' }] },
{ fields: [{ property: '$.canonicalUrl' }] },
],
});
```
完全な型定義については、[フィールドマッチャーのリファレンス](/docs/integrations/sanity/reference/plugin-configuration#field-matchers)を参照してください。
## カスタム型が翻訳対象にならないようにする [#stop-types]
デフォルトでは、このプラグインは翻訳対象外のschema型をいくつか保持しています。独自のカスタム型を追加するには、`additionalStopTypes` を使用します。
```ts
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
additionalStopTypes: ['codeBlock', 'mux.video', 'mux.videoAsset'],
});
```
[デフォルトの stop types の一覧](/docs/integrations/sanity/reference/plugin-configuration#stop-types)を参照してください。
## シリアライズをカスタマイズする [#serialization]
このプラグインは、翻訳のためにドキュメントをHTMLに変換し、翻訳後に元に戻します。ほとんどのプロジェクトでは、これを変更する必要はありません。カスタム serializers を使うのは、schema にデフォルトでは対応できないカスタムのマークやブロック型がある場合だけです。
```ts title="sanity.config.ts"
import { attachGTData, gtPlugin } from 'gt-sanity';
gtPlugin({
sourceLocale: 'en',
locales: ['es', 'zh', 'ja'],
additionalSerializers: {
marks: {
link: ({ value, children }) =>
attachGTData(`${children}`, value, 'markDef'),
inlineMath: ({ value, children }) =>
attachGTData(`${children}`, value, 'markDef'),
},
},
});
```
`attachGTData(html, data, 'markDef')` は、プラグインが翻訳をマージして戻す際に mark を再構築できるよう、mark のデータをシリアライズ済みの HTML に埋め込みます。詳しくは、[serialization reference](/docs/integrations/sanity/reference/plugin-configuration#serialization) を参照してください。
## Next steps
- /docs/integrations/sanity/guides/translating-content
- /docs/integrations/sanity/guides/querying-translations
- /docs/integrations/sanity/guides/configuring-sanity