Griffon 国际化

更多内容请到我的博客:http://www.mikameng.com

 

上一篇博客是 griffon桌面开发之hello world , 界面上的显示是英文的, 现在咱们来做一下汉化。

Griffon是基于MVC架构, 在griffon-app\i18n下是我们放多语言资源文件的地方, 就像web开发一样, 都有多语言资源文件。


1. 安装多语言插件 i18n

 

   默认是不支持多语言的,只有安装了此插件才启用。在项目根目录输入 griffon install-plugin i18n 即可安装多语言支持。 请参照 http://griffon.codehaus.org/I18n+Plugin


2. 添加中文资源文件

    在griffon-app\i18n 新建文件messages_zh_CN.properties,此文件里存放和项目有关的中文资源。注意资源文件里的中文要转为Unicode编码。

转码可以用java自带的native2ascii命令:  native2ascii  源文件 目标文件 ; 先将需要转的内容放到源文件里,执行命令后目标文件里就是转换后的编码。 将此内容复制到messages_zh_CN.properties文件里。

 

转码处理前:

 

app.title=Hello Word入门
userName=用户名
email=邮箱
phone=电话
close=关闭
save=保存

 

Unicode编码 处理后:

app.title=Hello Word\u5165\u95e8
userName=\u7528\u6237\u540d
email=\u90ae\u7bb1
phone=\u7535\u8bdd
close=\u5173\u95ed
save=\u4fdd\u5b58

 

将处理后的内容放到中文资源messages_zh_CN.properties里。

 

3.  更改界面View, 根据需要自动加载资源文件

 

      i18n plugin会自动创建messageSource实例, 我们通过messageSource实例去获得多语言内容,从而将内容显示在界面上。 使用方式如下: ${messageSource.getMessage('key')}

 

更改后界面如下:

package helloword

 import griffon.util.GriffonNameUtils as GNU 
//application(title: 'HelloWord',
application(title: "${messageSource.getMessage('app.title')}" ,,
  pack: true,
  locationByPlatform:true,
  iconImage: imageIcon('/griffon-icon-48x48.png').image,
  iconImages: [imageIcon('/griffon-icon-48x48.png').image,
               imageIcon('/griffon-icon-32x32.png').image,
               imageIcon('/griffon-icon-16x16.png').image]) {
    panel(border:emptyBorder(10)) {

            borderLayout()
           
            panel(constraints: CENTER){
                    migLayout()
                                    
            label ("${messageSource.getMessage('userName')}" , constraints: 'left')
            textField(columns: 20, constraints: 'growx, wrap', text: bind('userName', target:model, mutual: true))

            label ("${messageSource.getMessage('email')}" , constraints: 'left')
            textField(columns: 20, constraints: 'growx, wrap', text: bind('email', target:model, mutual: true))

                label ("${messageSource.getMessage('phone')}" , constraints: 'left')
            textField(columns: 20, constraints: 'growx, wrap', text: bind('phone', target:model, mutual: true))
        }
           
            panel(constraints: SOUTH){
                    migLayout()                   
       
                    button( "${messageSource.getMessage('save')}" , actionPerformed: controller.save,  constraints: 'left')
                    button( "${messageSource.getMessage('close')}" , actionPerformed: controller.close, constraints: 'growx,wrap')
            }

}
           
}

 

4. 运行程序,看下效果。 命令: griffon run-app

 

 

更多内容请到我的博客:http://www.mikameng.com


版权声明: 原创作品,允许转载,转载时请务必以超链接形式标明文章出处 、作者信息和本声明。否则将追究法律责任。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值