微信小程序(二十七)微信小程序配置多语言

简介: 公司中开发的项目需要使用到双语这个功能。上一个版本开发的时候,使用的是多语言i18n这个插件,但是感觉体验一般。配置起来也不是很方便。

公司中开发的项目需要使用到双语这个功能。

上一个版本开发的时候,使用的是多语言i18n这个插件,但是感觉体验一般。

配置起来也不是很方便。

在这一版开发的时候,就想换个插件,优化一下。

但是在百度上找了几个插件尝试了之后,还不如i18n的效果呢

大概想了一下,这个玩意应该也不是很费劲,我这里自定义一个双语插件吧,不,应该说自定义一个多语言插件吧

一:双自定义双语插件

image.png

1:在项目根目录下创建一个目录:language

2:在language目录下创建languageUtils.js

php

复制代码

const app = getApp();
/**
 * @name: 语言切换
 * @author: camellia
 * @date: 2021-11-05
 */
const languageVersion = function()
{
    var languageVersion = wx.getStorageSync("languageVersion");
    if (languageVersion == 0)
    {
        // 导入我们定义好的中文字典
        var zh_lang = require('./zh_lang.js')
        // console.log(zh_lang)
        return zh_lang
    }
    else
    {
        // 导入我们定义好的英文字典
        var en_lang = require('./en_lang.js')
        // console.log(en_lang)
        return en_lang
    }
}
/**
 * @name: 切换版本
 * @author: camellia
 * @date: 2021-11-05
 */
const changLanguage = function()
{
    var languageVersion = wx.getStorageSync("languageVersion");
    //修改前面已经定义好的,用于标识小程序的语言版本
    if (languageVersion == 0)
    {
        wx.setStorage({
            key: "languageVersion",
            data: 1,
        });
    }
    else if (languageVersion == 1)
    {
        wx.setStorage({
            key: "languageVersion",
            data: 0,
        });
        // app.globalData.languageVersion = 0;
    // console.log("当前语言版本:中文",app.globalData.version)
    }
}
//抛出方法
module.exports = {
  'languageVersion': languageVersion,
  'changLanguage': changLanguage
}

3:在language目录下创建中文语言包zh_lang.js与英文语言包en_lang.js

zh_lang.js

css

复制代码

var Languague = {
    // 首页
    index: {
        score_query: "成绩查询",
        sign_in: "扫码签到",
        schedule: "日程查看",
        exam: "考试安排",
        notice: "通知公告",
        certificate: "证书荣誉",
        exchange: "预约交换",
        more: "更多",
        today_agenda: "今日日程",
        top_title: "Mools教学系统",
        more_recent_agenda: "更多近期日程",
        no_schedule: "今日暂无日程安排",
        bind: "绑定查看今日日程"
    },
    // 底部中文版工具栏,这里是用于自定义tarbar用的
    toolbarStudent: {
        list: [
            {
                current: 0,
                pagePath: "/pages/index/index",
                text: "首页",
                iconPath: "/images/index-select.png",
                selectedIconPath: "/images/index-selected.png",
            },
            {
                current: 1,
                pagePath: "/pages/student/course/course",
                text: "课程",
                iconPath: "/images/liao_select.png",
                selectedIconPath: "/images/liao_selected.png",
            },
            {
                current: 2,
                pagePath: "/pages/personalCenter/index/index",
                text: "我的",
                iconPath: "/images/board-select.png",
                selectedIconPath: "/images/board-selected.png",
            },
        ],
    },
};
module.exports = {
    lang: Languague
}

en_lang.js

css

复制代码

var Languague = {
  // 首页
  index: {
    score_query: "score query",
    sign_in: "sign in",
    schedule: "schedule",
    exam: "exam",
    notice: "notice",
    certificate: "certificate",
    exchange: "exchange",
    more: "more",
    today_agenda: "Today's agenda",
    top_title: "Mools teaching system",
    more_recent_agenda: "more recent agenda"
  },
  //底部英文版工具栏,这里是用于自定义tarbar用的
  toolbarStudent: {
    list: [
      {
        current: 0,
        pagePath: "/pages/index/index",
        text: "homePage",
        iconPath: "/images/index-select.png",
        selectedIconPath: "/images/index-selected.png",
      },
      {
        current: 1,
        pagePath: "/pages/student/course/course",
        text: "course",
        iconPath: "/images/liao_select.png",
        selectedIconPath: "/images/liao_selected.png",
      },
      {
        current: 2,
        pagePath: "/pages/personalCenter/index/index",
        text: "myself",
        iconPath: "/images/board-select.png",
        selectedIconPath: "/images/board-selected.png",
      },
    ],
  },
};
module.exports = {
  lang: Languague,
};

二:双语插件使用

1:定义缓存

首先,我们需要在缓存中定义一个变量来存储我们当前使用的是那个语言,默认中文

这部分,我目前写在app.js中的onLaunch() 中

php

复制代码

// =============================================
    // 首次进入设置语言选项
    var languageVersion = wx.getStorageSync("languageVersion");
    if(!languageVersion)
    {
      wx.setStorage({
        key: "languageVersion",
        data: 0,
      });
    }

2:基础调用

index.js

php

复制代码

