| java.lang.Object java.util.ResourceBundle com.ibm.icu.util.OverlayBundle
OverlayBundle | public class OverlayBundle extends ResourceBundle (Code) | | A ResourceBundle that overlays one hierarchy atop another. This is
best explained by example. Suppose one wants to use the
resource hiararchy (in JDK 1.2 and 1.3, but not 1.4) at
"java.text.resources.LocaleElements", but one wants to use
a modified version of the "NumberPatterns" resource in the
fr_FR locale. One way to do this is to add special case code
to the lookup operation to check for fr_FR and the key
"NumberPatterns", and in that case, load up custom data. However,
this becomes unwieldy and places some information about the
effective resource hierarchy into the code.
The OverlayBundle solves this problem by layering another
hierarchy, e.g, "com.acme.resources.LocaleElements", on top of a
base hierarchy. When a resource is requested, it is first sought
in the overlay hierarchy, and if not found there, it is sought in
the base hierarchy. Multiple overlays are supported, but in
practice one is usually sufficient.
The OverlayBundle also addresses the problem of country-oriented
data. To specify the default data for a language, one just sets
the language resource bundle data. However, specifying the default
data for a country using the standard ResourceBundle mechanism is
impossible. The OverlayBundle recognizes "wildcard" locales with
the special language code "xx". When looking up data for a locale
with a non-empty country, if an exact locale match cannot be found,
the OverlayBundle looks for data in the locale xx_YY, where YY is
the country being sought. This effectively adds another entry in
the fallback sequence for a locale aa_BB: aa_BB, xx_BB, aa, root.
Wildcard locales are not implemented for the base hierarchy, only
for overlays.
The OverlayBundle is implemented as an array of n ResourceBundle
base names. The base names are searched from 0 to n-1. Base name
n-1 is special; it is the base hierarchy. This should be a
well-populated hierarchy with most of the default data, typically,
the icu or sun core hierarchies. The base hierarchy is
treated differently from the overlays above it. It does not get
wildcard resolution, and the getKeys() framework method is
delegated to the base hierarchy bundle.
Usage: Instantiate an OverlayBundle directly (not via a factory
method as in ResourceBundle). Instead of specifying a single base
name, pass it an array of 2 or more base names. After that, use it
exactly as you would use ResourceBundle.
See Also: java.util.ResourceBundle author: Alan Liu |
Constructor Summary | |
public | OverlayBundle(String[] baseNames, Locale locale) Construct an overlay bundle given a sequence of base names and
a locale. |
OverlayBundle | public OverlayBundle(String[] baseNames, Locale locale)(Code) | | Construct an overlay bundle given a sequence of base names and
a locale.
|
getKeys | public Enumeration getKeys()(Code) | | ResourceBundle framework method. Delegates to
bundles[bundles.length-1].getKeys().
|
|
|