JavaScript で数値をフォーマットして国に合わせたカンマ区切りで表示する

多言語化する際に気をつけなければいけないのは、国によってカンマの区切り方が違う点です。ピリオドで区切る国もあるようです。

地域数値通貨桁の区切り
日本123,456,789.00¥123,456,789,(カンマ・コンマ)
アメリカ123,456,789.00$123,456,789.00,(カンマ・コンマ)
イギリス123,456,789.00£123,456,789.00,(カンマ・コンマ)
ドイツ123.456.789,00123.456.789,00 €.(ピリオド)
フランス123 456 789,00123 456 789,00 €スペース
韓国123,456,789.00₩123,456,789,(カンマ・コンマ)
中国123,456,789.00HK$123,456,789.00,(カンマ・コンマ)
アルゼンチン123.456.789,00$ 123.456.789,00.(ピリオド)
イタリア123.456.789,00€ 123.456.789,00.(ピリオド)
インドネシア123.456.789,00Rp123.456.789.(ピリオド)
オランダ123.456.789,00€ 123.456.789,00.(ピリオド)
オーストラリア123,456,789.00$123,456,789.00,(カンマ・コンマ)
オーストリア123.456.789,00€ 123.456.789,00.(ピリオド)
ギリシャ123.456.789,00123.456.789,00 €.(ピリオド)
スイス123’456’789.00SFr. 123’456’789.00‘(アポストロフィ)
スウェーデン123 456 789,00123.456.789,00 kr.(ピリオド)
スペイン123.456.789,00123.456.789,00 €.(ピリオド)
デンマーク123.456.789,00kr 123.456.789,00.(ピリオド)
トルコ123.456.789,00123.456.789,00 TL.(ピリオド)
ブラジル123.456.789,00R$ 123.456.789,00.(ピリオド)
ボスニア
ヘルツェゴビナ
123.456.789,00123.456.789,00 КМ.(ピリオド)
メキシコ123,456,789.00$123,456,789.00,(カンマ・コンマ)
ロシア123 456 789,00123 456 789,00р.スペース

各国に合わせた数字の区切りを標準ライブラリで実現する

Intl オブジェクトを使って、各言語に合わせた区切りに自動的に変換します。

使い方は以下のとおり、 new Intl.NumberFormat(languageTag);ja-JP のような言語コードを渡して、 formatter を作り、その formatter を使って、 format します。

JavaScript
import { getLocales } from 'expo-localization';  

const languageTag = getLocales()[0].languageTag;
const formatter = new Intl.NumberFormat(languageTag);
console.log(formatter.format(4567000))

結果として、以下のイメージのように、自動でカンマ区切りで表示できました。

参考リンク