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:
| Locale | Von | Nach | Typ | Schriftart erforderlich? |
|---|---|---|---|---|
crk | SRO (Standard Roman Orthography) | Cree-Silbenschrift | Deterministisch | Nein — natives Unicode |
sr | Lateinisch | Kyrillisch | Deterministisch | Nein — natives Unicode |
tlh | Romanisierung | pIqaD | Deterministisch | Ja — PUA U+F8D0–F8FF |
x-elvish-s | Lateinisch | Tengwar (Mode of Beleriand) | Deterministisch | Ja — PUA U+E000–E07F |
x-kryptonian | Lateinisch | Kryptonisch | Schriftart-basierte Chiffre | Ja — 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)
Greedy-Abgleich von links nach rechts
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 (nichtt+l+h) - Serbisch:
nj→њ(nichtн+ј) - Cree:
twê→ einzelnes Silbenzeichen (nichtt+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:
{
"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:
- Erstellen Sie die Konvertierungszuordnung — ein geordnetes Array aus
[from, to]-Paaren, längste Sequenzen zuerst - Erstellen Sie die Konverterfunktion — einen Greedy-Scanner von links nach rechts (verwenden Sie
sroToSyllabicsals Vorlage) - Registrieren Sie sie im Objekt
SCRIPT_CONVERTERSmit dem Locale-Code als Schlüssel - Fügen Sie das Feld
scripthinzu zum Registereintrag der Sprache inregisters.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
- Conlangs, Schriften & Orthographie — PUA-Schriftarten, Unicode, Hinzufügen neuer Konverter
- Quality Gate — Validierung, die vor der Schriftkonvertierung ausgeführt wird
- Unterstützte Sprachen — welche Sprachen über Schriftkonverter verfügen
- Eine ressourcenarme Sprache unterstützen — SRO→Silbenschrift im Kontext
- Cookbook: FST-gesteuerte Pipeline — Schriftkonvertierung in einer mehrstufigen Pipeline