关于utf 8:简体中文和繁体中文的语言代码?

Language codes for simplified Chinese and traditional Chinese?

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

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

1
2
mydomain.com/es
mydomain.com/fr

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

1
2
mydomain.com/zh
mydomain.com/?


@dkarp提供了一个很好的一般答案。我将添加一些有关中文的其他细节:

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

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

但是,更正确的做法是对(通用)简体中文字符使用zh_HANS,对繁体中文字符使用zh_HANT,除非在少数情况下有意义地区分不同的国家。


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

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

我会毫不犹豫地向您介绍实际的BCP 47标准文档,因为它们在细节上有些繁琐,在可读性上有些许不足。只需使用标准的语言环境标识符,例如Java使用的标识符,就可以了。


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

特定位置

要完全指定在特定位置使用哪种语言,仍然必须在国家/地区代码后缀,因此分别使用简体中文和繁体中文的zh_Hans_HKzh_Hant_HK,两者均在香港使用。

实际上,现实情况是,许多国家/地区通常需要比国家/地区代码更具体的功能,但这可能会成倍地增加像CLDR这样的数据库的复杂性和维护性,以及诸如IP到位置详细信息提取之类的支持基础架构,通常无法获得或不够准确。

固定文字

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

资源集越大,就越需要基于语言环境的语言代码[在这种情况下,仅是语言属性,而不是真正的语言环境,因此您可以随意调用它!],但是至少您需要仅在必要时这样做。

即时价值

但是,如果要即时格式化日期,时间,货币和数字等特定变量值,则区域设置就变得很重要,因为所有支持此类功能的工具(例如基于Unicode CLDR数据的工具)都希望它们。这些语言环境必须是要使用内部生成的UI语言设置的代码的单独设置,除非您要为每个已知语言环境创建资源集并对其进行维护!

浏览器语言工具

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

标准

您必须清楚资源集所提供的内容,因此请考虑:

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

电子表格可最大程度地减少维护费用

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