All ResourceBundle subclasses (the class you write, ListResourceBundle, PropertyResourceBundle all included) provide access methods to retrieve the locale-sensitive objects stored within them.
Unique keys that are defined in your program identify the objects stored.
e.g. the message in a particular error dialog box could be identified as "errmsg1"
The resource bundles for different locales will now hold an object corresponding to this "errmsg1" key.
The most basic access method is the following:
public final Object getObject(String key)
This method returns the object associated with the key.
Because the return value is simply an Object, you may have to cast it to a more specific object type.
Lets consider the rather hypothetical and extremely simple example where we have two buttons with the text "Ok" and "Cancel" displayed on them that need to be localized for the German language and UK country as locales.
We identify the text with 2 keys okKey and cancelKey respectively and subclass ResourceBundle
The base version will look something like:
abstract class MyProgramResource extends ResourceBundle {
public Object handleGetObject(String key) {
if (key.equals("okKey")) return "Ok";
if (key.equals("cancelKey")) return "Cancel";
return null;
}
}
The German version will look like :
abstract class MyProgramResource _de extends MyResources {
public Object handleGetObject(String key) {
if (key.equals("okKey")) return "Gut";
if (key.equals("cancelKey")) return "Vernichten";
return null;
}
}
The UK version will look like:
abstract class MyProgramResource _uk extends MyResources {
public Object handleGetObject(String key) {
// don't need okKey, since parent level handles it.
if (key.equals("cancelKey")) return "Dispose";
return null;
}
}
Casting the returned object is easy, but ResourceBundle provides a few convenience methods for returning common object types.
Some examples follow:
public final String getString(String key)
public final String[] getStringArray(String key)
These methods are convenient, but they don't do anything complex.
If they save you some of the time or trouble necessary to cast the returned value, try them.
The java.util.ResourceBundle is an abstract class with 2 abstract methods.
Sameer Tyagi is a Software Engineer with several years of programming experience in iNet application development and has conducted multiple training workshops in Java. Besides holding an Engineering degree in Electronics he is a Sun Certified Java 1.1 Programmer.
Email: sameertyagi@usa.net
JavaBytes
Internet Cyclone
This powerful, easy-to-use, internet optimizer is for
Windows 95, 98, ME, NT, 2000 and XP. It's designed to
automatically optimize your Windows settings, boosting your
Internet connection up to 200%.
Blackmail Applet
This applet prints out text that looks like letters cut out of a
newspaper. You can specify the text, the width and height of the
applet and the delay after each letter. Future versions will
have more parameters.
While surveys suggest that small businesses aren't prepared for ever-present security dangers, this Boston-area printer has maintained a pristine operation since a scare six years ago.