FB18 - Das Forum für Informatik

fb18.de / Off-Topic / Hard- und Softwarefragen

Java: Strings lokalisieren

Java: Strings lokalisieren 2009-12-30 13:55
7wingera
Hallihallo!

Ich habe ein Problem: In einer Anwendung möchte ich alle Strings lokalisieren, die irgendwie vom Benutzer gesehen werden. Bisher läuft das so, dass eine Klasse namens LanguageManager je nach eingestellter Locale eben andere Strings in ein ResourceBundle lädt und dann mit den erhaltenen Werten statische, öffentliche Felder initialisiert.
Möchte ich nun bspw. ein Label mit nem bestimmten Titel initialisieren, mach ich das mit new JLabel(LanguageManager.LABEL_1).
Funktioniert zwar, aber bei einem Wechsel der Locale muss die GUI neu aufgebaut werden.

Wenn ich jetzt aber die Locale ändere, nachdem die GUI schon realisiert wurde, weiß ich jetzt nicht, wie ich geschickt veranlassen sollte, dass alle Labels im Betrieb etc. auch neu gesetzt werden. (Das gleiche Problem stellt sich dann ja auch bei Bildern und Soundfiles.)

Wenn da jemand nen Tip hätte, wär das super ;-)

Danke,
Wolle

RE: Java: Strings lokalisieren 2009-12-30 22:34
Anonymer User
Hmm, ich würde alles was zu lokalisieren ist, in eine Liste packen und die dann durchiterieren. Also dann SichtbaresFenster.UpdateLanguage(); aufrufen.
Bei der Methode wird bei jedem Element die Text-Eigenschaft verändert.
Allerdings darauf achten, dass sich dabei die Größen im GUI stark ändern können - deutsche Formulierungen sind z.B. viel länger als englische.

RE: Java: Strings lokalisieren 2009-12-31 13:52
7wingera
Danke für den Vorschlag, aber ich würde lieber etwas haben wie Component.changeLocale(), wo sich dann jede Komponente automatisch den lokalisierten String, Sound oder was auch immer nochmal holt.

Wobei es, während ich diese Antwort schreibe, nicht mehr soo umständlich erscheint, so eine updateLocale()-Methode zu schreiben, weil ich somit ja einfach alle setLabel()-Aufrufe kapseln würde und es effektiv gar nicht viel mehr Arbeit sein müsste.

Trotzdem: Wenn jemand weiß, wie man sonst noch damit umgehen kann, immer raus damit :)

Danke
Wolle