为什么需要 i18n?
英语是世界上使用最广泛的语言,但只有七分之一的人会说英语。它是 3.79 亿人的第一(母语)语言,但有 9.17 亿人说中文普通话,4.6 亿人说西班牙语,3.41 亿人说印地语。
在互联网呈指数级增长的新兴市场,存在大量非英语用户。如果你的网站可以在全球范围内进行翻译,那么你的潜在目标市场可能会增加 700%!
i18n 全称 Internationalization,也就是国际化的意思,因为单词太长,所以中间的 18 个字母被缩写为 18,再加上开头和结尾的字母,就组成了 i18n。
JavaScript i18n API 可以帮助我们对网站进行多语言翻译,让它们可以轻松适应使用不同语言用户的需求。
在本文中,我将介绍 i18n API 提供的各种方法,以及如何在实际项目中实现 i18n 来覆盖更广泛、更国际化的用户。
i18n 其实很难
从上面的描述中,i18n 看起来很容易,但是当你尝试去做的时候,又发现它并不简单。
基于拉丁语的语言可能表面上相似。比如,请求姓名、电子邮件和日期的表单翻译如下:
英语 | name | date | |
---|---|---|---|
西班牙语 | nombre | fecha | |
法语 | nom | date | |
德语 | name | datum |
Gettext 是一种在类 Unix 计算机操作系统上实现国际化和本地化程序的系统,它已经存在了几十年,而且这个库可以用在大多数编程语言中,在 nodejs 也可用。
在最简单的场景下,我们可以使用某种形式的标记来实现它。比如下面这段 HTML 模板:
<label for="name">{
{ NAME }}</label>
当用户将英语设置为主要语言时,NAME 会被动态替换。
但是只是最简单的案例,实际情况中会有很多