在我的 Android 应用程序中实现繁体和简体中文支持的过程中,我对它应该如何工作感到困惑。
因此,通过阅读 文档 以及像 这样 的一些讨论 , 我已经将简体中文放入
- 价值观-zh
- 值-zh-rCN
- 价值观-zh-rSG
和繁体中文成
- 价值观-zh-rTW
- 价值观-zh-rHK
一切正常,但不知何故对我来说没有意义(抱歉,如果我对简体中文和繁体中文的用法了解不够)。
根据我通过检查模拟器中的语言环境设置对话框以及在有根电话上的理解,用户可以将语言环境更改为简体中文或繁体中文。
现在问题来了。系统如何知道从哪里获取简体或繁体中文strings.xml。是否有某种假设说如果我应该显示简体中文从 values-zh 获取它并从 values-zh-rTW 获取繁体?
但是,如果用户位于香港并将其设备设置为显示简体中文怎么办?或者如果世界其他地方的移民将他的设备设置为繁体中文但他的地区是美国或加拿大怎么办?
我必须做什么才能允许我的用户设置他们的语言环境并让我的应用程序以正确的语言环境显示?
更新:
通过进一步调查,我认为 Android 手机用户无法将国家/地区与语言分开设置。他们只能在 UI 中设置所谓的语言环境。它由语言和国家/地区组成,但列表有限,因此无法进行多种组合。
例如,居住在美国的中国人想要使用繁体中文可以将语言设置为繁体中文(至少在有根电话上),然后会有 zh-rTW 的语言环境。他决不能单独将他的国家设为美国。以类似的方式,任何类型的移民都无法将他们的母语设置为他们目前居住的国家/地区。
基本上这意味着只支持一堆语言和国家/地区的组合。现在的问题是如何找出它们是哪些?
原文由 Manfred Moser 发布,翻译遵循 CC BY-SA 4.0 许可协议
因此,我认为经过进一步调查并得到 Marks 回答后,我将自己提供答案。这是:
开箱即用的 Android 只有两种语言环境 zh_rCN(简体中文)和 zh_rTW(繁体中文)。正如您从“设置”应用程序中看到的那样,这些是唯一提供的语言环境:
https://android.googlesource.com/platform/packages/apps/Settings/+/master/res/
然而,Android 系统的任何其他创建者(例如在中国销售的手机)都可以更改他们添加的内容。通过查看 icu4c 应用程序中的语言环境列表,可以找到理论上支持的整体集:
https://android.googlesource.com/platform/external/icu4c.git/+/master/data/locales/ 你可以看到中文有
Hant 是繁体中文的 ISO 代码,而 Hans 是简体中文的 ISO 代码。所以理论上这意味着我们可以
但是请记住,必须修改“设置”应用程序才能选择不同的语言环境。因此,在这个阶段,简体中文翻译为 zh_rCN 和繁体 zh_rTW,对于拥有支持其他语言环境的此类经过修改的 Android 图像的用户,您应该分开。
在任何情况下,为了省事,您可以使用 Configuration 类来获取区域设置,例如在您的 Application 类中使用 getResources().getConfiguration().locale。
例如,您可以将其记录下来并将数据发送到您的跟踪系统(无论您使用什么),或者您可以检查支持的系统并抛出消息中区域设置的异常,然后它会显示在您的市场界面中……它然而,这意味着您的应用程序至少会崩溃一次(如果您在球上,您可以在几分钟后发布和更新..)
所以回顾一下.. 最小设置将反映在设置应用程序中所做的事情(只有 zh-rCN 和 zh-rTW),但是如果你想为新加坡、香港、澳门提供默认语言环境,默认提供繁体中文你也可以这样做,它应该有效。但是,我没有证据表明在任何地方都使用了这种配置。