Locale.getLanguage () не обновляется после обновления пользовательского интерфейса (изменение языка) - PullRequest
0 голосов
/ 10 июля 2019

Программно меняю язык с английского на арабский с помощью этой функции:

private void setLocale(String lang) {
        Locale myLocale = new Locale(lang);
        Resources res = getContext().getResources();
        DisplayMetrics dm = res.getDisplayMetrics();
        Configuration conf = res.getConfiguration();
        conf.locale = myLocale;
        conf.setLocale(new Locale(lang));
        Locale.setDefault(myLocale);
        res.updateConfiguration(conf, dm);
        Intent refresh = new Intent(getContext(), MainActivity.class);
        getActivity().finish();
        startActivity(refresh);

    }

Язык меняется, однако при использовании Locale.getDefault().getLanguage(); или же Resources.getSystem().getConfiguration().locale.getLanguage(); Я все еще получаю английский (en) вместо ожидаемого значения ar, хотя отображаемый язык - арабский. Есть идеи, почему он все еще возвращает en?

1 Ответ

0 голосов
/ 10 июля 2019

Конфигурация перезаписывается всякий раз, когда вы выполняете onCreate () и несколько других вызовов системы.Поэтому вам нужно сохранить локаль в SharedPreferences и установить ее в каждом методе onCreate () для каждого действия.

Смотрите здесь о возможных способах: Изменение языка приложения программно в Android

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...