ภาษาจำลองคือภาษาที่ออกแบบมาเพื่อจำลองลักษณะของภาษาที่ทำให้เกิดปัญหาเกี่ยวกับ UI, เลย์เอาต์ และอื่นๆ ที่เกี่ยวข้องกับการแปลเมื่อมีการแปลแอป ภาษาจำลองสร้างขึ้นโดยการแปลทันทีและอัตโนมัติที่อ่านเป็นภาษาอังกฤษได้สำหรับข้อความที่แปลได้ทั้งหมด ข้อความที่ยังไม่ได้แปลจำลองจะชี้ไปยังข้อความที่แปลไม่ได้ในซอร์สโค้ด
ภาษาจำลองช่วยประหยัดเวลาและค่าใช้จ่าย เนื่องจากคุณสามารถปรับแต่งข้อความ UI และเลย์เอาต์ก่อนที่จะส่งข้อความไปยังที่เก็บต้นทางเพื่อส่งให้แปลในภายหลัง ดูรายการปัญหาที่อาจเกิดขึ้นในการแปลได้ที่ส่วนตรวจหาปัญหาการแปล
ชื่อภาษาจำลองของ Android เป็นไปตามรูปแบบการตั้งชื่อภาษามาตรฐาน และภาษาโปรแกรมใดก็ได้ที่เป็นไปตามข้อกำหนด BCP 47 จะแยกวิเคราะห์รหัสภาษาได้ ในแง่นี้ ภาษาจำลองจึงเหมือนกับภาษาอื่นๆ เช่น ฝรั่งเศส จีน หรือรัสเซีย
แพลตฟอร์ม Android มีภาษาจำลอง 2 ภาษาต่อไปนี้เพื่อแสดงภาษาจากซ้ายไปขวา (LTR) และจากขวาไปซ้าย (RTL)
อังกฤษ (XA): เพิ่มเครื่องหมายกำกับการออกเสียงภาษาละตินลงในข้อความ UI ภาษาอังกฤษพื้นฐาน ขยายข้อความต้นฉบับด้วยการเพิ่มข้อความที่ไม่มีเครื่องหมายกำกับการออกเสียง และใส่วงเล็บเหลี่ยมรอบๆ แต่ละหน่วยข้อความเพื่อแสดงปัญหาที่อาจเกิดขึ้นจากข้อความที่ขยาย ปัญหาที่อาจเกิดขึ้นได้คือการจัดวางที่ขาดตอนและรูปแบบข้อความที่ไม่เป็นระเบียบ เช่น ประโยคที่แบ่งออกเป็นหลายส่วนซึ่งแสดงเป็นข้อความที่มีวงเล็บหลายรายการ ภาษาจำลองภาษาอังกฤษ (XA) จะแสดงในรูปที่ 1
AR (XB): ตั้งค่าทิศทางข้อความของข้อความต้นฉบับจากซ้ายไปขวาเป็นจากขวาไปซ้าย ซึ่งจะกลับลําดับของอักขระในข้อความต้นฉบับ ภาษาจำลอง AR (XB) แสดงในรูปที่ 2
ภาษาจำลองจะช่วยคุณสร้างแอปเวอร์ชัน RTL ได้ แม้ว่าคุณจะไม่ได้เขียนหรือพูดภาษา RTL ก็ตาม
เปิดใช้ภาษาจำลอง
โดยปกติแล้ว ระบบจะเพิ่มภาษาจำลองลงในบิลด์ที่มุ่งเน้นนักพัฒนาแอป เมื่อคุณเลือกภาษาจำลองในอุปกรณ์ แอปทั้งหมดที่รองรับภาษาจำลองจะมีลักษณะของภาษาจำลองที่เลือก รวมถึงแอประบบทั้งหมด เช่น แอปการตั้งค่าและแผงการตั้งค่าด่วน
หากต้องการใช้ภาษาจำลองของ Android คุณต้องใช้งาน Android 4.3 (API ระดับ 18) ขึ้นไปและเปิดใช้ตัวเลือกสำหรับนักพัฒนาแอปในอุปกรณ์ นอกจากนี้ คุณยังต้องรีบูตอุปกรณ์หลังจากเปิดใช้ตัวเลือกสำหรับนักพัฒนาแอปด้วย
ขั้นตอนต่อไปนี้จะอธิบายวิธีเปิดใช้ภาษาจำลอง
ใน Android Studio ให้เปิดใช้ภาษาจำลองสําหรับแอปที่เฉพาะเจาะจงโดยเพิ่มการกําหนดค่าต่อไปนี้ลงในไฟล์
build.gradle
Groovy
android { ... buildTypes { debug {
pseudoLocalesEnabled
true } } }Kotlin
android { ... buildTypes.getByName("debug") { isPseudoLocalesEnabled = true } }
-
ใช้แอปการตั้งค่าเพื่อเลือกภาษาจำลอง ขั้นตอนนี้จะแตกต่างกันไปตามเวอร์ชัน Android ดังนี้
Android 5.0 (API ระดับ 21) ขึ้นไป
- เปิดแอปการตั้งค่าในอุปกรณ์ แล้วแตะภาษาและการป้อนข้อมูล > ค่ากำหนดภาษา
- ในรายการค่ากําหนดภาษา ให้ลากแท็บเพื่อย้ายภาษาจำลองไปที่ด้านบนของรายการ แล้วทําให้เป็นภาษาที่ใช้งานอยู่ โปรดดูรูปที่ 3
Android 4.4.4 (API ระดับ 19) หรือต่ำกว่า
- ในอุปกรณ์ ให้เปิดแอปการตั้งค่า แล้วแตะภาษาและการป้อนข้อมูล > ค่ากำหนดภาษา > เพิ่มภาษา
- แตะภาษาจำลองเพื่อเพิ่มลงในรายการค่ากําหนดภาษา
- ในรายการค่ากําหนดภาษา ให้ลากแท็บเพื่อย้ายภาษาจำลองไปที่ด้านบนของรายการ แล้วทําให้เป็นภาษาที่ใช้งานอยู่ ดูรูปที่ 3
ปัญหาการแปลภาษาของจุด
ภาษาจำลองเป็นวิธีที่ประหยัดเวลาและมีประสิทธิภาพในการค้นหาปัญหาที่อาจเกิดขึ้นเกี่ยวกับความสามารถในการแปลใน UI โดยช่วยให้คุณระบุปัญหาในด้านต่อไปนี้ได้
- สตริงแบบฮาร์ดโค้ดที่ส่งไปยังการแปลไม่ได้จะแสดงเป็นข้อความที่ไม่มีเครื่องหมายกำกับการออกเสียงในภาษาจำลองเพื่อให้สังเกตเห็นได้
- ปัญหาเลย์เอาต์ UI ที่เกิดจากข้อความที่ขยาย ซึ่งแสดงตำแหน่งที่ UI อาจแบ่งบรรทัดเนื่องจากความยาวของข้อความ
การต่อสตริง ซึ่งจะแสดงเป็นข้อความเดียวที่แบ่งออกเป็นวงเล็บ 2 ตัวขึ้นไป ซึ่งอาจทำให้การแปลที่ถูกต้องทำได้ยาก เนื่องจากผู้แปลต้องแปลแต่ละส่วนแยกกันโดยไม่รู้ว่าส่วนต่างๆ นั้นเกี่ยวข้องกัน นอกจากนี้ การต่อสตริงยังทําให้แปลไม่ถูกต้องได้ เนื่องจากภาษาต่างๆ อาจต้องใช้ลําดับของส่วนต่างๆ ที่แตกต่างกันหรือโครงสร้างประโยคที่แตกต่างออกไปโดยสิ้นเชิง เช่น ภาษาเกาหลี ญี่ปุ่น และภาษาทมิฬจะวางกริยาไว้ที่ท้ายประโยค เมื่อมีการต่อประโยคกัน นักแปลจะเปลี่ยนลําดับคําตามต้องการไม่ได้
ปัญหาข้อความแบบ 2 ทิศทาง (BIDI) เช่น เมื่อเนื้อหาในทิศทางข้อความหนึ่งมีวลีในบรรทัดในทิศทางข้อความตรงข้าม ซึ่งทำให้อ่านสตริงได้ยาก
ปัญหาเกี่ยวกับภาษาจากขวาไปซ้าย (RTL) เช่น องค์ประกอบไม่ได้รับการมิเรอร์ ตัวอย่างบางส่วน ได้แก่ องค์ประกอบ UI ไม่เลื่อนไปทางซ้าย ข้อความไม่กลับด้านและเลื่อนไปทางซ้าย หรือเครื่องหมายวรรคตอนอยู่ผิดที่ เช่น "pseudolocales rule!" เปลี่ยนเป็น "elur selacoloduesp!" แทนที่จะเป็น "!elur selacoloduesp"