ค่ากำหนดภาษาที่ใช้ในแอป

วันที่
ภาษาของแต่ละแอปในการตั้งค่าระบบ

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

  • การตั้งค่าระบบ: ตำแหน่งส่วนกลางที่ผู้ใช้สามารถเลือก ภาษาที่ต้องการสำหรับแต่ละแอป

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

  • API เพิ่มเติม: API สาธารณะเหล่านี้ เช่น setApplicationLocales() และ getApplicationLocales() ใน LocaleManager เพื่อให้แอปต่างๆ ตั้งค่าภาษาอื่นจากภาษาของระบบในระหว่างรันไทม์

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

    สำหรับความเข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันก่อนหน้า API ที่เทียบเท่า พร้อมให้บริการใน AndroidX ด้วย แต่ API ที่เข้ากันได้แบบย้อนหลังจะทำงานได้ สำหรับ Android 12 ที่มีบริบท AppCompatActivity ไม่ใช่บริบทแอปพลิเคชัน (API ระดับ 32) และเก่ากว่า เข้าถึง API ที่เข้ากันได้แบบย้อนหลังด้วย Appcompat 1.6.0 หรือสูงกว่า

ภาพรวมของการใช้ฟีเจอร์นี้

ตารางต่อไปนี้แสดงการใช้งานที่แนะนำตามการใช้งานที่แตกต่างกัน กรณี

กรณีการใช้งาน การใช้งานที่แนะนำ
แอปของคุณไม่มีเครื่องมือเลือกภาษาในแอป
  1. เปิดใช้การรองรับภาษาต่อแอปโดยอัตโนมัติเพื่อสร้าง LocaleConfig ไฟล์และเพิ่มภาษาของแอปลงในระบบ การตั้งค่า
  2. หรือหากต้องการเพิ่มเครื่องมือเลือกภาษาในแอป ให้ใช้ ไลบรารี AndroidX และเลือกใช้ การใช้ API เพื่อรองรับการทำงานย้อนหลัง ผ่าน autoStoreLocales
แอปของคุณมีเครื่องมือเลือกภาษาในแอปอยู่แล้ว
  1. เปิดใช้การรองรับภาษาต่อแอปโดยอัตโนมัติเพื่อสร้าง LocaleConfig ไฟล์และเพิ่มภาษาของแอปลงในระบบ การตั้งค่า
  2. ย้ายข้อมูลตรรกะที่กำหนดเองของแอปเพื่อใช้เมธอด API สาธารณะเพื่อให้แน่ใจว่าผู้ใช้จะเห็น ที่สม่ำเสมอ
  3. จัดการกับกรณีมุมต่อไปนี้
    1. โทรหา AppCompatDelegate.setApplicationLocales() ที่ ครั้งแรกที่แอปของคุณเรียกใช้ในอุปกรณ์ที่ใช้ Android 13
    2. โทรหา AppCompatDelegate.setApplicationLocales() ถึง ระบุภาษาที่ผู้ใช้ร้องขออยู่แล้วในระบบ กรณีต่อไปนี้

การตั้งค่าระบบสำหรับผู้ใช้

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

เปิดใช้การสนับสนุนภาษาสำหรับแต่ละแอปโดยอัตโนมัติ

เริ่มต้นด้วย Android Studio Giraffe และ AGP 8.1 สนับสนุน ภาษาของแต่ละแอป ค่ากำหนด โดยอัตโนมัติ AGP จะสร้าง LocaleConfig โดยอิงตามทรัพยากรโปรเจ็กต์ของคุณ และเพิ่มการอ้างอิง ลงในไฟล์ Manifest สุดท้าย เพื่อที่จะได้ไม่ ด้วยตัวเอง AGP ใช้ทรัพยากรในโฟลเดอร์ res ของแอป โมดูลและทรัพยากร Dependency ของโมดูลไลบรารีใดๆ เพื่อกำหนดภาษาที่จะรวมไว้ ในไฟล์ LocaleConfig ซึ่งหมายความว่าหากคุณเพิ่มทรัพยากร ลงในแอป คุณจึงไม่ต้องกังวลเกี่ยวกับการอัปเดต LocaleConfig

