们经常需要用缩写的代码来表示一种语言,比如用 en 表示英语,用 de 表示德语。ISO 639 就是规定语种代码的国际标准。

最早的时候,ISO 639 规定的代码是,用两个拉丁字母表示一种语言,这被称为 ISO 639-1。但是,两个拉丁字母最多只有 262=676 种组合,而世界上已知的语言总数可能有六七千种,因此明显是不够的。所以,后来又规定了 ISO 639-2,用三个拉丁字母的组合表示一种语言。

常见语言的 ISO 代码如下表。

ISO639-1 Code ISO639-2 Code 中文名 英文名
ar ara 阿拉伯语 Arabic
ko kor 朝鲜语 Korean
de deu 德语 German
ru rus 俄语 Russian
fr fra 法语 French
zh zho 汉语 Chinese
la lat 拉丁语 Latin
pt por 葡萄牙语 Portuguese
ja jpn 日语 Japanese
es spa 西班牙语 Spainese
en eng 英语 English
it ita 意大利语 Italian
hi hin 印地语 Hindi
yi yid 意第绪语 Yiddish

完整的语言代码表请看这里

但是只规定语种代码还不够,在同一种语言中,往往还包括许多种变体,比如中文分为简体中文和繁体中文两种,因此还必须规定子代码。

以往,人们常用 zh-CN 表示在中国大陆地区使用的中文,也就是简体中文,用 zh-TW 表示在台湾地区使用的中文,也就是繁体中文。但是,这种表示法很不完善,试问中国大陆地区出版的繁体中文书籍,应该如何用代码表示呢?

目前,语言的标签表示法的国际标准是 RFC 4646,名称是《Tags for Identifying Languages》。

简单说,这个文件规定,一种语言的标签应该按照如下方式排列:

language-script-region-variant-extension-privateuse

1. language:这部分就是 ISO 639 规定的代码,比如中文是 zh。

2. script:表示变体,比如简体汉字是 zh-Hans,繁体汉字是 zh-Hant。

3. region:表示语言使用的地理区域,比如 zh-Hans-CN 就是中国大陆使用的简体中文。

4. variant:表示方言。

5. extension-privateus:表示扩展用途和私有标识。

一般约定,language 标签全部小写,region 标签全部大写,script 标签只有首字母大写。不同标签之间用连字号 – 链接。

下面列出一些与中文有关的语言标签。

zh-Hans 简体中文
zh-Hans-CN 大陆地区使用的简体中文
zh-Hans-HK 香港地区使用的简体中文
zh-Hans-MO 澳门使用的简体中文
zh-Hans-SG 新加坡使用的简体中文
zh-Hans-TW 台湾使用的简体中文
zh-Hant 繁体中文
zh-Hant-CN 大陆地区使用的繁体中文
zh-Hant-HK 香港地区使用的繁体中文
zh-Hant-MO 澳门使用的繁体中文
zh-Hant-SG 新加坡使用的繁体中文
zh-Hant-TW 台湾使用的繁体中文

此外,还有一些目前仍在使用,但因不符合规范,将被逐步替代(grandfathered)的标签。

zh-hakka 客家话
zh-cmn 普通话
zh-cmn-Hans 简体普通话
zh-cmn-Hant 繁体普通话
zh-gan 江西话
zh-guoyu 国语
zh-min 福建话
zh-min-nan 闽南话
zh-wuu 吴语(上海话)
zh-xiang 湖南话
zh-yue 粤语

有一点需要注意,任何合法的标签都必须经过 IANA 的认证,已通过认证的标签可以在这个网页查到。此外,网上还有一个非官方的标签搜索引擎