Sprache umschalten mit properties-files mit KSKB

Status
Nicht offen für weitere Antworten.

virtualAudio

Aktives Mitglied
Hi Leute,

Ich hab ein kleines Progi geschrieben mit dem ich eigentlich testen wollte wie ich die Menüeinträge nach dem Sprache umschalten aktualisiere. Aber ich komme nichtmal soweit.
Eigentlich sollte er doch beim Start schon die deutschen Texte verwenden oder? Hab ich da was falsch verstanden, oder falsch programmiert?

Ich denke es ist für Euch am einfachsten wenn ich alles in ein jar packe und es hier

http://stud3.tuwien.ac.at/~e0004876/files/kskb_properties_14.6.07.jar

rauflade. :)

Zusätzlich stell ich den Code auch noch hier als Text rein.


Die Frage in kurz: Warum bleibt die Sprache englisch obwohl ich gleich am Anfang setLocale(Locale.GERMAN) aufrufe?

beste Grüße und Danke für die Anteilnahme
Andi

die main
Code:
import java.awt.Dimension;
import java.awt.GridLayout;
import java.util.Locale;

import javax.swing.JFrame;
import javax.swing.JTextField;
import javax.swing.WindowConstants;


public class TestLanguage_Main extends JFrame{

	private final Dimension SIZE = new Dimension(400,300);
	
	public TestLanguage_Main() {
	
		/**
		 * Bei mir sollte eigentlich eh Deutsch eingestellt sein, aber wer weiß
		 */
		setLocale(Locale.GERMAN);
		
		this.setSize(SIZE);
		this.setJMenuBar(new TestLanguage_Menu(this));
		this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		this.setLayout(new GridLayout(4,1));
		
		this.add(new JTextField(Messages.getString("TestLanguage_Main.Field1Text"))); 
		this.add(new JTextField(Messages.getString("TestLanguage_Main.Field2Text"))); 
		this.add(new JTextField(Messages.getString("TestLanguage_Main.Field3Text"))); 
		this.add(new JTextField(Messages.getString("TestLanguage_Main.Field4Text"))); 
		
		this.setVisible(true);
		
	}
	
	public void resetSize(){
		this.setSize(SIZE);
	}
	
	public static void main(String[] args) {

		new TestLanguage_Main();
		
	}

}

