枫林在线论坛精华区>>程序设计 |
[340913] 主题: Eclipse零起步系列讲座(十一) |
作者: little (渺小·Happy^_^) | ||
标题: Eclipse零起步系列讲座(十一)[转载] | ||
来自: 192.168.*.* | ||
发贴时间: 2005年04月25日 11:27:11 | ||
长度: 4169字 | ||
Eclipse零起步系列讲座 (十一) =========================================== (前言) PDE除了可以开发plugin, 还可以开发fragment, feature 和 site. (正文) [fragment 简介] fragment不是一个完整的plugin, 而是plugin功能的扩展. 对于一个frag ment来说, 它 都有一个对应的plugin, 如果 plugin不安装运行, 那fragment就算装了也不会起作用. 一般来说, fragment 最广泛的应用是 nls (native language support). 基本上你看一 下wsad里面的plugins, 都有一 个对应的一个fragment, 名字是对应的plugin后加.nl1来表示. 这个可以 看一下零起步 九, 你可以从中了解更多的关于 plugin 在 i18n (internationalization) 方面的应用. 那下面我们来介绍一下,如何开发一个helloworld的fragment, 来实现hel loworld的i18n 应用. [PDE 开发 fragment] 我们先用PDE新建一个hello world的例子, 详见零起步九, 我们假设这个 项目的名字叫 做org.eclipse.example.xyz 然后我们再用pde新建一个fragment, 具体如下: file->new -> plug-in development -> fragment project fragment project 的名字叫做 org.eclipse.example.xyz.nls, 按next 然后使用code generation wizard来创建插件, 选default fragment str ucture, 按nex t 在simple fragment content的plug-in id 按browse 选或直接键入 org.eclipse.example.xyz,确定我们这个fragment 所扩展的plug-in. 然后finish. 这时, 一个fragment已经生成好了. hello world中, 大家应该还记得它的作用就是resource透视图中有一个s ample menu->sample action, 点击这个菜单后 会有弹出一个对话框, "hello, eclipse world." 那如果在不同的系统中,我们要让这段提示输出不同语言的helloworld, 比 如我想在用中 文系统中显示"你好,eclipse世 界!" 的话, 那可以用fragment来实现. 使你的plug-in成为一个多语 言版本的plug-in. [修改plug-in为符合i18n的代码] 我们打开org.eclipse.example.xyz.actions.SampleAction.java, ================================================= public void run(IAction action) { MessageDialog.openInformation( window.getShell(), "Xyz Plug-in", "Hello, Eclipse world"); } ================================================= 这段代码是不符合i18n规则的 我们利用jdt的一个功能, menu->source->externalize string 设"Xyz Plug-in"的key为DIALOG_TITLE, "Hello, Eclip se world"的key为DIALOG_CONTE NT 然后设properties file的name为message.properties, 这样next之后, 这 些string就都 抽出来了 我们会发现sampleaction.java的代码变成了 ================================================ public void run(IAction action) { MessageDialog.openInformation( window.getShell(), Messages.getString("SampleAction.DIALOG_TITLE&q uot;), //$NON-NLS-1$ Messages.getString("SampleAction.DIALOG_CONTENT ")); //$NON-NLS-1$ } ================================================ 同时, 有多了一个messages.java 和message.properties messages.java是一个resouce bundle的控制类, 而数据都存在message.p roperties里面 我们看一下message.properties SampleAction.DIALOG_TITLE=Xyz Plug-in SampleAction.DIALOG_CONTENT=Hello, Eclipse world 这里等于将这些需要翻译的字符串都外部化出来了 [编写 fragment] 此时,我们要对fragment的事就很简单了. 在fragment对应的src目录下新建一个包 org.eclipse.example.xyz.acti ons, 在这个包 下面新建一个message_zh. properties的文件,然后填入: SampleAction.DIALOG_TITLE=Xyz u63d2u4ef6 SampleAction.DIALOG_CONTENT=u4f60u597d,eclipseu4e16u754c! 你会发觉我填进去的都是uxxxx, 你可以利用jdk下面的native2ascii来转 换, 详见零起 步九 然后,我们就可以测试我们的plug-in和fragment了 [测试不同语言版本的plug-in] 点击run...-> new workbench configuration 我们可以看见这个配置的arguments这个页面中的program arguments这一 项的有四个参 数(window下): -os win32 -ws win32 -arch x86 -nl zh_CN -nl这个参数就是用来确定启动的这个测试平台的语言环境的, 如果-nl等 于zh_CN(中文) ,那启动后点击菜单按钮, 你就会发现弹出一个标题为"Xyz 插件&qu ot;,内容为"你好,Eclipse 世界!"的对话框 如果你的-nl的值是 en_US, 那出来的结果就是"Hello, Eclipse Wo rld" 当然, 如果你想开发其他语言版本的话, 可以新建message_xx.propertie s, xx代表那个 语言的缩写. 如果你启动的-nl的值是 de_DE(德国), 但你没有对应语言的properties的 话, 就会自动 调用默认的message.properties ok, 今天就讲了fragment和fragment在i18n的实际应用, 大家好好消化把 |
||
========== * * * * * ==========
|
返回 |