public class LocaleUtils
extends java.lang.Object
Operations to assist when working with a Locale
.
This class tries to handle null
input gracefully.
An exception will not be thrown for a null
input.
Each method documents its behaviour in more detail.
Modifier and Type | Class and Description |
---|---|
(package private) static class |
LocaleUtils.SyncAvoid |
Modifier and Type | Field and Description |
---|---|
private static java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<java.util.Locale>> |
cCountriesByLanguage
Concurrent map of country locales by language.
|
private static java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<java.util.Locale>> |
cLanguagesByCountry
Concurrent map of language locales by country.
|
Constructor and Description |
---|
LocaleUtils()
LocaleUtils instances should NOT be constructed in standard programming. |
Modifier and Type | Method and Description |
---|---|
static java.util.List<java.util.Locale> |
availableLocaleList()
Obtains an unmodifiable list of installed locales.
|
static java.util.Set<java.util.Locale> |
availableLocaleSet()
Obtains an unmodifiable set of installed locales.
|
static java.util.List<java.util.Locale> |
countriesByLanguage(java.lang.String languageCode)
Obtains the list of countries supported for a given language.
|
static boolean |
isAvailableLocale(java.util.Locale locale)
Checks if the locale specified is in the list of available locales.
|
private static boolean |
isISO3166CountryCode(java.lang.String str)
Checks whether the given String is a ISO 3166 alpha-2 country code.
|
private static boolean |
isISO639LanguageCode(java.lang.String str)
Checks whether the given String is a ISO 639 compliant language code.
|
private static boolean |
isNumericAreaCode(java.lang.String str)
Checks whether the given String is a UN M.49 numeric area code.
|
static java.util.List<java.util.Locale> |
languagesByCountry(java.lang.String countryCode)
Obtains the list of languages supported for a given country.
|
static java.util.List<java.util.Locale> |
localeLookupList(java.util.Locale locale)
Obtains the list of locales to search through when performing
a locale search.
|
static java.util.List<java.util.Locale> |
localeLookupList(java.util.Locale locale,
java.util.Locale defaultLocale)
Obtains the list of locales to search through when performing
a locale search.
|
private static java.util.Locale |
parseLocale(java.lang.String str)
Tries to parse a locale from the given String.
|
static java.util.Locale |
toLocale(java.lang.String str)
Converts a String to a Locale.
|
private static final java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<java.util.Locale>> cLanguagesByCountry
private static final java.util.concurrent.ConcurrentMap<java.lang.String,java.util.List<java.util.Locale>> cCountriesByLanguage
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 java.util.Locale toLocale(java.lang.String str)
Converts a String to a Locale.
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_001") = new Locale("en", "001") LocaleUtils.toLocale("en_GB_xxx") = new Locale("en", "GB", "xxx") (#)
(#) The behaviour 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. The length must be correct.
str
- the locale String to convert, null returns nulljava.lang.IllegalArgumentException
- if the string is an invalid formatLocale.forLanguageTag(String)
private static java.util.Locale parseLocale(java.lang.String str)
str
- the String to parse a locale from.java.lang.IllegalArgumentException
- if the given String can not be parsed.private static boolean isISO639LanguageCode(java.lang.String str)
str
- the String to check.private static boolean isISO3166CountryCode(java.lang.String str)
str
- the String to checkprivate static boolean isNumericAreaCode(java.lang.String str)
str
- the String to checkpublic static java.util.List<java.util.Locale> localeLookupList(java.util.Locale locale)
Obtains the list of locales to search through when performing a locale search.
localeLookupList(Locale("fr","CA","xxx")) = [Locale("fr","CA","xxx"), Locale("fr","CA"), Locale("fr")]
locale
- the locale to start frompublic static java.util.List<java.util.Locale> localeLookupList(java.util.Locale locale, java.util.Locale defaultLocale)
Obtains the list of locales to search through when performing a locale search.
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 java.util.List<java.util.Locale> availableLocaleList()
Obtains an unmodifiable list of installed locales.
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 java.util.Set<java.util.Locale> availableLocaleSet()
Obtains an unmodifiable set of installed locales.
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 boolean isAvailableLocale(java.util.Locale locale)
Checks if the locale specified is in the list of available locales.
locale
- the Locale object to check if it is availablepublic static java.util.List<java.util.Locale> languagesByCountry(java.lang.String countryCode)
Obtains the list of languages supported for a given country.
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 java.util.List<java.util.Locale> countriesByLanguage(java.lang.String languageCode)
Obtains the list of countries supported for a given language.
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 empty