`
- 浏览:
345069 次
- 性别:
- 来自:
北京
-
在Eclipse RCP中实现I18N的思考与疑问
在RCP产品中实现国际化,一般是两种方式。
方式一:
- public class Messages {
- private static final String BUNDLE_NAME = "test.messages";
-
- private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle
- .getBundle(BUNDLE_NAME);
-
- private Messages() {
- }
- ......
- ......
-
- public static String getString(String key) {
- try {
- return RESOURCE_BUNDLE.getString(key);
- } catch (MissingResourceException e) {
- return '!' + key + '!';
- }
- }
- }
方式二:
- public class Message extends NLS {
-
- private static final String BUNDLE_NAME = "test.messages";
- ......
- ......
- static {
- NLS.initializeMessages(BUNDLE_NAME, MessageTest.class);
- }
- }
Eclipse平台和LumaQQ用的都是方式二,其实现机制用到了OSGI,与一相比的优点是什么?
此外,这两种方式所支持的I18N并不是动态的,也就是说,当用户从控制面板中更改了语言以后,需要重启应用才能发现改变,但是要做到像Skype那样,提供菜单选项来更改语言,应该如何处理呢?
对于商业化的产品而言,为了改变产品的语言而重启肯定是不可取的,也许有个办法可以做到,就是在一个地方集中处理所有的UI组件中的文字,当用户通过应用程序改变locale,就去刷新所有的UI组件,但还是没想好应该怎么做到这一点...
不知道谁有过这方面的经验,盼指教!
分享到:
- 2007-02-14 17:11
- 浏览 3759
- 评论(6)
- 论坛回复 / 浏览 (6 / 5999)
- 查看更多
Global site tag (gtag.js) - Google Analytics
相关推荐
该项目是一款基于freeRTOS操作系统和STM32F103x微控制器的手机远程控制浴室温度系统设计源码,共包含1087个文件,包括580个C语言源文件、269个头文件、45个汇编源文件、36个数据文件、36个目标文件、35个编译规则文件、28个包含文件、27个文本文件、6个源文件、3个归档文件。此系统通过手机远程实现对浴室温度的有效控制,适用于智能浴室环境管理。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。
labview程序代码参考学习使用,希望对你有所帮助。