Many classes and services in ICU follow a factory idiom, in which a factory method or object responds to a client request with an object. The request includes a locale (the requested locale), and the returned object is constructed using data for that locale. The system may lack data for the requested locale, in which case the locale fallback mechanism will be invoked until a populated locale is found (the valid locale). Furthermore, even when a populated locale is found (the valid locale), further fallback may be required to reach a locale containing the specific data required by the service (the actual locale).
ULocale performs 'normalization' and 'canonicalization' of locale ids. Normalization 'cleans up' ICU locale ids as follows:
canonicalize
can be called to convert the id to canonical form, or the canonicalInstance
factory method can be called. This class provides selectors {@link #VALID_LOCALE} and {@link #ACTUAL_LOCALE} intended for use in methods namedgetLocale(). These methods exist in several ICU classes, including {@link com.ibm.icu.util.Calendar}, {@link com.ibm.icu.util.Currency}, {@link com.ibm.icu.text.UFormat}, {@link com.ibm.icu.text.BreakIterator}, {@link com.ibm.icu.text.Collator}, {@link com.ibm.icu.text.DateFormatSymbols}, and {@link com.ibm.icu.text.DecimalFormatSymbols} and their subclasses, ifany. Once an object of one of these classes has been created, getLocale() may be called on it to determine the valid and actual locale arrived at during the object's construction.
Note: The getLocale() method will be implemented in ICU 3.0; ICU 2.8 contains a partial preview implementation. The actual locale is returned correctly, but the valid locale is not, in most cases. @see java.util.Locale @author weiv @author Alan Liu @author Ram Viswanadha @stable ICU 2.8
|
|