# General Translation Changelog: gt-sanity 3.0.0: Sanityネイティブのローカライゼーションプラグイン
URL: https://generaltranslation.com/ja/blog/gt-sanity_v3_0_0.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: 
Authors: Brian Lou
Published: 2026-07-22

## 概要

`gt-sanity` v3 では、Sanity 本来の動作をこれまで以上に重視しています。フィールドレベル localization は、GT 独自の Studio UI ではなく、リファレンスとなる Sanity プラグイン [`sanity-plugin-internationalized-array`](https://github.com/sanity-io/sanity-plugin-internationalized-array) によって提供されるようになりました。また、標準の Sanity ローカライゼーションプラグインと同じ `options` ベースのパターンを使って、スキーマ内でフィールドを翻訳対象から直接除外できるようになりました。

狙いは明確です。`gt-sanity` は、Sanity エコシステムですでにメンテナンスされているプラグイン (ドキュメントレベル用の `@sanity/document-internationalization`、フィールドレベル 用の `sanity-plugin-internationalized-array`) を組み合わせ、その上に Translation ワークフローを追加します。GT をインストールしても、Studio の挙動が変わることはありません。

***

## 新機能

### フィールドレベルのローカライゼーションは reference プラグイン上で動作します

`fieldLevelLocalization` (またはその `internationalizedArray` エイリアス) を有効にすると、`sourceLocale` と `locales` に基づいて `sanity-plugin-internationalized-array` が自動設定されるようになりました。ネイティブ プラグインが `internationalizedArray*` スキーマ型と Studio の編集 UI (言語ごとの追加ボタン、言語ラベル、フィールドアクション) を担うため、Studio の挙動は Sanity ユーザーにとって既知のものと常に一致し、プラグインの更新もアップストリームでリリースされ次第すぐに反映されます。

```ts title="sanity.config.ts"
gtPlugin({
  sourceLocale: 'en',
  locales: ['es', 'fr', 'ja'],
  translateDocuments: [{ type: 'post' }],
  fieldLevelLocalization: { enabled: true },
  translationLevel: 'internationalizedArray',
});
```

保存されるデータ自体に変更はありません。項目は引き続き `{ _key, _type, language, value }` のままなので、既存のコンテンツをマイグレーションする必要はありません。config にはネイティブのパススルーオプションも追加されました: `defaultLanguages`, `buttonLocations`, `buttonAddAll`, `languageDisplay`, `apiVersion`。

### 独自のプラグインインスタンスを使用する

すでに `sanity-plugin-internationalized-array` を自分で登録している場合は、そのままのセットアップを維持してください。翻訳の検出はデータ構造ベースで行われ、スキーマ型を誰が登録したかに関係なく、保存済みデータを読み書きします。型が重複して登録されないよう、`fieldLevelLocalization` は無効のままにし、`translationLevel` で各ドキュメントを フィールドレベル 翻訳の対象にしてください。

```ts title="sanity.config.ts"
plugins: [
  internationalizedArray({
    languages: [
      { id: 'en', title: 'English' },
      { id: 'es', title: 'Spanish' },
    ],
    fieldTypes: ['string'],
  }),
  gtPlugin({
    sourceLocale: 'en',
    locales: ['es'],
    translateDocuments: [{ type: 'post' }],
    translationLevel: 'internationalizedArray',
  }),
],
```

`gt-sanity` は、`internationalizedArray`、`internationalizedArrayLanguageFilter`、`isInternationalizedArrayItemType` をそのまま直接利用できるよう再エクスポートしています。

### スキーマ内のフィールドを翻訳対象から除外する

プラグインの設定で別途リストを管理する代わりに、フィールドまたは型全体にマークを付けます:

```ts
defineField({
  name: 'internalNotes',
  type: 'string',
  options: { gt: { exclude: true } },
});
```

serializer は、標準の Sanity ローカライゼーションプラグインの除外オプションにも対応しているため、1 つのパターンですべてをカバーできます。

* `options.gt.exclude` — GT 独自の名前空間
* `options.documentInternationalization.exclude` — `@sanity/document-internationalization`
* `options.aiAssist.exclude` — `@sanity/assist`

除外はネストの深さに関係なく適用され、カスタム型定義の `options` に設定すると、その型のすべての出現箇所が除外されます。これは、ネイティブプラグインの「field または type」というセマンティクスに一致します。`options.gt` は declaration merging によって完全に型付けされており、id ベースの `ignoreFields` / `skipFields` / `dedupeFields` プラグインオプションも、スラッグの重複排除のようなドキュメント横断のルール向けに引き続き利用できます。

***

## 破壊的変更

### GT のフィールドレベルの Studio UI は削除されました

`createInternationalizedArrayTypes` のエクスポートと `FieldLevelUIComponents` 型は廃止され、`GTFieldLevelLocalizationConfig` の `typePrefix`、`includeCompatibilityTypes`、`components` オプションも削除されました。これらに対応するネイティブの同等機能はありません。削除されたオプションを渡すと警告が出力され、無視されます。カスタムの `typePrefix` で作成されたデータは検出されなくなりますが、標準の `internationalizedArray*` データには影響ありません。

### `localize: false` のより深い階層での適用

除外指定 (スキーマ の options と従来の `localize: false`) は、これまで除外対象になっていなかったトップレベルの object フィールド内のフィールドにも適用されるようになりました。以前は誤って翻訳対象として送信されていた Content は、今後は送信されなくなります。アップグレード後に翻訳からフィールドが「消えた」ように見える場合は、そのフィールドに除外指定が付いていないか確認してください。

***

## リンク

* [クイックスタート](/docs/integrations/sanity/quickstart)
* [設定ガイド](/docs/integrations/sanity/guides/configuring-sanity)
* [API リファレンス](/docs/integrations/sanity/reference/plugin-configuration)

## Sitemap

See the full [sitemap](https://generaltranslation.com/sitemap.md) for all pages.
