Naar hoofdinhoud gaan

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:

TaalVanNaarTypeLettertype vereist?
crkSRO (Standard Roman Orthography)Cree SyllabicsDeterministischNee — native Unicode
srLatijnCyrillischDeterministischNee — native Unicode
tlhRomaniseringpIqaDDeterministischJa — PUA U+F8D0–F8FF
x-elvish-sLatijnTengwar (Mode of Beleriand)DeterministischJa — PUA U+E000–E07F
x-kryptonianLatijnKryptoniaansOp lettertype gebaseerd cijferJa — 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)

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 (niet t + l + h)
  • Servisch: njњ (niet н + ј)
  • Cree: twê → enkel syllabisch teken (niet t + 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:

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

  1. Maak de conversiemap aan — een geordende reeks van [from, to]-paren, langste reeksen eerst
  2. Maak de converterfunctie aan — een greedy links-naar-rechts-scanner (gebruik sroToSyllabics als sjabloon)
  3. Registreer deze in het SCRIPT_CONVERTERS-object met de taalcode als sleutel
  4. Voeg het veld script toe aan de registervermelding van de taal 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,
};

Zie Ook