欢迎来到天天文库
浏览记录
ID:34754159
大小:51.69 KB
页数:3页
时间:2019-03-10
《基于equinox构建支持多语言的bundle》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于Equinox构建支持多语言的Bundle对于一个OSGi的Bundle项目而言,多语言支持与JAVA的原理基本相似,就是将程序中用到的字符串配置在properties文件中。然后每种语言及地区提供一个单独的properties文件声明它的字符串资源。本文以Equinox的OSGi实现为例,描述如何让您的Bundle程序支持多语言:1.对插件描述文件,如plugin.xml,MANIFEST.MF文件,多语言支持的作法如下:a)在插件的根目录下创建plugin.properties文件,用于存放默认的字符串资源。如:Bundle
2、-Name=u56fdu9645u5316u6f14u793au63d2u4ef6sampleContentTypeName=u6f14u793au5185u5bb9u7c7bu578b在此properties文件中,名称代表字符串资源名,右边的值代表字符串内容。注意:若字符串的内容不是ASCII编码的,则需要将字符串转化为UNICODE编码。b)在MANIFEST.MF文件中加入一行:Bundle-Localization:plugin表示国际化字符串资源都存放在以plugin开头的资源文件中。c)添加其
3、它语言及地区的字符串资源文件,文件名的格式为:plugin_[语言代码]_[国家及地区代码].properties如:plugin_zh_CN.properties表示中国中文plugin_en_US.properties表示美国英文等。d)在plugin.xml文件或MANIFEST.MF文件中,若要使用在plugin*.properties文件中定义好的字符串,就使用%资源名来指代,如:Manifest-Version:1.0Bundle-ManifestVersion:2Bundle-Name:%Bundle-NameBund
4、le-SymbolicName:org.sample.eclipse.i18n;singleton:=true……..2.对于插件中的程序用到的字符串资源,多语言支持的方法如下:a)在MANIFEST.MF中添加依赖插件org.eclipse.osgi。b)在某一包中创建文件messages.properties,如在org.sample.eclipse.i18n包中添加messages.properties文件:SAMPLE_START_I18N=u5f00u59cbi18nSAMPLE_STOP_I18N=u7ed3u6
5、75fi18nSAMPLE_HELLO_I18N=u60a8u597di18n用于定义字符串资源。c)继承添加其它语言及国家对应的字符串资源文件,文件名格式与上述的一样,即:messages_[语言代码]_[国家及地区代码].properties如:messages_zh_CN.properties表示中国中文messages_en_US.properties表示美国英文等。a)在同包下创建Messages.java类文件,该类必须继承自org.eclipse.osgi.util.NLS类,并且需要在该类中定义与messages
6、.properties文件中定义的字符串资源相对应的字符串常量,还要在加载此类时调用NLS.initializeMessages方法,如下代码所示:packageorg.sample.eclipse.i18n;importorg.eclipse.osgi.util.NLS;publicclassMessagesextendsNLS{privatestaticfinalStringBUNDLE_NAME="org.sample.eclipse.i18n.messages";//$NON-NLS-1$publicstaticString
7、SAMPLE_START_I18N;publicstaticStringSAMPLE_STOP_I18N;publicstaticStringSAMPLE_HELLO_I18N;static{//initializeresourcebundleNLS.initializeMessages(BUNDLE_NAME,Messages.class);}privateMessages(){}}注意:在NLS.initializeMessages方法中,会根据程序当前系统参数中所设置的语言及国家代码,找到对应的字符串资源文件加载并将里面定义的
8、值赋给对应的类常量中,此方法的第一个参数表示字符串资源文件的名称(含包名),第二个参数表示相对应的类的类对象。b)在程序中,若需要使用字符串内容,则直接调用此类的字符串常量即可,如下代码所示:….System.out.println(
此文档下载收益归作者所有