我希望我的应用程序支持西班牙语、葡萄牙语和英语三种语言。并提供在应用程序中选择语言的选项。我已经做了
1)3个可绘制文件夹drawable-es,drawable-pt,drawable。
- 3 个值文件夹 values-es,values-pt,values. 根据语言更改 String.xml 值。
我有 imageView 来选择语言。单击它时打开菜单,其中包含选项英语、西班牙语、葡萄牙语。
我通过此代码在应用程序内设置区域设置选项选择
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)When language selected, screen that consists image of language selection not change but other screens are change.
2)根据手机的语言环境更改应用程序的方向后恢复语言。
原文由 mukesh 发布,翻译遵循 CC BY-SA 4.0 许可协议
这是网页的摘录: http ://android.programmerguru.com/android-localization-at-runtime/
用户从语言列表中选择应用程序时,更改应用程序的语言很简单。有一个像下面这样接受语言环境作为字符串的方法(比如英语的“en”,印地语的“hi”),为您的应用程序配置语言环境并刷新您当前的活动以反映语言的变化。在您再次手动更改之前,您应用的语言环境不会更改。
确保您导入了以下软件包:
将清单添加到活动 android:configChanges=“locale|orientation”