小程序多语言

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();
                                    }
                                }
                            });
相关推荐
m0_587383001 天前
折扣卡CPS系统源码的技术架构与实战开发指南
人工智能·小程序·数据挖掘·系统架构·需求分析
2501_915106321 天前
苹果App Store上架费用及流程全面解析
android·ios·小程序·https·uni-app·iphone·webview
T01156181 天前
全栈项目实战手记|艺培场馆课时预约小程序全项目开发历程完整复盘总结
运维·服务器·小程序
lhldsg1 天前
多商户团购系统源码:技术架构选型与二次开发实战指南
java·小程序·架构
2601_949950631 天前
一套小程序,解决资料整理、在线刷题和错题复盘
人工智能·小程序·刷题·练习·小程序推荐
白远山2 天前
智慧场馆解决方案小程序系统开发实战与架构设计指南
java·开发语言·小程序·架构
Rooting++2 天前
小程序{{ }}和vue{{ }}语法的区别
前端·vue.js·小程序
博、、2 天前
折扣卡CPS系统源码实战开发指南:从架构设计到落地部署全解析
小程序·需求分析
lhldsg3 天前
折扣卡CPS小程序定制全流程实战指南:从需求分析到上线部署
java·前端·小程序
suliqiang3 天前
【前端技术】 Web 前端技术36年 演进全景图
信息可视化·微信小程序·小程序·前端框架·uni-app·人机交互·xcode