Traduzioni IA che rispettano il vostro formato i18n
La traduzione IA è brava con le parole e distratta con la sintassi. Perde un {{firstname}}, dà a un plurale russo le due forme della sua sorgente inglese, o scrive una graffa in meno. La frase magari si legge ancora bene, ma la vostra app saluta le persone senza il loro nome, scrive “2 новых сообщений” dove il russo vuole “2 новых сообщения”, o non riesce affatto a formattare il messaggio.
Dal 21 ottobre Locize fa due cose al riguardo. Nei progetti MessageFormat e Fluent, l’IA riceve le regole di sintassi del vostro formato e le forme plurali della lingua di destinazione. E ogni traduzione IA e automatica, in ogni formato i18n, viene controllata rispetto alla sua sorgente prima di essere salvata. Una traduzione che romperebbe la vostra app non ci arriva.
Questo articolo mostra cosa è cambiato, con gli esempi che abbiamo testato e i numeri che abbiamo misurato. L’articolo della settimana scorsa parlava di MessageFormat nelle librerie i18next; questo parla delle traduzioni.
- Il controllo prima del salvataggio: ogni traduzione IA e automatica viene controllata rispetto alla sua sorgente, in ogni formato i18n.
- Le regole del formato nei prompt: la sintassi di MessageFormat e Fluent e le forme plurali della lingua di destinazione.
- Issue 243: forme plurali che non corrispondono alla lingua.
- Pesi delle issue e “fix with AI”: quali issue contano di più, e un pulsante che chiede una correzione all’IA.
- MessageFormat v2 come formato di progetto.
L’IA conosce il vostro formato e le vostre lingue
In un progetto MessageFormat o Fluent, le istruzioni che Locize invia all’IA contengono ora le regole di sintassi del formato e le forme plurali della lingua di destinazione. Vanno a ogni provider IA con cui Locize traduce, Locize AI e la vostra chiave OpenAI, Gemini, Mistral o Lara, nella traduzione automatica e nell’editor. In breve, le regole dicono:
- Traduci solo il testo. Mantieni ogni argomento, variabile, funzione e opzione esattamente come nella sorgente, e non aggiungere mai una variabile.
- Dai a un plurale esattamente le forme di cui la lingua di destinazione ha bisogno, con i numeri che ciascuna rappresenta: per il russo
one(1, 21, 31),few(2, 3, 4),many(0, 5, 6) eother, anche quando la sorgente inglese ne ha solo due. Mantieni i casi esatti come=0. - In MessageFormat, mantieni
#e l’escape con l’apostrofo, e non tradurre mai parole chiave comepluraloselect. In Fluent, mantieni il marcatore di default*, i riferimenti ai termini come-brande gli attributi.
Ecco cosa cambia per un plurale russo. La sorgente inglese:
You have {count, plural, one {# new message} other {# new messages}}Una traduzione che copia la struttura inglese si legge bene per 1, 5 e 21, e male per 2, 3 e 4 (“У вас 2 новых сообщений”):
У вас {count, plural, one {# новое сообщение} other {# новых сообщений}}Con le forme di cui il russo ha bisogno, mostra “1 новое сообщение”, “2 новых сообщения”, “5 новых сообщений” e “1,5 нового сообщения”:
У вас {count, plural, one {# новое сообщение} few {# новых сообщения} many {# новых сообщений} other {# нового сообщения}}Scrivere regole è la parte facile, quindi abbiamo misurato le nostre regole di prompt e le abbiamo corrette. Abbiamo fatto tradurre a Locize AI 8 plurali di test in russo, polacco, ucraino e ceco, tre volte: 96 risultati per misurazione. Con la prima versione della nostra regola Fluent, il 57% di un batch tornava corretto; con la regola che abbiamo rilasciato, il 100%. Un messaggio alla volta, si è passati dal 76% al 99%. La prima versione diceva al modello di mantenere invariate le chiavi dei select, e in Fluent un plurale è un select, quindi il modello spesso manteneva le varianti inglesi, o annidava un secondo select in una di esse.
Ogni traduzione IA e automatica viene controllata prima di essere salvata
Buone regole rendono probabili buoni risultati. Il controllo fa sì che quelli rotti restino fuori. La traduzione automatica e AI Bulk ora controllano ogni risultato rispetto alla sua sorgente prima di salvarlo, in ogni formato i18n, i18next compreso:
- deve essere analizzabile;
- deve conservare i placeholder e i tag della sorgente;
- in MessageFormat e Fluent, un plurale ha bisogno delle forme della lingua di destinazione.
Cosa succede a un risultato che non passa dipende da quanto è grave:
- Rotto: non è analizzabile, oppure un placeholder o un tag manca o è stato aggiunto. Non viene salvato. Un risultato IA ha prima un secondo tentativo in cui il problema viene indicato; se fallisce anche questo, la chiave passa al provider successivo, come se il primo non avesse restituito nulla. Se nessun provider ci riesce, la chiave resta non tradotta, e la vedete come tale.
- Sono sbagliate solo le forme plurali: viene salvato, perché una forma sbagliata per alcuni numeri è meglio di nessuna traduzione, e viene segnato per la revisione, a meno che Mark machine translations non sia impostato su never nel workflow di revisione. La issue 243 (più sotto) mostra cosa manca.
Un esempio da un progetto i18next. La sorgente è Hi {{firstname}}, your workspace is ready., e l’IA risponde Hallo, dein Workspace ist bereit. Finora quella risposta veniva salvata, e gli utenti tedeschi vedevano un saluto senza il loro nome. Ora il controllo segnala il {{firstname}} mancante, il modello ha un secondo tentativo con esattamente quel problema nel prompt, e se perde di nuovo il placeholder, il provider successivo traduce la chiave.
Per i progetti i18next il controllo dice raramente di no. Lo abbiamo eseguito su un campione di traduzioni IA salvate in progetti i18next prima che il controllo esistesse: lo 0,16% non lo avrebbe superato, quasi tutte perché un placeholder o un tag era andato perso o era comparso. Queste ora vanno al provider successivo invece di finire nei vostri file.
Nell’editor, l’assistente IA e il pulsante della traduzione automatica eseguono lo stesso controllo, ma lasciano a voi la decisione. Una riga sotto ogni risultato dice che è stato controllato, o cosa non va, e voi applicate il risultato oppure, nell’assistente, lo scartate:
AI Bulk non applica un risultato rotto, e vi dice quanti ne ha lasciati fuori:
Il controllo riguarda la struttura, non la lingua. Se una traduzione dice la cosa giusta lo giudicano la Quality Estimation e la revisione IA. E se traducete con un LLM nella vostra pipeline, il nostro articolo su quando le traduzioni IA si rompono spiega perché plurali e placeholder sono tra le prime cose che lì vanno storte. I dettagli del controllo sono nella documentazione della traduzione automatica.
Forme plurali che corrispondono alla lingua (issue 243)
Il controllo prima del salvataggio ha una sorella che lavora su tutto ciò che è già nel vostro progetto. Nei progetti MessageFormat (v1 e v2) e Fluent, ogni plurale viene controllato rispetto alle forme plurali della sua lingua, in ogni lingua, compresa la lingua sorgente. La issue 243 elenca le forme mancanti con numeri di esempio, come few (2, 3, 4), e le forme che la lingua non usa mai, come zero in tedesco: Intl non la seleziona mai, quindi 0 mostra la forma other.
- Alcune forme servono a una lingua solo per i milioni esatti o per i decimali, come il
manyfrancese. Sono facoltative: i dettagli della issue le mostrano come non tradotte (optional), mai come una issue. - I casi esatti contano. In inglese
=1copreone; in russo no, perché ilonerusso vale anche per 21 e 31. - La issue è un avviso e non blocca nulla: salvate come prima.
Nei progetti i18next, Locize crea già le chiavi plurali di cui ogni lingua ha bisogno (_few e _many per il russo), quindi la issue vale per MessageFormat e Fluent. Tutto ciò che la issue controlla è nella documentazione della issue 243.
Pesi delle issue e “fix with AI”
Non tutte le issue contano allo stesso modo per le persone che usano la vostra app. Un placeholder mancante può rompere una schermata; un doppio spazio non disturba quasi nessuno. La riga Issue settings della scheda Translation Quality nelle impostazioni del progetto (prima “Issues to ignore”) ora apre un unico elenco di tutte le issue. Per ogni issue potete ignorarla, darle un peso (high, medium o low) e attivare fix with AI.

- L’editor etichetta ogni issue con il suo peso, e il filtro di avvisi ed errori elenca prima le issue high.
- “Fix with AI” aggiunge un pulsante alla issue. Apre l’assistente IA con la issue come istruzione. La risposta passa per lo stesso controllo di ogni traduzione IA ed è solo una proposta: la applicate o la scartate.
- È offerto solo per le issue che un’IA può correggere a partire dalla sorgente senza un giudizio: termini del glossario, placeholder e argomenti, forme plurali, lunghezza, punteggiatura, numeri, parentesi, URL e tag HTML.
- Ogni uso costa token IA del vostro piano, o una chiamata al vostro provider IA, per questo è disattivato finché non lo attivate.
Ecco “fix with AI” sul plurale russo della issue 243. L’istruzione indica le forme di cui il russo ha bisogno, e la risposta ha superato il controllo:
I nuovi progetti partono con pesi predefiniti. Nei progetti esistenti, l’elenco non mostra pesi finché non li impostate, e use the default weights li compila con un clic. Le issue che il vostro progetto ignora ora sono nascoste anche nella vista delle issue dell’editor. Il peso predefinito di ogni issue è nella documentazione dei controlli.
MessageFormat 2 come formato di progetto
I progetti possono ora usare MessageFormat v2, lo standard Unicode per i messaggi, con evidenziazione della sintassi, gli stessi controlli e le stesse regole IA del formato che conoscete come MessageFormat, che ora si chiama MessageFormat v1. Così Locize è uno dei primi sistemi di gestione delle traduzioni a supportare MessageFormat 2 come formato di progetto.
.input {$count :number}
.match $count
one {{You have {$count} new message}}
* {{You have {$count} new messages}}La traduzione russa riceve one, few, many e il catch-all *, e le regole IA coprono i due errori che abbiamo visto più spesso nei nostri test: other scritto dove MessageFormat 2 vuole *, che rende il messaggio non valido, e uno spazio subito dopo {{, che MessageFormat 2 tiene come testo, quindi la vostra app lo mostra.
Nell’editor, un messaggio MessageFormat 2 è un unico testo evidenziato, come un messaggio MessageFormat v1. Per i18next, il plugin è i18next-mf2; l’articolo della settimana scorsa lo mostra con argomenti tipizzati e la CLI, e la nostra panoramica su MessageFormat 2 spiega quando conviene passare. Il formato stesso è descritto nella documentazione dei formati i18n.
Per iniziare
- Il controllo e le regole del formato non vi chiedono nulla: valgono per ogni progetto che traduce con l’IA o la traduzione automatica.
- Pesi: aprite Issue settings nella scheda Translation Quality e cliccate su use the default weights, oppure impostate i vostri.
- “Fix with AI”: attivatelo issue per issue nello stesso elenco.
- MessageFormat v2: sceglietelo come formato i18n quando create un progetto, o più tardi nelle impostazioni del progetto.
Se volete vedere il controllo sui vostri messaggi, create un progetto gratuito e importate i vostri file.
Domande frequenti
Locize controlla le traduzioni IA prima di salvarle? Sì. La traduzione automatica e AI Bulk controllano ogni traduzione IA e automatica rispetto alla sua sorgente prima di salvarla: deve essere analizzabile e conservare i placeholder e i tag, e in MessageFormat e Fluent un plurale ha bisogno delle forme della lingua di destinazione. Un risultato IA rotto ha un secondo tentativo in cui il problema viene indicato; se fallisce ancora, la chiave passa al provider successivo.
Cosa succede quando una traduzione IA perde un placeholder? Non viene salvata. Il modello ha un secondo tentativo in cui viene indicato il placeholder mancante, poi il provider successivo traduce la chiave; se nessuno ci riesce, la chiave resta non tradotta. Nell’editor, l’assistente IA e il pulsante della traduzione automatica mostrano il problema, e decidete voi.
Come gestisce Locize i plurali russi o polacchi nella traduzione IA? Nei progetti MessageFormat e Fluent, il prompt indica le forme plurali della lingua di destinazione con numeri di esempio. Un risultato a cui mancano forme viene salvato e segnato per la revisione, e la issue 243 elenca cosa manca. Nei progetti i18next, Locize crea le chiavi plurali di cui ogni lingua ha bisogno.
Quanto costa “fix with AI”, e quali issue può correggere? Ogni uso costa token IA del vostro piano, o una chiamata al vostro provider IA, per questo è disattivato finché non lo attivate, issue per issue. È offerto per le issue che un’IA può correggere a partire dalla sorgente senza un giudizio, come forme plurali, placeholder, termini del glossario, lunghezza e tag, e la sua risposta è solo una proposta.
Locize supporta MessageFormat 2? Sì. MessageFormat v2 è un formato di progetto con evidenziazione della sintassi, gli stessi controlli e le stesse regole IA di MessageFormat v1. Per i18next, usate i18next-mf2.
Stanco di gestire le traduzioni a mano?
Locize è il backend di gestione delle traduzioni creato dal team di i18next: distribuzione via CDN, traduzione con AI, editing in-context, senza nuovi deploy.
Inizia la prova gratuita di 14 giorni