简繁体 vs 地区

新手上路,请多包涵

在我的 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 许可协议

阅读 1.1k
2 个回答

因此,我认为经过进一步调查并得到 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/ 你可以看到中文有

  • 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),但是如果你想为新加坡、香港、澳门提供默认语言环境,默认提供繁体中文你也可以这样做,它应该有效。但是,我没有证据表明在任何地方都使用了这种配置。

原文由 Manfred Moser 发布,翻译遵循 CC BY-SA 4.0 许可协议

更新的答案

问题和以前的答案很旧。很难说它们仍然有多正确。这个答案是为其他来这里的人准备的,他们只是想在他们的应用程序中同时支持繁体中文和简体中文,但并不过分关心当地的细节。

添加 string.xml 繁体和简体中文文件

在 Android Studio 中右键单击 res 文件夹并选择 New > Android resource file 。输入 strings 作为 文件名,然后从列表中选择 区域设置

在此处输入图像描述

向下滚动到 zh 语言。为 CN 添加一个 strings 文件 :中国(简体)和一个 TW:台湾(繁体)。如果您只使用一个,则只需选择 Any Region

据我了解 文档,查找将首先检查语言和地区是否完全匹配(例如:繁体中文-台湾)。然后它将回退到更广泛的检查。 (此系统为 Android 7.0。)

 1. zh-Hant-TW   // Chinese - Traditional - Taiwan
2. zh-Hant      // Chinese - Traditional
3. zh           // Chinese

我不完全确定这一切是如何工作的,所以请阅读 这个这个 文档。

按照我自己的应用程序中的这种方法,在繁体和简体之间切换系统设置也改变了应用程序显示。

繁简转换

如果您已有一份繁体或简体翻译,您可以在线自动转换文本。从谷歌翻译开始转换为其他翻译(只需粘贴到您的 strings.xml 文件中)。它已经做得相当不错了。然后使用众多在线转换器之一再做几次。使用文本比较工具或网站( text-compare.com 比较好)比较转换结果。这将帮助您发现 Google 犯的任何错误。

原文由 Suragch 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题