// 双语字典
var languageUtils = require("../../../language/languageUtils");
  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    var self = this;
    // 初始化语言
    self.initLanguage();
  },
  /**
   * @name: 初始化语言(双语)
   * @author: camellia
   * @date: 2021-11-05
   */
  initLanguage()
  {
    let self = this;
    //获取当前小程序语言版本所对应的字典变量
    let lang = languageUtils.languageVersion();
    // console.log(lang.lang);
    // 页面显示
    self.setData({
      content: lang.lang,
    });
    // 顶部标题放到这里来就行了
    wx.setNavigationBarTitle({
      title: lang.lang.my.top_title,
    });
  },

3:底部tabbar 设置双语

这里我的底部tabbar使用的是 自定义tabbar ,关于自定义tabbar请移步《小程序(三)配置tabbar及自定义tabbar样式

添加如下代码:

php

复制代码

/**
   * 生命周期---创建
   */
  attached() {
    this.showTabbar();
  },
/**
   * @name: 方法
   * @author: camellia
   * @date: 2021-11-13
   */
  methods: {
   /**
     * @name: 显示菜单栏
     * @author: camellia
     * @date: 2021-11-13
     */
    showTabbar()
    {
      var self = this;
      // ==========================================================================
      // 这里要从缓存中获取用户 身份
      //获取当前小程序语言版本所对应的字典变量
      var lang = languageUtils.languageVersion();
      // console.log(lang.lang.toolbarStudent);
      self.data.menuWidth = "33%";
      self.data.list = lang.lang.toolbarStudent.list;
      self.setData({
        list: self.data.list,
        menuWidth: self.data.menuWidth,
      });
    },
}

以上的代码即可实现小程序的中英双语切换功能,

如果你想实现中英日三语言切换,那就再创建一个对应的日文字典即可实现三语言切换。

有好的建议,请在下方输入你的评论

欢迎访问个人博客:guanchao.site

欢迎访问我的小程序:打开微信->发现->小程序->搜索“时间里的”

目录
相关文章
|
1月前
|
存储 JSON 小程序
微信小程序入门之新建并认识小程序结构
微信小程序入门之新建并认识小程序结构
46 1
ly~
|
2月前
|
存储 供应链 小程序
除了微信小程序,PHP 还可以用于开发哪些类型的小程序?
除了微信小程序,PHP 还可用于开发多种类型的小程序,包括支付宝小程序、百度智能小程序、抖音小程序、企业内部小程序及行业特定小程序。在电商、生活服务、资讯、工具、娱乐、营销等领域,PHP 能有效管理商品信息、订单处理、支付接口、内容抓取、复杂计算、游戏数据、活动规则等多种业务。同时,在企业内部,PHP 可提升工作效率,实现审批流程、文件共享、生产计划等功能;在医疗和教育等行业,PHP 能管理患者信息、在线问诊、课程资源、成绩查询等重要数据。
ly~
76 6
|
2月前
|
小程序 前端开发 中间件
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
本文介绍了如何在ThinkPHP框架中配置跨域请求,使用了TP内置的跨域类`\think\middleware\AllowCrossDomain::class`。文章还讨论了小程序和web网页在跨域请求格式上的区别,并提供了解决方案,包括修改跨域中间件源码以支持`Origin`和`token`。此外,还介绍了微信小程序跨域请求的示例和web网页前端发送Axios跨域请求的请求拦截器配置。
ThinkPHP 配置跨域请求,使用TP的内置跨域类配置,小程序和web网页跨域请求的区别及格式说明
|
24天前
|
存储 自然语言处理 小程序
微信小程序多语言切换神器:简繁体切换功能完全指南
随着全球化的发展,支持多种语言的应用程序愈发重要。本文介绍了如何在微信小程序中实现简体与繁体字体之间的切换功能,以满足不同地区用户的需求。通过创建utils文件夹并编写相应的转换函数,开发者可以方便地实现语言切换,从而提升用户体验。文章中还附带了示例代码和效果图,帮助读者更好地理解和应用这一功能。
73 0
微信小程序多语言切换神器:简繁体切换功能完全指南
|
28天前
|
小程序 JavaScript API
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
这篇文章介绍了如何在uni-app和微信小程序中实现将图片保存到用户手机相册的功能。
441 0
微信小程序开发之:保存图片到手机,使用uni-app 开发小程序;还有微信原生保存图片到手机
|
1月前
|
XML 小程序 JavaScript
小程序入门之项目配置说明和数据绑定
小程序入门之项目配置说明和数据绑定
37 1
|
1月前
|
小程序 前端开发 数据可视化
微信商城小程序WeiMall
微信商城小程序WeiMall
31 0
|
2月前
|
小程序 前端开发 API
微信小程序 - 调用微信 API 回调函数内拿不到 this 问题(解决方案)
本文讨论了在微信小程序中调用API回调函数时无法获取到`this`上下文的问题,并提供了解决方案。在回调函数中,使用一个变量(如`that`)来保存当前的`this`引用,然后在回调内部使用这个变量来访问当前页面的数据和方法。
|
24天前
|
JSON 小程序 JavaScript
uni-app开发微信小程序的报错[渲染层错误]排查及解决
uni-app开发微信小程序的报错[渲染层错误]排查及解决
363 7
|
23天前
|
小程序 JavaScript 前端开发
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
uni-app开发微信小程序:四大解决方案,轻松应对主包与vendor.js过大打包难题
434 1
下一篇
无影云桌面