O'Reilly logo

Java Cookbook by Ian F. Darwin

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Writing Internationalization Convenience Routines

Problem

You want convenience.

Solution

I’ve got it.

Discussion

Convenience routines are mini-implementations that can be more convenient and effective than the general-purpose routines. Here I present the convenience routines to create buttons, menus, etc. First, a simple one, mkMenu( ) :

/** Convenience routine to make up a Menu with its name L10N'd */
Menu mkMenu(ResourceBundle b, String menuName) {
    String label;
    try { label = b.getString(menuName+".label"); }
    catch (MissingResourceException e) { label=menuName; }
    return new Menu(label);
}

There are many such routines that you might need; I have consolidated several of them into my class I18N.java , which is part of the com.darwinsys.util package. All methods are static, and can be used without having to instantiate an I18N object because they do not maintain any state across calls. The method mkButton( ) creates and returns a localized Button, and so on. The method mkDialog is slightly misnamed, since the JOptionPane method showMessageDialog() doesn’t create and return a Dialog object, but it seemed more consistent to write it as shown here:

package com.darwinsys.util; import java.util.*; import javax.swing.*; /** Set of convenience routines for internationalized code. * All convenience methods are static, for ease of use. */ public class I18N { /** Convenience routine to make a JButton */ public static JButton mkButton(ResourceBundle b, String name) { String label; try { label ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required