Multilingual User Interface (MUI) คืออะไร? ทำความรู้จักระบบแปลภาษาของ Windows
สรุปใจความสำคัญ
- MUI ช่วยแยกไฟล์ภาษาออกจากตรรกะของโปรแกรม ทำให้ไม่ต้องคอมไพล์โค้ดใหม่เมื่อมีการแก้ไขคำแปล
- ระบบ MUI สามารถเลือกภาษาตามการตั้งค่าของ Windows ได้โดยอัตโนมัติ
- วิวัฒนาการของไฟล์ภาษาใน Windows เริ่มจาก Language Packs (LPs) ไปสู่ Language Interface Packs (LIPs) และล่าสุดคือ Local Experience Packs (LXPs)
Multilingual User Interface (MUI) คือเฟรมเวิร์กการทำ Localization แบบไดนามิกที่ใช้ใน Microsoft Windows, Windows Phone และโปรแกรมที่รองรับ โดยมีจุดประสงค์หลักเพื่อให้ไฟล์ภาษาแยกออกจากตรรกะการทำงานของแอปพลิเคชัน (Application Logic) ซึ่งช่วยให้การพัฒนาและการปรับใช้ซอฟต์แวร์ในหลายภาษาทำได้ง่ายและมีประสิทธิภาพมากขึ้น
ข้อดีของ MUI เมื่อเทียบกับการทำ Localization แบบดั้งเดิม
ซอฟต์แวร์ที่ใช้ MUI มีความสามารถที่เหนือกว่าการแปลภาษาแบบ Static ดังนี้:
- การจัดเก็บทรัพยากรภาษา: เก็บข้อมูลภาษาไว้ในไฟล์แยกต่างหาก แทนที่จะเขียนฝังไว้ในไบนารีของโปรแกรม ทำให้สามารถอัปเดตการแปลภาษาหรือแก้ไขโค้ดได้โดยไม่ต้องทำการคอมไพล์ (Recompilation) ใหม่
- การเลือกภาษาอัตโนมัติ: สามารถเลือกภาษาได้โดยอัตโนมัติตามการตั้งค่าภาษาของ Windows โดยที่ผู้ใช้ไม่ต้องเลือกภาษาเองในขณะที่โปรแกรมกำลังทำงาน
- การใช้ Win32 API: ใช้ Win32 API ในการโหลดทรัพยากรจากไฟล์ภาษา MUI ได้โดยตรง
วิวัฒนาการของ MUI ใน Windows
เฟรมเวิร์ก MUI, API และไฟล์การแปลภาษา (ซึ่งเรียกว่า Language Packs หรือ LPs) ถูกนำมาใช้ครั้งแรกใน Windows 2000 และได้รับการขยายขีดความสามารถอย่างมากใน Windows Vista ซึ่งเปิดโอกาสให้นักพัฒนาซอฟต์แวร์ภายนอกสามารถนำ MUI ไปใช้ในโปรแกรมของตนได้
ต่อมาใน Windows 7 ได้มีการเพิ่ม Language Interface Packs (LIPs) เพื่อเสริมการทำงานของ Language Packs และใน Windows 10 (build 1809) LIPs ได้ถูกแทนที่ด้วย Local Experience Packs (LXPs)
ภาพรวมการทำงานและองค์ประกอบทางเทคนิค
การนำไปใช้งานในแอปพลิเคชัน
เทคโนโลยี MUI ถูกรวมเข้ากับ Windows โดยแอปพลิเคชันสามารถนำไปใช้ได้โดยการเก็บทรัพยากรที่ต้องการแปลภาษาไว้ในไฟล์ภาษา และใช้ MUI API ในการโหลดทรัพยากรเหล่านั้นในขณะที่โปรแกรมทำงาน (Runtime)
การนำไปใช้แบบง่ายที่สุดคือการเก็บสตริงของแต่ละภาษาไว้ใน string-table resource ของไฟล์ไบนารี และใช้ฟังก์ชัน LoadString ของ Win32 ในการโหลดข้อมูล ซึ่งไม่ต้องมีการกำหนดค่าหรือเขียนโค้ดเพิ่มเติมที่ซับซ้อน
ความสามารถเพิ่มเติมของ MUI
- สามารถเก็บทรัพยากรของแต่ละภาษาไว้ในไฟล์ DLL แยกต่างหาก เพื่อความยืดหยุ่นในการติดตั้งและปรับใช้
- ใช้ฟังก์ชันเฉพาะของ MUI เพื่อควบคุมการใช้ทรัพยากรภาษา เช่น การเลือกใช้ภาษาอื่นที่นอกเหนือจากค่าเริ่มต้นของระบบ
- สามารถเก็บทรัพยากรที่แปลภาษาแล้วในรูปแบบอื่นนอกเหนือจาก resource ปกติ
คำศัพท์ทางเทคนิคที่สำคัญ
| คำศัพท์ | ความหมาย |
|---|---|
| Language-neutral (LN) | สิ่งที่สื่อความหมายได้โดยไม่ต้องคำนึงถึงภาษา เช่น รูปภาพที่ไม่มีข้อความ |
| LN resource | ทรัพยากรที่ใช้ร่วมกันและถูกติดตั้งสำหรับทุกเวอร์ชันภาษาของแอปพลิเคชัน |
| LN file | ไฟล์ไบนารีของ Windows ที่บรรจุตรรกะของแอปพลิเคชันและทรัพยากรที่เป็นกลางทางภาษา |
| Language-specific (LS) | สิ่งที่เปลี่ยนแปลงไปตามภาษา เช่น ข้อความในอินเทอร์เฟซ หรือรูปภาพที่มีข้อความประกอบ |
| LS resource file | ชุดทรัพยากรที่แปลเป็นภาษาใดภาษาหนึ่งโดยเฉพาะ หรือที่เรียกว่า MUI file |
คำถามที่พบบ่อย
MUI แตกต่างจากการแปลภาษาซอฟต์แวร์แบบดั้งเดิมอย่างไร?
MUI ใช้การโหลดทรัพยากรภาษาแบบไดนามิกจากไฟล์แยกต่างหาก แทนที่จะฝังข้อความไว้ในตัวโปรแกรม ทำให้การอัปเดตภาษาทำได้ง่ายกว่าและไม่ต้องแก้ไขตัวโปรแกรมหลัก
Language Packs (LP) และ Local Experience Packs (LXP) คืออะไร?
คือชุดไฟล์ที่บรรจุข้อมูลการแปลภาษาสำหรับอินเทอร์เฟซของ Windows และแอปพลิเคชันที่รองรับ MUI เพื่อให้ผู้ใช้สามารถเปลี่ยนภาษาของระบบปฏิบัติการได้
นักพัฒนาสามารถใช้ MUI ในแอปพลิเคชันของตนได้อย่างไร?
นักพัฒนาสามารถใช้ Win32 API และฟังก์ชัน LoadString เพื่อโหลดสตริงภาษาจากไฟล์ทรัพยากรแยกต่างหาก หรือใช้ DLL เพื่อแยกการจัดการภาษาออกจากตัวโปรแกรมหลัก

