Как изменить язык приложения? - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь изменить язык приложения во время выполнения. Я проверил несколько сообщений, и мой код теперь выглядит так:

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)
...