ts-intl
Documentazione
Integrazione con Astro disponibile|ts-intl-astro

Internazionalizzazione per il TypeScript moderno

Zero dipendenze · Sicurezza dei tipi · Indipendente dal framework

$
pnpm add@aaakul/ts-intl
export default {
  dashboard: {
    greeting: "Ciao, {name: string}!",
    membership: "{role, select, admin {Amministratore} pro {Membro Pro} other {Membro Standard}}",
    cart: "{count, plural, =0 {Il carrello è vuoto} one {# articolo nel carrello} other {# articoli nel carrello}}",
    discount: "Offerta lampo: <badge>20% di sconto</badge> su tutti gli articoli",
    invoice: "Totale: {amount, number, currency}",
    delivery: "Consegna stimata: {time}",
  },
} as const;
Anteprima dal vivo

Ciao, Alex!

Membro Pro
Offerta lampo: 20% di sconto su tutti gli articoli
3 articoli nel carrelloTotale: 129,99 €
Consegna stimata: tra 2 giorni

Sicurezza dei tipi

Fornisce l'inferenza dei tipi TypeScript per chiavi di traduzione, namespace e parametri, validando la coerenza dello schema tra i diversi idiomi.

Zero dipendenze a runtime

Costruito su TypeScript e sulle API standard Web Intl, senza richiedere passaggi di generazione del codice in fase di compilazione. Minified + Gzipped: < 5 kB

Supporto per ICU Message Format

Supporta plurali, ordinali, diramazioni condizionali (select) e interpolazione di tag rich text senza dipendenze da parser esterni.

Indipendente dal framework

Funziona su Astro, Next.js, React, Vue, Svelte, Node.js, Bun e Cloudflare Workers.

Benchmark

Benchmark sulle dimensioni del trasferimento di rete

Misura la dimensione effettiva del trasferimento di rete di tutti gli asset i18n durante il pre-rendering iniziale e l'idratazione lato client.

Dimensioni trasferimento di rete (KB)

Playwright Headless Chromium · Real HTTP Transfer Size

paraglideSuddivisione middleware
-91%36.3 KB
ts-intlSuddivisione per lingua
-86%57.8 KB
paraglideBundle completo
-82%76.6 KB
i18nextCaricamento dinamico HTTP
-55%188.7 KB
ts-intlBundle completo
-14%360.0 KB
i18nextBundle completo
Baseline420.4 KB
Dipendenze a runtime e ingombro

i18next include motori di parsing completi e runtime per i plugin, comportando un overhead di base fisso. ts-intl non ha dipendenze a runtime (~2 KB per il core) e, in modalità di suddivisione per lingua, carica unicamente il dizionario della lingua attiva.

Compilatore rispetto alla suddivisione a runtime

Paraglide compila i messaggi in funzioni JS ed elimina le chiavi inutilizzate tramite tree-shaking. ts-intl è una libreria a runtime che non richiede alcuna generazione di codice, impiegando import dinamici standard per evitare l'accumulo di dizionari multilingua nel bundle.