アプリは3つの言語(英語、フランス語、アラビア語)をサポートしています。私はすでにすべてのressources(値stringとdrawablesファイル)を翻訳しており、ユーザデバイスに設定された言語に従って完璧に動作します。Android - アプリ内でのロケール言語の変更
アプリは、主に2つのアクティビティ、mainActivityとGame Activityから成ります。 mainActivityには、デバイスの言語に応じてGameActivityにつながるボタン(Play)が含まれています。たとえば、言語が英語の場合は、ゲームを起動します。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);
}
});
を、とき言語が英語に設定されているデバイスを持つユーザーがフランス国旗をクリックすると、フランス語アクティビティが正常に取得されます。しかし、前のページに戻ってボタン(Play)をクリックすると、表示されるページは英語のアクティビティに対応するものですが、リソース(文字列値とDrawables)はフランス語です。
if (Locale.getDefault().getLanguage().equals("ar"))
常にデバイスではなく、ユーザーがアプリで選択した言語の言語をテスト:以下の機能があるため
です。
SetLocale関数で選択された言語を私に与えることができる関数はありますか?あるいは、私は活動間で変わる移転を使うべきですか?
これをどのように修正できますか、より良い提案がありますか?
どこでしょうか? if文の中で?あなたが気づいたら、ボタン(Play)でテストを設定し、言語に応じた適切なアクティビティを取得します。したがって、可能であれば、ユーザーが設定した言語(SetLocale関数を参照)を取得する別の関数で、if(Locale.getDefault()。getLanguage()。equals( "fr"))デフォルトのlangugage –
あなたのsetLocale()メソッドの内部。 –
既存のロケールのLocale.javaクラスを確認してください。 –