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
Kommentar veröffentlichen