如何在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. 如何在VS2008中实现对定制DLR语言的智能感知支持?
- 4. JavaFX在FXML文档中编辑WebView
- 5. 如何在JavaFX(FXML)
- 6. 如何在支持演员模型的语言中实现“成为”?
- 7. 如何在Visual Studio中添加对新语言的Intellisense支持
- 8. 如何在FlashDevelop中添加对新语言的支持?
- 9. javafx支持MDI(多文档界面)吗?
- 10. 非英语语言的JavaFX TextField输入支持
- 11. Android多语言和少数语言支持语言不支持语言区域
- 12. 支持RTL语言
- 13. 多语言支持
- 14. 多语言支持
- 15. EditText语言支持?
- 16. Yocto语言支持
- 17. 对网站的多语言支持
- 18. 语法与支持语言
- 19. 在语言环境更改后重新加载FXML JavaFx
- 20. 如何在WP7中实现对ftp的支持?
- 21. E语言支持D语言
- 22. Django的多语言支持
- 23. Android上的语言支持
- 24. Mongodb的多语言支持
- 25. JSF支持的语言
- 26. 支持XML文字的编程语言
- 27. Android的API支持实时文本识别,并支持其他语言
- 28. 如何让build.gradle支持多语言?
- 29. 在DHTMLX或EXTJS4中支持RTL语言
- 30. JavaFX:在FXML文档中绑定表达式
我无法将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