Я хочу, щоб моя програма підтримувала три мови іспанську, португальську та англійську мови. І дайте можливість вибрати мову в додатку. Я зробив
1) 3 папки, що витягуються, Dravable-es, Dravable-pt, Dravable.
2) 3 значень папки-значення, значення-pt, величини. Змінити значення 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) Після зміни орієнтації додаток відновить мову відповідно до мови телефону.
android:configChanges="locale"
для вашої активності всередині AndroidManifest.xml