这个在手机里是不能设置的,要android开发人员在整个系统编译里修改make编译的配置文件。对于MTK平台而言,是修改 mk 中的PRODUCT_LOCALES项为: zh_CN 和 zh_TW。当然如果想默认是哪种一种语言、时区等都是可以的。
关于App国际化,之前有讲到国际化资源、字符换、布局相关,想要了解的猛戳 用力抱一下APP国际化 。借着本次重构多语言想跟大家聊一下多语言切换,多语言切换对于一款国际化App来讲是重中之重,并非难事,但是若要做好也是一件不容易的事情。
当我们做了系统的配置更改,比如说切换了系统导航或者说更改了深色模式,那么我们一般的处理是也是要对Application作出处理。
如果项目中有用到ApplicationContext去getString(@StringRes int id)实现加载的提示语,那么如果只是单纯的重启界面则无法让当前的提示语跟随当前切换的语言,所以我们要么重启整个应用,要么对ApplicationContext中的Local也作出相应的更新方可,这里有一点问题,虽然Android N之后updateConfiguration是过时方法,官方给出使用createConfigurationContext代替,但是更新ApplicationContext的Local发现无效使用老版本updateConfiguration正常。
如果你发现你的应用广播通知栏适配无效,那就是context中的Local在切换语言是并未及时更新Local,这里调试一下便知,如果是Applicaiton注册的广播,那么多半情况下是没有更新ApplicationContext的Local所导致的。
多语言适配基本步骤大概就是如此了,下面看一下适配的细节问题。
[上传失败(image-b42d06-1640685147639)]
还有一点Android N之后,手机系统的语言配置选项已经不是单选了,改为一个列表了,具体可以参考手机设置中的语言和输入法,所以 setLocal(@Nullable Locale loc) 方法建议不要再使用了,我相信很多人还在用,正确的用法应该是 setLocals(@Nullable LocaleList locales) ,需要传递一个集合。
当你的应用使用的是androidxappcompat:appcompat:120及以上时,BaseActivity中需要实现下面方法。
这套方案目前不在推荐,直接去替换attatchBaseContext()中的context则可,经过测试是完全正常的。
以下则是多语言 *** 作的工具类,现在提供出来,需要的朋友可以自行进行改造。
首先扯点别的:这是第一次在上写东西,我突然明白为啥这么多人在上写东西了,因为没有广告啊,哈哈。
最近接触到Android 应用内切换语言的问题,研究了两天,做个记录先。实现了中文,英文,泰语的切换。测试机器 Nexus5(Android p),HUAWEI荣耀9青春版(800),XIAOMI mi 4LTE(601)。看下效果
完整的例子在底部
实现步骤
首先需要新建对应语言环境下的资源文件
定义一个BaseActivity,重写attachBaseContext方法,在此方法里进行语言切换
LanguageUtil中的attachBaseContext()方法
在attachBaseContext()方法中,我们判断一下,如果当前api大于24,那么就调用updateResources()方法更新context。
定义好BaseActivity以后,我们只需要让我们的Activity都继承这个基类即可。
自定义Application并在AndroidManifestxml文件中声明,在Application的onCreate()方法中,调用更换语言的方法即可。
LanguageUtil中的changeAppLanguage方法
经过上面的 *** 作就可以在70以下实现应用内切换语言。
定义一个ChangeLanguageActivity
如果是70以下,我们需要调用changeAppLanguage方法, 如果是70及以上系统,直接把我们想要切换的语言类型保存在SharedPreferences中,然后重新启动MainActivity即可。
可以使用google提供的新特性来解决。
完整的例子请移步
>
以上就是关于请问如何在安卓4.4.4设置语言列表加入新的语言。全部的内容,包括:请问如何在安卓4.4.4设置语言列表加入新的语言。、Android国际化多语言切换、Android应用内切换语言等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)