- :这部分使用的是 ISO 639-1, ISO 639-2, ISO 639-3, ISO 639-5 中定义的语言代码,必填
- 这个部分由
primary-extlang
两个部分构成 primary
部分使用 ISO 639-1, ISO 639-2, ISO 639-3, ISO 639-5 中定义的语言代码,优先使用 ISO 639-1 中定义的条目,比如汉语zh
extlang
部分是在某些历史性的兼容性的原因,在需要非常细致地区别primary
语言的时候使用,使用 ISO 639-3 中定义的三个字母的代码,比如普通话cmn
- 虽然
language
可以只写extlang
省略primary
部分,但出于兼容性的考虑,还是建议加上primary
部分
- 这个部分由
script
: 这部分使用的是 (Wikipedia) 中定义的语言代码,比如简体汉字是 ,繁体汉字是zh-Hant
。region
: 这部分使用的是 [ISO 3166-1][iso3166-1] ([Wikipedia][iso3166-1_wiki]) 中定义的地理区域代码,比如zh-Hans-CN
就是中国大陆使用的简体中文。variant
: 用来表示extlang
的定义里没有包含的方言,具体的使用方法可以参考 。privateuse
: 用来表示私有协议中约定的一些语言上的区别,具体的使用方法可以参考 RFC 5646 。
其中只有 language
部分是必须的,其他部分都是可选的;不过为了便于编写程序,建议设计接口时约定语言标签的结构,比如统一使用 language-script-region
的形式( zh-Hans-CN
, zh-Hant-HK
等等)。
语言标签是大小写不敏感的,但按照惯例,建议 部分首字母大写, region
部分全部大写,其余部分全部小写。
有一点需要注意,任何合法的标签都必须经过 IANA 的认证,已通过认证的标签可以在查到。此外,网上还有一个非官方的标签搜索引擎。
相关资料:
- ISO 639-1 Code List ()
- ISO 639-2 Code List ()
- ISO 639-3 Code List
- (Wikipedia)
- (Wikipedia)
- 网页头部的声明应该是用 lang=”zh” 还是 lang=”zh-cn”? - 知乎
- 语种名称代码 :文中对带有方言(
extlang
)部分的标签介绍有误 - Choosing a Language Tag
具体格式说明:
客户端最好提供所有字段,如果没有办法提供,则应该使用空字符串
如果客户端请求时没有指定相应的时区,则服务端默认使用最后一次已知时区或者 时间返回相应数据。
PS 考虑到存在夏时制这种东西,所以不推荐客户端在请求时使用 Offset 。
时间格式遵循 (Wikipedia) 建议的格式:
- 日期
2014-07-09
- 时间
14:31:22+0800
- 具体时间
2007-11-06T16:34:41Z
- 持续时间
P1Y3M5DT6H7M30S
(表示在一年三个月五天六小时七分三十秒内) - 时间区间
2007-03-01T13:00:00Z/2008-05-11T15:30:00Z
、2007-03-01T13:00:00Z/P1Y2M10DT2H30M
、P1Y2M10DT2H30M/2008-05-11T15:30:00Z
- 重复时间
R3/2004-05-06T13:00:00+08/P0Y6M5DT3H0M0S
(表示从2004年5月6日北京时间下午1点起,在半年零5天3小时内,重复3次)
相关资料:
货币名称可以参考 (Wikipedia) 中的约定,标准为货币名称规定了三个字母的货币代码,其中的前两个字母是 [ISO 3166-1] 中定义的双字母国家代码,第三个字母通常是货币的首字母。在货币上使用这些代码消除了货币名称(比如 dollar )或符号(比如 $ )的歧义。
相关资料: