このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayer を使った next-intl による Next.js 15 の翻訳 | 国際化 (i18n)
このガイドでは、Next.js 15(App Router)アプリにおける next-intl のベストプラクティスを解説し、堅牢な翻訳管理と自動化のために Intlayer を重ねて使う方法を紹介します。
next-i18next vs next-intl vs Intlayer の比較はこちら をご覧ください。
- 初級者向け:ステップバイステップのセクションに従って、多言語対応アプリを作成しましょう。
- 中級者向け:ペイロードの最適化とサーバー/クライアントの分離に注意してください。
- 上級者向け:静的生成、ミドルウェア、SEO統合、自動化フックに注目してください。
本ガイドで扱う内容:
- セットアップとファイル構成
- メッセージの読み込み最適化
- クライアントおよびサーバーコンポーネントの使用
- メタデータ、サイトマップ、robots.txt によるSEO対策
- ロケールルーティングのためのミドルウェア
- Intlayer の追加(CLIと自動化)
next-intl を使ったアプリケーションのセットアップ
next-intl の依存関係をインストールします:
コードをクリップボードにコピー
コードをクリップボードにコピー
セットアップとコンテンツの読み込み
ルートで必要な名前空間のみを読み込み、ロケールを早期に検証します。可能な限りサーバーコンポーネントは同期的に保ち、クライアントには必要なメッセージだけを渡します。
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
クライアントコンポーネントでの使用例
カウンターをレンダリングするクライアントコンポーネントの例を見てみましょう。
翻訳(形は再利用可能;お好みで next-intl のメッセージに読み込んでください)
コードをクリップボードにコピー
コードをクリップボードにコピー
クライアントコンポーネント
コードをクリップボードにコピー
ページのクライアントメッセージに "about" メッセージを追加するのを忘れないでください (クライアントが実際に必要とする名前空間のみを含めてください)。
サーバーコンポーネントでの使用方法
このUIコンポーネントはサーバーコンポーネントであり、クライアントコンポーネントの下でレンダリングできます(ページ → クライアント → サーバー)。事前に計算された文字列を渡して同期的に保ちます。
コードをクリップボードにコピー
注意:
formattedCountはサーバー側で計算してください(例:const initialFormattedCount = format.number(0))。- サーバーコンポーネントに関数やシリアライズ不可能なオブジェクトを渡すことは避けてください。
コードをクリップボードにコピー
コードをクリップボードにコピー
コードをクリップボードにコピー
ロケールルーティングのためのミドルウェア
ロケール検出とルーティングを処理するミドルウェアを追加します:
コードをクリップボードにコピー
ベストプラクティス
- htmlの
langとdirを設定する:src/app/[locale]/layout.tsxでgetLocaleDirection(locale)を使ってdirを計算し、<html lang={locale} dir={dir}>を設定します。 - メッセージを名前空間ごとに分割する:ロケールと名前空間ごとにJSONを整理します(例:
common.json、about.json)。 - クライアントのペイロードを最小化する: ページでは、必要な名前空間のみを
NextIntlClientProviderに送信します(例:pick(messages, ['common', 'about']))。 - 静的ページを優先する:
export const dynamic = 'force-static'をエクスポートし、すべてのlocalesに対して静的パラメータを生成します。 - 同期的なサーバーコンポーネント: 非同期呼び出しやシリアライズ不可能な関数の代わりに、事前に計算された文字列(翻訳済みラベル、フォーマット済み数値)を渡します。
next-intl の上に Intlayer を実装する
intlayer の依存関係をインストールします:
コードをクリップボードにコピー
intlayer の設定ファイルを作成します:
コードをクリップボードにコピー
package.jsonのスクリプトを追加:
コードをクリップボードにコピー
注意事項:
intlayer fill: 設定されたロケールに基づいて、AIプロバイダーを使用して不足している翻訳を補完します。intlayer test: 不足している翻訳や無効な翻訳をチェックします(CIでの使用を推奨)。
引数やプロバイダーの設定方法については、Intlayer CLI を参照してください。