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 ...
Get Java Cookbook now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.