Tôi muốn ứng dụng của mình hỗ trợ ba ngôn ngữ Tây Ban Nha, Bồ Đào Nha và tiếng Anh. Và cung cấp tùy chọn để chọn ngôn ngữ trong ứng dụng, tôi đã thực hiện
1) 3 thư mục có thể vẽ drawable-es, drawable-pt, drawable.
2) 3 giá trị thư mục giá trị-es, giá trị-pt, giá trị. Thay đổi giá trị String.xml theo ngôn ngữ.
Tôi có imageView để chọn ngôn ngữ. Khi nhấp vào nó, menu sẽ mở ra bao gồm tùy chọn tiếng Anh, tiếng Tây Ban Nha, tiếng Bồ Đào Nha.
Tôi đặt Ngôn ngữ bên trong ứng dụng trên lựa chọn tùy chọn bằng mã này
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);
}
Tôi đã khai báo trong Manifest- android: configChanges = "locale"
Nó hoạt động nhưng nó có một số vấn đề.
Vấn đề:-
1) Khi ngôn ngữ được chọn, màn hình bao gồm hình ảnh lựa chọn ngôn ngữ không thay đổi nhưng các màn hình khác sẽ thay đổi.
2) Sau khi thay đổi hướng ứng dụng khôi phục ngôn ngữ theo ngôn ngữ của điện thoại.
android:configChanges="locale"
cho hoạt động của bạn bên trong AndroidManifest.xml