android多语言(android多语言失效)
本篇文章给大家谈谈android多语言,以及android多语言失效对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
Android 内多语言切换实现
网上有春扰很多安卓内多语言切换的文章,我也看了一些,很多都千篇一律,而且还是有问题,我就自己重新改了一下。整好分享给各位同学,废话不多说,我们正式开始
我们在点击切换语言的按钮时候弹窗dialog 然后用户可以选择 简体中文 英文 繁体中文 跟随系统 四种选项 ,这是我们基本的需求
首先我们要在资源文件res目录下面创建多语言的目录文件夹 values values-en values-zh-rTW values-TW 如图所示:
我们适配多语言的只需要在 values values-en values-zh-rTW 这个三个目录下面的string.xml文件里面写入对应的引用的文本即可
我们只需要这样配置就然后在布局的xml文件里面引用可以达到适配多语言的效果 :
具体引用:
切换的dialog实现这个我用原生的AlertDialog 你们自己可以自定义继承系统的Dialog来实现
这里的语言种类获取滚森辩到的sta是重SharedPreferences 缓存里面获取到的因为需要
SharedPreferences 工具类:
我们在dialog点击事件里发送一个广播通知 用来触发刷新
然我们在baseActivity里面接收广播重启activity 来刷新多语言切换
关于Locale
实现多语言切换用到了Locale。Locale里很多常见国家和地区以及语言,如果我们做常见的语言,可以直接调用系统的,比如Locale.CHINESE。但是这次做的繁体中文的适配,略我坑一下。
繁体中文我们直接在Locale 属性里面传入 zh-rTW 但是切换没有生效 我翻了下源码只有TW的属性配置我就要修改了
问题是,我最开始直接这样写的:
到此我们说明下开头提到到为什么多出了 values-TW目录 是因为我发现在多语言切换更新 Configuration 中的 locale 属性 的时候翻开源码看到繁体中文(泛指港澳台并没有看到zh-rTW的属性配置)
所以目前的解决方案就是用values-TW来替代:
我这边目前是这样处理来兼容繁体中文切换不生效的做法 ,如果你有更好的方案 麻烦留言大家一起探讨。
Android 内多语言的切换网大缺上的文章也挺多的,基本都千篇一律 很多有纰漏 ,这边也是翻了一下源码勉强能够兼容繁体中文, 项目地址
Android国际化之多语言(配置及应用内设置)✈️
Android系统通过判断当前系统的Local配置,来使用知冲余对应的strings.xml文件
values--strings.xml 默认语言(简搭滚体中文)
values-zh-rHK--strings.xml 繁体中文
values-en--strings.xml 英语
在Android系统中,系统的配置大都通过 Configuration 来管理,包括strings等等。
onCreate() 中注册
onDestroy() 中取消注册
setLanguage() 方法
通过上面的设置,可以实现不重启APP修改语言的效果
以上只是对Android多语言设置的一些小小的总结,可能有理解不周的情况,欢迎给我留言判友指出