แปลแอป (ยอดดู)

แนวคิดและการใช้งาน Jetpack Compose

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

หน้านี้อธิบายแนวทางปฏิบัติแนะนำบางส่วนในการแปลแอป Android

คุณต้องมีความรู้พื้นฐานเกี่ยวกับภาษาโปรแกรม Kotlin หรือ Java และคุ้นเคยกับการโหลดทรัพยากร Android การประกาศองค์ประกอบของอินเทอร์เฟซผู้ใช้ใน XML ข้อควรพิจารณาในการพัฒนา เช่น วงจรกิจกรรม และหลักการทั่วไปของการทำให้เป็นสากลและการแปล

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

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

ดูคำแนะนำสั้นๆ เกี่ยวกับการแปลสตริงในแอปได้ที่ รองรับภาษาและวัฒนธรรมอื่น

ใช้แหล่งข้อมูลสำหรับการแปล

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

สร้างทรัพยากรเริ่มต้น

ใส่ข้อความเริ่มต้นของแอปใน res/values/strings.xml สำหรับสตริงเหล่านี้ ให้ใช้ ภาษาเริ่มต้น ซึ่งเป็นภาษาที่คุณคาดหวังว่าผู้ใช้แอปส่วนใหญ่จะพูด

ชุดทรัพยากรเริ่มต้นยังมี Drawable และเลย์เอาต์เริ่มต้น และอาจมีทรัพยากรประเภทอื่นๆ เช่น ภาพเคลื่อนไหว โดยทรัพยากรเหล่านี้ จะอยู่ในไดเรกทอรีต่อไปนี้

  • res/drawable/: ไดเรกทอรีที่จำเป็นซึ่งมีไฟล์กราฟิกอย่างน้อย 1 ไฟล์สำหรับ ไอคอนของแอปใน Google Play
  • res/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();