基于Equinox构建支持多语言的Bundle

上传人:壹****1 文档编号:568490422 上传时间:2024-07-24 格式:PDF 页数:3 大小:205.23KB
返回 下载 相关 举报
基于Equinox构建支持多语言的Bundle_第1页
第1页 / 共3页
基于Equinox构建支持多语言的Bundle_第2页
第2页 / 共3页
基于Equinox构建支持多语言的Bundle_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《基于Equinox构建支持多语言的Bundle》由会员分享,可在线阅读,更多相关《基于Equinox构建支持多语言的Bundle(3页珍藏版)》请在金锄头文库上搜索。

1、基于基于 EquinoxEquinox 构建支持多语言的构建支持多语言的 BundleBundle对于一个 OSGi 的 Bundle 项目而言,多语言支持与 JAVA的原理基本相似,就是将程序中用到的字符串配置在 properties 文件中。然后每种语言及地区提供一个单独的 properties文件声明它的字符串资源。本文以 Equinox的 OSGi 实现为例,描述如何让您的Bundle 程序支持多语言:1.对插件描述文件,如 plugin.xml, MANIFEST.MF 文件,多语言支持的作法如下:a)在插件的根目录下创建 plugin.properties 文件,用于存放默认的字符

2、串资源。如:Bundle-Name = u56fdu9645u5316u6f14u793au63d2u4ef6sampleContentTypeNameu6f14u793au5185u5bb9u7c7bu578b=在此 properties 文件中,名称代表字符串资源名,右边的值代表字符串内容。注意:假设字符串的内容不是ASCII 编码的,则需要将字符串转化为UNICODE编码。b)在 MANIFEST.MF 文件中加入一行:BundleLocalizationBundleLocalization : plugin表示国际化字符串资源都存放在以plugin 开头的资源文件中。c)添加其它语言及

3、地区的字符串资源文件,文件名的格式为:plugin_语言代码_国家及地区代码.properties如:plugin_zh_CN.properties表示中国中文plugin_en_US.properties表示美国英文等。d)在 plugin.xml 文件或 MANIFEST.MF文件中, 假设要使用在 plugin*.properties文件中定义好的字符串,就使用%资源名来指代,如:Manifest-Version: 1.0BundleManifestVersionBundleManifestVersion : 2BundleNameBundleName : %Bundle-NameBun

4、dleSymbolicNameBundleSymbolicName :org.sample.eclipse.i18n;singleton:=true.2.对于插件中的程序用到的字符串资源,多语言支持的方法如下:a)在 MANIFEST.MF中添加依赖插件 。b)在某一包中创建文件 messages.properties,如在包中添加 messages.properties文件:SAMPLE_START_I18N = u5f00u59cb i18nSAMPLE_STOP_I18N = u7ed3u675f i18nSAMPLE_HELLO_I18N = u60a8u597d i18n用于定义字符

5、串资源。c)继承添加其它语言及国家对应的字符串资源文件,文件名格式与上述的一样,即:messages_语言代码_国家及地区代码.properties如:messages_zh_CN.properties表示中国中文messages_en_US.properties表示美国英文等。d)在同包下创建 Messages.java 类文件,该类必须继承自类,并且需要在该类中定义与 messages.properties文件中定义的字符串资源相对应的字符串常量, 还要在加载此类时调用 NLS.initializeMessages方法,如下代码所示:packagepackage org.sample.ec

6、lipse.i18n;importimport org.eclipse.osgi.util.NLS;publicpublic classclass Messages extendsextends NLS privateprivate staticstatic finalfinal String BUNDLE_NAME =publicpublic staticstatic String SAMPLE_START_I18N;publicpublic staticstatic String SAMPLE_STOP_I18N;publicpublic staticstatic String SAMPL

7、E_HELLO_I18N;staticstatic privateprivate Messages() / initialize resource bundleNLS.initializeMessages(BUNDLE_NAME, Messages.classclass);org.sample.eclipse.i18n.messages; /$NON-NLS-1$注意:在NLS.initializeMessages 方法中,会根据程序当前系统参数中所设置的语言及国家代码,找到对应的字符串资源文件加载并将里面定义的值赋给对应的类常量中,此方法的第一个参数表示字符串资源文件的名称含包名,第二个参数

8、表示相对应的类的类对象。e)在程序中,假设需要使用字符串内容, 则直接调用此类的字符串常量即可, 如下代码所示:.System.out.println(Messages.SAMPLE_START_I18N);System.out.println(Messages.SAMPLE_STOP_I18N);System.out.println(Messages.SAMPLE_HELLO_I18N);支持多语言比拟好的一个做法是在插件只定义了默认的字符串资源文件, 将其它语言的字符串资源文件分别定义在该插件的附件(fragment)中。这样发行不同语言的应用程序只需要附加上对应的附件语言包即可。在程序运行中, 会采用操作系统平台定义的国家和语言, 但您也可以在程序参数中强行指定国家和语言,如:-nl en_US表示采用美国英语。学习文档 仅供参考

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号