コンテンツにスキップ

コンセプト

lingui-for は、新しい i18n モデルを作ろうとしているわけではありません。 公式パッケージの対象外となっているフレームワークでも、Lingui のモデルをそのまま保つことを目指しています。

優先順位は次の順です。

  1. 可能な限り公式 Lingui の挙動に合わせる
  2. 低レベルの実行時 API を直接使わせるのではなく、フレームワーク本来の構文でマクロを使えるようにする
  3. 抽出とコンパイルのワークフローを保ち、既存の Lingui の知識がそのまま活きるようにする

利用者は、Lingui ですでに期待している記述形式をそのまま書けるべきです。

フレームワーク統合は、これらの形式をコンパイル時に消し込むべきです。 低レベルの実行時ヘルパーも存在しますが、それらはコンパイル先であり、主要な記述面ではありません。

lingui-for は次のものを保とうとしています。

  • 公式のメッセージ記述子の形
  • 公式の抽出とコンパイルの流れ
  • 即時翻訳と遅延翻訳に関する公式の意味論
  • すでに存在する公式の実行時パッケージ(インスタンス管理の @lingui/core、React コンポーネントの @lingui/react

そのため、素の JavaScript / TypeScript 向けマクロ対応(unplugin-lingui-macro)は、フレームワーク構文向け対応とは分けて扱われています。 詳しくは プレーンな JS/TS でのセットアップ を参照してください。

フレームワーク対応は、すべての描画系で同一ではありません。

  • Svelte では、フレームワーク自身が自然に受け止められるリアクティブモデルを持っているため、リアクティブマクロの書き心地を提供できます
  • Astro はリクエスト単位で動作し、基本的には非リアクティブなので、この統合はリクエスト境界での翻訳と、サーバー上で安全に扱えるリッチテキストに重点を置いています

この非対称性は意図的なものです。 ここでいう整合性とは、実行時アーキテクチャまで同一であることではなく、利用者にとって同等の価値があることを意味します。

  • 1 つのフレームワークに組み込むなら、まず フレームワーク から読んでください
  • 記述パターンを選びたいなら、マクロ へ進んでください
  • 記述子共有や抽出の指針が必要なら、ガイド を使ってください