1

だから私はWindowBuilderでこのJavaプロジェクト(JInternalFramesを備えたJDesktopPane)を持っており、今度はプログラム全体を翻訳することになっています。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の[エディターエラー]ウィンドウで多くのエラーが発生します。これは、エディターが解決できないため"TestWindow.messages_"+ mainWindow.languageです。これは私には明らかです。

より正しい方法でこれに対処する方法はありますか?WindowBuilder内で正しいことを理解できなかったので、このハッキーなソリューションを思いつきました。

ありがとう、キングアル

4

1 に答える 1

0

しません

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

十分ですか?ルートバンドルを取得するだけで、正しいロケールバンドルが取得されます。

于 2013-02-06T13:02:59.960 に答える