Androidの桁区切り文字は言語に依存する

Androidアプリにて、なんか特定の言語でだけsetSpanなんとかでクラッシュ。

Fatal Exception: java.lang.IndexOutOfBoundsException: setSpan (4 ... 4)

何かと思ったら数値の区切り文字の問題だった。
価格等は以下のように getStringString.format%,d とか指定してカンマを挿入しがちだが
Androidでは、端末の言語指定によっては数値の区切りが半角カンマ , 以外になり得る。

val s = String.format("%,d円", 10000)

例えば日本語設定だと上の結果は 10,000円 になり、フランス語だと 10 000円 になる。
そうとは知らずに、区切り文字が必ずカンマである前提の処理になっていてクラッシュしていたのが原因。

以下が言語ごとの区切り文字の参考サイト。
小数点の文字も言語設定によって違うんですね…

多言語翻訳で気付くのは、記号の使い方が国によって全然違うということです。今回は特に小数点とコンマについて書いていきます。例えば千五十点三という数字を表記する場合、日本では、1,050.3 というように
スポンサーリンク
レクタングル(大)
レクタングル(大)
スポンサーリンク
レクタングル(大)