我正在尝试为预构建的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选项卡外,所有资源都在更改。
在设置内容视图之前必须设置语言。如果不可能,则通过新意图重新启动活动并完成旧活动。