Download the JDK
Search the Tutorials
Hide the TOC
Trail: Internationalization
Lesson: Setting the Locale
Setting the Locale
Creating a Locale
Identifying Available Locales
The Scope of a Locale
Locale-Sensitive Services SPI
Home Page > Internationalization > Setting the Locale
Creating a Locale

> To create a `Locale` object, you typically specify the language code and the country code. For example, to specify the French language and the country of Canada, you would invoke the constructor as follows:

> >     aLocale = new Locale("fr", "CA");

> The next example creates `Locale` objects for the English language in the United States and Great Britain:

> >     bLocale = new Locale("en", "US");
> >     cLocale = new Locale("en", "GB");

> The first argument is the language code, a pair of lowercase letters that conform to ISO-639. You can find a full list of the ISO-639 codes at http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt.

> The following table lists just a few of the language codes.

> ### Sample Language Codes

> Language Code Description
> `de` German
> `en` English
> `fr` French
> `ja` Japanese
> `jw` Javanese
> `ko` Korean
> `zh` Chinese

The second argument of the `Locale` constructor is the country code. It consists of two uppercase letters and conforms to ISO-3166. A copy of ISO-3166 can be found at http://www.chemie.fu-berlin.de/diverse/doc/ISO_3166.html.

The following table contains several sample country codes.

> ### Sample Country Codes

> Country Code | Description
> --- | ---
> `CN` | China
> `DE` | Germany
> `FR` | France
> `IN` | India
> `US` | United States

If you need to distinguish your `Locale` further, you can specify a third parameter, called the variant code. Usually you specify variant codes to identify differences caused by the computing platform. For example, font differences may force you to use different characters on Windows and UNIX. You could then define the `Locale` objects with the variant codes WINDOWS and UNIX as follows:

>     xLocale = new Locale("de", "DE", "UNIX");
>     yLocale = new Locale("de", "DE", "WINDOWS");

The variant codes conform to no standard. They are arbitrary and specific to your application. If you create `Locale` objects with variant codes only your application will know how to deal with them.

The country and variant codes are optional. When omitting the country code, you specify a null `String`. You may create a `Locale` for the English language as follows:

>     enLocale = new Locale("en", "");

For your convenience the `Locale` class provides constants for some languages and countries. For example, you can create `Locale` objects by specifying the `JAPANESE` or `JAPAN` constants. The `Locale` objects created by the following two statements are equivalent:

>     j1Locale = Locale.JAPAN;
>     j2Locale = new Locale("ja", "JP");

When you specify a language constant, the country portion of the `Locale` is undefined. The next two statements create equivalent `Locale` objects:

>     j3Locale = Locale.JAPANESE;
>     j4Locale = new Locale("ja", "");

Previous page: Setting the Locale
Next page: Identifying Available Locales