java.lang.Object | |
↳ | java.util.Locale |
Locale
represents a language/country/variant combination. Locales are used to
alter the presentation of information such as numbers or dates to suit the conventions
in the region they describe.
The language codes are two-letter lowercase ISO language codes (such as "en") as defined by ISO 639-1. The country codes are two-letter uppercase ISO country codes (such as "US") as defined by ISO 3166-1. The variant codes are unspecified.
Note that Java uses several deprecated two-letter codes. The Hebrew ("he") language
code is rewritten as "iw", Indonesian ("id") as "in", and Yiddish ("yi") as "ji". This
rewriting happens even if you construct your own Locale
object, not just for
instances returned by the various lookup methods.
Available locales
This class' constructors do no error checking. You can create a Locale
for languages
and countries that don't exist, and you can create instances for combinations that don't
exist (such as "de_US" for "German as spoken in the US").
Note that locale data is not necessarily available for any of the locales pre-defined as constants in this class except for en_US, which is the only locale Java guarantees is always available.
It is also a mistake to assume that all devices have the same locales available. A device sold in the US will almost certainly support en_US and es_US, but not necessarily any locales with the same language but different countries (such as en_GB or es_ES), nor any locales for other languages (such as de_DE). The opposite may well be true for a device sold in Europe.
You can use getDefault
to get an appropriate locale for the user of
the device you're running on, or getAvailableLocales
to get a list of all the locales
available on the device you're running on.
Locale data
Note that locale data comes solely from ICU. User-supplied locale service providers (using
the java.text.spi
or java.util.spi
mechanisms) are not supported.
Here are the versions of ICU (and the corresponding CLDR and Unicode versions) used in various Android releases:
cupcake/donut/eclair | ICU 3.8 | CLDR 1.5 | Unicode 5.0 |
froyo | ICU 4.2 | CLDR 1.7 | Unicode 5.1 |
gingerbread | ICU 4.4 | CLDR 1.8 | Unicode 5.2 |
Note that there are many convenience methods that automatically use the default locale, but
these may not be as convenient as you imagine. The default locale is appropriate for anything
that involves presenting data to the user. You should use the user's date/time formats, number
formats, rules for conversion to lowercase, and so on. A common mistake is to implicitly use the
default locale when producing output meant to be machine-readable. This tends to work on the
developer's test devices but fail when run on a device whose user is in a less conventional
locale. For example, if you're formatting integers some locales will use non-ASCII decimal
digits. As another example, if you're formatting floating-point numbers some locales will use
','
as the decimal point. That's correct for human-readable output, but likely to cause
problems if presented to another computer (Double.parseDouble
can't parse such a number,
for example). The best choice for computer-readable output is usually Locale.US
: this
locale is guaranteed to be available on all devices, and the combination of no surprising
behavior and frequent use (especially for computer-computer communication) means that it tends
to be the most efficient choice too.
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Locale | CANADA | Locale constant for en_CA. | |||||||||
Locale | CANADA_FRENCH | Locale constant for fr_CA. | |||||||||
Locale | CHINA | Locale constant for zh_CN. | |||||||||
Locale | CHINESE | Locale constant for zh. | |||||||||
Locale | ENGLISH | Locale constant for en. | |||||||||
Locale | FRANCE | Locale constant for fr_FR. | |||||||||
Locale | FRENCH | Locale constant for fr. | |||||||||
Locale | GERMAN | Locale constant for de. | |||||||||
Locale | GERMANY | Locale constant for de_DE. | |||||||||
Locale | ITALIAN | Locale constant for it. | |||||||||
Locale | ITALY | Locale constant for it_IT. | |||||||||
Locale | JAPAN | Locale constant for ja_JP. | |||||||||
Locale | JAPANESE | Locale constant for ja. | |||||||||
Locale | KOREA | Locale constant for ko_KR. | |||||||||
Locale | KOREAN | Locale constant for ko. | |||||||||
Locale | PRC | Locale constant for zh_CN. | |||||||||
Locale | ROOT | Locale constant for the root locale. | |||||||||
Locale | SIMPLIFIED_CHINESE | Locale constant for zh_CN. | |||||||||
Locale | TAIWAN | Locale constant for zh_TW. | |||||||||
Locale | TRADITIONAL_CHINESE | Locale constant for zh_TW. | |||||||||
Locale | UK | Locale constant for en_GB. | |||||||||
Locale | US | Locale constant for en_US. |
Public Constructors | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Constructs a new
Locale using the specified language. | |||||||||||
Constructs a new
Locale using the specified language and country codes. | |||||||||||
Constructs a new
Locale using the specified language, country,
and variant codes. |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Creates and returns a copy of this
Object . | |||||||||||
Returns true if
object is a locale with the same language,
country and variant. | |||||||||||
Returns the system's installed locales.
| |||||||||||
Returns the country code for this locale, or
"" if this locale
doesn't correspond to a specific country. | |||||||||||
Returns the user's preferred locale.
| |||||||||||
Returns the name of this locale's country, localized to
locale . | |||||||||||
Equivalent to
getDisplayCountry(Locale.getDefault()) . | |||||||||||
Equivalent to
getDisplayLanguage(Locale.getDefault()) . | |||||||||||
Returns the name of this locale's language, localized to
locale . | |||||||||||
Returns this locale's language name, country name, and variant, localized
to
locale . | |||||||||||
Equivalent to
getDisplayName(Locale.getDefault()) . | |||||||||||
Gets the full variant name in the default
Locale for the variant code of
this Locale . | |||||||||||
Gets the full variant name in the specified
Locale for the variant code
of this Locale . | |||||||||||
Gets the three letter ISO country code which corresponds to the country
code for this
Locale . | |||||||||||
Gets the three letter ISO language code which corresponds to the language
code for this
Locale . | |||||||||||
Gets the list of two letter ISO country codes which can be used as the
country code for a
Locale . | |||||||||||
Gets the list of two letter ISO language codes which can be used as the
language code for a
Locale . | |||||||||||
Gets the language code for this
Locale or the empty string of no language
was set. | |||||||||||
Gets the variant code for this
Locale or an empty String if no variant
was set. | |||||||||||
Returns an integer hash code for the receiver.
| |||||||||||
Overrides the default locale.
| |||||||||||
Returns the string representation of this
Locale . |
[Expand]
Inherited Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class java.lang.Object
|
Locale constant for the root locale. The root locale has an empty language, country, and variant.
Constructs a new Locale
using the specified language.
Constructs a new Locale
using the specified language and country codes.
Constructs a new Locale
using the specified language, country,
and variant codes.
Creates and returns a copy of this Object
. The default
implementation returns a so-called "shallow" copy: It creates a new
instance of the same class and then copies the field values (including
object references) from this instance to the new instance. A "deep" copy,
in contrast, would also recursively clone nested objects. A subclass that
needs to implement this kind of cloning should call super.clone()
to create the new instance and then create deep copies of the nested,
mutable objects.
Returns true if object
is a locale with the same language,
country and variant.
object | the object to compare this instance with. |
---|
true
if the specified object is equal to this Object
; false
otherwise.Returns the system's installed locales. This array always includes Locale.US
, and usually several others. Most locale-sensitive classes
offer their own getAvailableLocales
method, which should be
preferred over this general purpose method.
Returns the country code for this locale, or ""
if this locale
doesn't correspond to a specific country.
Returns the user's preferred locale. This may have been overridden for
this process with setDefault(Locale)
.
Since the user's locale changes dynamically, avoid caching this value. Instead, use this method to look it up for each use.
Returns the name of this locale's country, localized to locale
.
Returns the empty string if this locale does not correspond to a specific
country.
Equivalent to getDisplayCountry(Locale.getDefault())
.
Equivalent to getDisplayLanguage(Locale.getDefault())
.
Returns the name of this locale's language, localized to locale
.
If the language name is unknown, the language code is returned.
Returns this locale's language name, country name, and variant, localized
to locale
. The exact output form depends on whether this locale
corresponds to a specific language, country and variant, such as:
English
, English (United States)
, English (United
States,Computer)
, anglais (États-Unis)
, anglais
(États-Unis,informatique)
.
Equivalent to getDisplayName(Locale.getDefault())
.
Gets the full variant name in the default Locale
for the variant code of
this Locale
. If there is no matching variant name, the variant code is
returned.
Gets the full variant name in the specified Locale
for the variant code
of this Locale
. If there is no matching variant name, the variant code is
returned.
locale | the Locale for which the display name is retrieved. |
---|
Gets the three letter ISO country code which corresponds to the country
code for this Locale
.
MissingResourceException | if there is no matching three letter ISO country code. |
---|
Gets the three letter ISO language code which corresponds to the language
code for this Locale
.
MissingResourceException | if there is no matching three letter ISO language code. |
---|
Gets the list of two letter ISO country codes which can be used as the
country code for a Locale
.
Gets the list of two letter ISO language codes which can be used as the
language code for a Locale
.
Gets the language code for this Locale
or the empty string of no language
was set.
Gets the variant code for this Locale
or an empty String
if no variant
was set.
Returns an integer hash code for the receiver. Objects which are equal return the same value for this method.
Overrides the default locale. This does not affect system configuration, and attempts to override the system-provided default locale may themselves be overridden by actual changes to the system configuration. Code that calls this method is usually incorrect, and should be fixed by passing the appropriate locale to each locale-sensitive method that's called.
Returns the string representation of this Locale
. It consists of the
language code, country code and variant separated by underscores.
If the language is missing the string begins
with an underscore. If the country is missing there are 2 underscores
between the language and the variant. The variant cannot stand alone
without a language and/or country code: in this case this method would
return the empty string.
Examples: "en", "en_US", "_US", "en__POSIX", "en_US_POSIX"
Locale
.