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


79

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

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

mydomain.com/es
mydomain.com/fr

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

mydomain.com/zh
mydomain.com/?

2
您说西班牙语和法语很容易,但是CLDR数据库分别列出了26个和47个国家/地区特定的变体!这仅取决于您提供的资源有多少取决于差异。
Patanjali

Answers:


172

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

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

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

但是,从技术上讲更正确但在实践中不常用的zh_HANS(通用)简体中文字符和zh_HANT繁体中文字符,除非在极少数情况下有必要区分不同的国家。


10
这是一个很好的答案-写得好,也许大多数人都不知道。而且它在技术上更正确的zh_HANS)和一般用途的实际内容()之间划出了一条很好的界限zh_CN。您可以通过Google搜索这两个字词-相对于而言,这是7比1的差异zh_CN,这实际上比我预期的要少。
dkarp 2011年

11
实际上,URL的差异与我预期的一样大。 inurl:zh_CN提供430万次点击;inurl:zh_HANS给出20K。仍然是一个非常有用的答案。
dkarp 2011年

1
HANS和HANT之间的区别远没有CN和TW有用,这是因为区别不只是字符,而是特定于区域的用法。如子程序在台湾翻译为在中国大陆的子程序,但作为子程式。在此示例中,简体中文和繁体中文的字符相同,但翻译应仍不同。
吴永伟

33

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

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

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


2

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

特定位置

为了充分指定哪一种语言在使用特定的位置,国家代码仍必须为后缀,这样做zh_Hans_HKzh_Hant_HK支持简体和繁体中国,分别既作为口语在香港。

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

固定文字

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

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

即时价值

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

浏览器语言工具

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

标准

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

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

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

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


我的想法是,如果您的编程语言(如Java)或语言匹配框架可以支持zh-hans_CN类型格式,那就去做吧。如果不是,则将国家/地区隐含为“脚本”,例如zh_CN,zh_SG假定为汉斯,zh_TW,zh_HK假定为汉特。因此脚本部分可以省略。如果您的系统根本没有国家/地区匹配项,例如大多数语言都具有en / fr / de / es ....则它至少对于某些lang可能具有zh_hans / zh_hant类型格式(例如Drupal主要是这样,我就允许我的移动应用程序发送此信息以与我的Drupal CMS API相匹配)
Armyofda12mnkeys
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.