Sprachauswahl-Dialog (Localization-Frage)

Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo!

Ich möchte einen Dialog erstellen, in dem der Benutzer die Sprache auswählen kann. Die Grundidee war nun folgende:

Ich erstelle einen Array mit Locale-Objekten, die den Sprachen entsprechen, die von der Applikation unterstützt werden:

Code:
Locale[] supportedLanguages = new Locale[] { new Locale("de"), new Locale("en") };

Diesen Array übergebe ich dann einer JComboBox im Dialog. Nun ist es aber so, dass die toString-Methode der Klasse Locale nur das Kürzel (z.b. "de") für die Sprache ausgibt und den String (z.b. "Deutsch"), wie es die Methode getDisplayLanguage(Locale inLocale) machen würde. Da die Klasse Locale leider final ist, habe ich keine Möglichkeit die toString-Methode zu überschreiben um dort die Methode getDisplayLanguage aufzurufen.

Frage 1:
Muss ich also die Strings die mir getDisplayLanguage liefert in die ComboBox schreiben und zusätzlich noch einen HashTable verwalten, der die Strings mit den Locale-Objekten assoziiert, oder gibt es da einen besseren Weg?


Frage 2:
Gibt es eine Möglichkeit, die gesamte GUI ohne Neustart der Applikation zu aktualisieren, wenn der Benutzer eine neue Sprache gewählt hat?
 

Sky

Top Contributor
Zu Frage 1: Ja, so kann man das machen; aber Du kannst auch ein eigenes ComboBox-Model schreiben.

Zu Frage 2: Ja klar geht das! Einfach mal hier im Forum suchen!
 
G

Guest

Gast
Hallo,

danke für Deine Antwort! Ich denke ich werde es mit einem eigenen ComboBox-Model machen. Ist irgendwie logischer.

Was meine zweite Frage betrifft, so habe ich nur Folgendes gefunden:

http://www.java-forum.org/de/viewtopic.php?t=11878&highlight=spracheinstellung

Dort sieht es allerdings so aus, als würde das doch nicht funktionieren. Hast Du einen anderen Thread gemeint oder irgendwelche anderen Informationen?

Das Problem ist die gesamte GUI Beschriftung (JLabels, JButtons, etc) und die Menüpunkte. Invalidate() und repaint() helfen hier leider nicht. Ausgaben über MessageBoxen sind kein Problem.

Eine Möglichkeit wäre eventuell jedes Fenster (ich habe eine MDI - Anwendung) ein Interface implementieren zu lassen, das eine Methode beinhaltet, die für jeden Button und jedes Label die setText-Methode aufruft und so die neuen Werte setzt. Diese Methode könnte man dann mit Hilfe des Observer-Patterns aufrufen, sobald sich die Spracheinstellungen ändern.

Die Frage ist halt, ob das eine gute Lösung ist oder ob das irgendwie einfacher geht.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben