AI Localization Agent について
AI Localization Agentは、l10n.devを通じてソフトウェアのi18nファイルを翻訳するMCPサーバーです。翻訳と形式検証をサーバー側で行い、エージェントがソースファイルをコンテキストに読み込む必要を減らします。
主な機能
- 01165言語への翻訳
- 02ファイル形式とプレースホルダーの保持・検証
- 03プロジェクトの言語構成の検出
- 04用語集と言語指示の保存
- 05新規・変更文字列の差分翻訳
活用シーン
- 01アプリのi18nファイルを複数言語に翻訳
- 02複数ファイル間で用語と文体を統一
- 03変更された原文だけの翻訳を更新
MCP 対応
MCPサーバーは、ファイル翻訳、プロジェクト構成の検出、用語集と言語指示の管理ツールをクライアントに提供します。アカウント残高とAPIキー状態を確認するツールも公開します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
16掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| sourceFile | string | はい | ソース i18n ファイルの絶対パスまたは相対パス(JSON、JSONC、ARB、YAML、PO、XLIFF、MD など) |
| targetLanguages | array | いいえ | BCP-47 言語コード。例:['es','fr','de']。省略した場合はプロジェクト構造から自動検出されます。 |
| translateOnlyNewStrings | boolean | いいえ | 新規または変更された文字列のみを翻訳し、対象ファイルにすでに存在する文字列はスキップします。文字数クォータを節約できます。デフォルトは false です。注:初回実行時はハッシュテーブルが空のため、追加された文字列のみが翻訳されます。注:generateGlossary も有効な場合、ソース全体の文字数分がクォータから差し引かれます。 |
| generateGlossary | boolean | いいえ | 今回の翻訳から用語集を生成して保存し、今後の翻訳の一貫性を保ちます。追加の文字数を消費します(ソース全体の文字数分が事前に差し引かれます)。デフォルトは false です。 |
| instruction | string | いいえ | この翻訳に対する言語指示。例:'Use formal tone, never translate Dashboard'。このリクエストでは、有効な保存済み指示より優先されます。最大 1000 文字です。 |
| generatePluralForms | boolean | いいえ | サフィックス付きの複数形文字列を生成します(例:i18next 用)。ソースから対象への厳密な対応付けが必要な場合は有効にしないでください。デフォルトは false です。 |
| useShortening | boolean | いいえ | 適切な場合に、より短い訳文を許可します。デフォルトは false です。 |
| translateMetadata | boolean | いいえ | UI 文字列とともにメタデータ項目も翻訳します(例:Flutter ARB の @key の説明)。false(デフォルト)の場合、対象ファイルのメタデータ項目は変更されません。 |
| replace | boolean | いいえ | 既存の対象ファイルをその場で置き換えます。false(デフォルト)の場合、一意の名前を付けたコピーを作成します。 |
| languageCodeRegex | string | いいえ | ファイル名内の言語コードを特定する正規表現。組み込みの検出方法を上書きします。名前付きキャプチャグループ (?<language>...) を含める必要があります。例:'^common\\.(?<language>[\\w-]+)\\.json$'。グループの前後のテキストは対象ファイルにも引き継がれるため、common.en.json は common.ru-RU.json になります。ローカライズファイルが存在するにもかかわらず l10n_detect_project_structure が構造を不明と報告する場合にのみ必要です。 |
| verbose | boolean | いいえ | 出力に SDK の詳細ログを表示します。デフォルトは false です。 |
詳細
ai-l10n-mcp
AI エージェントが l10n.dev にアクセスできるようにする MCP サーバーです。l10n.dev は、ソフトウェアの i18n ファイル専用に開発された**プロフェッショナルなローカライズサービス**です。
AI エージェントがアプリを翻訳するとき、ファイルの内容をチャットに貼り付けるという単純な方法では、すぐに限界が見えてきます。ローカライズファイルは大きく、形式には厳密なルールがあり、プレースホルダーはそのまま保持する必要があります。用語集はセッションをまたいで揺れ、エージェントは実行間で記憶を保持できません。この MCP は、エージェントがツールとして呼び出す専用のローカライズエンジンで、この脆弱なワークフローを置き換えます。 生のファイル内容でコンテキストウィンドウを無駄にすることなく、プロフェッショナル品質の出力を得られます。
AI エージェントにプロフェッショナルなローカライズのコパイロットを与えるものと考えてください。 エージェントは意図の把握とオーケストレーションを担当し、l10n.dev は正確性、一貫性、形式の保証を備えた実際の翻訳を担当します。
AI エージェントに直接依頼する代わりに、これを使う理由
| AI エージェント単独 | ai-l10n-mcp | |
|---|---|---|
| 165 言語への対応 | まちまちで、多くの場合は限定的 | ✅ 全言語に対応 |
| 大きなファイルの処理 | 途中で切り詰められる、またはスキップされる | ✅ すべてサーバー側で処理 |
| 形式の保持 | 不安定 — プレースホルダー、キー、構造が壊れる | ✅ 保証 — 翻訳後にソース形式を検証 |
| 用語集の一貫性 | セッション間やファイルの分割間で失われる | ✅ 保存された用語集をすべてのファイルと分割に適用 |
| 翻訳後の編集が必要か | 通常は必要 | ✅ 不要 — 出力はそのまま本番環境で使用可能 |
| トークンコスト | 高い — 生のファイルをコンテキストに含める | ✅ 低い — 返されるのはメタデータのみ |
| 差分更新 | 毎回、全体を読み込んで再翻訳 | ✅ 新規または変更された文字列のみ |
特長
- 165 言語 — 1 回の呼び出しで、世界中の幅広い言語に翻訳
- 形式を保証 — JSON、JSONC、Flutter ARB、YAML、PO(gettext)、XLIFF、MD、およびテキストベースのすべての i18n 形式に対応。プレースホルダー、キー、構造を保持し、翻訳後に検証します
- 対象言語の自動検出 — プロジェクト構造から対象言語を検出
- 用語集の永続化 — コンテンツから用語集を生成して保存し、以降のすべてのファイルと分割に自動適用して用語を統一
- 言語的な指示 — 言語ペアごとにスタイルやトーンのルール(例:「フォーマルな文体を使用」)を保存
- 差分翻訳 — ハッシュベースの変更検出により翻訳済みの文字列をスキップし、クォータを節約するとともに既存の翻訳を保護
- 先回りの品質管理 — 翻訳後ではなく、翻訳前に言語ペアごとの指示と用語集を確認
Claude Desktop、Cursor、Windsurf、GitHub Copilot、OpenAI Codex、または MCP 互換のエージェントを l10n.dev の翻訳エンジンに直接接続できます。
インストールと設定
API キーの取得
無料アカウントを作成し、https://l10n.dev/ws/api-keys で API キーを取得してください。
ヒント: 各設定で
L10N_API_KEYを設定する代わりに、l10n_set_api_keyを使ってキーを保存するよう AI に依頼できます。キーは~/.ai-l10n/config.jsonに保存され、自動的に使用されます。
Claude Desktop
Claude Desktop で Settings > Developer > Edit Config を開きます。Claude Desktop がインストール環境に応じた正しい MCP 設定ファイルを開きます。macOS では通常、~/Library/Application Support/Claude/claude_desktop_config.json です。Windows ではインストール方法によって保存先が異なる場合があるため、手動で移動せず Edit Config を使用してください。次を追加します。
{
"mcpServers": {
"l10n": {
"command": "npx",
"args": ["-y", "ai-l10n-mcp"],
"env": {
"L10N_API_KEY": "your-api-key-here"
}
}
}
}
Cursor
Cursor の Customize を開き、MCP サーバーを追加・管理します。ファイルを使って設定する場合は、次のいずれかの設定ファイルを作成します。
- ユーザー全体に適用する設定:
~/.cursor/mcp.json - ワークスペース固有の設定:プロジェクト内の
.cursor/mcp.json
次を追加します。
{
"mcpServers": {
"l10n": {
"type": "stdio",
"command": "npx",
"args": ["-y", "ai-l10n-mcp"],
"env": {
"L10N_API_KEY": "your-api-key-here"
}
}
}
}
Windsurf
Windsurf では、Cascade の MCPs パネルを開くか、Devin Settings > Cascade > MCP Servers に移動します。手動で追加する必要がある場合は、~/.codeium/windsurf/mcp_config.json を編集して、次の内容を追加します。
{
"mcpServers": {
"l10n": {
"command": "npx",
"args": ["-y", "ai-l10n-mcp"],
"env": {
"L10N_API_KEY": "your-api-key-here"
}
}
}
}
GitHub Copilot (VS Code)
コマンドパレットを開き、MCP: Open User Configuration を選択します。または、ワークスペースかユーザー設定に .vscode/mcp.json ファイルを作成します。次の内容を追加します。
{
"servers": {
"l10n": {
"type": "stdio",
"command": "npx",
"args": ["-y", "ai-l10n-mcp"],
"env": {
"L10N_API_KEY": "your-api-key-here"
}
}
}
}
OpenAI Codex (CLI and IDE)
ユーザー全体の設定には ~/.codex/config.toml に、信頼できるプロジェクトの設定には .codex/config.toml に追加します。
[mcp_servers.l10n]
command = "npx"
args = ["-y", "ai-l10n-mcp"]
[mcp_servers.l10n.env]
L10N_API_KEY = "your-api-key-here"
ターミナルから追加することもできます。
codex mcp add l10n --env L10N_API_KEY=your-api-key-here -- npx -y ai-l10n-mcp
Claude Code (CLI and VS Code extension)
ターミナルからサーバーを追加します。
claude mcp add --env L10N_API_KEY=your-api-key-here --transport stdio l10n -- npx -y ai-l10n-mcp
プロジェクトで共有する設定の場合、Claude Code はプロジェクトのルートにある .mcp.json ファイルに MCP サーバーを保存することもできます。
利用可能なツール
翻訳
| ツール | 説明 |
|---|---|
l10n_translate_file | i18n ソースファイルを 1 つ以上のターゲット言語に翻訳します |
l10n_detect_project_structure | ソースファイルをスキャンし、構造の種類、ソース言語、ターゲット言語、ターゲットファイルのパスを検出します |
どちらのツールも、言語コードのフォルダー(locales/en/common.json、
folder-based として報告)とファイル名(file-based)の両方で言語コードを検出します。ファイル名はコードそのもの(locales/en.json)の場合も、ほかの部分とコードを組み合わせたもの(app_en.arb、
locales/emails.en.json、locales/en-US.common.json、messages_en_US.properties)の場合も対象です。認識されない命名規則を使う場合は、(?<language>...) グループを含む正規表現の languageCodeRegex を渡します。例:^emails\.(?<language>[\w-]+)\.json$。グループの前後にあるテキストはターゲットファイルにも引き継がれるため、emails.en.json は emails.ru-RU.json になります。
言語的な指示
| ツール | 説明 |
|---|---|
l10n_list_instructions | 保存済みの言語的な指示(トーン、スタイル、ブランドボイス)をすべて一覧表示します |
l10n_create_instruction | 言語ペアの新しい指示を作成します |
l10n_update_instruction | 既存の指示を更新します |
l10n_delete_instruction | 指示を削除します |
用語集
| ツール | 説明 |
|---|---|
l10n_list_glossaries | 保存済みの用語集をすべて一覧表示します |
l10n_get_glossary | 特定の用語集の詳細とエントリーを取得します |
l10n_create_glossary | 空の用語集を新規作成します |
l10n_update_glossary | 用語集の名前または有効状態を更新します |
l10n_delete_glossary | 用語集を完全に削除します |
l10n_add_glossary_entry | 用語集に用語の対応関係を追加します |
l10n_delete_glossary_entry | 用語の対応関係を削除します |
アカウント
| ツール | 説明 |
|---|---|
l10n_get_balance | 残りの文字数を確認します |
l10n_set_api_key | API キーをローカルに保存し、自動的に使用できるようにします |
l10n_get_api_key_status | API キーが設定されているか確認します |
利用可能なプロンプト
l10n_project_setup
最適な翻訳品質を得るために、言語的な指示と用語集の確認および設定を案内します。新しいプロジェクトの開始時、または l10n.dev の設定を確認するときに実行してください。
引数:
sourceLanguage— ソース言語コード(デフォルト:en)targetLanguages— カンマ区切りのターゲット言語コード(例:es,fr,de)
l10n_setup_automation
プロジェクトをスキャンして i18n のソースファイルを検出し(l10n_detect_project_structure を使用)、言語に関する指示、用語集、翻訳の整合性を確認したうえで、GitHub Actions または npm スクリプトを使った完全自動翻訳を対話形式で設定します。
GitHub Actions の場合は、次の 4 つのトリガーオプションを案内します。
- A)
mainへのプッシュごと — 翻訳して直接コミットし直す - B) プルリクエスト時 — 翻訳してレビュー用の PR を作成する
- C) スケジュール実行 — 毎晩、または cron で翻訳する
- D) 手動トリガーのみ —
workflow_dispatch
ai-l10n.config.json と .github/workflows/translate.yml を作成する(または package.json のスクリプトを更新する)と、API キーの追加場所と、次回のトリガー時に実行される処理を案内します。
引数:
sourceLanguage— ソース言語コード(デフォルト:en)targetLanguages— カンマ区切りのターゲット言語コード(例:es,fr,de)
ワークフローの例
ユーザー:「アプリをスペイン語とフランス語に翻訳してください」
Claude(この MCP サーバーを使用)は次のように動作します:
l10n_list_instructionsを呼び出す —es/frの言語ペアに関する指示がないことを確認する- 次のように尋ねる:「スペイン語/フランス語の指示が見つかりません。翻訳前にトーンやスタイルのルールを設定しますか?(例:フォーマル、カジュアル、ブランド用語は翻訳しない)」
- ユーザーが答える:「ラテンアメリカ向けのフードアプリなので、カジュアルなトーンにしてください」
- スタイルルールを指定して
l10n_create_instructionを呼び出す l10n_list_glossariesを呼び出す —es/frの有効な用語集がないことを確認する- 次のように尋ねる:「スペイン語/フランス語の用語集が見つかりません。今回の実行で用語集の生成を有効にしますか?一貫した翻訳のために、重要な用語を保存できます。」
- ユーザーが答える:「はい」
es.jsonとfr.jsonがすでに存在することを検出し、次のように尋ねる:「ターゲットファイルはすでに存在します。変更されていない文字列をスキップしてクォータを節約するため、増分モードを有効にしますか?」- ユーザーが答える:「はい」
sourceFile、targetLanguages: ["es", "fr"]、instruction、generateGlossary: true、translateOnlyNewStrings: trueを指定してl10n_translate_fileを呼び出す- 結果を報告する
増分翻訳
JSON ベースの形式では、すでに翻訳済みの文字列をスキップするために translateOnlyNewStrings: true を有効にします。変更を検出するため、各ソース文字列のハッシュ(内容そのものではありません)が l10n.dev サーバーに保存されます。追加または変更された文字列だけを翻訳するため、文字数クォータを節約できます。
注: 初回の翻訳では、変更された文字列を検出するためのハッシュテーブルが空なので、追加された文字列のみを翻訳します。
自動化:CLI と GitHub Actions
CI/CD の自動化とコマンドラインでの使用方法については、以下を参照してください。
- ai-l10n CLI — ターミナルまたは CI パイプラインからファイルを翻訳します
- GitHub Action — プッシュ、PR、または手動トリガーで自動翻訳します
料金
- 無料プラン — 毎月 10,000 文字まで無料で、クレジットカードは不要です。
- 従量課金制 — サブスクリプション不要の、手頃な文字数ベースの料金です。
- 現在のプラン — 最新の料金については l10n.dev/#pricing をご覧ください。
プライバシーとセキュリティ
- データを保持しません — リクエストの処理に必要な時間を超えて、ソーステキストや翻訳を l10n.dev のサーバーに保存することはありません。
- 暗号化通信 — すべての API 呼び出しで HTTPS を使用します。
- プライバシーを最優先 — 開発者のために開発者が構築し、プライバシー、信頼性、品質を最優先事項としています。
サポート
| 📧 メール | [email protected] |
| 🐛 課題 | GitHub Issues |
| 📚 API ドキュメント | api.l10n.dev/doc |
| 🌐 ウェブサイト | l10n.dev |
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。