Titolo
Sottotitolo
Titolo
Paragrafo1
Paragrafo2
Paragrafo3
Titolo
Paragrafo1
Paragrafo2
Paragrafo3
Titolo
Sottotitolo
Identificatori di impostazioni locali (BCP 47)
I tag BCP 47, come en-US o zh-Hans-CN, specificano la lingua, l'alfabeto e la regione. Costituiscono la base di ogni sistema di internazionalizzazione (i18n) e determinano quali traduzioni, formati e regole applicare.
Unicode e UTF-8
Unicode assegna un codice univoco a ogni carattere di ogni alfabeto. L'UTF-8 è la codifica prevalente sul web e garantisce la corretta visualizzazione del testo indipendentemente dalla lingua.
Chiavi di traduzione
Le chiavi di traduzione sono identificatori fissi associati a stringhe specifiche per ogni impostazione locale. Esse separano il codice sorgente dai contenuti traducibili, consentendo lo sviluppo e la traduzione in parallelo.
Pluralizzazione (ICU)
Le lingue hanno regole diverse per il plurale: l'inglese ne ha due, l'arabo ne ha sei. ICU MessageFormat gestisce il plurale, il genere e alcune espressioni con un'unica sintassi.
Assistenza RTL
L'arabo, l'ebraico e altri alfabeti si leggono da destra a sinistra. Il supporto RTL richiede il ribaltamento dei layout, il capovolgimento delle icone e l'utilizzo di proprietà logiche CSS al posto di left/right.
Data / Numero / Valuta
Le date, i numeri e le valute variano a seconda delle impostazioni locali. L'API Intl e librerie come date-fns offrono una formattazione che tiene conto delle impostazioni locali, per cui 1.000,50 viene visualizzato come 1.000,50 in tedesco.
Titolo
Sottotitolo
JSON
Particolarmente diffuso nelle applicazioni web (React, Vue, Angular). Facilmente leggibile, supporta l'annidamento per strutture di chiavi ben organizzate. Non dispone di uno standard integrato per la pluralizzazione, pertanto librerie come ICU MessageFormat colmano questa lacuna.
XLIFF
Standard di settore basato su XML per lo scambio di traduzioni tra strumenti. Supportato da tutte le piattaforme TMS professionali. Esteso ma ricco di funzionalità, con supporto integrato per note, monitoraggio dello stato e metadati.
PO/POT (Gettext)
Formato open source classico utilizzato negli ecosistemi Python, PHP e Ruby. Supporto integrato per il plurale con una sintassi dedicata alle forme plurali. Ampiamente supportato dai traduttori e dagli strumenti di traduzione.
ARB
Application Resource Bundle è il formato standard di Flutter e Dart. Basato su JSON con supporto alla sintassi dei messaggi ICU, consente l'uso nativo dei plurali e delle opzioni di selezione. Utilizzato dagli strumenti gen-l10n di Flutter.
.strings / .stringsdict
Formati nativi della piattaforma Apple per lo sviluppo su iOS e macOS. Il file .strings gestisce semplici coppie chiave-valore, mentre il file .stringsdict utilizza la struttura XML delle liste di preferenze (plist) per le regole di pluralizzazione.
.resx
Formato di file di risorse .NET utilizzato per le applicazioni C# e VB.NET. Basato su XML, con una forte integrazione con gli strumenti di Visual Studio. Supporta risorse tipizzate per stringhe, immagini e altre risorse.
Titolo
Sottotitolo
Verifichi il proprio codice
Identificate ogni stringa hardcoded, ogni formato di data e ogni modello dipendente dalle impostazioni locali. Individuate quali componenti e pagine contengono testo visibile all’utente che deve essere estratto.
Esternalizzare le stringhe
Spostare tutto il testo destinato agli utenti in file di risorse strutturati (JSON, XLIFF o PO). Sostituire le stringhe inline con chiamate alle funzioni di traduzione che fanno riferimento alle chiavi.
Scegliete i vostri strumenti
Scegliete una libreria di internazionalizzazione (i18n) per il vostro framework, un sistema di gestione delle traduzioni (TMS) per la collaborazione e decidete se optare per flussi di lavoro di traduzione a cura di traduttori umani, basati sull'intelligenza artificiale o ibridi.
Integrazione e spedizione
Integri la vostra libreria i18n nel routing e nel rendering, colleghi il vostro TMS al CI/CD per la sincronizzazione automatica e distribuisca i pacchetti di localizzazione tramite CDN per una consegna rapida.
Titolo
Sottotitolo
Integrazione per Sviluppatori
Valutate gli strumenti CLI, il supporto SDK, i flussi di lavoro basati su Git e gli hook CI/CD. Le migliori piattaforme TMS si integrano direttamente nella pipeline di sviluppo, mantenendo le traduzioni sincronizzate con le modifiche al codice in modo automatico.
Memoria di Traduzione
La memoria di traduzione memorizza le traduzioni approvate in precedenza e le suggerisce per stringhe simili o identiche. Questo riduce i costi di traduzione, accelera i tempi di consegna e mantiene la coerenza in tutto il prodotto.
Funzionalità di Collaborazione
Cercate flussi di revisione, commenti in linea, glossari condivisi e catene di approvazione. Queste funzionalità consentono a traduttori, revisori e sviluppatori di collaborare senza colli di bottiglia o incomprensioni.
Intelligenza Artificiale e Automazione
Le moderne piattaforme TMS offrono suggerimenti di traduzione automatica, controlli qualità automatizzati, operazioni batch e instradamento intelligente. I flussi di lavoro assistiti dall'intelligenza artificiale riducono il lavoro manuale mantenendo la qualità delle traduzioni.
Titolo
Sottotitolo
React
Modelli di react-intl, react-i18next e FormatJS
Next.js
Localizzazione (i18n) dell'App Router, del middleware e dei componenti del server
Vue
API di composizione di Vue-i18n e integrazione con SFC
Angular
Funzionalità di internazionalizzazione integrate, ngx-translate e Transloco
Svelte
svelte-i18n, il routing di SvelteKit e gli store
Flutter
pacchetto intl, file ARB e strumenti gen-l10n
React Native
i18next, localizzazione Expo e moduli nativi
Nuxt
Modulo @nuxtjs/i18n con instradamento automatico
Titolo
Sottotitolo
Concatenazione di stringhe
La costruzione di frasi mediante la concatenazione di frammenti non funziona nelle lingue con un ordine delle parole diverso. Si consiglia invece di utilizzare ICU MessageFormat con i segnaposto.
Stringhe hardcoded
Inserire il testo destinato agli utenti direttamente nel codice sorgente rende impossibile la traduzione senza modifiche al codice. Esternalizzate ogni stringa sin dal primo giorno.
Ignorare i plurali
Il semplice if/else per il singolare e il plurale funziona solo in inglese. Molte lingue presentano diverse forme plurali che richiedono l'applicazione delle regole del plurale dell'ICU.
Traduzione a posteriori
Aggiungere l'i18n dopo il lancio comporta una costosa rifattorizzazione. Progettare fin dall'inizio in ottica di internazionalizzazione consente di risparmiare tempo ed evita l'accumulo di debito architettonico.
Titolo
Sottotitolo
- Tutte le stringhe destinate agli utenti sono state trasferite in file di risorse
- Rilevamento delle impostazioni locali implementato (browser, URL, preferenze dell'utente)
- La pluralizzazione è gestita tramite ICU MessageFormat per tutte le lingue di destinazione
- La formattazione di data, ora, numeri e valuta utilizza l'API Intl o un'API equivalente
- Supporto del layout RTL testato con le proprietà logiche CSS
- Impostazione della lingua di riserva in caso di traduzioni mancanti
- Le chiavi di traduzione seguono una convenzione di denominazione coerente
- La pipeline CI verifica che non vi siano chiavi di traduzione mancanti o inutilizzate
Titolo
Sottotitolo
- Pseudo
- Visivo
- Automatizzato
- Linguistico
- Espansione
Titolo
Sottotitolo
Qual è la differenza tra i18n e L10n?
L'internazionalizzazione (i18n) è il processo tecnico di progettazione del software volto a renderlo compatibile con più lingue e aree geografiche. La localizzazione (L10n) è il processo di adattamento dei contenuti di tale software a una specifica impostazione locale, che comprende la traduzione dei testi, l'adeguamento dei formati e la garanzia dell'adeguatezza culturale. L'i18n viene effettuata una sola volta nel codice sorgente; la L10n viene invece eseguita per ogni impostazione locale supportata.
Quale libreria di internazionalizzazione dovrei utilizzare?
La libreria più adatta dipende dal framework che utilizza. Per React, react-intl (FormatJS) e react-i18next sono le più diffuse. Gli sviluppatori Vue utilizzano solitamente vue-i18n. Angular offre un supporto i18n integrato, oltre a opzioni della comunità come Transloco. I progetti Svelte utilizzano svelte-i18n. Valuti ciascuna opzione in base alle dimensioni del bundle, al supporto ICU e al grado di integrazione con il suo modello di rendering.
Con quante lingue dovrei lanciare il sito?
Iniziate con due o tre lingue di grande impatto, sulla base dei dati esistenti relativi agli utenti o delle ricerche di mercato sul target. Ciò vi consentirà di verificare l'architettura di internazionalizzazione, il flusso di lavoro di traduzione e il processo di controllo qualità su una scala gestibile. Una volta che avrete messo a punto una pipeline affidabile, estendete il servizio ad altre lingue, utilizzando i dati analitici per stabilire l'ordine di priorità delle impostazioni locali da aggiungere successivamente.
Posso utilizzare la traduzione automatica per la mia app?
Un approccio ibrido si rivela efficace: si ricorre alla traduzione automatica per le bozze iniziali e per i contenuti di grande volume e bassa criticità, per poi affidare a revisori umani il compito di perfezionare le stringhe in cui la qualità è fondamentale, come i testi di marketing, i messaggi di errore e i testi legali. La moderna traduzione automatica neurale ha registrato notevoli miglioramenti, ma la revisione umana rimane essenziale per cogliere le sfumature, mantenere la voce del marchio e garantire l'accuratezza culturale.
Che cos'è la pseudo-localizzazione?
La pseudo-localizzazione è una tecnica di test che sostituisce il testo con caratteri accentati o estesi (ad esempio, trasformando «Hello» in «[~Hellllo~]») senza alterarne il significato. Aiuta gli sviluppatori a individuare stringhe hardcoded, troncamenti di testo e problemi di layout prima che siano disponibili le traduzioni definitive. La maggior parte delle librerie di internazionalizzazione (i18n) e degli strumenti di gestione delle traduzioni (TMS) supporta la generazione automatica di output pseudo-localizzati.
Come posso gestire la localizzazione dei contenuti dinamici?
Utilizzi i segnaposto MessageFormat di ICU per l'interpolazione (ad es. «Ciao, {name}») anziché concatenare stringhe. Per i plurali, utilizzi la sintassi plurale di ICU che si adatta alle regole di ciascuna lingua. Eviti di costruire frasi a partire da frammenti, poiché l'ordine delle parole varia da una lingua all'altra. Per il testo formattato, utilizzi segnaposto con tag che consentano ai traduttori di riorganizzare gli elementi HTML senza compromettere il markup.