ts-intl
文件
Astro 整合已推出|ts-intl-astro

現代 TypeScript 國際化解決方案

零依賴 · 型別安全 · 框架無關

$
pnpm add@aaakul/ts-intl
export default {
  dashboard: {
    greeting: "你好,{name: string}!",
    membership: "{role, select, admin {管理員} pro {專業版會員} other {普通會員}}",
    cart: "{count, plural, =0 {購物車暫無商品} other {購物車共有 # 件商品}}",
    discount: "限時促銷:<badge>全館 8 折</badge>",
    invoice: "結算總額:{amount, number, currency}",
    delivery: "預計送達:{time}",
  },
} as const;
即時預覽

你好,開發者!

專業版會員
限時促銷:全館 8 折
購物車共有 3 件商品結算總額:¥899.50
預計送達:2天後

型別安全

支援翻譯鍵名、命名空間及插值參數的 TypeScript 型別推導,並即時驗證跨語言詞典結構的一致性。

零執行階段依賴

基於 TypeScript 與 Web 標準 Intl API 建構,完全無需額外的程式碼生成建置步驟。 Minified + Gzipped: < 5 kB

ICU Message Format 支援

支援複數規則、序數詞、條件分支(select)與富文字標籤對應,無需引入任何外部解析器。

框架無關

適用於 Astro、Next.js、React、Vue、Svelte、Node.js、Bun 及 Cloudflare Workers 等多種環境。

基準測試

網路傳輸大小基準測試

模擬多語言 Web 應用程式在首頁預先渲染與客戶端水合(Hydration)時,瀏覽器實際下載的全部國際化資源網路傳輸大小。

首頁網路傳輸大小 (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 作為輕量執行階段方案無需程式碼生成,透過標準動態 import 避免多語言字典合併打包。