我希望能够在运行时更改我的Swing应用程序中的语言环境,并让屏幕上的所有文本元素都使用新语言环境的ResourceBundle中的本地化文本进行更新.
这可以在不自定义swing组件或为处理渲染本地化文本的所有组件创建UIDelegates的情况下完成吗?
如果不是,那么我可以考虑实施什么是好的解决方案?
使用ResourceBundle.getBundle(BUNDLE_NAME).getString(key);
访问字符串.
更新默认区域设置时,例如通过Locale.setDefault(Locale.GERMAN);
清除Resourcebundle缓存:ResourceBundle.clearCache();
ResourceBundle.getBundle(BUNDLE_NAME).getString(key);
应该返回所选Locale的本地化String 的下一个调用.
您有一个方法用于更改应用程序区域设置(可能会保留新值),另一个方法用于获取本地化字符串.
创建一个界面:
interface LocaleChangeListener { void onLocaleChange(); }
通过UI组件实现它,这些组件需要能够在运行时更改语言环境并在覆盖中设置新值onLocaleChange()
.
现在,有一个监听器列表,将通过第一种方法通知区域设置更改.