日本語(とせいぜい英語)だけを相手にしていると気が付きませんが、アラビア数字を使って数値を表記するときに、コンマ (“,”) を小数点に使いピリオド (“.”) を桁区切りに使うロケール(仮に「コンマ小数点ロケール」と呼ぼう)があります。というか国の数で言うとそっちの方が多いです。米英日中印がピリオド小数点ロケールなので人口で言うとそうでもないようですが。(参考:小数点 – Wikipedia

で、直近の音叉アプリの更新は、Java の String.format(String, Object…) がシステムのデフォルトのロケールに従って数値をフォーマットするのに対して、Double.parseDouble(String) がロケールを無視して(= 常に en_US で)数値文字列をパースするため、コンマ小数点ロケールにおいて周波数を直接指定するダイアログで OK を押すと NumberFormatException が飛んでクラッシュする(という現象だと思われるクラッシュレポートがある)のに今更気付いた、という所から始まっています。

音叉アプリでは周波数は全てロケールに従った小数点を使うように修正したのですが、言語と小数点の対応ということを考えると、これは違和感が発生します。アプリが持っている文字列リソースは英語と日本語だけ(英語がデフォルト)でどちらもピリオド小数点ロケールであるため、アプリをコンマ小数点ロケールのシステムで動かすとメッセージは英語なのに小数点がコンマで表記されて一貫性が無いことになります。コンマ小数点ロケールのための文字列リソースを全部用意することはできませんから、常にピリオドを小数点として使うことにより一貫性を確保するべきなのか、一貫性は無くてもいいから可能な部分だけシステムのロケールに合わせるべきなのかは悩みどころです。

コンマ小数点ロケールの人々(フランス人とか)が英語で文章を書く時はどうしてるのかが気になります。そんな知り合いいないしなぁ。

Trackback

no comment untill now

Add your comment now