所以我有这个Java项目(带有JInternalFrames的JDesktopPane)和WindowBuilder,现在我要翻译整个程序。每次从JDesktopPane菜单打开JInternalFrame时,都会实例化一个新的JInternalFrame。
任务:用户应该能够在运行时在各种语言之间切换(语言不能直接更改,重新打开JInternalFrame就足够了。现在我在每个JInternalFrame中使用ResourceBundle:
private static ResourceBundle BUNDLE;
设置文字:
lblText = new JLabel(BUNDLE.getString("TestWindow.lblText.text")); //$NON-NLS-1$
为了在语言之间切换,我在JDesktopPane中有一个菜单,例如
language = "en";
创建新窗口后,JInternalFrame获取对MainWindow的引用并读取此属性并将其设置在JInternalFrame中:
BUNDLE = ResourceBundle.getBundle("TestWindow.messages_"+ mainWindow.language); //$NON-NLS-1$
问题:WindowBuilder会干扰它并设置
private static final ResourceBundle BUNDLE = ResourceBundle.getBundle("TestWindow.messages"); //$NON-NLS-1$
每次我在设计视图中打开窗口。此外,我在WindowBuilder的编辑器错误窗口中收到大量错误,这是因为编辑器无法解析"TestWindow.messages_"+ mainWindow.language
,这对我来说很清楚。
有没有办法以更正确的方式处理这个问题?我无法在WindowBuilder中找到正确的东西,所以我想出了这个hacky解决方案。
谢谢, 王-AL
答案 0 :(得分:0)
岂不
Locale.setDefault(new Locale("en")); // Locale.ENGLISH
足够吗?只需获取根包即可获得正确的语言环境包。