Anzeige:
Ergebnis 1 bis 7 von 7

Thema: Java: ResourceBundle + Swing

  1. #1
    Registrierter Benutzer
    Registriert seit
    11.09.2000
    Ort
    Schweiz
    Beiträge
    142

    Java: ResourceBundle + Swing

    Hallo mal wieder!

    Ich arbeite gerade an einer Applikation mit einer Swing Oberfläche. Die Oberflächenelemente werden mit ResourceBundles internationalisiert. Das klappt alles auch sehr gut. Jetzt will ich einen Button einbauen um die Sprache zu ändern. Wie kann ich jetzt bei allen Elementen auf die neue Sprache bzw. das Bundle umstellen? Muss ich das alles manuell erledigen oder gibt es dafür automatische Funktionen?

  2. #2
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ich glaube das musst du von Hand machen. Dürfte - wenn du von Anfang daran gedacht hast - nicht zu schwierig sein - schliesslich musst du beim Programmstart ja auch all die Sachen erst einmal einstellen.

    Auf jeden Fall ist das im entsprechenden Beispiel aus "CoreJava 2" genauso implementiert - du machst halt einfach eine "updateLabelText()" - Methode, die du sowohl beim Programmstart als auch sonst zum TextNeusetzen verwendest.

    Ein iterieren über alle GUI-Elemente scheint nicht möglich zu sein - schliesslich kann Java ja nicht wissen, welcher Text aus dem Ressource-Bundle zu welchem Widget deiner Benutzeroberfläche gehört.

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  3. #3
    Registrierter Benutzer
    Registriert seit
    11.09.2000
    Ort
    Schweiz
    Beiträge
    142
    Ich habs jetzt auch manuell gemacht. Ist nicht schwierig, aber ich mache nicht gerne Dinge die ich auch automatisch Java machen lassen könnte...

  4. #4
    Registrierter Benutzer
    Registriert seit
    11.09.2000
    Ort
    Schweiz
    Beiträge
    142
    Hmm, ein Problem habe ich allerdings noch.

    Es gibt 3 Sprachdateien:

    MyProgram.properties - Englisch, Standard
    MyProgram_de.properties - Deutsch
    MyProgram_en.properties - Englisch

    Wenn ich jetzt im deutschen File einen Key lösche und bundle.getString(key) ausführe, dann bekomme ich nicht eine Exception sondern einfach der Wert aus der Standarddatei. So können dann die Sprachen auf dem GUI ziemlich durcheinander geraten...weiss jemand wie ich das verhindern kann? Einfach eine Exception auf die ich dann reagieren kann wäre gar nicht übel...

  5. #5
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Original geschrieben von itsme
    Wenn ich jetzt im deutschen File einen Key lösche und bundle.getString(key) ausführe, dann bekomme ich nicht eine Exception sondern einfach der Wert aus der Standarddatei.
    Das ist bei i18n ansich die normale Vorgehensweise, weil sonst das Programm unbedienbar wird.

    Die Vollständigkeit der Übersetzung ist etwas, was man genauso testen muss wie das korrekte Funktionieren der Applikation selbst.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  6. #6
    Registrierter Benutzer
    Registriert seit
    11.09.2000
    Ort
    Schweiz
    Beiträge
    142
    Das ist grundsätzlich alles alles richtig, aber es wäre doch trotzdem nett wenn ich z.B. mit getKeys() nur die Keys bekomme, die auch wirklich im Bundle drin sind. Dann wäre es auch sehr einfach zum überprüfen ob alle Files die gleichen Keys enthalten.

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ich kenn mich mit Bundles nicht aus, aber so gefühlsmäßig würde ich sagen, dass es Property Files sind, also solche von java.util.Properties.

    Wenn du es damit öffnest, hast du sicher nur die vorhandenen Keys.

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •