swt无缝语言变化

时间:2011-06-19 18:52:51

标签: java localization swt

我有一个SWT应用程序,目前非常复杂。我想让应用程序能够切换界面语言而无需重新启动。最好的方法是什么?

2 个答案:

答案 0 :(得分:2)

Control API(这是所有SWT组件的超类)有一个方法redraw(),我假设它再次调用create contents方法,而提供结果你正在寻找。

编辑:我刚刚通过制作一个按钮并在每次推送后将其文本设置为随机数来测试它,并且它没有任何美学副作用。

答案 1 :(得分:0)

解决方案通常有三个部分:

  • 语言文件
  • Controls的静态文本
  • 动态文字。

语言文件只是普通的Java属性文件 - 请参阅java.text包。当您更改语言时,您只需“打开”新的语言环境。

控件的静态文字 - 例如按钮和标签 - 通常通过将键与每个应该能够更改语言的控件相关联来处理。当您想要更改语言时,您递归地浏览控件,在当前语言环境中查找新文本并设置新值...

动态文本是......其他所有内容......通常使用格式字符串来处理 - 请参阅String.format(...) - 再次从当前语言环境中检索。

原因还有其他可能依赖于当前语言的东西 - 例如图标,图像,媒体剪辑等......