org.codehaus.plexus.i18n

Class DefaultI18N

Implemented Interfaces:
I18N, Initializable

public class DefaultI18N
extends AbstractLogEnabled
implements I18N, Initializable

Field Summary

private static Object[]
NO_ARGS
private String[]
bundleNames
private HashMap
bundles
private String
defaultBundleName
private String
defaultCountry
private String
defaultLanguage
private Locale
defaultLocale
private boolean
devMode

Fields inherited from interface org.codehaus.plexus.i18n.I18N

ACCEPT_LANGUAGE, ROLE

Method Summary

private ResourceBundle
cacheBundle(String bundleName, Locale locale)
Caches the named bundle for fast lookups.
private ResourceBundle
findBundleByLocale(String bundleName, Locale locale, Map bundlesByLocale)
Retrieves the bundle most closely matching first against the supplied inputs, then against the defaults.
String
format(String bundleName, Locale locale, String key, Object arg1)
String
format(String bundleName, Locale locale, String key, Object arg1, Object arg2)
String
format(String bundleName, Locale locale, String key, Object[] args)
Looks up the value for key in the ResourceBundle referenced by bundleName, then formats that value for the specified Locale using args.
String
format(String key, Object arg1)
String
format(String key, Object arg1, Object arg2)
ResourceBundle
getBundle()
ResourceBundle
getBundle(String bundleName)
ResourceBundle
getBundle(String bundleName, Locale locale)
This method returns a ResourceBundle for the given bundle name and the given Locale.
ResourceBundle
getBundle(String bundleName, String languageHeader)
This method returns a ResourceBundle given the bundle name and the Locale information supplied in the HTTP "Accept-Language" header.
private ResourceBundle
getBundleIgnoreException(String bundleName, Locale locale)
Retrieves the bundle using the ResourceBundle.getBundle(String, Locale) method, returning null instead of throwing MissingResourceException.
String[]
getBundleNames()
String
getDefaultBundleName()
String
getDefaultCountry()
String
getDefaultLanguage()
Locale
getLocale(String header)
String
getString(String key)
String
getString(String key, Locale locale)
String
getString(String bundleName, Locale locale, String key)
protected String
getStringOrNull(ResourceBundle rb, 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()

Field Details

NO_ARGS

private static final Object[] NO_ARGS

bundleNames

private String[] bundleNames

bundles

private HashMap bundles

defaultBundleName

private String defaultBundleName

defaultCountry

private String defaultCountry

defaultLanguage

private String defaultLanguage

defaultLocale

private Locale defaultLocale

devMode

private boolean devMode

Method Details

cacheBundle

private ResourceBundle cacheBundle(String bundleName,
                                   Locale locale)
            throws MissingResourceException
Caches the named bundle for fast lookups. This operation is relatively expesive in terms of memory use, but is optimized for run-time speed in the usual case.

findBundleByLocale

private ResourceBundle findBundleByLocale(String bundleName,
                                          Locale locale,
                                          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.


format

public String format(String bundleName,
                     Locale locale,
                     String key,
                     Object arg1)
Specified by:
format in interface I18N

format

public String format(String bundleName,
                     Locale locale,
                     String key,
                     Object arg1,
                     Object arg2)
Specified by:
format in interface I18N

format

public String format(String bundleName,
                     Locale locale,
                     String key,
                     Object[] args)
Looks up the value for key in the ResourceBundle referenced by bundleName, then formats that value for the specified Locale using args.
Specified by:
format in interface I18N
Returns:
Localized, formatted text identified by key.

format

public String format(String key,
                     Object arg1)
Specified by:
format in interface I18N

format

public String format(String key,
                     Object arg1,
                     Object arg2)
Specified by:
format in interface I18N

getBundle

public ResourceBundle getBundle()
Specified by:
getBundle in interface I18N

getBundle

public ResourceBundle getBundle(String bundleName)
Specified by:
getBundle in interface I18N

getBundle

public ResourceBundle getBundle(String bundleName,
                                Locale locale)
This method returns a ResourceBundle for the given bundle name and the given Locale.
Specified by:
getBundle in interface I18N
Parameters:
bundleName - Name of bundle (or null for the default bundle).
locale - The locale (or null for the locale indicated by the default language and country).
Returns:
A localized ResourceBundle.

getBundle

public ResourceBundle getBundle(String bundleName,
                                String languageHeader)
This method returns a ResourceBundle given the bundle name and the Locale information supplied in the HTTP "Accept-Language" header.
Specified by:
getBundle in interface I18N
Parameters:
bundleName - Name of bundle.
languageHeader - A String with the language header.
Returns:
A localized ResourceBundle.

getBundleIgnoreException

private ResourceBundle getBundleIgnoreException(String bundleName,
                                                Locale locale)
Retrieves the bundle using the ResourceBundle.getBundle(String, Locale) method, returning null instead of throwing MissingResourceException.

getBundleNames

public String[] getBundleNames()
Specified by:
getBundleNames in interface I18N

getDefaultBundleName

public String getDefaultBundleName()
Specified by:
getDefaultBundleName in interface I18N

getDefaultCountry

public String getDefaultCountry()
Specified by:
getDefaultCountry in interface I18N

getDefaultLanguage

public String getDefaultLanguage()
Specified by:
getDefaultLanguage in interface I18N

getLocale

public Locale getLocale(String header)
Specified by:
getLocale in interface I18N

getString

public String getString(String key)
Specified by:
getString in interface I18N

getString

public String getString(String key,
                        Locale locale)
Specified by:
getString in interface I18N

getString

public String getString(String bundleName,
                        Locale locale,
                        String key)
Specified by:
getString in interface I18N

getStringOrNull

protected final String getStringOrNull(ResourceBundle rb,
                                       String key)
Gets localized text from a bundle if it's there. Otherwise, returns null (ignoring a possible MissingResourceException).

initialize

public void initialize()
            throws InitializationException
Called the first time the Service is used.

initializeBundleNames

protected void initializeBundleNames()