Intl
というのはECMAScript Internationalization APIのこと- ECMA-402 として標準化
- Intl - JavaScript | MDN
- NodeJSでも利用可能だが、ビルドオプションによって様子が変わる
- NodeJSのICUサポートは
none
,system-icu
,small-icu
,full-icu
というオプションが用意されている- https://nodejs.org/api/intl.html
- 公式バイナリのオプションは
small-icu
で、これは英語だけをサポートしている - 起動時にICU dataを与える事も可能
- この情報は
node -e 'console.log(process.config.variables)'
で調べられる
Intl
によってI18N処理をするときに日本語サポートをしたい場合、3つの選択肢があるfull-icu
でビルドしたnodejsを使うsmall-icu
ビルドのままで、NODE_ICU_DATA
環境変数でICU dataを別途与えるintl.js
でpolyfillする
intl.js
はメンテが活発でもなくバグも放置気味- 日本のサービスで
Intl
を使うならfull-icu
でビルドしたものを使うのがいいのかもしれない