Voglio che la mia app supporti tre lingue spagnolo, portoghese e inglese. E dai la possibilità di selezionare la lingua nell'app
1) 3 cartelle disegnabili drawable-es, drawable-pt, drawable.
2) 3 valori cartella valori-es, valori-pt, valori.Cambia i valori String.xml in base alle lingue.
Ho imageView per selezionare la lingua. Quando si fa clic su di esso si apre il menu che consiste nell'opzione inglese, spagnolo, portoghese.
Ho impostato le impostazioni locali all'interno dell'app sulla selezione delle opzioni con questo codice
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);
}
Ho dichiarato in Manifest- android: configChanges = "locale"
Funziona ma ha qualche problema.
Problema:-
1) Quando si seleziona la lingua, la schermata che consiste nell'immagine della selezione della lingua non cambia, ma cambiano le altre schermate.
2) Dopo la modifica dell'orientamento, l'app ripristina la lingua in base alle impostazioni locali del telefono.
android:configChanges="locale"per la tua attività all'interno di AndroidManifest.xml