小程序多语言

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();
                                    }
                                }
                            });
相关推荐
吴声子夜歌9 天前
小程序——布局示例
小程序
luffy54599 天前
微信小程序页面使用类似filter函数的wxs语法
微信小程序·小程序
Slow菜鸟9 天前
微信小程序开发(二)目录结构完全指南
微信小程序·小程序
小小王app小程序开发9 天前
海外盲盒小程序抽赏玩法分析(附跨境技术落地要点)
小程序
一叶星殇9 天前
微信小程序请求拦截器踩坑:避免重复刷新 token
微信小程序·小程序
hello kitty w9 天前
4. 基本语法
小程序
CHU7290359 天前
探索淘宝扭蛋机小程序:创意互动与趣味体验的融合
小程序
头发还在的女程序员9 天前
【免费下载】企业能源管理系统
小程序·策略模式·能源管理
吴声子夜歌9 天前
小程序——样式与布局
小程序
hello kitty w10 天前
3.小程序方法的封装
javascript·小程序