モダン TypeScript 向け国際化ライブラリ
ゼロ依存 · 型安全性 · フレームワーク非依存
$
pnpm add@aaakul/ts-intl
export default {
dashboard: {
greeting: "こんにちは、{name: string}様!",
membership: "{role, select, admin {管理者} pro {Proメンバー} other {一般メンバー}}",
cart: "{count, plural, =0 {カートは空です} other {カート内に # 件の商品}}",
discount: "タイムセール:<badge>全品 20% OFF</badge> 実施中!",
invoice: "お支払い合計:{amount, number, currency}",
delivery: "お届け予定:{time}",
},
} as const;プレビュー
こんにちは、田中様!
Proメンバーカート内に 3 件の商品お支払い合計:¥15,800
お届け予定:2日後
型安全性
翻訳キー、名前空間、パラメータの TypeScript 型推論を提供し、多言語辞書構造の一致性を検証します。
ランタイム依存関係ゼロ
TypeScript と Web 標準 Intl API で実装。コード生成プロセスを必要としません。 Minified + Gzipped: < 5 kB
ICU Message Format 対応
複数形、序数、条件分岐、およびリッチテキストタグのマッピングに対応。外部パーサーを必要としません。
フレームワーク非依存
Astro、Next.js、React、Vue、Svelte、Node.js、Bun、Cloudflare Workers などの各種環境に対応します。
ベンチマーク
ネットワーク転送サイズベンチマーク
事前レンダリングとクライアント側のハイドレーションを伴う多言語アプリにおいて、ブラウザが実際にダウンロードする全 i18n リソースの転送サイズを測定。
ネットワーク転送サイズ (KB)
Playwright Headless Chromium · Real HTTP Transfer Size
paraglideミドルウェア分割
-91%36.3 KB
ts-intlロケール分割
-86%57.8 KB
paraglideデフォルト一括
-82%76.6 KB
i18nextHTTP 動的取得
-55%188.7 KB
ts-intlデフォルト一括
-14%360.0 KB
i18nextデフォルト一括
Baseline420.4 KB
ランタイム依存関係とオーバーヘッド
i18next はパーサーやプラグイン機構による固有のランタイムサイズを伴います。ts-intl は外部依存ゼロ(コア約 2 KB)で、ロケール分割時はアクティブな言語の辞書のみを取得します。
コンパイラ方式と動的分割の特性
Paraglide は関数へコンパイルすることで未使用キーを Tree-shaking します。ts-intl はコード生成不要のランタイム設計で、動的インポートにより複数言語の一括肥大化を防ぎます。