org.codehaus.plexus.i18n
Class DefaultI18N

java.lang.Object
  extended byorg.codehaus.plexus.logging.AbstractLogEnabled
      extended byorg.codehaus.plexus.i18n.DefaultI18N
All Implemented Interfaces:
I18N, org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable, org.codehaus.plexus.logging.LogEnabled

public class DefaultI18N
extends org.codehaus.plexus.logging.AbstractLogEnabled
implements I18N, org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable


Field Summary
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
           
 
Fields inherited from class org.codehaus.plexus.logging.AbstractLogEnabled
 
Fields inherited from interface org.codehaus.plexus.i18n.I18N
ACCEPT_LANGUAGE, ROLE
 
Constructor Summary
DefaultI18N()
           
 
Method Summary
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()
           
 
Methods inherited from class org.codehaus.plexus.logging.AbstractLogEnabled
enableLogging, getLogger, setupLogger, setupLogger, setupLogger
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

NO_ARGS

private static final java.lang.Object[] NO_ARGS

bundles

private java.util.HashMap bundles

bundleNames

private java.lang.String[] bundleNames

defaultBundleName

private java.lang.String defaultBundleName

defaultLocale

private java.util.Locale defaultLocale

defaultLanguage

private java.lang.String defaultLanguage

defaultCountry

private java.lang.String defaultCountry

devMode

private boolean devMode
Constructor Detail

DefaultI18N

public DefaultI18N()
Method Detail

getDefaultLanguage

public java.lang.String getDefaultLanguage()
Specified by:
getDefaultLanguage in interface I18N

getDefaultCountry

public java.lang.String getDefaultCountry()
Specified by:
getDefaultCountry in interface I18N

getDefaultBundleName

public java.lang.String getDefaultBundleName()
Specified by:
getDefaultBundleName in interface I18N

getBundleNames

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

getBundle

public java.util.ResourceBundle getBundle()
Specified by:
getBundle in interface I18N

getBundle

public java.util.ResourceBundle getBundle(java.lang.String bundleName)
Specified by:
getBundle in interface I18N

getBundle

public 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.

Specified by:
getBundle in interface I18N
Parameters:
bundleName - Name of bundle.
languageHeader - A String with the language header.
Returns:
A localized ResourceBundle.

getBundle

public 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.

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.

getLocale

public java.util.Locale getLocale(java.lang.String header)
Specified by:
getLocale in interface I18N
See Also:
I18N.getLocale(String)

getString

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

getString

public java.lang.String getString(java.lang.String key,
                                  java.util.Locale locale)
Specified by:
getString in interface I18N

getString

public java.lang.String getString(java.lang.String bundleName,
                                  java.util.Locale locale,
                                  java.lang.String key)
Specified by:
getString in interface I18N
Throws:
java.util.MissingResourceException - Specified key cannot be matched.
See Also:
I18N.getString(String, Locale, String)

format

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

format

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

format

public java.lang.String format(java.lang.String bundleName,
                               java.util.Locale locale,
                               java.lang.String key,
                               java.lang.Object arg1)
Specified by:
format in interface I18N
See Also:
I18N.format(String, Locale, String, Object)

format

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)
Specified by:
format in interface I18N
See Also:
I18N.format(String, Locale, String, Object, Object)

format

public 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.

Specified by:
format in interface I18N
Returns:
Localized, formatted text identified by key.

initialize

public void initialize()
                throws org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException
Called the first time the Service is used.

Specified by:
initialize in interface org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable
Throws:
org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException

initializeBundleNames

protected void initializeBundleNames()

cacheBundle

private java.util.ResourceBundle cacheBundle(java.lang.String bundleName,
                                             java.util.Locale locale)
                                      throws java.util.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.

Throws:
java.util.MissingResourceException - Bundle not found.

findBundleByLocale

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.


getBundleIgnoreException

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.


getStringOrNull

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