SWT/JFace 程序的国际化实现

右领军大都督 2011-09-23 11:13:17
简易code如下:

import java.util.Properties;

import org.eclipse.jface.action.Action;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;

public class Test extends ApplicationWindow {
private Action action_chinese;
private Action action_english;

private Properties pp = new Properties();

public Test() {
super(null);
addMenuBar();
pp.put("hello", "Hello");
}

protected Control createContents(Composite parent) {
parent.getShell().setText("TEST");
Label label = new Label(parent, SWT.CENTER);
label.setText(pp.getProperty("hello"));
return parent;
}

protected MenuManager createMenuManager() {
MenuManager main_menu = new MenuManager(null);
MenuManager menu_language = new MenuManager("&Language");
main_menu.add(menu_language);

menu_language.add(action_chinese = new Action("&Chinese",
Action.AS_CHECK_BOX) {
public void run() {
action_english.setChecked(false);
pp.setProperty("hello", "你好");
}
});
menu_language.add(action_english = new Action("&English",
Action.AS_CHECK_BOX) {
public void run() {
action_chinese.setChecked(false);
pp.setProperty("hello", "Hello");
}
});
action_english.setChecked(true);
return main_menu;

}

public static void main(String[] args) {
Test wwin = new Test();
wwin.setBlockOnOpen(true);
wwin.open();
Display.getCurrent().dispose();
}
}

我想在点击Language菜单中的chinese或者english时,将整个界面中所有的文字显示都切换成相应的语言。这个例子很简单,我只做了一个label的设计,请高手给个解决方法。
请别告诉什么我直接对这个label重新设置text,我要的不是这个东西,而是动态获取组件并重新载入文字资源的方法,谢谢
...全文
100 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
右领军大都督 2011-09-23
  • 打赏
  • 举报
回复
问题就是我这个程序现在点了语言选项,界面文字是不会变的,我想请问怎么才能做到动态的将界面所有元素的text切换成相应的语言
softroad 2011-09-23
  • 打赏
  • 举报
回复
有什么问题?
右领军大都督 2011-09-23
  • 打赏
  • 举报
回复
令,我在实际的程序中Properties中的内容会分别从两个不同的properties文件中读取,各自为:language_ZH.properties和language_EN.properties。
里面的内容为:
hello=你好
=======
hello=Hello

这样在程序的组件setText时,可以直接用xx.setText(pp.getProperty("hello"))

62,629

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