ในหลายกรณี ผู้ใช้ที่พูดได้หลายภาษาจะตั้งค่าภาษาของระบบเป็นภาษาเดียว เช่น ภาษาอังกฤษ แต่ต้องการเลือกภาษาอื่นๆ สำหรับแอปบางแอป เช่น ดัตช์ จีน หรือฮินดี Android 13 ขอแนะนำฟีเจอร์ต่อไปนี้สำหรับแอปที่รองรับหลายภาษา เพื่อช่วยให้แอปมอบประสบการณ์การใช้งานที่ดียิ่งขึ้นแก่ผู้ใช้เหล่านี้
การตั้งค่าระบบ: ตำแหน่งส่วนกลางที่ผู้ใช้สามารถเลือก ภาษาที่ต้องการสำหรับแต่ละแอป
คุณกำหนดค่าแอปให้สร้างไฟล์ที่จำเป็นโดยอัตโนมัติเพื่อรองรับค่ากำหนดภาษาที่ใช้ในแอปและแสดงในการตั้งค่าระบบได้ ดูข้อมูลเพิ่มเติมได้ที่วิธีการเปิดใช้การรองรับภาษาต่อแอปโดยอัตโนมัติ
API เพิ่มเติม: API สาธารณะเหล่านี้ เช่น เมธอด
setApplicationLocalesและgetApplicationLocalesในLocaleManagerช่วยให้แอปตั้งค่าภาษาที่แตกต่างจากภาษาของระบบ ขณะรันไทม์ได้API เหล่านี้จะซิงค์กับการตั้งค่าระบบโดยอัตโนมัติ ดังนั้นแอปที่ใช้ API เหล่านี้เพื่อสร้างตัวเลือกภาษาในแอปที่กำหนดเองจะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่สอดคล้องกัน ไม่ว่าผู้ใช้จะเลือกค่ากำหนดภาษาจากที่ใดก็ตาม นอกจากนี้ API สาธารณะยังช่วยลดปริมาณโค้ด Boilerplate รองรับ APK แยก และรองรับการสำรองข้อมูลอัตโนมัติสำหรับแอปเพื่อจัดเก็บการตั้งค่าภาษาของผู้ใช้ระดับแอป
AndroidX ยังมี API ที่เทียบเท่ากันเพื่อความเข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันก่อนหน้า อย่างไรก็ตาม API ที่เข้ากันได้แบบย้อนหลังจะทำงานกับบริบท AppCompatActivity ไม่ใช่บริบทแอปพลิเคชันสำหรับ Android 12 (API ระดับ 32) และเวอร์ชันก่อนหน้า เข้าถึง API ที่เข้ากันได้แบบย้อนหลังด้วย Appcompat 1.6.0 ขึ้นไป
ภาพรวมของการติดตั้งใช้งานฟีเจอร์นี้
ตารางต่อไปนี้แสดงการติดตั้งใช้งานที่แนะนำตามกรณีการใช้งานต่างๆ
| กรณีการใช้งาน | การติดตั้งใช้งานที่แนะนำ |
|---|---|
| แอปของคุณไม่มีเครื่องมือเลือกภาษาในแอป |
|
| แอปของคุณมีเครื่องมือเลือกภาษาในแอปอยู่แล้ว |
|
การตั้งค่าระบบสำหรับผู้ใช้
ตั้งแต่ Android 13 เป็นต้นไป Android จะมีตำแหน่งส่วนกลางในการตั้งค่าระบบสำหรับการตั้งค่าค่ากำหนดภาษาที่ใช้ในแอป หากต้องการให้มั่นใจว่าภาษาของแอป จะกำหนดค่าได้ในการตั้งค่าระบบในอุปกรณ์ที่ใช้ Android 13 ขึ้นไป ให้เปิดใช้การรองรับภาษาต่อแอปโดยอัตโนมัติ (แนะนํา) หรือกําหนดค่า การรองรับด้วยตนเอง
เปิดใช้การรองรับภาษาในแต่ละแอปโดยอัตโนมัติ
วิธีนี้เป็นวิธีที่แนะนำในการเพิ่มการรองรับภาษาต่อแอปในแอปของคุณ เนื่องจากไม่จำเป็นต้องแก้ไข XML
ตั้งแต่ Android Studio Giraffe และ AGP 8.1 เป็นต้นไป คุณสามารถกำหนดค่าแอปให้รองรับค่ากำหนดภาษาที่ใช้ในแอปได้โดยอัตโนมัติ AGP จะสร้างไฟล์ LocaleConfig และเพิ่มการอ้างอิงไปยังไฟล์ดังกล่าวในไฟล์ Manifest สุดท้ายตามทรัพยากรของโปรเจ็กต์ เพื่อให้คุณไม่ต้องดำเนินการด้วยตนเองอีกต่อไป AGP ใช้
ทรัพยากรในresโฟลเดอร์ของโมดูลแอปและทรัพยากร Dependency ของโมดูลไลบรารี
เพื่อกำหนดภาษาที่จะรวมไว้ในไฟล์ LocaleConfig
ซึ่งหมายความว่าหากคุณเพิ่มทรัพยากรสำหรับภาษาใหม่ลงในแอป คุณก็ไม่
ต้องกังวลเกี่ยวกับการอัปเดตไฟล์ LocaleConfig
โปรดทราบว่าฟีเจอร์ภาษาต่อแอปอัตโนมัติรองรับแอปที่ใช้ Android 13 (ระดับ API 33) ขึ้นไป หากต้องการใช้ฟีเจอร์นี้ คุณต้องตั้งค่า
compileSdkVersion เป็น 33 ขึ้นไป หากต้องการกำหนดค่าค่ากำหนดภาษาที่ใช้ในแอป
สำหรับ Android เวอร์ชันก่อนหน้า คุณยังคงต้องใช้ API และตัวเลือกภาษาในแอป
หากต้องการเปิดใช้การรองรับภาษาต่อแอปโดยอัตโนมัติ ให้ทำตามขั้นตอนต่อไปนี้
- หากต้องการเปิดฟีเจอร์นี้ ให้ใช้
generateLocaleConfigการตั้งค่าในบล็อกandroidResources {}ของไฟล์build.gradle.ktsระดับโมดูล (ไฟล์build.gradleหากคุณใช้ Groovy) ฟีเจอร์นี้จะปิดอยู่โดยค่าเริ่มต้น
Kotlin
android {
androidResources {
generateLocaleConfig = true
}
}
ดึงดูด
android {
androidResources {
generateLocaleConfig true
}
}
- ระบุภาษาเริ่มต้น
- สร้างไฟล์ใหม่ชื่อ
resources.propertiesในโฟลเดอร์resของโมดูลแอป - ในไฟล์
resources.propertiesให้ตั้งค่าเริ่มต้น ของภาษาด้วยป้ายกำกับunqualifiedResLocaleดูวิธีจัดรูปแบบชื่อภาษาได้ที่วิธีสร้างชื่อภาษา
- สร้างไฟล์ใหม่ชื่อ
AGP จะเพิ่มภาษาเริ่มต้นนี้และภาษาอื่นที่คุณระบุ
โดยใช้values-*ไดเรกทอรีในโฟลเดอร์resลงในไฟล์LocaleConfigที่สร้างขึ้นโดยอัตโนมัติ
วิธีตั้งชื่อภาษา
หากต้องการสร้างชื่อภาษา ให้รวมรหัสภาษาเข้ากับรหัสสคริปต์และรหัสภูมิภาค (ไม่บังคับ) โดยคั่นแต่ละรหัสด้วยเครื่องหมายขีดกลาง ดังนี้
- ภาษา: ใช้รหัส ISO 639-2 แบบ 2 หรือ 3 ตัวอักษร
- สคริปต์ (ไม่บังคับ): ใช้รหัส ISO 15924
- ภูมิภาค (ไม่บังคับ): ใช้รหัส ISO 3166-1-alpha-2 แบบ 2 ตัวอักษร หรือรหัส UN_M.49 แบบ 3 หลัก
เช่น หากภาษาเริ่มต้นของคุณคือภาษาอังกฤษแบบอเมริกัน
unqualifiedResLocale=en-US
ใช้ android:localeConfig เพื่อเพิ่มภาษาที่รองรับลงในการตั้งค่าระบบ
คุณตั้งค่าแอปด้วยตนเองเพื่อให้มั่นใจว่าภาษาของแอปจะกำหนดค่าได้ในการตั้งค่าระบบในอุปกรณ์ที่ใช้ Android 13 ขึ้นไป โดยสร้าง
locale_config ไฟล์ XML แล้วเพิ่มลงในไฟล์ Manifest ของแอปโดยใช้แอตทริบิวต์
android:localeConfig การละเว้นรายการandroid:localeConfigในไฟล์ Manifest
จะเป็นการส่งสัญญาณว่าผู้ใช้ไม่ควรตั้งค่าภาษาของแอป
โดยไม่ขึ้นอยู่กับภาษาของระบบในการตั้งค่าระบบ
วิธีเพิ่มภาษาที่แอปของคุณรองรับลงในการตั้งค่าระบบของผู้ใช้ด้วยตนเอง
สร้างไฟล์ชื่อ
res/xml/locale_config.xmlและระบุภาษาของแอป รวมถึงภาษาสำรองสุดท้ายของแอป ซึ่งเป็นภาษาที่ระบุในres/values/strings.xmlดูข้อกำหนดรูปแบบได้ที่วิธีสร้างชื่อภาษา ดูรายการภาษาที่ใช้กันโดยทั่วไปได้ใน ไฟล์
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="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>ในไฟล์ Manifest ให้เพิ่มบรรทัดที่ชี้ไปยังไฟล์ใหม่นี้
<manifest> ... <application ... android:localeConfig="@xml/locale_config"> </application> </manifest>
คุณอัปเดต localeConfig ของแอปแบบไดนามิกด้วย
LocaleManager.setOverrideLocaleConfig เพื่อปรับแต่งชุดภาษา
ที่แสดงในรายการภาษาต่อแอปในการตั้งค่า Android ได้ ซึ่งจะช่วยให้คุณ
ปรับแต่งรายการภาษาตามภูมิภาค เรียกใช้การทดสอบ A/B และระบุภาษาที่อัปเดตแล้วได้
หากแอปใช้การแจ้งเตือนการแปลฝั่งเซิร์ฟเวอร์ ดังที่แสดงใน
ตัวอย่างต่อไปนี้
//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()
นอกจากนี้ ตอนนี้ IME ยังใช้ LocaleManager.getApplicationLocales เพื่อ ทราบภาษา UI ของแอปปัจจุบันเพื่ออัปเดตภาษาแป้นพิมพ์ได้ดังที่แสดง
val currentAppLocales: LocaleList = applicationContext.getSystemService(LocaleManager::class.java).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 สาธารณะสำหรับเครื่องมือเลือกภาษาในแอป การตั้งค่าระบบของอุปกรณ์จะได้รับการอัปเดตโดยอัตโนมัติให้ตรงกับ ภาษาที่ผู้ใช้เลือกผ่านประสบการณ์ในแอป
การติดตั้งใช้งานโดยใช้ Jetpack Compose
สำหรับแอปที่สร้างด้วย Jetpack Compose ทั้งหมด ระบบจะจัดการการอัปเดต UI โดยอัตโนมัติเมื่อภาษาของแอปเปลี่ยนไป
การเรียก API เพื่อตั้งค่าภาษาใหม่
จะทําให้เกิดการเปลี่ยนแปลงการกําหนดค่า Compose จะตอบสนองด้วยการประกอบ UI ใหม่และ
แก้ไขการเรียก stringResource โดยอัตโนมัติโดยใช้ภาษาใหม่
เพื่อความเข้ากันได้แบบย้อนหลังกับ Android 12 (API ระดับ 32) และต่ำกว่า เราขอแนะนำอย่างยิ่งให้ใช้ไลบรารีการสนับสนุน AndroidX (AppCompatDelegate) เมื่อใช้เครื่องมือเลือกภาษาในแอป หากใช้วิธีนี้ กิจกรรมที่โฮสต์ UI ของ Compose จะต้องขยาย AppCompatActivity อย่างไรก็ตาม คุณยังใช้ API ของเฟรมเวิร์กโดยตรงได้ด้วยหากต้องการ
ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างวิธีอ่านภาษาปัจจุบันของแอป และตั้งค่าภาษาใหม่ภายในฟังก์ชันที่ประกอบกันได้
import androidx.appcompat.app.AppCompatDelegate
import androidx.compose.material3.Button
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.core.os.LocaleListCompat
@Composable
fun LanguageSelector() {
// Retrieve the currently configured app locale.
// If no app-specific locale is set, LocaleListCompat.get(0) returns null,
// so we safely fall back to a default (e.g., "en").
val appLocales = AppCompatDelegate.getApplicationLocales()
val currentLocaleTag = appLocales.get(0)?.toLanguageTag() ?: "en"
// Example UI: A button to toggle between English and Spanish
Button(
onClick = {
val newLanguageTag = if (currentLocaleTag == "en") "es" else "en"
val localeList = LocaleListCompat.forLanguageTags(newLanguageTag)
// Setting the locale re-creates the Activity by default,
// which automatically applies the new configuration to Compose.
AppCompatDelegate.setApplicationLocales(localeList)
}
) {
Text(
text = if (currentLocaleTag == "en") "Switch to Spanish" else "Switch to English"
)
}
}
หากต้องการตั้งค่าภาษาที่ผู้ใช้ต้องการ คุณจะต้องขอให้ผู้ใช้เลือกภาษาใน เครื่องมือเลือกภาษา แล้วตั้งค่าดังกล่าวในระบบ
val appLocale: LocaleListCompat = 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 ของแอป ดังที่แสดงในข้อมูลโค้ดต่อไปนี้
<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 จะทำให้เกิดการอ่าน Blocking ในเทรดหลัก และอาจทำให้เกิด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 ได้ด้วย
ข้อมูลโค้ดต่อไปนี้แสดงวิธีตั้งค่าและรับภาษาที่ผู้ใช้ต้องการโดยใช้บริการของระบบ LocaleManager
import android.app.LocaleManager
import android.content.Context
import android.os.Build
import android.os.LocaleList
import androidx.annotation.RequiresApi
import java.util.Locale
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
fun setAppLanguage(context: Context, languageTag: String) {
// 1. Retrieve the system service
val localeManager = context.getSystemService(LocaleManager::class.java)
// 2. Create a LocaleList from the language tag (e.g., "es-ES" or "ja")
val localeList = LocaleList(Locale.forLanguageTag(languageTag))
// 3. Set the locale. The system automatically updates the locale and
// restarts the app, including any necessary configuration updates.
localeManager.applicationLocales = localeList
}
@RequiresApi(Build.VERSION_CODES.TIRAMISU)
fun getAppLanguage(context: Context): String {
val localeManager = context.getSystemService(LocaleManager::class.java)
val currentLocales = localeManager.applicationLocales
// Return the primary app locale, or fall back to the system default
return if (!currentLocales.isEmpty) {
currentLocales.get(0).toLanguageTag()
} else {
Locale.getDefault().toLanguageTag()
}
}
แนวทางปฏิบัติแนะนำเพิ่มเติม
โปรดทราบแนวทางปฏิบัติแนะนำต่อไปนี้
พิจารณาภาษาเมื่อเรียกใช้ Intent ในแอปอื่น
เจตนาที่เน้นภาษาอาจช่วยให้คุณระบุภาษาที่ต้องการให้แอปที่เรียกใช้เป็นภาษาดังกล่าวได้
ตัวอย่างหนึ่งคือฟีเจอร์ EXTRA_LANGUAGE จาก Speech Recognizer API
พิจารณาเฮดเดอร์ Accept-Language สำหรับแท็บที่กำหนดเองของ Chrome
พิจารณาเพิ่มส่วนหัว Accept-Language ผ่าน
Browser.EXTRA_HEADERS เพื่อเปิดหน้าเว็บในภาษาของแอปเมื่อ
เรียกใช้ Chrome Custom Tab
หากนำค่ากำหนดภาษาที่ใช้ในแอปออกในการตั้งค่าระบบ ให้รีเซ็ตภาษาของแอปเป็นภาษาของระบบ
หากนำค่ากำหนดภาษาของแอปออกจากการตั้งค่าระบบ (โดยนำ android:localeConfig ออกจาก AndroidManifest.xml ของแอป) ผู้ใช้จะรีเซ็ตภาษาของแอปกลับเป็นค่าเริ่มต้นของระบบได้ยาก
ด้วยเหตุนี้ หากคุณนำ android:localeConfig ออก ให้ลองรีเซ็ตภาษาของแอปเป็นภาษาของระบบโดยใช้
LocaleListCompat.getEmptyLocaleList หรือ
LocaleList.getEmptyLocaleList ตามที่แสดงในข้อมูลโค้ดต่อไปนี้
// 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()
ตัวอย่างไฟล์ locale_config.xml
โดยค่าเริ่มต้น Android จะรวมการแปลระดับระบบไว้ในโครงการโอเพนซอร์ส Android (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>
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมได้ที่ตัวอย่างโค้ด บทความในบล็อก และวิดีโอ
- บล็อกค่ากำหนดภาษาที่ใช้ในแอป ตอนที่ 1
- บล็อกค่ากำหนดภาษาที่ใช้ในแอป ตอนที่ 2
- วิดีโอการสร้างแอปสำหรับโลกที่มีหลายภาษา
- ทรัพยากรใน Compose