Java FXML 支持國際化,可以通過以下步驟實現:
messages_en.properties
和 messages_zh.properties
。在這些文件中添加需要翻譯的文本。例如:# messages_en.properties
hello=Hello
world=World
# messages_zh.properties
hello=你好
world=世界
ResourceBundle
類來加載資源文件。根據需要選擇不同的語言版本。例如:import java.util.Locale;
import java.util.ResourceBundle;
public class Internationalization {
public static void main(String[] args) {
Locale locale = new Locale("zh"); // 選擇中文
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
System.out.println(bundle.getString("hello") + " " + bundle.getString("world"));
}
}
fx:include
標簽引入 ResourceBundle。例如: <Label text="%hello" />
<Label text="%world" />
</AnchorPane>
FXMLLoader
的 setResources()
方法設置 ResourceBundle。例如:import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.stage.Stage;
import java.io.IOException;
import java.util.Locale;
import java.util.ResourceBundle;
public class Controller {
@FXML
private void switchLanguage() {
Locale locale = new Locale("zh"); // 選擇中文
ResourceBundle bundle = ResourceBundle.getBundle("messages", locale);
FXMLLoader loader = new FXMLLoader(getClass().getResource("your_fxml_file.fxml"), bundle);
Parent root = null;
try {
root = loader.load();
} catch (IOException e) {
e.printStackTrace();
}
Stage stage = new Stage();
stage.setScene(new Scene(root));
stage.show();
}
}
switchLanguage()
方法即可。例如,可以在按鈕的點擊事件中調用該方法。這樣,就可以實現 Java FXML 的國際化操作了。