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

时间:2011-02-03 22:16:34

标签: utf-8 internationalization cjk chinese-locale

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

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

mydomain.com/es
mydomain.com/fr

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

mydomain.com/zh
mydomain.com/?

3 个答案:

答案 0 :(得分:137)

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

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

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

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

答案 1 :(得分:29)

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

简体中文的标准区域设置为 zh_CN 。繁体中文的标准区域设置为 zh_TW

我毫不犹豫地向您指出实际的BCP 47标准文件,因为它们,呃,对细节有点沉重,对可读性有点了解。只需使用标准区域设置标识符,例如the ones in used by Java,您就可以了。

答案 2 :(得分:1)

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

位置特异性

要完全指定在特定位置使用的语言,国家/地区代码仍然必须加上后缀,因此对于简体中文和繁体中文,请设置zh_Hans_HKzh_Hant_HK,两者都是在香港说的。

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

已修复文字

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

资源集越大,基于语言环境的语言代码[在此上下文中,只是语言属性,而不是真正的语言环境,因此您可以按照您喜欢的方式调用它!]的可能性越大,但是至少你只需要在必要时这样做。

动态值

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

浏览器语言工具

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

<强>标准

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

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

电子表格以最大限度地减少维护费用

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