Puerta de Calidad
Cada traducción pasa por una puerta de validación determinística antes de escribirse en disco. La puerta de calidad detecta modos de fallo comunes en traducción automática — sin fallbacks silenciosos, sin basura escrita en sus archivos de locale.
Controles de Validación
| Control | Qué Detecta | Etiqueta de Puerta |
|---|---|---|
| Vacío/en blanco | El modelo devolvió una cadena vacía o solo espacios en blanco | [GATE] empty |
| Eco de fuente | El modelo devolvió la entrada original en inglés | [GATE] source-echo |
| Bucle de alucinación | Patrones de trigramas repetidos (p. ej., "Qo' Qo' Qo'") | [GATE] hallucination |
| Inflación de longitud | La salida es significativamente más larga que la fuente | [GATE] length |
| Cumplimiento de script | Script incorrecto para el locale de destino | [GATE] script |
| Categorías plurales ICU | Faltan formas plurales requeridas para el locale | [GATE] icu-plural |
Vacío/En Blanco
Rechaza traducciones que sean cadenas vacías, solo espacios en blanco, o null. Esto detecta modelos que no devuelven nada para claves difíciles.
Eco de Fuente
Detecta cuando el modelo devuelve el texto fuente en inglés en lugar de traducirlo. Común con cadenas cortas y prompts poco especificados.
Bucle de Alucinación
Analiza patrones de trigramas (3 caracteres) en la salida. Si algún trigrama se repite más que un número umbral relativo a la longitud de la salida, la traducción se rechaza. Esto detecta salidas degeneradas como "Qo' Qo' Qo' Qo' Qo'".
Inflación de Longitud
Rechaza traducciones donde la longitud de la salida excede maxLengthRatio × source length (predeterminado: 4×). Esto detecta alucinaciones del modelo que producen paredes de texto para una entrada corta.
Configurable mediante maxLengthRatio en su configuración.
Cumplimiento de Script
Para locales con un campo script configurado (p. ej., "script": "cans" para Silabarios de Plains Cree), valida que la salida contenga caracteres no-ASCII apropiados para el script de destino. La salida solo en caracteres latinos para un locale árabe, CJK o Silabarios se rechaza.
Qué Sucede en Caso de Fallo
- La traducción fallida se registra en stderr con un prefijo
[GATE], el nombre de la clave, la razón y una vista previa del valor - La clave no se escribe en el archivo de locale
- Se activa la cascada de reintentos (ver abajo)
[GATE] hero.title: source-echo — "Welcome to our platform"
[GATE] nav.about: hallucination — "À À À À À À À À"
Cascada de Reintentos
Cuando un lote falla (error de análisis JSON o rechazos de puerta de calidad), champollion reintenta con lotes progresivamente más pequeños:
Full batch (80 keys) → parse error
└→ Half batch (40 keys) → 2 failures
└→ Individual keys (1 each) → isolates the 2 problem keys
El presupuesto de reintentos está limitado por maxRetries (predeterminado: 3, configurable por idioma). Esto previene gasto de tokens descontrolado en claves que fallan consistentemente.
Después de agotar los reintentos, las claves problemáticas se registran y se omiten. Se reintentarán en la próxima ejecución de sync.
Almacenamiento en Caché de Prompts
El mensaje del sistema (registro, reglas gramaticales, notas de estilo) se separa del mensaje del usuario (las claves a traducir). Esta separación es intencional:
- El mensaje del sistema es idéntico entre lotes para un locale dado
- Proveedores como Anthropic y Google almacenan en caché mensajes del sistema repetidos
- Resultado: el primer lote paga el costo total de tokens, los lotes posteriores pagan solo por el mensaje del usuario
Esto puede reducir significativamente los costos de tokens para proyectos con muchos lotes.
Validación de MessageFormat ICU
El comando integrity valida patrones plurales de MessageFormat ICU contra reglas plurales CLDR. Si su archivo fuente usa sintaxis ICU como:
"items": "{count, plural, one {# item} other {# items}}"
Champollion verifica que las versiones traducidas incluyan todas las categorías plurales requeridas para el locale de destino. Por ejemplo, árabe requiere seis categorías (zero, one, two, few, many, other) — no solo one y other.
Ejecute champollion integrity para verificar la completitud plural en todos los locales.
Cumplimiento de Terminología
Para pares entrenados con un diccionario, champollion ejecuta una verificación de terminología posterior a la traducción. Después de que la puerta de calidad pase, verifica si el LLM realmente utilizó los términos de diccionario requeridos.
[TERM] en→fr: 2 term violation(s)
• hero.title: "dashboard" → expected "tableau de bord" but got "panneau de contrôle"
Las violaciones de terminología son advertencias, no errores bloqueantes. La traducción aún se escribe en disco. Esto es intencional — el LLM puede tener razones válidas para elegir una alternativa (contexto, gramática), y bloquear en desajustes de términos causaría más daño que bien.
Para corregir violaciones, actualice el diccionario de entrenamiento o edite manualmente el archivo de locale.
Véase También
- Cómo Funciona la Sincronización — dónde encaja la puerta de calidad en el pipeline
- Métodos de Traducción — métodos que alimentan la puerta
- Convertidores de Script — conversión de script posterior a la puerta
- Datos de Entrenamiento — mejora de la calidad de traducción antes de la puerta
- Memoria de Traducción — almacenamiento en caché de traducciones validadas
- Referencia CLI — sync — flags de sync incluyendo comportamiento de reintentos
- Referencia CLI — integrity — auditoría plural ICU