我的應用程序支持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類。 –