这是我到目前为止所做的
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"
}
}