コンテンツにスキップ

Astro: 注意点

Astro はリアクティブなコンポーネント実行時ではない

セクションタイトル “Astro はリアクティブなコンポーネント実行時ではない”

Astro には、.astro ファイル向けの組み込みリアクティブコンポーネントモデルはありません。 そのため lingui-for-astro は、リアクティブな翻訳ストアではなく、ビルド時またはリクエスト時の翻訳に焦点を当てています。 ページが一度描画されたあとの翻訳文字列は固定であり、クライアント側でロケールが変わったときに再評価される Svelte の $t に相当するものはありません。

Lingui の初期化は、ミドルウェアで行うのが推奨です(すべての出力モードで有効です)。単純な静的サイトではページのフロントマターでの初期化も可能です。 詳しくは i18n コンテキスト を参照してください。

実行時レイヤー(lingui-for-astro/runtime)はマクロのコンパイル先です。その API はメジャーバージョンを上げずに変わる可能性があります。 ツール実装や変換処理のデバッグをしているのでなければ、lingui-for-astro/macro を使ってください。

コンポーネントマクロの空白は既定でフレームワーク対応

セクションタイトル “コンポーネントマクロの空白は既定でフレームワーク対応”

リッチテキストのコンポーネントマクロでは、生の JSX 意味論ではなく、フレームワークを考慮した空白処理が既定で使われます。 jsx の挙動を強制したい場合や、抽出設定と変換設定を揃えたい場合は コンポーネントマクロにおける空白 を参照してください。

Astro の .mdx ファイルは、lingui-for-astro を支える Vite 変換とは別の Remark / Rehype パイプラインでコンパイルされます。 そのパイプラインへマクロ呼び出しを差し込むことはサポートされていません。 MDX コンテンツを翻訳したい場合は、ロケールごとに別々の .mdx ファイルを管理してください。

クライアントフレームワークのアイランドは独自の実行時モデルを持つ

セクションタイトル “クライアントフレームワークのアイランドは独自の実行時モデルを持つ”

Astro の中に Svelte や React のアイランドを埋め込む場合、それらのアイランドはそれぞれ専用の Lingui 統合を使う必要があります。 lingui-for-astro が扱うのは .astro のコンパイル段階だけです。 推奨される分担は アイランドを使う を参照してください。