โปรดทราบว่าฟีเจอร์ภาษาที่ใช้ในแอปอัตโนมัติรองรับแอปที่ใช้ Android 13 (API ระดับ 33) ขึ้นไป หากต้องการใช้ฟีเจอร์นี้ คุณต้องตั้งค่า compileSdkVersion ถึง 33 ขึ้นไป วิธีกำหนดค่ากำหนดภาษาของแต่ละแอป สำหรับ Android เวอร์ชันก่อนหน้า คุณยังต้อง ใช้ API และเครื่องมือเลือกภาษาในแอป

หากต้องการเปิดใช้การรองรับภาษาของแต่ละแอปโดยอัตโนมัติ ให้ทำตามขั้นตอนต่อไปนี้

  1. หากต้องการเปิดฟีเจอร์นี้ ให้ใช้ generateLocaleConfig ในการตั้งค่าในบล็อก androidResources {} ของระดับโมดูล build.gradle.kts ไฟล์ (build.gradle ไฟล์หากคุณ โดยใช้ Groovy) ฟีเจอร์นี้จะปิดอยู่โดยค่าเริ่มต้น

    Kotlin

        android {
          androidResources {
            generateLocaleConfig = true
          }
        }
        

    ดึงดูด

        android {
          androidResources {
            generateLocaleConfig true
          }
        }
        
  2. ระบุภาษาเริ่มต้น:
    1. ในโฟลเดอร์ res ของโมดูลแอป ให้สร้างไฟล์ใหม่ชื่อ resources.properties
    2. ตั้งค่าเริ่มต้นในไฟล์ resources.properties ภาษาที่มีป้ายกำกับ unqualifiedResLocale ในการจัดรูปแบบ ชื่อภาษา โปรดดูวิธีสร้างชื่อภาษา

AGP จะเพิ่มภาษาเริ่มต้นนี้และภาษา ภูมิภาคอื่น ที่คุณระบุไว้ โดยใช้ไดเรกทอรี values-* ในโฟลเดอร์ res ไปยังส่วน LocaleConfig ที่สร้างขึ้นโดยอัตโนมัติ

วิธีสร้างชื่อภาษา

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

  • ภาษา: ใช้ตัวอักษร 2 หรือ 3 ตัว ISO 639-1 โค้ด
  • สคริปต์ (ไม่บังคับ): ใช้ ISO 15924
  • ภูมิภาค (ไม่บังคับ): ใช้ตัวอักษร 2 ตัว ISO 3166-1-alpha-2 หรือรหัส 3 หลัก UN_M.49 โค้ด

ตัวอย่างเช่น หากภาษาเริ่มต้นเป็นอังกฤษแบบอเมริกัน

unqualifiedResLocale=en-US

ใช้ android:localeConfig เพื่อเพิ่มภาษาที่รองรับในการตั้งค่าระบบ

คุณสามารถตั้งค่าแอปด้วยตนเองเพื่อให้สามารถกำหนดค่าภาษาของแอปได้ใน การตั้งค่าระบบในอุปกรณ์ที่ใช้ Android 13 ขึ้นไป ในการดำเนินการนี้ ให้สร้าง locales_config ไฟล์ XML แล้วเพิ่มไฟล์ Manifest ของแอปโดยใช้ android:localeConfig การละเว้นไฟล์ Manifest android:localeConfig สัญญาณเริ่มต้นที่ให้ผู้ใช้ไม่ควรตั้งค่าภาษาของแอปได้ ไม่อิงตามภาษาของระบบในการตั้งค่าระบบ

