我做了两个不同的strings.xml,一个是瑞典语,一个是英语。
用于更改区域设置的代码
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);
}
用于切换语言的language监听器
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");
}
});
问题是,应用程序自己启动了瑞典语版的应用程序,据我所知,这还不是我自己设置的。如何在应用程序启动时更改默认区域设置?
问题
发布于 2018-07-07 04:12:01
它只适用于某些语言。
我发现当我使用android studio的翻译器编辑器来添加区域设置时,比如添加波斯语(Fa),而不是values-fa
android studio添加values-fa-rIR
,所以当我们请求Locale("fa")
时,它将不起作用。因此,如果不起作用,请转到project view
并重命名您的文件夹(在我的示例中,将res/values-fa-rIR
重命名为res/values-fa
)。
在那之后,setContentView()
也是
祝好运
发布于 2017-08-09 16:13:10
当用户按下language selection时,将此值存储到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);
}`
发布于 2017-08-09 17:27:26
公共空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();
}
}
https://stackoverflow.com/questions/45584865
复制相似问题