我们正在网站上创建多语言子站点。
我想使用2个字母的语言代码。西班牙语和法语很容易。他们将获得如下网址:
mydomain.com/es
mydomain.com/fr
但是我遇到了繁体中文和简体中文的问题。有针对这些语言使用的2个字母代码的标准吗?
mydomain.com/zh
mydomain.com/?
Answers:
@dkarp提供了一个很好的一般答案。我将添加一些有关中文的其他细节:
在一些国家,中文是主要的书面语言。它们之间的主要区别是它们使用的是简体字还是繁体字,但是在区域方面(词汇等)也存在细微差别。区分这些标准方法是使用国家/地区代码,例如zh_CN
中国大陆,zh_SG
新加坡,zh_TW
台湾或zh_HK
香港。
中国大陆和新加坡都使用简体字,其他都使用繁体字。由于中国和台湾是人口最多的两个国家,因此公正zh_CN
和zh_TW
经常被用来区分网站的简体和繁体字符版本。
但是,从技术上讲更正确但在实践中不常用的是zh_HANS
(通用)简体中文字符和zh_HANT
繁体中文字符,除非在极少数情况下有必要区分不同的国家。
zh_HANS
)和一般用途的实际内容()之间划出了一条很好的界限zh_CN
。您可以通过Google搜索这两个字词-相对于而言,这是7比1的差异zh_CN
,这实际上比我预期的要少。
inurl:zh_CN
提供430万次点击;inurl:zh_HANS
给出20K。仍然是一个非常有用的答案。
确实有对此的标准表示。人们遇到了与您完全相同的问题-语言相同,但方言或字符却不同-他们用两个字母的区域代码扩展了两个字母的语言代码。因此,您可能会在拥有通用的法语页面mydomain.com/fr
,但是对加拿大法语国家的读者进行国际化可能会使您离开mydomain.com/fr_CA
(加拿大)和mydomain.com/fr_FR
(法国)。一些平台使用破折号而不是下划线来分隔语言和区域代码(因此fr-CA
和fr-FR
)。
简体中文的标准语言环境是zh_CN
。繁体中文的标准语言环境是zh_TW
。
我会毫不犹豫地向您介绍实际的BCP 47标准文档,因为它们在细节上有些繁琐,在可读性上有些许不足。只需使用标准的语言环境标识符,例如Java所使用的标识符,就可以了。
语言取决于说语言的地方(哦!),因此语言和语言区域代码反映了这一现实。zh
是基本的语言代码,但是由于它有两种主要形式,分别是zh_Hans
和zh_Hant
,但它们仍然只是语言代码,而不是语言环境。
特定位置
为了充分指定哪一种语言在使用特定的位置,国家代码仍必须为后缀,这样做zh_Hans_HK
并zh_Hant_HK
支持简体和繁体中国,分别既作为口语在香港。
实际上,现实情况是,许多国家/地区通常需要比国家/地区代码更具体的内容,但这可能成倍地增加像CLDR这样的数据库的复杂性和维护性,以及诸如IP到位置详细信息提取之类的支持基础架构,通常无法获得或不够准确。
固定文字
现在,如果代码只是指定要在用户界面中使用哪组固定字符串,甚至是在网站上设置整个页面集,则实际上并不需要国家/地区后缀,除非在多个地方使用不同的语言足够多(基于位置的信息)来创建整个单独的资源集。
资源集越大,就越需要基于语言环境的语言代码[在这种情况下,仅是语言属性,而不是真实的语言环境,因此您可以随意调用它!],但是至少您需要仅在必要时这样做。
即时价值
但是,如果要即时格式化日期,时间,货币和数字等特定变量值,则区域设置就变得很重要,因为所有支持此类功能的工具(例如基于Unicode CLDR数据的工具)都希望它们。除非您要为每个已知的语言环境创建资源集并保持其恶心,否则这些语言环境必须是内部使用的UI语言设置所要使用的代码的单独设置。
浏览器语言工具
请注意,当在输入框中为可编辑网页指定区域设置时,并且为该字段启用了属性拼写检查或CSS时,浏览器的语言工具将根据该区域设置对字段进行拼写检查。
标准
您必须清楚资源集所提供的内容,因此请考虑:
电子表格可最大程度地减少维护费用
我使用电子表格来保存UI字符串,其中每个语言代码都有一个父代码,因此其字符串版本的单元格具有一个从父代码获取其字符串的公式。要为该语言和字符串创建一个自定义字符串,我只用确切的文本覆盖单元格公式。这样可以最大程度地减少资源维护量。我在最后运行一个宏,该宏为每种语言生成一个完整的资源文件。