2016-08-02 164 views
0

我的应用程序支持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函数选择的语言?或者我应该在活动之间使用变量转移?

我该如何解决这个问题,你有更好的建议吗?

回答

0

使用本

Locale.setDefault("Your Locale"); 
+0

在哪里?在if语句中?如果您注意到我对按钮(Play)进行了测试,根据语言获得正确的活动。所以如果可能的话,我需要用另一个获取用户设置的语言的函数替换“if(Locale.getDefault()。getLanguage()。equals(”fr“)))(参见SetLocale函数),而不是设备default langugage –

+0

在你的setLocale()方法中。 –

+0

为现有语言环境检查Locale.java类。 –

相关问题