java
Locale locale;
if (Build.VERSION.SDK_INT >= 24) {
locale = LocaleList.getDefault().get(0);
} else {
locale = Locale.getDefault();
}
String systemLanguage = locale.getLanguage();
if (systemLanguage.equals("zh")) {
String languageTag = locale.toLanguageTag();
if (languageTag.contains("zh-Hant") ||
languageTag.contains("zh-TW") ||
languageTag.contains("zh-HK") ||
languageTag.contains("zh-MO")) {
// 繁体中文
} else {
// 简体中文
}
} else {
// 其他语言
}
说明:
-
locale.getLanguage()接口返回当前语言类别,比如:zh表示中文,但是不会区分简体和繁体。
-
locale.toLanguageTag()接口返回格式良好的IETF BCP 47语言标记,比如:zh-Hans-CN表示语言为简体中文(zh-Hans),地区为中国大陆(CN);zh-Hant-TW表示语言为繁体中文(zh-Hant),地区为中国台湾(TW)。
-
条件中添加zh-TW、zh-HK、zh-MO判断的原因是:部分老型号手机(比如:红米note5、魅族MX6),没有单独的地区设置,当这些手机设置为繁体中文后,locale.toLanguageTag()接口返回的结果不是标准的IETF BCP 47语言标记,所以需要特殊处理。