简体中文、繁体中文与地区

2024-04-28

在我的 Android 应用程序中实现繁体中文和简体中文支持的过程中,我对它应该如何工作感到困惑。

所以从阅读文档 http://developer.android.com/resources/tutorials/localization/index.html以及一些讨论,例如this https://groups.google.com/group/android-developers/browse_thread/thread/9d7a3ee32af73fec/433ecaba101b2a03 and this https://groups.google.com/group/android-developers/browse_thread/thread/bcbd760d8651ae65/ff9b0007050e2123我已经把简体中文放进去了

  • 价值观-zh
  • 价值观-zh-rCN
  • 价值观-zh-rSG

和繁体中文

  • 值-zh-rTW
  • 价值观-zh-rHK

一切都很好,但不知何故对我来说没有意义(抱歉,如果我对中文简体与繁体用法了解不够)。

据我所知,通过检查模拟器中以及 root 后的手机上的区域设置对话框,用户可以将区域设置更改为简体中文或繁体中文。

现在问题来了。系统如何知道从哪里获取简体中文或繁体中文的strings.xml。是否有某种假设表明我是否应该显示简体中文,从values-zh 获取它并从values-zh-rTW 获取繁体中文?

但是,如果用户位于香港并将其设备设置为显示简体中文怎么办?或者,如果世界其他地方的移民将其设备设置为繁体中文,但他所在的地区是(例如),该怎么办?美国还是加拿大?

我需要做什么才能允许我的用户设置他们的区域设置并使我的应用程序以正确的区域设置显示?

Update:

经过进一步调查,我认为Android手机用户无法将国家/地区与语言分开设置。他们只能在 UI 中设置所谓的区域设置。它由语言和国家/地区组成,但列表有限,因此不可能有多种组合。

例如。居住在美国的中国人想要使用繁体中文,可以将语言设置为繁体中文(至少在 root 后的手机上),然后区域设置为 zh-rTW。他绝不能单独将他的国家定为美国。以类似的方式,任何类型的移民都不能将他们的母语与他们目前居住的国家设定在一起。

基本上,这意味着仅支持多种语言和国家/地区的组合。现在的问题是如何找出它们是哪些?


因此,我认为经过进一步调查并根据马克斯的回答,我将自己提供答案。这是:

开箱即用的 Android 仅具有两个语言环境 zh_rCN(简体中文)和 zh_rTW(繁体中文)。正如您从“设置”应用程序中看到的,这些是唯一提供的区域设置:

https://android.googlesource.com/platform/packages/apps/Settings/+/master/res/ https://android.googlesource.com/platform/packages/apps/Settings/+/master/res/

然而,Android 系统的任何其他创建者,例如对于在中国销售的手机,他们可能会改变他们添加的内容。通过查看 icu4c 应用程序中找到的语言环境列表可以找到理论上支持的整体集:

https://android.googlesource.com/platform/external/icu4c.git/+/master/data/locales/ https://android.googlesource.com/platform/external/icu4c.git/+/master/data/locales/正如你所看到的,对于中文来说有

  • zh.txt
  • zh_CN.txt
  • zh_HK.txt
  • zh_Hans.txt
  • zh_Hans_CN.txt
  • zh_Hans_HK.txt
  • zh_Hans_MO.txt
  • zh_Hans_SG.txt
  • zh_汉特.txt
  • zh_Hant_HK.txt
  • zh_Hant_MO.txt
  • zh_Hant_TW.txt
  • zh_MO.txt
  • zh_SG.txt
  • zh_TW.txt

Hant 是繁体中文的 ISO 代码,Hans 是简体中文的 ISO 代码。所以理论上这意味着我们可以

  • 中国、香港、澳门和新加坡的简体中文
  • 香港、澳门、台湾繁体中文

但请记住,必须修改“设置”应用程序才能具有不同的区域设置选择。因此,在这个阶段,简体中文会转换为 zh_rCN 和繁体 zh_rTW,您应该与拥有支持其他语言环境的此类修改后的 Android 映像的用户区分开来。

在任何情况下,为了保存,您可以使用 Configuration 类来获取区域设置,例如在您的 Application 类中使用 getResources().getConfiguration().locale。

你可以例如记录该数据并将数据发送到您的跟踪系统(无论您使用什么),或者您可以检查受支持的系统并抛出消息中区域设置的异常,然后该异常将显示在您的市场界面中...但是,这意味着您的应用程序至少发生一次崩溃(如果您精力充沛,您可以在几分钟后发布和更新..)

因此,回顾一下..最低设置将镜像设置应用程序中所做的操作(只有 zh-rCN 和 zh-rTW),但如果您想为新加坡、香港、澳门提供默认语言环境,则提供繁体中文作为默认值你也可以这样做,并且应该有效。然而,我没有证据表明这种配置在任何地方使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简体中文、繁体中文与地区 的相关文章

随机推荐