我希望我的应用程序支持西班牙语,葡萄牙语和英语三种语言。并提供选择应用程序中语言的选项
1)3个drawable文件夹drawable-es,drawable-pt,drawable。
2)3个值文件夹values-es,values-pt,values。根据语言更改String.xml值。
我有imageView来选择语言。单击它时,将打开包含选项English,Spanish,Portuguese的菜单。
我通过此代码在选项选择中在应用内设置了语言环境
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);
}
我在清单中声明了 android:configChanges =“ locale”
它可以工作,但是有一些问题。
问题:-
1)选择语言后,包含语言选择图像的画面不会改变,但其他画面会改变。
2)方向改变后,应用程序根据手机的语言环境恢复语言。
android:configChanges="locale"
在AndroidManifest.xml中添加您的Activity