# General Translation Knowledge Base: Cursor や Claude Code でアプリを国際化するには？
URL: https://generaltranslation.com/ja/kb/ai-agent-i18n-setup.mdx
Docs index: https://generaltranslation.com/llms.txt
Description: Cursor または Claude Code で General Translation の Setup for Agents プロンプトを使い、機能と対象言語を選んで、エージェントに実装と検証を任せます。ブラウザでのサインイン、機械可読なドキュメント、MCP ツールにより、セットアップから翻訳、レビューまでがシームレスにつながります。継続的なローカライゼーションは、Locadex を使ってプルリクエスト経由で自動化できます。
Category: 国際化
Last updated: 2026-10-21
Authors: Kevin Liu, Kevin Wu
Published: 2026-10-21

「アプリをスペイン語に翻訳して」と指示するだけでは、決めるべきことがいくつも残ります。エージェントは既存のライブラリをそのまま使うべきか。スペイン語には専用の URL が必要か。このセッションが終わった後、新しく追加された文言は誰が翻訳するのか。アプリケーションの編集を依頼する前に、こうした方針を決めておきましょう。

General Translation では、プロジェクトの調査からインテグレーション、翻訳、検証までをコーディングエージェントに順を追って進めさせるセットアッププロンプトを提供しており、継続的にメンテナンスしています。まずは 1 つの機能を動作させ、検証済みのパターンをコードベース全体に展開してください。

## Video

The video is narrated in English, with English captions.

