ข้ามไปยังเนื้อหาหลัก

Conlangs, Scripts & Orthography

champollion รองรับภาษาสร้างสรรค์ (constructed languages) อย่างเต็มรูปแบบผ่าน LLM registers และตัวแปลงสคริปต์แบบ deterministic คู่มือนี้อธิบายวิธีการทำงานของระบบรองรับ conlang ฟอนต์ที่จำเป็น และวิธีเพิ่ม conlang ของคุณเอง

:::tip เหตุใด conlang จึงมีความสำคัญ Conlang ไม่ใช่แค่ความแปลกใหม่ — มันใช้โครงสร้างพื้นฐานเดียวกันกับภาษาที่ขาดแคลนทรัพยากรจริงๆ ระบบ quality gate, coaching system และ script conversion pipeline ทำงานเหมือนกันทุกประการสำหรับทั้ง Klingon และ Plains Cree หาก conlang pipeline ของคุณทำงานได้ low-resource language pipeline ของคุณก็จะทำงานได้เช่นกัน :::


Constructed Languages ที่รองรับ

ภาษารหัสScript Converterต้องการฟอนต์
Klingontlh✅ Romanization → pIqaDPUA font (เช่น pIqaD qolqoS)
Sindarin (Tolkien Elvish)x-elvish-s✅ Latin → TengwarCSUR PUA font
Kryptonianx-kryptonian✅ Latin → KryptonianPUA font
Pirate Englishx-pirate❌ register เท่านั้นไม่มี
Shakespearean Englishx-shakespeare❌ register เท่านั้นไม่มี
Yoda-speakx-yoda❌ register เท่านั้นไม่มี

รหัส conlang ใช้คำนำหน้า x- ตามข้อกำหนด BCP-47 private-use ยกเว้น Klingon (tlh) ซึ่งมีรหัส ISO 639-3 ที่กำหนดโดย SIL International


Unicode, PUA และข้อกำหนดด้านฟอนต์

Private Use Area

Klingon (pIqaD), Sindarin (Tengwar) และ Kryptonian ใช้อักขระ Unicode Private Use Area (PUA) PUA คือช่วง U+E000–U+F8FF — codepoints เหล่านี้ไม่มีการกำหนดมาตรฐาน ConScript Unicode Registry (CSUR) ดูแลรักษา mapping ที่ชุมชนตกลงร่วมกันสำหรับสคริปต์สมมติ แต่ไม่ได้เป็นส่วนหนึ่งของมาตรฐาน Unicode

ในทางปฏิบัติหมายความว่า:

  • ข้อความ PUA จะแสดงเป็นกล่องว่าง (□□□) หากไม่ได้โหลดฟอนต์ที่ถูกต้อง
  • ฟอนต์ต่างกันอาจ map glyphs ต่างกันไปยัง PUA codepoints เดียวกัน
  • champollion ไม่ได้รวม PUA fonts มาด้วย — คุณต้องโหลดเองเอง
  • System fonts จะไม่แสดงอักขระเหล่านี้

ช่วง PUA แยกตามสคริปต์

สคริปต์ช่วง PUAอ้างอิง CSUR
Klingon (pIqaD)U+F8D0–U+F8FFCSUR Klingon
Tengwar (Elvish)U+E000–U+E07FCSUR Tengwar
Kryptonianขึ้นอยู่กับฟอนต์ไม่มีมาตรฐาน CSUR

การโหลด PUA Web Fonts

champollion มีคำสั่งในตัวสำหรับดาวน์โหลดและจัดการ PUA web fonts:

# See which fonts are needed for your configured languages
champollion fonts list

# Download all needed fonts (auto-detects project type for output directory)
champollion fonts install

# Also generate a CSS snippet with @font-face declarations
champollion fonts install --css

คำสั่ง fonts install ดาวน์โหลดจาก repository open-source ที่ผ่านการตรวจสอบ:

ฟอนต์สคริปต์ลิขสิทธิ์แหล่งที่มา
pIqaD qolqoSKlingonSIL Open Font License 1.1GitHub
FreeMonoTengwarTengwarGNU GPL v3 (with font exception)SourceForge
(ผู้ใช้จัดหาเอง)Kryptonianแตกต่างกันไม่มี PUA font open-source ให้ใช้

ไดเรกทอรีเอาต์พุตจะถูกตรวจจับอัตโนมัติจากโครงสร้างโปรเจกต์ของคุณ (Docusaurus → static/fonts/, Hugo → static/fonts/, ค่าเริ่มต้น → public/fonts/) สามารถกำหนดเองได้ด้วย --dir

หากต้องการจัดการฟอนต์เอง ให้เพิ่มกฎ @font-face ใน CSS ของคุณ:

@font-face {
font-family: 'pIqaD';
src: url('/fonts/pIqaDqolqoS.ttf') format('truetype');
font-display: swap;
unicode-range: U+F8D0-F8FF;
}

