Traduci file ARB di Flutter
Un file .arb è JSON con messaggi ICU e un blocco @key di metadati accanto a ogni stringa. KAERIS traduce i messaggi, mantiene i metadati e controlla la sintassi ICU in seguito.
KAERIS ha tradotto questa pagina e controllato ogni riga ritraducendola. Un madrelingua non l'ha ancora revisionata. Originale in inglese
Come viene creato un file ARB
JSON semplice. Ogni messaggio si trova accanto a una voce @message con la sua descrizione e i tipi di placeholder; @@locale indica la lingua. Plurali e selezioni sono stringhe ICU: {count, plural, =0{…} one{…} other{…}}.
{
"@@locale": "en",
"welcome": "Welcome back, {name}!",
"@welcome": {
"description": "Greeting on the home screen",
"placeholders": { "name": { "type": "String" } }
},
"itemCount": "{count, plural, =0{No items} one{{count} item} other{{count} items}}",
"@itemCount": {
"placeholders": { "count": { "type": "int" } }
}
}
Cosa controllare nelle traduzioni ARB
La sintassi ICU è codice
Una parentesi persa o un ramo omesso rompono il Dart generato. KAERIS confronta i blocchi ICU con la sorgente e segnala un ramo esatto omesso come
=0.Lingue con più forme plurali
Il russo necessita di
fewemanyoltre aoneeother; il controllo segnala una forma mancante per le lingue in cui ciò si applica.I metadati sono per il template, non per la traduzione
Le voci
@key(descrizione, tipi di placeholder) vengono mantenute nell'output;@@localeviene riscritto per la lingua di destinazione.I placeholder sono nominati
{name}deve mantenere il suo nome, perché il generatore lo lega al tipo nel blocco@.
Un'esecuzione reale: tradotto in tedesco e controllato
Un'esecuzione reale, 27 ottobre 2026, nulla modificato manualmente: kaeris translate app_en.arb --langs de con kaeris 0.2.35, 2,7 secondi, modello google/gemini-2.5-flash-lite, il predefinito del piano gratuito. Sotto, il file tedesco che ha scritto e cosa dice kaeris check al riguardo.
{
"@@locale": "de",
"welcome": "Willkommen zurück, {name}!",
"itemCount": "{count, plural, =0{Keine Artikel} one{{count} Artikel} other{{count} Artikel}}",
"@welcome": {
"description": "Greeting on the home screen",
"placeholders": {
"name": {
"type": "String"
}
}
},
"@itemCount": {
"placeholders": {
"count": {
"type": "int"
}
}
}
}
$ kaeris check --source app_en.arb --langs de ✓ de: complete & placeholder-safe ✓ all locales complete & placeholder-safe
Cosa fa KAERIS con esso
Metadati mantenuti, locale riscritto
I blocchi
@keyvengono mantenuti;@@localeè impostato per ogni lingua di destinazione.ICU controllato
Rami persi, variabili perse e danni alle parentesi vengono trovati dallo stesso controllo che esegue il sito web.
Solo le nuove chiavi
--only-newfunziona per ARB: le chiavi modificate e nuove vengono tradotte, il resto viene riutilizzato. Preimpostazioni:kaeris init --preset flutter-arb.Controllo terminale
kaeris checklegge direttamente le sorgenti ARB, senza chiave.
Eseguilo in tre passaggi
Installa la CLI
Esegui
pip install kaeris.Traduci il template
Esegui
kaeris translate lib/l10n/app_en.arb --langs de,ja.Controlla il risultato
Esegui
kaeris checkcon la sorgente e--pattern 'app_{lang}.arb'; esce con codice 1 in caso di variabile o blocco ICU errato.
pip install kaeris
kaeris init --preset flutter-arb
kaeris translate lib/l10n/app_en.arb --langs de,ja --verify
kaeris check --source lib/l10n/app_en.arb --langs de,ja --pattern 'app_{lang}.arb'
Domande
Le voci @metadata vengono mantenute?
Sì. Descrizioni e tipi di placeholder rimangono accanto a ogni messaggio; @@locale viene riscritto per la lingua di destinazione.
Cosa succede se il plurale ICU è sbagliato in una traduzione?
Il controllo confronta i blocchi ICU con la sorgente e indica il problema, ad esempio un ramo =0 omesso. Nell'esecuzione reale sopra, il plurale è tornato con tutti e tre i rami e il controllo non ha avuto nulla da segnalare.
È gratuito?
Sì, senza account: 10.000 caratteri per file e fino a 8 lingue per esecuzione. Una chiave API gratuita aumenta il limite di file a 50.000 caratteri. A vita costa $79 una tantum, sulla tua chiave OpenRouter; i piani mensili partono da $19. Prezzi
Posso eseguirlo dal terminale o in CI?
Sì. pip install kaeris, poi kaeris translate lib/l10n/app_en.arb --langs de,ja. Vedi anche Flutter. La GitHub Action esegue la stessa traduzione in una pull request. Documentazione CLI · GitHub Action
Continua
Riferimento CLI · Riferimento Check · Traduci nel browser · Controllo gratuito · Converti formati · Pseudo-localizzazione
Altri formati: JSON · YAML · .po · XLIFF · .strings · .xcstrings · .properties · .resx · CSV · Markdown · Fluent · Android XML