Cómo moderar comentarios en varios idiomas
Manda cada comentario al mismo endpoint, esté en el idioma que esté, con locales indicando los idiomas de tu web. Las listas de español, inglés, portugués, francés, italiano, alemán, catalán y neerlandés se consultan todas en cada llamada, así que no tienes que detectar antes el idioma ni enviar cada mensaje a un modelo distinto. Un comentario corto que resuelven las comprobaciones gratuitas vuelve en alrededor de un milisegundo; si mandas "effort": "high", además lo lee el modelo.
Qué idiomas cubren las comprobaciones instantáneas
El vocabulario de toxicidad, acoso, odio, contenido sexual, violencia, autolesiones y estafas está escrito en ocho idiomas, igual que los patrones de frases para los linchamientos en grupo, los acercamientos a menores, los tratos que se sacan de la plataforma y las formas de estafa. Cada grupo tiene que tener todos los idiomas, y un test hace fallar el build si falta alguno, porque un idioma añadido a medias parece cubierto cuando no lo está. Las comprobaciones que no dependen de palabras (enlaces, direcciones de monederos, dígitos de control de tarjetas e IBAN, mensajes repetidos) funcionan en cualquier idioma.
Spam en otro alfabeto
El ataque de enlaces más habitual es un muro de texto en cirílico en los comentarios de una web donde nadie lo lee. Con locales indicado, un texto en un alfabeto que esos idiomas no usan se marca como spam cuando tiene al menos quince letras de ese alfabeto y más del uno por ciento del texto. Los enlaces se quitan antes de contar, porque una dirección web no está escrita en ningún idioma, y contada como latina escondía una biografía corta en ruso. Una palabra rusa citada no supera ninguno de los dos umbrales. Sin locales la comprobación no dice nada: una web multilingüe con textos en ruso está haciendo lo que tiene que hacer.
Un mensaje en el idioma equivocado
El spam en inglés impecable en un foro español usa el alfabeto correcto y el idioma equivocado. A partir de sesenta caracteres, la comprobación de idioma compara el idioma en que se lee el texto con los que has indicado y solo marca off_topic cuando el ganador supera al tuyo por un margen claro, así que un mensaje en español lleno de títulos de juegos en inglés no se toca. Lo retiene para revisión y nunca lo rechaza, porque quien escribe en su propio idioma no ha hecho nada malo.
Nada se compara con el texto tal cual llega. Las letras gemelas se normalizan palabra por palabra, y solo cuando una palabra mezcla alfabetos, o cuando en un texto latino aparece hecha de letras extranjeras que tienen todas su gemela latina. Así іdіоta con letras cirílicas queda al descubierto mientras una frase en ruso conserva sus letras. La normalización tampoco translitera a ASCII, que borraría por completo el chino, el árabe, el hebreo, el japonés y el coreano y haría que cualquier texto en esas escrituras pareciera un galimatías.
Más allá de los ocho idiomas
Fuera de esos ocho idiomas las comprobaciones estructurales siguen ejecutándose en cada llamada, y el idioma en sí lo lee el modelo. La página de idiomas de la documentación explica qué lee cada capa. En una web en un idioma que no está en la lista, manda "effort": "high" en todo lo que importe y añade a las listas de tu política las palabras que te importan.