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 | ต้องการฟอนต์ |
|---|---|---|---|
| Klingon | tlh | ✅ Romanization → pIqaD | PUA font (เช่น pIqaD qolqoS) |
| Sindarin (Tolkien Elvish) | x-elvish-s | ✅ Latin → Tengwar | CSUR PUA font |
| Kryptonian | x-kryptonian | ✅ Latin → Kryptonian | PUA font |
| Pirate English | x-pirate | ❌ register เท่านั้น | ไม่มี |
| Shakespearean English | x-shakespeare | ❌ register เท่านั้น | ไม่มี |
| Yoda-speak | x-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+F8FF | CSUR Klingon |
| Tengwar (Elvish) | U+E000–U+E07F | CSUR 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 qolqoS | Klingon | SIL Open Font License 1.1 | GitHub |
| FreeMonoTengwar | Tengwar | GNU 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:
- LLM แปลข้อความเป็นสคริปต์ทำงาน (โดยทั่วไปคือ Latin หรือ SRO)
- quality gate ตรวจสอบผลลัพธ์
- ตัวแปลง deterministic แปลงข้อความที่ผ่านการตรวจสอบเป็นสคริปต์แสดงผล
- ข้อความที่แปลงแล้วถูกเขียนลงดิสก์
วิธีการสองขั้นตอนนี้ทำงานได้เพราะ 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 |
|---|---|---|
| Serbian | Latin + Cyrillic | Script converter (sr) — แปลเป็น Latin แล้วแปลงเป็น Cyrillic |
| Chinese | Simplified + Traditional | รหัส locale แยกกัน (zh กับ zh-TW) พร้อม registers ที่แตกต่างกัน |
สำหรับภาษาที่ทั้งสองสคริปต์ให้บริการผู้ใช้กลุ่มเดียวกัน (Serbian) ให้ใช้ script converter สำหรับภาษาที่สคริปต์ให้บริการผู้ใช้ต่างกลุ่ม (Chinese Simplified สำหรับจีนแผ่นดินใหญ่ Traditional สำหรับไต้หวัน/ฮ่องกง) ให้ใช้รหัส locale แยกกัน
หมายเหตุด้าน Orthography
Registers ไม่ใช่แค่โทนเสียง — มันมีคำแนะนำด้าน orthographic ที่ชี้นำ LLM ไปสู่รูปแบบการเขียนที่ถูกต้อง
รูปแบบการกล่าวถึงอย่างเป็นทางการ
registers ในตัวของ champollion มีรูปแบบการกล่าวถึงอย่างเป็นทางการที่เหมาะสมทางวัฒนธรรมสำหรับแต่ละภาษา:
| ภาษา | รูปแบบทางการ | คำแนะนำ Register |
|---|---|---|
| German | Sie | Use Sie-form for formal address |
| French | vous | Use vous-form |
| Russian | вы | Professional register with вы-form |
| Turkish | siz | Professional register with siz-form |
| Korean | 합쇼체 | Formal Korean (합쇼체) |
| Japanese | です/ます | Polite professional register (です/ます form) |
| Polish | Pan/Pani | Professional 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 ใหม่
ขั้นตอน
-
เลือกรหัส BCP-47 private-use: ใช้คำนำหน้า
x-(เช่นx-dothraki,x-valyrian) -
เพิ่มในการกำหนดค่าของคุณ:
{
"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'."
}
}
}
-
(ไม่บังคับ) เพิ่ม script converter: หาก conlang ของคุณใช้สคริปต์แสดงผลที่ไม่ใช่ Latin ให้เพิ่ม converter ใน
lib/scripts.jsและลงทะเบียนในSCRIPT_CONVERTERS -
ทดสอบ: รัน
champollion sync --dryเพื่อดูตัวอย่างการแปลโดยไม่เขียนไฟล์ -
ตรวจสอบ 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 — โครงสร้างพื้นฐานเดียวกันที่นำไปใช้กับภาษาที่ขาดแคลนทรัพยากรจริงๆ