Ir al contenido principal

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:

LocaleDeATipo¿Se requiere fuente?
crkSRO (Standard Roman Orthography)Cree SyllabicsDeterminísticoNo — Unicode nativo
srLatinCyrillicDeterminísticoNo — Unicode nativo
tlhRomanizaciónpIqaDDeterminísticoSí — PUA U+F8D0–F8FF
x-elvish-sLatinTengwar (Mode of Beleriand)DeterminísticoSí — PUA U+E000–E07F
x-kryptonianLatinKryptonianCifrado basado en fuenteSí — 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 (no t + l + h)
  • Serbian: njњ (no н + ј)
  • Cree: twê → sílaba única (no t + 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:

champollion.config.json
{
"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:

  1. Cree el mapa de conversión — una matriz ordenada de pares [from, to], secuencias más largas primero
  2. Cree la función convertidora — un escáner greedy de izquierda a derecha (use sroToSyllabics como plantilla)
  3. Regístrelo en el objeto SCRIPT_CONVERTERS con el código de locale como clave
  4. Agregue el campo script a la entrada de registro del idioma en registers.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