Localize a JOptionPane dialogTag(s): Internationalization Swing
This example will show 2 radio buttons, one for english messages and buttons and the other one for french. Press the button to display a localized JOptionPane according to the radio button selected.
Create 2 properties files, one for english , one for french.
[JOptionPane_en.properties] Yes=Yes No=No Cancel=Cancel SaveMsg=Do you want to save your data
[JOptionPane_fr.properties] Yes=Oui No=Non Cancel=Annuler SaveMsg=Voulez-vous sauvegarder vos donnees
Then
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
import java.util.*;
public class MessageBoxExample extends JPanel
   implements ActionListener {
   JButton go;
   AbstractButton button;
   ButtonGroup group;
   Locale locale;
   String msg ;
   
  public MessageBoxExample() {
    group = new ButtonGroup();
    locale = Locale.US;  // default value
    button = new JRadioButton("English", true);
    button.setActionCommand("en");
    button.addActionListener(this);
    group.add(button);
    add(button);
    button = new JRadioButton("Francais");
    button.setActionCommand("fr");
    button.addActionListener(this);
    group.add(button);
    add(button);
    go = new JButton("Do it");
    go.addActionListener(this);
    add(go);
    
    locale = Locale.US;
    }
 public void setUILanguage() {
   ResourceBundle rb;
   rb = ResourceBundle.getBundle("JOptionPane", locale);
   
   UIManager.put("OptionPane.yesButtonText", rb.getString("Yes"));
   UIManager.put("OptionPane.noButtonText", rb.getString("No"));
   UIManager.put("OptionPane.cancelButtonText", rb.getString("Cancel"));
   msg = rb.getString("SaveMsg");
   }
  public void actionPerformed(ActionEvent e) {
    int result;
        
    if (e.getSource() instanceof JRadioButton) {
      if (e.getActionCommand().equals("en"))
         locale = Locale.US;
      else
         locale = Locale.FRANCE; 
      setUILanguage();
      }
    else {
      // the button action
      result = JOptionPane.showConfirmDialog(this,msg);
      System.out.println(result);
      }
     }
   
  public Dimension getPreferredSize(){
    return new Dimension(200, 200);
    }
    
  public static void main(String s[]) {
    JFrame frame = new JFrame("");
    MessageBoxExample panel = new MessageBoxExample();
    frame.addWindowListener(
      new WindowAdapter() {
        public void windowClosing(WindowEvent e) {
          System.exit(0);
          }
        }
      );
    frame.getContentPane().add(panel,"Center");
    frame.setSize(panel.getPreferredSize());
    frame.setVisible(true);
    }
}
  mail_outline
Send comment, question or suggestion to howto@rgagnon.com
Send comment, question or suggestion to howto@rgagnon.com
