Skip to content

Java: Localized number formatting

The other day, I had an NLS bug to respond to, and realized I didn't know how numbers were formatted for any locales other than English and French. Quick, to the JVM:

ar    3,141.59
   ar_AE    3,141.59
   ar_BH    3,141.59
   ar_DZ    3,141.59
   ar_EG    3,141.59
   ar_IQ    3,141.59
   ar_JO    3,141.59
   ar_KW    3,141.59
   ar_LB    3,141.59
   ar_LY    3,141.59
   ar_MA    3,141.59
   ar_OM    3,141.59
   ar_QA    3,141.59
   ar_SA    3,141.59
   ar_SD    3,141.59
   ar_SY    3,141.59
   ar_TN    3,141.59
   ar_YE    3,141.59
be    3 141,59
   be_BY    3 141,59
bg    3 141,59
   bg_BG    3 141,59
ca    3.141,59
   ca_ES    3.141,59
cs    3 141,59
   cs_CZ    3 141,59
da    3.141,59
   da_DK    3.141,59
de    3.141,59
   de_AT    3.141,59
   de_CH    3'141.59
   de_DE    3.141,59
   de_LU    3.141,59
el    3.141,59
   el_CY    3.141,59
   el_GR    3.141,59
en    3,141.59
   en_AU    3,141.59
   en_CA    3,141.59
   en_GB    3,141.59
   en_IE    3,141.59
   en_IN    3,141.59
   en_MT    3,141.59
   en_NZ    3,141.59
   en_PH    3,141.59
   en_SG    3,141.59
   en_US    3,141.59
   en_ZA    3,141.59
es    3.141,59
   es_AR    3.141,59
   es_BO    3.141,59
   es_CL    3.141,59
   es_CO    3.141,59
   es_CR    3,141.59
   es_DO    3,141.59
   es_EC    3.141,59
   es_ES    3.141,59
   es_GT    3,141.59
   es_HN    3,141.59
   es_MX    3,141.59
   es_NI    3,141.59
   es_PA    3,141.59
   es_PE    3.141,59
   es_PR    3,141.59
   es_PY    3.141,59
   es_SV    3,141.59
   es_US    3,141.59
   es_UY    3.141,59
   es_VE    3.141,59
et    3 141,59
   et_EE    3 141,59
fi    3 141,59
   fi_FI    3 141,59
fr    3 141,59
   fr_BE    3.141,59
   fr_CA    3 141,59
   fr_CH    3'141.59
   fr_FR    3 141,59
   fr_LU    3 141,59
ga    3,141.59
   ga_IE    3,141.59
   hi_IN    ?,???.??
hr    3.141,59
   hr_HR    3.141,59
hu    3 141,59
   hu_HU    3 141,59
in    3.141,59
   in_ID    3.141,59
is    3.141,59
   is_IS    3.141,59
it    3.141,59
   it_CH    3'141.59
   it_IT    3.141,59
iw    3,141.59
   iw_IL    3,141.59
ja    3,141.59
   ja_JP    3,141.59
   ja_JP_JP    3,141.59
ko    3,141.59
   ko_KR    3,141.59
lt    3 141,59
   lt_LT    3 141,59
lv    3 141,59
   lv_LV    3 141,59
mk    3.141,59
   mk_MK    3.141,59
ms    3,141.59
   ms_MY    3,141.59
mt    3,141.59
   mt_MT    3,141.59
nl    3.141,59
   nl_BE    3.141,59
   nl_NL    3.141,59
no    3 141,59
   no_NO    3 141,59
   no_NO_NY    3 141,59
pl    3 141,59
   pl_PL    3 141,59
pt    3.141,59
   pt_BR    3.141,59
   pt_PT    3.141,59
ro    3.141,59
   ro_RO    3.141,59
ru    3 141,59
   ru_RU    3 141,59
sk    3 141,59
   sk_SK    3 141,59
sl    3.141,59
   sl_SI    3.141,59
sq    3.141,59
   sq_AL    3.141,59
sr    3.141,59
   sr_BA    3.141,59
   sr_CS    3.141,59
   sr_ME    3.141,59
   sr_RS    3.141,59
sv    3 141,59
   sv_SE    3 141,59
th    3,141.59
   th_TH    3,141.59
   th_TH_TH    ?,???.??
tr    3.141,59
   tr_TR    3.141,59
uk    3.141,59
   uk_UA    3.141,59
vi    3.141,59
   vi_VN    3.141,59
zh    3,141.59
   zh_CN    3,141.59
   zh_HK    3,141.59
   zh_SG    3,141.59
   zh_TW    3,141.59

Code for generating it:

import java.text.NumberFormat;
import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;

public class Class1 {
   public static void main(String[] args) {
       Set list = new TreeSet();
       for (Locale locale : Locale.getAvailableLocales())
           list.add(locale + "\t" + NumberFormat.getInstance(locale).format(3141.59));
       for (String s : list) {
           if (s.contains("_")) System.out.println("\t" + s);
           else System.out.println(s);
       }
   }
}

Post a Comment

Your email is never published nor shared. Required fields are marked *
*
*