Zum Hauptinhalt springen

Schriftkonverter

Schriftkonverter sind deterministische, LLM-freie Nachübersetzungs-Hooks, die Text von einem Schriftsystem in ein anderes umwandeln. Sie ermöglichen einen Workflow nach dem Prinzip „einmal übersetzen, in mehreren Schriften darstellen“ — Sie übersetzen in eine Arbeitsschrift (typischerweise Lateinisch) und konvertieren dann automatisch in die Anzeigeschrift.

Warum Schriftkonverter?

Einige Sprachen verwenden mehrere Schriften für dieselbe gesprochene Sprache:

  • Plains Cree: SRO (Lateinisch) zum Bearbeiten → Silbenschrift (ᓀᐦᐃᔭᐍᐏᐣ) zur Anzeige
  • Serbisch: Lateinisch für den internationalen Gebrauch → Kyrillisch für den inländischen Gebrauch
  • Klingonisch: Romanisierung zum Tippen → pIqaD ( ) zur Anzeige

Die direkte Übersetzung in nicht-lateinische Schriften verursacht Probleme: LLMs halluzinieren Zeichen, JSON-Dateien lassen sich nur schwer in der Versionskontrolle verwalten, und Diff-Tools können Änderungen nicht vergleichen. Schriftkonverter lösen dieses Problem, indem sie die Übersetzungen in einer versionskontrollfreundlichen Schrift belassen und beim Synchronisieren deterministisch konvertieren.

Verfügbare Konverter

Champollion wird mit fünf integrierten Schriftkonvertern ausgeliefert:

LocaleVonNachTypSchriftart erforderlich?
crkSRO (Standard Roman Orthography)Cree-SilbenschriftDeterministischNein — natives Unicode
srLateinischKyrillischDeterministischNein — natives Unicode
tlhRomanisierungpIqaDDeterministischJa — PUA U+F8D0–F8FF
x-elvish-sLateinischTengwar (Mode of Beleriand)DeterministischJa — PUA U+E000–E07F
x-kryptonianLateinischKryptonischSchriftart-basierte ChiffreJa — PUA U+E100–E119

Deterministisch vs. schriftart-basiert

  • Deterministische Konverter (Cree, Serbisch, Klingonisch, Tengwar) führen eine echte Zeichen-zu-Zeichen-Zuordnung anhand linguistischer Regeln durch. Die Ausgabe enthält tatsächliche Unicode-Zeichen.
  • Schriftart-basierte Konverter (Kryptonisch) sind 1:1-Substitutionschiffren, bei denen die Ausgabe aus Unicode-PUA-Zeichen besteht, die nur dann korrekt dargestellt werden, wenn eine bestimmte Schriftart geladen ist.

Funktionsweise

Schriftkonverter werden nach der Übersetzung als Nachverarbeitungsschritt ausgeführt. Die Pipeline lautet:

Source (English) → LLM Translation → Working Script → Script Converter → Display Script

Zum Beispiel Plains Cree:

"Welcome" → LLM → "tānisi" (SRO) → Converter → "ᑖᓂᓯ" (Syllabics)

Alle Konverter verwenden denselben Algorithmus: An jeder Zeichenposition wird zuerst der längstmögliche Treffer versucht, dann schrittweise kürzere Treffer. Zeichen, die mit keinem Muster übereinstimmen (Leerzeichen, Satzzeichen, Zahlen), werden unverändert durchgereicht.

Damit werden Digraphen und Trigraphen korrekt verarbeitet:

  • Klingonisch: tlh → einzelnes pIqaD-Zeichen (nicht t + l + h)
  • Serbisch: njњ (nicht н + ј)
  • Cree: twê → einzelnes Silbenzeichen (nicht t + w + ê)

Verwendung von Schriftkonvertern

Schriftkonverter werden automatisch aktiviert, wenn der Locale-Code einem registrierten Konverter entspricht. Es ist keine Konfiguration erforderlich — legen Sie einfach Ihr Ziel-Locale fest:

champollion.config.json
{
"pairs": {
"en:crk": {
"method": "llm-coached",
"model": "google/gemini-2.5-pro"
}
}
}

Wenn champollion das Paar en:crk synchronisiert, werden die Übersetzungen zunächst in SRO erzeugt und dann automatisch in Silbenschrift konvertiert, bevor sie nach crk.json geschrieben werden.

Konverterstatus prüfen

npx champollion status

Die Statusausgabe zeigt, welche Paare über aktive Schriftkonverter verfügen und welche Konvertierung sie durchführen.

Anforderungen an Webschriftarten

Drei Konverter geben Zeichen aus dem Unicode Private Use Area (PUA) aus, die benutzerdefinierte Webschriftarten erfordern:

Klingonisch (pIqaD)

Installieren Sie eine CSUR-kompatible pIqaD-Schriftart (z. B. „pIqaD qolqoS“ oder „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)

Installieren Sie eine CSUR-kompatible Tengwar-Schriftart (z. B. „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;
}

Kryptonisch

Installieren Sie eine Kryptonisch-Schriftart, die auf die PUA-Codepunkte U+E100–E119 abgebildet ist:

@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 Alternativer Ansatz für Kryptonisch Da Kryptonisch eine reine A-Z-Chiffre ist, können Sie den Schriftkonverter vollständig überspringen und die Schriftart per CSS auf lateinischen Text anwenden. Für Web-Bereitstellungen ist dies oft einfacher — stellen Sie einfach die Kryptonisch-Schriftart bereit und setzen Sie font-family für die betreffenden Elemente. :::

Hinzufügen eines benutzerdefinierten Konverters

Um einen Konverter für eine neue Sprache hinzuzufügen, bearbeiten Sie lib/scripts.js:

  1. Erstellen Sie die Konvertierungszuordnung — ein geordnetes Array aus [from, to]-Paaren, längste Sequenzen zuerst
  2. Erstellen Sie die Konverterfunktion — einen Greedy-Scanner von links nach rechts (verwenden Sie sroToSyllabics als Vorlage)
  3. Registrieren Sie sie im Objekt SCRIPT_CONVERTERS mit dem Locale-Code als Schlüssel
  4. Fügen Sie das Feld script hinzu zum Registereintrag der Sprache in 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,
};

Siehe auch