私のアプリがスペイン語、ポルトガル語の3言語をサポートするようにします&英語。アプリで言語を選択するオプションを提供します。ユーザーが言語を選択したときにアプリの言語を変更するにはどうすればよいですか?
1)3つのドロウアブルフォルダドロアブル、ドロアブル、pt、ドロウアブル。
2)3つの値のフォルダ値-es、values-pt、values.Change言語に応じた値。
言語を選択する画像ビューがあります。クリックすると、英語、スペイン語、ポルトガル語のオプションで構成されるメニューが開きます。
私はManifest- アンドロイドに宣言している
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.en:
Locale locale = new Locale("en");
Locale.setDefault(locale);
Configuration config = new Configuration();
config.locale = locale;
getBaseContext().getResources().updateConfiguration(config, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in English !", Toast.LENGTH_LONG).show();
break;
case R.id.pt:
Locale locale2 = new Locale("pt");
Locale.setDefault(locale2);
Configuration config2 = new Configuration();
config2.locale = locale2;
getBaseContext().getResources().updateConfiguration(config2, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Portugal !", Toast.LENGTH_LONG).show();
break;
case R.id.es:
Locale locale3 = new Locale("es");
Locale.setDefault(locale3);
Configuration config3 = new Configuration();
config3.locale = locale3;
getBaseContext().getResources().updateConfiguration(config3, getBaseContext().getResources().getDisplayMetrics());
Toast.makeText(this, "Locale in Spain !", Toast.LENGTH_LONG).show();
break;
}
return super.onOptionsItemSelected(item);
}
このコードによりオプション選択でアプリ内のロケールを設定します。それは仕事configChangesは=「ロケール」
が、それはいくつかの問題があります。
問題: - 言語選択の画像で構成された言語が選択
1)、画面は変化しないが、他の画面が変更されています。
2)オリエンテーション変更後、携帯電話のロケールに応じて言語を復元します。
追加: 'アンドロイド:AndroidManifest.xmlを –
内部のあなたの活動のためのconfigChanges =「ロケール」'私はすでに私のマニフェストにすべてのactivitiyに追加しています。 – mukesh
言語リスト、設定画面の設定を提供する次のライブラリを使用して、アプリケーションの言語を上書きすることができます:https://github.com/delight-im/Android-Languages – caw