Vai al contenuto
Badge

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.

Badge

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

1

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.

2

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.

3

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.

4

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.

Badge

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

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.

Badge

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
Badge

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.

Titolo

Sottotitolo