ฉันต้องการให้แอปของฉันรองรับสามภาษาสเปนโปรตุเกสและอังกฤษ และให้ตัวเลือกในการเลือกภาษาในแอปฉันได้ทำ
1) 3 โฟลเดอร์ที่วาดได้ drawable-es, drawable-pt, drawable
2) โฟลเดอร์ 3 ค่า values-es, values-pt, values เปลี่ยนค่า String.xml ตามภาษา
ฉันมี imageView เพื่อเลือกภาษาเมื่อคลิกเมนูจะเปิดขึ้นซึ่งประกอบด้วยตัวเลือกอังกฤษสเปนโปรตุเกส
ฉันตั้งค่า Locale ภายในแอพในการเลือกตัวเลือกด้วยรหัสนี้
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);
}
ฉันได้ประกาศใน Manifest- android: configChanges = "locale"
ใช้งานได้ แต่มีปัญหาบางอย่าง
ปัญหา:-
1) เมื่อเลือกภาษาหน้าจอที่ประกอบด้วยภาพของการเลือกภาษาจะไม่เปลี่ยน แต่หน้าจออื่นจะเปลี่ยนไป
2) หลังจากการวางแนวเปลี่ยนแอพคืนค่าภาษาตามสถานที่ของโทรศัพท์
android:configChanges="locale"
สำหรับกิจกรรมของคุณใน AndroidManifest.xml