用JavaScript+jquery手写一个简单的多语言

1. 新建一个language.js文件

  /* -----------------------------------------------------
    全局做语言替换
----------------------------------------------------- */

$(document).ready(function () {
  var chang = function () {
    var abc = zh
    var str = location.search || localStorage.getItem('lang')
    localStorage.setItem('lang', str)
    if (str.indexOf('lang=en') !== -1) {
      abc = en
    }
    let elements = $("[abc]")
    for (let i = 0; i < elements.length; i++) {
      let keys = $(elements[i]).attr('abc').split('.')
      let text = abc
      keys.map(i => {
        text = text[i]
      })
      $(elements[i]).text(text || '')
    }
  }()
  /* -----------------------------------------------------
     语言选择
----------------------------------------------------- */
  $('#langType').click(function () {
    if (this.innerHTML === '中文') {
      this.innerHTML = 'English'
      localStorage.setItem('lang', 'lang=zh')
      chang()
    } else {
      this.innerHTML = '中文'
      localStorage.setItem('lang', 'lang=en')
      chang()
    }
  })
})

获取所有拥有abc这个属性名的元素,然后将这个元素下面的内容全部替换成json中定义好的内容。

2. 新建语言的json文件,如下zhData.json,enData.json

zhData({
  "title": "你好,是我标题",
  "quick": "快速连接",
  "contactUs": "联系我们",
  "address": "浙江杭州",
  "daohang": {
    "Profile": "首页",
    "About": "关于我们"
  }
})

3. 在index.html页面中引入json文件和js文件

  <script>
    var zh, en
    function zhData (data) {
      zh = data
    }
    function enData (data) {
      en = data
    }
  </script>
  <script src="static/js/lang/zhData.json?cb=zhData"></script>
  <script src="static/js/lang/enData.json?cb=enData"></script>
  <script src="static/js/language.js"></script>

这里一定要在引用json文件之前,先定义zhData的方法,否者报错。

4. 在用到多语言的地址直接添加一个abc的属性,并设置成我们再json文件中定义的值就行。

<a class="nav-link js-scroll-trigge" href="about-us.html" abc="daohang.About"></a>

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值