変換ローカライゼーションモード

Lit Localizeの変換モードでは、ロケールごとに個別のフォルダが生成されます。各フォルダには、そのロケールでアプリケーションの完全なスタンドアロンビルドが含まれており、すべての実行時`@lit/localize`コードが削除されています。

  • `msg`呼び出しは、各ロケールで静的にローカライズされた文字列またはテンプレートのバージョンに置き換えられます。
  • `str`タグは削除されます。
  • `@lit/localize`のインポートは削除されます。
  • テンプレートは、可能な限り親テンプレートに折りたたむことで、不要な式を削除するように最適化されます。

例えば、ソースが以下の場合

以下のファイルが生成されます

`lit-localize.json`設定ファイルで、`mode`プロパティを`transform`に設定し、`output.outputDir`プロパティをローカライズされたアプリケーションフォルダを生成する場所に設定します。詳細については、変換モードの設定を参照してください。

JavaScriptまたはTypeScriptプロジェクトで、必要に応じて`configureTransformLocalization`を呼び出し、以下のプロパティを持つオブジェクトを渡します。

  • `sourceLocale: string`:ソーステンプレートが記述されているロケール。ロケールコードとして指定します(例:`"en"`)。

`configureTransformLocalization`は、以下のプロパティを持つオブジェクトを返します。

  • `getLocale`:アクティブなロケールコードを返す関数。

例:

変換モードでは、アクティブなロケールはロードするJavaScriptバンドルによって決定されます。ページの読み込み時にどのバンドルを読み込むかを決定する方法は、ユーザー次第です。

たとえば、アプリケーションのロケールがURLパスに反映されている場合は、URLをチェックして適切な`<script>`タグを挿入するインラインスクリプトをHTMLファイルに含めることができます。

スクリプト名を動的に選択する場合は、常にロケールコードを検証してください。以下の例は、既知のロケールコードのいずれかと一致する場合にのみスクリプトを読み込むことができるため安全ですが、一致ロジックの精度が低い場合は、安全でないJavaScriptを挿入するバグまたは攻撃が発生する可能性があります。

パフォーマンスを向上させるために、サーバー上のHTMLファイルに適切なスクリプトタグを静的にレンダリングできます。これにより、ブラウザはできるだけ早くスクリプトのダウンロードを開始できます。

変換モードでは、`setLocale`関数は使用できません。代わりに、ページをリロードして、次回の読み込みで別のロケールバンドルが選択されるようにします。

たとえば、この`locale-picker`カスタム要素は、ドロップダウンリストから新しいロケールが選択されるたびに新しいURLを読み込みます。

Rollupを使用していて、`lit-localize build`コマンドを個別に実行する代わりに統合ソリューションを希望する場合は、`@lit/localize-tools/lib/rollup.js`から`localeTransformers`関数をRollup設定にインポートします。

この関数は、`{locale, transformer}`オブジェクトの配列を生成します。これは、@rollup/plugin-typescripttransformersオプションと組み合わせて使用​​して、ロケールごとに個別のバンドルを生成できます。

JavaScriptを記述する場合、ここで使用されているTypeScriptコンパイラについて心配する必要はありません。 Lit Localizeは、ソースコードを解析、分析、および変換するためにTypeScriptコンパイラに依存していますが、プレーンJavaScriptファイルも処理します。

次の`rollup.config.mjs`は、各ロケールの縮小バンドルを`./bundled/<locale>/`ディレクトリに生成します。