Flutterの通貨表示はロケールを見ている──WEBより有利な理由

目次

きっかけ

月謝袋アプリのスペイン語対応を進める中で、
通貨表示について気になることがありました。

「スペイン語に対応したら、メキシコやアルゼンチンのユーザーも
通貨が自動で切り替わるの?」

調べてみると、Flutterの NumberFormat.currency() は
言語ではなくロケール(地域)を見ていることがわかりました。

コード

final locale = Localizations.localeOf(context).toString();
final format = NumberFormat.currency(
  locale: locale,
  decimalDigits: 0,
);

たったこれだけで、端末の地域設定に合わせて
通貨が自動で切り替わります。

実際の動作

端末の地域設定表示
スペイン語・スペイン(es_ES)EUR €
スペイン語・メキシコ(es_MX)MXN $
スペイン語・アルゼンチン(es_AR)ARS $
日本語(ja_JP)JPY ¥
英語・アメリカ(en_US)USD $

スペイン語を話していても、住んでいる国によって
通貨が自動で切り替わるのです!

WEBより有利な理由

WEBブラウザでは通貨を自動判定するのに
IPアドレス取得や追加のAPIが必要になることが多いです。

一方、スマートフォンアプリは
端末のロケール情報を直接取得できるため、
追加実装なしで正確な通貨表示が実現できます。

WEBスマホアプリ
通貨の自動判定△ 追加実装が必要✅ ロケールから自動取得
精度△ IPは必ずしも正確でない✅ 端末設定なので正確
実装コスト高い低い

まとめ

  • NumberFormat.currency(locale: locale) は言語ではなくロケールを見る
  • スマホアプリはロケール情報を直接取得できるのでWEBより有利
  • たった数行で世界中の通貨に対応できる

海外展開を考えているFlutter開発者の方に
ぜひ参考にしていただければと思います🌍


月謝袋アプリ:App Store / Google Play にて配信中

目次