Проверихме всеки машинен превод. Грешните бяха именно проверките.

Езици

Преди да пуснем комплекта за превод, го тествахме на малко примерно приложение: 70 низа в шест формата (JSON, Flutter ARB, Android, Apple .strings, gettext и Markdown) на немски, руски, японски, арабски и испански, с отворен модел Qwen (Qwen3.8-Flash-Next, квантифициран до 4 бита), обслужван от vLLM на наш собствен компютър. Всеки преведен низ преминава през проверки, преди да бъде записан. Четири от 350 бяха отхвърлени. И четирите отхвърляния бяха грешни.

Какво проверяват проверките

Превод, който разваля приложението, е по-лош от липсата на такъв, затова всеки низ трябва да запази своите плейсхолдъри (%1$s, {name}, {{count}}), своите тагове, нови редове и URL адреси; трябва да е в писмеността на целевия език; не трябва да е празен, разтеглен или оставен на английски; и множествените форми трябва да покриват точно категориите, които езикът има. Низ, който не мине проверката, се изисква отново с посочен проблем, а този, който не мине и втория път, се пропуска, така че приложението показва английския вариант за този единствен низ.

Четирите отхвърляния

След като проверките бяха оправени, второто изпълнение поиска от модела само тези четири низа, тъй като всичко останало беше в паметта за преводи, и записа всички 350 за 45 секунди.

Частта, за която очаквахме да се провали, но не се провали

Множествените форми са мястото, където наивният превод се проваля: английският има една и друга, руският – една, малко, много и друга, арабският – шест категории, а японският – единствена форма. Поискахме точно категориите на целевия език и проверихме плейсхолдерите във всяка форма. Моделът написа „1 день, 2 дня, 5 дней“ за руския и всички шест форми на арабски. Всяка Android множествена форма премина при първия опит на всички пет езика, както и всяко съобщение с множествено число, с изключение на японското, което проверката ни погрешно разчете.

Какво не може да хване нито една проверка

След това преведохме 22-та уеб низа от примера на всички 42 езика, които Polyglot познава: 924 от 924 низа преминаха. При прегледа един се открои. На кхмерски „You are offline“ се беше върнало като изречение, което означава „вие сте онлайн“. То е правилно изградено на кхмерски, с правилната писменост и без липсващи елементи, затова всяка проверка го пропусна. Проверките хващат това, което чупи приложението; за грешно значение е нужен човек, който чете езика.

Изводът

Автоматичните проверки на машинния изход изискват реален изход, срещу който да бъдат тествани. Модулните тестове с измислени преводи минаваха успешно; реален модел, пишещ реален японски, откри пропуските за минути. Polyglot идва с тези проверки, фиксирани, и с тестове за всеки от четирите случая. Самите проверки са безплатни и с отворен код: translation-checks в GitHub.

Обновено: