java String.format: numbers with localization

java, localization, numbers, string-formatting

Solution

From the documentation, you have to:

- supply a locale (as you are doing in your example)

- include the '`,`' flag to show locale-specific grouping separators

So your example would become:

String.format(Locale.GERMAN, "%,d", 1234567890) 

Note the additional '`,`' flag before the 'd'.

Problem

Is it possible to localize numbers in `String.format` call the same way as `NumberFormat.format` does? I've expected it simply to use ``` String.format(locale, "%d", number) ``` but this doesn't return the same result as `NumberFormat`. For example: ``` String.format(Locale.GERMAN, "%d", 1234567890) ``` gives: "1234567890", while ``` NumberFormat.getNumberInstance(Locale.GERMAN).format(1234567890) ``` gives: "1.234.567.890" If it can't be done, what's recommended way for localizing text including numbers?

Original source