简体中文和繁体中文的语言代码?

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

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

mydomain.com/es mydomain.com/fr 

但我遇到了繁体和简体中文的问题。 有两种字母代码用于这些语言的标准吗?

 mydomain.com/zh mydomain.com/? 

@dkarp给出了一个很好的一般答案。 我会补充一些有关中文的细节:

中国有几个国家是主要的书面语言。 他们之间的主要区别在于他们是使用简体字还是传统字,但是在词汇等方面也存在较小的区域差异。 区分这些标准的标准方法是使用国家代码,例如中国大陆的zh_CN ,新加坡的zh_SG ,台湾的zh_TW或香港的zh_HK

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

但是, 更准确的 zh_HANS是,将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中使用的标识符一样,你就会好的。

语言取决于说的地方(doh!),所以语言和语言代码反映了这个现实。 zh是基本的语言代码,但由于它有两种主要forms,有zh_Hanszh_Hant ,但它们仍然只是语言代码,而不是语言环境。

位置特异性

为了完整地指定在特定位置使用哪种语言,国家代码仍然必须加后缀,因此分别在香港使用zh_Hans_HKzh_Hant_HK来简化繁体中文。

实际上,现实情况是,许多国家经常需要比国家代码更具体的东西,但这可能会成倍增加像CLDR这样的数据库的复杂性和维护性,加上支持基础设施,比如IP到位置细节提取,通常不可用或不够准确。

固定的文本

现在,如果代码只是指定在用户界面中使用哪一组固定string,或者甚至整个页面在一个站点上设置,国家后缀是不是真的必要,除非有一些地方,语言变化足够明显(基于位置的信息)来打扰创build一个单独的资源集。

资源集越大,基于语言环境的语言代码(在这种语境中,只是一种语言属性,而不是一个真正的语言环境,所以你可以称之为你喜欢的东西)就越有可能被需要,但是至less你只有在必要时才能做到这一点。

即时价值

但是,如果想要格式化特定的variables值(例如date,时间,货币和数字),就会变得非常重要,因为所有支持这种function的工具(如那些基于Unicode CLDR数据的工具)都期望它们。 除非您想为每个已知语言环境创build一个资源集,并且保持它们是一种恶作剧,否则这些语言环境需要与内部生成的UI语言设置为使用的代码分开设置

浏览器语言工具

请注意,如果在input框中指定了可编辑网页的语言环境,并且已为该字段启用了属性或CSS中的拼写检查,则浏览器的语言工具将根据该语言环境对该字段进行拼写检查。

标准

您必须清楚资源集提供什么,所以请考虑:

  • 固定string? 只有语言。
  • 格式化即时? 语言环境。
  • 在查看环境中进行拼写检查? 区域。
  • 整个页面/子网站? 只有语言,否则区域设置(作为语言变体),如果需要显着不同的内容。

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

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

Interesting Posts