Jat*_*der 2 android locale localization
I have put simplified Chinese in values-zh-rCN , zh and traditional Chinese in values-zh-rTW. But on changing locale it always load strings from zH. Here is how i am changing Locale.
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();
}
Run Code Online (Sandbox Code Playgroud)
小智 7
在 Android 7 中,默认支持许多新的区域设置。在某些情况下,正确支持旧语言环境和新语言环境可能很棘手;在这里我要讨论一个我碰巧知道的:中文。
基本背景:
中文以两种不同的文字书写:简体和繁体 每个华语地区通常只使用一种文字。虽然理想情况下会针对每个地区进行本地化,但我们在此假设我们只为每种文字设置一种资源。
在 Android 7 之前,可以使用以下中文语言环境:
zh-CN (Simplified)
zh-TW (Traditional)
Run Code Online (Sandbox Code Playgroud)
在某些情况下:
zh-SG (Simplified)
zh-HK (Traditional)
zh-MO (Traditional)
Run Code Online (Sandbox Code Playgroud)
支持上述区域设置同时最大限度地减少资源重复的常见资源布局方案是:
values-zh: Traditional
values-zh-rCN: Simplified
values-zh-rSG: Simplified
Run Code Online (Sandbox Code Playgroud)
换句话说,传统资源被放在根部,zh-TW、zh-HK 和 zh-MO 被后备覆盖。
在 Android 7 中,旧的语言区域区域设置已消失,取而代之的是:
zh-Hans-CN
zh-Hans-MO
zh-Hans-HK
zh-Hans-SG
zh-Hant-TW
zh-Hant-HK
zh-Hant-MO
Run Code Online (Sandbox Code Playgroud)
笔记:
脚本和区域是单独指定的现在有默认区域设置在传统的繁体区域中指定简化脚本: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
Run Code Online (Sandbox Code Playgroud)
这样我们就得到了想要的行为:
在 Android 6 及更早版本上:
在 Android 7 上:
您可以从这个帖子链接查看详细信息
| 归档时间: |
|
| 查看次数: |
4015 次 |
| 最近记录: |