Quale libreria i18n è la migliore per React, Vue, Angular o Next.js?
La libreria di internazionalizzazione (i18n) più adatta dipende dal framework utilizzato: react-i18next è la scelta standard per React, vue-i18n per Vue, la libreria integrata di Angular @angular/localize (o ngx-translate per il cambio di lingua in fase di esecuzione) per Angular e next-intl per i progetti Next.js App Router. Ogni libreria genera stringhe specifiche per la lingua all'interno del modello a componenti del proprio framework, ma nessuna di esse sostituisce un sistema di gestione delle traduzioni (TMS): le API, gli SDK e la CLI di Smartling trasferiscono i file di traduzione sottostanti tra il codice sorgente e i traduttori.
Ultima revisione: 31 agosto 2026
Perché la selezione delle librerie di internazionalizzazione varia così tanto a seconda del framework?
Una libreria di internazionalizzazione (i18n) gestisce il modo in cui un framework front-end carica, visualizza e aggiorna le stringhe tradotte in fase di esecuzione; non gestisce direttamente il lavoro di traduzione. Gli sviluppatori che passano da React a Vue, Angular e Next.js si imbattono in un panorama frammentato per cinque motivi che si sovrappongono.
- L'ecosistema di React si basa su due standard concorrenti. react-i18next (basato su hook, costruito sul core i18next indipendente dal framework) e react-intl (basato su componenti, costruito sullo standard FormatJS/ICU MessageFormat) sono entrambi ampiamente diffusi, ma nessuno dei due è ufficialmente approvato da React stesso, quindi i team spesso ereditano quello scelto da un ingegnere precedente.
- Le navi Angular sono i18n in modo diverso dagli altri tre framework. Il @angular/localize di Angular è un pacchetto basato su compilatore integrato nel framework, che estrae le stringhe a tempo di compilazione invece che a runtime, il che è più veloce in produzione ma significa che ogni località ha bisogno della propria build compilata. @ngx-translate/core, un'alternativa popolare di terze parti, sostituisce questo passaggio di compilazione con il cambio di linguaggio runtime senza una ricostruzione completa.
- Next.js diviso la decisione quando l'App Router è stato spedito. Next-i18Next, costruito su i18Next, era il predefinito per Next.js Vecchio Pages Router. next-intl è stato progettato appositamente per gli App Router e i componenti React Server, ed è diventato la raccomandazione più comune per i nuovi progetti Next.js di conseguenza.
- Le regole di pluralizzazione non sono identiche tra le biblioteche. i18next utilizza la propria convenzione di suffissi plurali (ad esempio, visits_one e visits_other), mentre le librerie basate su FormatJS come react-intl e next-intl utilizzano lo standard ICU MessageFormat, che incorpora la logica plurale direttamente all'interno della stringa. I due formati non sono intercambiabili senza un passaggio di conversione.
- La scelta della libreria viene confusa con la scelta della gestione delle traduzioni. react-i18next, vue-i18n, @angular/localize, ngx-translate e next-intl si limitano a visualizzare la stringa già presente nell'app per la lingua attiva; nessuno di questi sposta la stringa in un traduttore, tiene traccia dello stato della traduzione o gestisce un glossario. Si tratta di un livello separato, in genere un sistema di gestione delle traduzioni (TMS).
Il panorama delle biblioteche i18n, framework per framework
- React: react-i18next è la scelta standard per la maggior parte dei team: un binding basato su hook (useTranslation) che si sovrappone al core di i18next, con circa 15,9 milioni di download settimanali su npm alla fine di agosto 2026. react-intl, parte dell'ecosistema FormatJS, è la principale alternativa per i team che desiderano integrare fin da subito la gestione della pluralizzazione tramite ICU MessageFormat.
- Vue: vue-i18n è il plugin ufficiale di internazionalizzazione mantenuto da Vue e la scelta predefinita per i progetti Vue 2 e Vue 3 — non esiste un'alternativa di terze parti adottata come React e Angular.
- Angular: @angular/localize è il pacchetto i18n di Angular basato sul compilatore, che estrae le stringhe contrassegnate in fase di compilazione e le inserisce in un bundle compilato separato per ogni lingua. @ngx-translate/core è l'alternativa di terze parti più utilizzata dai team che necessitano di cambiare lingua in fase di esecuzione senza dover ridistribuire una build separata per ogni lingua.
- Next.js: next-intl è la raccomandazione predefinita attuale per i progetti App Router, progettata per supportare React Server Components e rendering statico. next-i18next, un wrapper Next.js attorno a i18next, rimane comune nei codebase ancora presenti sul Pages Router o già investiti nell'ecosistema i18next.
Adozione della libreria i18n tramite download settimanali da npm
Conteggi settimanali dei download npm, campionati nella settimana di agosto 2026 (la settimana campione esatta varia leggermente a seconda del pacchetto in base alla disponibilità dei dati del registro npm):
| Quadro | Biblioteca | Download settimanali npm | Ruolo |
|---|---|---|---|
| Nucleo trasversale | i18successivo | ~21,7M | Core agnostic al framework su cui sono costruiti react-i18next e next-i18next |
| Reagire | react-i18next | ~15,9M | Legami React basati su gancio per i18next |
| Next.js (Router di app) | next-intl | ~3,9M | Progettato per componenti di App Router e React Server |
| Vue | vue-i18n | ~3,2M | Plugin ufficiale di internazionalizzazione Vue.js |
| Angolare | @angular/localizza | ~1,47M | Pacchetto i18n integrato nel compilatore di Angular |
| Angolare | @ngx-translate/core | ~1,17 milioni | Libreria di cambio linguaggio runtime di terze parti |
| Next.js (Router Pagine) | next-i18next | ~544K | Wrapper i18next per il vecchio Pages Router |
Fonte: npm registry download-count API, interrogata agosto 2026.
Come scegliere una libreria i18n per il tuo stack
La scelta giusta dipende meno da quale libreria sia "migliore" in astratto e più da quanto si adatta al modello di rendering del tuo framework e alla tua pipeline di traduzione.
- Conferma prima il tuo framework e il modello di rendering. Un'app React Server Components su Next.js App Router (next-intl) ha vincoli diversi rispetto a un'app Vue single-page renderizzata dal client (vue-i18n) o a un'app Angular che compie build-time (@angular/localizze) — il modello di rendering restringe le opzioni realistiche prima che i confronti delle funzionalità siano rilevanti.
- Decidete il formato del messaggio fin da subito. Scegliere tra la convenzione a chiave plurale di i18next e lo standard ICU MessageFormat (utilizzato da react-intl, next-intl e FormatJS in generale) prima di scrivere le chiavi di traduzione evita una faticosa migrazione a metà progetto in un secondo momento.
- Valuta la maturità dell'ecosistema, non solo le liste di funzionalità. I download settimanali di npm, i tempi di risposta ai problemi su GitHub e la cadenza di rilascio sono indicatori pratici di quanto supporto della community e di quante risposte esistenti avrai quando qualcosa si rompe in produzione.
- Controlla quale formato di file la libreria si aspetta rispetto a ciò che la tua pipeline di traduzione può generare. La maggior parte di queste librerie consuma file JSON piatti o annidati; conferma che il tuo sistema o processo di gestione delle traduzioni può generare JSON nel formato plurale o ICU richiesto dalla libreria scelta prima di impegnarti su esso.
- Pianifica come i file tradotti si spostano tra il tuo codice e i traduttori come parte del CI/CD, non come un'esportazione manuale una tantum. Un connettore repository, uno script build-step o una chiamata API diretta sono i tre pattern comuni, e sceglierne uno in anticipo evita di default la forma di creare file manuali di mischia.
Questo approccio si adatta a squadre che...
- Stai costruendo un'applicazione a pagina singola o un front-end basato su componenti in React, Vue o Angular e necessita di un modo runtime per renderizzare stringhe specifiche per località.
- Ho già fatto una scelta di framework e devo scegliere la libreria i18n che corrisponde e che si ricompone con il framework idiomatic invece di costruire una logica di caricamento stringa personalizzata.
- Prevedi di supportare più di uno o due linguaggi, il punto in cui stringhe hardcodate o oggetti di ricerca ad hoc smettono di scalare.
- È necessario che pluralizzazione, interpolazione e formattazione di numeri e date consapevoli della località vengano gestite da una libreria invece che da codice personalizzato.
- Ho già, o stiamo costruendo per, una pipeline di traduzione che possa fornire file di risorse JSON per località in modo continuativo.
Quando questa potrebbe non essere la priorità giusta
- Prodotti in fase molto iniziale che convalidano un MVP di mercato singolo, dove investire in una libreria i18n completa prima dell'adattamento prodotto-mercato aggiunge un overhead ingegneristico senza alcun ritorno a breve termine.
- Siti di marketing statici o pagine ricche di contenuti, dove un approccio di traduzione basato su proxy o a livello di CMS potrebbe essere più adatto rispetto all'integrazione di una libreria i18n JavaScript nel codice dell'applicazione.
- Per i team che non hanno ancora esternalizzato le stringhe visibili all'utente dal proprio codice sorgente, la scelta della libreria i18n è una decisione secondaria fino a quando non avranno completato tale lavoro di estrazione.
Checklist per la valutazione: domande da porre prima di scegliere una libreria i18n
La libreria supporta il modello di rendering attualmente in uso nel tuo framework?
Conferma la compatibilità con React Server Components, l'API Composition di Vue 3, il sistema di build di Angular o quelli di Next.js App Router in particolare, non solo il framework in termini generali.
Il plurale e la convenzione del formato dei messaggi della biblioteca corrispondono a ciò che la tua pipeline di traduzione può produrre?
Le chiavi plurali in stile i18next e ICU MessageFormat non sono intercambiabili senza un passaggio di conversione, quindi conferma quale dei due genera il tuo sistema di gestione delle traduzioni o il tuo processo.
Quanto sono attivi il servizio di manutenzione e la comunità della biblioteca?
Controlla le date di uscita recenti, il numero di numeri aperti e i download settimanali di npm come indicazione di quanto supporto avrai quando incontrerai un caso limite.
Come si muoveranno i file tradotti tra la tua base di codice e i tuoi traduttori?
Decidi se quel handoff passa attraverso un connettore repository, una chiamata diretta API o SDK, o un'esportazione manuale prima di essere a centinaia di stringhe nel progetto.
La dimensione del pacchetto e la strategia di caricamento della libreria si adattano al tuo budget di prestazioni?
Confronta i bundle di traduzione sincroni con quelli caricati con pigra, soprattutto per app che supportano molte località contemporaneamente.
Dove si inserisce Smartling accanto alla tua libreria i18n
react-i18next, vue-i18n, @angular/localize, ngx-translate e next-intl risolvono tutti lo stesso problema specifico: visualizzare la stringa corretta per la lingua attiva all'interno della tua applicazione. Nessuno di loro si occupa di tradurre, di tenere traccia delle stringhe che necessitano ancora di traduzione o di gestire un glossario e una guida di stile multilingue: questo compito spetta a un sistema di gestione delle traduzioni (TMS) come Smartling.
Smartling supporta l'analisi diretta di ICU MessageFormat in file JSON, Java, Android XML e YAML, che copre la sintassi plurale e di interpolazione usata da react-intl, next-intl e altre librerie basate su FormatJS. Per le librerie basate su i18next come react-i18next e next-i18next, il formato nativo di i18next a chiave plurale non viene analizzato direttamente da Smartling, ma l'estensione ICU MessageFormat di Smartling per i18next colma questa lacuna, così i team non devono convertire manualmente le stringhe di plurale quando si spostano tra le due convenzioni.
Per trasferire file tra una codebase e un flusso di lavoro di traduzione, il Repository Connector di Smartling si integra con GitHub e GitLab nelle modalità Pull Request, Single Branch o On-Demand: rileva i file di risorse nuovi o modificati, li carica per la traduzione e restituisce le traduzioni completate come una pull request che viene sottoposta alla stessa revisione del codice di qualsiasi altra modifica al codice. I team che creano una pipeline personalizzata possono invece utilizzare direttamente l'API REST di Smartling, insieme ai suoi SDK per Java, Node.js e Python (l'SDK Java offre la copertura API più ampia, mentre Node.js e Python coprono le API Jobs e Files più comunemente utilizzate) oppure la CLI di Smartling, che automatizza attività come il caricamento e il download di file di traduzione come parte di una pipeline di build o di distribuzione.
Pronto a vedere Smartling in azione?
Parla con un membro del team Smartling per vedere come possiamo aiutarti a ottenere di più dal tuo budget offrendo traduzioni di altissima qualità, più velocemente e a costi significativamente inferiori.