所以我有这个带有 WindowBuilder 的 Java 项目(JDesktopPane 和 JInternalFrames),现在我要翻译整个程序。每次从 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 的 Editor Errors 窗口中遇到很多错误,这是因为 Editor can't resolve "TestWindow.messages_"+ mainWindow.language
,这对我来说很清楚。
有没有办法以更正确的方式处理这个问题?我无法在 WindowBuilder 中找出正确的东西,所以我想出了这个 hacky 解决方案。
谢谢大王