コンテンツにスキップ

フレームワーク設定

lingui-for-sveltelingui-for-astro は、Lingui がロケール、カタログ、エクストラクタに使うものと同じ lingui.config.ts ファイルから、フレームワーク固有のオプションを読み込めます。

設定するフレームワークパッケージの defineConfig を使用します。

lingui.config.ts
import { defineConfig } from "lingui-for-svelte/config";
import { svelteExtractor } from "lingui-for-svelte/extractor";
export default defineConfig({
locales: ["en", "ja"],
sourceLocale: "en",
catalogs: [{ path: "src/lib/i18n/locales/{locale}" }],
extractors: [svelteExtractor],
});

framework フィールドは任意です。 次のようなフレームワーク固有の振る舞いが必要な場合だけ追加してください。

  • フレームワーク用マクロパッケージ名を置き換える packages
  • リッチテキストのコンポーネントマクロにおける空白処理を指定する whitespace
  • 実行時診断の生成を制御する runtimeWarnings
lingui.config.ts
import { defineConfig } from "lingui-for-svelte/config";
import { svelteExtractor } from "lingui-for-svelte/extractor";
export default defineConfig({
locales: ["en", "ja"],
sourceLocale: "en",
catalogs: [{ path: "src/lib/i18n/locales/{locale}" }],
framework: {
svelte: {
packages: ["@acme/i18n/macro"],
whitespace: "svelte",
runtimeWarnings: {
transContentOverride: "on",
},
},
},
extractors: [svelteExtractor],
});

ビルド変換とエクストラクタはどちらもこの設定を読み込みます。 たとえば framework.svelte の下に whitespace を定義すると、Svelte Vite プラグインと svelteExtractor が同じ値を参照します。 packages を設定すると、既定のフレームワーク用マクロパッケージ名に追加するのではなく置き換えます。 既定のパッケージ名も引き続き import する場合は、明示的に含めてください。

framework の下で使えるキーは、TypeScript のモジュール拡張によって登録されます。 各パッケージの config または extractor エントリーポイントをインポートすると、そのパッケージのキーが有効になります。

1 つの設定ファイルで Svelte と Astro の両方を扱う場合は、両方のパッケージをインポートします。

lingui.config.ts
import { defineConfig } from "lingui-for-astro/config";
import { astroExtractor } from "lingui-for-astro/extractor";
import { svelteExtractor } from "lingui-for-svelte/extractor";
export default defineConfig({
locales: ["en", "ja"],
sourceLocale: "en",
catalogs: [{ path: "src/lib/i18n/locales/{locale}" }],
framework: {
astro: {
whitespace: "astro",
},
svelte: {
whitespace: "svelte",
},
},
extractors: [astroExtractor, svelteExtractor],
});

この例では、lingui-for-astro/configdefineConfig と Astro のフレームワークキーを提供します。 lingui-for-svelte/extractor のインポートによって設定レジストリも拡張されるため、同じファイル内で framework.svelte も型付けされます。

デフォルトの lingui.config.* ファイルを使う場合、フレームワークプラグインとエクストラクタは設定を自動的に見つけます。

プロジェクトが標準ではない設定ファイルパスやインライン設定オブジェクトを使う場合は、config オプションで渡してください。

vite.config.ts
import { defineConfig } from "vite";
import linguiForSvelte from "lingui-for-svelte/unplugin/vite";
export default defineConfig({
plugins: [linguiForSvelte({ config: "./config/lingui.config.ts" })],
});
config/lingui.config.ts
import { defineConfig } from "lingui-for-svelte/config";
import { svelteExtractor } from "lingui-for-svelte/extractor";
export default defineConfig({
locales: ["en", "ja"],
sourceLocale: "en",
catalogs: [{ path: "src/lib/i18n/locales/{locale}" }],
extractors: [svelteExtractor({ config: "./config/lingui.config.ts" })],
});