Overview page that shows what solutions exist for JavaScript globalization (internationalization and localization). What is missing. What overlaps. Why each library was created. What are their goals, strengths and weaknesses.
The standard native implementation. It provides collation (string comparison), number formatting, and date and time formatting. The API was developed by a working group with members from Google, Microsoft, Mozilla (Norbert Lindenberg), Amazon, and IBM.
Strengths
- Best performant on both speed and size. Speed, because it's native compiled code, which runs faster than interpreted JavaScript code from libraries. Size, because again it's native compiled code, which requires no extra JavaScript or resource loading (it relies on compiled i18n data) to be executed.
Weaknesses
- Limited browser support (it may NOT be supported by your target client).
- Lack of a resource loading mechanism (certain locale may NOT be available on your target client).
Links
- http://www.ecma-international.org/ecma-402/1.0/
- http://norbertlindenberg.com/2012/12/ecmascript-internationalization-api/index.html
- http://generatedcontent.org/post/59403168016/esintlapi (locale support)
Standalone library created by Santhosh Thottingal that provides CLDR plural rule parsing. Used by Wikimedia Foundation.
Strengths
- No bugs due to outdated i18n content (it has no hard coded i18n data).
Links:
A jQuery project, initially created to fullfil jQuery UI (datepicker and spinner widgets). It provides number formatting and parsing, date and time formatting and parsing, message formatting, and plural support.
The design goals are (a) to leverage the official CLDR JSON data, (b) allow users to load as much or as little data as they need, (c) avoid duplicating data if using multiple i18n libraries that leverage CLDR, and (d) run in browsers or node.js.
Strengths
- No bugs due to outdated i18n content (it has no hard coded i18n data).
- Parsing.
- Allow different locale instances running simultaneously.
Links:
Standalone library created by Alex Sexton that provides ICU MessageFormat support, with built-in SelectFormat and pluggable PluralFormat.
Strengths
- Precompile formatter for faster/smaller runtime.
Links:
ECMA-402 Native |
Cldrpluralruleparser santhoshtr/cldrpluralruleparser |
Globalize jquery/globalize |
Messageformat.js slexaxton/messageformat.js |
|
---|---|---|---|---|
Functionality | ||||
Date Formatnew Date() ⟹ Oct 23, 2014, 9:00:00 AM |
✔️ | ✔️ | ||
Date Parse Oct 23, 2014, 9:00:00 AM ⟹ new Date() |
✔️ | |||
Relative Time Formatnew Date() ⟹ last month |
🔜 | |||
Number Format12734.89 ⟹ 12,734.89 |
✔️ | ✔️ | ||
Number Parse 12,734.89 ⟹ 12734.89 |
✔️ | |||
Currency Format{EUR: 1000.00} ⟹ €1,000.00 |
✔️ | 🔜 | ||
Currency Parse €1,000.00 ⟹ {EUR: 1000.00} |
🔜 | |||
Plural3 ⟹ few |
✔️ | ✔️ Powered by santhoshtr/cldrpluralruleparser |
||
Message FormatYou have {count, plural, one {1 item} other {# items}} ⟹ You have 5 items |
✔️ Powered by slexaxton/messageformat.js |
✔️ | ||
Template integration | ||||
Collation | ✔️ | |||
I18n data | Compiled | CLDR >= 25 | ||
Support | ||||
Environments | Globals | AMD CommonJS Globals |
AMD CommonJS Globals |
AMD CommonJS Globals |
Node.js | >= 0.12en only by default |
✔️ | ✔️ | ✔️ |
Browser | Chrome: 24 Firefox: 29 Safari: N/A Opera: 15 IE: 11 Reference MDN. |
Chrome: (Current - 1) or Current Firefox: (Current - 1) or Current Safari: 5.1+ Opera: 12.1x, (Current - 1) or Current IE: 8 (needs ES5 polyfill), IE9+ |
||
Mobile | iOS: 6.1+ Android: 2.3, 4.0+ |