Я хочу, чтобы мое приложение поддерживало три языка: испанский, португальский и английский. И дайте возможность выбрать язык в приложении. Я сделал
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) После смены ориентации приложение восстанавливает язык в соответствии с локалью телефона.
android:configChanges="locale"
для своей деятельности в AndroidManifest.xml