App多语言本地化开发中语言编码知识介绍及使用

所属分类:Csbase | 发布于 2023-06-09 11:57:23

开发的App支持本地化,也就是提供了多语言的版本,本地化的配置一般在app项目里直接配置,但是还有一些数据需要从后台接口返回,那么这个时候接口的返回也需要多语言。常见的做法是将app正在使用的语言传给后台接口,后台接口根据传入的语言信息返回对应的内容。

想要Android和iOS开发中,获取当前使用的语言,并且能正确的使用它们,就必须要了解语言编码,也就是国家语种代码标准

介绍

先来看在网站在多语言的示例:

https://domain.com/cn

https://domain.com/en

https://domian.com/zh

https://domian.com/zh-cn

https://domain.com/zh-hans

https://domain.com/zh-hans-cn

https://domain.com/zh-tw

https://domain.com/zh-hk

看起来五花八门,它们之间到底有什么区别,在开发中到底要怎么使用,我们将在这篇文章中搞清楚。

语言标准

ISO 639

ISO 639是国际标准组织为各语言定制的语言代码;

这个标准用两个字母表示一个语种,比如说zh表示中文、en表示英文;zh是zhongwen这个拼音的缩写;en是english这个单词的缩写;

问题与解决

字母只有26个,平方一下两个字母最多也就能表示676个语种;面对世界上几千个语种,这种表示明显是不够用的;于是两个字母的ISO 639的标准作为ISO 639-1;接着又扩展了一个三个字母的版本ISO 639-2;这套三个字母的标准对大多数国家已经够用了;比如中文对应的语种代码是zho。

但是另外一个问题出来了,中文可是分简体中文繁体中文的;如果语种还有子类,那这个标准就又不够我们用了。

结论

ISO 639是以语种为区分的。

ISO 6399

上面的ISO 639规范的是语种代码,但是我们知道英国和美国都使用的英语,如果我想具体表达某个国家地区呢?

ISO 3166规范就是定义国家和地区代码的:CN 是 China 的简称,TW 是 Taiwan,Province Of China 的简称,US 是 United States Of America 的简称;

ISO 3166标准还被广泛的应用于域名后缀,中国的国家顶级域名就是 .cn ;

RFC 1766

有了ISO 639语种代码和ISO 3166国家地区代码,我们组合起来就可以同时满足语种和国家的需求了。

RFC 1766 标准就是一个组合方案,它把 ISO 639 和 ISO 3166 用 - 拼接来表示不同国家和地区使用的语种;

比如说 zh-CN 表示中国大陆的中文,zh-TW 则表示台湾地区使用的中文,zh-HK 则表示香港地区使用的中文;

在 RFC 1766 标准下;我们一般使用 zh-CN 表示简体中文,而用 zh-TW 表示繁体中文;

RFC 1766 还被广泛的用于HTML 的 lang;

RFC 4646

上面的 RFC 1766 标准已经可以让我们具体到语种和地区了;

但是又有很多时候我们并不很关心地区,而是比较关心子语种;比如说我们可能值需要细化到中文简体和中文繁体就行了,而并不打算具体到香港地区使用的繁体还是太晚地区使用的繁体;

虽然 RFC 1766 中用 zh-TW 表示繁体;已经满足区分简体中文和繁体中文的需求,但是面向香港客户给一个 zh-TW 而不是 zh-HK 总还是让人略有不爽,这时候我们需要一个能用来代表繁体中文又没有起义的代码,这就是接下来要将的 RFC 4646。

这里依然以中文为例,在 RFC 4646 中代码第一部分同样是 ISO 639-1 的两位缩写 zh ;后面跟的是 HansHantHan 是汉语的意思;s 是 Simplified 简体;t 是 Traditional 繁体;zh-Hans 表示简体中文;zh-Hant 表示繁体中文;

如果想具体到地区呢?RFC 4646 标准还可以再加第三部分 ISO 3166国家代码;比如说 zh-Hans-CN 表示大陆地区使用的简体中文;

比如说 zh-Hant-TW 表示台湾地区使用的繁体中文;不过一般不用第三部分;

总结

在开发过程中:

如果是想按国家划分可以使用 ISO 3166标准;如果是想按语种划分可以使用 ISO 639-1 标准。

如果是想具体到简体和繁体;RFC 1766 和 RFC 4646 两个标准都可以。

但是如果只是想表示语种而不想纠结地区;那么显然 RFC 4646 会更合适。

文哥博客(https://wenge365.com)属于文野个人博客,欢迎浏览使用

联系方式:qq:52292959 邮箱:52292959@qq.com

备案号:粤ICP备18108585号 友情链接