我正在开发支持多种用户语言的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给我€?
答案 0 :(得分:1)
为什么不总是使用您希望它显示的Locale
?忽略设备的Locale
。
String formatCurrency(String amount) {
final NumberFormat formatter = NumberFormat.getCurrencyInstance(Locale.ENGLISH);
return formatter.format(new BigDecimal(amount));
}
答案 1 :(得分:0)
你应该看看this。
使用货币对象中的 getSymbol() 来解决您的问题。