ホームサンドボックスショーケースアプリ文書ブログ
    • English英語
      EN
    • русскийロシア語
      RU
    • 日本語日本語
      JA
    • françaisフランス語
      FR
    • 한국어韓国語
      KO
    • 中文中国語
      ZH
    • españolスペイン語
      ES
    • Deutschドイツ語
      DE
    • العربيةアラビア語
      AR
    • italianoイタリア語
      IT
    • British Englishイギリス英語
      EN-GB
    • portuguêsポルトガル語
      PT
    • हिन्दीヒンディー語
      HI
    • Türkçeトルコ語
      TR
    • polskiポーランド語
      PL
    • Indonesiaインドネシア語
      ID
    • Tiếng Việtベトナム語
      VI
    • українськаウクライナ語
      UK
    /
    フレームワークでドキュメントをフィルター
    Alt+←
    なぜIntlayer?
    始める
    コンセプト
    • Intlayerの仕組み
    • 設定
    • TestFillBuildWatchExtractLoginPushPullConfigurationListVersionEditorLiveDebugDoc ReviewDoc TranslateSDK
    • ビジュアルエディター
    • CMS
    • CI/CD統合
    • 翻訳複数形列挙条件性別挿入ファイルネスティングMarkdownHTML関数取得
    • ロケールごとのファイル
    • コンパイラー
    • 自動入力
    • テスト
    • バンドル最適化
    環境
    • Next.js 14とApp Router
      Next.js 15
      Next.js ロケールなし URL
      Next.jsとページルーター
      コンパイラ
    • Tanstack Start Solid
    • AstroおよびReact
      AstroおよびSvelte
      AstroおよびVue
      AstroおよびSolid
      AstroおよびPreact
      AstroおよびLit
      AstroおよびVanilla JS
    • React Router v7
      React Router v7 (fs-routes)
      Compiler
    • NuxtおよびVue
    • ViteおよびSolid
    • SvelteKit
    • ViteおよびPreact
    • ViteおよびVanilla JS
    • ViteおよびLit
    • Angular 19 (Webpack)
      Analog
    • React CRA
    • React NativeとExpo
    • Express.js
      NestJS
      Fastify
      Hono
      Adonis
    • LynxおよびReact
    Plugins
    • JSON
    • gettext (.po)
    VS Code拡張機能
    エージェント
    • MCPサーバー
    • エージェントのスキル
    リリース
    • v8
    • v7
    • v6
    ベンチマーク
    • Next.js
    • TanStack
    • Vue
    • Solid
    • Svelte
    ブログ
    質問をする
    1. Documentation
    2. Compiler
    作成:2025-09-09最終更新:2026-03-12
    このドキュメントをあなたの好きなAIアシスタントに参照してください
    ChatGPT
    Claude
    DeepSeek
    Google AI mode
    Gemini
    Perplexity
    Mistral
    Grok

    このページとあなたの好きなAIアシスタントを使ってドキュメントを要約します

    バージョン履歴

    1. "コンパイラーオプションの更新、FilePathPattern のサポート追加"
      v8.2.02026/3/9
    2. "コンパイラーオプションの更新"
      v8.1.72026/2/25
    3. "コンパイラーリリース"
      v7.3.12025/11/27

    このページのコンテンツはAIを使用して翻訳されました。

    英語の元のコンテンツの最新バージョンを見る
    このドキュメントを編集

    このドキュメントを改善するアイデアがある場合は、GitHubでプルリクエストを送信することで自由に貢献してください。

    ドキュメントへのGitHubリンク
    コピー

    ドキュメントのMarkdownをクリップボードにコピー

    Intlayer コンパイラー | i18n のための自動コンテンツ抽出

    Intlayer コンパイラーとは?

    Intlayer コンパイラーは、アプリケーションの国際化(i18n)プロセスを自動化するために設計された強力なツールです。ソースコード(JSX、TSX、Vue、Svelte)内のコンテンツ宣言をスキャンし、それらを抽出して必要な辞書ファイルを自動的に生成します。これにより、コンテンツをコンポーネントと共に配置したままにでき、Intlayer が辞書の管理と同期を担当します。

    なぜ Intlayer コンパイラーを使うのか?

    • 自動化: コンテンツを辞書に手動でコピー&ペーストする手間を排除します。
    • 高速化: 最適化されたコンテンツ抽出により、ビルドプロセスの高速化を実現します。
    • 開発者体験: コンテンツ宣言を使用箇所にそのまま保持し、保守性を向上させます。
    • ライブアップデート: 開発中に即時フィードバックを得られるホットモジュールリプレースメント(HMR)をサポートします。

    より詳しい比較については、Compiler vs. Declarative i18n のブログ記事をご覧ください。

    Intlayer コンパイラーを使わない理由

    コンパイラーは優れた「そのまま動作する」体験を提供しますが、いくつかのトレードオフも導入します:

    • ヒューリスティックの曖昧さ:コンパイラーは、ユーザー向けコンテンツとアプリケーションロジック(例:className="active"、ステータスコード、製品ID)を推測する必要があります。複雑なコードベースでは、これにより誤検出や見逃された文字列が発生し、手動での注釈と例外処理が必要になる場合があります。
    • 静的抽出のみ:コンパイラーベースの抽出は静的解析に依存しています。実行時のみ存在する文字列(APIエラーコード、CMSフィールドなど)は、コンパイラー単独では発見または翻訳できないため、補完的なランタイムi18n戦略が必要です。

    より深いアーキテクチャの比較については、ブログ記事Compiler vs. Declarative i18nを参照してください。

    代替として、コンテンツの完全な制御を維持しながらi18nプロセスを自動化するために、Intlayerは自動抽出コマンド intlayer extract(CLIドキュメントを参照)またはIntlayer VS Code拡張機能の Intlayer: extract content to Dictionary コマンド(VS Code拡張機能ドキュメントを参照)も提供しています。

    使い方

    Vite

    Viteベースのアプリケーション(React, Vue, Svelteなど)では、vite-intlayer プラグインを使うのが最も簡単な方法です。

    インストール

    bash
    コードをコピー

    コードをクリップボードにコピー

    npm install vite-intlayer

    設定

    vite.config.ts を更新して intlayerCompiler プラグインを含めます:

    vite.config.ts
    コードをコピー

    コードをクリップボードにコピー

    import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // コンパイラープラグインを追加 ],});

    See complete tutorial: Intlayer Compiler with Vite+React

    フレームワークサポート

    Viteプラグインは自動的に異なるファイルタイプを検出し処理します:

    • React / JSX / TSX: ネイティブに対応。
    • Vue: @intlayer/vue-compiler が必要です。
    • Svelte: @intlayer/svelte-compiler が必要です。

    使用しているフレームワークに応じて、適切なコンパイラーパッケージをインストールしてください:

    bash
    コードをコピー

    コードをクリップボードにコピー

    # Vue用npm install @intlayer/vue-compiler# Svelte用npm install @intlayer/svelte-compiler

    Next.js (Babel)

    Next.jsやその他の Webpack ベースの Babel を使用するアプリケーションでは、@intlayer/babelプラグインを使ってコンパイラーを設定できます。

    インストール

    bash
    コードをコピー

    コードをクリップボードにコピー

    npm install @intlayer/babel

    設定

    babel.config.js(または babel.config.json)を更新して、抽出プラグインを含めます。Intlayerの設定を自動的に読み込むためのヘルパー getExtractPluginOptions を提供しています。

    babel.config.js
    コードをコピー

    コードをクリップボードにコピー

    const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // コンポーネントからコンテンツを抽出して辞書に変換   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // useIntlayer を直接辞書インポートに置き換えてインポートを最適化   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};

    この設定により、コンポーネント内で宣言されたコンテンツが自動的に抽出され、ビルドプロセス中に辞書の生成に使用されます。

    See complete tutorial: Intlayer Compiler with Next.js

    カスタム設定

    コンパイラーの動作をカスタマイズするには、プロジェクトのルートにある intlayer.config.ts ファイルを更新します。

    intlayer.config.ts
    コードをコピー

    コードをクリップボードにコピー

    import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * コンパイラーを有効にするかどうかを示します。     * 開発中のコンパイラーをスキップして起動時間を短縮するには、'build-only'に設定します。     */    enabled: true,    /**     * 出力ファイルのパスを定義します。 `outputDir` を置き換えます。     *     * - `./` で始まるパスは、コンポーネントディレクトリを基準に解決されます。     * - `/` で始まるパスは、プロジェクトのルート (`baseDir`) を基準に解決されます。     *     * - パスに `{{locale}}` 変数を含めると、言語ごとに分離された辞書の生成が有効になります。     *     * 例:     * ```ts     * {     *   // コンポーネントの隣に多言語対応の .content.ts ファイルを作成     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // 文字列テンプレートを使用した同等の記述     * }     * ```     *     * ```ts     * {     *   // プロジェクトのルートに言語ごとに集約された JSON ファイルを作成     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // 文字列テンプレートを使用した同等の記述     * }     * ```     *     * 変数リスト:     *   - `fileName`: ファイル名。     *   - `key`: コンテンツのキー。     *   - `locale`: コンテンツのロケール。     *   - `extension`: ファイル拡張子。     *   - `componentFileName`: コンポーネントファイル名。     *   - `componentExtension`: コンポーネント拡張子。     *   - `format`: 辞書の形式。     *   - `componentFormat`: コンポーネント辞書の形式。     *   - `componentDirPath`: コンポーネントのディレクトリパス。     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * 変換後にコンポーネントを保存するかどうかを示します。     * これにより、コンパイラーを1回だけ実行してアプリを変換し、その後削除することができます。     */    saveComponents: false,    /**     * 生成されたファイルにコンテンツのみを挿入します。ロケールごとの i18next または ICU MessageFormat JSON 出力に有用です。     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * 辞書キーのプレフィックス     */    dictionaryKeyPrefix: "", // 抽出された辞書キーにオプションのプレフィックスを追加  },};export default config;

    コンパイラー設定リファレンス

    以下のプロパティは、intlayer.config.tsファイルのcompilerブロックで設定できます。

    • enabled:

      • タイプ: boolean | 'build-only'
      • デフォルト: true
      • 説明: コンパイラーを有効にするかどうかを示します。
    • dictionaryKeyPrefix:

      • タイプ: string
      • デフォルト: ''
      • 説明: 抽出された辞書キーのプレフィックス。
    • transformPattern:

      • タイプ: string | string[]
      • デフォルト: ['**/*.{js,ts,mjs,cjs,jsx,tsx,vue,svelte}', '!**/node_modules/**']
      • 説明: (非推奨: 代わりに build.traversePattern を使用) 最適化のためにコードをトラバースするパターン。
    • excludePattern:

      • タイプ: string | string[]
      • デフォルト: ['**/node_modules/**']
      • 説明: (非推奨: 代わりに build.traversePattern を使用) 最適化から除外するパターン。
    • output:

      • 型: FilePathPattern
      • デフォルト: ({ key }) => 'compiler/${key}.content.json'
      • 説明: 出力ファイルのパスを定義します。 outputDir を置き換えます。 {{locale}}、 {{key}}、 {{fileName}}、 {{extension}}、 {{format}}、 {{dirPath}}、 {{componentFileName}}、 {{componentExtension}}、 {{componentFormat}} などの動的変数を処理します。 'my/{{var}}/path' 形式の文字列または関数として設定できます。
      • 注: ./**/* パスはコンポーネントを基準に解決されます。 /**/* パスは Intlayer の baseDir を基準に解決されます。
      • 注: パスにロケールが定義されている場合、辞書はロケールごとに生成されます。
      • 例: output: ({ locale, key }) => 'compiler/${locale}/${key}.json'
    • noMetadata:

      • タイプ: boolean
      • デフォルト: false
      • 説明: メタデータをファイルに保存するかどうかを示します。trueの場合、コンパイラーは辞書のメタデータ(キー、コンテンツラッパー)を保存しません。
      • 注: loadJSONプラグインを使用する場合に便利です。
      • 例: trueの場合: json { "key": "value" } falseの場合: json { "key": "value", "content": { "key": "value" } }
    • saveComponents:

      • タイプ: boolean
      • デフォルト: false
      • 説明: 変換後にコンポーネントを保存するかどうかを示します。

    欠落した翻訳を埋める

    Intlayerは、欠落した翻訳を埋めるためのCLIツールを提供しています。intlayerコマンドを使用して、コード内の欠落した翻訳をテストし、埋めることができます。

    bash
    コードをコピー

    コードをクリップボードにコピー

    npx intlayer test         # 欠落した翻訳があるかテストする
    bash
    コードをコピー

    コードをクリップボードにコピー

    npx intlayer fill         # 欠落した翻訳を埋める

    抽出

    Intlayerは、コードからコンテンツを抽出するためのCLIツールを提供しています。intlayer extractコマンドを使用して、コードからコンテンツを抽出できます。

    bash
    コードをコピー

    コードをクリップボードにコピー

    npx intlayer extract

    詳細については、CLIドキュメント を参照してください。

    ロケールごとのファイル
    自動入力
    Alt+→

    このページについて

      ディスカッションは匿名で、よくある問題に対処するために定期的に確認されます。機能のアイデア、ドキュメントへのフィードバック、Intlayerに関することなど、お気軽にお聞かせください, このフィードバックをロードマップの作成と製品の改善に活用しています。

      npm install vite-intlayer
      import { defineConfig } from "vite";import { intlayer, intlayerCompiler } from "vite-intlayer";export default defineConfig({ plugins: [   intlayer(),   intlayerCompiler(), // コンパイラープラグインを追加 ],});
      # Vue用npm install @intlayer/vue-compiler# Svelte用npm install @intlayer/svelte-compiler
      npm install @intlayer/babel
      const { intlayerExtractBabelPlugin, intlayerOptimizeBabelPlugin, getExtractPluginOptions, getOptimizePluginOptions,} = require("@intlayer/babel");module.exports = { presets: ["next/babel"], plugins: [   // コンポーネントからコンテンツを抽出して辞書に変換   [intlayerExtractBabelPlugin, getExtractPluginOptions()],   // useIntlayer を直接辞書インポートに置き換えてインポートを最適化   [intlayerOptimizeBabelPlugin, getOptimizePluginOptions()], ],};
      import { type IntlayerConfig, Locales } from "intlayer";const config: IntlayerConfig = {  compiler: {    /**     * コンパイラーを有効にするかどうかを示します。     * 開発中のコンパイラーをスキップして起動時間を短縮するには、'build-only'に設定します。     */    enabled: true,    /**     * 出力ファイルのパスを定義します。 `outputDir` を置き換えます。     *     * - `./` で始まるパスは、コンポーネントディレクトリを基準に解決されます。     * - `/` で始まるパスは、プロジェクトのルート (`baseDir`) を基準に解決されます。     *     * - パスに `{{locale}}` 変数を含めると、言語ごとに分離された辞書の生成が有効になります。     *     * 例:     * ```ts     * {     *   // コンポーネントの隣に多言語対応の .content.ts ファイルを作成     *   output: ({ fileName, extension }) => `./${fileName}${extension}`,     *     *   // output: './{{fileName}}{{extension}}', // 文字列テンプレートを使用した同等の記述     * }     * ```     *     * ```ts     * {     *   // プロジェクトのルートに言語ごとに集約された JSON ファイルを作成     *   output: ({ key, locale }) => `/locales/${locale}/${key}.content.json`,     *     *   // output: '/locales/{{locale}}/{{key}}.content.json', // 文字列テンプレートを使用した同等の記述     * }     * ```     *     * 変数リスト:     *   - `fileName`: ファイル名。     *   - `key`: コンテンツのキー。     *   - `locale`: コンテンツのロケール。     *   - `extension`: ファイル拡張子。     *   - `componentFileName`: コンポーネントファイル名。     *   - `componentExtension`: コンポーネント拡張子。     *   - `format`: 辞書の形式。     *   - `componentFormat`: コンポーネント辞書の形式。     *   - `componentDirPath`: コンポーネントのディレクトリパス。     */    output: ({ fileName, extension }) => `./${fileName}${extension}`,    /**     * 変換後にコンポーネントを保存するかどうかを示します。     * これにより、コンパイラーを1回だけ実行してアプリを変換し、その後削除することができます。     */    saveComponents: false,    /**     * 生成されたファイルにコンテンツのみを挿入します。ロケールごとの i18next または ICU MessageFormat JSON 出力に有用です。     *     * - `output: ({ locale, key }) => `./locale/${locale}/${key}.json`,`     */    noMetadata: false,    /**     * 辞書キーのプレフィックス     */    dictionaryKeyPrefix: "", // 抽出された辞書キーにオプションのプレフィックスを追加  },};export default config;
      npx intlayer test         # 欠落した翻訳があるかテストする
      npx intlayer fill         # 欠落した翻訳を埋める
      npx intlayer extract