JS不完全国际化&本地化手册 之 理论篇
(编辑:jimmy 日期: 2024/11/19 浏览:3 次 )
前言
"有"的阶段而已。趁着这个机会好好学习整理一下,为后面的技术选型做准备。
"何为国际化">何为国际化?
"你好!"替换为"What's up, man!",其实具体是分为以下5方面:
- 字符串替换
"你好!"替换为"What's up, man!"
.
- 数字表示方式
"本地化的关键-language-tag">本地化的关键 —— Language Tag
"en": { "name": "Enter Name" },
"zh-CN": { "name": "输入姓名" }
}
"语法规则">语法规则
注意以下采用ABNF语言描述(ABNF的语法请参考语法规范:BNF与ABNF)
Language-Tag = langtag
/ privateuse
/ grandfathered
langtag = language
["-" script]
["-" region]
*("-" variant)
*("-" extension)
["-" privateuse]
可以看到Language-Tag
分为langtag
,privateuse
和 grandfatherd
三个子类,下面我们先了解一般情况用不上的两个吧!
privateuse
"x" 1*("-" (1*8alphanum))
示例:x-zh-CN
是privateuse,其意思不一定与languagezh-CN
一致。
注意: 只作为小集团内部用可以,决不能大范围适用。
grandfathered
"en-GB-oed" ; irregular tags do not match
/ "i-ami" ; the 'langtag' production and
/ "i-bnn" ; would not otherwise be
/ "i-default" ; considered 'well-formed'
/ "i-enochian" ; These tags are all valid,
/ "i-hak" ; but most are deprecated
/ "i-klingon" ; in favor of more modern
/ "i-lux" ; subtags or subtag
/ "i-mingo"
/ "i-navajo"
/ "i-pwn"
/ "i-tao"
/ "i-tay"
/ "i-tsu"
/ "sgn-BE-FR"
/ "sgn-BE-NL"
/ "sgn-CH-DE"
regular = "art-lojban" ; these tags match the 'langtag'
/ "cel-gaulish" ; production, but their subtags
/ "no-bok" ; are not extended language
/ "no-nyn" ; or variant subtags: their meaning
/ "zh-guoyu" ; is defined by their registration
/ "zh-hakka" ; and all of these are deprecated
/ "zh-min" ; in favor of a more modern
/ "zh-min-nan" ; subtag or sequence of subtags
/ "zh-xiang"
注意: 几乎所有grandfarthered标签均可被当前registry的标签及其组合作替代(像i-tao
可以被tao
代替),因此如无意外请使用现行的标签吧。
下面就到了我们的重头戏langtag了,首先我们看看langtag下的第一个subtag——language.
Primary language subtag
"-" extlang]
/ 4ALPHA
/ 5*8ALPHA
extlang = 3ALPHA
*2("-" 3ALPHA)
看到language有三种形式,其中让我比较好奇的是第一种2*3ALPHA ["-" extlang]
。这种形式中前面的2*3ALPHA
称为macrolanguage,用于标明资源对应一种语言的汇总,而具体的某一种语言/方言则通过extlang指定。而包含extlang部分的language也被称为encompassed language.
如zh-cmn
和zh-yue
就是encompassed language,其中zh
是macrolanguage,而cmn
和yue
则是extlang。
"script-subtag">Script subtag
"region-subtag">Region subtag
"variant-subtag">Variant subtag
"extension-subtag">Extension subtag
"-" (2*8alphanum))
singleton = DIGIT
/ %x41-57
/ %x59-5A
/ %x61-77
/ %x79-7A
现在仅支持u
作为sigleton的值。
示例:de-DE-u-co-phonebk
表示采用电话本核对的方式对内容进行排序等操作。
更多关于language-tag的信息请参考BCP 47
如何选择Language Tag
"cmn">
小陈说:"老大爷,东方广场怎么走啊?"
老大爷回答道:"<span lang="yue">你讲咩也啊?我听唔明喔。</span>"
</p>
示例2:下文含大陆人讲英语、香港人讲普通话和美国人说英语
<p lang="cmn">
小陈说:"<span lang="en-CN">Hi, where are you come from"
李先生说:"<span lang="cmn-HK">你的英文跟我的普通话一样普通啊,哈哈!</span>"
Simon说:"<span lang="en">Hey, what's up!</span>"
</p>
"http://www.iana.org/assignments/language-subtag-registry/language-subtag-registry">IANA Language Subtag Registry中了。
假如觉得查找起来还是不方便,那么就使用Language Subtag Lookup tool吧!
另外若不清楚各国各地区所使用的语言或方言时,可通过Ethnologue查看,直接点击地图上的区域即可获取相应的subtag信息。
总结
"感谢">感谢
网页头部的声明应该是用 lang="zh" 还是 lang="zh-cn"?
Language Subtag Registry
BCP 47
Language on the Web
Choosing a Language Tag
Language tags in HTML and XML
上一篇:微信小程序(十二)text组件详细介绍
下一篇:Javascript json object 与string 相互转换的简单实现
荣耀猎人回归!七大亮点看懂不只是轻薄本,更是游戏本的MagicBook Pro 16.
人们对于笔记本电脑有一个固有印象:要么轻薄但性能一般,要么性能强劲但笨重臃肿。然而,今年荣耀新推出的MagicBook Pro 16刷新了人们的认知——发布会上,荣耀宣布猎人游戏本正式回归,称其继承了荣耀 HUNTER 基因,并自信地为其打出“轻薄本,更是游戏本”的口号。
众所周知,寻求轻薄本的用户普遍更看重便携性、外观造型、静谧性和打字办公等用机体验,而寻求游戏本的用户则普遍更看重硬件配置、性能释放等硬核指标。把两个看似难以相干的产品融合到一起,我们不禁对它产生了强烈的好奇:作为代表荣耀猎人游戏本的跨界新物种,它究竟做了哪些平衡以兼顾不同人群的各类需求呢?