📜  国际化在 JavaScript 中是如何工作的?

📅  最后修改于: 2022-05-13 01:56:52.055000             🧑  作者: Mango

国际化在 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浏览器
  • 火狐
  • 苹果浏览器
  • 歌剧