Internationalization Java

/*
 * Copyright (c) Ian F. Darwin, http://www.darwinsys.com/, 1996-2002.
 * All rights reserved. Software written by Ian F. Darwin and others.
 * $Id: LICENSE,v 1.8 2004/02/09 03:33:38 ian Exp $
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS''
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 * POSSIBILITY OF SUCH DAMAGE.
 * 
 * Java, the Duke mascot, and all variants of Sun's Java "steaming coffee
 * cup" logo are trademarks of Sun Microsystems. Sun's, and James Gosling's,
 * pioneering role in inventing and promulgating (and standardizing) the Java 
 * language and environment is gratefully acknowledged.
 * 
 * The pioneering role of Dennis Ritchie and Bjarne Stroustrup, of AT&T, for
 * inventing predecessor languages C and C++ is also gratefully acknowledged.
 */
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
 * Create one button, internationalizedly.
 */
public class OneButton extends JFrame {
  public static void main(String[] args) {
    new OneButton().setVisible(true);
  }
  public OneButton() {
    ResourceBundle rb = ResourceBundle.getBundle("Widgets");
    String label = null;
    try {
      label = rb.getString("exit.label");
    } catch (MissingResourceException e) {
      label="Exit"; // fallback
    }
    this.add(new JButton(label));
  }
}
//File:Widgets.properties
/*
# Default properties for MenuIntl
program.title=Demonstrate I18N (MenuIntl)
program.message=Welcome to an English-localized Java Program
#
# The File Menu
#
file.label=File Menu
file.new.label=New File
file.new.key=N
file.open.label=Open...
file.open.key=O
file.save.label=Save
file.save.key=S
file.exit.label=Exit
file.exit.key=Q
#
# The Edit Menu
#
edit.label=Edit
edit.undo.label=Undo
edit.undo.key=Z
edit.cut.label=Cut
edit.cut.key=X
edit.copy.label=Copy
edit.list.key=C
edit.delete.label=Delete
edit.paste.label=Paste
edit.list.key=V
#
# The View List Menu
#
view.label=View
view.tree.label=View file tree
view.tree.key=T
# Next line is commented out to test the fallback code
#view.list.label=View list
view.list.key=L
view.longlist.label=View long-form list
view.longlist.key=G
#
# The Help Menu
#
help.label=Help
help.about.label=About
#
# These are for JOptionPaneDemo
#
getButton.label=Please display message
goodbye.label=Exit
#
dialog1.title=Coded Message
dialog1.text=This is your message: etaoin shrdlu
#
# These are for MessageFormatDemo
#
filedialogs.cantopen.string=could not be opened
filedialogs.cantopen.format=At {0,time} on {0,date}, {1} {2}.
*/
//FileWidgets_es.properties
/*
# List de nombres para menus por MenuIntl, una demonstacion de las
# facultades para internacionalizacion en la lengua Java.
# Disculpenme de mis errores en deletrear su lenguaje, por favor :-)
#
program.title=Demostracion de I18N (MenuIntl)
program.message=Bienvenidos a una programa localizada
#
# The File Menu
#
file.label=Menu de Filas
file.new.label=Fila Nueva
file.new.key=N
file.open.label=Abrir...
file.open.key=O
file.save.label=Escribir
file.save.key=S
file.exit.label=Quitar
file.exit.key=Q
#
# The View List Menu
#
view.label=Menu de vista
view.tree.label=Mirar arbole de filas
view.tree.key=A
# Next line is commented out to test the fallback code
#view.list.label=Mirar lista
view.list.key=L
view.longlist.label=Mirar lista larga
view.longlist.key=G
#
# The Help Menu
#
help.label=Ayuda
help.about.label=Sobre...
#
# These are for JOptionPaneDemo
#
getButton.label=Por favor, poner el Dialogo
goodbye.label=Quitar
#
dialog1.title=Mensaje
dialog1.text=Aqui tienes su mensaje: etaoin shrdlu
#
#
# These are for MessageFormatDemo
#
filedialogs.cantopen.string=no se puede abrir la fila
filedialogs.cantopen.format=A {0,time} sobre {0,date}, {2} {1}.
*/