如何在FXML文档中为视图使用不同的语言来支持多个国家?如何在FXML文档中实现对JavaFX的语言支持?
5
A
回答
18
使用ResourceBundle
s来存储区域相关文本,并使用"%resourceKey"
来访问数据包中的数据。
具体来说,为您想要支持的每种语言创建文本文件,并将它们放在类路径中。 Javadocs for ResourceBundle
具有关于命名方案的详细信息,但您应该有一个默认包,其定义为BaseName.properties
和其他语言的包和BaseName_xx.properties
定义的变体。例如(在类路径的根目录resources
):
资源/ UIResources.properties:
greeting = Hello
资源/ UIResources_fr.properties:
greeting = Bonjour
然后在您的FXML文件你可以做
<Label text = "%greeting" />
要通过ResourceBundle
至FXMLLoader
做:
ResourceBundle bundle = ResourceBundle.getBundle("resources.UIResources");
FXMLLoader loader = new FXMLLoader(getClass().getResource("/path/to/FXML.fxml"), bundle);
Parent root = loader.load();
此代码将加载与默认区域(通常是您已设置在操作系统级别的语言环境)的资源包,回落的默认,如果它不能找到一个相应的捆绑。如果要强制使用特定的捆绑,你可以做
ResourceBundle bundle = ResourceBundle.getBundle("/resources/UIResources", new Locale("fr"));
最后,如果你需要访问的FXML控制器资源包,你可以把它注射到ResourceBundle
类型和名称resources
的场:
public class MyController {
@FXML
private ResourceBundle resources ;
// ...
}
相关问题
- 1. 如何实现多语言支持ERM
- 2. 在pyrocms中实现多语言支持
- 3. JavaFX FXML是否支持XInclude?
- 4. Clojure的多语言文档支持
- 5. 如何在android中实现多语言支持
- 6. BlackBerry - 对中文的语言支持
- 7. 如何在VS2008中实现对定制DLR语言的智能感知支持?
- 8. JavaFX在FXML文档中编辑WebView
- 9. 如何实现JSP支持多语言(如葡萄牙语,俄语)
- 10. 如何在JavaFX(FXML)
- 11. 如何在支持演员模型的语言中实现“成为”?
- 12. 如何在QT-TextField中支持中文/日文等语言
- 13. 如何在Visual Studio中添加对新语言的Intellisense支持
- 14. 如何在FlashDevelop中添加对新语言的支持?
- 15. javafx支持MDI(多文档界面)吗?
- 16. Android多语言和少数语言支持语言不支持语言区域
- 17. 非英语语言的JavaFX TextField输入支持
- 18. Android语言支持
- 19. 多语言支持
- 20. PyroCMS语言支持
- 21. EditText语言支持?
- 22. Yocto语言支持
- 23. 支持RTL语言
- 24. ILGeoNames语言支持
- 25. 多语言支持
- 26. 对网站的多语言支持
- 27. 对JQVMap的不同语言支持
- 28. 对递归注释的语言支持
- 29. 如何在DropNet中实现CancellationToken支持?
- 30. 支持两种语言在travis.ci文件
我无法将ResourceBundle放在ContextMenu上。你能帮我吗 – Krismorte 2016-02-17 02:40:46
实际上,对于那些还在怀疑的人来说,bundle参数要作为第二个参数放在load方法或构造函数的调用中! – 2016-10-28 14:16:36
@AlexandrePieroux答案没有明确说明这一点吗? “要将'ResourceBundle'传递给'FXMLLoader'呢......” – 2016-10-28 14:21:55