微信小程序国际化语言包实现方式(di18n-translate)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 16:31   1817   0

首先需要一个工具类:languageBox.js

// Time 为事例值
export default {
  //英文
  "en": {
       "test":"test"
   },
  //中文
  "zh-cn": {
        "test":"测试"
   },
}

然后是另一个工具类:wxapp-i18n.js

let di18n = {}
di18n.locale = null
di18n.locales = {}
 
di18n.registerLocale = function (locales) {
    di18n.locales = locales;
}
 
di18n.setLocale = function (code) {
    di18n.locale = code
}
 
di18n._ = function (line, data) {
    const locale = di18n.locale
    const locales = di18n.locales
    if (locale && locales[locale] && locales[locale][line]) {
        line = locales[locale][line]
    }
 
    return line
}
 
export default di18n

然后在 app.js 中引入文件并做处理.

//国际化
import locales from './utils/languageBox'
import di18n from './utils/wxapp-i18n'
 
// 数据注入(可以在App({})外面写)
di18n.registerLocale(locales)
try {
  // 获取系统设置的语言格式
  var value = wx.getStorageSync('language')
  if (value) {
    di18n.setLocale(value)
  } else {
    di18n.setLocale('zh-cn')//默认显示中文
  }
} catch (e) {
  di18n.setLocale('zh-cn')//默认显示中文
}
wx.di18n = di18n

index.wxml中使用国际化语言包,则在index.js中书写:

onLoad: function (options) {
    //语言包开始
    let language = wx.di18n._
    console.log(language('test'))
    //语言包结束
  },

如果想把语言包分模块化也可以:

//languageBox.js
export default {
    //英文
    "en": {
        "Time": "Time"
    },
    //中文
    "zh-cn": {
        // -------------------封装成一块一块好调用-------------------
        "common": {
            "commonRecommend": "推荐项目",
            "commonTime": "意向预约时间",
            "commonYear": "年",
            "commonMonth": "月",
            "commonDay": "日",
        },
    }
}
//index.js
onLoad: function (options) {
    //语言包开始
    let language = wx.di18n._
    console.log(language('common'))
    let languageBox = language('common')
    console.log(languageBox.commonRecommend)//推荐项目
    //语言包结束
},

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP