アプリでスペイン語、ポルトガル語、英語の 3 つの言語をサポートしたいと考えています。アプリで言語を選択するオプションを提供します。
1) 3 つの描画可能フォルダー drawable-es、drawable-pt、drawable。
2) 3 つの値フォルダー values-es、values-pt、values.言語に応じて String.xml の値を変更します。
言語を選択するためのimageViewがあります。クリックすると、英語、スペイン語、ポルトガル語のオプションで構成されるメニューが開きます。
このコードでオプション選択時にアプリ内にロケールを設定します
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);
}
マニフェストで宣言しました - android:configChanges="locale"
動作しますが、いくつかの問題があります。
問題:-
1)言語を選択すると、言語選択のイメージで構成された画面は変わらず、他の画面が切り替わる。
2) 方向変更後、アプリは電話のロケールに応じて言語を復元します。