Я пытаюсь добавить некоторые особенности в готовое приложение для Android, и один из них программно меняет язык приложения.
Что я делаю для изменения ресурсов приложения: выполнение этого кода в onCreate для каждого действия:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.setLocale(new Locale(Utils.getAppPreferences("LANG")));
res.updateConfiguration(conf, dm);
}
// static member functions to return the sharedpreference that holds app's current language
public static String getDeviceLanguage() {
return Locale.getDefault().getLanguage();
}
public static String getAppPreferences(String key) {
SharedPreferences sharedpreferences = AppController.getInstance().getSharedPreferences("AppPreferences", 0);
return sharedpreferences.getString(key, Locale.getDefault().getLanguage());
}
// and after all of this I am restarting MainActivity
Intent intent = new Intent(this.getApplicationContext(), MainActivity.class);
startActivity(intent);
Мне нужно переключиться между арабским «ar» и английским «en».Переводы уже доступны для всех языков в ресурсах.Все ресурсы изменяются , за исключением только вкладок TabBarLayout, все еще использующих язык устройства.