4

英語以外のロケールのデバイスを使用しています。英語の通貨は次のようにフォーマットされています。

1 $

英語ロケールの場合、次のようなユーロ通貨を取得します。

€1

使用する

format.setCurrency(Currency.getInstance(currency));
return format.format(amount);

ドキュメントで見つかりました:

http://developer.android.com/reference/java/util/Currency.html#getSymbol ()

ロケールでのこの通貨のローカライズされた通貨記号を返します。つまり、"USD" と Locale.US を指定すると "$" が返されますが、"USD" と US 以外のロケールを指定すると "US$" が返されます。

ロケールが言語と国ではなく言語のみを指定する場合 (Locale.JAPAN または {new Locale("en", "US") ではなく、Locale.JAPANESE または {new Locale("en", "")} など) )})、ISO 4217 通貨コードが返されます。

ロケール固有の通貨記号がない場合は、ISO 4217 通貨コードが返されます。

同じ方法ではありませんが、おそらく関連しています。通貨での記号の順序付けでデバイスのロケールに違いが生じるのはなぜですか? 使用しているロケールに関係なく、1$ は正しくありません。

これを変更する方法はありますか?

4

1 に答える 1

3

メソッドの動作は正しいです。

すべての国で、金額の前に通貨記号が必要なわけではありません。

通貨形式をアメリカ化された期待に常に一致させたい場合は、ロケールをそのままにしておきますLocale.US。ローカライズされた方法で通貨を表示する場合は、実装をそのままにしておきます。

この簡単なガイドを参照してください (Microsoft によるものです):

通貨の書式設定

あなたが達成しようとしているのは、ロケールに適した形式で通貨を表示することだと思いますか? その場合は、メソッドを呼び出す前に、使用している通貨にロケールを一致させてください。

同じ国でも形式が異なる場合があることに注意してください。カナダでは、英語を話す人が $50.00 という形式を使用するのはかなり一般的ですが、フランス系カナダ人は 50,00 $ を使用する場合があります。

UXに関するこの質問も参照してください。

https://ux.stackexchange.com/questions/22574/where-to-place-currency-symbol-when-localizing-and-what-to-do-with-odd-symbols

于 2012-09-19T08:21:09.633 に答える