[学生与学究] 关于语言代码的标准

2016-07-15 18:05:21 +08:00
 iugo

前言:

以前对语言代码很模糊, 最常见的也就是 zh-CN.

今天在看 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation 的时候, 就想弄清楚语言代码究竟怎样才是标准的, 就查了些资料, 顺便分享. 前辈请指教.

对于 IT 从业者来说, RFC 5646 是首先要看的. 依据的具体代码要看 ISO 639.

如果想直接点的话, 看这个 (RFC 5646 根据 ISO 639 生成的) 列表:
http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry

标准:

RFC 5646 https://tools.ietf.org/html/rfc5646
被分类为 目前的最佳惯例(Best Current Practice), 而不是标准.

ISO 639 http://www.iso.org/iso/home/standards/language_codes.htm
目前共分为五部分(曾经有过第六部分, 已被废弃).


经验:

许多扩展语言(extlang)都要直接使用. 比如之前我们用 zh-cmn 表示中文普通话, 现在使用 cmn 替代.

语言如果有 script 则需要加上, 比如 Hanszh 的 script. (script 的首字母大写)
但 RFC 5646 4.1.2 也说了 zh-HK 这种用法仍然是有效的.

三段式是最为详细的代码, 比如 语言(language)-子语言(script)-地区(region).

根据实际情况去选代码, 并不能说也特殊越好, 也不能说越兼容越好.
比如一篇文章是用中文简体书写, 内容的语境也是大陆的事情, 那么就使用 zh-Hans-CN. 如果一个社区服务各种华裔, 那么使用 zh 也是合适的.

例子:

粤语使用 yue 即可. 吴语使用 wuu 即可.

简体汉字, zh-Hans. 繁体汉字, zh-Hant. 台湾正体, zh-Hant-TW.

可以通过没有被 Deprecated 的 Type: redundant 找到常见的语言代码.


备注:

什么是 macrolanguage:

https://en.wikipedia.org/wiki/ISO_639_macrolanguage https://zh.wikipedia.org/wiki/ISO_639-3#.E5.A4.A7.E8.AA.9E.E8.A8.80_.28Macrolanguages.29

language-subtag-registry 例子:

Type: language
Subtag: zh
Description: Chinese
Added: 2005-10-16
Scope: macrolanguage
1432 次点击
所在节点    程序员
0 条回复

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/292749

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX