小程序多语言

app.js

引用文件

javascript 复制代码
//国际化
import locales from './utils/locales'
import T from './utils/wxapp-i18n'

设置全局变量

javascript 复制代码
App({
    // 全局变量
    globalData: {
        lang: '',
    },
})

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

javascript 复制代码
    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
    },

页面中使用

javascript 复制代码
const app = getApp()
const t = wx.T._

method

如:

javascript 复制代码
    setLang() {
        const lang = app.setLang()

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

如:

javascript 复制代码
    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();
                                    }
                                }
                            });
相关推荐
上海云盾第一敬业销售2 小时前
小程序被爬虫攻击,使用waf能防护吗?
爬虫·小程序
suncentwl3 小时前
做一个答题pk小程序多少钱?
小程序·答题小程序·知识竞赛·答题pk软件
说私域3 小时前
基于开源链动2+1模式AI智能名片S2B2C商城小程序的流量转化策略研究
人工智能·小程序
咸虾米_4 小时前
微信小程序通过uni.chooseLocation打开地图选择位置,相关设置及可能出现的问题
微信小程序·小程序·uniapp开发·小程序地图api
未来之窗软件服务5 小时前
蔬菜批发小程序:生产商的数字化转型利器——仙盟创梦IDE
小程序·自动化·仙盟创梦ide·东方仙盟·蔬菜批发·批发系统
数据皮皮侠9 小时前
最新上市公司业绩说明会文本数据(2017.02-2025.08)
大数据·数据库·人工智能·笔记·物联网·小程序·区块链
不如摸鱼去1 天前
Trae 辅助下的 uni-app 跨端小程序工程化开发实践分享
微信小程序·小程序·uni-app·aigc·ai编程
weixin_lynhgworld1 天前
剧本杀小程序系统开发:构建剧本杀社交新生态
小程序
说私域1 天前
基于定制开发开源 AI 智能名片 S2B2C 商城小程序的热点与人工下发策略研究
人工智能·小程序
weixin_lynhgworld1 天前
陪诊小程序系统开发:让就医不再是一件难事
小程序