# The Java EE 7 Tutorial

# 20.1 Java Platform Localization Classes

In the Java platform, java.util.Locale (`http://docs.oracle.com/javase/7/docs/api/java/util/Locale.html`) represents a specific geographical, political, or cultural region. The string representation of a locale consists of the international standard two-character abbreviation for language and country and an optional variant, all separated by underscore (`_`) characters. Examples of locale strings include `fr` (French), `de_CH` (Swiss German), and `en_US_POSIX` (English on a POSIX-compliant platform).

Locale-sensitive data is stored in a java.util.ResourceBundle (`http://docs.oracle.com/javase/7/docs/api/java/util/ResourceBundle.html`). A resource bundle contains key-value pairs, where the keys uniquely identify a locale-specific object in the bundle. A resource bundle can be backed by a text file (properties resource bundle) or a class (list resource bundle) containing the pairs. You construct a resource bundle instance by appending a locale string representation to a base name.

The Duke's Bookstore application (see Chapter 57, "Duke's Bookstore Case Study Example") contains resource bundles with the base name `messages.properties` for the locales `de` (German), `es` (Spanish), and `fr` (French). The default locale, `en` (English), which is specified in the `faces-config.xml` file, uses the resource bundle with the base name, `messages.properties`.

For more details on internationalization and localization in the Java platform, see `http://docs.oracle.com/javase/tutorial/i18n/index.html`.