2

我正在开发一个支持多种用户语言的 android 应用程序。

在应用程序中,我使用 java.util.NumberFormat 来格式化货币:

String formatCurrency(String amount) {
    // getCurrentLocale determines the locale from the user's selected language; 
    // if the user selects de_DE as the app's language, then this method will return Locale.Germany
    final Locale locale = getCurrentLocale(); 
    final NumberFormat formatter = NumberFormat.getCurrencyInstance(locale);
    return formatter.format(new BigDecimal(amount));
}

我正在使用的测试设备是 HTC G2,它有两种设备语言选项——英语和西班牙语。

好的,现在我选择我的应用程序的用户语言为“de_DE”:

// When my device language is english, if I call:
System.out.println(formatCurrency("1.79"));
// I got:
1.79 €

// But when I switch my device language to spanish:
System.out.println(formatCurrency("1.79"));
// I got :
1.79 EUR

我的问题是,在这两种情况下,我可以让 NumberFormat 给我€吗?

4

2 回答 2

1

为什么不总是使用Locale您希望它显示的内容?忽略设备的Locale.

对于Locale.ENGLISH

String formatCurrency(String amount) {
    final NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
    return formatter.format(new BigDecimal(amount));
}
于 2012-07-10T00:08:03.637 回答
0

你应该看看这个

使用 Currency 对象中的getSymbol()来解决您的问题。

于 2012-07-10T00:36:59.830 回答