このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "Solid の useIntlayer API の使用法を直接プロパティアクセスに更新"v8.9.02026/5/4
- "initコマンドを追加"v7.5.92025/12/30
- "レイアウトの更新と404の処理"v7.5.62025/12/27
- "ドキュメント更新"v6.1.52025/10/3
- "React Router v7対応追加"v5.8.22025/9/4
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
IntlayerでReact Router v7を翻訳する | 国際化(i18n)
このガイドでは、React Router v7 プロジェクトでロケール対応ルーティング、TypeScript サポート、および最新の開発プラクティスを使用して、シームレスな国際化のために Intlayer を統合する方法を示します。
設定ベースのルーティング (routes.ts) と ファイルシステムベースのルーティング (@react-router/fs-routes) の両方をカバーしています。
目次
代替手段ではなく Intlayer を使用する理由
「react-i18next」や「i18next」などの主要なソリューションと比較して、Intlayer は次のような統合された最適化を備えたソリューションです。
Intlayer は、ロケール対応ルーティング、ロケール検出用のミドルウェア、およびスケーリング国際化 (i18n) に必要なすべての機能を提供することにより、React Router と完全に連携するように最適化されています。
大量の JSON ファイルをページにロードするのではなく、必要なコンテンツのみをロードします。 Intlayer は、バンドルとページのサイズを最大 50% 削減するのに役立ちます。
アプリケーションのコンテンツのスコープを設定すると、大規模なアプリケーションの メンテナンスが容易になります。コンテンツ コードベース全体を確認するという精神的な負担を負うことなく、単一の機能フォルダーを複製または削除できます。さらに、Intlayer は完全に型指定されており、コンテンツの正確性を保証します。
コンテンツを同じ場所に配置すると、大規模言語モデル (LLM) によって 必要なコンテキストが削減されます。 Intlayer には、翻訳の欠落をテストする CLI、LSP、MCP および agent skills などのツール スイートも付属しており、AI エージェントの開発者エクスペリエンス (DX) がさらにスムーズになります。
AI プロバイダーの費用で、選択した LLM を使用して CI/CD パイプラインで自動化を変換します。 Intlayer は、コンテンツ抽出を自動化する コンパイラー と、バックグラウンドでの翻訳を支援する Web プラットフォーム も提供します。
大量の JSON ファイルをコンポーネントに接続すると、パフォーマンスと反応性の問題が発生する可能性があります。 Intlayer は、ビルド時のコンテンツの読み込みを最適化します。
Intlayer は単なる i18n ソリューションではなく、自己ホスト型 ビジュアル エディター と 完全な CMS を提供します。 リアルタイムで多言語コンテンツを管理できるようになり、翻訳者、コピーライター、その他のチーム メンバーとのコラボレーションがシームレスになります。コンテンツはローカルおよび/またはリモートに保存できます。
React Router v7 アプリケーションで Intlayer をセットアップするためのステップバイステップ ガイド
See the Config-Based Routing Template or File-System Routes Template on GitHub.
依存関係のインストール
お好みのパッケージマネージャーを使用して、必要なパッケージをインストールします:
bashコードをコピーコードをクリップボードにコピー
--interactiveフラグはオプションです。AI エージェントの場合はintlayer-cli initを使用してください。このコマンドはあなたの環境を検出し、必要なパッケージをインストールします。例えば:
bashコードをコピーコードをクリップボードにコピー
プロジェクトの設定
アプリケーションの言語を設定するための config ファイルを作成します:
intlayer.config.tsコードをコピーコードをクリップボードにコピー
import { type IntlayerConfig, Locales } from "intlayer"; const config: IntlayerConfig = { internationalization: { defaultLocale: Locales.ENGLISH, locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], }, }; export default config;この設定ファイルを通じて、ローカライズされたURL、ミドルウェアのリダイレクト、Cookie名、コンテンツ宣言の場所と拡張子の設定、コンソールでのIntlayerログの無効化などを設定できます。利用可能なパラメータの完全なリストについては、設定ドキュメントを参照してください。
Integrate Intlayer in Your Vite Configuration
Add the intlayer plugin into your configuration:
vite.config.tsコードをコピーコードをクリップボードにコピー
intlayer()Vite プラグインは、Intlayer を Vite と統合するために使用されます。コンテンツ宣言ファイルのビルドを確保し、開発モードでそれらを監視します。Vite アプリケーション内で Intlayer 環境変数を定義します。さらに、パフォーマンスを最適化するためのエイリアスを提供します。React Router v7 ルートを設定する
ロケール対応ルートでルーティング設定を設定します:
app/routes.tsコードをコピーコードをクリップボードにコピー
Set up your routing configuration to use file-system based routes with
flatRoutes:app/routes.tsコードをコピーコードをクリップボードにコピー
The
flatRoutesfunction from@react-router/fs-routesenables file-system based routing, where the file structure in theroutes/directory determines your application's routes. TheignoredRouteFilesoption ensures that Intlayer content declaration files (.content.ts, etc.) are not treated as route files.ルートレイアウトの作成
ルートレイアウトとロケール固有のレイアウトを設定します:
Root Layout
app/root.tsxコードをコピーコードをクリップボードにコピー
コンテンツ宣言
翻訳を保存するためのコンテンツ宣言を作成し管理します:
app/routes/[lang]/page.content.tsコードをコピーコードをクリップボードにコピー
コンテンツ宣言は、
contentDirディレクトリに含まれている限り、アプリケーション内のどこでも定義できます(デフォルトは./app)。また、コンテンツ宣言ファイルの拡張子と一致する必要があります(デフォルトは.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml})。ファイルシステムベースのルーティングを使用する場合は、
app/routes/($locale)._index.content.tsに配置できます。詳細については、コンテンツ宣言ドキュメント を参照してください。
ロケール対応コンポーネントを作成
ロケール対応ナビゲーション用の
LocalizedLinkコンポーネントを作成します:app/components/localized-link.tsxコードをコピーコードをクリップボードにコピー
ローカライズされたルートにナビゲートしたい場合は、
useLocalizedNavigatehook を使用できます:app/hooks/useLocalizedNavigate.tsコードをコピーコードをクリップボードにコピー
ページで Intlayer を使用
アプリケーション全体でコンテンツ辞書にアクセスします:
ローカライズされたホームページ
app/routes/page.tsxコードをコピーコードをクリップボードにコピー
app/routes/($locale)._index.tsxコードをコピーコードをクリップボードにコピー
useIntlayerフックについて詳しく知るには、ドキュメントを参照してください。既存のアプリケーションがある場合、Intlayer Compiler と extract コマンドを使用して、わずか数秒で数千のコンポーネントを変換できます。
ロケール切り替えコンポーネントの作成
ユーザーが言語を変更できるようにするコンポーネントを作成します:
app/components/locale-switcher.tsxコードをコピーコードをクリップボードにコピー
app/components/locale-switcher.tsxコードをコピーコードをクリップボードにコピー
useLocaleフックについて詳しく知るには、ドキュメントを参照してください。HTML 属性の管理を追加
HTML の lang および dir 属性を管理するフックを作成します:
app/hooks/useI18nHTMLAttributes.tsxコードをコピーコードをクリップボードにコピー
次に、ルートコンポーネントで使用します:
app/routes/layout.tsxコードをコピーコードをクリップボードにコピー
ミドルウェアを追加
intlayerProxyを使用して、アプリケーションにサーバーサイドルーティングを追加することもできます。このプラグインは、URL に基づいて現在のロケールを自動的に検出し、適切なロケールクッキーを設定します。ロケールが指定されていない場合、プラグインはユーザーのブラウザ言語設定に基づいて最も適切なロケールを決定します。ロケールが検出されない場合は、デフォルトロケールにリダイレクトします。本番環境で
intlayerProxyを使用するには、vite-intlayerパッケージをdevDependenciesからdependenciesに切り替える必要があります。Intlayer v9 以降、
intlayerProxy()はintlayer()プラグインに直接含まれており、routing.enableProxyオプション(デフォルトではtrue)で有効になっています。下記のように別々に登録することはオプションとなりました — 後方互換性とプラグインの順序を制御する必要がある場合のために保持されています。routing.enableProxy: falseに設定してオプトアウトできます。v9 リリースノートを参照してください。vite.config.tsコードをコピーコードをクリップボードにコピー
コンポーネントのコンテンツを抽出
オプション既存の codebase を持っている場合、数千のファイルを変換するには時間がかかることがあります。
このプロセスを簡単にするために、Intlayer はcompiler / extractor を提供して、コンポーネントを変換してコンテンツを抽出します。
設定するには、
intlayer.config.tsファイルにcompilerセクションを追加できます:intlayer.config.tsコードをコピーコードをクリップボードにコピー
import { type IntlayerConfig } from "intlayer"; const config: IntlayerConfig = { // ... 設定の残り compiler: { /** * コンパイラを有効にするかどうかを示します。 */ enabled: true, /** * 出力ファイルパスを定義します */ output: ({ fileName, extension }) => `./${fileName}${extension}`, /** * 変換後にコンポーネントを保存するかどうかを示します。 * * - `true` の場合、コンパイラはコンポーネントファイルをディスクに上書きします。したがって、変換は永続的になり、コンパイラは次のプロセスで変換をスキップします。このように、コンパイラはアプリを変換でき、その後削除できます。 * * - `false` の場合、コンパイラは `useIntlayer()` 関数呼び出しをビルド出力のコード内にのみ注入し、基本コードベースはそのままにします。変換はメモリ内でのみ実行されます。 */ saveComponents: false, /** * 辞書キープレフィックス */ dictionaryKeyPrefix: "", }, }; export default config;エクストラクタを実行してコンポーネントを変換してコンテンツを抽出します
bashコードをコピーコードをクリップボードにコピー
v9 以降、
intlayerCompilerはintlayerプラグインに含まれています。したがって、手動で追加する必要はありません。vite.config.tsを更新してintlayerCompilerプラグインを含めます:vite.config.tsコードをコピーコードをクリップボードにコピー
bashコードをコピーコードをクリップボードにコピー
TypeScriptの設定
Intlayerはモジュール拡張を使用して、TypeScriptの利点を活かし、コードベースをより強固にします。
TypeScriptの設定に自動生成された型が含まれていることを確認してください。
コードをクリップボードにコピー
Gitの設定
Intlayerによって生成されたファイルは無視することを推奨します。これにより、Gitリポジトリへのコミットを避けることができます。
これを行うには、.gitignoreファイルに以下の指示を追加してください。
コードをクリップボードにコピー
VS Code 拡張機能
Intlayerでの開発体験を向上させるために、公式の Intlayer VS Code 拡張機能 をインストールできます。
この拡張機能は以下を提供します:
- 翻訳キーの 自動補完。
- 翻訳が不足している場合の リアルタイムエラー検出。
- 翻訳内容の インラインプレビュー。
- 翻訳を簡単に作成・更新できる クイックアクション。
拡張機能の使い方の詳細は、Intlayer VS Code 拡張機能のドキュメントを参照してください。
さらに進む
さらに進めるために、ビジュアルエディターを実装するか、CMSを使用してコンテンツを外部化することができます。
ドキュメント参照
この包括的なガイドは、IntlayerをReact Router v7と統合し、ロケール対応のルーティングとTypeScriptサポートを備えた完全に国際化されたアプリケーションを構築するために必要なすべてを提供します。
よくある質問
React Router v7 にはメッセージレイヤーが付属していないため、i18n ライブラリと組み合わせて使用します:
react-i18next/i18next: ランタイムで読み込まれる JSON ネームスペース。ロケール検出器をルーターに接続します。react-intlとLingui: ICU メッセージと抽出ステップ。Intlayer: 最も高度なソリューション。コードベースの任意の場所でコンテンツを宣言でき(各コンポーネントの隣またはセントラライズ)、ビルド時にコンパイルされ、エンドツーエンドで型付けされ、ロケール対応のルーティングヘルパー、AI 翻訳、ビジュアルエディター、CMS を備えています。
Intlayer を選ぶ理由とベンチマークを参照してください。
はい、2 つのパスがあります。react-i18next 移行ガイドまたは i18next 移行ガイドを使用してコンテンツを段階的に移行できます。または、現在の API を完全に保持できます:互換性アダプターは react-i18next、react-intl、i18next と同じ API を公開しますが、Intlayer 辞書によって提供されるため、インポートは変わりますがコンポーネントコードは変わりません。
はい。sync JSON プラグインは /messages/{locale}/{namespace}.json ファイルを信頼できるソースとして保持し、双方向で Intlayer 辞書を生成します。sync PO プラグインは gettext カタログに対して同じことを行い、ロケールごとのファイルでは 1 つのファイルにロケールをグループ化する代わりに言語ごとにコンテンツを分割できます。
いいえ。npx intlayer extract を実行すると、Intlayer はコンポーネントを読み取り、ユーザーに見える文字列を抽出し、各コンポーネントの隣に .content ファイルを書き込むため、カタログに 1 つずつ文字列をコピーする代わりに diff をレビューできます。このガイドのステップ 12 でそれについて説明しています。
完全に自動化されたパイプラインの場合、Intlayer Compilerはビルド時に同じことを行います:変更のたびに JSX、TSX、Vue、Svelte ソースをスキャンし、辞書を生成し、hot module replacement を通じて同期を保つため、手動で保守するキーはまったくありません。
コンパイラをオンにする前に知っておく価値のある 2 つの制限があります。静的分析によって機能するため、API エラーコードや CMS フィールドなど、ランタイムにのみ存在する文字列は到達不可能なままです。また、className="active" やステータスコードなどのアプリケーションロジックからユーザーに見える文字列を区別する必要があり、大規模なコードベースではいくつかのアノテーションが必要です。extract コマンドはあなたをループに保つことで両方を回避します。
5 つのツール、すべてオプションです:
- VS Code 拡張機能:
useIntlayerキーからそれを宣言するコンテンツファイルにジャンプし、コンポーネントからコンテンツを抽出し、コマンドパレットまたは専用 Intlayer タブからビルド、fill、テスト、プッシュ、プルを実行します。 - LSP サーバー: LSP を話す任意のエディターで同じ認識を提供し、定義へのジャンプ、すべての参照を検索、翻訳値のホバープレビュー、キーとフィールドのオートコンプリート、キーがどこにも宣言されていない場合の警告があります。また、
i18next、react-i18next、next-intl、use-intl呼び出しを解決し、移行中に役立ちます。 - MCP サーバー: Intlayer ドキュメントと CLI を Cursor、VS Code、Claude Desktop、Claude Code、ChatGPT に公開し、アシスタントが推測する代わりに現在のドキュメントから回答でき、
intlayer fillなどのコマンドを自身で実行できます。 - エージェントスキル:
intlayer-config、intlayer-cli、intlayer-contentなどの焦点を絞ったスキル、およびフレームワークごとに 1 つ。エージェントにルーティング設定とコンテンツノードタイプを教えます。 - ESLint プラグイン:
no-raw-textはハードコードされた文字列にフラグを立て、静的辞書キーと未使用コンテンツのさらなるルールがあります。
