Android中App内部切换语言包

最近产品提出了在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 应用资源国际化

源码地址

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值