简体和繁体中文与地区

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

所以从阅读文档以及一些这样的讨论,我把简体中文放入

  • 值-ZH
  • 值-ZH-RCN
  • 值-ZH-RSG

和中国传统

  • 值-ZH-RTW
  • 值-ZH-RHK

这一切工作正常,但不知何故对我来说没有意义(对不起,如果我对中文简化与传统使用不够了解)。

根据我所了解的,通过检查模拟器中的区域设置对话框以及根源电话,用户可以将区域设置更改为简体中文或繁体中文。

现在是这个问题。 系统如何知道如何获得简体中文或繁体中文strings.xml。 是否有某种假设,如果我应该显示简体中文得到它的价值观,从传统的价值观zh-rTW?

但是,如果用户位于香港,并且将他的设备设置为显示简体中文呢? 或者,如果世界上的其他地方的移民将他的设备设置为繁体中文,但是他的地区是美国还是加拿大?

我需要做些什么才能允许我的用户设置他们的语言环境,并让我的应用程序以正确的语言环境显示?

更新:

从进一步调查来看,我相信Android手机用户不能单独从语言中设置国家。 他们只能在UI中设置所谓的语言环境。 它由语言和国家组成,但名单有限,所以很多组合是不可能的。

例如,居住在美国的想要使用繁体中文的中国人可以将语言设置为繁体中文(至less在根植的电话上),然后将具有zh-rTW的语言环境。 他决不能把他的国家分开成为美国。 以类似的方式,任何一种移民都不能把他们的母语与他们目前居住的国家联系起来。

基本上这意味着只有一大堆语言和国家的组合是支持的。 现在的问题是如何找出他们是哪一个?

所以我想经过进一步的调查和Marks的回答,我会自己提供一个答案。 这里是:

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

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

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

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_Hant.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。 所以理论上这意味着我们可以拥有

  • 中国,香港,澳门和新加坡的简体中文
  • 在香港,澳门和台湾的中国传统文化

但请记住,设置应用程序将不得不被修改为具有不同的语言环境select。 所以在这个阶段,简体中文转换为zh_rCN和传统的zh_rTW,对于那些拥有支持其他语言环境的Android图像的用户,您应该分开。

在任何情况下,在保存的一面,你可以使用Configuration类来获取语言环境,比如在你的Application类中使用getResources()。getConfiguration()。locale。

你可以例如logging下来,并将数据发送到你的跟踪系统(无论你使用什么),或者你可以检查支持的,并用消息中的区域设置抛出一个exception,然后显示在你的市场界面中。然而意味着你的应用程序至less有一个崩溃(如果你在舞台上,你可以在几分钟之后发布和更新)

所以要回顾一下。最低设置将反映在设置应用程序(只有zh-rCN和zh-rTW)做了什么,但如果你想为新加坡,香港,澳门提供默认的语言环境作为默认提供繁体中文你也可以这样做,它应该工作。 但是,我没有证据表明这种configuration在任何地方都可以使用。

希望有所帮助。

请记住,Android本身只支持

  • values-zh
  • values-zh-rCN
  • values-zh-rTW

根据文件 。

考虑到这一点,考虑到我对中文的了解是接近于零的:

系统如何知道如何获得简体中文或繁体中文strings.xml

如果你的结构是正确的,简化大概可以映射到values-zh-rCN和传统的映射到values-zh-rTW 。 对我来说,这是一种倒退,但是我对中国人的了解也很less。

是否有某种假设,如果我应该显示简体中文得到它的价值观,从传统的价值观zh-rTW?

我会说更多,因为在设置应用程序中给出这些语言的标签映射到一些特定的区域。

但是,如果用户位于香港,并设置他的设备显示简体中文?

他们希望得到简体中文。 标准Android没有香港地区。

或者,如果世界上的其他地方的移民将他的设备设置为繁体中文,但是他的地区是美国还是加拿大?

我不知道这将是一个Android设备的选项。 您是否知道任何提供美式中文选项而不是美式英语的设备?

从进一步调查来看,我相信Android手机用户不能单独从语言中设置国家。

正确。

现在的问题是如何找出他们是哪一个?

这将在文档中 ,对于标准的Android。 各种设备或ROM可以提供其他语言/区域组合。 为了logging目的,您可以使用Configuration对象来查找用户所选的Locale 。 如果您发现您的用户正在使用超出您所configuration的语言/地区组合,您可以决定是否支持他们。