Сделал переключалку языка
На эмуляторе и по шнурку работает хорошо. Но когда делаю 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)
}
)
}
}
Что самое странное всегда берется тот язык что по умолчанию, как будто весь этот код игнорируется, но когда я вывожу в логи, то пишет что язык переключен.
Главная->Вопрос-Ответ->Android - Программное переключение языка в релизной сборке
Android - Программное переключение языка в релизной сборке
18 Мар 2023г. в 13:51
(2023-03-18 13:51:14)
Спасибо комментаторам, нашел решение. Добавляем в gradle следующий блок, и все.
android {
bundle {
language {
enableSplit = false
}
}
}
С AAB собирается APK только с теми ресурсами, что требуются скачивающему устройству. Таким образом мы просим положить все строковые ресурсы, а не обрезать их.
android {
bundle {
language {
enableSplit = false
}
}
}
С AAB собирается APK только с теми ресурсами, что требуются скачивающему устройству. Таким образом мы просим положить все строковые ресурсы, а не обрезать их.