There are several ways to create a Locale
object.
Regardless of the technique used,
creation can be as simple as specifying the language code. However,
you can further distinguish the locale by setting the region
(also referred to as "country") and variant codes.
If you are using the JDK 7 release or later,
you can also specify the script code and Unicode locale extensions.
The four ways to create a Locale
object are:
Locale.Builder
class and the forLanguageTag
method were added in the Java SE 7 release.
LocaleBuilder
Class
The
Locale.Builder
utility class can be used to construct a Locale
object that
conforms to the IETF BCP 47 syntax.
For example, to specify the French language and the country of Canada,
you could invoke the Locale.Builder
constructor and then chain
the setter methods as follows:
Locale aLocale = new Locale.Builder().setLanguage("fr").setRegion("CA").build();
The next example creates Locale
objects for the English language in the United States and Great Britain:
Locale bLocale = new Locale.Builder().setLanguage("en").setRegion("US").build(); Locale cLocale = new Locale.Builder().setLanguage("en").setRegion("GB").build();
The final example creates a Locale
object
for the Russian language:
Locale dLocale = new Locale.Builder().setLanguage("ru").setScript("Cyrl").build();
Locale
Constructors
There are three constructors available in the Locale
class for creating a Locale
object:
Locale(String language)
Locale(String language, String country)
Locale(String language, String country, String variant)
Locale
objects for the French
language in Canada, the English language in the U.S. and Great Britain, and
the Russian language.
aLocale = new Locale("fr", "CA"); bLocale = new Locale("en", "US"); cLocale = new Locale("en", "GB"); dLocale = new Locale("ru");
Locale
object in a release earlier than JDK 7.
forLanguageTag
Factory Method
If you have a language tag string that conforms to the IETF BCP 47
standard, you can use the
forLanguageTag(String)
factory method, which was introduced in the Java SE 7 release. For example:
Locale aLocale = Locale.forLanguageTag("en-US"); Locale bLocale = Locale.forLanguageTag("ja-JP-u-ca-japanese");
Locale
ConstantsLocale
class provides
constants for some languages and countries. For example:
cLocale = Locale.JAPAN; dLocale = Locale.CANADA_FRENCH;
Locale
is undefined. The next three statements create
equivalent Locale
objects:
j1Locale = Locale.JAPANESE; j2Locale = new Locale.Builder().setLanguage("ja").build(); j3Locale = new Locale("ja");
Locale
objects created
by the following three statements are also equivalent:
j4Locale = Locale.JAPAN; j5Locale = new Locale.Builder().setLanguage("ja").setRegion("JP").build(); j6Locale = new Locale("ja", "JP");
The following sections discuss the language code and the optional script, region, and variant codes.
The following table lists a few of the language codes.
Language Code | Description |
---|---|
de |
German |
en |
English |
fr |
French |
ru |
Russian |
ja |
Japanese |
jv |
Javanese |
ko |
Korean |
zh |
Chinese |
The following table lists a few of the script codes.
Script Code | Description |
---|---|
Arab |
Arabic |
Cyrl |
Cyrillic |
Kana |
Katakana |
Latn |
Latin |
There are three methods for retrieving the script information for a
Locale
.
getScript()
– returns the 4-letter script code for a Locale
object.
If no script is defined for the locale, an empty string is returned.
getDisplayScript()
– returns a name for the locale's script that is appropriate
for display to the user. If possible, the name will be localized for
the default locale. So, for example, if the script code is "Latn," the
diplay script name returned would be the string "Latin" for an English
language locale.
getDisplayScript(Locale)
– returns the display name of the specified Locale
localized, if possible, for the locale.
The following table contains several sample country and region codes.
A-2 Code | A-3 Code | Numeric Code | Description |
---|---|---|---|
AU |
AUS |
036 |
Australia |
BR |
BRA |
076 |
Brazil |
CA |
CAN |
124 |
Canada |
CN |
CHN |
156 |
China |
DE |
DEU |
276 |
Germany |
FR |
FRA |
250 |
France |
IN |
IND |
356 |
India |
RU |
RUS |
643 |
Russian Federation |
US |
USA |
840 |
United States |
variant
code can be used to further distinguish your
Locale
. For example, the variant code can be used to
indicate dialectical differences that are not covered by the region code.
To define non-language-specific variations relevant to your environment, use the extensions mechanism, as explained in BCP 47 Extensions.
As of the Java SE 7 release, which conforms to the IETF BCP 47 standard, the variant code is used specifically to indicate additional variations that define a language or its dialects. The IETF BCP 47 standard imposes syntactic restrictions on the variant subtag. You can see a list of variant codes (search for variant) at http://www.iana.org/assignments/language-subtag-registry.