Chcę, aby moja aplikacja obsługiwała trzy języki: hiszpański, portugalski i angielski. I daj opcję wyboru języka w aplikacji
1) 3 foldery do rysowania drawable-es, drawable-pt, drawable.
2) Folder z 3 wartościami wartości-es, wartości-pt, wartości Zmień wartości String.xml według języków.
Mam imageView, aby wybrać język, po kliknięciu go otworzy się menu zawierające opcje angielski, hiszpański, portugalski.
Ustawiłem Locale wewnątrz aplikacji na wybór opcji za pomocą tego kodu
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);
}
Zadeklarowałem w Manifest- android: configChanges = "locale"
Działa, ale ma pewien problem.
Problem:-
1) Po wybraniu języka ekran zawierający obraz wyboru języka nie zmienia się, ale zmieniają się inne ekrany.
2) Po zmianie orientacji przywróć język aplikacji zgodnie z lokalizacją telefonu.
android:configChanges="locale"
dla swojej aktywności w pliku AndroidManifest.xml