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

简介: 公司中开发的项目需要使用到双语这个功能。上一个版本开发的时候,使用的是多语言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

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

目录
相关文章
|
14天前
|
缓存 小程序 前端开发
商城/点餐/家政类小程序源码合集_微信抖音小程序源码开发从入门到精通实战
本文系统讲解如何利用现有源码快速开发商城、点餐、家政类微信/抖音小程序,涵盖环境搭建、核心功能实现、多平台部署与优化,提供完整技术方案。实战导向,助力开发者高效入门与落地。
|
16天前
|
存储 小程序 Java
热门小程序源码合集:微信抖音小程序源码支持PHP/Java/uni-app完整项目实践指南
小程序已成为企业获客与开发者创业的重要载体。本文详解PHP、Java、uni-app三大技术栈在电商、工具、服务类小程序中的源码应用,提供从开发到部署的全流程指南,并分享选型避坑与商业化落地策略,助力开发者高效构建稳定可扩展项目。
|
5月前
|
小程序 前端开发 Android开发
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
1069 29
小程序微信分享功能如何开发?开放平台已绑定仍不能使用的问题?-优雅草卓伊凡
|
5月前
|
JSON 监控 小程序
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
293 14
微信百度字节小程序包过大解决方案(实战经验总结)-优雅草卓伊凡|果果|小无
|
7月前
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
396 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
7月前
|
存储 移动开发 小程序
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
基于开源技术栈构建的校园圈子系统小程序,整合社交与生活服务功能,涵盖兴趣圈子、私信聊天、资料共享、二手交易、兼职跑腿等六大核心模块。通过多端账号同步(微信公众号/小程序/H5),实现数据实时交互,满足学生群体的多元化需求。项目精准锚定校园市场,以“社交+服务”双轮驱动,提供一站式解决方案,支持快速部署与多校区运营,同时具备广告、佣金、会员等多元变现能力,是打造校园生态的理想工具。
608 2
校园圈子系统小程序(圈子论坛、私信聊天、资料共享、二手交易、兼职,跑腿)开源码开发/微信公众号、小程序、H5多端账号同步/搭建多城市的综合社交生活平台
|
7月前
|
小程序
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
457 1
【04】微信支付商户申请下户到配置完整流程-微信开放平台移动APP应用通过-微信商户继续申请-微信开户函-视频声明-以及对公打款验证-申请+配置完整流程-优雅草卓伊凡
|
6月前
|
人工智能 小程序 NoSQL
【一步步开发AI运动小程序】二十一、如何将AI运动项目配置持久化到后端?
本文介绍基于云智「Ai运动识别引擎」的运动配置持久化方案,旨在优化小程序或Uni APP中AI运动识别能力。通过将运动检测参数(如`Key`、`Name`、`TickMode`、`rules`或`samples`)持久化到后端,可避免因频繁调整运动参数而重新发布应用,提升用户体验。持久化数据结构支持规则和姿态样本存储,适用于关系数据库、文件或文档数据库(如MongoDB)。此外,云智还提供运动自动适配工具及「AI乐运动」产品,助力快速实现AI体育、全民健身等场景。
|
8月前
|
小程序
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
208 2
【01】微信支付商户申请下户到配置完整流程-微信商户申请-资料准备以及提交-微信商户密钥申请-申请+配置完整流程-优雅草卓伊凡
|
8月前
|
小程序 数据安全/隐私保护 开发者
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
【02】微信支付商户申请下户到配置完整流程-微信开放平台申请APP应用-微信商户支付绑定appid-公众号和小程序分别申请appid-申请+配置完整流程-优雅草卓伊凡
421 3

热门文章

最新文章