I file di lingua di un’app sono un’unica attività con tredici estensioni diverse. Hai davanti un file JSON, un strings.xml, un file PO o uno String Catalog e vuoi ottenere le stesse stringhe in altre cinque lingue senza compromettere la build.
Il formato cambia, ma il lavoro resta lo stesso: mantieni le chiavi e i segnaposto, traduci i valori e ripeti tutto al rilascio successivo.
Quale opzione scegliere?
| Ideale per | Limiti | |
|---|---|---|
| AI Glot | Tutti i formati elencati di seguito, più lingue in un’unica operazione, glossario da rispettare, ogni rilascio | Non serve per dieci stringhe |
| Una piattaforma di gestione delle traduzioni (Crowdin, Lokalise, Phrase) | Un team con un flusso di lavoro continuo, revisori e una connessione al repository | Prima di tradurre la prima stringa, devi configurare un progetto e collegare il repository |
| DeepL | File XLIFF fino a 10 MB | Accetta XLIFF, ma non gli altri formati elencati qui. Inoltre, sostituisce i termini del glossario senza capire perché siano vincolati |
| ChatGPT, Claude o un altro assistente | Poche stringhe | Devi scrivere il prompt e inserire il glossario in ogni chat. I file lunghi vengono elaborati lentamente, un token alla volta, e consumano il tuo limite di utilizzo. Ogni esecuzione rischia di modificare una chiave o rovinare un segnaposto |
| Un freelance o un’agenzia | La pagina dell’App Store, l’onboarding | Tempi lunghi, prezzo a parola e i file li devi comunque preparare tu |
Affida a una persona le cinque stringhe che vendono la tua app: la scheda dello store e la prima schermata. Affida a un motore le migliaia di stringhe che ci sono dietro.
Scegli il formato del file
Per ogni formato trovi una pagina dedicata con uno strumento gratuito e tutti i dettagli. Ecco cosa devi sapere su ciascuno.
| File | Dove si trova | Cosa sapere |
|---|---|---|
| JSON | locales/en.json |
Le chiavi vengono restituite nello stesso ordine. Le istruzioni proteggono segnaposto come {count} |
| ARB (Flutter) | lib/l10n/app_en.arb |
Le voci di metadati @ vengono copiate. Imposta @@locale sulla lingua di destinazione |
| YAML | config/locales/en.yml |
Vengono riconosciuti i segnaposto %{name} tipici di Rails. I commenti vengono rimossi quando il file viene riscritto |
| TOML | i18n/en.toml (Hugo) |
Cambiano solo i valori testuali. Di norma, i commenti restano invariati |
| XLIFF | Esportazioni dai tuoi strumenti | Versioni 1.2 e 2.0. I tag inline vengono ricreati a partire dal testo sorgente |
| PO e POT | locale/fr/LC_MESSAGES/app.po |
Le voci plurali ricevono le forme previste dalla lingua di destinazione e l’intestazione Plural-Forms viene riscritta |
| Qt Linguist | app_fr.ts |
I messaggi plurali (numerus) non vengono ancora tradotti. Esegui lrelease al termine |
| String Catalog | Localizable.xcstrings |
Tutte le lingue sono raccolte in un unico file. Sostituzioni e varianti per dispositivo restano invariate |
| iOS .strings | fr.lproj/Localizable.strings |
Il file viene restituito in UTF-8 e conserva i blocchi di commento. Sono gestiti anche i plurali .stringsdict |
| Android XML | res/values-fr/strings.xml |
Sono gestiti i plurali e gli array di stringhe. L’attributo translatable="false" viene rispettato |
| RESX e RESW | Resources.fr.resx |
Viene creato un file per lingua. I commenti per gli sviluppatori restano in inglese |
| Java .properties | messages_fr.properties |
Solo UTF-8. Prima di tradurre, metti su un’unica riga i valori che continuano nella riga successiva |
I formati non gestiscono tutti le lingue allo stesso modo. Uno String Catalog raccoglie tutte le lingue in un unico file. La maggior parte degli altri formati, inclusi JSON, Android e iOS, contiene una lingua per file: ogni lingua di destinazione ha quindi il proprio file.
Com’è fatto un file tradotto
Cambiano solo i valori.
{ "cart.title": "Your cart", "cart.title": "Votre panier", "cart.items": "{count} items", "cart.items": "{count} articles", "cart.checkout": "Go to checkout" "cart.checkout": "Passer à la caisse"}Il percorso di un singolo file
- 1CaricaIl file così com’èOppure uno ZIP con più file
- 2Dì ciò di cui hai bisognoLingue e ambitoGratis
- 3Leggi il pianoStringhe, parole, costoGratis
- 4ApprovaL'unico passaggio a pagamentoConsuma crediti
- 5ScaricaUn file per linguaCaricalo
Non spendi nulla prima del quarto passaggio e correggere un piano sbagliato non costa nulla.
Come fare, passo dopo passo
1. Prova gratis con un file. Ogni pagina dei formati include uno strumento gratuito che non richiede un account.
2. Carica il file nell’app oppure invialo dalla riga di comando, come spiegato più avanti.
3. Spiega in una frase cosa ti serve.
Translate this file into French.
Skip every key that starts with "internal.".
La frase determina cosa tradurre nell’intero file. Le istruzioni sulla formulazione, come “mantieni ogni {placeholder} esattamente com’è” o “usa un registro informale”, vanno inserite nel secondo campo al momento dell’approvazione, perché vengono applicate a ogni stringa così com’è scritta.
4. Aggiungi un glossario con il nome del prodotto, i nomi delle funzionalità e le parole che la tua app usa sempre nello stesso modo. Scopri come crearne uno.
5. Scegli il livello di qualità.
Lite offre circa tre volte più parole per credito ed è più veloce: è la scelta giusta per le impostazioni meno importanti e i testi di assistenza. Standard è pensato per le stringhe che l’utente legge per prime. Con Standard, un credito equivale a una parola.
6. Approva e scarica.
Un file, molte lingue
I nomi dei file sono solo un esempio. Se hai un’intera cartella di file di localizzazione, inseriscila in uno ZIP: puoi elaborare fino a 200 file e 20 MB in un’unica operazione.
Tre modi per usarlo
Dalla riga di comando è la soluzione che gli sviluppatori continuano a usare. Sono gli stessi quattro passaggi, inseriti in uno script:
# 1. Create the job. Free. Returns a plan and an id.
id=$(aiglot batches create locales/en.json \
--instruction "Translate into French. Skip every key that starts with internal." \
--json | jq -r '.data.id')
# 2. Read the plan for free, then commit.
aiglot batches get "$id" --json | jq '.data.plan'
aiglot batches approve "$id" --quality lite \
--instructions "Keep every {placeholder} exactly as written."
# 3. When the status is completed, bring the file back.
aiglot batches download "$id" --output locales/fr.json
Con il tuo agente AI: collega AI Glot come server MCP. L’agente può leggere il tuo repository, suggerire i termini che individua, aggiungerli al tuo spazio di lavoro, avviare l’operazione e rimettere i file al loro posto.
Nell’app: carica, fai clic e scarica. Ideale per un’operazione occasionale.
Per integrare l’API, consulta la documentazione dell’API.
Verifica il risultato
Crea l’app in una lingua tradotta e apri le tre schermate con le stringhe più lunghe. Poi esegui il lint abituale o un controllo delle chiavi mancanti, perché una chiave modificata risulta come stringa mancante. Il testo tradotto è spesso più lungo di quello inglese: controlla che pulsanti ed etichette non escano dai bordi.
Nella pagina Prezzi trovi i costi per volumi maggiori. Con un account gratuito hai crediti per elaborare un file reale.
I limiti riportati qui erano quelli in vigore al momento della stesura: 200 file e 20 MB per ZIP. Il limite di DeepL è indicato nella sua documentazione. I nomi dei file e il numero di stringhe nei diagrammi sono esempi. Il tuo piano mostra i dati reali dei tuoi file ed è gratuito da consultare.