วิธีเพิ่มภาษาที่รองรับของแอปลงในการตั้งค่าระบบของผู้ใช้ด้วยตนเอง

  1. สร้างไฟล์ชื่อ res/xml/locales_config.xml และระบุข้อมูลต่อไปนี้ของแอป ภาษาต่างๆ ซึ่งรวมถึง ภาษาทางเลือกสำรอง ซึ่งเป็นภาษาที่ระบุไว้ใน res/values/strings.xml

    ดูข้อกำหนดด้านรูปแบบได้ที่วิธีสร้างชื่อภาษา โปรดดูตัวอย่าง locale_config.xmlไฟล์สำหรับรายการ ภาษาที่ใช้บ่อยที่สุด

    เช่น จัดรูปแบบไฟล์ locales_config.xml ในลักษณะนี้สำหรับแอปที่ สนับสนุนภาษาต่อไปนี้:

    • ภาษาอังกฤษ (สหรัฐอเมริกา) เป็นภาษาทางเลือกที่ดีที่สุด
    • อังกฤษ (สหราชอาณาจักร)
    • ฝรั่งเศส
    • ญี่ปุ่น
    • จีน (ตัวย่อ มาเก๊า)
    • จีน (ตัวเต็ม มาเก๊า)
    <?xml version="1.0" encoding="utf-8"?>
    <locale-config xmlns:android="http://schemas.android.com/apk/res/android">
       <locale android:name="en-US"/>
       <locale android:name="en-GB"/>
       <locale android:name="fr"/>
       <locale android:name="ja"/>
       <locale android:name="zh-Hans-MO"/>
       <locale android:name="zh-Hant-MO"/>
    </locale-config>
    
  2. เพิ่มบรรทัดต่อไปนี้ในไฟล์ Manifest ที่ชี้ไปยังไฟล์ใหม่นี้

    <manifest>
        ...
        <application
            ...
            android:localeConfig="@xml/locales_config">
        </application>
    </manifest>
    

คุณจะอัปเดต localeConfig ของแอปแบบไดนามิกได้โดยใช้ LocaleManager.setOverrideLocaleConfigเพื่อปรับแต่งชุดภาษา ที่แสดงในรายการภาษาของแต่ละแอปในการตั้งค่า Android ซึ่งช่วยให้คุณ ปรับแต่งรายการภาษาตามภูมิภาค ทำการทดสอบ A/B และอัปเดต หากแอปของคุณใช้การพุชการแปลฝั่งเซิร์ฟเวอร์ตามที่แสดงใน ตัวอย่างต่อไปนี้

Kotlin

//For setOverrideLocaleConfig
val localeManager = applicationContext
    .getSystemService(LocaleManager::class.java)
localeManager.overrideLocaleConfig = LocaleConfig(
LocaleList.forLanguageTags("en-US,ja-JP,zh-Hans-SG")
)

//For getOverrideLocaleConfig
// The app calls the API to get the override LocaleConfig
val overrideLocaleConfig = localeManager.overrideLocaleConfig
// If the returned overrideLocaleConfig isn't equal to NULL, then the app calls the API to get the supported Locales
val supportedLocales = overrideLocaleConfig.supportedLocales()

Java

//For setOverrideLocaleConfig
mContext.getSystemService(LocaleManager.class).setOverrideLocaleConfig(new LocaleConfig(LocaleList.forLanguageTags("en-US,ja-JP,zh-Hans-SG")));

//For getOverrideLocaleConfig
// The app calls the API to get the override LocaleConfig
LocaleConfig overrideLocaleConfig = mContext.getSystemService(LocaleManager.class).getOverrideLocaleConfig();
// If the returned overrideLocaleConfig isn't equal to NULL, then the app calls the API to get the supported Locales
LocaleList supportedLocales = overrideLocaleConfig.getSupportedLocales();

นอกจากนี้ IME ยังสามารถใช้ LocaleManager.getApplicationLocales เพื่อขอทราบภาษา UI ของแอปปัจจุบันเพื่ออัปเดตภาษาของแป้นพิมพ์เป็น แสดง:

Kotlin

val currentAppLocales: LocaleList = applicationContext.getSystemService(LocaleManager::class.java).getApplicationLocales(appPackageName)

Java

LocaleList currentAppLocales =
    mContext.getSystemService(LocaleManager.class).getApplicationLocales(appPackageName);

