Android 多语言支持

在Android 6.0的系统用户只能选择某一种语言,但是在Android 7.0的系统及以上,用户可以设置语言列表,如图:
这里写图片描述

Andorid 7.0以前,在获取系统当前语言时有以下2种方法:

//获取 Locale 的方式有二 
//方式一
Locale locale = getResources().getConfiguration().locale; 
//方式二
Locale locale = Locale.getDefault();

//获取当前系统语言
locale.getLanguage();

但是中文有简体中文zh-CN和繁体中文(台湾zh-TW和香港zh-HK)、英文也有英国英文(en-GB)和美国英文(en-US)的区别,所以一般获取系统语言时都会一起获取地区:

// 获取当前系统语言
String lang = locale.getLanguage() + "-" + locale.getCountry();

在Android 7.0的系统废弃了getResources().getConfiguration().locale,增加了getResources().getConfiguration().getLocales() Api,所以在7.0的系统使用方法一获取系统语言需要做一下适配,使用方法二不需要做适配:

Locale locale;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
  locale = getResources().getConfiguration().getLocales().get(0);
} else {
  locale = getResources().getConfiguration().locale;
} 

//或者使用下面的api 不需要考虑接口 deprecated(弃用)问题
locale = Locale.getDefault();
String lang = locale.getLanguage() + "-" + locale.getCountry();


String lang = locale.getLanguage() + "-" + locale.getCountry();

上面讲述的是获取系统api的方法,但是在7.0的系统上还是会有其他的坑。
建议读者先看一下楼主转载过来的一篇挺有用的博客【好的资源需要分享才有更多人收益哦,多谢原创作者^-^】:
【Android 7.0与6.0多语言效果对比以及遇到的坑】http://blog.csdn.net/zenglanjing/article/details/78623545

楼主在工作中就遇到过一个问题:在android 7.0系统的手机上 分别在res目录下设置了values【默认简体中文】和 values-en【英文】 values-zh-rTW【台湾 繁体】 values-zh-rHK【香港 繁体】文件夹,里面写了各自的strings.xml文件。将系统语言只设置为简体中文时读取的是values文件夹中的默认字符串,一切正常。然后同时按顺序添加简体中文和美国英文 , 这时系统读取的却是values-en文件夹而不是values默认的Strings.xml中的字符串,打印的语言也是“en-US”。后来找到解决方法就是:在res下添加values-zh-rZH这是才会显示中文,同时打印的语言是“zh-CN”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值