Android应用程序内部切换语言及自定义语言

这篇博客介绍了如何在Android应用程序内部实现语言切换,类似于微信功能,不依赖于系统语言设置。作者首先提到在res目录下创建不同语言的values文件,然后在基类(BaseActivity)中通过Android API修改Configuration并保存语言设置。为了在应用重启后恢复语言,需要在onCreate方法中调用相应方法。当遇到Locale类中没有的语言如俄语时,作者展示了如何自定义语言,通过new Locale方法创建。文章提供了关键代码示例,并提醒注意新建语言参数的正确填写。
摘要由CSDN通过智能技术生成

前言:这是小弟的第一篇博客,琢磨了半天也不知道这玩意怎么使,因此必然会有很多不足的地方,希望大家多多指点,谢谢!

国际化一直以来也是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
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值