ระบุภาษาที่รองรับใน Gradle

หากไม่มี ให้ระบุภาษาเดียวกันโดยใช้แท็ก resourceConfigurations ในไฟล์ build.gradle ระดับโมดูลของแอป

android {
  ...
  defaultConfig {
    resourceConfigurations += ["en", "en-rGB", "fr", "ja", "b+zh+Hans+MO", "b+zh+Hant+MO"]
  }
}

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

วิธีที่ผู้ใช้เลือกภาษาของแอปในการตั้งค่าระบบ

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

  • เข้าถึงผ่านการตั้งค่าระบบ

    การตั้งค่า > ระบบ > ภาษาและ อินพุต > ภาษาของแอป > (เลือกแอป)

  • เข้าถึงผ่านการตั้งค่าแอป

    การตั้งค่า > แอป > (เลือกแอป) > ภาษา

จัดการเครื่องมือเลือกภาษาในแอป

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

เราขอแนะนำอย่างยิ่งสำหรับความเข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันก่อนหน้า โดยใช้ไลบรารีการสนับสนุนของ AndroidX เมื่อใช้เครื่องมือเลือกภาษาในแอป แต่คุณก็ใช้ API ของเฟรมเวิร์กโดยตรงได้เช่นกัน หากจำเป็น

ใช้งานโดยใช้ไลบรารีการสนับสนุนของ AndroidX

ใช้setApplicationLocales()และgetApplicationLocales() ใน Appcompat 1.6.0 หรือสูงกว่า โปรดทราบว่า API ที่เข้ากันได้แบบย้อนหลังจะทำงานร่วมกับบริบท AppCompatActivity ไม่ใช่บริบทแอปพลิเคชันสำหรับ Android 12 (API ระดับ 32) และรุ่นก่อนหน้า

เช่น หากต้องการตั้งค่าภาษาที่ผู้ใช้ต้องการ คุณจะต้องขอให้ผู้ใช้ดำเนินการ เลือกภาษาในเครื่องมือเลือกภาษา จากนั้นตั้งค่าในระบบ

Kotlin

val appLocale: LocaleListCompat = LocaleListCompat.forLanguageTags("xx-YY")
// Call this on the main thread as it may require Activity.restart()
AppCompatDelegate.setApplicationLocales(appLocale)

Java

LocaleListCompat appLocale = LocaleListCompat.forLanguageTags("xx-YY");
// Call this on the main thread as it may require Activity.restart()
AppCompatDelegate.setApplicationLocales(appLocale);

โปรดทราบว่าการเรียกใช้ setApplicationLocales() จะสร้าง Activity ของคุณอีกครั้ง ยกเว้น จัดการการกำหนดค่าภาษาสำหรับแอปของคุณ เปลี่ยนแปลงไปเอง

ใช้ AppCompatDelegate.getApplicationLocales() เพื่อเรียกข้อมูลภาษาที่ผู้ใช้ต้องการ ผู้ใช้อาจเลือกภาษาของแอปจากการตั้งค่าระบบหรือจากเครื่องมือเลือกภาษาในแอป

รองรับ Android 12 และต่ำกว่า

หากต้องการรองรับอุปกรณ์ที่ใช้ Android 12 (API ระดับ 32) และต่ำกว่า โปรดบอก AndroidX จะจัดการพื้นที่เก็บข้อมูลภาษาโดยตั้งค่า autoStoreLocales เป็น true และ android:enabled ไปยัง false ในรายการไฟล์ Manifest สำหรับแอปของคุณ AppLocalesMetadataHolderService ตามที่แสดงในรหัสต่อไปนี้ snippet:

<application
  ...
  <service
    android:name="androidx.appcompat.app.AppLocalesMetadataHolderService"
    android:enabled="false"
    android:exported="false">
    <meta-data
      android:name="autoStoreLocales"
      android:value="true" />
  </service>
  ...
</application>

