关于I18N

Published: 23 Aug 2015 Category: tech

介绍

I18N,来源于单词internationalization,“国际化”,中间有18个字符。

提出的意义在于让产品无需做很大的改动就能适应不同的语言和地区的需要。对于程序,主要体现在,不需要修改内部代码,就能够达到多语言及地区的不同界面。(有时也用g11n这个简称,来着于globalization)

现状

现在这方面遇到的难题是:翻译工作比较困难。

当然,这个国际化也不仅仅体现在语言上,还表现在:

文化

  • 图片和颜色:这牵涉到理解和文化适宜的议题。
  • 名字和称谓
  • 政府给定的编码(如美国的社会安全码,英国的National Insurance number,爱沙尼亚的Isikukood及其它各国的身份证号码)和护照 -电话号码、地址和国际邮递区号 -货币 (符号、货币标志的位置) -度量衡 -纸张大小

书写习惯

  • 日期跟时间的格式,包含各式日历。
  • 时区(在国际场合会使用世界标准时间)
  • 数字格式(小数点、分隔点的位置、分隔所用的字符)

实现机制

通常一个locale标识符至少包括一个语言标识符和一个区域标识符。

在网页的多语言切换中,比如wiki: en.wikipedia.org/wiki/Wiki zh.wikipedia.org/wiki/Wiki 直接在域名中进行切换,还有通过加参数(get)来设置多语言(如zh-cn),还有通过js来设置。

知识点:

  • 通过js获取系统的语言环境设置;
  • 获取浏览器的语言环境;
  • 获取用户的语言配置;

相应代码:

<script type="text/javascript">
document.write( "浏览器语言:"+navigator.browserLanguage );
document.write( "<br />系统语言:"+navigator.systemLanguage );
document.write( "<br />自然语言:"+navigator.userLanguage );
</script>

其他

除了i18n,L10n(localization)、g11n(globalization),还有m17n(multilingualization)。

它们的区别:

  • i18n支持多种语言,但是同一时间只能是英文和一种选定的语言,例如英文+中文、英文+德文、英文+韩文等等;
  • L10n(localization),支持2种语言,英文和另外一种语言(例如中文);
  • g11n(globalization),简单的理解可以认为g11n = i18n + L10n。
  • m17n(multilingualization)可以在同一时间支持多种语言,例如你可以在一个页面里看到中文、英文、德文和韩文。