сделать многоязычное приложение для Android

Я создал многоязычное (английский, русский, узбекский) приложение. Я положил 4 строковых ресурса в 4 папки (values, values-en, values-ru, values-uz) как документы. Когда я меняю конфигурацию ресурсов обновления языка приложения в App Controller, как показано ниже:

 Settings.LANGUAGE = prefs.getString(User.LANG, Settings.RUSSIAN);
 Locale locale = new Locale(Settings.LANGUAGE);
 Locale.setDefault(locale);
 Configuration configuration = new Configuration();
 configuration.locale = locale;
 getBaseContext().getResources().updateConfiguration(configuration,
     getBaseContext().getResources().getDisplayMetrics());

После этого приложение перезапускается, вызывая метод контроллера приложения, как показано ниже:

public void reStart() {
    Intent i = getBaseContext().getPackageManager()
            .getLaunchIntentForPackage(getBaseContext().getPackageName());
    i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    startActivity(i);
}

После них хорошо работают почти все девайсы. А вот на Samsung Galaxy S6 (SM-G920F) работает как сумасшедший. Некоторые слова на английском, другие на узбекском и т.д. Итак, как исправить эту ошибку? разве концепции «Поддержки разных языков» не поддерживаются (применимы) ко всем устройствам? Кстати, я проверил, что все ресурсы даны на соответствующих языках (как показано на прикрепленном изображении):

введите здесь описание изображения


person Akbar    schedule 27.09.2016    source источник
comment
Samsung любит делать что-то свое.... :[ Я обнаружил, что они не всегда следуют стандартам (для некоторых вещей)   -  person Neil Locketz    schedule 27.09.2016
comment
У вас возникает такая же проблема при изменении языка устройства, а не программно?   -  person DeeV    schedule 27.09.2016
comment
Что мне тогда делать? @NeilLocketz   -  person Akbar    schedule 28.09.2016
comment
Программно менять язык не нужно, язык должен быть задан в настройках пользователя. Когда он изменит язык устройства, ваши ресурсы изменятся автоматически   -  person Lucas Queiroz Ribeiro    schedule 28.09.2016
comment
Приложение создается для полиглотов. Требуется переключение языка внутри приложения. Эта функция была явно запрошена клиентом.   -  person Akbar    schedule 28.09.2016


Ответы (1)


По моим наблюдениям, странное поведение затрагивало только заголовки действий, и я обнаружил, что устанавливаю перевод заголовков действий в файле манифеста. Только эти переводы плохо себя вели. Все остальные динамически устанавливаемые переводы работали нормально. Итак, чтобы решить эту проблему, я удалил все метки действий из файла манифеста, а затем установил заголовки действий в методе onCreate, как показано ниже:

getSupportActionBar().setTitle(R.string.title_activity_followers);

Задача решена.

person Akbar    schedule 28.10.2016