国际化一直都是一个比较重要的地方,但在ECLIPSE体系中对这一功能已经封装的很多,因为在RCP中处理国际化很方便,下面直接走过程创建一个DEMO出来。
1. 我们先创建一个RCP功能出来,默认的hello world 就可以。
直接next
这里如果是插件的话 选择 rich client application 的NO,我们这里需要做一个简单的RCP的DEMO,所以我们选择YES ,点击next
用嘴简单的hello world 即可,选择后 直接finish。
2. 创建资源文件 ,文件名任意,文件的格式:资源名_地区.properties 。 RCP的国际化 NLS这个类绑定的属性资源文件时根据地区来区分到底应该加在哪个文件,判断文件中的地区和当前的地区是否吻合,如果找不到吻合的默认加在 资源名.properties.
如图 :
我默认创建了三个文件,一个英国,一个大陆,一个默认。三个文件中的内容如下:
message_en : test_info = this is english
message_zh_CN : test_info = 这个是中文的
message : test_info = 默认的
3. 下面我们创建访问资源文件的类,eclipse中国际化采用NLS。即我们需要绑定属性文件做国际化的类只需要集成NLS即可。
代码如下:
/**
* 国际化的信息类
* @author Administrator
*
*/
public class Message extends NLS {
//要加载的资源文件的名称
private static final String MESSAGE_BUNDLE = "message" ;
static{
//绑定资源文件
initializeMessages(MESSAGE_BUNDLE, Message.class);
}
//这里的名称要和属性文件中一样 并且定义为static 供外部程序调用
public static String test_info ;
}
注意: private static final String MESSAGE_BUNDLE = "message" ; 这里的 “message” 对应我们要绑定的文件名称。
4.到了这一步其实我们的国际化已经差不多了,下面写一个试图来调用一下我们的国际化信息即可,创建一个视图出来,其中一个text来引用国际化资源。代码如下:
public class TestView extends ViewPart{
private Text info;
@Override
public void createPartControl(Composite parent) {
info = new Text(parent, SWT.MULTI | SWT.H_SCROLL | SWT.BORDER);
//这里调用了国际化的信息
info.setText(Message.test_info);
}
@Override
public void setFocus() {
info.setFocus();
}
}
5.ok 到这里我们就大功告成了。在插件中配置一个透视图,将视图配置在透视图中,并且隐藏掉编辑器,启动:
因为我本地市中文环境,所以出来的是前面对应的message_zh_CN.properties文件中的信息。OK,我们修改一下运行环境为英文试试。在eclipse中启动RCP选择:
选择 Run Configurations ,选择后出现:
选中右侧的 arguments ,
将 ${target.nl} 替换为 "en" (英语环境),
点击 run 运行,
OK,出来的是英语,加载的文件是:message_en.properties
到此,国际化的DEMO就完成了,也可以将这个DEMO打包出来 运行的时候加上参数 -nl "en" 来测试英文环境 ,代码打包在附件。