NumberFormat.getCurrencyInstance()在某些国家/地区无法返回正确的符号吗?

时间:2012-08-04 07:32:42

标签: android

我开发的财务应用应该使用不同的货币符号,这取决于国家/地区。我使用此代码:

Float value = 100;
TextView tv = (TextView) view;
NumberFormat currencyFormat = NumberFormat.getCurrencyInstance();
tv.setText(currencyFormat.format(value));

我有几个报告说我的应用程序返回欧元符号而不是正确的货币(例如在Malysia或印度)。这些用户表示他们的系统语言是他们国家的原生语言。我无法证明自己,因为我的手机或模拟器上没有可用的语言。

1 个答案:

答案 0 :(得分:1)

我想您可以尝试在应用中强制使用区域设置,因为这似乎与设备上的默认区域设置有关。请参阅这些链接 -

how to choose serbain language from android Emulator settings?

http://www.tutorialforandroid.com/2009/01/force-localize-application-on-android.html

这可能会帮助您复制用户在其设备上报告的问题。

修改 我自己没有测试过,但它可以适用于你的情况。

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    String languageToLoad  = "en";
    String countryToLoad = "MY"; // 2 digit country code for Malaysia
    Locale locale = new Locale(languageToLoad, countryToLoad); 
    Locale.setDefault(locale);
    Configuration config = new Configuration();
    config.locale = locale;
    getBaseContext().getResources().updateConfiguration(config, 
    getBaseContext().getResources().getDisplayMetrics());
    this.setContentView(R.layout.main);
}