โปรดทราบว่าการตั้งค่า autoStoreLocales เป็น true จะทําให้การอ่านที่ถูกบล็อก ในเทรดหลัก และอาจทำให้ StrictMode diskRead และ การละเมิด diskWrite รายการหากคุณกำลังบันทึกการละเมิดชุดข้อความ โปรดดู AppCompatDelegate.setApplicationLocales() เพื่อดูข้อมูลเพิ่มเติม

การจัดการพื้นที่เก็บข้อมูลที่กำหนดเอง

การละเว้นรายการไฟล์ Manifest หรือการตั้งค่าสัญญาณ autoStoreLocales เป็น false คุณกำลังจัดการพื้นที่เก็บข้อมูลของคุณเอง ในกรณีนี้ คุณต้องใส่ฟิลด์ ภาษาที่จัดเก็บไว้ก่อน onCreate ในวงจรกิจกรรมและการเรียกเกตไปยัง AppCompatDelegate.setApplicationLocales() ใน Android 12 (API ระดับ 32) หรือ ด้านล่าง

หากแอปมีตำแหน่งพื้นที่เก็บข้อมูลตามภาษาที่กำหนดเอง เราขอแนะนำให้ใช้แบบครั้งเดียว ส่งต่อระหว่างโซลูชันพื้นที่เก็บข้อมูลตามภาษาที่กำหนดเองกับ autoStoreLocales ผู้ใช้ยังคงเพลิดเพลินกับแอปของคุณในภาษาที่ต้องการต่อไปได้ โดยเฉพาะอย่างยิ่ง มีผลในกรณีที่แอปทำงานเป็นครั้งแรกหลังจากอัปเกรดอุปกรณ์เป็น Android 13 ในกรณีนี้ คุณสามารถระบุภาษาที่มีอยู่เดิมซึ่งผู้ใช้ร้องขอได้ โดยเรียกข้อมูลภาษาจากพื้นที่เก็บข้อมูลที่กำหนดเอง และส่งภาษาไปยัง AppCompatDelegate.setApplicationLocales()

ใช้งานโดยใช้ API เฟรมเวิร์กของ Android

แม้ว่าเราจะแนะนำให้คุณใช้ไลบรารีการสนับสนุนของ AndroidX เพื่อทำสิ่งต่อไปนี้ ใช้เครื่องมือเลือกภาษาในแอป คุณยังสามารถใช้ setApplicationLocales() และ getApplicationLocales() ในเฟรมเวิร์กของ Android สำหรับอุปกรณ์ที่ใช้ Android 13

เช่น หากต้องการตั้งค่าภาษาที่ผู้ใช้ต้องการ คุณจะต้องขอให้ผู้ใช้ดำเนินการ เลือกภาษาในเครื่องมือเลือกภาษา จากนั้นตั้งค่าในระบบ

// 1. Inside an activity, in-app language picker gets an input locale "xx-YY"
// 2. App calls the API to set its locale
mContext.getSystemService(LocaleManager.class
    ).setApplicationLocales(new LocaleList(Locale.forLanguageTag("xx-YY")));
// 3. The system updates the locale and restarts the app, including any configuration updates
// 4. The app is now displayed in "xx-YY" language

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

// 1. App calls the API to get the preferred locale
LocaleList currentAppLocales =
    mContext.getSystemService(LocaleManager.class).getApplicationLocales();
// 2. App uses the returned LocaleList to display languages to the user

แนวทางปฏิบัติแนะนำเพิ่มเติม

โปรดสังเกตแนวทางปฏิบัติแนะนำต่อไปนี้

ลองใช้ภาษาเมื่อเรียกใช้ Intent ในแอปอื่น

Intent ที่เน้นภาษาอาจช่วยให้คุณระบุภาษาที่ต้องการ ที่เรียกใช้แอป ตัวอย่างหนึ่งคือ EXTRA_LANGUAGE จาก Speech Recognizer API

ลองใช้ส่วนหัว "ยอมรับภาษา" สำหรับแท็บที่กำหนดเองของ Chrome

