1

变化的语言,所以我有这样的WindowBuilder Java项目(与JDesktopPane的JInternalFrames),现在我对整个程序进行翻译。每次从JDesktopPane菜单打开JInternalFrame时,都会创建一个新的JInternalFrame。的WindowBuilder:在运行时

任务:用户应该能够在运行时在各种语言之间切换(语言不能直接更改,重新打开JInternalFrame就足够了,现在我在每个JInternalFrame中使用ResourceBundle:

private static ResourceBundle BUNDLE; 

的设置与文本:

lblText = new JLabel(BUNDLE.getString("TestWindow.lblText.text")); //$NON-NLS-1$ 

为了将语言之间切换,我在一个JDesktopPane的菜单,它设定例如

language = "en"; 

在创建一个新的窗口,JInternalFrame的获取到主窗口的引用,并读取该属性,并将其设置在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解决方案。

谢谢, 王-人

+0

请阅读[甲骨文教程](http://docs.oracle.com/javase/tutorial/i18n/index.html),码[实例是这里](http://www.java2s.com/Tutorial /Java/0220__I18N/Catalog0220__I18N.htm) – mKorbel

+0

谢谢。很有用。 –

回答

0

岂不

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

是否足够呢?简单地获取根捆绑将获得正确的语言环境捆绑。