Revisamos todas las traducciones automáticas. Los controles fueron la parte que falló.

Idiomas

Antes de publicar nuestro kit de traducción, lo probamos con una pequeña aplicación de ejemplo: 70 cadenas en seis formatos (JSON, Flutter ARB, Android, Apple .strings, gettext y Markdown) traducidas al alemán, ruso, japonés, árabe y español, con un modelo abierto Qwen (Qwen3.8-Flash-Next, cuantizado a 4 bits) servido por vLLM en nuestra propia máquina. Cada cadena traducida pasa por comprobaciones antes de escribirse. Cuatro de las 350 fueron rechazadas. Los cuatro rechazos fueron erróneos.

Qué buscan los controles

Una traducción que rompe una aplicación es peor que ninguna, por lo que cada cadena debe conservar sus marcadores de posición (%1$s, {name}, {{count}}), sus etiquetas, saltos de línea y URLs; debe estar en el alfabeto del idioma de destino; no debe estar vacía, desbordada ni quedar en inglés; y las formas plurales deben cubrir exactamente las categorías que tiene el idioma. Si una cadena falla, se vuelve a solicitar nombrando el problema, y si falla de nuevo, se omite, por lo que la aplicación muestra inglés para esa cadena.

Los cuatro rechazos

Una vez corregidos los controles, una segunda ejecución solicitó al modelo solo esas cuatro cadenas, ya que el resto estaba en la memoria de traducción, y escribió las 350 en 45 segundos.

La parte que esperábamos que fallara y no lo hizo

Las formas plurales son donde la traducción ingenua falla: el inglés tiene una y otra, el ruso tiene una, pocas, muchas y otra, el árabe seis categorías y el japonés una sola forma. Pedimos exactamente las categorías del idioma de destino y verificamos los marcadores de posición de cada forma. El modelo escribió "1 день, 2 дня, 5 дней" para el ruso y las seis formas del árabe. Todos los plurales de Android pasaron a la primera en los cinco idiomas, al igual que todos los mensajes plurales excepto el japonés, que nuestra comprobación leyó mal.

Lo que ninguna comprobación puede detectar

Luego traducimos las 22 cadenas web del ejemplo a los 42 idiomas que Polyglot conoce: 924 de 924 cadenas pasaron. Al leerlas, una destacó. En jemer, "You are offline" había vuelto como una oración que dice "estás en línea". Es un jemer bien formado en el alfabeto correcto sin nada que falte, por lo que todas las comprobaciones lo pasaron. Las comprobaciones detectan lo que rompe una aplicación; un significado incorrecto necesita una persona que lea el idioma.

La conclusión

Las comprobaciones automáticas sobre la salida de la máquina necesitan una salida real contra la que probarse. Las pruebas unitarias con traducciones inventadas pasaban; un modelo real escribiendo japonés real encontró las lagunas en minutos. Polyglot incluye estas comprobaciones, corregidas, y con las pruebas para cada uno de los cuatro casos. Las comprobaciones por sí solas son gratuitas y de código abierto: translation-checks en GitHub.

Actualizado: