Welcome to Alex's Midway

国际化和本地化初步

April 27, 2020


写在前面

公司项目网站改版在即,需要扩充国际化和本地化支持。

查资料看了下这两个东西,理清了一些概念,简单记录一下。

国际化和本地化

根据wiki的说法,国际化与本地化(internationalization and localization)是指修改软件使之能适应目标市场的语言、区差异以及技术需要。

因为这两个单词太长了,所以前者简写为i18n(表示i和n之间有18个字母),后者是L10n。分别用小写i和大写L是为了和之后的数字1区分,i18n和I18n,显然前者更容易辨识;L10n同理。

  • 国际化

    将软件与特定语言及地区脱钩的过程,即软件移植到不同语言和地区时,不需要做工程上的改动

  • 本地化

    与国际化相反,指移植软件时,增加与特定区域有关的信息和必要翻译的过程

举个例子,前端最常见的国际化场景是给文案增加不同的语言版本,比如一个按钮文案是“提交”,在英文状态下可能会改成"Submit"。

另一个例子是处理时间,用统一逻辑处理不同时区之间的时间,这个算国际化;但是不同地区时间显示的格式不一样,同样是英语国家,英国的时间一般是dd/mm/yyyy,而美国的就是MM dd, yyyy,这个算本地化。

更常见的本地化场景是货币,不同国家的货币一般来说都是不同的,符号不同、计数的方式也不同。比如欧元区的德国,除了欧元的货币符号与美元不同之外,逗号和小数点的规则完全相反,2.100,50数值于美国的2,100.50

地区 货币 日期
美国 $1,234.56 Apr 27, 2020
英国 £1,234.56 27/04/2020
德国 1.234,56 € 27/04/2020
中国 ¥1234.56 2020/04/27

地区设置Locale

有了国际化和本地化的支持,那么下一步就是要获取用户的位置了,否则无法有效根据不同用户背景提供更匹配的服务,于是引入了一个地区设置locale的概念。

从用户的角度来说,操作系统一般会有一组相应的环境变量设置locale,而对于网站/服务提供者来说,其实locale更像是一种推定,根据已获得的某些用户数据,推测用户的背景,并让网站/服务根据这个假设为用户提供(可能)更匹配的服务,比如语言。后面讲到语言类别的时候会更具体的讲到。

例子: 语言设置

如何获取用户语言设置

优先级:https://support.google.com/webmasters/answer/182192?hl=en&ref_topic=2370587

domain->sub-domain->subdirectories->query parameters->http header accept-language->cookie->user agent

google如何检索不同语言版本

https://support.google.com/webmasters/answer/182192?hl=en&ref_topic=2370587