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 

是否足夠呢?簡單地獲取根捆綁將獲得正確的語言環境捆綁。