JavaFX z Arią - powrót do strony głównej

FXML tutorial (17) – internacjonalizacja

Plik listing17_en.properties

Plik właściwości dla języka angielskiego.

lab1Text = Your decision?
but1Text = Yes
but2Text = No
but3Tex
Plik listing17_pl.properties

Plik właściwości dla języka polskiego.

lab1Text = Twoja decyzja?
but1Text = Tak
but2Text = Nie
but3Text = Anuluj
Plik listing17.fxml
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Button?>

<VBox xmlns:fx="http://javafx.com/fxml">
	<Label fx:id="lab1" text="%lab1Text" />
	<HBox fx:id="hbox">
		<Button fx:id="but1" text="%but1Text" />
		<Button fx:id="but2" text="%but2Text" />
		<Button fx:id="but3" text="%but3Text" />
	</HBox>
</VBox>
Klasa Listing17.java

Klasa urucchmiająca. Ponieważ lokalizacja została ustawiona na język angielski napisy na kontrolkach wyświetlą się w języku angielskim.

package codes;

import javafx.application.Application;
import javafx.fxml.FXMLLoader;
import javafx.scene.Scene;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;

import java.net.URL;
import java.util.Locale;
import java.util.ResourceBundle;

public class Listing17_resource_bundles extends Application {
    public static void main(String[] args) {
        Application.launch(args);
    }

    @Override
    public void start(Stage stage) {
        try {
            URL fxmlUrl = this.getClass().getClassLoader()
                    .getResource("resources/listing17.fxml");
            Locale.setDefault(Locale.of("en"));
            String resPath = "resources/listing17";
            ResourceBundle rb = ResourceBundle.getBundle(resPath);
            VBox root = fxmlUrl != null ? FXMLLoader.load(fxmlUrl, rb) : new VBox();
            Scene scene = new Scene(root, 150, 80);
            stage.setScene(scene);
            stage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    @Override
    public void stop(){
        Locale.setDefault(Locale.of("pl"));
    }
}

Po uruchomieniu zobaczymy:

Kontroli po angielsku
Kontrolki po angielsku