Localisation is hard.
Getting your program to work well in multiple languages is a world fraught with edge-cases, minor grammatical errors, and most importantly, subtle things that don't map over well that you have absolutely no idea are different in other cultures.
Many people are aware of the simpler ones, such as whether to use decimal points or decimal commas, or that the names of the months are different in other languages. But there are also different ways to format dates and times, or variations on what day the week begins. It's perfectly possible to write your program unaware of how these things have to be changed at all, and that's why it's so hard.
Locale implementation using GNU libc
Locale implementation for MacOS X
Auxiliary class for creating composing partial implementations of locale factories.
Factory of invariant locales.
Information on how to format numbers.
Trait defining how to obtain various components of a locale.
Return LocaleFactory appropriate for default user locale, as far as it can be determined.