内容简介:国内因为版号的问题,导致很多游戏厂商选择出海。在国际化的市场要想取得好的成绩,就必须要做好深度的本地化,其中最基础的一块就是语言。为了给用户提供更好的游戏体验,通常用户第一次进游戏的时候,会根据用户当前设备设置里所选择的语言来设置游戏的默认语言。通常系统返回的是 语言-国家/地区标识,如 ja-jp,日语-日本。en-us,英文-美国。当然还有比如 en-CA,英文-加拿大。每一个语言都可能对应很多国家/地区,一个国家/地区也可能有很多种语言。比如香港,可能用繁体中文 zh-HK/zh-Hant-HK
国内因为版号的问题,导致很多游戏厂商选择出海。在国际化的市场要想取得好的成绩,就必须要做好深度的本地化,其中最基础的一块就是语言。
为了给用户提供更好的游戏体验,通常用户第一次进游戏的时候,会根据用户当前设备设置里所选择的语言来设置游戏的默认语言。
通常系统返回的是 语言-国家/地区标识,如 ja-jp,日语-日本。en-us,英文-美国。当然还有比如 en-CA,英文-加拿大。每一个语言都可能对应很多国家/地区,一个国家/地区也可能有很多种语言。比如香港,可能用繁体中文 zh-HK/zh-Hant-HK 或者 en-HK。这就让情况变得比较复杂了,所以我们需要先了解相应的规范。
根据 RFC 4646 的规范,语言的标签表示法
A Language-Tag consists of:
langtag ; generated tag
-or- private-use ; a private use tag
-or- grandfathered ; grandfathered registrations
langtag = (language
["-" script]
["-" region]
*("-" variant)
*("-" extension)
["-" privateuse])
language = "en", "ale", or a registered value ;<strong>shortest ISO 639 code</strong>
script = "Latn", "Cyrl", "Hant" ; <strong>ISO 15924 code</strong>
region = "US", "CS", "FR" ISO 3166 codes
"419", "019", or UN M.49 codes
;<strong>ISO 3166 code</strong>
variant = "rozaj", "nedis", "1996", multiple subtags can be used in a tag
extension = single letter followed by additional subtags; more than one extension
may be used in a language tag
private-use = "x-" followed by additional subtags, as many as are required
Note that these can start a tag or appear at the end (but not
in the middle)
grandfathered = tags listed in the old registry that are not otherwise redundant (a closed list)
分为 language["-" script]["-" region]*("-" variant)*("-" extension)["-" privateuse] 六个部分。
在安卓和iOS上返回的通常只用到前三项(如果语言没有变种,则略过script项,返回类似 en-US 这种,其中 US 为美国),分别是 language – ISO 639,script – ISO 15924, region – ISO 3166。
其中地区 region 全大写(如中国CN,美国US),language 全小与(如中文zh,英文en), script 是首字母大写(语言的变种,如中文分:简体中文与繁体中文)。
示例:zh-Hant-HK 中文 - 繁体中文 - 香港地区。
language 由 ISO 639 规范进行定义的,将不同语种的名称分为二个字母的简称和三个字母的简称,这里使用最短的(二个字母)的简称,比如简体中文/繁体中文都使用zh表示。
详情可 查看维基百科>>
ISO 51924 列表>> 简体中文就是 Hans 繁体中文就是 Hant
最后一个是地区 region,它在 ISO 3166 规范 中定义过了,这里使用二位字母表示。CN 表示中国、TW表示台湾、US 表示美国、HK 表示香港,全部为大写。
到这里基本上理清楚了,当我们看到
zh-Hant-MO 时就知道是繁体中文 - 澳门地区。
更多的示例如下:
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 台湾使用的繁体中文
对应获取设备当前语种标识的代码。
安卓(注意 getScript 方法需要 API 21+才支持):
Locale locale;
if (Build.VERSION.SDK_INT >= 24) {
locale = LocaleList.getDefault().get(0);
} else {
locale = Locale.getDefault();
}
String strLanguageIden = locale.getLanguage() + "-" + locale.getScript() + "-" + locale.getCountry();
iOS代码
NSString *pfLanguage = [NSLocale preferredLanguages][0];
preferredLanguage : zh-Hant-HK
如果只选英文,不选英文(国家/地区)它会将下面的地区带上。
preferredLanguage : en-CN (这里的CN就是上面截图中的地区-中国这一栏)
如果选择 English(Canada)加拿大地区,则会输出 en-CA
preferredLanguage : en-CA
根据以上特征,我们只需要区分第一位是什么。特别要注意的是我们只区分简体与繁体中文,其它语言如果我们需要区分变体,可内嵌判断。
if (strLanguageIden.indexOf("zh-") > -1) {
// 中文
if (strLanguageIden.indexOf("zh-CN") > -1 || strLanguageIden.indexOf("zh-Hans") > -1) {
// 简体中文
strLanguage = "cn";
} else {
// 繁体中文
strLanguage = "tw";
}
} else if (strLanguageIden.indexOf("en-") > -1) {
// 英语
strLanguage = "en";
} else if (strLanguageIden.indexOf("ja-") > -1) {
// 日语
strLanguage = "jp";
} else if (strLanguageIden.indexOf("ko-") > -1) {
// 韩语
strLanguage = "kr";
} else if (strLanguageIden.indexOf("fr-") > -1) {
// 法语
strLanguage = "fr";
} else if (strLanguageIden.indexOf("de") > -1) {
// 德语
strLanguage = "ge";
} else if (strLanguageIden.indexOf("vi-") > -1) {
// 越南文
strLanguage = "vn";
} else if (strLanguageIden.indexOf("th-") > -1) {
// 泰文
strLanguage = "th";
} else {
// 默认英语
strLanguage = "en";
}
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 国际化之Android设备支持的语种
- 支持117个语种互译!语种最多的机器翻译云平台上线
- ICML 2019 | 微软提出极低资源下语音合成与识别新方法,小语种也不怕没数据了!
- Flutter实现国际化
- Webnovel 国际化实践
- 聊聊国际化MessageSource
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
现代信息检索
(西班牙) Ricardo Baeza-Yates、(巴西)Berthier Ribeiro-Neto / 机械工业出版社 / 2011-3 / 78.00元
本书不仅详细介绍了信息检索的所有主要概念和技术,以及有关信息检索面的所有新变化,而且其组织使读者既可以对现代信息检索有一个全面的了解,又可以获取现代信息检索所有关键主题的详细知识。本书的主要内容由信息检索领域的代表人物Baeza-Yates和Ribeiro-Neto编写,对于那些希望深入研究关键领域的读者,书中还提供了由其他主要研究人员编写的关于特殊主题的发展现状。 与上一版相比,本版在内容......一起来看看 《现代信息检索》 这本书的介绍吧!