1

이 Java 프로젝트 (JInternalFrames가있는 JDesktopPane)를 WindowBuilder와 함께 사용하면 전체 프로그램을 번역 할 예정입니다. JDesktopPane Menu로부터 JInternalFrame가 열릴 때마다, 새로운 JInternalFrame가 인스턴스화됩니다.WindowBuilder : 런타임시 언어 변경

작업 : 런타임에 사용자가 다양한 언어를 전환 할 수 있어야합니다 (언어를 직접 변경하면 안 됨, JInternalFrame을 다시 열면 충분합니다.) 지금은 모든 JInternalFrame에서 ResourceBundle을 사용합니다.

private static ResourceBundle BUNDLE; 

은로 텍스트 설정 : 내가 예를 들어 설정하는 JDesktopPane에있는 메뉴를 가지고 언어를 전환하기 위해

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

새로운 윈도우를 생성하면 515,
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$ 
디자인보기에서 Window를 열 때마다

또한 WindowBuilder의 Editor Errors 윈도우에서 많은 오류가 발생합니다. 그 이유는 Editor가 "TestWindow.messages_"+ mainWindow.language을 해결할 수 없기 때문입니다.

이 문제를보다 정확하게 처리 할 수있는 방법이 있습니까? WindowBuilder에서 올바른 것을 찾아 낼 수 없었기 때문에이 해킹 된 솔루션을 생각해 냈습니다.

감사합니다, 킹 알

+0

[Oracle 튜토리얼] (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 

이 충분하지 않을까요? 단순히 루트 번들을 얻으면 올바른 로케일 번들을 얻을 수 있습니다.