このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayer でコンポーネントを多言語対応(i18n)にする方法
このガイドでは、2つの一般的なセットアップで UI コンポーネントを多言語対応にするための最小限の手順を示します:
- React (Vite/SPA)
- Next.js (App Router)
まずコンテンツを宣言し、その後コンポーネント内で取得します。
1) コンテンツを宣言する(React と Next.js 共通)
コンポーネントの近くにコンテンツ宣言ファイルを作成します。これにより、翻訳が使用される場所に近くなり、型安全性も確保されます。
設定ファイルとして JSON を使いたい場合もサポートされています。
2) コンテンツの取得
ケースA. Reactアプリ(Vite/SPA)
デフォルトの方法:キーで取得するために useIntlayer を使用します。これによりコンポーネントはシンプルかつ型安全に保たれます。
サーバーサイドレンダリングやプロバイダー外での使用:react-intlayer/server を使用し、必要に応じて明示的に locale を渡します。
代替案:呼び出し元で構造をまとめておきたい場合は、useDictionary を使って宣言済みのオブジェクト全体を読み取ることができます。
ケースB. Next.js(App Router)
データの安全性とパフォーマンスのためにサーバーコンポーネントを優先してください。サーバーファイルでは next-intlayer/server から useIntlayer を使用し、クライアントコンポーネントでは next-intlayer から useIntlayer を使用します。
ヒント: ページのメタデータやSEOのために、getIntlayer を使用してコンテンツを取得し、getMultilingualUrls を使って多言語URLを生成することもできます。
なぜIntlayerのコンポーネントアプローチが最適なのか
- コロケーション: コンテンツの宣言がコンポーネントの近くに存在するため、ズレが減り、デザインシステム全体での再利用が向上します。
- 型安全性: キーや構造が強く型付けされており、翻訳の欠落は実行時ではなくビルド時に検出されます。
- サーバーファースト: サーバーコンポーネントでネイティブに動作し、セキュリティとパフォーマンスを向上させます。クライアントフックは引き続き使いやすいままです。
- ツリーシェイキング: コンポーネントで使用されるコンテンツのみがバンドルされるため、大規模アプリでもペイロードを小さく保てます。
- DX(開発者体験)&ツール: 組み込みのミドルウェア、SEOヘルパー、オプションのビジュアルエディター/AI翻訳が日々の作業を効率化します。
Next.jsに特化した比較とパターンのまとめはこちらをご覧ください: https://intlayer.org/blog/next-i18next-vs-next-intl-vs-intlayer
関連ガイドと参考資料
- Reactセットアップ(Vite): https://intlayer.org/doc/environment/vite-and-react
- React Router v7: https://intlayer.org/doc/environment/vite-and-react/react-router-v7
- TanStackスタート: https://intlayer.org/doc/environment/vite-and-react/tanstack-start
- Next.js セットアップ: https://intlayer.org/doc/environment/nextjs
- なぜ Intlayer を選ぶのか vs. next-intl vs. next-i18next - https://intlayer.org/blog/next-i18next-vs-next-intl-vs-intlayer
これらのページには、エンドツーエンドのセットアップ、プロバイダー、ルーティング、および SEO ヘルパーが含まれています。