Lumaktaw sa pangunahing nilalaman

Mga Script Converter

Ang mga script converter ay deterministiko, walang LLM na mga post-translation hook na nagko-convert ng teksto mula sa isang sistema ng pagsulat patungo sa iba. Pinapagana ng mga ito ang workflow na "magsalin nang isang beses, i-render sa maraming script" — nagsasalin kayo sa isang working script (karaniwang Latin), pagkatapos ay awtomatikong iko-convert sa display script.

Bakit Script Converters?

Gumagamit ang ilang wika ng maraming script para sa parehong sinasalitang wika:

  • Plains Cree: SRO (Latin) para sa pag-edit → Syllabics (ᓀᐦᐃᔭᐍᐏᐣ) para sa display
  • Serbian: Latin para sa pandaigdigang paggamit → Cyrillic para sa lokal na paggamit
  • Klingon: Romanization para sa pagta-type → pIqaD ( ) para sa display

Lumilikha ng mga problema ang direktang pagsasalin sa mga non-Latin script: nagha-hallucinate ang mga LLM ng mga character, nagiging mahirap i-version-control ang mga JSON file, at hindi maihambing ng mga diff tool ang mga pagbabago. Nilulutas ito ng mga script converter sa pamamagitan ng pagpapanatili ng mga salin sa isang script na madaling gamitin sa version control at deterministikong pagko-convert sa sync time.

Mga Available na Converter

May kasamang limang built-in na script converter ang Champollion:

LocaleMulaPatungoUriKailangan ang Font?
crkSRO (Standard Roman Orthography)Cree SyllabicsDeterministikoHindi — native Unicode
srLatinCyrillicDeterministikoHindi — native Unicode
tlhRomanizationpIqaDDeterministikoOo — PUA U+F8D0–F8FF
x-elvish-sLatinTengwar (Mode of Beleriand)DeterministikoOo — PUA U+E000–E07F
x-kryptonianLatinKryptonianCipher na batay sa fontOo — PUA U+E100–E119

Deterministiko vs. Batay sa Font

  • Ang mga deterministikong converter (Cree, Serbian, Klingon, Tengwar) ay nagsasagawa ng tunay na character-to-character mapping gamit ang mga tuntuning lingguwistiko. Naglalaman ang output ng mga aktuwal na Unicode character.
  • Ang mga converter na batay sa font (Kryptonian) ay mga 1:1 substitution cipher kung saan ang output ay mga Unicode PUA character na tama lamang na nare-render kapag naka-load ang isang partikular na font.

Paano Gumagana ang mga Ito

Tumatakbo ang mga script converter pagkatapos ng pagsasalin bilang isang post-processing step. Ang pipeline ay:

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

Halimbawa, Plains Cree:

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

Greedy Left-to-Right Matching

Gumagamit ang lahat ng converter ng parehong algorithm: sa bawat posisyon ng character, susubukan muna ang pinakamahabang posibleng match, pagkatapos ay unti-unting susubukan ang mas maiikling match. Ang mga character na hindi tumutugma sa anumang pattern (mga espasyo, bantas, numero) ay ipinapasa nang hindi binabago.

Tama nitong hinahawakan ang mga digraph at trigraph:

  • Klingon: tlh → iisang pIqaD character (hindi t + l + h)
  • Serbian: njњ (hindi н + ј)
  • Cree: twê → iisang syllabic (hindi t + w + ê)

Paggamit ng mga Script Converter

Awtomatikong naa-activate ang mga script converter kapag tumutugma ang locale code sa isang nakarehistrong converter. Walang kailangang configuration — itakda lamang ang inyong target locale:

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

Kapag sine-sync ng champollion ang pares na en:crk, unang ginagawa ang mga salin sa SRO, pagkatapos ay awtomatikong iko-convert sa Syllabics bago isulat sa crk.json.

Pagsuri sa Status ng Converter

npx champollion status

Ipinapakita ng status output kung aling mga pares ang may aktibong script converter at kung anong conversion ang ginagawa ng mga ito.

Mga Kinakailangan sa Web Font

Tatlong converter ang naglalabas ng mga Unicode Private Use Area (PUA) character na nangangailangan ng mga custom web font:

Klingon (pIqaD)

Mag-install ng CSUR-compatible na pIqaD font (hal., "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)

Mag-install ng CSUR-compatible na Tengwar font (hal., "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

Mag-install ng Kryptonian font na naka-map sa mga PUA codepoint na 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 Alternatibong paraan para sa Kryptonian Dahil ang Kryptonian ay isang purong A-Z cipher, maaari ninyong laktawan nang buo ang script converter at ilapat ang font sa Latin text sa pamamagitan ng CSS. Madalas itong mas simple para sa mga web deployment — i-serve lamang ang Kryptonian font at itakda ang font-family sa mga kaugnay na elemento. :::

Pagdaragdag ng Custom Converter

Upang magdagdag ng converter para sa isang bagong wika, i-edit ang lib/scripts.js:

  1. Gawin ang conversion map — isang nakaayos na array ng mga pares na [from, to], na nauuna ang pinakamahahabang sequence
  2. Gawin ang converter function — isang greedy left-to-right scanner (gamitin ang sroToSyllabics bilang template)
  3. Irehistro ito sa object na SCRIPT_CONVERTERS gamit ang locale code bilang key
  4. Idagdag ang field na script sa register entry ng wika sa 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,
};

Tingnan Din