public abstract class

ResourceBundle

extends Object
java.lang.Object
   ↳ java.util.ResourceBundle
Known Direct Subclasses

Class Overview

ResourceBundle is an abstract class which is the superclass of classes which provide Locale-specific resources. A bundle contains a number of named resources, where the names are Strings. A bundle may have a parent bundle, and when a resource is not found in a bundle, the parent bundle is searched for the resource. If the fallback mechanism reaches the base bundle and still can't find the resource it throws a MissingResourceException.

  • All bundles for the same group of resources share a common base bundle. This base bundle acts as the root and is the last fallback in case none of its children was able to respond to a request.
  • The first level contains changes between different languages. Only the differences between a language and the language of the base bundle need to be handled by a language-specific ResourceBundle.
  • The second level contains changes between different countries that use the same language. Only the differences between a country and the country of the language bundle need to be handled by a country-specific ResourceBundle.
  • The third level contains changes that don't have a geographic reason (e.g. changes that where made at some point in time like PREEURO where the currency of come countries changed. The country bundle would return the current currency (Euro) and the PREEURO variant bundle would return the old currency (e.g. DM for Germany).
Examples
  • BaseName (base bundle)
  • BaseName_de (german language bundle)
  • BaseName_fr (french language bundle)
  • BaseName_de_DE (bundle with Germany specific resources in german)
  • BaseName_de_CH (bundle with Switzerland specific resources in german)
  • BaseName_fr_CH (bundle with Switzerland specific resources in french)
  • BaseName_de_DE_PREEURO (bundle with Germany specific resources in german of the time before the Euro)
  • BaseName_fr_FR_PREEURO (bundle with France specific resources in french of the time before the Euro)
It's also possible to create variants for languages or countries. This can be done by just skipping the country or language abbreviation: BaseName_us__POSIX or BaseName__DE_PREEURO. But it's not allowed to circumvent both language and country: BaseName___VARIANT is illegal.

Summary

Fields
protected ResourceBundle parent The parent of this ResourceBundle that is used if this bundle doesn't include the requested resource.
Public Constructors
ResourceBundle()
Constructs a new instance of this class.
Public Methods
static ResourceBundle getBundle(String bundleName, Locale locale, ClassLoader loader)
Finds the named resource bundle for the specified Locale and ClassLoader.
final static ResourceBundle getBundle(String bundleName, Locale locale)
Finds the named ResourceBundle for the specified Locale and the caller ClassLoader.
final static ResourceBundle getBundle(String bundleName)
Finds the named resource bundle for the default Locale and the caller's ClassLoader.
abstract Enumeration<String> getKeys()
Returns the names of the resources contained in this ResourceBundle.
Locale getLocale()
Gets the Locale of this ResourceBundle.
final Object getObject(String key)
Returns the named resource from this ResourceBundle.
final String getString(String key)
Returns the named string resource from this ResourceBundle.
final String[] getStringArray(String key)
Returns the named resource from this ResourceBundle.
Protected Methods
abstract Object handleGetObject(String key)
Returns the named resource from this ResourceBundle, or null if the resource is not found.
void setParent(ResourceBundle bundle)
Sets the parent resource bundle of this ResourceBundle.
[Expand]
Inherited Methods
From class java.lang.Object

Fields

protected ResourceBundle parent

Since: API Level 1

The parent of this ResourceBundle that is used if this bundle doesn't include the requested resource.

Public Constructors

public ResourceBundle ()

Since: API Level 1

Constructs a new instance of this class.

Public Methods

public static ResourceBundle getBundle (String bundleName, Locale locale, ClassLoader loader)

Since: API Level 1

Finds the named resource bundle for the specified Locale and ClassLoader. The passed base name and Locale are used to create resource bundle names. The first name is created by concatenating the base name with the result of toString(). From this name all parent bundle names are derived. Then the same thing is done for the default Locale. This results in a list of possible bundle names. Example For the basename "BaseName", the Locale of the German part of Switzerland (de_CH) and the default Locale en_US the list would look something like this:

  1. BaseName_de_CH
  2. BaseName_de
  3. Basename_en_US
  4. Basename_en
  5. BaseName
This list also shows the order in which the bundles will be searched for a requested resource in the German part of Switzerland (de_CH). As a first step, this method tries to instantiate a ResourceBundle with the names provided. If such a class can be instantiated and initialized, it is returned and all the parent bundles are instantiated too. If no such class can be found this method tries to load a .properties file with the names by replacing dots in the base name with a slash and by appending ".properties" at the end of the string. If such a resource can be found by calling getResource(String) it is used to initialize a PropertyResourceBundle. If this succeeds, it will also load the parents of this ResourceBundle. For compatibility with older code, the bundle name isn't required to be a fully qualified class name. It's also possible to directly pass the path to a properties file (without a file extension).

Parameters
bundleName the name of the ResourceBundle.
locale the Locale.
loader the ClassLoader to use.
Returns
  • the requested ResourceBundle.
Throws
MissingResourceException if the ResourceBundle cannot be found.

public static final ResourceBundle getBundle (String bundleName, Locale locale)

Since: API Level 1

Finds the named ResourceBundle for the specified Locale and the caller ClassLoader.

Parameters
bundleName the name of the ResourceBundle.
locale the Locale.
Returns
  • the requested resource bundle.
Throws
MissingResourceException if the resource bundle cannot be found.

public static final ResourceBundle getBundle (String bundleName)

Since: API Level 1

Finds the named resource bundle for the default Locale and the caller's ClassLoader.

Parameters
bundleName the name of the ResourceBundle.
Returns
  • the requested ResourceBundle.
Throws
MissingResourceException if the ResourceBundle cannot be found.

public abstract Enumeration<String> getKeys ()

Since: API Level 1

Returns the names of the resources contained in this ResourceBundle.

Returns
  • an Enumeration of the resource names.

public Locale getLocale ()

Since: API Level 1

Gets the Locale of this ResourceBundle. In case a bundle was not found for the requested Locale, this will return the actual Locale of this resource bundle that was found after doing a fallback.

Returns
  • the Locale of this ResourceBundle.

public final Object getObject (String key)

Since: API Level 1

Returns the named resource from this ResourceBundle. If the resource cannot be found in this bundle, it falls back to the parent bundle (if it's not null) by calling the handleGetObject(String) method. If the resource still can't be found it throws a MissingResourceException.

Parameters
key the name of the resource.
Returns
  • the resource object.
Throws
MissingResourceException if the resource is not found.

public final String getString (String key)

Since: API Level 1

Returns the named string resource from this ResourceBundle.

Parameters
key the name of the resource.
Returns
  • the resource string.
Throws
MissingResourceException if the resource is not found.
ClassCastException if the resource found is not a string.

public final String[] getStringArray (String key)

Since: API Level 1

Returns the named resource from this ResourceBundle.

Parameters
key the name of the resource.
Returns
  • the resource string array.
Throws
MissingResourceException if the resource is not found.
ClassCastException if the resource found is not an array of strings.

Protected Methods

protected abstract Object handleGetObject (String key)

Since: API Level 1

Returns the named resource from this ResourceBundle, or null if the resource is not found.

Parameters
key the name of the resource.
Returns
  • the resource object.

protected void setParent (ResourceBundle bundle)

Since: API Level 1

Sets the parent resource bundle of this ResourceBundle. The parent is searched for resources which are not found in this ResourceBundle.

Parameters
bundle the parent ResourceBundle.