Desidero che la mia app supporti tre lingue spagnolo, portoghese & inglese. E dare l'opzione per selezionare la lingua in app.Io ho fattoCome cambiare la lingua dell'app quando l'utente seleziona la lingua?
1) 3 cartelle disegnabili disegnabili, drawable-pt, disegnabile.
2) Valori di cartella valori 3-es, valori-pt, valori.Change String.xml valori in base alle lingue.
Ho imageView per selezionare la lingua. Quando si fa clic sul menu aperto che comprende l'opzione inglese, spagnolo, portoghese.
ho impostato Locale all'interno app sul selezione delle opzioni da 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 dichiarare Manifest- Android: configChanges = "Locale"
Funziona, ma hanno qualche problema.
Problema: -
1) Quando la lingua selezionata, schermo che consiste immagine di selezione della lingua non cambia, ma altre schermate sono cambiamenti.
2) Dopo la modifica dell'orientazione, l'applicazione ripristina la lingua in base alle impostazioni locali del telefono.
Per il secondo problema prova ad aggiungere: 'Android: configChanges = "Locale"' per la vostra attività all'interno del AndroidManifest.xml –
ho già aggiungere in ogni activitiy nel mio manifesto. – mukesh
È possibile utilizzare la seguente libreria, che fornisce l'elenco delle lingue, la preferenza per la schermata delle impostazioni e sostituisce la lingua nella propria applicazione: https://github.com/delight-im/Android-Lingue – caw