/* Apply to Klingon text elements */
[lang="tlh"], [data-script="piqad"] {
font-family: 'pIqaD', sans-serif;
}

:::warning การรองรับ Unicode ไม่ได้รับการรับประกัน Unicode Consortium ได้ปฏิเสธอย่างชัดเจน ที่จะเข้ารหัสสคริปต์สมมติในมาตรฐาน การกำหนด PUA ดูแลโดยชุมชนและอาจขัดแย้งกันระหว่างการใช้งานฟอนต์ต่างๆ ระบุฟอนต์ที่โปรเจกต์ของคุณใช้อย่างชัดเจนเสมอ และทดสอบการแสดงผลในหลายเบราว์เซอร์ :::


Script Converters

วิธีการทำงาน

การแปลงสคริปต์ของ champollion เป็น post-translation hook:

  1. LLM แปลข้อความเป็นสคริปต์ทำงาน (โดยทั่วไปคือ Latin หรือ SRO)
  2. quality gate ตรวจสอบผลลัพธ์
  3. ตัวแปลง deterministic แปลงข้อความที่ผ่านการตรวจสอบเป็นสคริปต์แสดงผล
  4. ข้อความที่แปลงแล้วถูกเขียนลงดิสก์

วิธีการสองขั้นตอนนี้ทำงานได้เพราะ LLM ให้ผลลัพธ์ที่ดีกว่าเมื่อทำงานกับสคริปต์ที่ใช้ Latin เป็นฐาน ตัวแปลง deterministic รับประกันผลลัพธ์สคริปต์ที่ถูกต้องโดยไม่ต้องพึ่งพาความรู้ด้านสคริปต์ของโมเดล (ซึ่งมักไม่น่าเชื่อถือ)

Converters ทั้งห้าตัว

champollion มาพร้อม script converters ในตัวห้าตัว:

Plains Cree: SRO → Syllabics (crk)

Standard Roman Orthography เป็น Canadian Aboriginal Syllabics

Input: "tawâw"
Output: "ᑕᐚᐤ"

สระยาวใช้ macron/circumflex: ê, î, ô, â ตัวแปลงจัดการ diacritics ทั้งหมดของ SRO และ map ไปยังอักขระ syllabic ที่ถูกต้อง ดู Support a Low-Resource Language สำหรับ Cree pipeline ฉบับสมบูรณ์

Serbian: Latin → Cyrillic (sr)

การแปลง Latin เป็น Cyrillic แบบ deterministic สำหรับภาษาเซอร์เบีย

Input: "zdravo"
Output: "здраво"

รองรับการ mapping ตัวอักษรเซอร์เบียทั้งหมด รวมถึง digraphs (lj → љ, nj → њ, dž → џ)

Klingon: Romanization → pIqaD (tlh)

ระบบ romanization ของ Marc Okrand เป็นอักขระ pIqaD PUA

Input: "Qapla'" (romanized Klingon)
Output: [pIqaD PUA] (requires pIqaD font to render)

Sindarin: Latin → Tengwar (x-elvish-s)

การ mapping Tengwar ในโหมด Sindarin ของ Tolkien

Input: "elen síla" (Latin Sindarin)
Output: [Tengwar PUA] (requires Tengwar font to render)

Kryptonian: Latin → Kryptonian (x-kryptonian)

การ mapping สคริปต์ Kryptonian จาก fan-lexicon

Input: "Kal-El"
Output: [Kryptonian PUA] (requires Kryptonian font to render)

การเรียกใช้ Converter

ตั้งค่าฟิลด์ scripts ในการกำหนดค่าภาษาของคุณ สำหรับ converters ในตัว ระบบจะตรวจจับอัตโนมัติจากรหัสภาษา:

{
"languages": {
"sr": { "scripts": "sr" },
"crk": {}
}
}

Plains Cree (crk) ตรวจจับอัตโนมัติ — ไม่จำเป็นต้องตั้งค่า scripts อย่างชัดเจน


ภาษาที่ใช้หลายสคริปต์

ภาษาจริงบางภาษาใช้หลายสคริปต์ที่ยังคงใช้งานอยู่:

ภาษาสคริปต์แนวทางของ champollion
SerbianLatin + CyrillicScript converter (sr) — แปลเป็น Latin แล้วแปลงเป็น Cyrillic
ChineseSimplified + Traditionalรหัส locale แยกกัน (zh กับ zh-TW) พร้อม registers ที่แตกต่างกัน

สำหรับภาษาที่ทั้งสองสคริปต์ให้บริการผู้ใช้กลุ่มเดียวกัน (Serbian) ให้ใช้ script converter สำหรับภาษาที่สคริปต์ให้บริการผู้ใช้ต่างกลุ่ม (Chinese Simplified สำหรับจีนแผ่นดินใหญ่ Traditional สำหรับไต้หวัน/ฮ่องกง) ให้ใช้รหัส locale แยกกัน


หมายเหตุด้าน Orthography

