ES6新增了很多对于国际化的支持,比如时间格式,货币格式,数字格式等。
Internationalization & Localization(国际化与本地化)是指修改软件使之能适应目标市场的语言、地区差异以及技术需要。
国际化是指在设计软件,将软件与特定语言及地区脱钩的过程。当软件被移植到不同的语言及地区时,软件本身不用做内部工程上的改变或修正。本地化则是指当移植软件时,加上与特定区域设置有关的信息和翻译文件的过程。
Intl 对象是 ECMAScript 国际化 API 的一个命名空间,它提供了精确的字符串对比,数字格式化,日期和时间格式化。Collator,NumberFormat 和 DateTimeFormat 对象的构造函数是 Intl 对象的属性。
Intl.Collator(): 语言敏感的字符串对比功能对象,collators 的构造函数
Intl.DateTimeFormat():语言敏感的日期和时间格式化功能对象的构造函数
Intl.NumberFormat():语言敏感的数字格式化功能对象的构造函数
Collation(排序规则)
对于字符串集合的排序和检索,可以根据地区和Unicode为参数进行排序。
var list = ["ä", "a", "z"]
var l10nDE = new Intl.Collator("de")
var l10nSV = new Intl.Collator("sv")
l10nDE.compare("ä", "z") === -1
l10nSV.compare("ä", "z") === +1
console.log(list.sort(l10nDE.compare)) // 输出: [ "a", "ä", "z" ]
console.log(list.sort(l10nSV.compare)) // 输出: [ "a", "z", "ä" ]
Number Formatting(数字格式化)
可以根据数字分组和本地的分隔符,对数字进行格式化。
var l10nEN = new Intl.NumberFormat("en-US")
var l10nDE = new Intl.NumberFormat("de-DE")
console.log(l10nEN.format(1234567.89)); // 输出: 1,234,567.89
console.log(l10nDE.format(1234567.89)); // 输出: 1.234.567,89
Currency Formatting(货币格式化)
可以根据数字分组、本地的分隔符和附加的货币符号,对数字进行格式化。
var l10nUSD = new Intl.NumberFormat("en-US", { style: "currency", currency: "USD" })
var l10nGBP = new Intl.NumberFormat("en-GB", { style: "currency", currency: "GBP" })
var l10nEUR = new Intl.NumberFormat("de-DE", { style: "currency", currency: "EUR" })
console.log(l10nUSD.format(100200300.40)); // 输出: $100,200,300.40
console.log(l10nGBP.format(100200300.40)); // 输出: £100,200,300.40
console.log(l10nEUR.format(100200300.40)); // 输出: 100.200.300,40 €
Date/Time Formatting(日期/时间格式化)
可以根据本地的顺序和分隔符格式化时间和日期。
var l10nEN = new Intl.DateTimeFormat("en-US")
var l10nDE = new Intl.DateTimeFormat("de-DE")
console.log(l10nEN.format(new Date("2015-01-02"))); // 输出: 1/2/2015
console.log(l10nDE.format(new Date("2015-01-02"))); // 输出: 2.1.2015
其他
完整代码:https://github.com/guyoung/GyWxappCases/tree/master/ES6