Ich möchte, dass meine App drei Sprachen unterstützt: Spanisch, Portugiesisch und Englisch. Und geben Sie die Option, Sprache in App auszuwählen. Ich habe gemacht
1) 3 zeichnbare Ordner drawable-es, drawable-pt, drawable.
2) 3 Werte Ordnerwerte-es, Werte-pt, Werte. Ändern Sie die String.xml-Werte nach Sprachen.
Ich habe imageView, um die Sprache auszuwählen. Wenn Sie darauf klicken, öffnen Sie das Menü, das aus der Option Englisch, Spanisch, Portugiesisch besteht.
Ich habe das Gebietsschema in der App bei der Auswahl der Optionen anhand dieses Codes festgelegt
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);
}
Ich habe in Manifest- Android deklariert : configChanges = "locale"
Es funktioniert, aber es gibt ein Problem.
Problem:-
1) Wenn die Sprache ausgewählt ist, ändert sich der Bildschirm, der aus dem Bild der Sprachauswahl besteht, nicht, aber andere Bildschirme ändern sich.
2) Nach dem Ausrichten ändern Sie die App-Wiederherstellungssprache entsprechend dem Gebietsschema des Telefons.
android:configChanges="locale"
für Ihre Aktivität in der AndroidManifest.xml