我正在尝试在我的 Jetpack Compose 应用程序中实现语言选择功能。然而,我在尝试使用
AppCompactDelegate
来实现这一目标时遇到了障碍。 Jetpack Compose 中似乎不提供 AppCompactDelegate
。
这是我尝试过的代码片段:
fun languageUpdate(context: Context, language: String){
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.TIRAMISU){
context.getSystemService(LocaleManager::class.java)
.applicationLocales = LocaleList.forLanguageTags(language)
} else {
AppCompactDelegate.setApplicationLocales(LocaleListCompat.forLanguageTags(language))
}
}
由于
AppCompactDelegate
不是 Jetpack Compose 中的选项,我正在寻找替代解决方案以编程方式在我的应用程序中设置语言。任何指导或建议将不胜感激。
您可以使用
Resources.updateConfiguration()
方法直接更新应用程序的配置。
以下是实施方法:
fun updateLanguage(context: Context, language: String) {
val locale = Locale(language)
Locale.setDefault(locale)
val configuration = Configuration(context.resources.configuration)
configuration.setLocale(locale)
context.resources.updateConfiguration(configuration, context.resources.displayMetrics)
}
并通过
onCreate()
调用它,或者如果您想从可组合函数调用它,则将上下文转换为 Activity:
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
updateLanguage(this, "es")
}
或者,
@Composable
fun Sample() {
val context = LocalContext.current as Activity
updateLanguage(this, "es")
}