รู้จักกับ บัก 273856 และวิธีแก้ไขเบื้องต้น

พอดีพี่เทพเขียนฝากมาเล่าให้ฟังครับ ขอลอกมาเลยนะครับ

เกี่ยวกับบั๊กการป้อนภาษาไทยที่ไม่รับสระบน-ล่าง ซึ่งกล่าวถึงกันมากใน ubuntuclub นั้น ความจริงเป็นปัญหาที่คาบเกี่ยวทั้งพฤติกรรมการใช้งานของผู้ใช้ ทั้งปัญหาของซอฟต์แวร์เองด้วย คำอธิบายปัญหาจึงมีทั้งสองส่วน

ก่อนอื่น ขอเริ่มจากเรื่องการป้อนข้อความภาษาไทยใน GTK+ ซึ่งรองรับภาษาไทยมานานแล้ว โดย GTK+ สามารถเปลี่ยนวิธีป้อนข้อความได้ขณะทำงาน โดยคลิกขวาที่บริเวณป้อนข้อความใด ๆ แล้วเลือกเมนู "วิธีป้อนข้อความ" (Input Methods) ก็จะสามารถเลือกวิธีป้อนข้อความภาษาต่าง ๆ ได้ ถ้าคุณเลือก "ไทย-ลาว" (Thai-Lao) หรือ "Thai (libthai)" ก็จะสามารถป้อนภาษาไทยได้โดยไม่ขึ้นกับโลแคลที่ใช้ พร้อมกับมีการตรวจแก้ลำดับการพิมพ์ให้ด้วย

หรือถ้าเลือก "X Input Method" ภายใต้โลแคลไทย ก็จะป้อนภาษาไทยแบบตรวจแก้ลำดับได้เช่นกัน โดยถ้าอยู่ในโลแคลอื่น ก็อาจป้อนได้หรือไม่ก็ได้ ขึ้นอยู่กับโลแคลเป็นกรณีไป ที่แน่ ๆ คือ จะไม่มีการตรวจแก้ลำดับการพิมพ์ในกรณีที่ป้อนได้

กล่าวคือ แม้คุณจะไม่ได้เข้าระบบด้วยวาระภาษาไทย คุณก็สามารถเลือกวิธีป้อนภาษาไทยได้เสมอ ด้วยเมนูคลิกขวา แล้วเลือก "ไทย-ลาว" (Thai-Lao) หรือ "Thai (libthai)"

ปัญหาที่พบกันคือ มันไม่ได้เลือกวิธีดังกล่าวไว้เป็นค่าปริยายตั้งแต่เปิดโปรแกรม ค่าปริยายนั้น จะขึ้นอยู่กับภาษาที่ใช้เข้าระบบ ถ้าเข้าระบบเป็นภาษาอังกฤษ ก็จะใช้วิธีป้อนของภาษาอังกฤษ แต่ถ้าเข้าระบบด้วยภาษาไทย ก็จะเลือกวิธีใดวิธีหนึ่งที่เหมาะกับภาษาไทยเป็นค่าปริยาย

ดังนั้น ถ้าคุณเข้าระบบด้วยภาษาไทย จะไม่มีปัญหาดังกล่าว แต่ถ้าเข้าระบบด้วยภาษาอังกฤษ ก็ต้องเข้าใจด้วยว่า จะเข้าสู่สภาพแวดล้อมที่เหมาะสมกับภาษาอังกฤษ ไม่ใช่ภาษาไทย คุณต้องสั่งอะไรเพิ่มนิดหน่อยถ้าจะใช้ภาษาไทยในสภาพแวดล้อมดังกล่าว

นั่นคือส่วนของพฤติกรรมผู้ใช้ ทีนี้มาดูพฤติกรรมซอฟต์แวร์บ้าง

วิธีป้อนข้อความในสภาพแวดล้อมภาษาอังกฤษนั้น GTK+ ได้เตรียมไว้ให้ป้อนได้ครอบคลุมภาษาพอสมควร คือโดยหลักการแล้ว ผู้ใช้ควรสามารถป้อนภาษาไทยแบบไม่มีการตรวจแก้ลำดับได้

ปัญหาคือ ใน GTK+ 2.14 ได้เพิ่มการจัดการเกี่ยวกับการ compose อักขระ accent ต่าง ๆ ในภาษายุโรปเข้ามาด้วย แต่เงื่อนไขการตรวจสอบอักขระที่จะประกอบบนอักขระฐานนั้น ค่อนข้างกว้างเกินไป จนมากระทบภาษาอื่น ๆ รวมทั้งภาษาไทยด้วย ภาษาไทยจึงถูกบังคับให้ป้อนในแบบยุโรปโดยปริยาย โดยไม่มีข้อมูลรองรับอีกต่างหาก ปัญหานี้ กำลังอยู่ระหว่างแก้ไขที่ GNOME Bug #555000 (เลขสวยดีแฮะ) ซึ่งจะทัน Intrepid หรือไม่ ก็ขึ้นอยู่กับว่าบั๊กนั้นจะแก้ไขทันกำหนดหรือเปล่า และ Ubuntu จะปิด LP #273856 หรือเปล่า

