一般动作
登录
Wiki: BROPEN ▼: Document Index
»
Space: FAQ ▼: Document Index
»
Page: JavaScript的国际化支持
搜索
zh
页面动作
导出 ▼: 以PDF格式导出 以RTF格式导出 以HTML格式导出
更多动作 ▼: 打印预览 察看源码
欢迎进入Wiki » FAQ » JavaScript的国际化支持?

# JavaScript的国际化支持?

在2014-07-29 14:44上被李小翔修改
评论 (0) · 附件 (0) · 记录 · 信息

Grails中，通过判断浏览器中的语言设置，可以自动实现后台消息的国际化；此外，通过扩展配置 bropen.toolkit.i18n.supported，还可以锁定语言。

但是对于前台 JavaScript 的国际化，Grails并未提供原生的支持，但是通过 resource 插件，在 BroFramework 中实现了 js 的国际化。

js 国际化的开发过程如下。

- 在应用或插件的 grails-app/assets/javascripts 文件夹下创建一个 i18n 的文件夹，此文件夹中可以创建相应的语言定义文件，文件名格式同 grails-app/i18n 下的 properties 文件，只是扩展名为 .js，如 “BroFramework_zh_CN.js”；
- 系统启动时，根据 BroFramework 下的 i18n_xx_XX.js，以插件依赖关系顺序搜索所有 js/i18n 文件夹下的语言定义文件，并将他们按照语言（即文件名后缀）组合成不同的 js 资源包，如 “i18n_zh_CN.js”；
- 视图模板（或者未引用视图模板的视图，如index.gsp）中，在 head 加上标签 <bro:scriptI18n />，将自动解析浏览器语言设置，并加载对应的 js 资源包；
- 在javascript中，通过调用 m(code) 即可获得 code 对应的国际化文本。

上面的步骤中，语言定义文件的格式如下例所示：

m.merge({
"jqui.dalog.button" : {
"SUBMIT": "提交",
"OK": "确定",
"CLOSE": "关闭",
"CANCEl": "取消"
},
"default.not.unique.message": "【{1}】 的属性 【{0}】 的值 【{2}】 必须是唯一的"
});

- 可以直接定义一个code，并定义其文本，如 “default.not.unique.message”
- 或者定义一个父集合，然后定义子集，如在 “jqui.dialog.button” 下定义了 “SUBMIT” 四个子集，等同于定义了 “jqui.dialog.button.SUBMIT” 等四个code
- 文本中可以包含参数 {N}，其中 N 为数字，表示第 N 个参数（从0开始）

此外，获得国际化文本 m 方法，支持下面的几种调用方式：

- m(code)：只有参数 code
- m(code, default)：其中 default 必须为字符串，即默认的文本
- m(code, args)：其中 args 为数组，表示参数
- m(code, args, default)：上面两种调用方式的组合

如：m("jqui.dalog.button.CLOSE", "Close")

标签： BroFramework 国际化
在2014-06-11 18:32上被李小翔创建

- 评论 （0）
- 附件 （0）
- 记录
- 信息

# 快速链接

- 首页
- 新闻动态
- FAQ

Copyright © 2013 北京博瑞开源软件有限公司
京ICP备12048974号