2016-08-02 228 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類。 –

相關問題