我的应用程序支持3种语言(英语,法语和阿拉伯语)。我已经翻译了所有的资源(值字符串和可绘制文件),并且它根据用户设备中设置的语言完美工作。Android - 更改应用程序本身的语言环境语言
该应用程序主要由两个活动组成:mainActivity和Game Activity。 mainActivity包含一个按钮(播放),根据设备语言导致GameActivity。例如,如果语言是英语,它将启动游戏活动,如果f语言是法语,它将启动GameFr活动,如果语言是阿拉伯语,它将启动GameAr活动。
Play.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
if (Locale.getDefault().getLanguage().equals("ar")){
Intent intgame=new Intent(MainActivity.this,GameAr.class);
startActivity(intgame);
}
else {
if (Locale.getDefault().getLanguage().equals("fr")){
Intent intgame=new Intent(MainActivity.this,GameFr.class);
startActivity(intgame);
}
else {
Intent intgame=new Intent(MainActivity.this,Game.class);
startActivity(intgame);
}
}
}
});
不过,我想,通过它用户可以更改应用程序的语言在MainActivity加3 ImageView的(标志),为了这个,我增加了以下内容:
en = (ImageView) findViewById(R.id.en);
fr = (ImageView) findViewById(R.id.fr);
ar = (ImageView) findViewById(R.id.ar);
en.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLocale("en");
Intent uo = new Intent(MainActivity.this,Game.class);
startActivity(uo);
}
});
fr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLocale("fr");
Intent uo = new Intent(MainActivity.this,GameFr.class);
startActivity(uo);
}
});
ar.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
setLocale("ar");
Intent uo = new Intent(MainActivity.this,GameAr.class);
startActivity(uo);
}
});
然而,当具有语言设置为英语的设备的用户点击法国国旗,它将成功地完成法国活动。但是,如果他回到上一页并单击按钮(播放),则显示的页面是与英文活动相对应的页面,但具有资源(字符串值和Drawables)法语。
这是因为以下功能:
if (Locale.getDefault().getLanguage().equals("ar"))
始终测试设备的语言,而不是用户选择的应用程序的语言。
是否有一个函数可以给我SetLocale函数选择的语言?或者我应该在活动之间使用变量转移?
我该如何解决这个问题,你有更好的建议吗?
在哪里?在if语句中?如果您注意到我对按钮(Play)进行了测试,根据语言获得正确的活动。所以如果可能的话,我需要用另一个获取用户设置的语言的函数替换“if(Locale.getDefault()。getLanguage()。equals(”fr“)))(参见SetLocale函数),而不是设备default langugage –
在你的setLocale()方法中。 –
为现有语言环境检查Locale.java类。 –