N
Netzbohne
Gast
Ich bin fortgeschrittener Java-Anfänger und habe eine grundsätzliche Frage zum Thema Swing und Mehrsprachigkeit:
Ich habe in Netbeans 3.6 ein kleines Java-Programm mit verschiedenen Swing-Komponenten (Buttons, Labels usw) zusammengestellt und möchte auf Knopfdruck alle Menüs, Anzeigen usw. in einer anderen Sprache darstellen lassen. Ich hab das auch schon hinbekommen, möchte aber wissen, ob es denn eine einfachere und elegenatere Methode dafür gibt.
Hier kurz mein Ansatz:
Ich habe für zwei Locales (default und de_DE) jeweils eine property-Datei mit den entsprechenden Übersetzungen der Programmtexte angelegt. Wenn der Benutzer nun im Programm den Button für "Deutsch" drückt, wird eine Methode changeLanguage() aufgerufen, der die gewünschte Locale übergeben wird. Über ein ResourceBundle werden die gewünschten Texte eingelesen und dann jedes Objekt einzeln mit setText() aktualisiert:
Funktioniert soweit prima - nur der Nachteil ist, dass ich jedes neue Swing-Element auch immer in meine changeLanguage-Methode mitaufnehmen muss, damits aktualisiert wird. Und sowas kann man ja schnell mal vergessen. Meine Frage deshalb: Kann man das ganze auch irgendwie einfacher realisieren? Also sowas in der Art wie: Auf Knopfdruck alle Objekte des JFrames mit den Texten der gewünschten Sprachversion bzw. Locale versehen, ohne dass man sich im Einzelnen um die Objekte kümmern muss?
Vielen Dank im Voraus für alle Tipps!
Ich habe in Netbeans 3.6 ein kleines Java-Programm mit verschiedenen Swing-Komponenten (Buttons, Labels usw) zusammengestellt und möchte auf Knopfdruck alle Menüs, Anzeigen usw. in einer anderen Sprache darstellen lassen. Ich hab das auch schon hinbekommen, möchte aber wissen, ob es denn eine einfachere und elegenatere Methode dafür gibt.
Hier kurz mein Ansatz:
Ich habe für zwei Locales (default und de_DE) jeweils eine property-Datei mit den entsprechenden Übersetzungen der Programmtexte angelegt. Wenn der Benutzer nun im Programm den Button für "Deutsch" drückt, wird eine Methode changeLanguage() aufgerufen, der die gewünschte Locale übergeben wird. Über ein ResourceBundle werden die gewünschten Texte eingelesen und dann jedes Objekt einzeln mit setText() aktualisiert:
Code:
private void changeLanguage(Locale loc) {
ResourceBundle bundle = java.util.ResourceBundle.getBundle("irgendwas/Messages", loc);
// Texte aktualisieren
fileMenu.setText(bundle.getString("File"));
editMenu.setText(bundle.getString("Edit"));
meinButton.setText(bundle.getString("Encrypt"));
...
Funktioniert soweit prima - nur der Nachteil ist, dass ich jedes neue Swing-Element auch immer in meine changeLanguage-Methode mitaufnehmen muss, damits aktualisiert wird. Und sowas kann man ja schnell mal vergessen. Meine Frage deshalb: Kann man das ganze auch irgendwie einfacher realisieren? Also sowas in der Art wie: Auf Knopfdruck alle Objekte des JFrames mit den Texten der gewünschten Sprachversion bzw. Locale versehen, ohne dass man sich im Einzelnen um die Objekte kümmern muss?
Vielen Dank im Voraus für alle Tipps!