public class DefaultI18N extends org.codehaus.plexus.logging.AbstractLogEnabled implements I18N, org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
| Modifier and Type | Field and Description |
|---|---|
private java.lang.String[] |
bundleNames |
private java.util.HashMap |
bundles |
private java.lang.String |
defaultBundleName |
private java.lang.String |
defaultCountry |
private java.lang.String |
defaultLanguage |
private java.util.Locale |
defaultLocale |
private boolean |
devMode |
private static java.lang.Object[] |
NO_ARGS |
ACCEPT_LANGUAGE, ROLE| Constructor and Description |
|---|
DefaultI18N() |
| Modifier and Type | Method and Description |
|---|---|
private java.util.ResourceBundle |
cacheBundle(java.lang.String bundleName,
java.util.Locale locale)
Caches the named bundle for fast lookups.
|
private java.util.ResourceBundle |
findBundleByLocale(java.lang.String bundleName,
java.util.Locale locale,
java.util.Map bundlesByLocale)
Retrieves the bundle most closely matching first against the
supplied inputs, then against the defaults.
|
java.lang.String |
format(java.lang.String bundleName,
java.util.Locale locale,
java.lang.String key,
java.lang.Object arg1) |
java.lang.String |
format(java.lang.String bundleName,
java.util.Locale locale,
java.lang.String key,
java.lang.Object[] args)
Looks up the value for
key in the
ResourceBundle referenced by
bundleName, then formats that value for the
specified Locale using args. |
java.lang.String |
format(java.lang.String bundleName,
java.util.Locale locale,
java.lang.String key,
java.lang.Object arg1,
java.lang.Object arg2) |
java.lang.String |
format(java.lang.String key,
java.lang.Object arg1) |
java.lang.String |
format(java.lang.String key,
java.lang.Object arg1,
java.lang.Object arg2) |
java.util.ResourceBundle |
getBundle() |
java.util.ResourceBundle |
getBundle(java.lang.String bundleName) |
java.util.ResourceBundle |
getBundle(java.lang.String bundleName,
java.util.Locale locale)
This method returns a ResourceBundle for the given bundle name
and the given Locale.
|
java.util.ResourceBundle |
getBundle(java.lang.String bundleName,
java.lang.String languageHeader)
This method returns a ResourceBundle given the bundle name and
the Locale information supplied in the HTTP "Accept-Language"
header.
|
private java.util.ResourceBundle |
getBundleIgnoreException(java.lang.String bundleName,
java.util.Locale locale)
Retrieves the bundle using the
ResourceBundle.getBundle(String, Locale) method,
returning null instead of throwing
MissingResourceException. |
java.lang.String[] |
getBundleNames() |
java.lang.String |
getDefaultBundleName() |
java.lang.String |
getDefaultCountry() |
java.lang.String |
getDefaultLanguage() |
java.util.Locale |
getLocale(java.lang.String header) |
java.lang.String |
getString(java.lang.String key) |
java.lang.String |
getString(java.lang.String key,
java.util.Locale locale) |
java.lang.String |
getString(java.lang.String bundleName,
java.util.Locale locale,
java.lang.String key) |
protected java.lang.String |
getStringOrNull(java.util.ResourceBundle rb,
java.lang.String key)
Gets localized text from a bundle if it's there.
|
void |
initialize()
Called the first time the Service is used.
|
protected void |
initializeBundleNames() |
private static final java.lang.Object[] NO_ARGS
private java.util.HashMap bundles
private java.lang.String[] bundleNames
private java.lang.String defaultBundleName
private java.util.Locale defaultLocale
private java.lang.String defaultLanguage
private java.lang.String defaultCountry
private boolean devMode
public java.lang.String getDefaultLanguage()
getDefaultLanguage in interface I18Npublic java.lang.String getDefaultCountry()
getDefaultCountry in interface I18Npublic java.lang.String getDefaultBundleName()
getDefaultBundleName in interface I18Npublic java.lang.String[] getBundleNames()
getBundleNames in interface I18Npublic java.util.ResourceBundle getBundle(java.lang.String bundleName)
public java.util.ResourceBundle getBundle(java.lang.String bundleName,
java.lang.String languageHeader)
public java.util.ResourceBundle getBundle(java.lang.String bundleName,
java.util.Locale locale)
public java.util.Locale getLocale(java.lang.String header)
getLocale in interface I18NI18N.getLocale(String)public java.lang.String getString(java.lang.String key)
public java.lang.String getString(java.lang.String key,
java.util.Locale locale)
public java.lang.String getString(java.lang.String bundleName,
java.util.Locale locale,
java.lang.String key)
getString in interface I18Njava.util.MissingResourceException - Specified key cannot be matched.I18N.getString(String, Locale, String)public java.lang.String format(java.lang.String key,
java.lang.Object arg1)
public java.lang.String format(java.lang.String key,
java.lang.Object arg1,
java.lang.Object arg2)
public java.lang.String format(java.lang.String bundleName,
java.util.Locale locale,
java.lang.String key,
java.lang.Object arg1)
format in interface I18NI18N.format(String, Locale, String, Object)public java.lang.String format(java.lang.String bundleName,
java.util.Locale locale,
java.lang.String key,
java.lang.Object arg1,
java.lang.Object arg2)
format in interface I18NI18N.format(String, Locale, String, Object, Object)public java.lang.String format(java.lang.String bundleName,
java.util.Locale locale,
java.lang.String key,
java.lang.Object[] args)
key in the
ResourceBundle referenced by
bundleName, then formats that value for the
specified Locale using args.public void initialize()
throws org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
initialize in interface org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializableorg.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationExceptionprotected void initializeBundleNames()
private java.util.ResourceBundle cacheBundle(java.lang.String bundleName,
java.util.Locale locale)
throws java.util.MissingResourceException
java.util.MissingResourceException - Bundle not found.private java.util.ResourceBundle findBundleByLocale(java.lang.String bundleName,
java.util.Locale locale,
java.util.Map bundlesByLocale)
Retrieves the bundle most closely matching first against the supplied inputs, then against the defaults.
Use case: some clients send a HTTP Accept-Language header with a value of only the language to use (i.e. "Accept-Language: en"), and neglect to include a country. When there is no bundle for the requested language, this method can be called to try the default country (checking internally to assure the requested criteria matches the default to avoid disconnects between language and country).
Since we're really just guessing at possible bundles to use,
we don't ever throw MissingResourceException.
private java.util.ResourceBundle getBundleIgnoreException(java.lang.String bundleName,
java.util.Locale locale)
ResourceBundle.getBundle(String, Locale) method,
returning null instead of throwing
MissingResourceException.protected final java.lang.String getStringOrNull(java.util.ResourceBundle rb,
java.lang.String key)
null (ignoring a possible
MissingResourceException).