微信小程序> 微信小程序国际化

微信小程序国际化

浏览量:523 时间: 来源:weixin_33840661

微信小程序国际化,看了看网上有i18n或者自己写个json等方法。于是用自己写json方法试了一下。感觉非常适合小白型的人理解和使用

1.新建一个js文件,写入json

let localList = {  'zh': {    'language': '简体中文',    'login': '登录',    'logout': '登出',    'pay': '支付',    'changeLanguage': '切换语言',    'search': '搜索',    'address': '地址',    'contacts': '联 系 人',    'phone': '联系电话',  },  'en': {    'language': 'English',    'login': 'Login',    'logout': 'Logout',    'pay': 'Pay',    'changeLanguage': 'ChangeLanguage',    'search': 'Search',    'address': 'Address',    'contacts': 'Contacts',    'phone': 'Phone',  }}module.exports = {  localList: localList}

2.在app.js中设置初始化的默认语言(试了其它文件如page中的index.js之类不好使,只能在app.js中)

    // 国际化    let lang = wx.getSystemInfoSync().language    // 无语种时预设一个默认语言    if (wx.getStorageSync("local") == ""){      let localList = require("./utils/locales.js")      wx.setStorageSync("local", localList.localList[lang])    }

当缓存中为空串时(wx.getStorageSync("local")为空时返回的不是null,而是""),设置默认的语言。有则不进行设置,否则会覆盖掉后面用户自己手动更改的语言。(另外,这有问题,后面改了)

因为:原本设定,返回的lang是"zh",就在json中有对应的"zh",返回的lang是"en",就在json中有对应的"en",只要json中的键与lang对应的就可以localList.localList[lang]这样获取并设置。

相当于这样:

if (lang == "zh") {  wx.setStorageSync("local", localList.localList.zh) //用缓存}if(lang == "en"){ // dddd  wx.setStorageSync("local", localList.localList.en) //用缓存}

然而,开发工具中返回的是"zh",手机返回的是"zh_CN",英文倒是返回的"en",但有一个不一样也不敢这样写了,难保有其它手机不一样,所以后来改了(见第5条)……

3.页面中进行引用

Page({  data: {    local: wx.getStorageSync("local")  }})
<view>22{{local.login}}</view><view>22{{local.pay}}</view>

4.切换语言,用showActionSheet直接写死了语种,反正我这就俩语种

  changeLang() {    let that = this    wx.showActionSheet({      itemList: ['中文', 'English'],      success(res) {        if(res.tapIndex == 0){          let localList = require("../../utils/locales.js")          wx.setStorageSync("local", localList.localList.zh)          that.setData({            local: wx.getStorageSync("local")          })        }        if(res.tapIndex == 1){          let localList = require("../../utils/locales.js")          wx.setStorageSync("local", localList.localList.en)          that.setData({            local: wx.getStorageSync("local")          })        }      },      fail(res) {        console.log(res.errMsg)      }    })      }

5.继续第二条。初始化赋值一个默认语言后来改了,改成什么样呢。

可以改成为空时也弹出再次弹一个showActionSheet,但是一样不好使,因为我还有一个lanucher页面,还没等选择菜单呢就被延迟启动的lanucher顶没了。

所有呢,我改成了这样

if (wx.getStorageSync("local") == ""){      let localList = require("./utils/locales.js")      wx.setStorageSync("local", localList.localList.zh)    }

指定默认中文得了,想改自己点切换按钮改去!!!

6.补充,我又改了,想了想还是这样吧

if (wx.getStorageSync("local") == ""){      let localList = require("./utils/locales.js")      if (lang == "zh" || lang == "zh_CN") {        wx.setStorageSync("local", localList.localList.zh)      }else{        wx.setStorageSync("local", localList.localList.en)      }    }

除了这两个中文,其它都英文吧,反正是初始化的默认

小程序

版权声明

即速应用倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请提供版权疑问、身份证明、版权证明、联系方式等发邮件至197452366@qq.com ,我们将及时处理。本站文章仅作分享交流用途,作者观点不等同于即速应用观点。用户与作者的任何交易与本站无关,请知悉。

产品经理

手机 : 13312967497

擅长 : 小程序流量变现

扫码领取礼包

热门模板

  • 头条
  • 搜狐
  • 微博
  • 百家
  • 一点资讯
  • 知乎