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

champollion

เฟรมเวิร์ก internationalization ที่ปรับแต่งได้อย่างสมบูรณ์ คำสั่งเดียวแปลไฟล์ locale ของคุณ การตั้งค่าเดียวควบคุมทุก method, model, และคู่ภาษา และหากวิธีที่มีอยู่ไม่เพียงพอ — สร้างของคุณเอง พิสูจน์ว่ามันใช้งานได้ แล้ว deploy

npx champollion sync

champollion ตรวจจับไฟล์ locale, รูปแบบ, และภาษาเป้าหมายของคุณโดยอัตโนมัติ แปลส่วนที่ขาดหายไป ข้ามส่วนที่เสร็จแล้ว ตรวจสอบทุกผลลัพธ์ และเขียน output ที่สะอาด นั่นคือจุดเริ่มต้น


ทำไมไม่เขียน Script เองเลย?

คุณอาจเขียน loop สั้นๆ ที่เรียก Google Translate ในแต่ละ key ได้ นักพัฒนาส่วนใหญ่ทำแบบนั้น — ใช้โค้ดประมาณ 30 บรรทัด แต่นี่คือจุดที่มันพัง:

  • ไม่มีการตรวจจับการเปลี่ยนแปลง อัปเดต string ภาษาอังกฤษ — คำแปลยังคงล้าสมัยตลอดไป champollion ติดตามทุก source value ด้วย SHA-256 hash และแปลใหม่เฉพาะส่วนที่เปลี่ยนแปลง
  • ไม่มีการ batch หนึ่ง API call ต่อหนึ่ง key หมายความว่า 200 key = 200 round trip champollion batch อย่างชาญฉลาด (ปรับแต่งได้ ค่าเริ่มต้น 80 key/batch สำหรับ LLM, 128 สำหรับ Google)
  • ไม่มีการ cache ทุกครั้งที่ sync จะแปลทุกอย่างใหม่ Translation Memory ของ champollion cache คำแปลตาม source text + locale + method — การรัน sync ใหม่หลังจากเปลี่ยน key เดียวจะแปลเฉพาะ key นั้น ไม่ใช่ทั้งไฟล์
  • ไม่มีการตรวจสอบคุณภาพ Machine translation อาจ hallucinate, ส่งคืน source กลับมา, หรือ output ในสคริปต์ที่ผิด champollion ตรวจสอบทุกคำแปลก่อนเขียน — สคริปต์ผิด, ความยาวที่พองตัว, และ source echo จะถูกตรวจพบและปฏิเสธ
  • ไม่มีความรู้เรื่องรูปแบบ Hardcode เป็น JSON? champollion รองรับ JSON, TOML, YAML, และ Hugo Markdown (frontmatter + body) พร้อม auto-detection
  • ไม่มีการควบคุม method ทุกคู่ใช้ method เดียวกัน champollion ให้คุณใช้ Google Translate สำหรับภาษาฝรั่งเศส, LLM สำหรับภาษาญี่ปุ่น, และ custom community-hosted pipeline สำหรับภาษา Cree — ในไฟล์ config เดียวกัน

champollion คือเวอร์ชัน production ของ script นั้น


สิ่งที่ทำให้แตกต่าง

ทุก method คือ plugin

Translation method ปรับแต่งได้ต่อคู่ภาษา ผสม Google Translate, LLM, coached prompt, และ custom API ในโปรเจกต์เดียวกัน:

champollion.config.json
{
"version": 3,
"pairs": {
"en:fr": { "method": "google-translate" },
"en:ja": { "method": "llm", "model": "google/gemini-2.5-pro" },
"en:crk": { "methodPlugin": "crk-coached-v1" }
}
}

ภาษาฝรั่งเศสใช้ Google Translate (เร็ว, ราคาถูก) ภาษาญี่ปุ่นใช้ LLM ระดับพรีเมียม (ละเอียดอ่อน) Plains Cree ใช้ coached plugin พร้อมกฎไวยากรณ์, พจนานุกรม, และการตรวจสอบ morphological เดียวกัน sync command เดียวกัน quality gate เดียวกัน CLI เดียวกัน

พิสูจน์มัน

คิดว่า method ของคุณแปลภาษาอังกฤษเป็นสเปนได้ไหม? ตุรกีเป็นอาเซอร์ไบจาน? อังกฤษเป็น Cree?

พิสูจน์มัน eval harness ที่มาพร้อมกัน benchmark translation method ใดก็ได้ด้วยการให้คะแนนที่ reproducible และ fingerprinted leaderboard ติดตามทุก submission

eval harness และ production CLI ใช้ plugin interface เดียวกัน method ที่ได้คะแนนดีใน harness สามารถใช้ใน production ได้ — หากชุมชนที่ใช้ภาษานั้นให้ความยินยอม สำหรับภาษาของชนพื้นเมืองและภาษาที่มีทรัพยากรน้อย ความยินยอมนั้นมีความสำคัญ ดู Data Sovereignty

