看到微信可以切换语言,切换语言也就是app国际化问题。我们也都会想到通过改变系统的语言,让app是自己跟随系统走,但是每一台手机系统设置中支持选择的语言,就比较少,比如小米2a:就只有 简体中文,繁体中文,English三种语言,肯定满足不了需求,api中提供了locale 类,实现本地化。下面我们来做个例子:对一个简单的setting界面进行语言切换,切换的语言选择有跟随系统走,中文,英文,阿拉伯文。如下图

1.先去查看下
       各国语言缩写-各国语言简称,世界各国域名缩写
       
2.在工程res文件下添加对应语种的values文件,ar:阿拉伯语, en:英语    zh_rCN: 简体中文
       截图如下:

 
       在strings.xml和arrays.xml需要国际化的字符串进行相应得翻译
      
3.在功能清单文件中对要进行切换acitivity 进行配置
          添加

1 android:configChanges="locale"

4.对语言选择的处理

语言选择对话框如下图:

5. 切换语言的关键代码:

//应用内配置语言
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");

测试了下,也行! 
      切换成阿拉伯语效果截图:

6.关键代码:

/*** 切换语言* @param i*/public void ChangeLanguage(int i) {// 应用内配置语言Resources resources = getResources();                    // 获得res资源对象Configuration config = resources.getConfiguration();     // 获得设置对象DisplayMetrics dm = resources.getDisplayMetrics();       // 获得屏幕参数:主要是分辨率,像素等。switch (i) {case 0:// config.locale = Locale.;            // 阿拉伯语config.locale = new Locale("ar");  break;case 1:config.locale = Locale.ENGLISH;     // 英文break;case 2:config.locale = Locale.SIMPLIFIED_CHINESE;   // 简体中文break;case 3:config.locale = Locale.getDefault();         // 系统默认语言break;default:break;}// 更新配置后重启 Activiyresources.updateConfiguration(config, dm);((Activity) context).finish();Intent intent = new Intent();intent.setClass(context, MainActivity.class);context.startActivity(intent);}

原文连接地址: http://bbs.51cto.com/thread-1075165-1-1.html

Android开发应用内多国语言切换相关推荐

  1. Android应用内设置多语言

    1.项目简介 最近项目中要加入多语言需求,涉及到的有中文简体,中文繁体,英语,西班牙语,泰语,印尼语,葡萄牙语.参考了Android应用内设置多语言,可随系统语言改变而改变,在此基础上做了修改,选择为 ...

  2. Android通过代码实现多语言切换、createConfigurationContext、attachBaseContext、getResources、updateConfiguration

    updateConfiguration 过时兼容处理 @Override public Resources getResources() {//此方法会 多次 调用Configuration conf ...

  3. html多国语言配置方法,jquery多国语言切换特效

    这是一款实现多国语言切换的jquery特效.在这个示例中,通过简单的js代码,实现包括中文和英文在内的7种不同国家语言的切换效果. 使用方法 在页面中引入jquery和style.css. HTML结 ...

  4. android源码分析(一) - 语言切换机制

    android语言切换是在packages/apps/Settings/com/android/settings/LocalePicker.java的updateLocale()函数中调用. /*** ...

  5. Android应用内设置多语言,可随系统语言改变而改变,也可设置app为固定语言不受系统语言影响

    转载请标明出处: https://blog.csdn.net/m0_38074457/article/details/84993366,本文出自:[陈少华的博客] 一.效果图 https://gith ...

  6. android 7.0 兼容多语言切换总结

    我们手机升级到android 7.0或购买到最新的android(大于7.0)机后,我们突然发现在系统设置语言切换的方式上有了很大的区别.这还好,只要我们按部就班设置好第一第二第N语言,使用上还是无二 ...

  7. 【MFC进阶】09多国语言切换

    1.新建工程 新建了一个对话框工程,工程名称为MultiLanguages,默认语言选择是"中文". 2.添加多国语言的资源 在创建工程后,工程会添加默认的资源,如主对话框,都是& ...

  8. 2.4 Qt多国语言切换

     如果要实现qt程序动态语言切换,最简单有效的方法是使用QTranslator类,首先使用QTranslator对象加载相应的翻译语言文件,然后用 QApplication::installTrans ...

  9. Android开发工具-多国语言翻译对照表

    资料来源 MTK baba的图,适合多国语言翻译的文件夹建立或者选择对应多国语言,感觉还狠全的. 好东西分享会好一点. 右键-查看或者另存图片查看

最新文章

  1. thinkphp-join
  2. Java 12 switch表达式新特性(->,yield)
  3. 编写代码的工作在哪找_编写事件代码如何帮助我获得了出色的工作
  4. CVPR2021 | 用Transformers无监督预训练进行目标检测
  5. 动手学深度学习(PyTorch实现)(十三)--ResNet模型
  6. qt 在qtextedit显示数组_Qt开源作品34-qwt无需插件源码
  7. php清除输出缓冲,php如何清除缓冲区
  8. Linux(Ubuntu) 下自然码加辅助码双拼输入的解决方案
  9. Julia: Dict中元素的顺序:是无序的!
  10. vc++2010注册表修改
  11. VLfeat库---研习
  12. 大数据面试杀招——Hadoop高频考点,正在刷新你的认知!
  13. vue ES6 导入导出电话区号 export import
  14. MOS管自举电容工作原理电路设计及其分析
  15. 【计算机网络】—什么是蜂窝移动网络?
  16. mysql实战22 | MySQL有哪些“饮鸩止渴”提高性能的方法?
  17. 通用样式 -表格的每行的复选框选中打印,清除已勾选
  18. 知识产权日特稿:谁动了程序员的源代码版权?
  19. 文件目录自动生成工具--Dir Tree Noter
  20. HTML期末作业,基于html实现中国脸谱传统文化网站设计(5个页面)

热门文章

  1. Django在form提交CSRF验证失败. 相应中断问题
  2. Navicat链接数据库奇葩错误
  3. ubuntu 20.04 部署SS5详解
  4. H5清除浮动的五种方法
  5. 把英雄分类,看 Python 带你上王者
  6. 精忠报国用计算机弹,精忠报国的故事
  7. 黑马程序员,黑马论坛-------单例模式的两种实现(恶汉+懒汉)
  8. CMD命令行升级pip失败解决方法
  9. 免费时代即将终结 互联网付费时代到来
  10. 人脸识别 论文阅读(4)