Introduction
Making a Java application international is about dealing with:- Displayed text - Proper text according to user language.
- Dates - Formatting, for example month, day year, or day, month, year?
- Currencies - Using a comma or a dot as a separator? number of significant digits?
Locale
Localization is the process of adapting displayed text, dates and currencies to a country, region or language. Java defines the Locale class, which represents a language, and eventually a country or region associated to it.The following describes how to list available Locale:
for ( Locale l : Locale.getAvailableLocales() ) { String s = l.getDisplayLanguage(Locale.ENGLISH) + " " + l.getDisplayCountry(Locale.ENGLISH); System.out.println(s); }
Japanese Japan Spanish Peru English ...
Resource Bundle & Property Files
ResourceBundles are created by providing a Locale. They contain objects and strings internationalized according to the provided locale.Internationalized strings can be loaded from property files too:
Here is the content of MessageBundle_fr_FR:
greetings = Bonjour. farewell = Au revoir. inquiry = Comment allez-vous?
// Creating locales Locale l_de_DE = new Locale("de", "DE"); Locale l_fr_FR = new Locale("fr", "FR"); // Resource bundles based on property files ResourceBundle rb_de_DE = ResourceBundle.getBundle( "com.jverstry.ResourceBundles.MessagesBundle", l_de_DE); ResourceBundle rb_fr_FR = ResourceBundle.getBundle( "com.jverstry.ResourceBundles.MessagesBundle", l_fr_FR); // Fetching translated text System.out.println(rb_de_DE.getString("inquiry")); System.out.println(rb_fr_FR.getString("inquiry")); System.out.println(rb_de_DE.getString("greetings")); System.out.println(rb_fr_FR.getString("greetings"));
Notice that one must provide the "package path" to load the property files.
The output is:
Wie geht's? Comment allez-vous? Hallo. Bonjour.
Dates & Currencies
In an earlier post, we have already described how to format currencies.The following code describes how to format a date using locales:
// Creating locales Locale l_de_DE = new Locale("de", "DE"); Locale l_fr_FR = new Locale("fr", "FR"); // Retrieving date formatters DateFormat df_de_DE = DateFormat.getDateInstance(DateFormat.FULL, l_de_DE); DateFormat df_fr_FR = DateFormat.getDateInstance(DateFormat.FULL, l_fr_FR); Date date = new Date(); System.out.println(df_de_DE.format(date)); System.out.println(df_fr_FR.format(date));
Samstag, 17. November 2012 samedi 17 novembre 2012
More Java related posts here.
No comments:
Post a Comment