The behavior of the method is correct.
Not all countries expect a currency symbol before the amount.
If you always want the currency format to match the American expectation, leave the locale as Locale.US . If you want the currency displayed in a localized way, leave your implementation as it is.
See this quick start guide (from Microsoft, at least):
Globalization step by step
I would suggest that you might be trying to achieve is to display the currency in a format appropriate to its language? If this is the case, simply map the language to the currency used before invoking the method.
Please note that the format may even change in the same country. In Canada, it is reasonably widely believed that English speakers use the $ 50.00 format, while French-Canadians can use $ 50.00.
Also see this question in UX:
https://ux.stackexchange.com/questions/22574/where-to-place-currency-symbol-when-localizing-and-what-to-do-with-odd-symbols
source share