Изменение языка внутри приложения
В приложении 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. Работает на моих устройствах и на эмуляторах. Столкнулись с несколькими проблемами.
- Если у пользователя установлен русский язык в телефоне, то при при обновлении приложения и при первом запуске отображается все равно английский (до сохранения в preferences).
- После публикации в Google Play получаю отзывы, что у многих не работает переключение, отображается только английский, даже после сохранения в preferences. У половины пользователей работает.
Подскажите пожалуйста действующий метод, желательно с примером. (android-java)