皆さんはRailsの
number_to_currency
という関数をご存知だろうか?
例えば、あるものの金額が、23654200
円だったとする。
まったくもって読みにくい。
これを会計風に表示してくれるのがnumber_to_currency
である。
number_to_currency(23654200)
としてみると、
23,654,200円
と表示してくれる。とても優秀な関数である。
ちなみに、これはデフォルトの設定を以下のように指定しておかないとこういう風にはならないかもしれない。
ja:
number:
currency:
format:
delimiter: ","
format: "%n%u"
precision: 0
separator: "."
significant: false
strip_insignificant_zeros: false
unit: 円
こういった細かいオプションについては
を参照して欲しい。
で、本題。
これの厄介なところは、いざロケールが英語の人が見てみると、この値段は
$23,654,200.00
と表示される。
素晴らしい機能すぎて涙が出る。。。
ja->enの場合は値段が高くなっているので、モノを販売しているときは多分大きなトラブルにはならないと思うが、値段が高くなって困るケースも多々あるはずなので転ばぬ先の杖として以下のように設定しておくと良い。
en:
number:
currency:
format:
delimiter: ","
format: "%n%u"
precision: 0
separator: "."
significant: false
strip_insignificant_zeros: false
unit: " JPY"
もしくは
en:
number:
currency:
format:
delimiter: ","
format: "%u%n"
precision: 0
separator: "."
significant: false
strip_insignificant_zeros: false
unit: "¥"
と設定しておくと安全。
自分は、'¥'と書いてあっても通過単位がわからない人は外国では多いと思うので、ググれる'JPY'の方がいいのではないかと思っている。
ちなみに、ドル払いも可能にするときは、普通に何らかの関数を別途作ったほうが無難だと思う。
本来、localeには、地域と言語の2軸あり、今回の場合の円はどちらかと言うとjpという地域に属するもの。
こういうものは他にもあるかも知れないが、お金の話はセンシティブなので、皆さんもなにか問題になる前に設定を見なおしてみてはいかがでしょう?