Convertidores de Escritura
Los convertidores de escritura son ganchos de post-traducción determinísticos y sin LLM que convierten texto de un sistema de escritura a otro. Permiten un flujo de trabajo "traducir una vez, renderizar en múltiples escrituras" — usted traduce a una escritura funcional (típicamente latina), luego convierte automáticamente a la escritura de visualización.
¿Por qué Convertidores de Escritura?
Algunos idiomas utilizan múltiples escrituras para el mismo idioma hablado:
- Plains Cree: SRO (Latin) para edición → Syllabics (ᓀᐦᐃᔭᐍᐏᐣ) para visualización
- Serbian: Latin para uso internacional → Cyrillic para uso doméstico
- Klingon: Romanización para escritura → pIqaD ( ) para visualización
Traducir directamente a escrituras no latinas crea problemas: los LLM alucinen caracteres, los archivos JSON se vuelven difíciles de controlar versiones, y las herramientas de diff no pueden comparar cambios. Los convertidores de escritura resuelven esto manteniendo traducciones en una escritura amigable con el control de versiones y convirtiendo determinísticamente en el momento de la sincronización.
Convertidores Disponibles
Champollion incluye cinco convertidores de escritura integrados:
| Locale | De | A | Tipo | ¿Se requiere fuente? |
|---|---|---|---|---|
crk | SRO (Standard Roman Orthography) | Cree Syllabics | Determinístico | No — Unicode nativo |
sr | Latin | Cyrillic | Determinístico | No — Unicode nativo |
tlh | Romanización | pIqaD | Determinístico | Sí — PUA U+F8D0–F8FF |
x-elvish-s | Latin | Tengwar (Mode of Beleriand) | Determinístico | Sí — PUA U+E000–E07F |
x-kryptonian | Latin | Kryptonian | Cifrado basado en fuente | Sí — PUA U+E100–E119 |
Determinístico vs. Basado en Fuente
- Convertidores determinísticos (Cree, Serbian, Klingon, Tengwar) realizan mapeo real de carácter a carácter utilizando reglas lingüísticas. La salida contiene caracteres Unicode reales.
- Convertidores basados en fuente (Kryptonian) son cifrados de sustitución 1:1 donde la salida son caracteres Unicode PUA que solo se renderizan correctamente con una fuente específica cargada.
Cómo Funcionan
Los convertidores de escritura se ejecutan después de la traducción como un paso de post-procesamiento. El pipeline es:
Source (English) → LLM Translation → Working Script → Script Converter → Display Script
Por ejemplo, Plains Cree:
"Welcome" → LLM → "tānisi" (SRO) → Converter → "ᑖᓂᓯ" (Syllabics)
Coincidencia Greedy de Izquierda a Derecha
Todos los convertidores utilizan el mismo algoritmo: en cada posición de carácter, intente primero la coincidencia más larga posible, luego progresivamente coincidencias más cortas. Los caracteres que no coinciden con ningún patrón (espacios, puntuación, números) pasan sin cambios.
Esto maneja correctamente dígrafos y trígrafos:
- Klingon:
tlh→ carácter pIqaD único (not+l+h) - Serbian:
nj→њ(noн+ј) - Cree:
twê→ sílaba única (not+w+ê)
Uso de Convertidores de Escritura
Los convertidores de escritura se activan automáticamente cuando el código de locale coincide con un convertidor registrado. No se requiere configuración — simplemente establezca su locale de destino:
{
"pairs": {
"en:crk": {
"method": "llm-coached",
"model": "google/gemini-2.5-pro"
}
}
}
Cuando champollion sincroniza el par en:crk, las traducciones se producen primero en SRO, luego se convierten automáticamente a Syllabics antes de escribir en crk.json.
Verificación del Estado del Convertidor
npx champollion status
La salida de estado muestra qué pares tienen convertidores de escritura activos y qué conversión realizan.
Requisitos de Fuentes Web
Tres convertidores generan caracteres Unicode de Área de Uso Privado (PUA) que requieren fuentes web personalizadas:
Klingon (pIqaD)
Instale una fuente pIqaD compatible con CSUR (p. ej., "pIqaD qolqoS" o "Klingon pIqaD HaSta"):
@font-face {
font-family: 'pIqaD';
src: url('/fonts/pIqaD.woff2') format('woff2');
unicode-range: U+F8D0-F8FF;
}
:lang(tlh) {
font-family: 'pIqaD', sans-serif;
}
Tengwar (Sindarin)
Instale una fuente Tengwar compatible con CSUR (p. ej., "Tengwar Formal CSUR", "Tengwar Annatar"):
@font-face {
font-family: 'Tengwar';
src: url('/fonts/tengwar-formal-csur.woff2') format('woff2');
unicode-range: U+E000-E07F;
}
:lang(x-elvish-s) {
font-family: 'Tengwar', serif;
}
Kryptonian
Instale una fuente Kryptonian asignada a puntos de código PUA U+E100–E119:
@font-face {
font-family: 'Kryptonian';
src: url('/fonts/kryptonian.woff2') format('woff2');
unicode-range: U+E100-E119;
}
:lang(x-kryptonian) {
font-family: 'Kryptonian', sans-serif;
}
:::tip Enfoque alternativo para Kryptonian
Dado que Kryptonian es un cifrado puro A-Z, puede omitir completamente el convertidor de escritura y aplicar la fuente al texto latino a través de CSS. Esto suele ser más simple para implementaciones web — simplemente sirva la fuente Kryptonian y establezca font-family en los elementos relevantes.
:::
Agregar un Convertidor Personalizado
Para agregar un convertidor para un nuevo idioma, edite lib/scripts.js:
- Cree el mapa de conversión — una matriz ordenada de pares
[from, to], secuencias más largas primero - Cree la función convertidora — un escáner greedy de izquierda a derecha (use
sroToSyllabicscomo plantilla) - Regístrelo en el objeto
SCRIPT_CONVERTERScon el código de locale como clave - Agregue el campo
scripta la entrada de registro del idioma enregisters.js
// Example: adding a converter for Cherokee (chr)
const LATIN_TO_CHEROKEE_MAP = [
['ga', 'Ꭶ'], ['ka', 'Ꭷ'], ['ge', 'Ꭸ'], // ...
];
function latinToCherokee(text) {
// Same greedy left-to-right pattern as other converters
}
SCRIPT_CONVERTERS['chr'] = {
from: 'Latin',
to: 'Cherokee Syllabary',
type: 'deterministic',
converter: latinToCherokee,
};
Véase También
- Conlangs, Scripts & Orthography — fuentes PUA, Unicode, agregar nuevos convertidores
- Quality Gate — validación que se ejecuta antes de la conversión de escritura
- Supported Languages — qué idiomas tienen convertidores de escritura
- Support a Low-Resource Language — SRO→Syllabics en contexto
- Cookbook: FST-Gated Pipeline — conversión de escritura en un pipeline de múltiples etapas