1

所以我有这个带有 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 解决方案。

谢谢大王

4

1 回答 1

0

不会

Locale.setDefault(new Locale("en")); // Locale.ENGLISH

够了吗?只需获取根捆绑包即可获得正确的语言环境捆绑包。

于 2013-02-06T13:02:59.960 回答