Átnéztünk minden gépi fordítást. Az ellenőrzések voltak a hibásak.

Nyelvek

Mielőtt kiadtuk a fordítási csomagunkat, egy kis példán alkalmazáson futtattuk le: 70 karakterláncot hat formátumban (JSON, Flutter ARB, Android, Apple .strings, gettext és Markdown) németre, oroszra, japánra, arabul és spanyolul, egy nyílt Qwen modellt (Qwen3.8-Flash-Next, 4 bites kvantálással) használva, amelyet a saját gépünkön futó vLLM szolgált ki. Minden lefordított karakterlánc ellenőrzésen megy át, mielőtt kiírnánk. A 350-ből négyet elutasítottunk. Mind a négy elutasítás téves volt.

Mire figyelnek az ellenőrzések

Egy fordítás, amely tönkreteszi az alkalmazást, rosszabb, mint a semmi, ezért minden karakterláncnak meg kell őriznie a helyőrzőit (%1$s, {name}, {{count}}), a címkéit, az újsorjeleit és az URL-jeit; a célnyelv írásrendszerében kell lennie; nem lehet üres, elszabadult vagy angolul maradt; és a többes számú alakoknak pontosan le kell fedniük a nyelvben létező kategóriákat. Egy sikertelen karakterláncot újra kérünk a hiba megnevezésével, és ha újra elbukik, kihagyjuk, így az alkalmazás angolul jeleníti meg azt az egy karakterláncot.

A négy elutasítás

Miután az ellenőrzéseket javítottuk, egy második futtatásnál a modellt csak arra a négy karakterláncra kértük, mivel a többi mind benne volt a fordítási memóriában, és 45 másodperc alatt kiírtuk mind a 350-et.

Az a rész, amelytől azt vártuk, hogy elbukik, de nem bukott el

A többes számú alakok azok a helyek, ahol a naiv fordítás elbukik: az angolban van egyes és többes szám, az oroszban egy, kevés, sok és egyéb, az arabban hat kategória, a japánban egyetlen alak. Pontosan a cél nyelv kategóriáit kértük, és ellenőriztük minden alak helyőrzőit. A modell „1 день, 2 дня, 5 дней”-t írt az oroszhoz, és mind a hat arab alakot. Minden Android-többesszám elsőre átment mind az öt nyelven, és minden többesszámú üzenet is, kivéve a japánt, amelyet az ellenőrzésünk félreolvasott.

Amit egyetlen ellenőrzés sem fog elkapni

Ezután lefordítottuk a példa 22 webes karakterláncát a Polyglot által ismert mind a 42 nyelvre: 924-ből 924 karakterlánc átment. Átolvasva őket, egy kiemelkedett. Khmer nyelven az „You are offline” (Nem vagy online) egy olyan mondatként jött vissza, amely azt jelenti, hogy „online vagy”. Jól formázott khmer szöveg a megfelelő írásrendszerrel, semmi nem hiányzik belőle, így minden ellenőrzés átengedte. Az ellenőrzések azt fogják el, ami elrontja az alkalmazást; a rossz jelentéshez kell egy ember, aki olvassa a nyelvet.

A tanulság

A gépi kimenet automatikus ellenőrzéséhez valódi kimenetre van szükség, amellyel tesztelhetők. A kitalált fordításokkal készített egységtesztek sikeresek voltak; egy valódi modell, amely valódi japánt írt, percek alatt megtalálta a hézagokat. A Polyglot ezekkel az ellenőrzésekkel, javítva, és a négy eset mindegyikéhez tartozó tesztekkel együtt kerül szállításra. Az ellenőrzések önmagukban ingyenesek és nyílt forráskódúak: translation-checks a GitHubon.

Frissítve: