23 พฤศจิกายน 2555

[Android Design] Multiple Language การออกแบบให้รองรับหลายภาษา



ช่วงนี้พักหัวข้อ Android Code ซักพักละกัน
เพราะเจ้าของบล็อกคิดว่าเรื่องการออกแบบก็สำคัญไม่น้อย
และเดิมทีก็คิดว่าจะทำตั้งนานแล้ว แต่ก็ไม่ได้ทำซะที

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


การทำให้รองรับหลายภาษาจะใช้วิธีเดียวกันกับหน้าจอหลายขนาด
แต่สำหรับภาษาก็จะอยู่ในรูปของ String แทนที่จะเป็นรูปภาพ
ที่คุ้นเคยกันดีก็คือไฟล์ res/values/string.xml นั่นเอง
มีผู้ที่หลงเข้ามาอ่านหลายคนสงสัยว่าเวลาสร้าง Layout
อย่างพวก TextView เวลาพิมข้อความลงไปโดยตรง
จะมีเครื่องหมายตกใจสีเหลืองแสดงขึ้นมาซะงั้น



ซึ่งเครื่องหมายตกใจสีเหลืองที่ว่านี้ก็เป็นแค่ Warning เฉยๆ
ว่าไม่แนะนำให้พิมตรงไปโดยตรง ควรสร้างไว้ใน xml แทน
แล้วเรียกผ่าน xml อีกทีหนึ่ง เช่น @string/hello_world เป็นต้น
ทั้งนี้ก็เพื่อให้จัดการกับเรื่องซับซ้อนอย่างการรองรับหลายภาษาได้

ทีนี้เวลาจะทำให้รองรับหลายภาษาจะต้องทำยังไงล่ะ?

ก่อนอื่นเจ้าของบล็อกขอพูดถึงวิธีง่ายๆสำหรับผู้ที่หลงเข้ามาอ่าน
ที่อัพเดท Android SDK Tools เป็นเวอร์ชัน 21 ขึ้นไปกันก่อน
เพราะว่าเวอร์ชันนี้มาพร้อมกับการรองรับเรื่องนี้มาด้วย

ก่อนอื่นให้เปิด Layout มาซักหน้าหนึ่ง หรือจะสร้างใหม่ก็ได้
แล้วให้กดปุ่มรูปโลกที่อยู่ตรงขวาบนของ Layout ดูก่อน



จะเห็นว่ามีแถบ Any และ Add New Translation... แสดงขึ้นมา
แต่ถ้าเป็น Android SDK Tools เวอร์ชันเก่าจะไม่มี Add New Translation..



จะมีหน้าต่างแสดงขึ้นมาโดยมีช่อง Language ให้เลือกภาษาที่ต้องการได้



เจ้าของบล็อกจะเลือกเป็นภาษาไทยละกัน แต่ Region เลือกเป็น Any ไว้
จะเห็นว่าช่องข้างล่างจะมีช่อง New Translation ให้ใส่คำที่แปลเป็นภาษาไทยนั่นเอง
โดยในช่อง Default ก็คือข้อความเดิมที่สร้างไว้ใน res/values/string.xml นั่นเอง
ถ้าจะเพิ่ม Key เข้าไปก็ให้เข้าไปแก้ไขไฟล์ก่อนจะใส่คำแปลนะ



ทีนี้เจ้าของบล็อกก็ใส่ภาษาไทยลงไปแล้วกดปุ่ม OK



จะเห็นว่ามีโฟลเดอร์ values-th ถูกสร้างขึ้นมา 
และเมื่อกดที่ปุ่มรูปโลกก็จะมีภาษาไทยให้เลือกเพิ่มขึ้นมา



เมื่อเลือกภาษาไทยแล้ว จากข้อความ Hello World 
ก็จะเปลี่ยนเป็น "สวัสดีชาวโลก" ตามที่เจ้าของบล็อกกำหนดไว้แทน




และจะเห็นว่ามีแถบ Preview All Locates ให้เลือก
ซึ่งเป็นการแสดงภาษาที่ได้สร้างไว้ทั้งหมดมาแสดงพร้อมกัน



เอาล่ะ ทีนี้มาพูดถึงวิธีปกติกันดีกว่า 5555+
สำหรับอีกวิธีที่ใช้กันทั่วไปก็คือสร้างโฟลเดอร์ values-xx เอง
แล้วก็สร้างไฟล์ string.xml ข้างในโฟลเดอร์นั้นๆอีกที
ซึ่งก็เหมือนกันกับที่อธิบายไปข้างต้นนั่นแหละ
แค่ว่า Android SDK Tools ตัวใหม่นี้ช่วยให้สร้างได้สะดวกขึ้นในระดับหนึ่ง
โดยภาษาที่กำหนดไว้นี้จะอิงจากภาษาที่กำหนดไว้บนเครื่องแอนดรอยด์
ถ้าผู้ที่หลงเข้ามาอ่านใช้เมนูแบบภาษาไทย
เวลาเปิดแอปพลิเคชันตัวนี้ก็จะแสดงข้อความภาษาไทย

โดยการกำหนดแบบ xx อย่างเช่น en จะหมายถึง Language ที่เป็นภาษาอังกฤษ
และมีอีกอันหนึ่งที่เจ้าของบล็อกไม่ได้กำหนดนั่นก็คือ Region
ซึ่งแปลตรงตัวก็หมายความว่าประเทศหรือท้องถิ่นนั่นแหละ
โดยปกติจะนิยมกำหนดให้เหมือนกับภาษา เช่น en_EN
เวลาสร้างโฟลเดอร์ values ก็จะเป็น values-en_EN 
ซึ่งก็หมายความว่าสำหรับภาษาอังกฤษในพื้นที่ประเทศอังกฤษ
หรือจะกำหนดเป็น en_US ก็ได้เช่นกัน แต่ก็จะหมายถึง
ภาษาอังกฤษในพื้นที่ประเทศสหรัฐอเมริกานั่นเอง
(สามารถทำเป็นภาษาอังกฤษสำเนียงอังกฤษหรืออเมริกาได้)

เท่านี้แอปพลิเคชันก็สามารถรองรับกับหลายภาษาได้เรียบร้อยแล้ว

สำหรับผู้ที่หลงเข้ามาอ่านคนใดที่ต้องการดาวน์โหลดไฟล์ตัวอย่าง
สามารถดาวน์โหลดได้ที่ Simple Locale [Google Drive]




เหล่าพันธมิตรแอนดรอยด์

Devahoy Layer Net NuuNeoI The Cheese Factory Somkiat CC Mart Routine Artit-K Arnondora Kamonway Try to be android developer Oatrice Benz Nest Studios Kotchaphan@Medium Jirawatee@Medium Travispea@Medium