# Benchmark your method (in the eval harness repo)
cd arena
python eval/baseline_experiment.py --dataset data/edtekla-dev-v1.json --submit

# Use it locally
npx champollion sync

Plugin เดียวกัน เสียบและทดสอบ

ชุดเครื่องมือครบชุด

champollion ไม่ใช่แค่ sync แต่เป็น i18n pipeline ที่สมบูรณ์:

Commandสิ่งที่ทำ
syncแปล key ที่ขาดหายไปและล้าสมัย (พร้อมการตรวจสอบหลัง sync)
watchAuto-sync เมื่อไฟล์ source ของคุณเปลี่ยนแปลง
lintสแกน source code เพื่อหา hardcoded string
wrapAuto-wrap hardcoded string ใน t() calls
auditแสดงรายการ [EN] fallback marker ทั้งหมดจากการรันก่อนหน้า
verifyตรวจสอบว่าคำแปลมีอยู่และถูกต้อง (CI gate)
integrityตรวจจับ placeholder corruption, ปัญหา encoding, และความสมบูรณ์ของ ICU plural
seoสร้าง hreflang tag, sitemap, และ JSON-LD schema
statusแสดงการตั้งค่าคู่ภาษา, plugin, และคะแนน benchmark
provenanceตรวจสอบการอนุญาตสิทธิ์ทรัพยากรการแปล
pluginติดตั้ง, ลบ, และแสดงรายการ method plugin
fontsดาวน์โหลด web font สำหรับ PUA script converter
tmจัดการ Translation Memory cache (สถิติ, ล้าง, ต่อ locale)
xliffExport/import XLIFF 1.2 สำหรับการตรวจสอบโดยนักแปลมืออาชีพ

สี่รายการนี้ — lint, sync, verify, audit — ประกอบเป็น CI pipeline ที่ตรวจจับ hardcoded string, แปล, ตรวจสอบความถูกต้อง, และทำให้ build ล้มเหลวหาก locale ใดไม่สมบูรณ์


The Arena

Method Leaderboard คือกระดานคะแนน ทุก submission ถูก fingerprint ไปยัง Git commit, กำหนดเวอร์ชันตาม dataset เฉพาะ, และให้คะแนนโดย harness เดียวกัน ทุกคนสามารถ submit ได้

คุณพิสูจน์อะไรได้บ้าง? harness รับ JSON Plugin รับ JSON method ใดก็ตามที่ผลิต JSON สามารถทดสอบได้:

แนวทางตัวอย่าง
Coached LLMใส่กฎไวยากรณ์และพจนานุกรมลงใน prompt ของ frontier model
Fine-tuned modelTrain open model บน parallel text — แต่ไม่ใช่บน eval data
FST-gated pipelineLLM สร้าง → finite-state transducer ตรวจสอบ morphology → retry
Chained modelsModel A ร่าง → Model B แก้ไข → Model C ให้คะแนน
Dictionary + LLMบังคับใช้คำที่รู้จักจากพจนานุกรม ให้ LLM จัดการส่วนที่เหลือ
Evolutionaryสร้าง candidate, ให้คะแนน, กลายพันธุ์ที่ดีที่สุด, ทำซ้ำ
Partial translationแปลตัวอย่างด้วยมือ, พิสูจน์ว่า LLM ของคุณตรงกัน, auto-translate ส่วนที่เหลือ

Fine-tune model ได้ Deploy evolutionary algorithm ได้ ทดสอบคำตอบของนักเรียนในการสอบภาษาได้ สร้าง lookup table ได้ เชื่อม model สามตัวเข้าด้วยกันได้ ตราบใดที่ method ของคุณผลิต JSON, harness จะให้คะแนนและเฟรมเวิร์กจะรันมัน

:::danger กฎเดียว ห้าม train บน evaluation data method ที่สัมผัสกับ benchmark dataset จะถูกตัดสิทธิ์ Fine-tune บนอะไรก็ได้ที่คุณต้องการ แค่ไม่ใช่บน test set :::

นี่คือคำเชิญแบบเปิด หากคุณทำงานกับภาษาที่มีทรัพยากรน้อย — ในฐานะนักวิจัย, สมาชิกชุมชน, นักศึกษา, หรือเพียงแค่คนที่ใส่ใจ — สร้าง method, รัน harness, และคว้าคะแนนสูงสุด ปัญหานี้ยังไม่ได้รับการแก้ไข โครงสร้างพื้นฐานพร้อมแล้ว

→ ดู leaderboard


ขั้นตอนถัดไป

เริ่มต้นใช้งาน:

ปรับแต่งการตั้งค่าของคุณ:

  • Translation Methods — เลือก method ที่เหมาะสมต่อคู่ภาษา
  • Translation Memory — วิธีที่การ cache ช่วยประหยัดเงิน
  • Configuration — เอกสารอ้างอิง config ฉบับสมบูรณ์
  • Hugo Multilingual Site — การแปลเนื้อหา Markdown

เจาะลึกยิ่งขึ้น: