jQuery实现资源国际化

jQuery实现资源国际化

1、jQuery之前端国际化jQuery.i18n.properties

1. jQuery.i18n.properties采用.properties文件对JavaScript进行国际化。 jQuery.i18n.properties插件首先加载默认的资源文件(filename.properties),然后加载针对特定语言环境的资源文件(filename_zh.properties),这就保证了在未提供某种语言的翻译时,默认值始终有效。
**2. filename的命名方式: **
filename.properties(默认定义)
filename_language.properties(自定义语言)
filename_language_country.properties(自定义语言加国家)
3. 应用说明:

//引入jQuery.i18n.properties插件:
<script type="text/javascript" src="${basePath}/static/plugin/jqueryi18n/jquery.i18n.properties.min.js"></script>
/**
* Load and parse message bundle files (.properties),
* making bundles keys available as javascript variables.
*
* i18n files are named <name>.js, or <name>_<language>.js or <name>_<language>_<country>.js
* Where:
* The <language> argument is a valid ISO Language Code. These codes are the lower-case,
* two-letter codes as defined by ISO-639. You can find a full list of these codes at a
* number of sites, such as: http://www.loc.gov/standards/iso639-2/englangn.html
* The <country> argument is a valid ISO Country Code. These codes are the upper-case,
* two-letter codes as defined by ISO-3166. You can find a full list of these codes at a
* number of sites, such as: http://www.iso.ch/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/list-en1.html
*
* Sample usage for a bundles/Messages.properties bundle:
* $.i18n.properties({
* name: 'Messages',
* language: 'en_US',
* path: 'bundles'
* });
* @param name (string/string[], optional) names of file to load (eg, 'Messages' or ['Msg1','Msg2']). Defaults to "Messages"
* @param language (string, optional) language/country code (eg, 'en', 'en_US', 'pt_BR'). if not specified, language reported by the browser will be used instead.
* @param path (string, optional) path of directory that contains file to load
* @param mode (string, optional) whether bundles keys are available as JavaScript variables/functions or as a map (eg, 'vars' or 'map')
* @param cache (boolean, optional) whether bundles should be cached by the browser, or forcibly reloaded on each page load. Defaults to false (i.e. forcibly reloaded)
* @param encoding (string, optional) the encoding to request for bundles. Property file resource bundles are specified to be in ISO-8859-1 format. Defaults to UTF-8 for backward compatibility.
* @param callback (function, optional) callback function to be called after script is terminated
*/ 
jQuery.i18n.properties({
    name : 'filename', //资源文件名称
    path : '${contentsPath}/static/i18n/', //资源文件路径
    mode : 'map', //用Map的方式使用资源文件中的值
    language : 'zh',
    callback : function() {//加载成功后设置显示内容
        console.info($.i18n.prop('key'));// key 为properties文件中定义的键值对相应的key,这样既数据key对应的value
    }
});

// filename.properties中定义的类容
// name=zivs_en

// filename_zh.properties中定义的类容
// name=zivs_zh

//使用
$("#my_input").val($.i18n.prop('name'));//获取key=name的value: $.i18n.prop('name')

4. 总结:
若使用的filename.properties是项目的resource目录中已定义的话,需要将相应.properties文件copy一份到项目static目录(resource目录是在Service端,受保护,Client端不能直接获取),这样也来同一份properties文件就会存在两份。

2、模板(Freemarker)嵌入使用

将资源国际化message定义成一个jQuery变量(在FreeMarker模板中),在将变量通过模板嵌入页面。这样页面就会存在一个动态引入的变量。
1. 定义模板变量:

//i18n配置文件 
//新建文件 syssetting_cn.properties和syssetting_en.properties分别如下:
syssetting_cn.properties
    sys.hint.timeout=请求超时
    sys.hint.optionFail=操作失败
    sys.hint.serviceException=服务异常
syssetting_en.properties
    sys.hint.timeout=Request Timeout
    sys.hint.optionFail=Operation Failed
    sys.hint.serviceException=Service Exception
//新建文件i18n_message.ftl 类容如下:
i18n_message
<#macro i18nMessage>
    var i18n_message = {
            serviceException : "<@spring.message code="sys.hint.serviceException"/>",
        // <@spring.message code="sys.hint.serviceException"/>Spring i18n 的页面书写方式
            optionFail : "<@spring.message code="sys.hint.optionFail"/>",
            timeout : "<@spring.message code="sys.hint.timeout"/>"
        };
</#macro>

<#-- 在相应的页面引入freemarker宏模板 -->
<#import "i18n_message.ftl" as i18n_message />

2. 页面引入模板变量:

<#--页面引入定义的 i18n_message 资源数据-->
<@i18n_message.i18nMessage/>

3. 获取值:

<#--页面直接获取 i18n_message 定义的key为 serviceException 的值-->
console.info(i18n_message.serviceException);

4. 总结:
filename.properties在系统中只存在唯一一份,保证了数据的唯一性。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,372评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,368评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,415评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,157评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,171评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,125评论 1 297
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,028评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,887评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,310评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,533评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,690评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,411评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,004评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,659评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,812评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,693评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,577评论 2 353

推荐阅读更多精彩内容

  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 46,803评论 6 342
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,651评论 18 139
  • FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1...
    年轻小伙程序员阅读 2,990评论 0 5
  • 因为想要什么都完美,结果,心焦虑,身疲乏,一事无成。 是不是很可笑,付出心力很多,可都是坏结果。然而想好就做,不去...
    沙棘真美味阅读 213评论 0 0
  • 工作中,总是避免不了会有需要别人帮助,或者别人需要你帮助的情况。需要别人帮助,当然不必说,直接找人帮忙就是了。但是...
    兰若雪钰阅读 134评论 0 0