ECMA-402 (Intl) status update
Daniel Ehrenberg, ECMA-402 interim editor
Igalia, in partnership with Mozilla
November 2018 TC39 meeting
What is ECMA-402?
JavaScript’s built-in internationalization library
var date = new Date(Date.UTC(2012, 11, 20, 3, 0, 0));
new Intl.DateTimeFormat('en-US').format(date);
// "12/20/2012"
new Intl.DateTimeFormat('en-GB').format(date);
// "20/12/2012"
How is Intl developed?
Pull requests
Pull requests
Stage 3 proposals
Intl.RelativeTimeFormat (Repo; Stage 3)
let rtf = new Intl.RelativeTimeFormat("en");��rtf.format(100, "day");�// "in 100 days"
Intl.Locale (Repo; Stage 3)
let loc = new Intl.Locale("en-US");�loc.language�// "en"
Intl.ListFormat (Repo; Stage 3)
let o = new Intl.ListFormat("en-GB");�o.format(['foo', 'bar', 'baz']�// "foo, bar, and baz"
Intl.Segmenter (Repo; Stage 3)
// Create a segmenter in your locale�let segmenter = new Intl.Segmenter("fr", {granularity: "word"});��// Get an iterator over a string�let iterator = segmenter.segment("Ceci n'est pas une pipe");��// Iterate over it!�for (let {segment, breakType} of iterator) {� console.log(`segment: ${segment} breakType: ${breakType}`);� break;�}
Stage 2 proposals
Additional Intl.NumberFormat options
Intl.DateTimeFormat.prototype.formatRange()
Stage 0/1 proposals
dateStyle/timeStyle
let o = new Intl.DateTimeFormat("en" , { timeStyle: "short" });�console.log(o.format(Date.now())); // "13:31"�let o2 = new Intl.DateTimeFormat("en" , { dateStyle: "short" });�console.log(o2.format(Date.now())); // "21.03.2012"�let o3 = new Intl.DateTimeFormat("en" , { timeStyle: "medium", dateStyle: "short" });�console.log(o3.format(Date.now())); // "21.03.2012, 13:31"
DisplayNames
Stage 0
(Fill in details soon)
Get involved!
Get involved!