I want my app to support three languages Spanish,Portuguese & English. And give option to select language in app.I have made
1) 3 drawable folders drawable-es,drawable-pt,drawable.
2) 3 values folder values-es,values-pt,values.Change String.xml values according to languages.
I have imageView to select language.When click it menu open that consists option English,Spanish,Portuguese.
I set Locale inside app on option selection by this code
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);
}
I have declare in Manifest- android:configChanges="locale"
It work but it have some issue.
Problem:-
1)When language selected, screen that consists image of language selection not change but other screens are change.
2)After orientation change app restore language according to locale of phone.
android:configChanges="locale"
for your Activity inside the AndroidManifest.xml – Alleviative