86

我们正在我们的网站上创建多语言子网站。

我想使用 2 个字母的语言代码。西班牙语和法语很容易。他们将获得如下 URL:

mydomain.com/es
mydomain.com/fr

但是我遇到了繁体和简体中文的问题。这些语言有哪些使用 2 个字母代码的标准吗?

mydomain.com/zh
mydomain.com/?
4

4 回答 4

183

@dkarp 给出了一个很好的一般性答案。我将添加一些关于中文的额外细节:

有几个国家以中文为主要书面语言。它们之间的主要区别在于使用简体字还是繁体字,但也存在细微的地区差异(词汇等)。区分这些的标准方法是使用国家代码,例如zh_CN中国大陆、zh_SG新加坡、zh_TW台湾或zh_HK香港。

中国大陆和新加坡都使用简体字,其他使用繁体字。由于中国大陆和台湾是人口最多的两个国家,因此zh_CNzh_TW经常使用和常用来区分网站的简体和繁体版本。

然而,在技术上更正确但在实践中不常用的方法zh_HANS是用于(通用)简体汉字和zh_HANT繁体汉字,除非在极少数情况下区分不同国家是有意义的。

于 2011-02-04T04:40:02.747 回答
39

确实有一个标准的表示。当人们遇到您所看到的完全相同的问题时——相同的语言,但不同的方言或字符——他们已经用两个字母的区域代码扩展了两个字母的语言代码。因此,您可能在 有一个通用的法语页面mydomain.com/fr,但对于加拿大法语读者来说,国际化可能会给您留下一个mydomain.com/fr_CA(加拿大)和mydomain.com/fr_FR(法国)。一些平台使用破折号而不是下划线来分隔语言和地区代码(因此fr-CAfr-FR)。

简体中文的标准语言环境是zh_CN. 繁体中文的标准语言环境是zh_TW.

我犹豫是否将您指向实际的BCP 47标准文档,因为它们,呃,细节有点重,可读性有点轻。只需使用标准的语言环境标识符,例如Java 使用的那些,就可以了。

于 2011-02-04T04:01:11.863 回答
3

语言取决于说它的地方(doh!),因此语言和区域设置代码反映了这一现实。zh是基本语言代码,但因为它有两种主要形式,有zh_Hanszh_Hant,但它们仍然只是语言代码,而不是语言环境。

特定位置

要完全指定在特定位置使用哪种语言,国家代码仍然必须加上后缀,因此分别为简体中文和繁体中文制作zh_Hans_HKzh_Hant_HK,这两种语言都是在香港使用的。

实际上,现实情况是,许多国家通常需要比国家代码更具体的内容,但这可能会成倍增加 CLDR 等数据库的复杂性和维护,以及向其中提供数据的支持基础设施,例如 IP 到位置详细信息提取,通常不可用或不够准确。

固定文本

现在,如果代码只是指定在用户界面中使用哪一组固定字符串,甚至是网站上的整个页面集,那么国家后缀并不是必需的,除非有多个地方语言不同足够显着(基于位置的信息)来创建一个完整的单独资源集。

资源集越大,就越有可能需要基于语言环境的语言代码 [在这种情况下,只是一个语言属性,而不是真正的语言环境,所以你可以随意称呼它!],但至少你只有在必要时才需要这样做。

即时值

但是,如果想要即时格式化特定的变量值,如日期、时间、货币和数字,则语言环境变得很重要,因为支持此类功能的所有工具(如基于 Unicode CLDR 数据的工具)都需要它们。这些语言环境需要单独设置到内部生成的 UI 语言设置为使用的代码,除非您想为每个已知的语言环境创建一个资源集,并以令人作呕的方式维护它们!

浏览器语言工具

请注意,当为可编辑的网页指定区域设置时,如在输入框中,并且已为该字段启用属性或 css 中的拼写检查,浏览器的语言工具将根据该区域设置对该字段进行拼写检查。

标准

您必须清楚资源集提供了什么,因此请考虑:

  • 固定字符串?仅限语言。
  • 即时格式化?语言环境。
  • 在查看环境中进行拼写检查?语言环境。
  • 整个页面/子网站?仅语言,如果需要显着不同的内容,则为语言环境(作为语言变体)。

电子表格以最大限度地减少维护开销

我使用电子表格来保存 UI 字符串,其中每个语言代码都有一个父代码,因此其字符串版本的单元格具有从父代码获取其字符串的公式。要为该语言和字符串创建自定义字符串,我只需用确切的文本覆盖单元格公式。这最大限度地减少了资源维护量。我在最后运行一个宏,为每种语言生成一个完整的资源文件。

于 2017-01-07T04:09:55.077 回答
0

我只是把这个留在这里。

代码 形式 地区
zh 中国人 - -
zh_Hans 中国人 韩简体 -
zh_Hans_CN 中国人 韩简体 中国
zh_Hans_HK 中国人 韩简体 中国香港特别行政区
zh_Hans_MO 中国人 韩简体 中国澳门特别行政区
zh_Hans_SG 中国人 韩简体 新加坡
zh_Hant 中国人 汉繁体 -
zh_Hant_HK 中国人 汉繁体 中国香港特别行政区
zh_Hant_MO 中国人 汉繁体 中国澳门特别行政区
zh_Hant_TW 中国人 汉繁体 台湾
于 2022-02-20T20:41:25.080 回答