前言:这是小弟的第一篇博客,琢磨了半天也不知道这玩意怎么使,因此必然会有很多不足的地方,希望大家多多指点,谢谢!
国际化一直以来也是Android项目中需要考虑到的一个问题,以往我们所接触到的国际化无非就是在res目录下新建几个values文件夹,里面存放对应国家的资源文件,当我们更改手机系统语言后,APP的语言也会跟着变化。而我今天要说的是在应用程序内部进行语言切换,没错,就是跟我们常用的微信一样,改变的只是当前APP的语言。一开始,我觉得这么做似乎并没有什么意义,用户想要切换手机语言,直接改变系统语言不就行了吗?直到我拿着我的HTC进行语言切换时才发现,只有English、简体中文和繁体中文供我切换,那我相信应该不止HTC手机会这样吧,这样看来,项目内部切换语言还是有其存在的必要性的。
初次遇到这样的需求,我能想的就是求助于广大的网友,上网搜了下解决办法,办法确实有不少,但恕我愚昧,能看懂的就这一种,而且也是经过了好几篇文章的指点才东拼西凑的凑齐了,好了,废话不多说,来看看是如何实现的吧。。。
首先,同样的需要在res目录下准备多套语言values文件,这里就不多说了。。。
然后,在项目的父层类,也就是基类(一般是BaseActivity)中进行语言类型的设置,原则是使用Android开放的API更改Configuration,同时把语言类型保存下来
protected void selectLanguage(String language) {
//设置语言类型
Resources resources = getResources();
Configuration configuration = resources.getConfiguration();
DisplayMetrics displayMetrics = resources.getDisplayMetrics();
switch (language) {
case "en":
configuration.locale = Locale.ENGLISH;
break;
case "ru":
configuration.locale = Locale_Russia;
break;
case "zh":
configuration.locale = Locale.SIMPLIFIED_CHINESE;
break;
default:
configuration.locale = Locale.getDefault();
break;
}
resources.updateConfiguration(configuration, displayMetrics);
//保存设置语言的类型
SharedPreferenceUtils.putString("langua