您的位置:首页 > 移动开发 > Android开发

Android多语言支持实现

2017-06-03 14:38 591 查看

一.AndroidMianFest.xml中配置

<receiver android:name="cn.xm.antrou.broadcast.LanBroadcast">
<intent-filter>
<action android:name="cn.xm.broadcast.language" />
</intent-filter>
</receiver>


二.设置选中的语言

Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources .getDisplayMetrics();
config.locale = locale;
resources.updateConfiguration(config, dm);
this.finish()//设置语言后关闭当前Activity


上面的local参数就是设置语言的,比如:Locale.SIMPLIFIED_CHINESE  Locale.ENGLISH,详细信息你可以查看Local类,其实这里设置后软件语言已经变了,不过需要重新进入该界面,所以会用到通知来重启启动当前界面

三.发送通知

Intent intent = new Intent("cn.xm.broadcast.language");
sendBroadcast(intent);


注意上面构造Intent参数:cn.xm.broadcast.language与AndroidMainfest.xml中的配置是一致的,这里发出通知后,系统会在你配置的信息中找到匹配项后执行,android:name指定的类,这个类需要实现
BroadcastReceiver ,并重写 onReceive()在这个方法里面去重启你刚刚的设置语言的界面

第一步:将应用中的所有需要显示的字符串,如菜单,标题、文本,以及提示信息等都定义到values/strings.xml之中,注意name属性不能有重复
第二步:将应用中的字符串替换成从strings.xml中引用的形式,如 getResources().getString(R.string.appname)
第三步:真正的多语言设置了,需要新建一个xml文件,会显示如图画面!

需要注意的地方:

1. 需要选中”values“选项
2. 需要设置”Region“和”Language“两个属性(注:上图中这两个属性已经设置,所以左边列表中已不可见),分别指代”区域“与”语言“,通过画面中的右箭头添加,对于英语支持,”Region“和”Language“分别对应"us"和"en"

设置完成点击”Finsh“之后会在res/values目录下发现多了个目录:values-en-rUS,然后将对应的strings.xml内容翻译成英文存储在该目录下的strings.xml即可,注意name属性不要更改。

再添加其他更多语言支持,重复上面的第三步即可(如设置繁体:”Region“和”Language“分别对应"tw"和"zh")!

参考链接:
www.cnblogs.com/wuyunan/archive/2009/09/16/1567960.html

还有一个关于动态替换strings.xml中变量的有用链接:
android string.xml文件中的整型和string型代替
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android