このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
バージョン履歴
- "Solid の useIntlayer API の使用法を直接プロパティアクセスに更新"v8.9.02026/5/4
- "プリレンダリングとサイトマップの追加"v8.6.02026/3/29
- "initコマンドを追加"v7.5.92025/12/30
- "validatePrefixを導入し、ステップ14「ローカライズされたルートでの404ページの処理」を追加。"v7.4.02025/12/11
- "ステップ13「サーバーアクションでのロケールの取得(任意)」を追加。"v7.3.92025/12/5
- "ステップ13「Nitroの適応」を追加。"v7.2.32025/11/18
- "getPrefix関数の追加、useLocalizedNavigate、LocaleSwitcher、LocalizedLinkの使用により、デフォルトのプレフィックスを修正。"v7.1.02025/11/17
- "ドキュメントの更新"v6.5.22025/10/3
- "TanStack Start向けに追加"v5.8.12025/9/9
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayerを使用してTanStack Startウェブサイトを翻訳する | 国際化(i18n)
目次
このガイドでは、ロケール対応のルーティング、TypeScriptサポート、および最新の開発手法を使用して、TanStack StartプロジェクトにIntlayerをシームレスに統合し、国際化を実現する方法を説明します。
代替手段ではなく Interlayer を使用する理由
「react-i18next」、「use-intl」、または「paraglide」などの主要なソリューションと比較して、Intlayer は次のような統合された最適化を備えたソリューションです。
TanStack Start を完全にカバー
Intlayer は TanStack Start 用に完全に最適化されており、多言語ルーティング、Cookie 管理、サイトマップ生成、動的コンテンツ読み込み、および国際化 (i18n) の取り組みを拡張するために必要なすべての機能を提供します。
バンドルサイズ
大量の JSON ファイルをページにロードするのではなく、必要なコンテンツのみをロードします。 Intlayer は、バンドルとページのサイズを最大 50% 削減するのに役立ちます。
保守性
アプリケーションのコンテンツのスコープを設定すると、大規模なアプリケーションの メンテナンスが容易になります。コンテンツ コードベース全体を確認するという精神的な負担を負うことなく、単一の機能フォルダーを複製または削除できます。さらに、Intlayer は完全に型指定されており、コンテンツの正確性を保証します。
AI エージェント
コンテンツを同じ場所に配置すると、大規模言語モデル (LLM) によって 必要なコンテキストが削減されます。 Intlayer には、翻訳の欠落をテストする CLI、LSP、MCP などのツール スイートも付属しています。および エージェント スキル により、AI エージェントの開発者エクスペリエンス (DX) がさらにスムーズになります。
オートメーション
AI プロバイダーの費用で、選択した LLM を使用して CI/CD パイプラインで自動化を変換します。 Intlayer は、コンテンツ抽出を自動化する コンパイラー と、バックグラウンドでの翻訳を支援する Web プラットフォーム も提供します。
パフォーマンス
大量の JSON ファイルをコンポーネントに接続すると、パフォーマンスと反応性の問題が発生する可能性があります。 Intlayer は、ビルド時のコンテンツの読み込みを最適化します。
非開発によるスケーリング
Intlayer は単なる i18n ソリューションではなく、自己ホスト型 ビジュアル エディター と 完全な CMS を提供します。 リアルタイムで多言語コンテンツを管理できるようになり、翻訳者、コピーライター、その他のチーム メンバーとのコラボレーションがシームレスになります。コンテンツはローカルおよび/またはリモートに保存できます。
TanStack StartアプリケーションでIntlayerをセットアップするためのステップバイステップガイド
GitHubのアプリケーションテンプレートを参照してください。
プロジェクトの作成
まず、TanStack Startウェブサイトのプロジェクトの開始ガイドに従って、新しいTanStack Startプロジェクトを作成します。
Intlayerパッケージのインストール
好みのパッケージマネージャーを使用して、必要なパッケージをインストールします:
bashコードをコピーコードをクリップボードにコピー
プロジェクトの構成
アプリケーションの言語を構成するための設定ファイルを作成します:
intlayer.config.tsコードをコピーコードをクリップボードにコピー
この構成ファイルを通じて、ローカライズされたURL、ミドルウェアのリダイレクト、クッキー名、コンテンツ宣言の場所と拡張子、コンソールでのIntlayerログの無効化などを設定できます。利用可能なパラメータの完全なリストについては、構成ドキュメントを参照してください。
Vite構成へのIntlayerの統合
構成にintlayerプラグインを追加します:
vite.config.tsコードをコピーコードをクリップボードにコピー
intlayer()Viteプラグインは、IntlayerをViteと統合するために使用されます。コンテンツ宣言ファイルの構築を確実にし、開発モードでそれらを監視します。Viteアプリケーション内でIntlayer環境変数を定義します。さらに、パフォーマンスを最適化するためのエイリアスを提供します。ルートレイアウトの作成
useParamsを使用して現在のロケールを検出し、htmlタグにlangおよびdir属性を設定することで、国際化をサポートするようにルートレイアウトを構成します。src/routes/__root.tsxコードをコピーコードをクリップボードにコピー
コンテンツを
alt、title、href、aria-labelなどのstring属性で使用したい場合は、関数の値を使用できます。例:htmlコードをコピーコードをクリップボードにコピー
ロケールレイアウトの作成
ロケール接頭辞を処理し、検証を実行するレイアウトを作成します。
src/routes/{-$locale}/route.tsxコードをコピーコードをクリップボードにコピー
ここで、
{-$locale}は現在のロケールに置き換えられる動的なルートパラメータです。この記法によりスロットがオプションになり、'prefix-no-default'などのルーティングモードで動作できるようになります。同じルートで複数の動的セグメントを使用する場合(例:
/{-$locale}/other-path/$anotherDynamicPath/...)、このスロットが問題を引き起こす可能性があることに注意してください。'prefix-all'モードの場合、スロットを$localeに切り替えることをお勧めします。'no-prefix'または'search-params'モードの場合、スロットを完全に削除できます。コンテンツの宣言
翻訳を保存するためのコンテンツ宣言を作成および管理します:
src/contents/page.content.tsコードをコピーコードをクリップボードにコピー
コンテンツ宣言は、
contentDirディレクトリ(デフォルトでは./app)に含まれている限り、アプリケーションのどこでも定義できます。また、コンテンツ宣言ファイルの拡張子(デフォルトでは.content.{json,ts,tsx,js,jsx,mjs,cjs,md,mdx,yaml,yml})と一致する必要があります。詳細については、コンテンツ宣言ドキュメントを参照してください。
ロケール対応コンポーネントとフックの作成
ロケール対応のナビゲーションのための
LocalizedLinkコンポーネントを作成します:src/components/localized-link.tsxコードをコピーコードをクリップボードにコピー
このコンポーネントには2つの目的があります:
- URLから不要な
{-$locale}接頭辞を削除します。 - ロケールパラメータをURLに挿入して、ユーザーがローカライズされたルートに直接リダイレクトされるようにします。
次に、プログラムによるナビゲーションのための
useLocalizedNavigateフックを作成できます:src/hooks/useLocalizedNavigate.tsxコードをコピーコードをクリップボードにコピー
- URLから不要な
ページでのIntlayerの利用
アプリケーション全体でコンテンツ辞書にアクセスします:
ローカライズされたホームページ
src/routes/{-$locale}/index.tsxコードをコピーコードをクリップボードにコピー
useIntlayerフックの詳細については、ドキュメントを参照してください。ロケールスイッチャーコンポーネントの作成
ユーザーが言語を変更できるようにするコンポーネントを作成します:
src/components/locale-switcher.tsxコードをコピーコードをクリップボードにコピー
useLocaleフックの詳細については、ドキュメントを参照してください。HTML属性の管理
ステップ 5 で見たように、ルートコンポーネントで
useParamsを使用してhtmlタグのlangおよびdir属性を管理できます。これにより、サーバーとクライアントで正しい属性が設定されるようになります。src/routes/__root.tsxコードをコピーコードをクリップボードにコピー
ミドルウェアの追加
intlayerProxyを使用して、アプリケーションにサーバーサイドのルーティングを追加することもできます。このプラグインは、URLに基づいて現在のロケールを自動的に検出し、適切なロケールクッキーを設定します。ロケールが指定されていない場合、ユーザーのブラウザの言語設定に基づいて最も適切なロケールを決定します。ロケールが検出されない場合は、デフォルトのロケールにリダイレクトされます。intlayerProxyを本番環境で使用するには、vite-intlayerパッケージをdevDependenciesからdependenciesに切り替える必要があることに注意してください。vite.config.tsコードをコピーコードをクリップボードにコピー
メタデータの国際化
getIntlayerフックを使用して、アプリケーション全体でコンテンツ辞書にアクセスすることもできます:src/routes/{-$locale}/index.tsxコードをコピーコードをクリップボードにコピー
サーバーアクションでのロケールの取得
サーバーアクションやAPIエンドポイント内から現在のロケールにアクセスしたい場合があります。 Intlayerの
getLocaleヘルパーを使用してこれを行うことができます。以下は、TanStack Startのサーバー関数を使用した例です:
src/routes/{-$locale}/index.tsxコードをコピーコードをクリップボードにコピー
「見つかりませんでした」ページの管理
ユーザーが存在しないページにアクセスしたときにカスタムの404ページを表示できます。ロケール接頭辞は、404ページがトリガーされる方法に影響を与える可能性があります。
ロケール接頭辞を使用したTanStack Routerの404処理の理解
TanStack Routerでは、ローカライズされたルートでの404ページの処理には多層的なアプローチが必要です:
- 専用の404ルート: 404 UIを表示するための特定のルート
- ルートレベルの検証: ロケール接頭辞を検証し、無効なものを404にリダイレクトします
- キャッチオールルート: ロケールセグメント内の一致しないパスをすべてキャプチャします
src/routes/{-$locale}/404.tsxコードをコピーコードをクリップボードにコピー
src/routes/{-$locale}/route.tsxコードをコピーコードをクリップボードにコピー
src/routes/{-$locale}/$.tsxコードをコピーコードをクリップボードにコピー
コンポーネントのコンテンツを抽出する
オプション既存のコードベースがある場合、数千のファイルを変換するのは時間がかかることがあります。
このプロセスを容易にするために、Intlayerは、コンポーネントを変換しコンテンツを抽出するための コンパイラ / エクストラクタ を提案しています。
セットアップするには、
intlayer.config.tsファイルにcompilerセクションを追加します。intlayer.config.tsコードをコピーコードをクリップボードにコピー
コンポーネントを変換してコンテンツを抽出するためにエクストラクタを実行します
bashコードをコピーコードをクリップボードにコピー
サイトマップの生成
Intlayer には、アプリケーションのサイトマップを簡単に作成できるサイトマップ ジェネレーターが組み込まれています。ローカライズされたルートを処理し、検索エンジンに必要なメタデータを追加します。
Intlayer によって生成されたサイトマップは、
xhtml:link名前空間 (Hreflang XML Extensions) をサポートしています。生の URL のみを表示するデフォルトのサイトマップ ジェネレーターとは異なり、Intlayer はページのすべての言語バージョン (例:/about、/about?lang=fr、/about?lang=es) 間に必要な双方向リンクを自動的に作成します。これにより、検索エンジンが正しい言語バージョンを正しい対象者に正しくインデックス付けして提供できるようになります。これを使用するには、まず
vite.config.tsを構成して、ローカライズされたルートのプリレンダリングを有効にし、デフォルトの TanStack Start サイトマップ生成を無効にする必要があります。vite.config.tsコードをコピーコードをクリップボードにコピー
次に、
generateSitemap関数を使用するsrc/routes/sitemap[.]xml.tsルートを作成します。src/routes/sitemap[.]xml.tsコードをコピーコードをクリップボードにコピー
TypeScriptの構成
Intlayerはモジュール拡張機能を利用して、TypeScriptの利点を活用し、コードベースを強化します。
TypeScriptの構成に自動生成された型が含まれていることを確認してください:
tsconfig.jsonコードをコピーコードをクリップボードにコピー
Git構成
Intlayerによって生成されたファイルは無視することをお勧めします。これにより、Gitリポジトリにそれらをコミットすることを避けることができます。
これを行うには、.gitignoreファイルに以下の指示を追加できます:
コードをクリップボードにコピー
VS Code拡張機能
Intlayerでの開発体験を向上させるために、公式のIntlayer VS Code拡張機能をインストールできます。
この拡張機能は以下を提供します:
- 翻訳キーのオートコンプリート。
- 翻訳の欠落に対するリアルタイムのエラー検出。
- 翻訳されたコンテンツのインラインプレビュー。
- 翻訳を簡単に作成および更新するためのクイックアクション。
拡張機能の使用方法の詳細については、Intlayer VS Code拡張機能のドキュメントを参照してください。
さらに進む
さらに進むには、ビジュアルエディターを実装したり、CMSを使用してコンテンツを外部化したりできます。