Изменение языка приложения - PullRequest
1 голос
/ 01 июня 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).

1 Ответ

0 голосов
/ 01 июня 2019

Пожалуйста, попробуйте этот код

String languageToLoad = "es"; // your language
                Locale locale = new Locale(languageToLoad);
                Locale.setDefault(locale);
                Configuration config = new Configuration();
                config.locale = locale;
                getBaseContext().getResources().updateConfiguration(config,
                        getBaseContext().getResources().getDisplayMetrics());

                Intent refresh = new Intent(DashboardActivity.this, DashboardActivity.class);
                startActivity(refresh);
                finish();
...