小程序多语言
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();
}
}
});