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でビルドしたものを使うのがいいのかもしれない