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: