问题描述
我在我的应用程序中进行翻译,为此我做了一个LocaleHelper。在使用updateConffiguration()时,一切都很好,也很轻松,但是它说,自Jelly Beans API以来已弃用。它在API 24和API 27设备上运行良好。我想知道我是否必须将其更改为createConfigurationContext()并以这种方式(看到一些方法并且并不真的喜欢它)进行操作,或者是否可能将其保留为那样?
这是我到目前为止所做的
object LocaleHelper {
private const val SELECTED_LANGUAGE = "Locale.Helper.Selected.Language"
fun persistData(context: Context,language: String) {
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
val editor = sharedPreferences.edit()
editor.putString(SELECTED_LANGUAGE,language)
editor.apply()
}
fun getPersistedData(context: Context) {
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
sharedPreferences.apply {
val language = getString(SELECTED_LANGUAGE,Locale.getDefault().language)
setAppLocale(context,convertToLocaleCode(language!!))
}
}
fun checksharedPreferences(context: Context): Boolean {
val sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context)
if(sharedPreferences.contains(SELECTED_LANGUAGE))
return true
return false
}
private fun setAppLocale(context: Context,localeCode: String) {
val resources = context.resources
val displayMetrics = resources.displayMetrics
val configuration = resources.configuration
configuration.setLocale(Locale(localeCode.toLowerCase(Locale.ROOT)))
resources.updateConfiguration(configuration,displayMetrics)
}
private fun convertToLocaleCode(language: String): String {
when(language) {
"Polski" -> {
return "pl"
}
"English" -> {
return "en"
}
"Français" -> {
return "fr"
}
"Deutsch" -> {
return "de"
}
"Українська" -> {
return "uk"
}
}
return "en"
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)