gpt4 book ai didi

Android 简体中文和繁体中文不工作

转载 作者:行者123 更新时间:2023-11-30 00:29:27 30 4
gpt4 key购买 nike

我在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 中使用旧方案的问题:

  • zh-Hans-* 在 zh 的任何子代之前退回到 zh,因此会显示为繁体而不是简体
  • zh-Hans 似乎根本没有被认出这表明 zh 更喜欢简体,而不是繁体。但是SDK本身并不清楚,它只有zh-CN、zh-HK和zh-TW资源。
  • zh-Hant-* 回退到 zh-Hant,然后是默认值,因此会显示为 en。仅 zh 和 zh-Hant 足以覆盖 Android 7 区域设置,但我们需要保持对 Android 6 及更早版本的支持。

因此最小的正确资源布局现在是:

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 及更早版本上:

  • zh-CN 和 zh-SG 退回到 zh(简体)
  • zh-TW、zh-HK 和 zh-MO 具有特定资源(繁体)

在 Android 7 上:

  • zh-Hans-CN 和 zh-Hans-SG 退回到 zh(简体)
  • zh-Hant-TW、zh-Hant-HK 和 zh-Hant-MO 退回到他们的语言区域设置(繁体)
  • zh-Hans-HK 和 zh-Hans-MO 具有特定资源(简体)

您可以从这篇文章中查看详细信息 Link

关于Android 简体中文和繁体中文不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44714408/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com