Class DefaultI18N

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

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

    • NO_ARGS

      private static final Object[] NO_ARGS
    • bundles

      private HashMap bundles
    • bundleNames

      private String[] bundleNames
    • defaultBundleName

      private String defaultBundleName
    • defaultLocale

      private Locale defaultLocale
    • defaultLanguage

      private String defaultLanguage
    • defaultCountry

      private String defaultCountry
    • devMode

      private boolean devMode
  • Constructor Details

    • DefaultI18N

      public DefaultI18N()
  • Method Details

    • getDefaultLanguage

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

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

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

      public String[] getBundleNames()
      Specified by:
      getBundleNames 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, 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 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.
    • getLocale

      public Locale getLocale(String header)
      Specified by:
      getLocale in interface I18N
      See Also:
    • 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
      Throws:
      MissingResourceException - Specified key cannot be matched.
      See Also:
    • 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
    • format

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

      public String format(String bundleName, Locale locale, String key, Object arg1, Object arg2)
      Specified by:
      format in interface I18N
      See Also:
    • 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.
    • 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 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.
      Throws:
      MissingResourceException - Bundle not found.
    • 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.

    • getBundleIgnoreException

      private ResourceBundle getBundleIgnoreException(String bundleName, Locale locale)
      Retrieves the bundle using the ResourceBundle.getBundle(String, Locale) method, returning null instead of throwing MissingResourceException.
    • 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).