Skip to content

Commit a7157de

Browse files
committed
add Internationalization & Localization features (rse#47)
1 parent 56c236b commit a7157de

File tree

2 files changed

+160
-0
lines changed

2 files changed

+160
-0
lines changed

features.txt

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1594,3 +1594,63 @@ Make calls corresponding to the object meta-operations.
15941594
5| // no equivalent in ES5
15951595
5| |Object.getOwnPropertyNames|(obj); // [ "a", "b" ]
15961596

1597+
1598+
Internationalization & Localization
1599+
===================================
1600+
1601+
Collation
1602+
---------
1603+
1604+
Sorting a set of strings and searching within a set of strings.
1605+
Collation is parameterized by locale and aware of Unicode.
1606+
1607+
6| // in German, "ä" sorts with "a"
1608+
6| // in Swedish, "ä" sorts after "z"
1609+
6| var list = [ |"ä"|, "a", "z" ];
1610+
6| var i10nDE = new Intl.Collator(|"de"|);
1611+
6| var i10nSV = new Intl.Collator(|"sv"|);
1612+
6| i10nDE.compare("ä", "z") === |-1|;
1613+
6| i10nSV.compare("ä", "z") === |+1|;
1614+
6| console.log(list.sort(i10nDE.compare)); // [ "a", |"ä"|, "z" ]
1615+
6| console.log(list.sort(i10nSV.compare)); // [ "a", "z", |"ä"| ]
1616+
1617+
5| // no equivalent in ES5
1618+
1619+
Number Formatting
1620+
-----------------
1621+
1622+
Format numbers with digit grouping and localized separators.
1623+
1624+
6| var i10nEN = new Intl.NumberFormat(|"en-US"|);
1625+
6| var i10nDE = new Intl.NumberFormat(|"de-DE"|);
1626+
6| i10nEN.format(1234567.89) === |"1,234,567.89"|;
1627+
6| i10nDE.format(1234567.89) === |"1.234.567,89"|;
1628+
1629+
5| // no equivalent in ES5
1630+
1631+
Currency Formatting
1632+
-------------------
1633+
1634+
Format numbers with digit grouping, localized separators and attached currency symbol.
1635+
1636+
6| var i10nUSD = new Intl.NumberFormat("en-US", { style: "currency", currency: |"USD"| });
1637+
6| var i10nGBP = new Intl.NumberFormat("en-GB", { style: "currency", currency: |"GBP"| });
1638+
6| var i10nEUR = new Intl.NumberFormat("de-DE", { style: "currency", currency: |"EUR"| });
1639+
6| i10nUSD.format(100200300.40) === |"$100,200,300.40"|;
1640+
6| i10nGBP.format(100200300.40) === |"£100,200,300.40"|;
1641+
6| i10nEUR.format(100200300.40) === |"100.200.300,40 €"|;
1642+
1643+
5| // no equivalent in ES5
1644+
1645+
Date/Time Formatting
1646+
--------------------
1647+
1648+
Format date/time with localized ordering and separators.
1649+
1650+
6| var i10nEN = new Intl.DateTimeFormat(|"en-US"|);
1651+
6| var i10nDE = new Intl.DateTimeFormat(|"de-DE"|);
1652+
6| i10nEN.format(new Date("2015-01-02")) === |"1/2/2015"|;
1653+
6| i10nDE.format(new Date("2015-01-02")) === |"2.1.2015"|;
1654+
1655+
5| // no equivalent in ES5
1656+

index.html

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -254,6 +254,18 @@
254254
<a href="#Reflection">Reflection</a> <i class="fa fa-arrow-circle-right"></i></li>
255255
</ul>
256256
</li>
257+
<li class="title">Internationalization & Localization
258+
<ul>
259+
<li class="subtitle subtitle_Collation">
260+
<a href="#Collation">Collation</a> <i class="fa fa-arrow-circle-right"></i></li>
261+
<li class="subtitle subtitle_NumberFormatting">
262+
<a href="#NumberFormatting">Number Formatting</a> <i class="fa fa-arrow-circle-right"></i></li>
263+
<li class="subtitle subtitle_CurrencyFormatting">
264+
<a href="#CurrencyFormatting">Currency Formatting</a> <i class="fa fa-arrow-circle-right"></i></li>
265+
<li class="subtitle subtitle_DateTimeFormatting">
266+
<a href="#DateTimeFormatting">Date/Time Formatting</a> <i class="fa fa-arrow-circle-right"></i></li>
267+
</ul>
268+
</li>
257269
</ul>
258270

259271
<!-- ATTENTION: END OF GENERATED CODE. DO NOT EDIT MANUALLY -->
@@ -2158,6 +2170,94 @@
21582170
<i class="icon fa fa-circle"></i>
21592171
<i class="icon fa fa-times-circle"></i>
21602172
</div>
2173+
</div>
2174+
<div id="Collation" class="showcase showcase_Collation"> <div class="title">Internationalization & Localization</div>
2175+
<div class="subtitle">Collation</div>
2176+
<div class="desc">Sorting a set of strings and searching within a set of strings.
2177+
Collation is parameterized by locale and aware of Unicode.</div>
2178+
<div class="js es6">
2179+
<div class="title"><b>ECMAScript 6</b> &mdash; syntactic sugar: <span class="style reduced">reduced</span> | <span class="style traditional">traditional</span></div>
2180+
<div class="code"><span class="comment">// <span class="keyword">in</span> German<span class="punctuation">,</span> <span class="literal">"ä"</span> sorts with <span class="literal">"a"</span></span><span class="comment">
2181+
// <span class="keyword">in</span> Swedish<span class="punctuation">,</span> <span class="literal">"ä"</span> sorts after <span class="literal">"z"</span></span>
2182+
<span class="keyword">var</span> list<span class="punctuation"> = </span><span class="punctuation">[</span> <span class="mark"><span class="literal">"ä"</span></span><span class="punctuation">,</span> <span class="literal">"a"</span><span class="punctuation">,</span> <span class="literal">"z"</span> <span class="punctuation">]</span><span class="semi">;</span>
2183+
<span class="keyword">var</span> i<span class="literal">10</span>nDE<span class="punctuation"> = </span><span class="keyword">new</span> Intl<span class="punctuation">.</span>Collator<span class="punctuation">(</span><span class="mark"><span class="literal">"de"</span></span><span class="punctuation">)</span><span class="semi">;</span>
2184+
<span class="keyword">var</span> i<span class="literal">10</span>nSV<span class="punctuation"> = </span><span class="keyword">new</span> Intl<span class="punctuation">.</span>Collator<span class="punctuation">(</span><span class="mark"><span class="literal">"sv"</span></span><span class="punctuation">)</span><span class="semi">;</span>
2185+
i<span class="literal">10</span>nDE<span class="punctuation">.</span>compare<span class="punctuation">(</span><span class="literal">"ä"</span><span class="punctuation">,</span> <span class="literal">"z"</span><span class="punctuation">)</span> <span class="punctuation">===</span> <span class="mark"><span class="punctuation">-</span><span class="literal">1</span></span><span class="semi">;</span>
2186+
i<span class="literal">10</span>nSV<span class="punctuation">.</span>compare<span class="punctuation">(</span><span class="literal">"ä"</span><span class="punctuation">,</span> <span class="literal">"z"</span><span class="punctuation">)</span> <span class="punctuation">===</span> <span class="mark"><span class="punctuation">+</span><span class="literal">1</span></span><span class="semi">;</span>
2187+
console<span class="punctuation">.</span>log<span class="punctuation">(</span>list<span class="punctuation">.</span>sort<span class="punctuation">(</span>i<span class="literal">10</span>nDE<span class="punctuation">.</span>compare<span class="punctuation">)</span><span class="punctuation">)</span><span class="semi">;</span><span class="comment"> // <span class="punctuation">[</span> <span class="literal">"a"</span><span class="punctuation">,</span> <span class="mark"><span class="literal">"ä"</span></span><span class="punctuation">,</span> <span class="literal">"z"</span> <span class="punctuation">]</span></span>
2188+
console<span class="punctuation">.</span>log<span class="punctuation">(</span>list<span class="punctuation">.</span>sort<span class="punctuation">(</span>i<span class="literal">10</span>nSV<span class="punctuation">.</span>compare<span class="punctuation">)</span><span class="punctuation">)</span><span class="semi">;</span><span class="comment"> // <span class="punctuation">[</span> <span class="literal">"a"</span><span class="punctuation">,</span> <span class="literal">"z"</span><span class="punctuation">,</span> <span class="mark"><span class="literal">"ä"</span></span> <span class="punctuation">]</span></span>
2189+
</div>
2190+
<i class="icon fa fa-circle"></i>
2191+
<i class="icon fa fa-check-circle"></i>
2192+
</div>
2193+
<div class="arrow"><i class="fa fa-caret-up"></i><i class="fa fa-caret-down"></i></div><div class="js es5">
2194+
<div class="title"><b>ECMAScript 5</b> &mdash; syntactic sugar: <span class="style reduced">reduced</span> | <span class="style traditional">traditional</span></div>
2195+
<div class="code"><span class="comment">// no equivalent <span class="keyword">in</span> ES<span class="literal">5</span></span></div>
2196+
<i class="icon fa fa-circle"></i>
2197+
<i class="icon fa fa-times-circle"></i>
2198+
</div>
2199+
</div>
2200+
<div id="NumberFormatting" class="showcase showcase_NumberFormatting"> <div class="title">Internationalization & Localization</div>
2201+
<div class="subtitle">Number Formatting</div>
2202+
<div class="desc">Format numbers with digit grouping and localized separators.</div>
2203+
<div class="js es6">
2204+
<div class="title"><b>ECMAScript 6</b> &mdash; syntactic sugar: <span class="style reduced">reduced</span> | <span class="style traditional">traditional</span></div>
2205+
<div class="code"><span class="keyword">var</span> i<span class="literal">10</span>nEN<span class="punctuation"> = </span><span class="keyword">new</span> Intl<span class="punctuation">.</span>NumberFormat<span class="punctuation">(</span><span class="mark"><span class="literal">"en<span class="punctuation">-</span>US"</span></span><span class="punctuation">)</span><span class="semi">;</span>
2206+
<span class="keyword">var</span> i<span class="literal">10</span>nDE<span class="punctuation"> = </span><span class="keyword">new</span> Intl<span class="punctuation">.</span>NumberFormat<span class="punctuation">(</span><span class="mark"><span class="literal">"de<span class="punctuation">-</span>DE"</span></span><span class="punctuation">)</span><span class="semi">;</span>
2207+
i<span class="literal">10</span>nEN<span class="punctuation">.</span>format<span class="punctuation">(</span><span class="literal">1234567</span><span class="punctuation">.</span><span class="literal">89</span><span class="punctuation">)</span> <span class="punctuation">===</span> <span class="mark"><span class="literal">"1<span class="punctuation">,</span>234<span class="punctuation">,</span>567<span class="punctuation">.</span>89"</span></span><span class="semi">;</span>
2208+
i<span class="literal">10</span>nDE<span class="punctuation">.</span>format<span class="punctuation">(</span><span class="literal">1234567</span><span class="punctuation">.</span><span class="literal">89</span><span class="punctuation">)</span> <span class="punctuation">===</span> <span class="mark"><span class="literal">"1<span class="punctuation">.</span>234<span class="punctuation">.</span>567<span class="punctuation">,</span>89"</span></span><span class="semi">;</span>
2209+
</div>
2210+
<i class="icon fa fa-circle"></i>
2211+
<i class="icon fa fa-check-circle"></i>
2212+
</div>
2213+
<div class="arrow"><i class="fa fa-caret-up"></i><i class="fa fa-caret-down"></i></div><div class="js es5">
2214+
<div class="title"><b>ECMAScript 5</b> &mdash; syntactic sugar: <span class="style reduced">reduced</span> | <span class="style traditional">traditional</span></div>
2215+
<div class="code"><span class="comment">// no equivalent <span class="keyword">in</span> ES<span class="literal">5</span></span></div>
2216+
<i class="icon fa fa-circle"></i>
2217+
<i class="icon fa fa-times-circle"></i>
2218+
</div>
2219+
</div>
2220+
<div id="CurrencyFormatting" class="showcase showcase_CurrencyFormatting"> <div class="title">Internationalization & Localization</div>
2221+
<div class="subtitle">Currency Formatting</div>
2222+
<div class="desc">Format numbers with digit grouping, localized separators and attached currency symbol.</div>
2223+
<div class="js es6">
2224+
<div class="title"><b>ECMAScript 6</b> &mdash; syntactic sugar: <span class="style reduced">reduced</span> | <span class="style traditional">traditional</span></div>
2225+
<div class="code"><span class="keyword">var</span> i<span class="literal">10</span>nUSD<span class="punctuation"> = </span><span class="keyword">new</span> Intl<span class="punctuation">.</span>NumberFormat<span class="punctuation">(</span><span class="literal">"en<span class="punctuation">-</span>US"</span><span class="punctuation">,</span> <span class="punctuation">{</span> style: <span class="literal">"currency"</span><span class="punctuation">,</span> currency: <span class="mark"><span class="literal">"USD"</span></span> <span class="punctuation">}</span><span class="punctuation">)</span><span class="semi">;</span>
2226+
<span class="keyword">var</span> i<span class="literal">10</span>nGBP<span class="punctuation"> = </span><span class="keyword">new</span> Intl<span class="punctuation">.</span>NumberFormat<span class="punctuation">(</span><span class="literal">"en<span class="punctuation">-</span>GB"</span><span class="punctuation">,</span> <span class="punctuation">{</span> style: <span class="literal">"currency"</span><span class="punctuation">,</span> currency: <span class="mark"><span class="literal">"GBP"</span></span> <span class="punctuation">}</span><span class="punctuation">)</span><span class="semi">;</span>
2227+
<span class="keyword">var</span> i<span class="literal">10</span>nEUR<span class="punctuation"> = </span><span class="keyword">new</span> Intl<span class="punctuation">.</span>NumberFormat<span class="punctuation">(</span><span class="literal">"de<span class="punctuation">-</span>DE"</span><span class="punctuation">,</span> <span class="punctuation">{</span> style: <span class="literal">"currency"</span><span class="punctuation">,</span> currency: <span class="mark"><span class="literal">"EUR"</span></span> <span class="punctuation">}</span><span class="punctuation">)</span><span class="semi">;</span>
2228+
i<span class="literal">10</span>nUSD<span class="punctuation">.</span>format<span class="punctuation">(</span><span class="literal">100200300</span><span class="punctuation">.</span><span class="literal">40</span><span class="punctuation">)</span> <span class="punctuation">===</span> <span class="mark"><span class="literal">"$100<span class="punctuation">,</span>200<span class="punctuation">,</span>300<span class="punctuation">.</span>40"</span></span><span class="semi">;</span>
2229+
i<span class="literal">10</span>nGBP<span class="punctuation">.</span>format<span class="punctuation">(</span><span class="literal">100200300</span><span class="punctuation">.</span><span class="literal">40</span><span class="punctuation">)</span> <span class="punctuation">===</span> <span class="mark"><span class="literal">"£100<span class="punctuation">,</span>200<span class="punctuation">,</span>300<span class="punctuation">.</span>40"</span></span><span class="semi">;</span>
2230+
i<span class="literal">10</span>nEUR<span class="punctuation">.</span>format<span class="punctuation">(</span><span class="literal">100200300</span><span class="punctuation">.</span><span class="literal">40</span><span class="punctuation">)</span> <span class="punctuation">===</span> <span class="mark"><span class="literal">"100<span class="punctuation">.</span>200<span class="punctuation">.</span>300<span class="punctuation">,</span>40 €"</span></span><span class="semi">;</span>
2231+
</div>
2232+
<i class="icon fa fa-circle"></i>
2233+
<i class="icon fa fa-check-circle"></i>
2234+
</div>
2235+
<div class="arrow"><i class="fa fa-caret-up"></i><i class="fa fa-caret-down"></i></div><div class="js es5">
2236+
<div class="title"><b>ECMAScript 5</b> &mdash; syntactic sugar: <span class="style reduced">reduced</span> | <span class="style traditional">traditional</span></div>
2237+
<div class="code"><span class="comment">// no equivalent <span class="keyword">in</span> ES<span class="literal">5</span></span></div>
2238+
<i class="icon fa fa-circle"></i>
2239+
<i class="icon fa fa-times-circle"></i>
2240+
</div>
2241+
</div>
2242+
<div id="DateTimeFormatting" class="showcase showcase_DateTimeFormatting"> <div class="title">Internationalization & Localization</div>
2243+
<div class="subtitle">Date/Time Formatting</div>
2244+
<div class="desc">Format date/time with localized ordering and separators.</div>
2245+
<div class="js es6">
2246+
<div class="title"><b>ECMAScript 6</b> &mdash; syntactic sugar: <span class="style reduced">reduced</span> | <span class="style traditional">traditional</span></div>
2247+
<div class="code"><span class="keyword">var</span> i<span class="literal">10</span>nEN<span class="punctuation"> = </span><span class="keyword">new</span> Intl<span class="punctuation">.</span>DateTimeFormat<span class="punctuation">(</span><span class="mark"><span class="literal">"en<span class="punctuation">-</span>US"</span></span><span class="punctuation">)</span><span class="semi">;</span>
2248+
<span class="keyword">var</span> i<span class="literal">10</span>nDE<span class="punctuation"> = </span><span class="keyword">new</span> Intl<span class="punctuation">.</span>DateTimeFormat<span class="punctuation">(</span><span class="mark"><span class="literal">"de<span class="punctuation">-</span>DE"</span></span><span class="punctuation">)</span><span class="semi">;</span>
2249+
i<span class="literal">10</span>nEN<span class="punctuation">.</span>format<span class="punctuation">(</span><span class="keyword">new</span> Date<span class="punctuation">(</span><span class="literal">"2015<span class="punctuation">-</span>01<span class="punctuation">-</span>02"</span><span class="punctuation">)</span><span class="punctuation">)</span> <span class="punctuation">===</span> <span class="mark"><span class="literal">"1/2/2015"</span></span><span class="semi">;</span>
2250+
i<span class="literal">10</span>nDE<span class="punctuation">.</span>format<span class="punctuation">(</span><span class="keyword">new</span> Date<span class="punctuation">(</span><span class="literal">"2015<span class="punctuation">-</span>01<span class="punctuation">-</span>02"</span><span class="punctuation">)</span><span class="punctuation">)</span> <span class="punctuation">===</span> <span class="mark"><span class="literal">"2<span class="punctuation">.</span>1<span class="punctuation">.</span>2015"</span></span><span class="semi">;</span>
2251+
</div>
2252+
<i class="icon fa fa-circle"></i>
2253+
<i class="icon fa fa-check-circle"></i>
2254+
</div>
2255+
<div class="arrow"><i class="fa fa-caret-up"></i><i class="fa fa-caret-down"></i></div><div class="js es5">
2256+
<div class="title"><b>ECMAScript 5</b> &mdash; syntactic sugar: <span class="style reduced">reduced</span> | <span class="style traditional">traditional</span></div>
2257+
<div class="code"><span class="comment">// no equivalent <span class="keyword">in</span> ES<span class="literal">5</span></span></div>
2258+
<i class="icon fa fa-circle"></i>
2259+
<i class="icon fa fa-times-circle"></i>
2260+
</div>
21612261
</div>
21622262

21632263
<!-- ATTENTION: END OF GENERATED CODE. DO NOT EDIT MANUALLY -->

0 commit comments

Comments
 (0)