Verificamos todas as traduções automáticas. As verificações é que estavam erradas.

Idiomas

Antes de lançar nosso kit de tradução, executamos um pequeno aplicativo de exemplo: 70 strings em seis formatos (JSON, Flutter ARB, Android, Apple .strings, gettext e Markdown) para alemão, russo, japonês, árabe e espanhol, com um modelo aberto de 27 bilhões de parâmetros em nossa própria máquina. Cada string traduzida passa por verificações antes de ser gravada. Quatro das 350 foram rejeitadas. As quatro rejeições estavam erradas.

O que as verificações procuram

Uma tradução que quebra um aplicativo é pior do que nenhuma, então cada string deve manter seus placeholders (%1$s, {name}, {{count}}), suas tags, quebras de linha e URLs; deve estar no alfabeto da língua de destino; não pode estar vazia, descontrolada ou em inglês; e as formas plurais devem cobrir exatamente as categorias que a língua possui. Uma string que falha é solicitada novamente com o problema indicado, e uma que falha novamente é deixada de fora, fazendo o aplicativo exibir inglês para essa única string.

As quatro rejeições

Depois que as verificações foram corrigidas, uma segunda execução pediu ao modelo apenas aquelas quatro strings, já que todo o resto estava na memória de tradução, e gravou as 350 em 45 segundos.

A parte que esperávamos falhar e não falhou

As formas plurais são onde a tradução ingênua falha: o inglês tem uma e outra; o russo tem uma, poucas, muitas e outra; o árabe tem seis categorias; o japonês tem uma única forma. Pedimos exatamente as categorias do idioma de destino e verificamos os placeholders de cada forma. O modelo escreveu "1 день, 2 дня, 5 дней" para o russo e todas as seis formas em árabe. Todos os plurais do Android passaram na primeira tentativa nos cinco idiomas, assim como todas as mensagens com plural, exceto a japonesa, que nossa verificação interpretou incorretamente.

O que nenhuma verificação consegue detectar

Traduzimos então as 22 strings web do exemplo para os 42 idiomas que o Polyglot conhece: 924 de 924 strings passaram. Ao lê-las, uma se destacou. Em khmer, "You are offline" havia sido traduzida como uma frase que diz "você está online". É um khmer bem formado, no alfabeto correto, sem nada faltando, então todas as verificações passaram. As verificações detectam o que quebra o app; um significado errado exige uma pessoa que leia o idioma.

A conclusão

As verificações automáticas na saída da máquina precisam de uma saída real para serem testadas. Testes unitários com traduções inventadas passaram; um modelo real escrevendo japonês real encontrou as lacunas em minutos. O Polyglot já vem com essas verificações, corrigidas, e com os testes para cada um dos quatro casos.

Atualizado: