Blog ·
Un plural vago no es un número
Una guarda que compara números en nueve idiomas informó de dos defectos que no eran defectos, y dio por buenos dos idiomas por motivos ajenos a los números.
Por Provibr
Todos los artículos que publicamos existen en nueve idiomas, y lo que más probablemente sale mal en una traducción no es una palabra. Es un número. Una cifra que dice 200 en un idioma y 20 en otro es invisible para un lector que solo ve uno de los dos, y no hay corrector ortográfico para eso.
Por eso hay una guarda. Toma la fuente inglesa, extrae los números y exige que cada traducción contenga al menos tantas apariciones del mismo valor. Esta ronda produjo dos informes en rojo sobre dos traducciones que eran enteramente correctas, y el motivo merece dejarse por escrito.
La guarda tiene que leer palabras, no cifras
La versión evidente de esta comprobación compara cifras, y esa la tuvimos primero. Aquí es casi inútil, porque nuestro estilo de la casa en inglés escribe los números con letra. No 38 pruebas sino treinta y ocho pruebas; no 1440 sino mil cuatrocientos cuarenta.
Así que hay una segunda guarda con una tabla dentro: para cada valor que merezca comprobarse, cómo lo deletrea cada uno de los nueve idiomas. Se cuentan las apariciones en el inglés, se cuentan en cada traducción y se informa de todo lo que se quede corto.
Los valores pequeños se excluyen a propósito. En todos y cada uno de estos idiomas las palabras para uno, dos y tres son también artículos, preposiciones o trozos de palabras más largas, y contarlas produciría cientos de hallazgos que no significan nada. Una guarda que da falsas alarmas acaba saltada, y una guarda saltada es peor que ninguna guarda.
Contar por subcadena, y contar de arriba abajo
Dos mecanismos hacen posible todo lo demás, y los dos crean el fallo del que va este artículo.
El primero es que la coincidencia tiene que ser por subcadena. El neerlandés escribe dieciséis mil como una sola palabra, y la única manera de ver el dieciséis que hay dentro es mirar dentro. Varios de estos idiomas componen palabras con soltura, así que anclarse a los límites de palabra perdería la mayoría de los aciertos reales.
El segundo es que los valores se cuentan de mayor a menor, y cada acierto se recorta del texto antes de contar el valor siguiente. Sin eso, cuarenta y uno se cuenta una vez como cuarenta y uno y otra como cuarenta, y entonces un idioma que escribe ese mismo número como una única palabra indivisible parece que le falta uno. Siete de los treinta y siete primeros hallazgos que produjo la guarda en toda su vida eran exactamente eso, y ninguno era un defecto.
La coincidencia por subcadena más el recorte es el diseño correcto. También significa que la guarda está buscando letras, y las letras no son números.
La palabra que no es un número
La frase inglesa que la rompió dice, en nuestra propia versión: una guarda sobre él señala cientos de cosas que no son defectos.
En esa frase no hay ningún número. Cientos de es una palabra de cantidad, la misma clase de palabra que varios o un montón, y no es una afirmación de que algo haya ocurrido cien veces. Pero contiene las letras del numeral, así que la guarda contó una aparición de cien en el inglés y después se fue a buscar cien en ocho traducciones.
Lo que volvió fue esto. El italiano dice centinaia, el rumano dice sute de, y ninguna de las dos contiene el numeral de su idioma para cien. Dos informes en rojo, sobre dos frases que un hablante nativo llamaría perfectas.
Los otros seis pasaron, y solo cuatro de ellos pasaron por algún motivo. El neerlandés honderden contiene honderd, el alemán Hunderte contiene hundert, el español cientos contiene ciento, el francés centaines contiene cent. Esos cuatro son el mismo defecto que el italiano y el rumano; sencillamente la guarda no podía verlo, porque la palabra vaga resulta estar construida a partir del numeral.
Los dos últimos son los incómodos. El portugués pasó porque la palabra portuguesa para cien, cem, aparece dentro de parecem, en un encabezado sobre dos cosas que se parecen. El ucraniano pasó con 39 aciertos en un solo artículo, porque las letras cirílicas de cien están dentro de las palabras corrientes para página y para guarda.
Así que de ocho idiomas: dos fallaron sobre algo que no era un defecto, cuatro escondieron ese mismo no defecto detrás de una coincidencia de escritura, y dos estaban en verde sobre palabras que no tienen nada que ver con números. Una guarda es tan fiable como los motivos que hay detrás de sus resultados en verde, y aquí solo dos de los ocho verdes iban de contar.
Dónde tiene que ir el recorte, y por qué no puede ir el primero
La corrección es una segunda tabla: los plurales vagos, por idioma. Hundreds, honderden, Hunderte, cientos y centenares, centaines, centinaia, centenas, sute de, y las formas ucranianas. Quitarlos antes de contar, porque no son valores.
La parte interesante es el cuándo. El instinto dice quitarlos al principio, como una pasada de limpieza sobre el texto, y eso rompería la guarda de una manera mucho más difícil de notar que aquello que arregla.
El rumano para cuatrocientas veces es patru sute de ori. Contiene sute de literalmente. Si se recortan los plurales vagos por delante, se ha destruido un cuatrocientos real mientras se quitaba un cien falso, y ahora la guarda informa de que al rumano le falta un número que tiene a la vista.
Así que el recorte ocurre dentro del bucle, en el momento en que el bucle llega al valor cien. Para entonces la pasada de cuatrocientos ya ha consumido patru sute, y lo que queda de sute de es genuinamente la palabra vaga. El orden que existía por un motivo distinto resulta ser lo que hace segura esta operación, que es un buen argumento para mantener el motivo escrito junto al código.
Con los plurales vagos fuera, la comparación pasó de 224 recuentos con dos hallazgos a 216 recuentos y ninguno. La cuenta baja porque un valor que aparece cero veces en el inglés ya no se compara en absoluto, que es exactamente lo correcto: nunca hubo allí ningún cien.
Seis valores que sencillamente faltaban
Mientras se demostraba todo esto resultó que a la tabla le faltaban seis de los valores que usaban los artículos nuevos, así que esos números estaban sin comprobar en ocho idiomas cada uno.
Ese es el fallo más corriente y es el que volverá a ocurrir. Una tabla de valores se escribe para los artículos de la ronda que la creó, y la ronda siguiente escribe números distintos. Una fila que falta no falla; en silencio no comprueba nada, que es la misma forma que una entrada de una lista de permitidos con una errata dentro, y eso ya nos ha mordido antes.
La descripción honesta de esta guarda es por tanto: es una red con una malla conocida, atrapa la clase de error para la que se construyó, y cada ronda tiene que añadir sus propios valores o no obtiene nada. Lo cual está bien, mientras nadie lea un resultado en verde como cobertura.
Lo que dejaríamos por escrito
- Una palabra de cantidad no es un valor. Cientos de está más cerca de varios que de 100.
- La coincidencia por subcadena es lo correcto aquí y es el origen del problema. Los idiomas que componen palabras la necesitan.
- Pregunte por qué está en verde cada resultado en verde. Cuatro de los nuestros eran casualidad y dos eran ruido.
- Una raíz numeral corta se esconde dentro de palabras corrientes, y el 100 cirílico está dentro de la palabra que significa página.
- Ordene las pasadas de mayor a menor y recorte cada acierto, o los compuestos cuentan dos veces.
- Dónde ocurre una limpieza importa tanto como qué quita. Recortar los plurales vagos primero destruye un cuatrocientos real.
- Mantenga el motivo junto al orden, porque el orden sostiene peso y no lo parece.
- Una tabla de valores solo cubre la ronda que la escribió. Aquí faltaban seis.
- Una fila que falta es silenciosa, exactamente igual que una entrada de lista de permitidos mal escrita.
- Diga lo que una guarda no cubre, para que nadie lea el verde como cobertura.
Para que quede claro qué es esto: la comparación corrió sobre cuatro artículos en ocho idiomas, 224 recuentos con dos hallazgos antes de tratar los plurales vagos y 216 sin ninguno después, seis valores añadidos a la tabla, y el recorte de los plurales vagos colocado dentro del bucle y no antes de él para que sobreviva el cuatrocientos rumano. Junto a eso, aquella ronda produjo 886 artículos generados sin advertencias, una comprobación de contenido de 887 de 887 ficheros idénticos byte a byte, el conjunto de pruebas web en 4594 en verde con los demás conjuntos en 7287, la comparación de hechos en 1144 recuentos sin ninguno fallando, los elementos en 64 y los nombres de enlace en 72, siete scripts y cuatro reglas de tipografía demostrados en rojo antes de creerlos en verde, y un barrido de maquetación de 108 comprobaciones a 390 píxeles contra una compilación de producción. Sin demostrar: el ruido de subcadena en ucraniano y en portugués está entendido pero no eliminado, cosa que pide un lector morfológico y no una tabla, y cada traducción sigue teniendo un solo lector.
Del trabajo de plataforma en Provibr. Lo que nueve catálogos le hacen a un conjunto de controles fijos está en dieciséis mil claves, nueve idiomas, la guarda que distingue un texto de enlace acortado de uno sustituido está en dos nombres para el mismo artículo, y la revisión de lectores que empezó toda esta serie está en tres fallos que ningún script podía ver.