Изменение языка внутри приложения

В приложении 2 языка (русский и английский). Для тех, у кого в настройках телефона выставлен другой язык, по умолчанию отображается английский. Реализовал смену языку внутри приложения с помощью библиотеки https://github.com/akexorcist/Localization:

    implementation 'com.akexorcist:localization:1.2.6'

Примерный код:

public class MainActivity extends LocalizationActivity {

private String locale;
private SharedPreferences mSharedPreferences;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    mSharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    if (mSharedPreferences.contains("key_lang")){
        locale = mSharedPreferences.getString("key_lang", "");
    } else {
            Locale localeDefault = ConfigurationCompat.getLocales(getBaseContext().getResources().getConfiguration()).get(0);
            locale = localeDefault.toString().toLowerCase();
    }
    setLanguage(locale);
    
    setContentView(R.layout.activity_main);
}

Изменения сохраняю в SharedPreferences.

Пробовал также библиотеку https://github.com/zeugma-solutions/locale-helper-android

Проверял на эмуляторах разных SDK, начиная от 18. Работает на моих устройствах и на эмуляторах. Столкнулись с несколькими проблемами.

  1. Если у пользователя установлен русский язык в телефоне, то при при обновлении приложения и при первом запуске отображается все равно английский (до сохранения в preferences).
  2. После публикации в Google Play получаю отзывы, что у многих не работает переключение, отображается только английский, даже после сохранения в preferences. У половины пользователей работает.

Подскажите пожалуйста действующий метод, желательно с примером. (android-java)


Ответы (0 шт):