[Can an AI coding agent set up i18n for me?](https://caxecubb9c64cezv.public.blob.vercel-storage.com/films/kb-ai-agent-i18n-setup.mp4) (46 秒)

General Translation lets your agent set up i18n with the prompt from Setup for Agents. The prompt has the agent run `gt login`, which you approve in your browser, and run `gt init` with a flag for every question, so the command asks nothing. Then it wraps your page in the `T` component, adds a `LocaleSelector`, runs `gt translate`, builds the app and reports what it actually verified.

## Setup for Agents から始める

generaltranslation.com の **Setup for Agents** を使うか、Cursor や Claude Code に[公式のエージェントプロンプト](https://generaltranslation.com/agent-prompt.md)を渡してください。このプロンプトは、エージェントにプロジェクトを調査させ、最新のフレームワーク向け手順に従うよう指示します。サポート対象のプロジェクトでは、[`gt init`](/docs/cli/reference/commands/init) で実験的なフレームワークのセットアップを利用できます。エージェントは生成されたインテグレーションを確認し、コンテンツをマークし、翻訳を生成したうえで、アプリの動作を検証します。

ローカルからサービスにアクセスする場合は、[`gt login`](/docs/cli/reference/commands/login) を使えば、チャットに APIキーを貼り付けなくてもブラウザでサインインを承認できます。ただし、CLI 側で対象のプロジェクトを選択または設定しておく必要があります。セットアップ用のフラグを使うと、対話型ターミナルがなくてもウィザードの質問に回答できますが、初回のサインインには引き続きユーザーの承認が必要です。無人ビルドでは、CI のシークレットストアに保存したスコープ付きの認証情報を使用してください。

エージェントは、[`llms.txt`](https://generaltranslation.com/llms.txt) からドキュメントを見つけたり、ドキュメントの URL の末尾に `.mdx` を付けてクリーンなソースを取得したり、[OpenAPI 仕様](https://generaltranslation.com/openapi.yaml)を参照したりできます。[コーディングエージェントガイド](/docs/overview/for-coding-agents)には、再利用できるプロジェクト向けの指示がまとめられています。これらのリソースは継続的にメンテナンスされているため、セットアップの内容を常に最新の製品 API に合わせられます。こうした検出用のユーザー接点の仕組みについては、[ドキュメント設計に関する記事](/blog/rewriting-our-docs)で解説しています。

## エージェントには範囲を限定したタスクを与える

フレームワーク、インストール済みのバージョン、レンダリングモデル、ルート、既存のi18n設定、ビルドスクリプトを調査するようエージェントに指示します。アプリですでにi18nライブラリを使用している場合は、移行がタスクに含まれていない限り、そのライブラリを引き続き使用します。GTのCLIでは、next-intlやreact-i18nextなど、[サポート対象の既存カタログを翻訳](/docs/cli/guides/generating-translations)できます。

ソース言語、ターゲットロケール、変更対象の機能を指定します。バリデーションメッセージ、プレースホルダー、アクセシビリティ用のラベル、メタデータも対象に含めてください。ローカル配信とCDN配信のどちらを使うかを決め、[ダッシュボードの翻訳エディター](/docs/platform/dashboard/guides/reviewing-translations)で結果をレビューする担当者を指名します。

## General Translation の MCP サーバーに接続する

General Translation がホストする [Model Context Protocol (MCP) サーバー](/docs/overview/for-coding-agents#mcp) を使うと、コーディングエージェントがプロジェクトの最新の設定を確認し、翻訳の文脈を管理できるようになります。エージェントはプロジェクトのロケールを調べたり、共有された用語を参照したり、タスクに応じて用語集の用語やカスタムプロンプトを更新したりできます。これにより、コードの変更を、チームが General Translation で管理している翻訳ルールと連携させることができます。

この接続では、次の操作を行うツールを通じて、翻訳ワークフロー全体をエンドツーエンドでサポートします。

* コンテンツの翻訳、原文ファイルのアップロード、翻訳ジョブのキュー登録、ステータスの確認、結果のダウンロード。
* CDN 上の翻訳の公開および公開の取り消し。
* プロジェクトの検索と作成、および権限がある場合のスコープ付きプロジェクト API キーの作成。
* コンテキストグループ、用語集の用語、カスタムプロンプトの管理。

エージェントには、実行させたいワークフローに必要な権限を付与してください。生成されたキーは保護されたシークレットストアに保管し、チャットやブラウザ側のコードには絶対に含めないでください。翻訳の生成にはこのサービスを使用するため、従量課金の対象となります。アプリのローカルでの抽出から翻訳までの一連の処理は、以下の CLI が担います。

**Cursor** では、既存のエントリを残したまま、プロジェクトの `.cursor/mcp.json` に次のサーバーエントリを追加します。設定や認証のオプションについては、[Cursor の MCP セットアップ](https://cursor.com/docs/mcp)を参照してください。

```json title=".cursor/mcp.json"
{
  "mcpServers": {
    "generaltranslation": {
      "url": "https://api.gtx.dev/mcp"
    }
  }
}
```

**Claude Code** では、[HTTP トランスポート](https://code.claude.com/docs/en/mcp)を使用して同じサーバーを登録します。

```bash
claude mcp add --transport http generaltranslation https://api.gtx.dev/mcp
```

クライアントの OAuth サインインフローを完了するか、[MCP 認証ガイド](/docs/overview/for-coding-agents#mcp)の説明に従って、クライアントのシークレットヘッダー設定で APIキーを構成してください。Context Management を使用するには、OAuth 経由での Organization Context へのアクセス権、または該当する Context 権限を持つ組織キーが必要です。プロジェクトキーではこれらのツールにアクセスできません。

まずは具体的なリクエストから始めましょう。たとえば「generaltranslation MCP サーバーを使って、私のプロジェクト一覧を表示し、ローカライズ中のプロジェクトのロケール設定を見せて」と依頼します。次に、プロジェクトに割り当てられたコンテキストグループをエージェントに確認させます。コンテキストグループには、共有の用語集の用語とカスタムプロンプトが格納されています。エージェントは機能を準備する際にこれらの用語や指示を活用できるほか、用語やスタイルの変更を依頼した場合にはそれらを更新することもできます。

コードのインテグレーションにはフレームワークのドキュメントを、以下の抽出・翻訳の手順には CLI を使用してください。MCP 接続によってエージェントは稼働中のプロジェクトとその文脈にアクセスできるようになりますが、アプリ側では引き続き SDK のセットアップ、翻訳済みコンテンツ、そして動作確認が必要です。

## 受け入れ基準を含む機能ブリーフを追加する

このブリーフを公式のセットアッププロンプトに追加してください。機能とロケールは、ご自身の要件に合わせて置き換えてください。以下の例では、英語、スペイン語、フランス語を使用しています。

```text
このアプリケーションのプロジェクト一覧機能を国際化してください。
ソース言語は英語、対象言語はスペイン語とフランス語とします。
見出し、オーナー名、プロジェクト数、検索入力欄、表示ラベル、
プレースホルダー、言語セレクターを対象に含めてください。ローカルにバンドルされた翻訳を使用し、
既存のルートとプロバイダーは維持してください。許可されている場合は、接続済みの GT MCP サーバーを使用して
プロジェクト設定と割り当てられた用語を読み取ってください。接続や権限の不足があれば
報告してください。このタスク以外の共有コンテキストは変更しないでください。
件数 0、1、2、句読点を含む名前、入力ラベルと
プレースホルダー、言語の切り替え、再読み込み後の保持、本番環境のビルドを検証してください。
このアプリが SSR を使用している場合は、サーバーでレンダリングされたコンテンツも確認してください。実際に実行したコマンドと
その結果、翻訳レビューのステータス、未テストの項目を報告してください。ソーステンプレートは
完了した翻訳ではありません。変更はこの機能とそのセットアップに限定してください。
デプロイやマージは行わないでください。
```

プロジェクトのルールは、エージェントが読み込む指示の仕組みに記述してください。Cursor については [project rules and AGENTS.md](https://cursor.com/docs/rules)、Claude Code については [CLAUDE.md and other project instructions](https://code.claude.com/docs/en/memory) のドキュメントを参照してください。選択したライブラリ、ソースロケール、翻訳コマンド、必須のチェック項目を既存の指示に追加します。内容に食い違いが生じる恐れがあるため、同じ内容のコピーを複数管理するのは避けてください。

## 代表的な実装を確認する

ブラウザのみで動作する React アプリの場合、[React SPA クイックスタート](/docs/react/react-spa-quickstart)の手順で、レンダリング前に `gt-react` を設定します。この例では、そのセットアップが完了済みで、ローカル出力先が `src/_gt/[locale].json` であることを前提としています。使用するバージョンは `gt-react@11.4.12` と `gt@2.26.5` CLI です。

以下のコンポーネントでは、静的なテキスト、動的な値、複数形、入力テキストを扱います。アプリケーション側からプロジェクト数とオーナー名を渡してレンダリングしてください。

```tsx title="src/ProjectSummary.tsx"
import { Num, Plural, T, Var, useGT } from 'gt-react';

export default function ProjectSummary({
  count,
  ownerName,
}: {
  count: number;
  ownerName: string;
}) {
  const gt = useGT();

  return (
    <section>
      <T>
        <h1>Projects for <Var>{ownerName}</Var></h1>
        <p>
          <Plural
            n={count}
            one={<>You have <Num>{count}</Num> project.</>}
            other={<>You have <Num>{count}</Num> projects.</>}
          />
        </p>
      </T>
      <label>
        <T>Search projects</T>
        <input type='search' placeholder={gt('Search projects')} />
      </label>
    </section>
  );
}
```

[`<Var>`](/docs/react/reference/components/var) は、周囲のメッセージを翻訳しつつ、オーナー名をそのまま保持します。この値は翻訳 API には送信されません。[`<Plural>`](/docs/react/reference/components/plural) はロケールの規則に従って分岐を選択し、[`<Num>`](/docs/react/reference/components/num) は件数を書式設定します。[`useGT`](/docs/react/reference/hooks/use-gt) は翻訳関数を直接返します。表示ラベルが入力欄をラップしているため、このコントロールには翻訳済みのプレースホルダーだけでなく、ラベルも付きます。

`one` と `other` の分岐は、翻訳元である英語の場合を表しています。各ターゲット言語の翻訳では、その言語固有の複数形を表現する必要があります。英語の単数形と複数形の組み合わせをテストしただけで、すべての言語をカバーできるとは考えないでください。詳しくは [React の複数形処理ガイド](/kb/how-to-handle-plurals-in-react)を参照してください。

React SPA では、ドキュメントに記載されている [`initializeGTSPA`](/docs/react/reference/config#initialize-spa) のセットアップによって、アプリより先に翻訳が読み込まれます。このセットアップに含まれる [`LocaleSelector`](/docs/react/reference/components/locale-selector) は、選択された言語をクッキーに保存し、ページを再読み込みします。サーバーでレンダリングされるフレームワークではセットアップ要件が異なるため、各フレームワーク向けのクイックスタートを参照してください。

## 結果を評価する前に翻訳を生成する

ローカルで試す場合は、コンポーネントを追加したあと、設定済みのアプリディレクトリで次のコマンドを実行してください：

```bash
npx gt generate
```

[`gt generate`](/docs/cli/reference/commands/generate) は、翻訳サービスを呼び出さずにソーステンプレートを作成します。生成されたキー、変数マーカー、JSX 構造はそのまま維持し、スペイン語とフランス語のファイルに翻訳済みのテキストを記入してください。`es.json` が存在していても、中身がスペイン語になっているとは限りません。

サービスで翻訳を生成する場合は、[CLI の認証とプロジェクトのセットアップ](/docs/cli/quickstart)を済ませてから、[`gt translate`](/docs/cli/reference/commands/translate) を使用します。CLI ログインまたはAPIキーで認証し、プロジェクトIDは別途設定してください。ログインしただけではプロジェクトは選択されません。CI で無人実行する場合は、翻訳ワークフローに必要な権限を付与した `GT_API_KEY` を、CI プロバイダーのシークレット設定から渡してください。詳しくは[認証情報の設定ガイド](/docs/cli/guides/configuring#credentials)を参照してください。また、ツール用のキーはブラウザ側のコードに含めないでください。サービスの利用料金が発生します。

General Translation は、マークされた JSX を、その構造と指定された明示的な文脈に基づいて翻訳します。意味が曖昧な文言には [`context` プロパティ](/docs/react/reference/components/t#context)を追加し、プロジェクト共通の[用語集とカスタムプロンプト](/docs/platform/dashboard/guides/defining-context-for-translations)を適用して、製品用語やトーンを統一してください。これにより、コーディングエージェントが MCP 経由で参照するのと同じ製品ルールが、翻訳の生成にも適用されます。

[ローカルにバンドルされた翻訳](/docs/react/guides/storing-translations)を使用する場合は、本番環境向けのビルドの前にロケールファイルを用意してください。手動で管理しているファイルは、バージョン管理または翻訳パイプラインで保持します。手作業で編集した翻訳の唯一のコピーを、使い捨ての生成物と同じように ignore 対象にしないでください。

## 機能を検証してから展開する

[`gt validate`](/docs/cli/reference/commands/validate) を実行して、API リクエストを送る前にサポート対象のインライン翻訳エラーを検出します。その後、以下の各チェック項目について、エージェントに実際の結果を報告させてください。

| チェック項目                      | 期待される結果                               |
| --------------------------- | ------------------------------------- |
| スペイン語を選択し、次にフランス語を選択する      | 見出し、件数メッセージ、ラベル、プレースホルダーが選択した言語で表示される |
| 言語を選択した後にリロードする             | 選択した言語がアプリのポリシーに従って保持される              |
| 件数を 0、1、2 にして試す             | 各言語がそれぞれの複数形規則に従い、数値も正しく表示される         |
| O&#39;Connor のようなオーナー名を使用する | どの言語でも名前が崩れずにそのまま表示される                |
| 入力欄のアクセシブルネームを確認する          | 翻訳された表示ラベルと一致する                       |
| 本番環境用にビルドしてプレビューする          | 実際にリリースされるファイルでも同じように機能が動作する          |

このサンプルでは、[フランス語の 0 と英語の 0 は異なる複数形カテゴリに属します](https://cldr.unicode.org/index/cldr-spec/plural-rules)。レンダリングされた文が正しい形になっており、件数が失われていないことを確認してください。

このパターンが機能することを確認できたら、ルートや機能を 1 つずつ展開していきます。レビュー担当者は [ダッシュボードの翻訳エディター](/docs/platform/dashboard/guides/reviewing-translations) で翻訳を編集できます。翻訳者、PM、現地のレビュー担当者を招待するには Starter プランまたはエンタープライズプランが必要です。どちらのプランも [ユーザー数は無制限](https://generaltranslation.com/pricing) です。エンタープライズプランでは、さらに翻訳の承認機能も利用できます。生成されたローカルファイルをチームで編集する場合は、[`gt save-local`](/docs/cli/reference/commands/save-local) を有効にすると、その変更をアップロードして後で再利用できます。レビューのワークフローについては、[AI 翻訳のレビュー](/kb/review-translations) を参照してください。

## エージェントセッション終了後もローカライゼーションを継続する

翻訳元のテキストが変更されたときに翻訳が更新されるよう、[本番環境のビルドの前に `gt translate`](/docs/cli/guides/generating-translations) を実行してください。インクリメンタルなワークフローでは、実行のたびにすべてのメッセージを再生成せず、一致する既存の翻訳を再利用します。

自分でコーディングアシスタントを操作せずに継続的に運用したい場合は、General Translation がホストするエージェント [Locadex](/docs/platform/locadex/guides/configuring-automations) を利用できます。Locadex は新しい UI の国際化、翻訳の生成、ロケールの追加・削除の同期を行います。トリガーはプルリクエスト、プッシュ、手動から設定でき、変更はプルリクエストとして届きます。[auto-merge](/docs/platform/locadex/guides/auto-merging-prs) の利用は任意です。インテグレーションの構築はコーディングアシスタントで行い、以降のリリースでの運用は Locadex に任せることができます。Locadex の利用には Starter プランまたはエンタープライズプランが必要で、実行は[使用量](https://generaltranslation.com/pricing/usage)に応じて課金されます。セットアップについては[自動化リファレンス](/docs/platform/locadex/reference/automations)を参照してください。独自のパイプラインを使う場合は、[CI 上で翻訳を実行](/kb/translations-in-ci)することもできます。

## Related questions

- [Next.js App Router アプリに i18n を追加するには？](https://generaltranslation.com/ja/kb/add-i18n-to-nextjs.mdx): まず gt init を実行して、対応する App Router プロジェクトに General Translation を設定します。次にソースコンテンツをマークし、翻訳を生成して、言語の切り替えが機能することを確認します。gt-next はテキストを翻訳の文脈とともに JSX 内に保持し、生成、レビュー、継続的な更新は CLI、ダッシュボード エディター、Locadex が担います。このガイドでは、ローカルファイルを明示的に使うセットアップ方法も紹介します。
- [翻訳ファイルなしでi18nは実現できますか？](https://generaltranslation.com/ja/kb/i18n-without-translation-files.mdx): はい。General Translationの gt-react と gt-next ライブラリを使えば、翻訳キーも、言語ごとに管理するJSONファイルもなしで、ReactとNext.jsのi18nを実現できます。文言は `<T>` コンポーネント内のJSXにインラインで記述したままで、gt translate コマンドがコードから得た文脈をもとに、ビルド時に各言語の翻訳を生成します。さらにLocadexを使えば、プルリクエストを通じて翻訳を常に最新の状態に保てます。
- [React で複数形を扱うにはどうすればよいですか？](https://generaltranslation.com/ja/kb/how-to-handle-plurals-in-react.mdx): React で複数形を扱うには、各言語の複数形ごとに文を 1 つずつ用意し、その言語の複数形規則に従って選択します。英語の複数形は 2 種類ですが、ロシア語は 4 種類、アラビア語は 6 種類あるためです。gt-react と gt-next に含まれる General Translation の `<Plural>` コンポーネントに翻訳元の形を渡せば、各対象言語に必要な形は General Translation が生成します。
- [Locadex エージェントは何をするのか？](https://generaltranslation.com/ja/kb/what-is-locadex.mdx): Locadex は General Translation の AI エージェントで、GitHub リポジトリ内のコードを国際化し、コンテンツを翻訳します。自動化はプルリクエストの作成時、コミットのプッシュ時、または手動で開始したときに実行され、すべての変更はプルリクエストとして届きます。

## Previous and next questions

- Previous question: [多言語アプリをローンチする前に何を確認すべきか？](https://generaltranslation.com/ja/kb/multilingual-app-launch-checklist.mdx)
- Next question: [Google Slides を翻訳するには？](https://generaltranslation.com/ja/kb/translate-google-slides.mdx)

## Sitemap

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