书格前端

i18next的jquery插件jquery-i18next的使用方法


i18next的jquery插件jquery-i18next的使用方法

前提条件

使用jquery-i18next插件前,需要jquery和i18next的支持。

安装

jquery-i18next支持npm和bower安装

# npm package
$ npm install jquery-i18next

# bower
$ bower install jquery-i18next

使用入门

在html代码中插入data-i18n的属性

<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文件

{
  "nav": {
    "home": "Home",
    "page1": "Page One",
    "page2": "Page Two"
  }
}

通过Javascript代码进行初始化和翻译

// 其中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();

最终展现在网页中的结果

// <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的选择器来实现不同的翻译

翻译一个元素

<a id="btn1" href="#" data-i18n="myKey"></a>
$("#btn1").localize(options);

翻译一个元素的子元素

<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();

翻译一些内部元素

<div class="outer" data-i18n="ns:key" data-i18n-target=".inner">
  <input class="inner" type="text"></input>
</div>
$(".outer").localize();

设置不同属性的翻译

比如,想要设置某个元素的title属性的多语言,可使用这种方式;或者其他提示信息等。

<a id="btn1" href="#" data-i18n="[title]key.for.title"></a>
$("#btn1").localize();

设置多个属性

和设置单个属性类似,不过通过分号进行分隔,添加多个属性。

<a id="btn1" href="#" data-i18n="[title]key.for.title;myNamespace:key.for.text"></a>
$("#btn1").localize();

设置内部html的属性

<a id="btn1" href="#" data-i18n="[html]key.for.title"></a>
$("#btn1").localize();

添加前置内容

给一个元素原有内容前插入一些翻译文字

<a id="btn1" href="#" data-i18n="[prepend]key.for.title">insert before me, please!</a>
$("#btn1").localize();

添加后置内容

给一个元素原有内容后追加一些翻译文字

<a id="btn1" href="#" data-i18n="[append]key.for.title">append after me, please!</a>
$("#btn1").localize();

设置数据

<a id="btn1" href="#" data-i18n="[data-someDataAttribute]key.for.content"></a>
$("#btn1").localize();

参考