4 คะแนน โดย lifthrasiir 2019-07-22 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

เวลาจัดการเรื่อง internationalization ของซอฟต์แวร์ สิ่งที่ชวนปวดหัวเป็นพิเศษคือสถานการณ์ที่มันทำงานได้กับแทบทุกภาษา แต่กลับใช้ไม่ได้กับบางภาษา (หรืออาจจะแค่ภาษาเดียว) เท่านั้น ตัวอย่างคลาสสิกคือ i สองชนิดที่มีเฉพาะในภาษาตุรกีและภาษาอาเซอร์ไบจาน ในอักษรละตินทั่วไปจะมีเพียง i ตัวพิมพ์เล็กที่มีจุด และ I ตัวพิมพ์ใหญ่ที่ไม่มีจุด แต่ในภาษาเหล่านี้ ı/I ที่ไม่มีจุด และ i/İ ที่มีจุด จะจับคู่กันแยกต่างหาก ตัวอย่างเช่น อักษรตัวแรกของคำว่า "อิสตันบูลİstanbul" คือ İ ซึ่งเป็นตัวพิมพ์ใหญ่ที่มีจุด

ใน Unicode ไม่มีการเข้ารหัส i/I ของภาษาตุรกี·อาเซอร์ไบจานแยกต่างหาก (เพราะถือว่าเป็นอักษรละตินตัวเดียวกัน) จึงมักเกิดปัญหาในซอฟต์แวร์ที่ไม่ได้คำนึงถึงภาษาเหล่านี้ และเคยมีกรณีที่ร้ายแรงถึงขั้นมีผู้เสียชีวิตด้วย [1] หากต้องการจัดการให้ถูกต้อง จำเป็นต้องใช้ไลบรารี Unicode ที่คำนึงถึงข้อมูลวัฒนธรรม (locale) ภาษาและสภาพแวดล้อมที่มีการจัดการ locale อยู่แล้ว เช่น Java หรือ C# มักไม่มีปัญหาใหญ่ ส่วนที่อื่นจะต้องใช้ไลบรารีเพิ่มเติมอย่าง ICU

[1] https://gizmodo.com/a-cellphones-missing-dot-kills-two-people-puts-thr…

1 ความคิดเห็น

 
iolothebard 2019-07-22

ภาษาตุรกี... ผมจำได้ว่าเคยลำบากเพราะคำมันยาว ทำให้ติดปัญหาเรื่องความกว้างของ label/ปุ่ม...