このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します
Intlayer MCPサーバーを統合することで、ChatGPT、DeepSeek、Cursor、VSCodeなどから直接ドキュメントを取得できます。
MCPサーバーのドキュメントを表示バージョン履歴
- loadJSONプラグインを追加v7.0.62025/11/1
- syncJSONプラグインに変更v7.0.02025/10/29
このページのコンテンツはAIを使用して翻訳されました。
英語の元のコンテンツの最新バージョンを見るこのドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。
ドキュメントへのGitHubリンクドキュメントのMarkdownをクリップボードにコピー
Intlayerを使ってnext-intlのJSON翻訳を自動化する方法
Intlayerとは?
Intlayerは、従来のi18nソリューションの欠点を解決するために設計された革新的なオープンソースの国際化ライブラリです。Next.jsアプリケーションにおけるコンテンツ管理に対して、モダンなアプローチを提供します。
next-intlとの具体的な比較については、当社のブログ記事 next-i18next vs. next-intl vs. Intlayerをご覧ください。
なぜIntlayerとnext-intlを組み合わせるのか?
Intlayerは優れた単独のi18nソリューションを提供します(当社のNext.js統合ガイドを参照)が、以下のような理由でnext-intlと組み合わせたい場合があります。
- 既存のコードベース:すでに確立されたnext-intlの実装があり、Intlayerの改善された開発者体験に徐々に移行したい場合。
- レガシー要件:プロジェクトが既存のnext-intlプラグインやワークフローとの互換性を必要とする場合。
- チームの習熟度:チームはnext-intlに慣れているが、より良いコンテンツ管理を望んでいる場合。
そのために、Intlayerはnext-intlのアダプターとして実装でき、CLIやCI/CDパイプラインでのJSON翻訳の自動化、翻訳のテストなどを支援します。
このガイドでは、next-intlとの互換性を維持しながら、Intlayerの優れたコンテンツ宣言システムを活用する方法を示します。
目次
next-intlとIntlayerをセットアップするステップバイステップガイド
ステップ1:依存関係のインストール
必要なパッケージをインストールします:
npm install intlayer @intlayer/sync-json-pluginパッケージの説明:
- intlayer: 国際化管理、コンテンツ宣言、およびビルドのためのコアライブラリ
- @intlayer/sync-json-plugin: Intlayerのコンテンツ宣言をnext-intl互換のJSON形式にエクスポートするプラグイン
ステップ 2: JSONをラップするためのIntlayerプラグインの実装
サポートするロケールを定義するためにIntlayerの設定ファイルを作成します:
next-intl用のJSON辞書もエクスポートしたい場合は、syncJSONプラグインを追加してください:
コードをクリップボードにコピー
import { Locales, type IntlayerConfig } from "intlayer";import { syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, plugins: [ syncJSON({ source: ({ key, locale }) => `./messages/${locale}/${key}.json`, }), ],};export default config;syncJSON プラグインは JSON を自動的にラップします。コンテンツの構造を変更することなく、JSON ファイルの読み書きを行います。
JSON を intlayer のコンテンツ宣言ファイル(.content ファイル)と共存させたい場合、Intlayer は以下の手順で処理します:
1. JSON とコンテンツ宣言ファイルの両方を読み込み、intlayer の辞書に変換します。- JSONとコンテンツ宣言ファイルの間に競合がある場合、Intlayerはすべての辞書をマージする処理を行います。これはプラグインの優先度やコンテンツ宣言ファイルの優先度に依存します(すべて設定可能です)。
CLIを使用してJSONの翻訳を行った場合やCMSを使用した場合、Intlayerは新しい翻訳でJSONファイルを更新します。
syncJSONプラグインの詳細については、syncJSONプラグインのドキュメントをご参照ください。
(オプション)ステップ3:コンポーネントごとのJSON翻訳の実装
デフォルトでは、IntlayerはJSONファイルとコンテンツ宣言ファイルの両方を読み込み、マージし、同期します。詳細については、コンテンツ宣言のドキュメントを参照してください。しかし、必要に応じてIntlayerのプラグインを使用して、コードベースの任意の場所でローカライズされたJSONのコンポーネント単位の管理を実装することも可能です。
そのためには、loadJSONプラグインを使用できます。
コードをクリップボードにコピー
import { Locales, type IntlayerConfig } from "intlayer";import { loadJSON, syncJSON } from "@intlayer/sync-json-plugin";const config: IntlayerConfig = { internationalization: { locales: [Locales.ENGLISH, Locales.FRENCH, Locales.SPANISH], defaultLocale: Locales.ENGLISH, }, // 現在のJSONファイルをIntlayerの辞書と同期させる plugins: [ /** * src内の{key}.i18n.jsonというパターンに一致するすべてのJSONファイルを読み込みます */ loadJSON({ source: ({ key }) => `./src/**/${key}.i18n.json`, locale: Locales.ENGLISH, priority: 1, // これらのJSONファイルが`./locales/en/${key}.json`のファイルより優先されることを保証します }), /** * ローカルディレクトリ内のJSONファイルに出力と翻訳を書き戻しながら読み込みます */ syncJSON({ source: ({ key, locale }) => `./messages/${locale}/${key}.json`, priority: 0, }), ],};export default config;これは、srcディレクトリ内のパターン {key}.i18n.json に一致するすべてのJSONファイルを読み込み、Intlayerの辞書としてロードします。
Git設定
自動生成されたIntlayerファイルは無視することを推奨します:
コードをクリップボードにコピー
# Intlayerによって生成されたファイルを無視.intlayerこれらのファイルはビルドプロセス中に再生成可能であり、バージョン管理にコミットする必要はありません。
VS Code拡張機能
開発者体験を向上させるために、公式のIntlayer VS Code拡張機能をインストールしてください: