Problem ResourceBundle

tameck

Erfahrenes Mitglied
Hallo zusammen,

ich spiele gerade ein bisschen mit der Java Klasse ResourceBundle rum um zu sehen was sie alles so kann.
Jetzt habe ich ein kleines HalloWelt Applet geschrieben. In dem Applet soll die ausgabe Hello World ins Deutsche übersetzt werden wenn der Button "Deutsch" gedrückt wird und wenn der Button "Englisch" gedrückt wird soll es wieder ins Englische übersetzt werden.
Jetzt das ich denke simple Problem und zwar vom englischen ins deutsche funktionierts einwandfrei aber wenn es vom deutschen ins englische übersetzt werden soll hakts. Ich zeig euch mal den Code und die Properties.

Code:
package yx;

import java.awt.event.*;
import java.util.*; 
import javax.swing.*;
import java.awt.*;

public class InternationalHelloWorld extends JApplet implements ActionListener {
	
	JButton button1 = new JButton("Deutsch");
	JButton button2 = new JButton("Englisch");
	JTextArea ta1 = new JTextArea("Hello World");
	
	public static String baseName = "yx.HelloWorld";
	ResourceBundle bundle = ResourceBundle.getBundle( baseName ); 
	
  public void init(){
	  
	  setLayout(null);
	  
	  button1.setBounds(15,20,300,20);
	  button2.setBounds(15,45,300,20);
	  ta1.setBounds(15,85,300,300);
	  
	  add(button1);
	  add(button2);
	  add(ta1);
	  
	  button1.addActionListener(this);
	  button2.addActionListener(this);
	  ta1.setEnabled(false);
	  
		try{
			UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel");
			SwingUtilities.updateComponentTreeUI(this);
			}catch(Exception e1){
			System.out.println("Fehler");
			}		
		setSize(800,600);
		setVisible(true);
		
  }	
  public void actionPerformed(ActionEvent e){	
	  if(e.getSource()==button1){
	    try{ 
	    	System.out.println( bundle.getString("Hello"));
	    	ta1.setText(bundle.getString("Hello"));
	       } 
	    	catch ( MissingResourceException e1 ){ 
	    		System.err.println( e1 ); 
	    	} 
	  	}
	  if(e.getSource()==button2){
	  		try{
	  			System.out.println(bundle.getString("Hallo"));
	  			ta1.setText(bundle.getString("Hallo"));
	  		}catch(MissingResourceException e2){
	  			System.err.println(e2);
	  		}
	  	 }
  	}
}

Code:
# HelloWorld_en.properties 
Hallo=Hello World. 
Bye=Bye.

Code:
# HelloWorld_de.properties 
Hello=Hallo Welt. 
Bye=Tschüss.

Denke das das ein simpler anfänger Fehler von meiner Seite ist freu mich wenn ihr mir zeigen könnt woran es liegt.

MfG Tameck
 
Hallo,

vielleicht könntest du auch mal erklären, wo es hakt. Also was funktioniert nicht richtig?

MFG

Sascha
 
Wenn ich den Button englisch anklicke übersetzt mir das Applet es nicht ins englische sondern wirft mir folgende exception:

Code:
java.util.MissingResourceException: Can't find resource for bundle java.util.PropertyResourceBundle, key Hallo
 
Du hast ja auch zwei unterschiedliche Keys definiert. Einmal "Hello" und einmal "Hallo".

MFG

Sascha
 
Ja gut wenn ich aber einen gemeinsamen key definiere übersetzt er mir es ja nur Hallo Welt und nicht ins englische Hello World wie funktioniert das ich in zwei sprachen überssetzen kann ?
 
Das ist ja der Sinn beim ResourceBundle. Man hat immer gleiche Keys und bekommt dann sprachspezifisch den Wert zurück.

Also du musst überall den gleichen Key haben.

MFG

Sascha
 
Zurück