Android `application.resources.getString` не предоставляет правильное локализованное значение ⇐ Android
-
Гость
Android `application.resources.getString` не предоставляет правильное локализованное значение
Мне нужно установить значение элемента пользовательского интерфейса из строкового ресурса. Это локализованное приложение. Я думал, все будет довольно просто:
textField.postValue(getApplication().resources.getString(R.string.text)) Когда я выбираю язык, я устанавливаю его в SharedPreferences, а в attachBaseContext я устанавливаю этот язык в качестве локали:
частное развлечение Context.setAppLocale(язык: String): Context { val locale = Локаль (язык) Locale.setDefault(локаль) val config = resources.configuration config.setLocale(локаль) config.setLayoutDirection(локаль) вернуть createConfigurationContext (конфигурация) } переопределить fun AttachBaseContext(newBase: Context) { // читаем из разделяемого префа ... super.attachBaseContext(ContextWrapper(newBase.setAppLocale(язык))) } А после выбора языка я просто перезапускаю приложение.
Как перезапустить приложение:
editor.apply() заканчивать() startActivity (намерение) Все тексты в моем приложении обновляются, за исключением тех, которые я установил из android-viewmodel с помощью getString.
Может ли кто-нибудь помочь мне получить правильные локализованные значения для моего приложения в модели представления?
Мне нужно установить значение элемента пользовательского интерфейса из строкового ресурса. Это локализованное приложение. Я думал, все будет довольно просто:
textField.postValue(getApplication().resources.getString(R.string.text)) Когда я выбираю язык, я устанавливаю его в SharedPreferences, а в attachBaseContext я устанавливаю этот язык в качестве локали:
частное развлечение Context.setAppLocale(язык: String): Context { val locale = Локаль (язык) Locale.setDefault(локаль) val config = resources.configuration config.setLocale(локаль) config.setLayoutDirection(локаль) вернуть createConfigurationContext (конфигурация) } переопределить fun AttachBaseContext(newBase: Context) { // читаем из разделяемого префа ... super.attachBaseContext(ContextWrapper(newBase.setAppLocale(язык))) } А после выбора языка я просто перезапускаю приложение.
Как перезапустить приложение:
editor.apply() заканчивать() startActivity (намерение) Все тексты в моем приложении обновляются, за исключением тех, которые я установил из android-viewmodel с помощью getString.
Может ли кто-нибудь помочь мне получить правильные локализованные значения для моего приложения в модели представления?
Мобильная версия