【问题标题】:Can I use only zh-Hans/zh-Hant resx files for Chinese if I don't need to support locale-specific variations?如果我不需要支持特定于语言环境的变体,我可以只使用中文的 zh-Hans/zh-Hant resx 文件吗?
【发布时间】:2016-07-24 05:31:12
【问题描述】:

背景
我们有一个较旧的网络表单应用程序,并且我们没有使用我知道的任何自定义语言/全球化代码。我们将 resx 文件用于文化特定资源。对于中文,我们目前有 4 个 resx 文件:zh、zh-cn、zh-hans 和 zh-hant。为了简单起见,我希望只配对 2:zh-hans 和 zh-hant。我们不打算支持任何特定于语言环境的变体;只是通用的简体中文和通用的繁体中文。

问题

  1. 我的主要问题是:在任何情况下我会需要拥有更多的中文 zh-hans 或 zh-hant 文件? *除了需要支持任何特定于语言环境的变体之外。

    基本上,我需要保证,如果用户使用zhzh-cnzh-sg语言代码浏览我们的网站,他们会从 zh-hans 文件中获取资源,如果他们使用 zh-twzh-hkzh-mo 浏览,他们从 zh-hant 文件中获取资源。这些是我所知道的唯一中文代码,但如果还有其他代码,它们也应该包括在这里——基本上是一个说中文的用户,他们的浏览器设置为任何中文,应该看到适当的简体或繁体中文——绝对不会见英文。

    到目前为止,我的测试似乎表明是的,.NET 可以正确解析它们,但我想确保没有我遗漏的隐藏或罕见场景。

  2. 我知道 zh-hans 和 zh-hant 代码更新一些 - 并且被认为是“父”文化。我也知道旧的通用父代码是 zh-chs 和 zh-cht。 是否有旧的浏览器允许选择这些 zh-chs/zh-cht 代码,如果是,.NET 是否仍能正确解析它们?

  3. 我不完全确定如何 .NET 解析正确的资源文件,所以如果有人能指出我正确的方向,例如涉及哪些类/命名空间,那也很棒。


资源
Language codes for simplified Chinese and traditional Chinese?
IETF Language Tags

【问题讨论】:

    标签: c# asp.net localization internationalization resx


    【解决方案1】:

    答案是否定的 - 你不能只有 zh-hans/zh-hant。因为,如果你这样做了,并且你通过浏览器传递了基本的 zh 代码,它不会自动解析为 zh-hans 或 zh-hant resx 文件。

    原因是由于一个叫做“Resource Fallback Process”的东西。

    基本上,.NET 通过层次结构解析资源。它将从请求的文化代码开始,如果该特定文化代码的 resx 不存在,它将开始沿着层次结构向上移动,搜索下一个 确实具有雷斯克斯。但是,它永远不会向下移动,只会向上移动。


    以下是 zh-sg [新加坡] 的层次结构示例:

    1. 不变量
    2. zh
    3. zh-汉斯
    4. zh-chs(旧版通用代码)
    5. zh-sg(特定于语言环境的代码)

    所以首先它会寻找 zh-sg。如果没有 zh-sg 的资源文件,它会查找 zh-chs。如果没有 zh-chs 的资源文件,它会查找 zh-Hans。以此类推。

    只有 zh-Hans 和 zh-Hant 将适用于所有特定于语言环境的代码,例如 zh-sg、zh-tw 等。某些浏览器允许您选择 Generic Simplified (zh-Hans) 或 Generic Traditional (zh-Hant),显然它也适用于这些场景。它适用的唯一情况是选择基本中文 zh 并在请求中传递。在那种情况下,如果 zh 不存在,它的下一个位置是 Invariant 文化——在这种情况下,它返回英文文本——这显然不是我们想要的。

    因此,我的解决方案是将基础 zhzh-Hant 用于我的 2 个代码。 Base zh 是我的包含简体文本的文件,而 zh-Hant 当然是我的包含繁体文本的文件。我本可以反过来做(使 zh 包含繁体文本并使用 zh-Hans 进行简化)但实际上,我找不到关于基本 zh 应该代表什么的指导方针。它应该是简化的,还是应该是传统的?我怀疑这在很大程度上是一个偏好问题。对几个流行网站的快速搜索显示,在大多数情况下,对基本 zh 的请求会生成谷歌翻译识别为简体的文本。在少数情况下,它确实产生了传统。但是,我选择了大多数人似乎在做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-25
      • 2013-09-24
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-14
      • 2015-05-13
      相关资源
      最近更新 更多