ให้พิจารณาเพิ่มส่วนหัวภาษาที่ยอมรับ ผ่าน Browser.EXTRA_HEADERS เพื่อเปิดหน้าเว็บในภาษาของแอปเมื่อเรียกใช้แท็บที่กำหนดเองของ Chrome

หากคุณนำค่ากำหนดภาษาของแต่ละแอปออกในการตั้งค่าระบบ ให้รีเซ็ตภาษาของแอปเป็นภาษาของระบบ

หากคุณนำค่ากำหนดภาษาของแอปออกจากการตั้งค่าระบบ (โดยการนำ android:localeConfig จาก AndroidManifest.xml ของแอป) ผู้ใช้จะดำเนินการไม่ได้ รีเซ็ตภาษาของแอปกลับเป็นค่าเริ่มต้นของระบบได้อย่างง่ายดาย

ด้วยเหตุนี้ หากคุณนำ android:localeConfig ออก โปรดพิจารณารีเซ็ต ภาษาของแอปพลิเคชันเป็นภาษาของระบบโดยใช้ LocaleListCompat.getEmptyLocaleList() หรือ LocaleList.getEmptyLocaleList() ตามที่เห็นในข้อมูลโค้ดต่อไปนี้

Kotlin

// Use the AndroidX APIs to reset to the system locale for backward and forward compatibility
AppCompatDelegate.setApplicationLocales(
  LocaleListCompat.getEmptyLocaleList()
)

// Or use the Framework APIs for Android 13 and above to reset to the system locale
val context = LocalContext.current
context.getSystemService(LocaleManager::class.java)
  .applicationLocales = LocaleList.getEmptyLocaleList()

Java

// Use the AndroidX APIs to reset to the system locale for backward and forward compatibility
AppCompatDelegate.setApplicationLocales(
  LocaleListCompat.getEmptyLocaleList()
);

// Or use the Framework APIs for Android 13 and above to reset to the system locale
mContext.getSystemService(LocaleManager.class)
  .setApplicationLocales(LocaleList.getEmptyLocaleList());

แหล่งข้อมูลเพิ่มเติม

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

ตัวอย่างไฟล์ locale_config.xml

โดยค่าเริ่มต้น Android จะมีการแปลระดับระบบใน Android Open โปรเจ็กต์ต้นทาง (AOSP) สำหรับชุดภาษามาตรฐานที่ใช้กันโดยทั่วไป ไฟล์ locale_config.xml ตัวอย่างที่อยู่ในส่วนนี้จะแสดง รูปแบบที่แนะนำสำหรับแต่ละภาษาเหล่านี้ อ้างอิงไฟล์ตัวอย่างนี้เพื่อช่วยเหลือ คุณสร้างไฟล์ locale_config.xml ของคุณเองสำหรับชุดภาษาที่ ที่แอปของคุณรองรับ

