国际化是软件产品开发中的规范之一,牵涉范围广,需注意语言本地化,文化差异等等,这里做实现技术简介,可参考.

 

*制作语言包

---语言包项目使用Fragment项目

"Eclipse Platform 以用片段中的运行时元素增补原始目标插件的方法来合并插件片段。这不会以任何方式移动、除去或修改目标插件".

意味着存在相同key时,不会用fragment中的值替换.

---语言包命名规范

宿主插件名.nl[版本号].版本号可选

---区域敏感类文件

使用ResourceBundle和*.properties文件

Java 资源文件命名约定考虑到了语言、地区和变体( basename_language_region_variant),而 Eclipse 只指定语言,只有三种情况例外(葡萄牙语、中文/中国和中文/中国台湾),如中文,propertie_zh_CN.properties

---像xml,doc等普通文件的国际化

在代码中对获取文件名,使用ResourceBundle的方式,这样在fragment中就定义不同语言的文件.

 

*外部字符串

在导航器右键菜单,"Source"-->"Externalize String...",作用是自动对包下内容生成资源束.

特殊注释//$NON-NLS-n$ 表示此行中,第n个字符串无需外部化,即不显示在此功能中.

 

*配置文件的汉化

---Bundle-Localization,MENIFEST.MF的属性之一

定义配置文件(如MENIFEST.MF,plugin.xml等)内容的资源束文件名称.其中字段的内容,通过%key形式表示,而在*.properties文件中"key=??"定义值.

 

*建议

---取键名,应能清楚键是对应程序的那部分,通常加入约定的前缀,如类名等.

 

*总结

国际化的实质,是利用ResourceBundle通过Locale选择合适的名称,继而获取相关资源.
Fragment插件可以视为宿主插件的影子,他两之间的结构是直接关联的,它补充,但不取代宿主插件的同名资源.
Eclipse对Fragment的处理类似C的预处理,所以语言包的应用只是Fragment项目的典型应用.

posted on 2010-09-01 21:27  戴忠  阅读(450)  评论(0编辑  收藏  举报