mcpField
R
react-i18n

react-i18n

github.com/fusengine開発3446 回インストール1 日前に更新
リポジトリ

react-i18n について

ViteまたはCRAで構築したReact 19アプリにreact-i18nextを導入する開発者向けのスキルです。型安全なキー、翻訳の読み込みと整理、言語処理、テストを扱い、Next.jsは対象外です。

主な機能

  1. 01Selector APIによる型安全な翻訳キー
  2. 02名前空間と翻訳の遅延読み込み
  3. 03複数形処理と補間
  4. 04ブラウザー・URL・Cookieによる言語検出
  5. 05React 19のSuspenseとTrans連携
  6. 06RTL対応と国際化テスト

活用シーン

  1. 01React 19アプリへの多言語対応の追加
  2. 02機能やルート単位での翻訳読み込み
  3. 03複数形や補間メッセージの書式設定
  4. 04ローカライズされた画面のテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fusengine/claude-plugins --skill react-i18n

インストール後、Claude Code で/react-i18nを入力して読み込まれたか確認します。

詳細

React 19 アプリ(Vite/CRA、Next.js は対象外)で react-i18next を実装します。`useTranslation()` フックの使用方法、型安全な翻訳キーのための TypeScript Selector API(i18next ≥25.4)、コード分割に対応した名前空間の構成、ICU MessageFormat による複数形、補間(変数、日付、数値、通貨)、翻訳の遅延読み込み、ブラウザー/URL/Cookie による言語検出を扱います。

さらに、React 19 の Suspense との統合、翻訳内で JSX を使うための Trans コンポーネント、RTL 言語のサポート、キーが見つからない場合のフォールバック戦略、i18n のユニットテスト設定も取り上げます。このスキルは Next.js を使用しない React アプリを対象としています。Next.js App Router の i18n には nextjs-i18n を、Astro には astro-i18n を使用してください。

React 19 向け react-i18next

エージェントのワークフロー(必須)

実装を始める前に、必ず 3 つのエージェントを並行して起動してください。それぞれ 1 回の Agent 呼び出しで name を指定します。

  1. fuse-ai-pilot:explore-codebase - 既存の i18n 設定と翻訳パターンを分析します
  2. fuse-ai-pilot:research-expert - Context7/Exa を使って最新の react-i18next/i18next ドキュメントを確認します
  3. mcp__context7__query-docs - TypeScript Selector API と React 19 の Suspense パターンを確認します

実装後、検証のために fuse-ai-pilot:sniper を実行してください。


必須:SOLID 原則

必ず solid-react スキルの SOLID 原則を適用してください。

→ 完全なルールについては ../solid-react/SKILL.md を参照してください

主なルール:

  • ソースファイルは FUSE_SOLID_MAX_LINES 以下に保ち、凝集性が低下したら責務ごとに分割します
  • インターフェースは modules/[feature]/src/interfaces/ に配置します
  • すべてのエクスポートに JSDoc を必須とします
  • コンポーネントにビジネスロジックを含めません

主なフック

フック目的ガイド
useTranslation()翻訳と i18n インスタンスにアクセスしますreferences/i18next-basics.md
useTranslation(ns)特定の名前空間を読み込みますreferences/namespaces.md
useTranslation([ns])複数の名前空間を読み込みますreferences/namespaces.md

→ 詳しい使用方法については references/i18next-basics.md を参照してください


主なパッケージ

パッケージ目的サイズ
i18nextコアライブラリ約40KB
react-i18nextReact バインディング約12KB
i18next-http-backend遅延読み込み約5KB
i18next-browser-languagedetector自動検出約8KB

主な機能

TypeScript Selector API(i18next ≥25.4)

自動補完に対応した型安全な翻訳です。 → references/typescript-types.md を参照してください

名前空間

コード分割に対応できるよう、機能ごとに翻訳を整理します。 → references/namespaces.md を参照してください

複数形

ICU MessageFormat に対応した、数に基づくルールです。 → references/pluralization.md を参照してください

補間

変数、日付、数値、通貨の書式設定です。 → references/interpolation.md を参照してください

遅延読み込み

ルートごとに翻訳をオンデマンドで読み込みます。 → references/lazy-loading.md を参照してください

言語検出

ブラウザー、URL、Cookie、localStorage から言語を自動検出します。 → references/language-detection.md を参照してください

React 19 との統合

Suspense、useTransition、Concurrent Rendering に対応します。 → references/react-19-integration.md を参照してください

Trans コンポーネント

翻訳内で JSX 要素を使用します。 → references/trans-component.md を参照してください

テスト

ユニットテスト用に i18n をモックします。 → references/testing.md を参照してください

RTL のサポート

右から左に記述する言語(アラビア語、ヘブライ語)に対応します。 → references/rtl-support.md を参照してください

フォールバック戦略

キーが見つからない場合も適切に処理します。 → references/fallback-strategies.md を参照してください


テンプレート

テンプレート用途
templates/basic-setup.mdReact 19 での設定
templates/language-switcher.mdドロップダウンコンポーネント
templates/typed-translations.mdTypeScript Selector API
templates/form-validation-i18n.md翻訳されたフォームエラー
templates/lazy-loading-routes.mdルートごとの読み込み
templates/date-number-formatter.mdIntl によるフォーマット
templates/plural-interpolation.md数に基づくメッセージ
templates/trans-component-examples.md翻訳内の JSX
templates/testing-i18n.md単体テストの設定

モジュラーアーキテクチャ(SOLID)

src/
├── modules/cores/i18n/
│   ├── src/
│   │   ├── interfaces/
│   │   │   └── i18n.interface.ts
│   │   ├── services/
│   │   │   └── i18n.service.ts
│   │   ├── hooks/
│   │   │   └── useLanguage.ts
│   │   └── config/
│   │       └── i18n.config.ts
│   ├── components/
│   │   └── LanguageSwitcher.tsx
│   └── locales/
│       ├── en/
│       │   └── translation.json
│       └── es/
│           └── translation.json
└── main.tsx

ベストプラクティス

  1. Suspense:読み込み状態に対応するため、アプリを <Suspense> でラップします
  2. 名前空間:機能/モジュールごとに名前空間を1つ使用します
  3. TypeScript:型安全なキーには Selector API を使用します
  4. 遅延読み込み:必要に応じて名前空間を読み込みます
  5. 検出:言語検出の順序を設定します
  6. フォールバック:必ず fallbackLng を設定します

禁止事項(アンチパターン)

  • ❌ 文字列のハードコード → t('key') を使用します
  • ❌ Suspense を使用しない → 読み込み時にちらつきが発生します
  • ❌ すべての翻訳を1つのファイルにまとめる → 名前空間を使用します
  • ❌ フォールバック言語を設定しない → UI が壊れます
  • ❌ 文字列を連結する → 補間 {{var}} を使用します
  • ❌ 言語状態を手動で管理する → i18n.changeLanguage() を使用します

コメント