ผลพวงจาก LP #273856 เกี่ยวกับปัญหาการป้อนภาษาไทย ทำให้ผมได้พบความจริงอย่างหนึ่งที่ไม่ได้นึกถึงมานาน และเป็นคำตอบให้กับอะไรหลาย ๆ อย่าง
นั่นคือ ยังมีผู้ใช้จำนวนมากที่ใช้ภาษาไทยบนโลแคลภาษาอังกฤษ!
เรื่องนี้เป็นเรื่องที่ผมลืมมานานแล้ว เนื่องจากได้ปรับตัวให้เข้ากับ UI ภาษาไทยของ GNOME มาไม่ต่ำกว่า 8 ปี นับตั้งแต่เริ่มเข้าร่วมทีมแปลในช่วง GNOME 2.6 หลังจากรับฟังเสียงบ่นจากผู้ว่าจ้างที่ต้องการคำแปลภาษาไทยที่มีคุณภาพกว่าตอนนั้น โดยในช่วงแรก ๆ ผมเน้นปรับตัวสะกดและการใช้คำ จนต่อมาก็ทำส่วนอื่นมากขึ้นเรื่อย ๆ โดยใช้แต่ UI ภาษาไทยมาตลอด เพื่อให้ตัวเองมีโอกาสพบความผิดพลาดและแก้ไขให้มากที่สุด
เรื่องภาษาของ UI นี้ เป็นเรื่องนานาจิตตัง หลายคนอาจจะชอบ UI ภาษาอังกฤษ เพราะยังติดภาพลบของคำแปลภาษาไทยในซอฟต์แวร์หลาย ๆ ตัว แต่ผลข้างเคียงที่ผมไม่เคยนึกถึง คือมันทำให้ผมไม่เข้าใจปัญหาหลาย ๆ เรื่องที่ได้พบเห็นในเว็บบอร์ดต่าง ๆ โดยเฉพาะเรื่องการป้อนภาษาไทย
ผมไม่เข้าใจ เพราะผมทดสอบยังไงก็ได้ผลต่างจากเขา ผมใช้ input method ภาษาไทยที่มีทั้งการตรวจสอบและแก้ลำดับการพิมพ์ หากจะมีอาการผิดปกติบางอย่าง ผมก็สามารถแก้ไขและทดสอบแล้วได้ผล แต่ผมเพิ่งจะมาถึงบางอ้อด้วยประโยคนี้ใน ความเห็นหนึ่ง:
but If I switch session to thai everything work fine. ???
ผมกระจ่างเลย ว่าที่ผ่านมาเราพูดถึงปัญหาคนละปัญหากัน ผมลืมไปเสียสนิทว่ายังมีอีกหลายคนที่ยังพยายามใช้ภาษาไทยบนโลแคลภาษาอังกฤษ
จากนั้น ความกระจ่างก็ตามมาอีกเป็นระลอก ๆ
ผมเข้าใจแล้ว ว่าทำไมจึงยังพบเห็นการป้อนภาษาไทยผิดลำดับตามเว็บต่าง ๆ ของชุมชนผู้ใช้ลินุกซ์ โดย pango จะวาดลำดับที่ผิดเหล่านั้นให้เห็นอย่างชัดเจน เช่น วรรณยุกต์มาก่อนสระบน หรือมีสระอิ สระอี อยู่ต้นบรรทัด ฯลฯ ทั้ง ๆ ที่ลำดับเหล่านี้ควรถูก XIM กรองออกหมดแล้ว ผมคิดไปอีกแบบ ว่าผู้ใช้อาจจะมาจาก OS อื่นที่ยังรองรับภาษาไทยไม่เต็มที่ (วินโดวส์ไม่น่าจะใช่ ส่วน MacOSX ผมไม่แน่ใจ เพราะไม่เคยใช้) แต่ผมไม่เคยนึกถึงกรณีที่จะมาจากผู้ใช้ลินุกซ์ที่ใช้โลแคลภาษาอังกฤษเลย
และครั้งนี้ก็เช่นกัน เมื่อได้ยินเสียงบ่นว่าการป้อนภาษาไทยมีปัญหา ผมก็นึกถึงแต่ ปัญหาในโลแคลไทยของ Xlib ซึ่งหากแก้ไขตามแพตช์แล้ว ก็ควรจะใช้การได้ แต่กลับไม่ใช่
การเข้าระบบด้วยวาระภาษาอังกฤษนั้น ไม่มีอะไรรับประกันได้เลย ว่าผู้ใช้จะสามารถป้อนภาษาไทยได้ กลไกต่าง ๆ ไม่ว่าจะของเดสก์ท็อปหรือของดิสโทรที่ได้เตรียมไว้ให้ผู้ใช้ภาษาไทย ต่างอาศัยการเข้าระบบด้วยวาระภาษาไทยทั้งสิ้น!
เริ่มตั้งแต่:
-
XIM ของ X Window จะเปิดใช้การป้อนภาษาไทยก็ต่อเมื่อ LC_CTYPE จะต้องเป็นไทย (th_TH.UTF-8 หรือ th_TH.TIS-620 แล้วแต่กรณี) ซึ่งสามารถกำหนดได้หลายวิธี เช่น:
- LANG=th_TH.UTF-8 ซึ่งจะเป็นค่านี้เมื่อเข้าระบบด้วยวาระภาษาไทย และจะใช้ธรรมเนียมไทยทั้งหมด ทั้งรูปแบบวันเวลา การเรียงลำดับคำ ข้อความใน UI และการป้อนข้อความ
- LANG=th_TH.UTF-8, LC_MESSAGES=en_US.UTF-8 คือใช้ธรรมเนียมไทยทั้งหมด ยกเว้นข้อความใน UI เป็นภาษาอังกฤษ เหมาะสำหรับผู้ใช้ภาษาไทยที่ต้องการใช้ UI ภาษาอังกฤษ
- LANG=en_US.UTF-8, LC_CTYPE=th_TH.UTF-8 คือใช้ธรรมเนียมภาษาอังกฤษหมด ทั้งวันเวลา หน่วยเงินตราและอื่น ๆ การเรียงลำดับคำภาษาไทยจะไม่เรียงตามพจนานุกรมไทย ข้อความภาษาไทยใน UI ก็ไม่ขึ้น เหมาะสำหรับผู้ที่ต้องการแค่ป้อนภาษาไทยได้เท่านั้น โดยไม่แตะต้องอย่างอื่น
มีหลายวิธีที่จะกำหนดค่าตัวแปรเหล่านี้ เช่น สำหรับทั้งระบบก็ที่ /etc/environment (สำหรับ Debian/Ubuntu) แต่ถ้ากำหนดเฉพาะส่วนบุคคลก็โดย export ตัวแปรที่ ~/.bashrc
แต่อย่าลืมว่า การกำหนดค่านี้ จะมีผลกับการป้อนข้อความก็ต่อเมื่อ im-switch เลือกใช้ XIM เท่านั้น ดูข้อถัดไปประกอบ
-
im-switch ของ Debian/Ubuntu ซึ่งจะใช้กำหนดวิธีป้อนข้อความปริยายเมื่อเปิดโปรแกรมต่าง ๆ ในวาระที่เข้าระบบ ก็จะอาศัยโลแคลของวาระเป็นเกณฑ์เช่นกัน ถ้าเป็นภาษาอังกฤษ ก็จะใช้วิธีป้อนข้อความสำหรับภาษาอังกฤษ ถ้าเป็นโลแคลไทย ก็จะใช้วิธีป้อนสำหรับภาษาไทย ดังนั้น สำหรับการติดตั้งโดยใช้ภาษาอังกฤษโดยไม่มีการปรับแต่งอะไร คุณก็ยังคงไม่ได้ใช้การป้อนข้อความที่ออกแบบมาสำหรับภาษาไทยอยู่ดี ถ้าคุณเข้าระบบเป็นภาษาอังกฤษ
ถ้าคุณต้องการเข้าระบบด้วยวาระภาษาอังกฤษ แต่ต้องการป้อนภาษาไทยแบบมีการกรอง/แก้ลำดับ คุณก็สามารถทำได้โดยกำหนด im-switch:
-
เรียกดู im-switch ที่มีทั้งหมด:
$ im-switch -l
Your input method setup under en_US locale as below.
=======================================================
No private "/home/thep/.xinput.d/en_US or /home/thep/.x
input.d/all_ALL" is defined.
=======================================================
The system wide default is pointed by "/etc/alternative
s/xinput-all_ALL" .
xinput-all_ALL - status is auto.
link currently points to default
default-xim - priority 0
none - priority 0
default - priority 10
scim - priority 0
scim-immodule - priority 0
Current `best' version is default.
=======================================================
The available input method configuration files are:
/usr/bin/find: `/home/thep/.xinput.d': No such file or
directory
default default-xim none scim scim-immodule th-gtk-im-l
ibthai th-xim
=======================================================
จะเห็นรายละเอียด บอกว่าไม่มีการกำหนด im-switch ไว้ และระบบพยายามหาค่าปริยาย ซึ่งค่าที่ดีที่สุดในกรณีนี้ซึ่งใช้โลแคล en_US คือ "default" จากนั้นก็ให้รายชื่อ config ที่มีทั้งหมดไว้ท้ายสุด
-
กำหนด im-switch config ที่ต้องการ:
แต่เข้าระบบด้วยวาระภาษาไทย ค่าที่ดีที่สุดจะกลายเป็น "th-gtk-im-libthai" โดยอัตโนมัติ หรือถ้าไม่ได้ติดตั้ง gtk-im-libthai ก็จะเป็น "th-xim" แทนอยู่แล้ว ไม่ต้องกำหนดอะไรเพิ่ม
ทั้งหมดนี้ เป็นสิ่งที่ต้องกำหนดเพิ่ม ถ้าผู้ใช้พยายามจะหลีกเลี่ยง UI ภาษาไทย แต่ยังต้องการใช้ภาษาไทยในโปรแกรมอยู่ ซึ่งผมคิดว่าวิธีที่ง่ายที่สุดคือ เข้าระบบด้วยวาระภาษาไทย แต่กำหนด LC_MESSAGES เป็น en_US.UTF-8
คงจะไปตามบอกผู้ใช้ที่นิยมเข้าระบบเป็นภาษาอังกฤษทั้งหมดไม่ได้ แต่ความต้องการแบบนี้ก็ยังคงมีอยู่ จึงได้เสนอแพตช์แก้ใน GTK+ ให้กลับมาป้อนภาษาไทยแบบไม่ตรวจลำดับได้อีกครั้งในบั๊กที่ว่า ส่วนทางแก้ในระยะยาว ไว้ค่อยเขียนถึงในโอกาสต่อไป เนื่องจาก blog เริ่มยาวมากแล้ว
ป้ายกำกับ: debian, gnome, localization, translation, ubuntu