Intlayerの今後のリリースに関する通知を受け取る
    作成:2024-12-24最終更新:2025-11-01

    Intlayerを使ってi18nextのJSON翻訳を自動化する方法

    Intlayerとは何ですか?

    Intlayerは、従来のi18nソリューションの欠点を解決するために設計された革新的なオープンソースの国際化ライブラリです。JavaScriptアプリケーションにおけるコンテンツ管理に対して、モダンなアプローチを提供します。

    具体的な比較については、当社のブログ記事 next-i18next vs. next-intl vs. Intlayerをご覧ください。

    なぜIntlayerをi18nextと組み合わせるのか?

    Intlayerは優れた単独のi18nソリューションを提供します(Next.js統合ガイドを参照)が、以下のような理由でi18nextと組み合わせたい場合があります:

    1. 既存のコードベース: 既に確立されたi18nextの実装があり、Intlayerの改善された開発者体験へ段階的に移行したい場合。
    2. レガシー要件: プロジェクトが既存のi18nextプラグインやワークフローとの互換性を必要とする場合。
    3. チームの慣れ親しみ: チームがi18nextに慣れているが、より良いコンテンツ管理を望んでいる場合。
    4. Intlayerの機能利用: コンテンツ宣言、翻訳キー管理、翻訳ステータスなどのIntlayerの機能を利用したい場合。

    そのために、Intlayerはi18nextのアダプターとして実装でき、CLIやCI/CDパイプラインでのJSON翻訳の自動化、翻訳のテストなどを支援します。

    このガイドでは、i18nextとの互換性を維持しながら、Intlayerの優れたコンテンツ宣言システムを活用する方法を示します。

    目次

    Intlayerをi18nextとセットアップするステップバイステップガイド

    ステップ1: 依存関係のインストール

    必要なパッケージをインストールします:

    npm install intlayer @intlayer/sync-json-plugin

    パッケージの説明:

    • intlayer: 国際化管理、コンテンツ宣言、およびビルドのためのコアライブラリ
    • @intlayer/sync-json-plugin: Intlayerのコンテンツ宣言をi18next互換のJSON形式にエクスポートするプラグイン

    ステップ2: JSONをラップするためのIntlayerプラグインの実装

    サポートするロケールを定義するためのIntlayer設定ファイルを作成します:

    i18next用のJSON辞書もエクスポートしたい場合はsyncJSONプラグインを追加してください:

    intlayer.config.ts
    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 }) => `./locales/${locale}/${key}.json`,    }),  ],};export default config;

    syncJSON プラグインは JSON を自動的にラップします。コンテンツの構造を変更することなく、JSON ファイルの読み書きを行います。

    もし JSON と intlayer のコンテンツ宣言ファイル(.content ファイル)を共存させたい場合、Intlayer は以下のように処理します:

    1. JSON ファイルとコンテンツ宣言ファイルの両方を読み込み、intlayer の辞書に変換します。
    2. JSON とコンテンツ宣言ファイルの間に競合がある場合、Intlayer はすべての辞書をマージします。これはプラグインの優先度やコンテンツ宣言ファイルの優先度に依存し、すべて設定可能です。

    CLI を使って JSON の翻訳を変更した場合や CMS を使った場合、Intlayer は新しい翻訳で JSON ファイルを更新します。

    syncJSONプラグインの詳細については、syncJSONプラグインのドキュメントを参照してください。

    (オプション)ステップ3:コンポーネントごとのJSON翻訳の実装

    デフォルトでは、IntlayerはJSONファイルとコンテンツ宣言ファイルの両方を読み込み、マージし、同期します。詳細については、コンテンツ宣言のドキュメントを参照してください。しかし、必要に応じてIntlayerプラグインを使用して、コードベースのどこにでもあるJSONのローカライズをコンポーネントごとに管理することも可能です。

    そのためには、loadJSONプラグインを使用できます。

    intlayer.config.ts
    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 }) => `./locales/${locale}/${key}.json`,      priority: 0,    }),  ],};export default config;

    これは、src ディレクトリ内の {key}.i18n.json というパターンに一致するすべての JSON ファイルを読み込み、Intlayer の辞書としてロードします。


    Git 設定

    自動生成された Intlayer ファイルは無視することを推奨します:

    .gitignore
    # Intlayer によって生成されたファイルを無視する.intlayer

    これらのファイルはビルドプロセス中に再生成可能であり、バージョン管理にコミットする必要はありません。

    VS Code 拡張機能

    開発者体験を向上させるために、公式の Intlayer VS Code 拡張機能 をインストールしてください:

    VS Code Marketplace からインストール