先回答问题:
什么关系?都是描述语言的。
什么区别?描述语言的范围不一样。
彻底让你搞明白这个问题需要追本溯源一直追到 http://www. rfc-editor.org/rfc/bcp/ bcp47.txt 规范才行,不过这里我简单描述下一般也能懂。
=== 进入正文 ===
首先一个语言的描述规则是下面这样的:
language-extlang-script-region-variant-extension-privateuse
语言文字种类-扩展语言文字种类-变体(或方言)-使用区域-变体(或方言)-扩展-私有
这些字符串对应的值拼接起来可以对应一个准确的语言。为了方便辨识和识别,通常还有约定:
所以你问题中的惯用写法应该改成 zh-CN 和 zh-Hans。前者第二位用了地区限制匹配范围,后者用了文字变体限制。具体值对应的内容可以在这里搜索 http://www. iana.org/assignments/la nguage-subtag-registry/language-subtag-registry 。帮你搬运过来就是:
%%
Type: region
Subtag: CN
Description: China
Added: 2005-10-16
%%
和
%%
Type: script
Subtag: Hans
Description: Han (Simplified variant)
Added: 2005-10-16
%%
所以区别就很明显了:
=== update ===
Script 和 Variant 的区别不是很好区分,翻译过来就更加不准确了,所以我在上面翻译部分都将其翻译为「变体(或方言)「,如果你对语言学比较了解,欢迎评论补充。