Scriptconverters
Scriptconverters zijn deterministische, LLM-vrije post-vertaalhooks die tekst van het ene schriftsysteem naar het andere omzetten. Ze maken een "eenmalig vertalen, weergeven in meerdere schriften"-workflow mogelijk — u vertaalt naar een werkbaar schrift (doorgaans Latijn) en converteert vervolgens automatisch naar het weergaveschrift.
Waarom Scriptconverters?
Sommige talen gebruiken meerdere schriften voor dezelfde gesproken taal:
- Plains Cree: SRO (Latijn) voor bewerking → Syllabics (ᓀᐦᐃᔭᐍᐏᐣ) voor weergave
- Servisch: Latijn voor internationaal gebruik → Cyrillisch voor binnenlands gebruik
- Klingon: Romanisering voor typen → pIqaD ( ) voor weergave
Rechtstreeks vertalen naar niet-Latijnse schriften veroorzaakt problemen: LLM's hallucineren tekens, JSON-bestanden worden moeilijk te versiebeheren, en diff-tools kunnen wijzigingen niet vergelijken. Scriptconverters lossen dit op door vertalingen in een versiebeheersvriendelijk schrift te bewaren en deze deterministisch te converteren tijdens het synchroniseren.
Beschikbare Converters
Champollion wordt geleverd met vijf ingebouwde scriptconverters:
| Taal | Van | Naar | Type | Lettertype vereist? |
|---|---|---|---|---|
crk | SRO (Standard Roman Orthography) | Cree Syllabics | Deterministisch | Nee — native Unicode |
sr | Latijn | Cyrillisch | Deterministisch | Nee — native Unicode |
tlh | Romanisering | pIqaD | Deterministisch | Ja — PUA U+F8D0–F8FF |
x-elvish-s | Latijn | Tengwar (Mode of Beleriand) | Deterministisch | Ja — PUA U+E000–E07F |
x-kryptonian | Latijn | Kryptoniaans | Op lettertype gebaseerd cijfer | Ja — PUA U+E100–E119 |
Deterministisch vs. Op Lettertype Gebaseerd
- Deterministische converters (Cree, Servisch, Klingon, Tengwar) voeren een echte teken-voor-tekenmapping uit op basis van taalkundige regels. De uitvoer bevat werkelijke Unicode-tekens.
- Op lettertype gebaseerde converters (Kryptoniaans) zijn 1:1-vervangingscijfers waarbij de uitvoer bestaat uit Unicode PUA-tekens die alleen correct worden weergegeven wanneer een specifiek lettertype is geladen.
Hoe Ze Werken
Scriptconverters worden uitgevoerd na de vertaling als een nabewerkingsstap. De pipeline is:
Source (English) → LLM Translation → Working Script → Script Converter → Display Script
Bijvoorbeeld voor Plains Cree:
"Welcome" → LLM → "tānisi" (SRO) → Converter → "ᑖᓂᓯ" (Syllabics)
Greedy Links-naar-Rechts Matching
Alle converters gebruiken hetzelfde algoritme: probeer op elke tekenpositie eerst de langst mogelijke overeenkomst, gevolgd door progressief kortere overeenkomsten. Tekens die niet overeenkomen met een patroon (spaties, leestekens, cijfers) worden ongewijzigd doorgegeven.
Dit verwerkt digrafen en trigrafen correct:
- Klingon:
tlh→ enkel pIqaD-teken (niett+l+h) - Servisch:
nj→њ(nietн+ј) - Cree:
twê→ enkel syllabisch teken (niett+w+ê)
Scriptconverters Gebruiken
Scriptconverters worden automatisch geactiveerd wanneer de taalcode overeenkomt met een geregistreerde converter. Er is geen configuratie nodig — stel gewoon uw doeltaal in:
{
"pairs": {
"en:crk": {
"method": "llm-coached",
"model": "google/gemini-2.5-pro"
}
}
}
Wanneer Champollion het en:crk-paar synchroniseert, worden vertalingen eerst in SRO geproduceerd en vervolgens automatisch naar Syllabics geconverteerd voordat ze naar crk.json worden geschreven.
Converterstatus Controleren
npx champollion status
De statusuitvoer toont welke paren actieve scriptconverters hebben en welke conversie ze uitvoeren.
Weblettertype-vereisten
Drie converters produceren Unicode Private Use Area (PUA)-tekens waarvoor aangepaste weblettertypen vereist zijn:
Klingon (pIqaD)
Installeer een CSUR-compatibel pIqaD-lettertype (bijv. "pIqaD qolqoS" of "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)
Installeer een CSUR-compatibel Tengwar-lettertype (bijv. "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;
}
Kryptoniaans
Installeer een Kryptoniaans lettertype dat is gekoppeld aan PUA-codepunten 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 Alternatieve aanpak voor Kryptoniaans
Omdat Kryptoniaans een puur A-Z-cijfer is, kunt u de scriptconverter volledig overslaan en het lettertype via CSS op Latijnse tekst toepassen. Dit is vaak eenvoudiger voor webimplementaties — laad gewoon het Kryptoniaanse lettertype en stel font-family in op de betreffende elementen.
:::
Een Aangepaste Converter Toevoegen
Om een converter voor een nieuwe taal toe te voegen, bewerkt u lib/scripts.js:
- Maak de conversiemap aan — een geordende reeks van
[from, to]-paren, langste reeksen eerst - Maak de converterfunctie aan — een greedy links-naar-rechts-scanner (gebruik
sroToSyllabicsals sjabloon) - Registreer deze in het
SCRIPT_CONVERTERS-object met de taalcode als sleutel - Voeg het veld
scripttoe aan de registervermelding van de taal 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,
};
Zie Ook
- Conlangs, Schriften & Orthografie — PUA-lettertypen, Unicode, nieuwe converters toevoegen
- Kwaliteitspoort — validatie die wordt uitgevoerd vóór scriptconversie
- Ondersteunde Talen — welke talen scriptconverters hebben
- Ondersteuning voor een Taal met Weinig Bronnen — SRO→Syllabics in context
- Kookboek: FST-Gated Pipeline — scriptconversie in een meerfasige pipeline