← กลับไปยังบทความทั้งหมด

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) ซึ่งช่วยให้การพัฒนาและการปรับใช้ซอฟต์แวร์ในหลายภาษาทำได้ง่ายและมีประสิทธิภาพมากขึ้น

Screenshot of English and Japanese Windows start menus
ตัวอย่างเมนูเริ่มต้นของ Windows ในเวอร์ชันภาษาอังกฤษและภาษาญี่ปุ่นที่ใช้ระบบ MUI

ข้อดีของ 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 เพื่อแยกการจัดการภาษาออกจากตัวโปรแกรมหลัก