Я пытаюсь изменить язык приложения во время выполнения. Я проверил несколько сообщений, и мой код теперь выглядит так:
if(position == 0){//Position 0 of an array to select the language
val locale = Locale("es_ES")
val config = applicationContext.resources.configuration
config.setLocale(locale)
applicationContext.createConfigurationContext(config)
}
У меня есть каталог values-es, где у меня есть собственный файл strings.xml с переведенными строками. В любом случае, похоже, это ничего не меняет.
Я повторяю, я попробовал и проверил много сообщений в Переполнении стека, но я не знаю, где я терплю неудачу.
Заранее спасибо, я открыт для любых вопросов из-за моего плохого английского.
Вторая попытка:
Я пробовал, и теперь мой код выглядит так:
val locale = Locale("es")
Locale.setDefault(locale)
val config = applicationContext.resources.configuration
config.setLocale(locale)
applicationContext.resources.configuration.setTo(config)
Log.d("Configuration",config.toString())
Log.d("Language",config.locales.toLanguageTags())
И сообщения отладки:
D/Configuration: {1.0 310mcc260mnc [es] ldltr sw411dp w683dp h387dp 420dpi nrml land finger qwerty/v/v -nav/h winConfig={ mBounds=Rect(0, 0 - 1794, 1080) mAppBounds=Rect(0, 0 - 1794, 1080) mWindowingMode=fullscreen mActivityType=undefined} s.40}
D/Language: es
Но мои строки не меняются, и мое приложение продолжает использовать файл strings (en).
val config = application.applicationContext.resources.configuration
val locale = Locale("es")
Locale.setDefault(locale)
config.setLocale(locale)
application.applicationContext.resources.configuration.setLocale(locale)
application.applicationContext.resources.configuration.updateFrom(config)
finish()
startActivity(intent)