ขณะนี้ ปัญหาถือว่ากำลังอยู่ระหว่างดำเนินการแล้ว สิ่งที่เราจะช่วยได้คงเป็นการทดสอบ รายงานผลตามสมควร

บั๊กนี้จะถือว่าร้ายแรงก็ได้ ไม่ร้ายแรงก็ได้ ขึ้นอยู่กับว่ากำลังพูดถึงผู้ใช้กลุ่มไหน ถ้าเป็นผู้ใช้ที่เข้าระบบด้วยภาษาไทย ก็ไม่มีปัญหาอะไร ถ้าเป็นผู้ใช้ที่เข้าระบบด้วยภาษาอังกฤษ แต่รู้จักวิธีเลือกวิธีป้อนภาษาไทย ไม่ว่าจะผ่านเมนูของ GTK+ หรือผ่านการตั้ง im-switch ก็เป็นปัญหาเล็กน้อย แต่ถ้าเป็นผู้ใช้ที่เข้าระบบด้วยภาษาอังกฤษโดยไม่ได้ทำอะไรเพิ่มเติมเลย ก็คงเป็นปัญหาร้ายแรง

เกี่ยวกับวิธีกำหนดค่าเพิ่มเติม ถ้าต้องการใช้ภาษาไทยในโปรแกรมโดยให้ UI เป็นภาษาอังกฤษ ขอแนะนำ 2 วิธี:

  1. กำหนด LC_MESSAGES เป็น en_US.UTF-8 ไว้ อาจจะที่ /etc/environment หรือ export ใน ~/.bashrc ก็แล้วแต่ แล้วเลือกภาษาไทยขณะเข้าระบบ
  2. เข้าระบบเป็นภาษาอังกฤษตามเดิม แต่กำหนด im-switch ให้เลือกวิธีป้อนภาษาไทยโดยปริยาย
    • system-wide:
      sudo im-switch -z all_ALL -s th-xim
    • per-user:
      im-switch -s th-xim
    • สามารถเปลี่ยน th-xim เป็นอย่างอื่นได้ เช่น
      ถ้าติดตั้ง gtk-im-libthai: ใช้ th-gtk-im-libthai
      ถ้าใช้ scim-thai: ใช้ scim-immodule
    • ดูค่าที่เป็นไปได้ทั้งหมดได้โดยสั่ง
      im-switch -l

ถามผม ผมแนะนำว่าวิธีแรกง่ายที่สุดครับ

Comments

.xsessionrc

ขอแก้รายละเอียดนิดหนึ่งครับ การกำหนด LC_MESSAGES=en_US.UTF-8 แบบส่วนบุคคล ทำที่ ~/.bashrc ไม่มีผลกับเดสก์ท็อปครับ ต้องทำที่ ~/.xsessionrc เช่น อาจกำหนดอย่างนี้:

export LC_MESSAGES=en_US.UTF-8

ในกรณีที่ไม่ชอบปฏิทินไทยด้วยก็:

export LC_TIME=en_US.UTF-8

ทำที่อ่านแล้วเข้าใจ ต้องแก้โดย login เป็นภาษาไทย?
แล้วจะแก้ให้เป็น login ภาษาไทย ได้ที่ไหนครับ
แล้ว เมนูใช้งานต่างๆจะกลายเป็นภาษาไทยด้วยมั้ยครับ

ขอบคุณมากครับ กำลังเจอปัญหานี้อยู่ครับ

login ภาษาไทย

เลือกเมนู Language ที่หน้าจอ login นะครับ แล้วเลือกภาษาไทย ก่อนที่จะป้อน username, password

ถ้าไม่ต้องการให้ UI เป็นภาษาไทย ก็แก้ ~/.xsessionrc ให้เป็นอย่างนี้:

export LC_MESSAGES=en_US.UTF-8
export LC_TIME=en_US.UTF-8

บรรทัดหลังนี้ ใช้ในกรณีที่ไม่ต้องการปฏิทินไทยด้วย

GNOME #555000

Update: GNOME Bug #555000 แก้แล้วครับ ที่เหลือคือรอ backport patch มาที่ Ubuntu หรือไม่ก็รอ GNOME 2.24.1 วันที่ 20 ตุลานี้

กล่าวคือ ยังไงปัญหาก็น่าจะแก้ทัน intrepid ละ โดยถ้าทัน ก็จะสามารถป้อนภาษาไทยในโลแคลอังกฤษได้อีกครั้ง แต่เป็นการป้อนแบบดิบ ๆ ไม่มีการกรองลำดับอักขระ

สวสดีครับ

แก้ตามที่ คุณ thep บอกแล้วครับ
ลองใช้งาน กับ abiword 2.6.4 ไม่มีปัญหาแต่ว่า
terminal มันแปลกๆ ครับ ยังไงได้บ้างมั้ยครับ

ขอบคุณมากครับ

ขอบคุณครับ

ทดลองใช้แบบ install ลงเครื่องแล้วครับ ภาษาไทยสวย wirelessใช้ได้แล้ว(เย้)เนียนเลยครับ
NEO
Because I choose to.
www.sanhom.com

GTK+ 2.14.4

Update: GTK+ 2.14.4 ออกแล้ว พร้อมแก้บั๊กนี้แล้ว รอ ubuntu update เร็ว ๆ นี้