Skip to content

ビルド戦略

buildStrategy は、ロケールをどのようにバンドルへ反映するかを選びます。Vite プラグインの導入は はじめる を参照してください。

仮想モジュール(virtual

仮想モジュール(virtual)は通常の戦略です。ロケールごとの仮想モジュールを import() し、Viteビルドでロケールチャンクを分離します。

インライン化チャンク(inline-chunks

インライン化チャンク(inline-chunks)は、ビルド時に翻訳対象チャンクをロケールごとに複製し、$locale / $l の参照をそのロケール向けの文字列リテラル、参照された部分木、またはメッセージ展開式に置換します。

主要ロケールを含む各ロケールは *.ja-JP.js*.en-US.js のようなロケール別チャンクとして出力されます。HTML の entry script は *.i18n-loader.js に差し替えられ、このローダーが locale クエリを見て対応するロケールチャンクを読み込みます。locale が未指定、または未対応の場合は主要ロケールのチャンクを読み込みます。

差し替え後の <script> では noncecrossoriginreferrerpolicy などの既存属性を保持します。元の entry script に integrity がある場合は、生成された loader 用の integrity に差し替えます。loader は選択したロケールチャンクを modulepreload とロケールチャンクごとの integrity で検証してから import() します。

インライン化できない参照

静的な $locale.sfc.title$locale.env.title$l.sfc.count({ n }) はロケール別の文字列リテラルまたはメッセージ展開式へ置換されます。$locale.env.labels[key] のように途中から動的キーになる参照は、解決できる静的な部分木だけをロケール別オブジェクトとして埋め込み、実行時の lookup 式を残します。裸の locale helper オブジェクトは辞書全体へ展開しません。

ビルド時に解決できないパスや複雑すぎる $l 呼び出しは、主要ロケールの値にフォールバックし、それもなければ $locale.sfc.missingKey のようなキー文字列を返します。置換できない JavaScript はそのまま黙って残さず、ビルド時エラーになります。

この戦略はロケール数に比例して出力ファイル数と合計配信サイズが増えます。

関連 API:

次に読む: