国际化在 JavaScript 中是如何工作的?
国际化(也称为 i18n)是制造或改造产品和服务的方法,因此它们将简单地针对特定的母语和文化进行定制。本地化(也称为 L10n)是针对特定地区或语言调整国际化计算机代码的方法。换句话说,国际化是调整您的计算机代码以支持多种文化(货币格式、日期格式等)的方法,而本地化是实现一种或其他文化的方法。
这两个流程有时会被在许多国家/地区有兴趣的公司采用,但对于在自己的网站上执行的开发人员来说,它们可能也很方便。举个例子,你可能知道,我是意大利人,我拥有一个网站。我的网站以英文呈现,但我会安排将其国际化,然后将其本地化为意大利语。这对于以意大利语为母语且不太了解英语的人通常很有用。
开发人员假设 i18n 是关于非英语语言的翻译。 i18n 只是将本申请扩展到多个国家或市场所必需的。我不断尝试证明 i18n 是关于正常“说话”的。每个应用程序,出于某种目的,都需要与其用户“交谈”。与用户交谈,应用程序可能需要多元化支持、性别变化、日期信息、品种信息和货币信息。即使用英语,也很难正确地做到这一点。
全球化和 JavaScript 国际化 API
对你们中的一些人来说,这可能会让人感到惊讶,但是,JavaScript 在组操作 API (也称为 ECMA-402)中对组操作具有原生支持。
Intl 对象是窗口对象上可用的对象,它充当国际化 API 的命名空间。
此 API 目前提供了格式化数字和日期以及比较特定语言中的字符串的方法。
既然您知道 Internationalization API 的存在,您可能会认为 Globalize 在幕后使用它。
这种方法肯定会导致更高的日期和品种格式性能。
但是,由于浏览器之间的支持率很低并且确实不一致,因此该库不使用它。
现在我想让您体验一下国际化 API。
格式化日期
var date = new Date(2019, 2, 22);
// "22/02/2019"
console.log(new Intl.DateTimeFormat('it-IT').format(date));
// "02/22/2019"
console.log(new Intl.DateTimeFormat('en-US').format(date));
// "22/02/2019"
console.log(new Intl.DateTimeFormat('en-GB').format(date));
输出:
22/3/2019
3/22/2019
22/03/2019
在此示例中,我使用 DateTimeFormat 构建器来替换日期格式化程序以滥用所需的场所( “it-IT” 、 “en-US”和“en-GB” )。
然后,我调用格式方法来格式化日期对象。
格式化数字
var number = 2153.93;
// "2.153, 88"
console.log(new Intl.NumberFormat('it-IT').format(number));
// "2, 153.88"
console.log(new Intl.NumberFormat('us-US').format(number));
// "2, 153.88"
console.log(new Intl.NumberFormat('en-GB').format(number));
输出:
2.153,93
2,153.93
2,153.93
结论
在本文中,我讨论了国际化是什么以及为什么它们对于扩大产品市场很重要。我通过提到一些受支持的功能向您简要介绍了国际化 API,然后展示了一些使用示例。
支持的浏览器:国际化API支持的浏览器如下:
- 谷歌浏览器
- IE浏览器
- 火狐
- 苹果浏览器
- 歌剧