Я хочу, чтобы мое приложение поддерживало три языка: испанский, португальский и английский. И дать возможность выбрать язык в приложении. Я сделал
1) 3 папки для рисования drawable-es, drawable-pt, drawable.
2) 3 значения папки значения-es, values-pt, values.Change String.xml значения в соответствии с языками.
У меня есть imageView для выбора языка. При нажатии на него открывается меню, которое состоит из опции английский, испанский, португальский.
Я установил Locale внутри приложения на выбор опции по этому коду
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);
}
Я объявил в Manifest- android: configChanges = "locale"
Это работает, но есть некоторые проблемы.
Проблема: -
1) Когда выбран язык, экран, который состоит из изображения выбора языка, не изменяется, а другие экраны меняются.
2) После изменения ориентации приложение восстанавливает язык в соответствии с локалью телефона.