华为手机安卓9以上获取系统多语言出错的解决方案

本文探讨了在Unity中实现多语言支持的挑战,特别是在华为安卓9系统上遇到的问题。通过Unity和Java底层接口都无法准确获取繁体中文环境,最终通过比对显示语言“中國”来判断是否为繁体中文。
事情的起因是做海外项目的时候需要进行多语言处理。我们通过Unity自带的Application.systemLanguage接口获取手机的语言环境一直没啥问题。但是在华为手机的安卓9系统的时候,我们在切换到繁体中文之后,通过Unity的接口发现使用显示是ChineseSimplified简体中文。 一开始我们想的是Unity引擎可能没有兼容到,所以开始编写java代码,通过安卓底层的接口去获取系统语言。
public String GetDeviceLanguage() { Locale locale = Locale.getDefault(); //>=24 is Android 7.0 or high if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { locale = getResources().getConfiguration().getLocales().get(0); } String language = locale.getLanguage() + "-" + locale.getCountry(); return language; }
我们使用上面的接口发现在手机系统是繁体中文的情况下,获取到的仍然是zh-cn.也就是安卓底层也是没法获取正确。但是手机显示的语言确实是繁体中文。怎么办呢?
既然显示的是繁体中文,那么我们就根据显示的语言来处理就好了。java底层还有这样一个接口
locale.getDisplayCountry();
获取显示的国家。我们发现显示的是 “中國”。好了我们通过编写java代码获取到DisplayCountry,然后和 “中國”进行比对,相等即认定为繁体中文。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值