Registers ไม่ใช่แค่โทนเสียง — มันมีคำแนะนำด้าน orthographic ที่ชี้นำ LLM ไปสู่รูปแบบการเขียนที่ถูกต้อง

รูปแบบการกล่าวถึงอย่างเป็นทางการ

registers ในตัวของ champollion มีรูปแบบการกล่าวถึงอย่างเป็นทางการที่เหมาะสมทางวัฒนธรรมสำหรับแต่ละภาษา:

ภาษารูปแบบทางการคำแนะนำ Register
GermanSieUse Sie-form for formal address
FrenchvousUse vous-form
RussianвыProfessional register with вы-form
TurkishsizProfessional register with siz-form
Korean합쇼체Formal Korean (합쇼체)
Japaneseです/ますPolite professional register (です/ます form)
PolishPan/PaniProfessional register with Pan/Pani form

การเขียนแบบ Gender-Inclusive

การ์ดแต่ละภาษามีฟิลด์ gender.inclusiveGuidance พร้อมคำแนะนำเฉพาะภาษา ฟิลด์นี้ถูก inject เข้าสู่ prompt การแปลของ LLM แยกจาก register preset ดังนั้นจึงใช้งานได้อย่างสม่ำเสมอโดยไม่ขึ้นกับ formality preset ที่ผู้ใช้เลือก:

  • French: Écriture inclusive ด้วย interpunct notation (เช่น "Connecté·e")
  • German: Doppelpunkt notation (เช่น "Benutzer:innen")
  • Spanish: ต้องการการปรับโครงสร้างแบบ gender-neutral; slash notation (เช่น "usuario/a") เป็นทางเลือกสำรอง

สำหรับภาษาที่ไม่มีคำแนะนำเฉพาะในการ์ด (เช่น Korean, conlangs) ระบบจะใช้กฎทั่วไปแทน: "ต้องการรูปแบบ gender-neutral หรือตัวเลือกที่ครอบคลุมที่สุดที่มีอยู่"

ข้อกำหนดสคริปต์ RTL

Registers ของ Arabic, Hebrew, Persian และ Urdu ทั้งหมดระบุข้อกำหนด right-to-left: Ensure text reads naturally in RTL layout contexts.

การ Override Register ใดๆ

ทุก register เป็นค่า config — สามารถ override ได้เพื่อให้ตรงกับเสียงของโปรเจกต์คุณ:

{
"languages": {
"fr": {
"register": "Casual French. Use tu-form. Conversational blog tone. Gender-neutral when possible."
},
"de": {
"register": "Informal German. Use du-form. Tech startup voice."
}
}
}

ดู Configuration สำหรับ config reference ฉบับสมบูรณ์


การเพิ่ม Conlang ใหม่

ขั้นตอน

  1. เลือกรหัส BCP-47 private-use: ใช้คำนำหน้า x- (เช่น x-dothraki, x-valyrian)

  2. เพิ่มในการกำหนดค่าของคุณ:

{
"languages": {
"x-dothraki": {
"register": "Dothraki language. Use David J. Peterson's vocabulary from the Living Language Dothraki textbook. Harsh, direct tone. No articles, no verb 'to be'."
}
}
}
  1. (ไม่บังคับ) เพิ่ม script converter: หาก conlang ของคุณใช้สคริปต์แสดงผลที่ไม่ใช่ Latin ให้เพิ่ม converter ใน lib/scripts.js และลงทะเบียนใน SCRIPT_CONVERTERS

  2. ทดสอบ: รัน champollion sync --dry เพื่อดูตัวอย่างการแปลโดยไม่เขียนไฟล์

  3. ตรวจสอบ quality gate: quality gate อาจต้องปรับแต่งสำหรับ conlang ของคุณ — โดยเฉพาะการตรวจสอบ requireNonLatin หาก conlang ของคุณใช้อักขระ PUA

:::note คุณภาพของ conlang ขึ้นอยู่กับความรู้ของ LLM LLM สามารถแปลเป็น conlang ได้เฉพาะที่มีในข้อมูลการฝึกเท่านั้น Conlangs ที่มีเอกสารครบถ้วน (Klingon, Sindarin, Dothraki) ทำงานได้ดี Conlangs ที่ไม่เป็นที่รู้จักหรือสร้างขึ้นใหม่อาจให้ผลลัพธ์ที่ไม่สม่ำเสมอ ใช้ coaching data เพื่อปรับปรุงคุณภาพ :::


ดูเพิ่มเติม

  • Supported Languages — ตารางภาษาฉบับสมบูรณ์พร้อมความพร้อมใช้งานของแต่ละวิธี
  • Script Converters — รายละเอียดทางเทคนิคของ conversion pipeline
  • Translation Methods — วิธีการทำงานของแต่ละวิธีการแปล
  • Configuration — config reference รวมถึงการตั้งค่าภาษาและ register
  • Support a Low-Resource Language — โครงสร้างพื้นฐานเดียวกันที่นำไปใช้กับภาษาที่ขาดแคลนทรัพยากรจริงๆ