das Menü
Code:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class TestLanguage_Menu extends JMenuBar{

	TestLanguage_Main mutter;
	JMenu jmFile, jmEdit, jmOptions, jmHelp;
	JMenuItem jmtFileOpen, jmtFileClose, jmtFileSave, jmtOptionsReset, jmtOptionsTranslate;
	
	
	/*
	 * The Listener for all the MenuItems
	 */
	
	private ActionListener al = new ActionListener(){
		public void actionPerformed(ActionEvent e) {
			if(e.getActionCommand() == jmtOptionsReset.getActionCommand()){
				System.out.println(Messages.getString("TestLanguage_Menu.outResize")); 
				mutter.resetSize();
			} else if(e.getActionCommand() == jmtOptionsTranslate.getActionCommand()){
				System.out.println(Messages.getString("TestLanguage_Menu.outTranslate")); 
			} else if(e.getActionCommand() == jmtFileOpen.getActionCommand()){
				System.out.println(Messages.getString("TestLanguage_Menu.outFileOpen")); 
			}else if(e.getActionCommand() == jmtFileClose.getActionCommand()){
				System.out.println(Messages.getString("TestLanguage_Menu.outFileClose")); 
			} else if(e.getActionCommand() == jmtFileSave.getActionCommand()){
				System.out.println(Messages.getString("TestLanguage_Menu.outFileSave")); 
			} else {
				System.out.println(Messages.getString("TestLanguage_Menu.outOtherMenuEvent")); 
			}
		}
	};
	
	
	
	
	/*
	 * Building the Menu in the CONSTRUCTOR
	 */
	
	
	public TestLanguage_Menu(TestLanguage_Main mutter) {
	
		this.mutter = mutter;
		
		add(jmFile = new JMenu(Messages.getString("TestLanguage_Menu.jmFile"))); 
			jmFile.add(jmtFileOpen = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiOpen"))); 
			jmFile.add(jmtFileClose = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiClose"))); 
			jmFile.add(jmtFileSave = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiSave"))); 
		
		add(jmEdit = new JMenu(Messages.getString("TestLanguage_Menu.jmEdit"))); 
		
		add(jmOptions = new JMenu(Messages.getString("TestLanguage_Menu.jmOptions"))); 
			jmOptions.add(jmtOptionsReset = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiResetSize"))); 
			jmOptions.add(jmtOptionsTranslate = new JMenuItem(Messages.getString("TestLanguage_Menu.jmiTranslate")));
			
		add(jmHelp = new JMenu(Messages.getString("TestLanguage_Menu.jmHelp"))); 
		
		addAListenerToAll(this, al);	
	}


	
	
	/*
	 * My Method to connect all items of a JMenuBar to an ActionListener
	 */
	
	
	private void addAListenerToAll(JMenuBar jmb, ActionListener al){
		JMenu jm;
		
		for(int i = 0; i< jmb.getMenuCount(); i++){			// für jedes JMenu der JMenubar
			jm = jmb.getMenu(i);
			
			for(int x = 0; x < jm.getItemCount(); x++){		// für jedes Item des JMenu
				jm.getItem(x).addActionListener(al);		// adde Listener
			}
		}
	}
	
	
}

Die Klasse Message (automatisch erstellt durch "externalize Strings" von eclipse)
Code:
import java.util.MissingResourceException;
import java.util.ResourceBundle;

public class Messages {
	private static final String BUNDLE_NAME = "messages"; 

	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
			.getBundle(BUNDLE_NAME);

	private Messages() {
	}

	public static String getString(String key) {
		try {
			return RESOURCE_BUNDLE.getString(key);
		} catch (MissingResourceException e) {
			return ("! " + key + " is missing !");
		}
	}
}

 
G

Guest

Gast
Hat jemand vielelicht einen Tipp wo ich noch nachlesen/schauen könnte?

Beste Grüße Andi

PS.: Das Progi ist nicht so lang wie es ausschaut ;)
 

Marco13

Top Contributor
In der Messages-Klasse holst du dir EIN mal ein ResourceBundle. (Und das ist statisch, d.h. es wird gemacht, BEVOR irgendwas anderes gemacht wird - auch bevor das Locale gesetzt wird!). Es ändert sich danach aber nichtmehr. Man müßte die Sprache in der messages-klasse setzen, und das ResourceBundle neu laden - dieser Test-Hack(!) hat bei mir zumindest funktioniert:
Code:
class Messages {
   private static final String BUNDLE_NAME = "messages";

   private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
         .getBundle(BUNDLE_NAME);

   private Messages() {
   }

   public static String getString(String key) {
	  try {
		 Locale locale = new Locale("de", "DE");
		 //Locale locale = new Locale("en", "US");

         return ResourceBundle.getBundle(BUNDLE_NAME, locale).getString(key);
      } catch (MissingResourceException e) {
         return ("! " + key + " is missing !");
      }
   }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J B-Sprache mit Arrays ausführen Java Basics - Anfänger-Themen 18
H Ist Java überhaupt die richtige Sprache für das Projekt? Java Basics - Anfänger-Themen 8
J Automatentheorie-Darstellung der regulären Sprache eines DEA Java Basics - Anfänger-Themen 5
J JMenuItem Sprache umstellen Java Basics - Anfänger-Themen 3
S BE-Sprache Java Basics - Anfänger-Themen 2
H Buttons um sprache zu ändern. Java Basics - Anfänger-Themen 6
G Sprache wechseln Java Basics - Anfänger-Themen 3
G Sprache auslesen Java Basics - Anfänger-Themen 3
S Welche Sprache für ein Umfangreiches Webprojekt Java Basics - Anfänger-Themen 16
G Java Sprache ändern? Java Basics - Anfänger-Themen 5
J Die Sprache der Informatiker sie bleibt mir ein Rätsel. Java Basics - Anfänger-Themen 8
M Java die richtige Sprache? Java Basics - Anfänger-Themen 4
G Eigene kleine Sprache entwickeln Java Basics - Anfänger-Themen 6
G VM - Sprache umstellen Java Basics - Anfänger-Themen 4
P Wie für EIN Java Programm von 64bit Java (=Standard) auf 32bit Java Installation (Windows) umschalten? Java Basics - Anfänger-Themen 6
magdaStone Logikproblem Umschalten von booleans in anderer Klasse Java Basics - Anfänger-Themen 0
G Ampel automatisch umschalten Java Basics - Anfänger-Themen 18
A Java - Versionen unter Windows umschalten, ohne reboot ? Java Basics - Anfänger-Themen 4
A Java-Properties und -RessourceBundles Java Basics - Anfänger-Themen 5
C Pfad zu Properties-File bei ResourceBundle Java Basics - Anfänger-Themen 7
amazinglife77 Input/Output Lesen/Schreiben Properties: in eclipse geht, als JAR nicht Java Basics - Anfänger-Themen 4
E Gibt es in Java Properties (wie in C#) Java Basics - Anfänger-Themen 6
D Von einem Objekt auf Properties zugreifen Java Basics - Anfänger-Themen 3
U Properties außerhalb des war-Files Java Basics - Anfänger-Themen 1
U Richtig *.properties speichern Java Basics - Anfänger-Themen 0
Z Erste Schritte Versuche ein Labyrinth in einem Terminal zu erstellen, aber kann die properties Datei nicht einlesen Java Basics - Anfänger-Themen 3
I Properties oder Umgebungsvariablen mit ${irgendwas} lesen? Java Basics - Anfänger-Themen 2
I beim auslesen der Properties gibt es ein Fehler Java Basics - Anfänger-Themen 7
kaoZ Best Practice Properties oder Preferences ? Java Basics - Anfänger-Themen 16
M Umgebungsvariable JFileChooser#setCurrentDirectory via Properties setzen? Java Basics - Anfänger-Themen 5
P Properties speichern Java Basics - Anfänger-Themen 1
S Klasse properties - Probleme beim umwandeln Java Basics - Anfänger-Themen 3
A Properties erweitern Java Basics - Anfänger-Themen 2
G Java Properties, Downloader Java Basics - Anfänger-Themen 5
O Java Properties - Daten auslesen Java Basics - Anfänger-Themen 13
T Schlüsselworte Probleme mit den Properties Java Basics - Anfänger-Themen 7
U Radar Charts und Properties Java Basics - Anfänger-Themen 11
R Input/Output Speichern von Properties führt zu merkwürdigen "\" Java Basics - Anfänger-Themen 4
B Properties ausgeben Java Basics - Anfänger-Themen 5
B Properties oder Serializable Java Basics - Anfänger-Themen 3
S Properties-Datei schützen Java Basics - Anfänger-Themen 6
P Properties Datei auslesen? Komfortabeler? Java Basics - Anfänger-Themen 2
J Liste als Properties Java Basics - Anfänger-Themen 6
M Input/Output log4j mit properties datei Java Basics - Anfänger-Themen 6
T Vorgehen Properties Java Basics - Anfänger-Themen 4
S jcal4j/jlog4j Wo muss die Properties file rein? Java Basics - Anfänger-Themen 2
T Properties Datei gruppieren Java Basics - Anfänger-Themen 2
S Unterschied java.util.prefs / java.util.Properties Java Basics - Anfänger-Themen 3
I Problem mit Properties-Kommentare Java Basics - Anfänger-Themen 2
M Properties hinzufügen Java Basics - Anfänger-Themen 12
ruutaiokwu properties values automatisch escapen ??? Java Basics - Anfänger-Themen 3
M Properties Eintrag löschen, welcher in der JList "ausgewählt" wurde Java Basics - Anfänger-Themen 2
L Properties Reihenfolge vorgeben Java Basics - Anfänger-Themen 13
H Arbeiten mit Properties Java Basics - Anfänger-Themen 8
E Parameter aus Properties-Datei einlesen Java Basics - Anfänger-Themen 35
raptorrs Schreiben in Properties-File klappt nicht Java Basics - Anfänger-Themen 6
A log4j - wie kann ich im Quellcode initialisieren statt in der properties-Datei? Java Basics - Anfänger-Themen 2
Z Anfänger Problem mit Properties Java Basics - Anfänger-Themen 8
J Java.Util.Properties wrapper class (Review Request) Java Basics - Anfänger-Themen 2
R Properties über statischen Pfad laden Java Basics - Anfänger-Themen 2
M Erstbefüllung Properties Java Basics - Anfänger-Themen 3
L System-Properties Java Basics - Anfänger-Themen 4
Y Preferences / Properties Anwendung plattformunabhängig Java Basics - Anfänger-Themen 4
? java.util.Properties Wert von key mehrfach vorhanden Java Basics - Anfänger-Themen 13
K Convert Properties to File Java Basics - Anfänger-Themen 2
G ResourceBundle - Properties Java Basics - Anfänger-Themen 3
T Properties casten Java Basics - Anfänger-Themen 4
G Pfadangaben in properties file Java Basics - Anfänger-Themen 3
S has no properties Java Basics - Anfänger-Themen 2
M Properties Datei - einlesen Java Basics - Anfänger-Themen 18
G Properties im jar file speichern Java Basics - Anfänger-Themen 6
G Properties in jar File . Java Basics - Anfänger-Themen 2
M Variablen innerhalb der properties-datei Java Basics - Anfänger-Themen 2
B Properties erkennen, auslesen Java Basics - Anfänger-Themen 7
L Pfad per Properties schreiben lassen Java Basics - Anfänger-Themen 2
G Nutzt ihr die Methode storeToXML von Properties Java Basics - Anfänger-Themen 2
G Inhalte in einer Properties Datei setzen? Java Basics - Anfänger-Themen 14
N Properties in einen Vector Java Basics - Anfänger-Themen 6
M relative Pfadangabe beim laden von properties Datei Java Basics - Anfänger-Themen 4
G .properties lesen Java Basics - Anfänger-Themen 17
G Properties und eine Liste in einem entry key. Java Basics - Anfänger-Themen 2
V Menüeinträge und ähnliches aktualisieren (aus properties) Java Basics - Anfänger-Themen 10
loadbrain Properties file einlesen Java Basics - Anfänger-Themen 2
B Properties speichern Java Basics - Anfänger-Themen 2
B Zugriff auf Properties Java Basics - Anfänger-Themen 6
R Umlaute in einer .properties-Datei Java Basics - Anfänger-Themen 1
dercheffe properties Java Basics - Anfänger-Themen 2
G properties-Datei innerhalb eines package auslesen Java Basics - Anfänger-Themen 3
G Properties-Objekt erzeugt Java Basics - Anfänger-Themen 3
P Java.utll.properties in datei schreiben Java Basics - Anfänger-Themen 6
L Programmsprache wechseln (Labels.): Properties auslesen Java Basics - Anfänger-Themen 2
S Properties im Jar FileNotFound Java Basics - Anfänger-Themen 2
G properties und image Dateien aus jar einlesen Java Basics - Anfänger-Themen 4
M Properties ausserhalb von jar files Java Basics - Anfänger-Themen 3
J Zugreifen *.properties auserhalb von *.jar Java Basics - Anfänger-Themen 5
E Model und i18n bzw. Properties Java Basics - Anfänger-Themen 10
M Kann man den Kommentar der Properties-Klassen auslesen? Java Basics - Anfänger-Themen 2
P Kann kein Array von Properties erstellen. Java Basics - Anfänger-Themen 5
T Stelle wo ich Properties-Datei auslesen kann? Java Basics - Anfänger-Themen 6
F Properties -- diesmal löschen Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben