最近产品提出了在APP内部切换应用的语言包,潜意识里APP的国际化就是跟随系统语言来修改的。不过在微信里面发现有在APP内部切换语言包的功能,因此专门研究了一下。

Android开发环境

(1)AndroidStudio 3.1.2
(2)Android设备Honor 8 Lite

一、效果图和撸代码

 public void changeAppLanguage() {        String sta = LanguageStore.getLanguageLocal(this);        if (sta != null && !"".equals(sta)) {            Locale myLocale = new Locale(sta);            switch (sta) {                case "default"://跟随系统                    myLocale = Locale.getDefault();                    currentPosition = 0;                    break;                case "zh_CN":                    myLocale = Locale.SIMPLIFIED_CHINESE;                    currentPosition = 1;                    break;                case "zh_TW": //自定义语言,参数1为语种代码,参数2为地区代码                    myLocale = new Locale("zh", "TW");                    currentPosition = 2;                    break;                case "en":                    myLocale = Locale.ENGLISH;                    currentPosition = 3;                    break;                case "zh_HK":                    myLocale = new Locale("zh", "HK");                    currentPosition = 4;                    break;            }            Resources res = getResources();            DisplayMetrics dm = res.getDisplayMetrics();            Configuration conf = res.getConfiguration();            conf.locale = myLocale;            //更新配置            res.updateConfiguration(conf, dm);        }    }
                /存储当前语言代码                LanguageStore.setLanguageLocal(ChangeLanguageActivity.this, languageCode[currentPosition]);                //重启页面                Intent intent = new Intent(this, MainActivity.class);                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);                startActivity(intent);                // 杀掉进程                android.os.Process.killProcess(android.os.Process.myPid());                System.exit(0);

二、具体应用

2.1 Demo使用工具

语言代码表
在线语言转化器

2.2 结论

可以通过抽取一个基类,在基类的onCreate(xxx)方法中修改应用的APP的配置。还有种说法是在Application类中监听Activity的生命周期来进行修改APP的配置,但是我在Demo的开发环境下是无效的。

三、推荐文章

Android app应用多语言切换功能实现
Android国际化之小语种自定义Farsi
Android 应用资源国际化

源码地址

更多相关文章

  1. Fragment - 用法+demo
  2. Android(安卓)setContentView 源码解析
  3. 布局中@null的代码实现方式
  4. Android系统java层次service实现
  5. OkHttp学习系列二:谈谈Android中使用的坑
  6. 4 行代码实现 ANDROID 快速文件下载
  7. ART模式下dex2oat出错导致系统无法正常启动
  8. AOP在Android中最佳用法
  9. JPush+SAE+J2EE实现微信公众平台账号服务

随机推荐

  1. 组合索引,下他哪些说法符合《阿里巴巴Java
  2. Linux之rz和sz命令用法详解
  3. 各学术职业需具备的知识, 技能和软件技术
  4. 终于有人把自然语言处理、机器学习、深度
  5. ARCH及其扩展模型的操作步骤, 程序和各种
  6. *中国县域统计年鉴, 人口与就业统计年鉴1
  7. 人工智能自拍之后,会怎样给自己P图?
  8. ARIMA时间序列模型的步骤, 程序和各种检
  9. 添加一个新变量能使以前不显著的变量变得
  10. 线索二叉树(C语言)