Android - Программное переключение языка в релизной сборке
Сделал переключалку языка
На эмуляторе и по шнурку работает хорошо. Но когда делаю release сборку AAB для стора, то переключение не работает. При том что в логах все как нужно...
App : Application() {
override fun attachBaseContext(base: Context) {
super.attachBaseContext(LocaleManager.setLocale(base))
}
}
open class BaseActivity : AppCompatActivity() {
override fun attachBaseContext(base: Context) {
super.attachBaseContext(LocaleManager.setLocale(base))
}
fun changeLocal(language: Language) {
LocaleManager.setNewLocale(this, language)
}
}
object LocaleManager {
private const val localePrefKey = "localePrefKey"
fun setLocale(context: Context) : Context {
return setNewLocale(context, getLanguage())
}
fun setNewLocale(context: Context, language: Language) : Context {
Preferences.putString(localePrefKey, language.code)
return updateResources(context, language.code)
}
fun getLanguage(): Language {
val pref = Preferences.getString(localePrefKey, "")
return Language.values().find {
it.code == if(pref == "") Locale.getDefault().language else pref
} ?: Language.EN
}
private fun updateResources(context: Context, language: String) : Context {
val locale = Locale(language)
Locale.setDefault(locale)
return context.createConfigurationContext(
Configuration(context.resources.configuration).apply {
setLocale(locale)
}
)
}
}
Что самое странное всегда берется тот язык что по умолчанию, как будто весь этот код игнорируется, но когда я вывожу в логи, то пишет что язык переключен.
Источник: Stack Overflow на русском