Per aggiungere una lingua a un’app Flutter, devi tradurre un solo file: il tuo ARB modello. Tutto il resto, comprese le classi Dart, viene generato a partire da quel file.
Questa guida si concentra su quel file, app_en.arb, e sui tre aspetti che possono creare problemi: i metadati @, i segnaposto e i plurali. Per gli altri formati usati nelle app, consulta come tradurre i file delle lingue della tua app.
Che cos’è un file ARB
Un file ARB è un JSON con una convenzione aggiuntiva. Lo strumento di localizzazione di Flutter legge per impostazione predefinita i file ARB da lib/l10n, usa app_en.arb come modello e genera le classi Dart quando esegui flutter gen-l10n. Ogni file contiene una lingua.
Le voci sono composte da coppie: una chiave con il relativo testo e una voce @ che lo descrive. Solo il testo va tradotto.
Quale opzione scegliere?
| Ideale per | Limiti | |
|---|---|---|
| AI Glot | Una nuova lingua o cinque, un glossario da rispettare, ogni rilascio | Non serve per dieci stringhe |
| Una piattaforma di gestione delle traduzioni (Crowdin, Lokalise, Phrase, Localizely) | Un team con revisori e collegamento al repository | Prima devi configurare un progetto e collegare il repository |
| DeepL | File XLIFF, inclusi nel suo elenco | ARB non è incluso, quindi devi prima convertirlo |
| ChatGPT, Claude o un altro assistente | Poche stringhe | Devi scrivere il prompt e riportare il glossario in ogni chat. A ogni esecuzione rischi che cambi una chiave, si rompa un {placeholder} o si alteri un plurale ICU, quindi devi confrontare ogni file |
| Un traduttore freelance o un’agenzia | Il testo per App Store e Play Store | Tempi lunghi, costo a parola e il file resta comunque da preparare |
Affida a una persona la scheda dello store e la prima schermata. Per il resto delle etichette e dei messaggi, usa un motore di traduzione.
Perché AI Glot è adatto ai file ARB
- Le chiavi e i metadati
@fanno parte della struttura. Puoi lasciarli esattamente come sono. - I segnaposto e la sintassi ICU vengono mantenuti.
{name}e{count, plural, ...}restano nel messaggio, mentre traduci le parole all’interno di ogni ramo. - Più lingue in un unico lavoro, invece di tradurre le stesse stringhe cinque volte.
- Un solo glossario per tutte le lingue e per i file che aggiungerai in seguito.
- Un preventivo prima di spendere, con un campione che puoi controllare.
Il percorso di un singolo file
- 1Caricaapp_en.arb com’èFino a 8 MB
- 2Dì ciò di cui hai bisognoLingue e cosa lasciare invariatoGratis
- 3Leggi il pianoStringhe, lingue, costoGratis
- 4ApprovaL'unico passaggio a pagamentoConsuma crediti
- 5ScaricaUn file ARB per linguaCaricalo
Com’è fatta una voce tradotta
{ "@@locale": "en", "@@locale": "fr", "welcome": "Welcome back, {name}", "welcome": "Bon retour, {name}", "@welcome": { "description": "Greeting on the home screen" }, "cartItems": "{count, plural, one{1 item} other{{count} items}}" "cartItems": "{count, plural, one{1 article} other{{count} articles}}"}Cosa controllare dopo
Plurali nelle lingue con più forme. L’inglese richiede due rami. Il russo e l’arabo ne richiedono di più, quindi il messaggio tradotto potrebbe aver bisogno di rami non presenti nel testo inglese originale. Controlla questi messaggi.
@@locale. Se non hai chiesto di aggiornarlo, viene restituito com’era. Impostalo quindi sulla lingua di destinazione prima di pubblicare.
Lunghezza. Controlla le schermate con le stringhe più lunghe per verificare che il testo non fuoriesca da un pulsante o da una scheda.
Come fare, passo dopo passo
1. Prova un file gratis. Il traduttore ARB non richiede un account e accetta file fino a 2 MB e 5,000 parole.
2. Carica app_en.arb nell’app oppure invialo dalla riga di comando, come indicato qui sotto.
3. Spiega in una frase cosa ti serve.
Translate this file into French, German and Spanish.
Leave the @ metadata entries alone. Set @@locale to the target language.
La frase determina cosa viene tradotto nell’intero file. Un’indicazione sullo stile, ad esempio “mantieni invariati tutti i {placeholder} e la sintassi dei plurali ICU” oppure “usa un registro informale”, va inserita nella seconda casella al momento dell’approvazione, perché viene applicata a ogni messaggio durante la traduzione.
4. Aggiungi un glossario con il nome dell’app, i nomi delle funzionalità e i termini che l’app usa sempre nello stesso modo. Scopri come crearne uno.
5. Leggi il piano e scegli il livello di qualità.
Lite offre circa tre volte più parole per credito ed è più veloce: è la scelta giusta per una prima bozza in una nuova lingua. Standard è pensato per le stringhe che gli utenti leggono per prime. Con Standard, un credito corrisponde a una parola.
6. Approva e scarica.
7. Inserisci i file in lib/l10n, accanto a app_en.arb, poi esegui:
flutter gen-l10n
Un file, più lingue
I nomi dei file e i conteggi sono solo esempi. Un file ARB contiene una sola lingua, quindi ogni lingua ha il proprio file.
Tre modi per usarlo
Dalla riga di comando è il metodo che gli sviluppatori Flutter continuano a usare, perché si ripete a ogni rilascio:
id=$(aiglot batches create lib/l10n/app_en.arb \
--instruction "Translate into French. Leave the @ metadata entries alone. Set @@locale to the target language." \
--json | jq -r '.data.id')
aiglot batches get "$id" --json | jq '.data.plan'
aiglot batches approve "$id" --quality lite \
--instructions "Keep every {placeholder} and ICU plural syntax exactly as written."
aiglot batches download "$id" --output lib/l10n/app_fr.arb
Con il tuo agente AI: collega AI Glot come server MCP. L’agente può leggere il tuo progetto, proporre termini per il glossario, avviare il processo, salvare i file in lib/l10n ed eseguire flutter gen-l10n al posto tuo.
Nell’app: carica, fai clic e scarica. Ideale per un’operazione occasionale.
Per integrare l’API, consulta la documentazione dell’API.
Nella pagina Prezzi trovi i costi per volumi maggiori. Con un account gratuito hai crediti per elaborare un file reale.
I limiti riportati qui sono quelli in vigore al momento della stesura: 8 MB per file ARB e 2 MB e 5,000 parole nello strumento gratuito. I valori predefiniti di Flutter provengono dalla documentazione ufficiale di Flutter e possono cambiare. L’elenco di DeepL proviene dalla sua documentazione. I nomi dei file e il numero di stringhe negli schemi sono esempi. Nel tuo piano trovi i valori effettivi relativi al tuo file, consultabili gratuitamente.
