我制作了2个不同的strings.xml,1个用于瑞典语,1个用于英语。
更改区域设置的代码
public void setLocale(String lang) {
Locale myLocale = new Locale(lang);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
Intent refresh = new Intent(getContext(), BaseActivity.class);
startActivity(refresh);
}
用于切换语言的Onclicklisteners
swedish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLocale("sv");
}
});
english.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLocale("en");
}
});
问题是,该应用程序单独使用它来启动瑞典语应用程序,据我所知,该应用程序并非由我自己设置。如何在应用启动时更改默认语言环境?
问题
答案 0 :(得分:2)
这仅适用于某些语言。
我发现当我使用android studio的翻译器编辑器来添加语言环境(例如Persian(fa))时,而不是values-fa
android studio中添加了values-fa-rIR
,因此当我们要求Locale("fa")
时它不会起作用。因此,如果行不通,请转到project view
并重命名您的文件夹(对于我的示例,将res/values-fa-rIR
重命名为res/values-fa
)。
然后是setContentView()
祝你好运
答案 1 :(得分:0)
当用户按语言选择时,将此值存储到prefrence中,一旦再次返回,则您已经存储了prefrence值。现在只需调用以下方法: - setLocale_forstartup("en");
`public void setLocale_forstartup(String lang) {
myLocale = new Locale(lang);
Locale.setDefault(myLocale);
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}`
答案 2 :(得分:0)
public void changeLanguage(){ 试试{
Resources res = mContext.getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale("en");
// conf.locale = new Locale("en");
res.updateConfiguration(conf, dm);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
}