public class LocaleUtils extends Object
Locale
.
This class tries to handle null
input gracefully.
An exception will not be thrown for a null
input.
Each method documents its behavior in more detail.
Constructor and Description |
---|
LocaleUtils()
LocaleUtils instances should NOT be constructed in standard programming. |
Modifier and Type | Method and Description |
---|---|
static List<Locale> |
availableLocaleList()
Obtains an unmodifiable list of installed locales.
|
static Set<Locale> |
availableLocaleSet()
Obtains an unmodifiable set of installed locales.
|
static List<Locale> |
countriesByLanguage(String languageCode)
Obtains the list of countries supported for a given language.
|
static boolean |
isAvailableLocale(Locale locale)
Checks if the locale specified is in the set of available locales.
|
static boolean |
isLanguageUndetermined(Locale locale)
Tests whether a Locale's language is undetermined.
|
static List<Locale> |
languagesByCountry(String countryCode)
Obtains the list of languages supported for a given country.
|
static List<Locale> |
localeLookupList(Locale locale)
Obtains the list of locales to search through when performing
a locale search.
|
static List<Locale> |
localeLookupList(Locale locale,
Locale defaultLocale)
Obtains the list of locales to search through when performing
a locale search.
|
static Locale |
toLocale(Locale locale)
Returns the given locale if non-
null , otherwise Locale.getDefault() . |
static Locale |
toLocale(String str)
Converts a String to a Locale.
|
public LocaleUtils()
LocaleUtils
instances should NOT be constructed in standard programming.
Instead, the class should be used as LocaleUtils.toLocale("en_GB");
.
This constructor is public to permit tools that require a JavaBean instance to operate.
public static List<Locale> availableLocaleList()
This method is a wrapper around Locale.getAvailableLocales()
.
It is more efficient, as the JDK method must create a new array each
time it is called.
public static Set<Locale> availableLocaleSet()
This method is a wrapper around Locale.getAvailableLocales()
.
It is more efficient, as the JDK method must create a new array each
time it is called.
public static List<Locale> countriesByLanguage(String languageCode)
This method takes a language code and searches to find the countries available for that language. Variant locales are removed.
languageCode
- the 2 letter language code, null returns emptypublic static boolean isAvailableLocale(Locale locale)
locale
- the Locale object to check if it is availablepublic static boolean isLanguageUndetermined(Locale locale)
A Locale's language tag is undetermined if it's value is "und"
. If a language is empty, or not well-formed (for example, "a" or"e2"), it will be
equal to "und"
.
locale
- the locale to test.Locale.toLanguageTag()
public static List<Locale> languagesByCountry(String countryCode)
This method takes a country code and searches to find the languages available for that country. Variant locales are removed.
countryCode
- the 2-letter country code, null returns emptypublic static List<Locale> localeLookupList(Locale locale)
localeLookupList(Locale("fr", "CA", "xxx")) = [Locale("fr", "CA", "xxx"), Locale("fr", "CA"), Locale("fr")]
locale
- the locale to start frompublic static List<Locale> localeLookupList(Locale locale, Locale defaultLocale)
localeLookupList(Locale("fr", "CA", "xxx"), Locale("en")) = [Locale("fr", "CA", "xxx"), Locale("fr", "CA"), Locale("fr"), Locale("en"]
The result list begins with the most specific locale, then the next more general and so on, finishing with the default locale. The list will never contain the same locale twice.
locale
- the locale to start from, null returns empty listdefaultLocale
- the default locale to use if no other is foundpublic static Locale toLocale(Locale locale)
null
, otherwise Locale.getDefault()
.locale
- a locale or null
.null
, otherwise Locale.getDefault()
.public static Locale toLocale(String str)
This method takes the string format of a locale and creates the locale object from it.
LocaleUtils.toLocale("") = new Locale("", "") LocaleUtils.toLocale("en") = new Locale("en", "") LocaleUtils.toLocale("en_GB") = new Locale("en", "GB") LocaleUtils.toLocale("en-GB") = new Locale("en", "GB") LocaleUtils.toLocale("en_001") = new Locale("en", "001") LocaleUtils.toLocale("en_GB_xxx") = new Locale("en", "GB", "xxx") (#)
(#) The behavior of the JDK variant constructor changed between JDK1.3 and JDK1.4. In JDK1.3, the constructor upper cases the variant, in JDK1.4, it doesn't. Thus, the result from getVariant() may vary depending on your JDK.
This method validates the input strictly. The language code must be lowercase. The country code must be uppercase. The separator must be an underscore or a dash. The length must be correct.
str
- the locale String to convert, null returns nullIllegalArgumentException
- if the string is an invalid formatLocale.forLanguageTag(String)
Copyright © 2001–2023 The Apache Software Foundation. All rights reserved.