JavaFX von der IDE bis zur Auslieferung Teil 5: Jetzt wird es international

 Nachdem unser Taschenrechner nun funktioniert, wollen wir ihn auch für ausländisches Publikum lesbar machen.

Dazu müssen wir lokalisierten Text in Resourcen auslagern. Deshalb wechseln wir in den Ordner Resources erstellen einen neuen Ordner lang und fügen dort über New ein neues Resource-Bundle ein.














Hier legen Sie neue Locales an, wie hier zum Beispiel deutsch. Die Default-Locale wäre in diesem Fall Englisch, sie wird genommen, wenn sonst keine Locale zutrifft.

Der Inhalt der lang.properties ist:

application.title = Hello JavaFX

application.field1 = first Number
application.field2 = second Number

 Der Inhalt der lang_de.properties ist:

application.title = Hallo JavaFX

application.field1 = erste Zahl
application.field2 = zweite Zahl

Nun erstellen wir eine neue Funktion in der Datei HalloJavaFX, welche auf die Resource-Bundles zugreift:

public static ResourceBundle getLanguage() {
if(HalloJavaFX.resourceBundle == null) {
ClassLoader classLoader = new URLClassLoader(new URL[] {HalloJavaFX.class.getResource("/lang/")});
HalloJavaFX.resourceBundle = ResourceBundle.getBundle("lang", Locale.getDefault(), classLoader);
}
return HalloJavaFX.resourceBundle;
}

Wir überarbeiten die start-Methode wie folgt:

@Override
public void start(Stage stage) throws Exception {
URL url = HalloJavaFX.class.getResource("/fxml/Main.fxml");

if(url != null) {
ResourceBundle language = HalloJavaFX.getLanguage();
Parent root = FXMLLoader.load(url, language);
Scene scene = new Scene(root);
stage.setScene(scene);
stage.setTitle(language.getString("application.title"));
stage.show();
}
}

Nun ist der Titel der Anwendung internationalisiert.

Wollen wir auch Texte in der FXML internationalisieren, so müssen wir nur die Texte durch den Namen der Propertie und ein vorangestelltest % ersetzen.

Beispiel:
Im Promptext vom TextFeld txtNumber1 wird 

erste Zahl

ersetzt durch

%application.field1

Falls irgendetwas nicht so geklappt haben sollte, wie Sie es gerne hätten, können Sie gerne im Github-Repository nachschauen oder über einen Kommentar fragen. 

Fortsetzung folgt...

Kommentare