JavaFX: Implementierung des ResourceBundle

Die Unterstützung einer Mehrsprachigkeit in Java Anwendungen wird mit dem ResourceBundle umgesetzt dabei ist unter JavaFX eine kleine Besonderheit zu beachten welche ich hier gerne erläutern möchte.

Am Anfang einer JavaFX Anwendung steht immer eine Stage welche als erstes gestartet wird.

Für das laden dieser Stage wird der javafx.fxml hop over to here.FXMLLoader benötigt dieser kann im einfachsten Fall ein einzeiliger Aufruf werden. (Wie im Beispiel oben zu sehen.)

Wenn man jedoch ein ResourceBundle für die Mehrsprachigkeit verwenden möchte so muss der javafx.fxml.FXMLLoader wie folgt verwendet werden.

Es wird in Zeile 2 das ResourceBundle aus dem Ordner „src/main/resources/bundle“ mit der aktuellen System Sprache (java.util.Locale) geladen. Dazu habe ich eine kleine Methode geschrieben welche die aktuelle java.util.Locale aus den Systempropertys läd.

 

Die Verwendung dieses ResourceBundle in einer FXML Datei ist relativ einfach wie dieses Beispiel zeigt.

Der Key einer Textresource wird mit einem Prozentzeichen eingeleitet, dadurch wird das korrekte Key/Value Paar gefunden und „geladen“. Die Local wird vorher programmatisch eingestellt (auf die Systemsprache), hier könnte man noch über ein Einstellungsfeld in der Anwendung nachdenken jedoch wäre dieses für dieses Tutorial zuviel.

Möchte man nun das ResourceBundle programmatisch im Java Quellcode verwenden so bietet das Objekt java.util.ResourceBundle die Methode bundle.getString(String key) an welche wiederum das korrekte Key / Value Paar findet.

Wenn jedoch der Key nicht existiert, so wird eine MissingResourceException geworfen, bzw in einer FXML Datei eine LoadException: Resource „<<key>>“ not found.

Ersten Kommentar schreiben

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht.


*