เอนจินที่รองรับ · Gettext (.po / .mo)
gettext คือวิธีที่เกมอินดี้ที่ไม่ใช่เกมญี่ปุ่นส่วนใหญ่ใช้ทำภาษา ทั้งเกม Python และ pygame, Solarus, เกม SDL และ GTK รวมถึงทุกอย่างที่ผ่าน Poedit, Weblate หรือ Crowdin ข้อความจะอยู่ในโฟลเดอร์ locale ในรูปไฟล์ต้นทาง .po และแคตตาล็อก .mo ที่คอมไพล์แล้ว RuneTranslate ตรวจพบไฟล์เหล่านี้ตอนสร้างโปรเจกต์ แปลทุกข้อความ แล้วเขียน .mo ที่ใช้งานได้กลับไป ซึ่งเป็นไฟล์ที่เกมอ่านจริงขณะทำงาน
แคตตาล็อก gettext ส่วนใหญ่เป็นข้อความอินเทอร์เฟซ ทั้งรายการเมนู ป้ายกำกับปุ่ม ทูลทิป และบรรทัดสถานะที่ปรากฏซ้ำหลายหน้าจอ เพิ่มคำนาม ชื่อไอเทม และคำกริยาสำคัญลงในอภิธานศัพท์เพียงครั้งเดียว แล้วทุกครั้งที่ปรากฏจะออกมาเหมือนกัน เรื่องนี้สำคัญยิ่งกว่าในบทสนทนา เพราะเมนูที่เขียนว่า “บันทึก” ที่หนึ่งและ “เก็บ” อีกที่หนึ่งจะดูเหมือนข้อผิดพลาด อภิธานศัพท์ 101 →
ชี้ RuneTranslate ไปที่ไดเรกทอรีของเกม ซึ่งเป็นโฟลเดอร์ที่มี locale/, lang/ หรือ i18n/ การตรวจจับมองหาแคตตาล็อกจากไบต์จริง ไม่ใช่จากนามสกุล ดังนั้นไฟล์ .mo ที่จริงแล้วเป็นฉาก 3 มิติจะถูกข้ามไป โฟลเดอร์ที่มีไฟล์ .po กระจัดกระจายก็ใช้ได้เช่นกัน
หน้าต่างโปรเจกต์ใหม่จะบอกว่าอ่านแคตตาล็อกได้กี่ไฟล์ เป็น .mo ที่คอมไพล์แล้วกี่ไฟล์เทียบกับ .po ต้นทาง เกมมีภาษาใดมาให้อยู่แล้วบ้าง และมีข้อความรวมกี่รายการ ก่อนที่คุณจะสร้างโปรเจกต์
เลือกภาษาปลายทางและผู้ให้บริการแปล ทั้ง Google หรือ DeepL แบบฟรี หรือคีย์ DeepL, OpenAI, Claude, DeepSeek ของคุณเอง ตัวยึดตำแหน่งรูปแบบ (%s, %d, %(player)s, {count}) จะถูกซ่อนก่อนแปลและคืนกลับหลังแปล ผู้ให้บริการจึงลบหรือเขียนใหม่ไม่ได้
ข้อความถูกจัดกลุ่มตามไฟล์แคตตาล็อก แต่ละรายการยังคงบริบท gettext (msgctxt) ไว้ ซึ่งเป็นคำอธิบายแยกแยะที่นักพัฒนาเขียนไว้สำหรับข้อความนั้นโดยเฉพาะ คุณจึงเห็นว่าทำไมคำเดียวกันจึงปรากฏสองครั้ง และแปลแต่ละคำได้ถูกต้อง
การส่งออกจะเขียนสำเนาเกมทั้งชุด พร้อมแคตตาล็อกที่ถูกต้องใน locale/<ภาษาของคุณ>/LC_MESSAGES/ และเวอร์ชันอัปเดตของแคตตาล็อกที่เกมโหลดอยู่เดิม เพื่อให้คำแปลปรากฏไม่ว่าเกมจะเลือกภาษาด้วยวิธีใด โดยเขียนทั้ง .po และ .mo ที่คอมไพล์แล้ว