作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在values-zh-rCN里放了简体中文,在values-zh-rTW里放了zh和繁体中文。但是在更改语言环境时,它总是从 zH 加载字符串。以下是我如何更改语言环境。
public void setLanguage(String languageCode, String countryCode){
Locale locale = new Locale(languageCode, countryCode);
Locale.setDefault(locale);
Configuration config = getResources().getConfiguration();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
setSystemLocale(config, locale);
} else {
setSystemLocaleLegacy(config, locale);
}
BaseSharedPreference.getInstance().setLanguage(locale.getLanguage());
recreate();
}
最佳答案
在 Android 7 中,默认支持许多新的语言环境。在某些情况下,同时正确支持旧语言环境和新语言环境可能很棘手;在这里我将讨论一个我碰巧知道的:中文。
基本背景:
中文有两种不同的文字:简体和繁体每个华语地区一般只使用一种文字虽然理想情况下会针对每个区域进行本地化,但我们在此假设每个脚本只有一个资源集。
在 Android 7 之前,可以使用以下中文语言环境:
zh-CN (Simplified)
zh-TW (Traditional)
在某些情况下:
zh-SG (Simplified)
zh-HK (Traditional)
zh-MO (Traditional)
支持上述语言环境同时最小化资源重复的通用资源布局方案是:
values-zh: Traditional
values-zh-rCN: Simplified
values-zh-rSG: Simplified
换句话说,Traditional resources 放在了 root,而 zh-TW, zh-HK, zh-MO 被 fallback 覆盖。
在 Android 7 中,旧的语言区域设置已消失,取而代之的是:
zh-Hans-CN
zh-Hans-MO
zh-Hans-HK
zh-Hans-SG
zh-Hant-TW
zh-Hant-HK
zh-Hant-MO
注意:
脚本和区域分别指定现在有默认语言环境在传统繁体区域中指定简体脚本:zh-Hans-MO 和 zh-Hans-HK。在 Android 7 中使用旧方案的问题:
因此最小的正确资源布局现在是:
values-zh: Simplified
values-zh-rTW: Traditional
values-zh-rHK: Traditional
values-zh-rMO: Traditional
values-b+zh+Hans+HK: Simplified
values-b+zh+Hans+MO: Simplified
这样我们就得到了想要的行为:
在 Android 6 及更早版本上:
在 Android 7 上:
您可以从这篇文章中查看详细信息 Link
关于Android 简体中文和繁体中文不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44714408/
我是一名优秀的程序员,十分优秀!