Android中App内部切换语言包
16lz
2021-01-26
最近产品提出了在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 应用资源国际化
源码地址
更多相关文章
- Fragment - 用法+demo
- Android(安卓)setContentView 源码解析
- 布局中@null的代码实现方式
- Android系统java层次service实现
- OkHttp学习系列二:谈谈Android中使用的坑
- 4 行代码实现 ANDROID 快速文件下载
- ART模式下dex2oat出错导致系统无法正常启动
- AOP在Android中最佳用法
- JPush+SAE+J2EE实现微信公众平台账号服务