แนวคิดและการใช้งาน Jetpack Compose
Android ทำงานบนอุปกรณ์จำนวนมากในหลายภูมิภาค หากต้องการเข้าถึงผู้ใช้จำนวนมากที่สุด ให้ตรวจสอบว่าแอปของคุณจัดการข้อความ ไฟล์เสียง ตัวเลข สกุลเงิน และกราฟิกในลักษณะที่เหมาะสมกับภาษาที่ใช้ในแอป
หน้านี้อธิบายแนวทางปฏิบัติแนะนำบางส่วนในการแปลแอป Android
คุณต้องมีความรู้พื้นฐานเกี่ยวกับภาษาโปรแกรม Kotlin หรือ Java และคุ้นเคยกับการโหลดทรัพยากร Android การประกาศองค์ประกอบของอินเทอร์เฟซผู้ใช้ใน XML ข้อควรพิจารณาในการพัฒนา เช่น วงจรกิจกรรม และหลักการทั่วไปของการทำให้เป็นสากลและการแปล
แนวทางปฏิบัติแนะนำคือการใช้เฟรมเวิร์กทรัพยากร Android เพื่อแยกองค์ประกอบที่แปลแล้วของแอปออกจากฟังก์ชันการทำงานหลักของแอปให้ได้มากที่สุด
- ใส่เนื้อหาส่วนใหญ่หรือทั้งหมดของอินเทอร์เฟซผู้ใช้ของแอปไว้ในไฟล์ทรัพยากร ตามที่อธิบายไว้ในหน้านี้และในภาพรวมของทรัพยากรแอป
- ในทางกลับกัน ลักษณะการทำงานของอินเทอร์เฟซผู้ใช้จะขับเคลื่อนด้วยโค้ดที่ใช้ Kotlin หรือ Java เช่น หากผู้ใช้ป้อนข้อมูลที่ต้องจัดรูปแบบหรือจัดเรียงแตกต่างกันไปตามภาษา คุณจะต้องใช้ Kotlin หรือภาษาโปรแกรม Java เพื่อจัดการข้อมูลแบบเป็นโปรแกรม หน้านี้ไม่ได้อธิบายวิธีแปลโค้ดที่ใช้ Kotlin หรือ Java
ดูคำแนะนำสั้นๆ เกี่ยวกับการแปลสตริงในแอปได้ที่ รองรับภาษาและวัฒนธรรมอื่น
ใช้แหล่งข้อมูลสำหรับการแปล
ส่วนนี้จะอธิบายวิธีสร้างทรัพยากรเริ่มต้นและทรัพยากรทางเลือก นอกจากนี้ยังอธิบายวิธีที่ระบบกำหนดลำดับความสำคัญของทรัพยากรและวิธีอ้างอิงทรัพยากรในโค้ด
สร้างทรัพยากรเริ่มต้น
ใส่ข้อความเริ่มต้นของแอปใน res/values/strings.xml สำหรับสตริงเหล่านี้ ให้ใช้
ภาษาเริ่มต้น ซึ่งเป็นภาษาที่คุณคาดหวังว่าผู้ใช้แอปส่วนใหญ่จะพูด
ชุดทรัพยากรเริ่มต้นยังมี Drawable และเลย์เอาต์เริ่มต้น และอาจมีทรัพยากรประเภทอื่นๆ เช่น ภาพเคลื่อนไหว โดยทรัพยากรเหล่านี้ จะอยู่ในไดเรกทอรีต่อไปนี้
res/drawable/: ไดเรกทอรีที่จำเป็นซึ่งมีไฟล์กราฟิกอย่างน้อย 1 ไฟล์สำหรับ ไอคอนของแอปใน Google Playres/layout/: ไดเรกทอรีที่จำเป็นซึ่งมีไฟล์ XML ที่กำหนด เลย์เอาต์เริ่มต้นres/anim/: ต้องระบุหากคุณมีโฟลเดอร์res/anim-<qualifiers>res/xml/: ต้องระบุหากคุณมีโฟลเดอร์res/xml-<qualifiers>res/raw/: ต้องระบุหากคุณมีโฟลเดอร์res/raw-<qualifiers>
เคล็ดลับ: ในโค้ด ให้ตรวจสอบการอ้างอิงแต่ละรายการไปยัง ทรัพยากร Android ตรวจสอบว่าได้กำหนดทรัพยากรเริ่มต้นสำหรับแต่ละรายการแล้ว นอกจากนี้ โปรดตรวจสอบว่าไฟล์สตริงเริ่มต้นสมบูรณ์แล้ว โดยไฟล์สตริงที่แปล อาจมีสตริงบางส่วน แต่ไฟล์สตริงเริ่มต้น ต้องมีสตริงทั้งหมด
เคล็ดลับการแปล
ทำตามเคล็ดลับเหล่านี้ขณะแปลแอป
ออกแบบเลย์เอาต์ที่ยืดหยุ่น
หากต้องการจัดเรียงเลย์เอาต์ใหม่ให้เหมาะกับภาษาใดภาษาหนึ่ง
คุณสามารถสร้างเลย์เอาต์สำรองสำหรับภาษานั้นได้ เช่น
res/layout-de/main.xml สำหรับเลย์เอาต์ภาษาเยอรมัน อย่างไรก็ตาม การทำเช่นนี้
อาจทำให้ดูแลรักษาแอปได้ยากขึ้น คุณควรสร้างเลย์เอาต์เดียวที่มีความยืดหยุ่นมากกว่า
อีกสถานการณ์ทั่วไปคือภาษาที่ต้องมีสิ่งอื่นในเลย์เอาต์ ตัวอย่างเช่น คุณอาจมีแบบฟอร์มติดต่อที่มีช่องชื่อ 2 ช่องเมื่อแอปทำงานในภาษาญี่ปุ่น แต่มีช่องชื่อ 3 ช่องเมื่อแอปทำงานในภาษาอื่น คุณจัดการเรื่องนี้ได้ 2 วิธี ดังนี้
- สร้างเลย์เอาต์ที่มีช่องที่คุณเปิดหรือปิดใช้แบบเป็นโปรแกรมได้ตามภาษา
- ให้เลย์เอาต์หลักมีเลย์เอาต์อื่นที่มีฟิลด์ที่เปลี่ยนแปลงได้ เลย์เอาต์ที่ 2 สามารถมีการกำหนดค่าที่แตกต่างกันสำหรับภาษาต่างๆ
ใช้ออบเจ็กต์ Context ของ Android สำหรับการค้นหาภาษาด้วยตนเอง
คุณสามารถค้นหาภาษาได้โดยใช้ออบเจ็กต์ Context
ที่ Android จัดเตรียมไว้ให้ ดังตัวอย่างต่อไปนี้
Kotlin
val primaryLocale: Locale = context.resources.configuration.locales[0] val locale: String = primaryLocale.displayName
Java
Locale primaryLocale = context.getResources().getConfiguration().getLocales().get(0); String locale = primaryLocale.getDisplayName();