Previous | Next | Trail Map | Internationalization | Setting the Locale

Creating a Locale

To create a Locale object, you typically specify the language code and 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");
In the next example, we create Locale objects for the English language in the U.S.A. and Great Britain:
bLocale = new Locale("en","US");
cLocale = new Locale("en","GB");
The first argument is the language code, a pair of lower-case 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:
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, upper-case 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 next table contains some 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. If there are variations in language usage within the same country, you might want to specify a variant. For example, in the South of the United States, people often say "y'all," but in the North they say "you all." You could create different Locale objects as follows:
nLocale = new Locale("en", "US" ,"NORTH");
sLocale = new Locale("en", "US", "SOUTH");
The variant codes conform to no standard. They are arbitrary and specific to your application. If you created Locale objects with the NORTH and SOUTH variant codes, as in the previous example, only your application would know how to deal with them.

Usually, you specify variant codes to indentify 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:

xLocale = new Locale("de", "DE" ,"UNIX");
yLocale = new Locale("de", "DE", "WINDOWS");
The country and variant codes are optional. When omitting the the country code you specify a null String. You may create a Locale for the English language as follows:
enLocale = new Locale("en", "");
However, if you omit the country code, your application cannot adapt to regional differences in language. For instance, a program using the enLocale object cannot display the word "colour" in the U.K. and the word "color" in the U.S.

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 | Next | Trail Map | Internationalization | Setting the Locale