<?xml version="1.0" encoding="utf-8"?>
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
   <locale android:name="af"/> <!-- Afrikaans -->
   <locale android:name="am"/> <!-- Amharic -->
   <locale android:name="ar"/> <!-- Arabic -->
   <locale android:name="as"/> <!-- Assamese -->
   <locale android:name="az"/> <!-- Azerbaijani -->
   <locale android:name="be"/> <!-- Belarusian -->
   <locale android:name="bg"/> <!-- Bulgarian -->
   <locale android:name="bn"/> <!-- Bengali -->
   <locale android:name="bs"/> <!-- Bosnian -->
   <locale android:name="ca"/> <!-- Catalan -->
   <locale android:name="cs"/> <!-- Czech -->
   <locale android:name="da"/> <!-- Danish -->
   <locale android:name="de"/> <!-- German -->
   <locale android:name="el"/> <!-- Greek -->
   <locale android:name="en-AU"/> <!-- English (Australia) -->
   <locale android:name="en-CA"/> <!-- English (Canada) -->
   <locale android:name="en-GB"/> <!-- English (United Kingdom) -->
   <locale android:name="en-IN"/> <!-- English (India) -->
   <locale android:name="en-US"/> <!-- English (United States) -->
   <locale android:name="es"/> <!-- Spanish (Spain) -->
   <locale android:name="es-US"/> <!-- Spanish (United States) -->
   <locale android:name="et"/> <!-- Estonian -->
   <locale android:name="eu"/> <!-- Basque -->
   <locale android:name="fa"/> <!-- Farsi -->
   <locale android:name="fi"/> <!-- Finnish -->
   <locale android:name="fil"/> <!-- Filipino -->
   <locale android:name="fr"/> <!-- French (France) -->
   <locale android:name="fr-CA"/> <!-- French (Canada) -->
   <locale android:name="gl"/> <!-- Galician -->
   <locale android:name="gu"/> <!-- Gujarati -->
   <locale android:name="hi"/> <!-- Hindi -->
   <locale android:name="hr"/> <!-- Croatian -->
   <locale android:name="hu"/> <!-- Hungarian -->
   <locale android:name="hy"/> <!-- Armenian -->
   <locale android:name="in"/> <!-- Indonesian -->
   <locale android:name="is"/> <!-- Icelandic -->
   <locale android:name="it"/> <!-- Italian -->
   <locale android:name="iw"/> <!-- Hebrew -->
   <locale android:name="ja"/> <!-- Japanese -->
   <locale android:name="ka"/> <!-- Georgian -->
   <locale android:name="kk"/> <!-- Kazakh -->
   <locale android:name="km"/> <!-- Khmer -->
   <locale android:name="kn"/> <!-- Kannada -->
   <locale android:name="ko"/> <!-- Korean -->
   <locale android:name="ky"/> <!-- Kyrgyz -->
   <locale android:name="lo"/> <!-- Lao -->
   <locale android:name="lt"/> <!-- Lithuanian -->
   <locale android:name="lv"/> <!-- Latvian -->
   <locale android:name="mk"/> <!-- Macedonian -->
   <locale android:name="ml"/> <!-- Malayalam -->
   <locale android:name="mn"/> <!-- Mongolian -->
   <locale android:name="mr"/> <!-- Marathi -->
   <locale android:name="ms"/> <!-- Malay -->
   <locale android:name="my"/> <!-- Burmese -->
   <locale android:name="nb"/> <!-- Norwegian -->
   <locale android:name="ne"/> <!-- Nepali -->
   <locale android:name="nl"/> <!-- Dutch -->
   <locale android:name="or"/> <!-- Odia -->
   <locale android:name="pa"/> <!-- Punjabi -->
   <locale android:name="pl"/> <!-- Polish -->
   <locale android:name="pt-BR"/> <!-- Portuguese (Brazil) -->
   <locale android:name="pt-PT"/> <!-- Portuguese (Portugal) -->
   <locale android:name="ro"/> <!-- Romanian -->
   <locale android:name="ru"/> <!-- Russian -->
   <locale android:name="si"/> <!-- Sinhala -->
   <locale android:name="sk"/> <!-- Slovak -->
   <locale android:name="sl"/> <!-- Slovenian -->
   <locale android:name="sq"/> <!-- Albanian -->
   <locale android:name="sr"/> <!-- Serbian (Cyrillic) -->
   <locale android:name="sr-Latn"/> <!-- Serbian (Latin) -->
   <locale android:name="sv"/> <!-- Swedish -->
   <locale android:name="sw"/> <!-- Swahili -->
   <locale android:name="ta"/> <!-- Tamil -->
   <locale android:name="te"/> <!-- Telugu -->
   <locale android:name="th"/> <!-- Thai -->
   <locale android:name="tr"/> <!-- Turkish -->
   <locale android:name="uk"/> <!-- Ukrainian -->
   <locale android:name="ur"/> <!-- Urdu -->
   <locale android:name="uz"/> <!-- Uzbek -->
   <locale android:name="vi"/> <!-- Vietnamese -->
   <locale android:name="zh-Hans"/> <!-- Chinese (Simplified) -->
   <locale android:name="zh-Hant"/> <!-- Chinese (Traditional) -->
   <locale android:name="zu"/> <!-- Zulu -->
</locale-config>