Abbiamo controllato ogni traduzione automatica. Gli errori erano nei controlli.

Lingue

Prima di rilasciare il nostro kit di traduzione, lo abbiamo testato su una piccola app di esempio: 70 stringhe in sei formati (JSON, Flutter ARB, Android, Apple .strings, gettext e Markdown) tradotte in tedesco, russo, giapponese, arabo e spagnolo, utilizzando un modello open da 27 miliardi di parametri sulla nostra macchina. Ogni stringa tradotta viene sottoposta a controlli prima di essere salvata. Quattro delle 350 sono state rifiutate. Tutti e quattro i rifiuti erano errati.

Cosa cercano i controlli

Una traduzione che rompe un'app è peggio di nessuna traduzione, quindi ogni stringa deve mantenere i suoi segnaposto (%1$s, {name}, {{count}}), i suoi tag, gli a capo e gli URL; deve essere nello script della lingua di destinazione; non deve essere vuota, fuori controllo o lasciata in inglese; e le forme plurali devono coprire esattamente le categorie previste dalla lingua. Una stringa che fallisce viene richiesta di nuovo specificando il problema, e una che fallisce di nuovo viene esclusa, così l'app mostrerà l'inglese per quella stringa.

I quattro rifiuti

Una volta corretti i controlli, una seconda esecuzione ha chiesto al modello solo quelle quattro stringhe, poiché tutto il resto era nella memoria di traduzione, e ha scritto tutte le 350 in 45 secondi.

La parte che ci aspettavamo fallisse e invece non ha fallito

Le forme plurali sono il punto in cui la traduzione ingenua si rompe: l’inglese ha una e altre, il russo ha una, poche, molte e altre, l’arabo sei categorie, il giapponese una sola forma. Abbiamo richiesto esattamente le categorie della lingua di destinazione e verificato i segnaposto di ogni forma. Il modello ha scritto "1 день, 2 дня, 5 дней" per il russo e tutte le sei forme arabe. Ogni plurale Android ha superato il primo tentativo in tutte le cinque lingue, così come ogni messaggio plurale tranne quello giapponese che il nostro controllo ha letto male.

Ciò che nessun controllo può rilevare

Abbiamo poi tradotto le 22 stringhe web dell’esempio in tutte le 42 lingue che Polyglot conosce: 924 su 924 stringhe hanno superato il test. Leggendole, una spiccava. In khmer, "You are offline" era tornata come una frase che dice "sei online". È un khmer ben formato, nello script corretto e senza nulla di mancante, quindi ogni controllo l’ha accettata. I controlli rilevano ciò che rompe un’app; un significato sbagliato richiede una persona che legga la lingua.

Il punto chiave

I controlli automatici sull’output della macchina hanno bisogno di output reali contro cui essere testati. I test unitari con traduzioni inventate passavano; un modello reale che scriveva vero giapponese ha trovato le lacune in pochi minuti. Polyglot include questi controlli, corretti, e i test per ciascuno dei quattro casi.

Aggiornato: