原文地址:http://jjxliu306.iteye.com/blog/1882002
Eclipse体系已对国际化功能封装的很不错了,因此在RCP中处理国际化很方便,下面借用jjxliu306的一个例子来展示如何在RCP中使用国际化。
1. 首先创建一个RCP应用工程。
注意将工程设置为RCP工程。
为方便测试,选择Hello RCP。
2. 创建资源文件 ,文件名任意,文件的格式:资源名_地区.properties 。 RCP的国际化类NLS在绑定属性资源文件时会根据地区来确定应该加载哪个.properties文件,在找不到匹配资源文件时将使用默认资源文件:资源名.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 {
//要加载的资源文件的名称
//注意:这里的 “message” 对应我们要绑定的文件名称。
private static final String MESSAGE_BUNDLE = "message" ;
static{
//绑定资源文件
initializeMessages(MESSAGE_BUNDLE, Message.class);
}
//这里的名称要和属性文件中一样 并且定义为static 供外部程序调用
public static String test_info ;
}
4.到这一步后我们的国际化功能已实现的差不多了,下面通过一个视图来测试此资源文件访问类。
代码如下:
package rcp_localization;
import org.eclipse.swt.SWT;
public class TestViewPart extends ViewPart {
public TestViewPart() {
}
public static final String ID = "RCP_Localization.testView";
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.在透视图中将此视图显示出来:
package rcp_localization;
import org.eclipse.ui.IFolderLayout;
import org.eclipse.ui.IPageLayout;
import org.eclipse.ui.IPerspectiveFactory;
public class Perspective implements IPerspectiveFactory {
final static String FOLDER_ID_TEST = "test";
public void createInitialLayout(IPageLayout layout) {
layout.setEditorAreaVisible(false);
final IFolderLayout testFolder = layout.createFolder(FOLDER_ID_TEST,
IPageLayout.RIGHT, 0.8f, IPageLayout.ID_EDITOR_AREA);
testFolder.addView(TestViewPart.ID);
}
}
以上运行结果是在中文的运行环境中得到的,即资源文件调用类Message调用的是message_zh_CN.properties文件中的信息。
我们也可修改运行环境为英文:
在Eclipse中设置RCP工程启动参数
选择 Run Configurations ,选择后出现:
选中右侧的 arguments ,
将 ${target.nl} 替换为 "en" (英语环境),
点击 run 运行,
从图中可见,此次运行加载的文件是message_en.properties