Svelte: 注意点
リアクティブマクロは Svelte 固有
セクションタイトル “リアクティブマクロは Svelte 固有”$t、$plural、$select、$selectOrdinal が存在するのは、Svelte にはそれらを自然に載せられるストアとリアクティブモデルがあるためです。
ほかのフレームワークには、これに対応する形式はありません。
Svelte では、素の t($ なし)は、ロケールへのリアクティブ性を暗黙的に失わないよう、コンパイル時エラーになります。
詳しい説明と *.eager というエスケープハッチについては リアクティブマクロ を参照してください。
翻訳が動く前に i18n コンテキストを設定する必要がある
セクションタイトル “翻訳が動く前に i18n コンテキストを設定する必要がある”$t などのリアクティブマクロは i18n インスタンスを遅延的に解決しますが、それでもコンパイル済みマークアップが実行される時点までにはコンテキストが存在していなければなりません。
初期化は、コンポーネントのスクリプトブロックのモジュールレベルで setLinguiContext を使って行ってください。
onMount、$effect、コールバックの中で行ってはいけません。
同じファイル内でコンテキストを設定し、そのまま利用する形が動くのは、マクロ出力からのアクセスが遅延されているためです。
同一コンポーネント内でのセットアップや Svelte アイランドを含む初期化パターンは i18n コンテキスト を参照してください。
実行時ヘルパーは主要 API ではない
セクションタイトル “実行時ヘルパーは主要 API ではない”実行時レイヤー(lingui-for-svelte/runtime)はマクロのコンパイル先です。
その API はメジャーバージョンを上げずに変わる可能性があります。
統合処理そのものを開発しているのでなければ、lingui-for-svelte/macro を使ってください。
コンポーネントマクロの空白は既定でフレームワーク対応
セクションタイトル “コンポーネントマクロの空白は既定でフレームワーク対応”リッチテキストのコンポーネントマクロでは、生の JSX の意味論ではなく、フレームワークを考慮した空白処理が既定で使われます。
jsx の挙動を強制したい場合や、抽出設定と変換設定を揃えたい場合は コンポーネントマクロにおける空白 を参照してください。
素の .js、.ts、.svelte.js、.svelte.ts
セクションタイトル “素の .js、.ts、.svelte.js、.svelte.ts”素の JavaScript / TypeScript ファイル(.svelte.js と .svelte.ts を含む)は、Svelte 構文変換ではなく、素の JS / TS 用パイプラインを通ります。
これらのファイルでは @lingui/core/macro と unplugin-lingui-macro を使ってください。
セットアップ手順と推奨される記述子パターンは プレーンな JS/TS でのセットアップ を参照してください。