เมนู

ประเทศกับภาษาไม่เหมือนกัน: สามชั้นของการปรับให้เข้ากับท้องถิ่น

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

เผยแพร่เมื่อ

  • หลายภาษา
  • การทดสอบ

ประเทศกับภาษาไม่เหมือนกัน และการสมมติว่าสองสิ่งนี้ไปด้วยกันเสมอคือต้นเหตุของข้อผิดพลาดที่ตรวจหายากที่สุดในระบบหลายภาษา เพราะผลลัพธ์ที่ได้ดูสมเหตุสมผลทุกครั้ง ระบบจึงไม่มีสัญญาณเตือนใด ๆ เมื่อตรวจข้อมูลของประเทศหนึ่งด้วยกฎของอีกประเทศหนึ่ง

ทำไมจึงอนุมานประเทศกับภาษาจากกันไม่ได้?

เหตุผลข้อแรกคือประเทศเดียวสามารถมีภาษาทางการมากกว่าหนึ่งภาษา และทุกภาษานั้นเป็นทางการเท่ากันในบริบทที่ต่างกัน การเลือกภาษาหนึ่งมาเป็นตัวแทนของประเทศจะทำให้ผู้ใช้ที่อ่านอีกภาษาถูกละเลย

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

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

ผลที่ตามมาคือการมีสองมิตินี้ไม่ได้ทำให้ระบบซับซ้อนขึ้น แต่การบังคับให้สองมิตินี้ต้องตรงกันต่างหากที่ทำให้ระบบรองรับกรณีจริงไม่ได้

ชั้นทั้งสามของการปรับให้เข้ากับท้องถิ่น

ชั้นแรกคือชั้นของถ้อยคำที่แสดงบนหน้าจอ ซึ่งเป็นเรื่องของภาษาที่ผู้ใช้อ่าน ชั้นนี้เปลี่ยนได้ทันทีโดยไม่กระทบข้อมูลที่เก็บไว้

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

ชั้นที่สามคือชั้นของรูปแบบข้อมูล ซึ่งเป็นเรื่องของว่าค่าที่เก็บควรมีรูปร่างอย่างไร ชั้นนี้ผูกกับพื้นที่ ไม่ได้ผูกกับภาษาที่ผู้ใช้อ่าน

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

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

ป้ายภาษากับรหัสพื้นที่ทำหน้าที่ต่างกัน

ป้ายภาษาทำหน้าที่บอกว่าข้อความชิ้นหนึ่งเขียนด้วยภาษาใด ใช้กับการเลือกคำแปล การเลือกแบบอักษร และการเลือกเสียงอ่าน

รหัสพื้นที่ทำหน้าที่บอกว่าค่าของข้อมูลสอดคล้องกับธรรมเนียมของพื้นที่ใด ใช้กับการตีความตัวเลข การเรียงลำดับข้อความ และการตรวจความสอดคล้องของข้อมูล

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

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

การเดารูปแบบจากภาษาทำให้เกิดปัญหาอะไร?

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

ปัญหาที่สองคือการตรวจที่ผ่านแต่ผลลัพธ์ผิด เมื่อข้อมูลถูกตีความตามพื้นที่ที่ไม่ใช่ของตัวเอง ระบบจะยอมรับค่าแต่จัดรูปแบบผิด ซึ่งยากต่อการตรวจจับกว่าการปฏิเสธ

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

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

รูปแบบข้อความที่เปลี่ยนตามภาษาและพื้นที่ รวมถึงลำดับของชื่อบุคคล มีอธิบายไว้แล้วในบทความข้อมูลชื่อตามท้องถิ่น

เมทริกซ์การทดสอบควรสุ่มอย่างไร?

หลักการคือให้สองแกนเป็นอิสระต่อกัน ไม่ใช่จับคู่แบบหนึ่งต่อหนึ่ง การจับคู่ภาษากับประเทศแบบตายตัวจะทำให้ไม่มีการทดสอบกรณีที่สองมิตินี้ไม่ตรงกันเลย

วิธีที่ใช้ได้จริงคือเลือกประเทศตามเกณฑ์ที่อธิบายไว้ในบทความของเรา แล้วเลือกภาษาที่ไม่ตรงกับประเทศเหล่านั้นเพิ่มอีกชุดหนึ่ง เพื่อจงใจสร้างกรณีที่ไม่สอดคล้อง

ขนาดของเมทริกซ์ไม่จำเป็นต้องเท่าจำนวนคู่ทั้งหมด การเลือกบางคู่ที่ครอบคลุมความต่างด้านทิศทางอักษร ความยาวข้อความ และตัวเรียงลำดับ ให้ผลดีกว่า และดูแลต่อได้จริง

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

สำหรับนักพัฒนา: ให้รูปแบบตามพื้นที่ ไม่ใช่ตามภาษา

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

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

ข้อที่สามคือเก็บต้นฉบับของข้อความตามที่ผู้ใช้พิมพ์ไว้เสมอ และให้การแปลงเป็นรูปแบบมาตรฐานเป็นชั้นที่แยกออกมา เพราะเมื่อการตีความผิด การมีต้นฉบับทำให้กู้คืนได้โดยไม่ต้องรบกวนผู้ใช้

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

ควรเริ่มแก้จากจุดใด

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

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

คู่ภาษาและพื้นที่ ตลอดจนค่าตัวอย่างในเมทริกซ์ของบทความนี้ถูกสร้างขึ้นเพื่อสาธิตวิธีทดสอบ ไม่ได้แทนการกระจายตัวของผู้ใช้จริงกลุ่มใด ส่วนกรณีที่ผู้ใช้เลือกภาษาแล้วระบบต้องตัดสินใจว่าจะแสดงรายการประเทศใดนั้น มีจุดทดสอบอยู่ในบทความการทดสอบช่องเลือกประเทศ

อ่านต่อ

บทความเกี่ยวกับ รูปแบบที่อยู่และข้อมูลตัวตนตามประเทศ

บทความเกี่ยวกับ รูปแบบที่อยู่และข้อมูลตัวตนตามประเทศ

รายการนี้แสดงเฉพาะบทความในหัวข้อของหน้านี้