android 切换系统语言怎么在自己的程序中切换语言

评论软件语言:简体中文软件资费:免费软件适用固件:Android2.2+更新时间:软件大小:1.1M资源介绍区域语言&是一款能将手机设置为任何Android支持的地区或语言的应用,对于默认没有特定语言的rom可以尝试使用这个软件修改语言。&区域语言汉化版&Locale&&&Language功能说明:-&新增我的收藏列表-&包含详细的帮助信息-&预设40种以上的区域语言-&可以添加任意区域语言-&支持按时间排序和按最近使用排序-&可以修改删除添加的区域语言-&设置区域-&设置语言-&添加语言-&设置区域和语言-&切换区域语言-&切换语言-&语言切换-&切换区域&区域语言汉化版&Locale&&&Language更新日志:-&新增“我的收藏列表”;-&添加详细的帮助信息。资源截图评论资源下载
谢谢&&支持&&辛苦了
,。x:7553
您需要登录后才可以发帖
其他登录方式:查看:39231|回复:19
中级工程师
看到微信可以切换语言,切换语言也就是app国际化问题。我们也都会想到通过改变系统的语言,让app是自己跟随系统走,但是每一台手机系统设置中支持选择的语言,就比较少,比如小米2a:就只有 简体中文,繁体中文,English三种语言,肯定满足不了需求,api中提供了locale 类,实现本地化。下面我们来做个例子:对一个简单的setting界面进行语言切换,切换的语言选择有跟随系统走,中文,英文,阿拉伯文。如下图
(113.39 KB)
& &&& 1.先去查看下
& && & 2.在工程res文件下添加对应语种的values文件,ar:阿拉伯语, en:英语& & zh_rCN: 简体中文
& && & 截图如下:
& && && && &
& && & 在strings.xml和arrays.xml需要国际化的字符串进行相应得翻译
& && & 3.在功能清单文件中对要进行切换acitivity 进行配置
& && && & 添加 android:configChanges=&locale&& &4.对语言选择的处理
& && && & 语言选择对话框如下图:
(120.25 KB)
& && && & 切换语言的关键代码:复制内容到剪贴板代码://应用内配置语言
Resources resources =getResources();//获得res资源对象&&
Configuration config = resources.getConfiguration();//获得设置对象&&
DisplayMetrics dm = resources.getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。
config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文
resources.updateConfiguration(config, dm);刚开始的时候,我在在保存后,就进行语言切换,没有效果,原因是界面资源没有重新加载,参考了微信的方法,就是干掉MainActivity,在重启MainActivity,那就这样干吧! 测试下,还真有效果!
& && &上述代码有一定缺陷,没法对阿拉伯语(相对不常用的语种)就&&行不通,Local没有提供相应的常量,问了度娘,也没答案,在网络上看到android2.3以上都支持了阿拉伯语,那就怪啦,最后竟然没有Locale.ar常量,那就new一个呗config.locale =new& && && &Locale(&ar&);测试了下,也行!
& && &切换成阿拉伯语效果截图:
(118.16 KB)
& && & 5.贴出语言选择对话框 单选选中,保存事件处理代码 和切换语言的代码:
& && &&&( 1)&&单选选中,保存事件处理代码:String[] languages=context.getResources().getStringArray(R.array.languages);
& && && && && & AlertDialog.Builder builder=new AlertDialog.Builder(context);
& && && && && & builder.setTitle(R.string.language_choice);
& && && && && & final SharedPreferences languagePre=context.getSharedPreferences(&language_choice&, context.MODE_PRIVATE);
& && && && &final int id=languagePre.getInt(&id&, 0);
& && && && &
& && && && &builder.setSingleChoiceItems(languages, id,&&new DialogInterface.OnClickListener(){
& && && && && && && && &
& && && && && && && && &public void onClick(DialogInterface arg0, int index) {
& && && && && && && && && && &&&
& && && && && && && && && && &&&switch (index) {
& && && && && && && && && && &&&case 0:
& && && && && && && && && && && && && & //系统默认语言& && && && && && &
& && && && && && && && && && && && && & languageId=0;
& && && && && && && && && && && && && &
& && && && && && && && && && &&&case 1:
& && && && && && && && && && && && & //简体中文
& && && && && && && && && && && && && & languageId=1;
& && && && && && && && && && && && && &
& && && && && && && && && && &&&case 2:
& && && && && && && && && && && && && & //英语
& && && && && && && && && && && && && & languageId=2;
& && && && && && && && && && && && && &
& && && && && && && && && && && && && &
& && && && && && && && && && &&&case 3:
& && && && && && && && && && && && && & //阿拉伯语
& && && && && && && && && && && && && & languageId=3;
& && && && && && && && && && && && && &
& && && && && && && && && && && && && &
& && && && && && && && && && &&&default:
& && && && && && && && && && && && && &
& && && && && && && && && && && && && & languageId=0;
& && && && && && && && && && && && && &
& && && && && && && && && && &&&}
& && && && && && && && && && &&&
& && && && && && && && && && &&&languagePre.edit().putInt(&id&, languageId).commit();
& && && && && && && && && && &&&
& && && && && && && && &}});
& && && && &
& && && && &//保存
& && && && &builder.setPositiveButton(R.string.save, new DialogInterface.OnClickListener() {
& && && && && && && && &
& && && && && && && && &
& && && && && && && && &public void onClick(DialogInterface dialog, int which) {
& && && && && && && && && && &&&
& && && && && && && && && && &&&
& && && && && && && && && && &&&((Activity) context).finish();
& && && && && && && && && && &&&Intent intent=new Intent();
& && && && && && && && && && &&&intent.setClass(context, MainActivity.class);
& && && && && && && && && && &&&context.startActivity(intent);
& && && && && && && && && && &&&
& && && && && && && && && && &&&
& && && && && && && && &}
& && && && && & });(2)在MainActivity中的语言切换代码:SharedPreferences languagePre=getSharedPreferences(&language_choice&, Context.MODE_PRIVATE);
& && && && &int id=languagePre.getInt(&id&, 0);
& && && && &Log.d(&MainActivity&, &langauge_id=&+id);
& && && && &//应用内配置语言
& && && && & Resources resources =getResources();//获得res资源对象&&
& && && && & Configuration config = resources.getConfiguration();//获得设置对象&&
& && && && & DisplayMetrics dm = resources.getDisplayMetrics();//获得屏幕参数:主要是分辨率,像素等。
& && && && && &&&switch (id) {
& && && && && & case 0:
& && && && && && && && &config.locale=Locale.getDefault();& && && &//系统默认语言
& && && && && && && && &
& && && && && & case 1:
& && && && && && && && &config.locale = Locale.SIMPLIFIED_CHINESE; //简体中文
& && && && && && && && &
& && && && && && && && &
& && && && && & case 2:
& && && && && && && && &config.locale = Locale.ENGLISH;& && && && &//英文
& && && && && && && && &
& && && && && & case 3:
& && && && && && && && &//config.locale = Locale.;//阿拉伯语
& && && && && && && && &
& && && && && && && && &config.locale =new& && && &Locale(&ar&);
& && && && && && && && &
& && && && && & default:
& && && && && && && && &config.locale=Locale.getDefault();
& && && && && && && && &
& && && && && && && && &
& && && && && & }
& && && && && &&&resources.updateConfiguration(config, dm);
本帖最后由 四海轩 于
18:03 编辑
朋友 把图片穿上吧,。,
中级工程师
引用:原帖由 董龙龙 于
16:07 发表
朋友 把图片穿上吧,。, 失误,呵呵!
资深技术经理
引用:原帖由 四海轩 于
16:04 发表
看到微信可以切换语言,切换语言也就是app国际化问题。我们也都会想到通过改变系统的语言,让app是自己跟随系统走,但是每一台手机系统设置中支持选择的语言,就比较少,比如小米2a:就只有 简体中文,繁体中文,English三种语言,肯 ... 应用内切换语言,... 这个强大~~ 赶紧收藏。。:lol1
中级工程师
引用:原帖由 rongwei84n 于
17:12 发表
应用内切换语言,... 这个强大~~ 赶紧收藏。。:lol1 我去,这不是寒酸我吗?
中级工程师
引用:原帖由 rongwei84n 于
17:12 发表
应用内切换语言,... 这个强大~~ 赶紧收藏。。:lol1 这个也有缺陷啊! 这个只能对res下字符串进行切换,从网络上去的数据还是没有国际化,可能是要方法服务器那边啦!
资深技术经理
引用:原帖由 四海轩 于
17:52 发表
这个也有缺陷啊! 这个只能对res下字符串进行切换,从网络上去的数据还是没有国际化,可能是要方法服务器那边啦! 那系统的切换语言环境 可以实现网络上去的数据还是没有国际化吗?应该也不可以吧?
中级工程师
引用:原帖由 rongwei84n 于
17:54 发表
那系统的切换语言环境 可以实现网络上去的数据还是没有国际化吗?应该也不可以吧? 不可以啊,我的意思是从客户端提交一个参数 :语种,请求,交给服务器响应相应的语种内容!
资深技术经理
引用:原帖由 四海轩 于
18:02 发表
不可以啊,我的意思是从客户端提交一个参数 :语种,请求,交给服务器响应相应的语种内容! 不错,有想法! :)1
中级工程师
引用:原帖由 rongwei84n 于
18:03 发表
不错,有想法! :)1 呵呵,估计不实际!
楼主可否发一个demo学习下,目前正在做这种,希望得到帮助,q,,发我邮箱一份谢谢啦
中级工程师
引用:原帖由 木子君灏 于
10:04 发表
楼主可否发一个demo学习下,目前正在做这种,希望得到帮助,q,,发我邮箱一份谢谢啦 配置语言后,得重启homeActivity,重新加载资源!
路过借鉴一下。。。
阿拉伯语我会说啊:
嗯,只会这十个。
只会这十个
不错,赞一个
支持国际化不应该是这么弄的。应该使用android framework对语言处理。之后原生Settings.apk中切换语言。编译环境中配置参数,apk中放置values-语言简码 。至少也可以支持13种语言吧,你那个自己写。。。。是不是有点侮辱android的强大了。
51CTO学院讲师
。。。。。阿拉伯语言
目前正在做多语言,遇到写问题,可不可以发个demo?&&感激不尽
楼主 我也在学习这个 能发个demo学习下哈&&android 系统语言是怎么切换的_百度知道}

我要回帖

更多关于 android 应用语言切换 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信