Creating an application for users in different regions can be hard in term of the message format for the local region. Java provide a ResourceBundle
class that help internationalize our application.
To create resources for i18n (there are 18 letters between the first i and the final n) we need to create a file for each locale our application supported. The file name must be ended in language_COUNTRY.properties
. For instance a resource bundle for Locale.UK will be MessagesBundle_en_GB.properties.
When the bundle has been loaded we can use bundle.getString(key)
to read specific message from our resource bundle file.
package org.kodejava.example.util;
import java.util.Locale;
import java.util.ResourceBundle;
public class InternationalizationDemo {
public static void main(String[] args) {
// Load resource bundle for Locale.UK locale. The resource
// bundle will load the MessagesBundle_en_GB.properties file.
ResourceBundle bundle =
ResourceBundle.getBundle("MessagesBundle", Locale.UK);
System.out.println("Message in " + Locale.UK + ": " +
bundle.getString("greeting"));
// Change the default locale to Indonesian and get the default
// resource bundle for the current locale.
Locale.setDefault(new Locale("in", "ID"));
bundle = ResourceBundle.getBundle("MessagesBundle");
System.out.println("Message in " + Locale.getDefault() + ": " +
bundle.getString("greeting"));
}
}
Below are some example of our resource bundle files, these files should be located in our application classpath to enable the ResourceBundle
class to read it.
MessagesBundle_en_GB.properties
greeting=Hello, how are you?
MessagesBundle_in_ID.properties
greeting=Halo, apa kabar?
Wayan Saryada
Latest posts by Wayan Saryada (see all)
- How do I set the time of java.util.Date instance to 00:00:00? - October 24, 2019
- How to Install Consolas Font in Mac OS X? - March 29, 2019
- How do I clear the current command line in terminal? - February 14, 2019