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