
در بسیاری از موارد، کاربران چندزبانه زبان سیستم خود را روی یک زبان - مانند انگلیسی - تنظیم میکنند، اما میخواهند زبانهای دیگری را برای برنامههای خاص، مانند هلندی، چینی یا هندی، انتخاب کنند. برای کمک به برنامهها در ارائه تجربه بهتر برای این کاربران، اندروید ۱۳ ویژگیهای زیر را برای برنامههایی که از چندین زبان پشتیبانی میکنند، معرفی میکند:
تنظیمات سیستم : یک مکان متمرکز که کاربران میتوانند در آن زبان دلخواه خود را برای هر برنامه انتخاب کنند.
میتوانید برنامه خود را طوری پیکربندی کنید که بهطور خودکار فایلهای مورد نیاز برای پشتیبانی از تنظیمات زبان هر برنامه را تولید کرده و در تنظیمات سیستم نمایش دهد. برای کسب اطلاعات بیشتر، به دستورالعملهای فعالسازی پشتیبانی خودکار از زبان هر برنامه مراجعه کنید.
APIهای اضافی : این APIهای عمومی، مانند متدهای
setApplicationLocalesوgetApplicationLocalesدرLocaleManager، به برنامهها اجازه میدهند در زمان اجرا، زبانی متفاوت از زبان سیستم تنظیم کنند.این APIها به طور خودکار با تنظیمات سیستم همگامسازی میشوند؛ بنابراین، برنامههایی که از این APIها برای ایجاد انتخابگرهای زبان سفارشی درون برنامهای استفاده میکنند، تضمین میکنند که کاربرانشان صرف نظر از محل انتخاب تنظیمات زبان، تجربه کاربری ثابتی داشته باشند. APIهای عمومی همچنین به شما کمک میکنند تا میزان کدهای تکراری را کاهش دهید، از APKهای تقسیمشده پشتیبانی میکنند و از پشتیبانگیری خودکار برای برنامهها برای ذخیره تنظیمات زبان کاربر در سطح برنامه پشتیبانی میکنند.
برای سازگاری با نسخههای قبلی اندروید، APIهای معادل در AndroidX نیز موجود هستند. با این حال، APIهای سازگار با نسخههای قبلی برای اندروید ۱۲ (سطح API ۳۲) و قبل از آن با زمینه AppCompatActivity کار میکنند، نه با زمینه برنامه. با Appcompat 1.6.0 یا بالاتر به APIهای سازگار با نسخههای قبلی دسترسی پیدا کنید.
مروری بر پیادهسازی این قابلیت
جدول زیر پیادهسازیهای پیشنهادی را بر اساس موارد استفاده مختلف نشان میدهد.
| مورد استفاده | پیادهسازی توصیهشده |
|---|---|
| برنامه شما انتخابگر زبان درون برنامهای ندارد |
|
| برنامه شما از قبل دارای انتخابگر زبان درون برنامهای است |
|
تنظیمات سیستم برای کاربران
از اندروید ۱۳ به بعد، اندروید یک مکان متمرکز در تنظیمات سیستم برای تنظیم تنظیمات زبان هر برنامه در نظر گرفته است. برای اطمینان از اینکه زبانهای برنامه شما در تنظیمات سیستم در دستگاههایی که اندروید ۱۳ یا بالاتر دارند قابل تنظیم هستند، پشتیبانی خودکار زبان هر برنامه (توصیه میشود) را فعال کنید یا پشتیبانی را به صورت دستی پیکربندی کنید .
فعال کردن پشتیبانی خودکار از زبانهای مختلف برای هر برنامه
این روش پیشنهادی برای افزودن پشتیبانی زبان به ازای هر برنامه به برنامههای شماست، زیرا نیازی به تغییرات XML ندارد.
با شروع از Android Studio Giraffe و AGP 8.1، میتوانید برنامه خود را طوری پیکربندی کنید که به طور خودکار از تنظیمات زبان هر برنامه پشتیبانی کند. بر اساس منابع پروژه شما، AGP فایل LocaleConfig را تولید میکند و در فایل مانیفست نهایی به آن ارجاع میدهد، بنابراین دیگر لازم نیست این کار را به صورت دستی انجام دهید. AGP از منابع موجود در پوشههای res ماژولهای برنامه شما و هرگونه وابستگی ماژول کتابخانهای برای تعیین زبانهایی که باید در فایل LocaleConfig گنجانده شوند، استفاده میکند. این بدان معناست که اگر منابعی برای یک زبان جدید به برنامه خود اضافه کنید، لازم نیست نگران بهروزرسانی فایل LocaleConfig باشید.
توجه داشته باشید که ویژگی خودکار زبان برای هر برنامه از برنامههایی پشتیبانی میکند که اندروید ۱۳ (سطح API ۳۳) یا بالاتر را اجرا میکنند. برای استفاده از این ویژگی، باید compileSdkVersion روی ۳۳ یا بالاتر تنظیم کنید. برای پیکربندی تنظیمات زبان برای هر برنامه برای نسخههای قبلی اندروید، همچنان باید از APIها و انتخابگرهای زبان درون برنامهای استفاده کنید .
برای فعال کردن پشتیبانی خودکار زبان برای هر برنامه، این مراحل را دنبال کنید:
- برای فعال کردن این ویژگی، از تنظیم
generateLocaleConfigدر بلوکandroidResources {}از فایلbuild.gradle.ktsدر سطح ماژول (اگر از Groovy استفاده میکنید، فایلbuild.gradle) استفاده کنید. این ویژگی به طور پیشفرض غیرفعال است.
کاتلین
android {
androidResources {
generateLocaleConfig = true
}
}
گرووی
android {
androidResources {
generateLocaleConfig true
}
}
- یک زبان محلی پیشفرض مشخص کنید:
- در پوشه
resماژول app، یک فایل جدید به نامresources.propertiesایجاد کنید. - در فایل
resources.properties، زبان پیشفرض را با برچسبunqualifiedResLocaleتنظیم کنید. برای قالببندی نامهای زبان، به بخش «نحوه تشکیل نامهای زبان» مراجعه کنید.
- در پوشه
AGP این زبان پیشفرض و هر زبان جایگزینی که شما مشخص کردهاید را با استفاده از دایرکتوریهای values-* در پوشه res به فایل LocaleConfig که به صورت خودکار تولید شده است، اضافه میکند.
نحوه تشکیل نامهای محلی
برای تشکیل نامهای محلی، کد زبان را با کدهای اختیاری خط و منطقه ترکیب کنید و هر کدام را با یک خط تیره از هم جدا کنید:
- زبان: از کد دو یا سه حرفی ISO 639-2 استفاده کنید.
- اسکریپت (اختیاری): از کد ISO 15924 استفاده کنید.
- منطقه (اختیاری): از کد دو حرفی ISO 3166-1-alpha-2 یا کد سه رقمی UN_M.49 استفاده کنید.
برای مثال اگر زبان پیشفرض شما انگلیسی آمریکایی باشد:
unqualifiedResLocale=en-US
برای افزودن زبانهای پشتیبانیشده به تنظیمات سیستم android:localeConfig استفاده کنید.
شما میتوانید برنامه خود را به صورت دستی تنظیم کنید تا مطمئن شوید زبانهای آن در تنظیمات سیستم در دستگاههایی که اندروید ۱۳ یا بالاتر دارند، قابل تنظیم هستند. برای انجام این کار، یک فایل XML locale_config ایجاد کنید و آن را با استفاده از ویژگی android:localeConfig به مانیفست برنامه خود اضافه کنید. حذف ورودی مانیفست android:localeConfig نشان میدهد که کاربران نباید بتوانند زبان برنامه شما را مستقل از زبان سیستم خود در تنظیمات سیستم خود تنظیم کنند.
برای افزودن دستی زبانهای پشتیبانیشدهی برنامهتان به تنظیمات سیستم کاربر:
فایلی به نام
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> ... <application ... android:localeConfig="@xml/locale_config"> </application> </manifest>
شما میتوانید localeConfig برنامه خود را به صورت پویا با LocaleManager.setOverrideLocaleConfig بهروزرسانی کنید تا مجموعه زبانهای نمایش داده شده در لیست زبان هر برنامه در تنظیمات اندروید را سفارشی کنید. این به شما امکان میدهد لیست زبانها را بر اساس منطقه سفارشی کنید، آزمایشهای 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 برای دانستن زبان رابط کاربری برنامه فعلی استفاده کنند تا زبان صفحه کلید را مطابق شکل بهروزرسانی کنند:
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 برای این زبانهای مشخصشده لحاظ میکند و از درج رشتههای ترجمهشده از کتابخانههای دیگر که ممکن است از زبانهایی پشتیبانی کنند که برنامه شما از آنها پشتیبانی نمیکند، جلوگیری میکند. برای اطلاعات بیشتر، به Specify the languages your app supports مراجعه کنید.
نحوه انتخاب زبان برنامه توسط کاربران در تنظیمات سیستم
کاربران میتوانند زبان مورد نظر خود را برای هر برنامه از طریق تنظیمات سیستم انتخاب کنند. آنها میتوانند از دو طریق مختلف به این تنظیمات دسترسی داشته باشند:
دسترسی از طریق تنظیمات سیستم
تنظیمات > سیستم > زبانها و ورودی > زبانهای برنامه > (یک برنامه را انتخاب کنید)
دسترسی از طریق تنظیمات برنامهها
تنظیمات > برنامهها > (یک برنامه را انتخاب کنید) > زبان
مدیریت انتخابگرهای زبان درون برنامهای
برای برنامههایی که از قبل انتخابگر زبان درونبرنامهای دارند یا میخواهند از آن استفاده کنند، به جای منطق سفارشی برنامه، از APIهای عمومی برای مدیریت تنظیم و دریافت زبان ترجیحی کاربر برای برنامه خود استفاده کنید. اگر از APIهای عمومی برای انتخابگر زبان درونبرنامهای خود استفاده میکنید، تنظیمات سیستم دستگاه به طور خودکار بهروزرسانی میشود تا با زبانی که کاربر از طریق تجربه درونبرنامهای شما انتخاب میکند، مطابقت داشته باشد.
پیادهسازی با استفاده از Jetpack Compose
برای برنامههایی که کاملاً با Jetpack Compose ساخته شدهاند، سیستم بهطور خودکار بهروزرسانیهای رابط کاربری را هنگام تغییر زبان برنامه مدیریت میکند. فراخوانی API برای تنظیم یک زبان جدید، باعث تغییر پیکربندی میشود. Compose با بازنویسی رابط کاربری شما و حل خودکار هرگونه فراخوانی stringResource با استفاده از زبان جدید، واکنش نشان میدهد.
برای سازگاری با اندروید ۱۲ (سطح API 32) و پایینتر، اکیداً توصیه میکنیم هنگام پیادهسازی انتخابگر زبان درونبرنامهای، از کتابخانه پشتیبانی AndroidX ( AppCompatDelegate ) استفاده کنید. اگر از این رویکرد استفاده میکنید، اکتیویتی میزبان رابط کاربری Compose شما باید AppCompatActivity ارثبری کند. با این حال، در صورت نیاز میتوانید APIهای چارچوب را مستقیماً نیز پیادهسازی کنید .
قطعه کد زیر مثالی از نحوه خواندن زبان برنامه فعلی و تنظیم زبان جدید در یک تابع composable را نشان میدهد:
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 برای بازیابی زبان ترجیحی کاربر استفاده کنید. کاربر ممکن است زبان برنامه خود را از تنظیمات سیستم یا از انتخابگر زبان درون برنامه شما انتخاب کرده باشد.
پشتیبانی از اندروید ۱۲ و پایینتر
برای پشتیبانی از دستگاههایی که اندروید ۱۲ (سطح API 32) و پایینتر را اجرا میکنند، به AndroidX بگویید که با تنظیم مقدار autoStoreLocales به true و android:enabled به false در ورودی مانیفست برای سرویس 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 باعث خواندن مسدودکننده در نخ اصلی میشود و اگر تخلفات نخ را ثبت میکنید، ممکن است باعث نقض StrictMode diskRead و diskWrite شود. برای اطلاعات بیشتر به AppCompatDelegate.setApplicationLocales مراجعه کنید.
مدیریت ذخیرهسازی سفارشی
حذف ورودی مانیفست یا تنظیم autoStoreLocales روی سیگنالهای false مبنی بر اینکه شما در حال مدیریت فضای ذخیرهسازی خود هستید. در این حالت، باید قبل از onCreate در چرخه حیات اکتیویتی، محلهای ذخیره شده را ارائه دهید و فراخوانیهای AppCompatDelegate.setApplicationLocales را در اندروید ۱۲ (سطح API ۳۲) یا پایینتر مسدود کنید.
اگر برنامه شما دارای یک مکان ذخیرهسازی زبان سفارشی است، توصیه میکنیم از یک انتقال یکباره بین راهکار ذخیرهسازی زبان سفارشی و autoStoreLocales استفاده کنید تا کاربران همچنان از برنامه شما به زبانی که ترجیح میدهند لذت ببرند. این امر به ویژه در مواردی که برنامه شما برای اولین بار پس از ارتقاء دستگاه به اندروید ۱۳ اجرا میشود، صادق است. در این حالت، میتوانید زبانهای از پیش موجود و درخواستی کاربر را با بازیابی زبانها از حافظه سفارشی خود و ارسال آنها به AppCompatDelegate.setApplicationLocales ارائه دهید.
پیادهسازی با استفاده از APIهای چارچوب اندروید
اگرچه اکیداً توصیه میکنیم که از کتابخانه پشتیبانی AndroidX برای پیادهسازی انتخابگرهای زبان درون برنامهای استفاده کنید، اما میتوانید از متدهای setApplicationLocales و getApplicationLocales در چارچوب اندروید برای دستگاههایی که اندروید ۱۳ را اجرا میکنند نیز استفاده کنید.
قطعه کد زیر نحوه تنظیم و دریافت زبان ترجیحی کاربر را با استفاده از سرویس سیستم 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 را برای تب سفارشی کروم در نظر بگیرید.
برای باز کردن یک صفحه وب به زبان برنامه خود هنگام فراخوانی یک تب سفارشی کروم، میتوانید از طریق Browser.EXTRA_HEADERS ، هدر Accept-Language را اضافه کنید.
اگر تنظیمات زبان هر برنامه را در تنظیمات سیستم حذف کردید، زبان برنامه خود را به زبان سیستم بازنشانی کنید
اگر تنظیمات زبان برنامه خود را از تنظیمات سیستم حذف کنید (با حذف 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
به طور پیشفرض، اندروید شامل ترجمههای سطح سیستمی در پروژه متنباز اندروید (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>
منابع اضافی
برای اطلاعات بیشتر به نمونه کدها، مقالات وبلاگ و ویدیوهای ما مراجعه کنید.
- وبلاگ تنظیمات زبان هر برنامه - بخش اول
- وبلاگ تنظیمات زبان هر برنامه - بخش دوم
- ساختن یک ویدیوی چندزبانه برای دنیای چندزبانه
- منابع در Compose