前提条件
使用jquery-i18next插件前,需要jquery和i18next的支持。
安装
jquery-i18next支持npm和bower安装
1 2 3 4 5
| # npm package $ npm install jquery-i18next
# bower $ bower install jquery-i18next
|
使用入门
在html代码中插入data-i18n的属性
1 2 3 4 5
| <ul class="nav"> <li><a href="#" data-i18n="nav.home"></a></li> <li><a href="#" data-i18n="nav.page1"></a></li> <li><a href="#" data-i18n="nav.page2"></a></li> </ul>
|
定义翻译文件
可在源码路径下创建locales/en/translation.json文件
1 2 3 4 5 6 7
| { "nav": { "home": "Home", "page1": "Page One", "page2": "Page Two" } }
|
通过Javascript代码进行初始化和翻译
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| // 其中i18nextInstance是i18next的实例,最后一个参数是配置项
jqueryI18next.init(i18nextInstance, $, { tName: 't', // --> appends $.t = i18next.t i18nName: 'i18n', // --> appends $.i18n = i18next handleName: 'localize', // --> appends $(selector).localize(opts); selectorAttr: 'data-i18n', // selector for translating elements targetAttr: 'i18n-target', // data-() attribute to grab target element to translate (if diffrent then itself) optionsAttr: 'i18n-options', // data-() attribute that contains options, will load/set if useOptionsAttr = true useOptionsAttr: false, // see optionsAttr parseDefaultValueFromContent: true // parses default values from content ele.val or ele.text });
$(".nav").localize();
|
最终展现在网页中的结果
1 2 3 4 5
| // <ul class="nav"> // <li><a href="#" data-i18n="nav.home">Home</a></li> // <li><a href="#" data-i18n="nav.page1">Page One</a></li> // <li><a href="#" data-i18n="nav.page2">Page Two</a></li> // </ul>
|
使用进阶
通过jQuery的选择器来实现不同的翻译
翻译一个元素
1 2
| <a id="btn1" href="#" data-i18n="myKey"></a> $("#btn1").localize(options);
|
翻译一个元素的子元素
1 2 3 4 5 6
| <ul class="nav"> <li><a href="#" data-i18n="nav.home"></a></li> <li><a href="#" data-i18n="nav.page1"></a></li> <li><a href="#" data-i18n="nav.page2"></a></li> </ul> $(".nav").localize();
|
翻译一些内部元素
1 2 3 4
| <div class="outer" data-i18n="ns:key" data-i18n-target=".inner"> <input class="inner" type="text"></input> </div> $(".outer").localize();
|
设置不同属性的翻译
比如,想要设置某个元素的title属性的多语言,可使用这种方式;或者其他提示信息等。
1 2
| <a id="btn1" href="#" data-i18n="[title]key.for.title"></a> $("#btn1").localize();
|
设置多个属性
和设置单个属性类似,不过通过分号进行分隔,添加多个属性。
1 2
| <a id="btn1" href="#" data-i18n="[title]key.for.title;myNamespace:key.for.text"></a> $("#btn1").localize();
|
设置内部html的属性
1 2
| <a id="btn1" href="#" data-i18n="[html]key.for.title"></a> $("#btn1").localize();
|
添加前置内容
给一个元素原有内容前插入一些翻译文字
1 2
| <a id="btn1" href="#" data-i18n="[prepend]key.for.title">insert before me, please!</a> $("#btn1").localize();
|
添加后置内容
给一个元素原有内容后追加一些翻译文字
1 2
| <a id="btn1" href="#" data-i18n="[append]key.for.title">append after me, please!</a> $("#btn1").localize();
|
设置数据
1 2
| <a id="btn1" href="#" data-i18n="[data-someDataAttribute]key.for.content"></a> $("#btn1").localize();
|
参考