我希望我的应用支持三种语言西班牙语,葡萄牙语&英文。并提供选择语言的应用程序。我已经取得用户选择语言时如何更改应用程序的语言?
1)3个可绘制文件夹drawable-es,drawable-pt,drawable。
2)3个值文件夹值-es,values-pt,values.Change根据语言的String.xml值。
我有imageView来选择language.When点击菜单打开包含选项英语,西班牙语,葡萄牙语。
我设置的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 = “区域设置”
这工作,但它有一些问题。
问题: -
当语言中的1),屏幕,它由语言选择的图像不会改变,但其它屏幕是变化。
2)方向改变后,应用程序根据手机的区域设置恢复语言。
对于第二个问题尝试添加:'机器人:configChanges =“区域设置”'为AndroidManifest.xml中 –
内的活动我已经在我的清单中添加每activitiy。 – mukesh
您可以使用以下库,它提供语言列表,设置屏幕的首选项,并覆盖应用程序中的语言:https://github.com/delight-im/Android-Languages – caw