ts-intl
ドキュメント
Astro 統合に対応|ts-intl-astro

モダン 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メンバー
タイムセール:全品 20% OFF 実施中!
カート内に 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 はコード生成不要のランタイム設計で、動的インポートにより複数言語の一括肥大化を防ぎます。