当前位置: 首页 > news >正文

小程序多语言

app.js

引用文件

//国际化
import locales from './utils/locales'
import T from './utils/wxapp-i18n'

设置全局变量

App({
    // 全局变量
    globalData: {
        lang: '',
    },
})

设置全局函数,每个多语言页面都要调用

    setLang() {
        T.registerLocale(locales)

        // 获取系统设置的语言格式
        let resultLang = ''
        var value = this.globalData.lang
        console.log('::::value', value);

        // en zh zh_TW
        if (value) {
            T.setLocale(value)
            resultLang = value
        } else {
            // 如果没有储存的值
            // 使用系统语言
            wx.getSystemInfo({
                success: function (res) {
                    // 比如 "zh_CN" 表示简体中文,"zh_TW" 表示繁体中文,"en_US" 表示美式英语等

                    const map = {
                        zh_CN: 'zh',
                        zh_TW: 'zh_TW',
                        zh_HK: 'zh_TW',
                        en: 'en_US',
                    }

                    T.setLocale(map[res.language] || 'en_US') //默认显示英文
                    // wx.setStorageSync('lang', map[res.language] || 'zh')
                    resultLang = map[res.language] || 'en_US'
                },
                fail: function (err) {
                    console.error("获取系统信息失败", err);

                    // 默认中文
                    T.setLocale('en_US') //默认显示英文
                    // wx.setStorageSync('lang', 'zh')
                    resultLang = 'en_US'
                }
            });
        }
        wx.T = T

        return resultLang
    },

页面中使用

const app = getApp()
const t = wx.T._

method
如:

    setLang() {
        const lang = app.setLang()

        this.setData({
            lang,
            playing: t('Playing'),
            WeChatAuthorization: t('WeChatAuthorization'),
            Allow: t('Allow'),
            Reject: t('Reject'),
        })
    },

如:

    const titleMapLang = {
                                'zh': '提示',
                                'zh_TW': '提示',
                                'en_US': 'Prompt'
                            };
                            const contentMapLang = {
                                'zh': '需要获取摄像头权限才能使用此功能',
                                'zh_TW': '需要獲取攝像頭權限才能使用此功能',
                                'en_US': 'Camera permission is required to use this feature'
                            };
                            const confirmTextMapLang = {
                                'zh': '去设置',
                                'zh_TW': '去設置',
                                'en_US': 'Settings'
                            };

                            // 用户没有授权,可以引导用户去设置页面开启权限
                            wx.showModal({
                                title: titleMapLang[_this.data.lang],
                                content: contentMapLang[_this.data.lang],
                                showCancel: false,
                                confirmText: confirmTextMapLang[_this.data.lang],
                                success: function (res) {
                                    if (res.confirm) {
                                        wx.openSetting();
                                    }
                                }
                            });

相关文章:

  • 机器学习之数据收集
  • 数据库——MySQL安装
  • Android:蓝牙设置配套设备配对
  • 2025年2月-3月后端go开发找工作感悟
  • Debezium介绍
  • DeepSORT 目标追踪算法详解
  • 区块链开发技术公司:引领数字经济的创新力量
  • Collectors.toMap / list 转 map
  • Qt桌面客户端跨平台开发实例
  • Docker搭建Testlink教程
  • 百度SEO和必应SEO优化方法
  • Java安全-类的动态加载
  • Agent系列——agent领域的mcp协议讲解
  • 如何开发一个你自己的springboot-starter
  • 自动化测试中使用的设计模式
  • 设计模式之单例模式(Singleton Pattern)
  • Kafka--常见问题
  • python-selenium 爬虫 由易到难
  • Linux实时内核 - 启用 RCU(Read-Copy Update)机制的性能测试功能
  • Excel中如何自动计算累计销量,当具体销量为空时公式自动不计算
  • 上海市委常委会会议暨市生态文明建设领导小组会议研究基层减负、生态环保等事项
  • 方正证券总裁何亚刚到龄退休,54岁副总裁姜志军接棒
  • 海关总署统计分析司司长:4月进出口增速较一季度加快4.3个百分点
  • 习近平同瑞典国王卡尔十六世·古斯塔夫就中瑞建交75周年互致贺电
  • 江苏省人社厅党组书记、厅长王斌接受审查调查
  • 法治日报:商品明细是隐私,外卖员快递员不应知晓