在環(huán)評(píng)備案網(wǎng)站上做登記后會(huì)怎么樣6淘寶直通車
已經(jīng)重新優(yōu)化代碼做成了組件,需要可自取:https://github.com/CrystalCAI11/wechat-language-compoment
所有操作都打包在組件里不需要在額外的地方添加代碼,直接在你需要的頁面里導(dǎo)入組件,再在對(duì)應(yīng)頁面的onLoad()里set文本就行了。
onLoad() {this.setData({content: wx.getStorageSync('content')})}
第一步,找個(gè)地方新建中英文兩個(gè)字典,我是放在utils下面
字典內(nèi)容如下en.js
let en = {text1: 'text1',text2: 'text2',text3:'text3',text4:'text4',
}module.exports = {content: en
}
zh.js
let zh = {text1: '文本1',text2: '文本2',text3:'文本3',text4:'文本4',
}module.exports = {content: zh
}
第二步,把切換語言的兩個(gè)函數(shù)放在app.js里
import zh from '/utils/zh'
import en from '/utils/en'//導(dǎo)入兩個(gè)字典App({globalData: {language: wx.getStorageSync('language')},onLaunch() {this.updateContent()//每次啟動(dòng)小程序都重新獲取所選語言的文本},updateContent() {let lastLanguage = wx.getStorageSync('language')//獲取當(dāng)前語言if (lastLanguage == 'en') {this.globalData.content = en.content//根據(jù)當(dāng)前系統(tǒng)語言獲取對(duì)應(yīng)文本wx.setStorageSync('language', 'en')//把當(dāng)前語言保存在本地} else {//中文為默認(rèn)語言this.globalData.content = zh.contentwx.setStorageSync('language', 'zh')}},changeLanguage() {let language = wx.getStorageSync('language')//獲取當(dāng)前語言if (language == "zh") {wx.setStorageSync('language', 'en')//切換語言并保存在本地} else {wx.setStorageSync('language', 'zh')}this.updateContent()//拿修改后語言獲取對(duì)應(yīng)文本}
})
這里用wx.setStorageSync()方法來保存語言只是為了方便debug,你只用app.globaldata來傳值也是完全沒有問題的。
第三步,把切changeLanguage()方法bindtap在首頁的元素里。
因?yàn)閡pdateContent()方法放在onLaunch函數(shù)里,所以切換語言后我加了一個(gè)wx.reLaunch()重啟首頁,才能獲取新的語言文本。
<!--index.wxml-->
<view class="container"><view bindtap="changeLanguage">EN|中文</view><view><text>{{content.text1}}</text><text>{{content.text2}}</text></view><view bindtap="toPage2">{{content.toPage2}}</view>
</view>
index.js
changeLanguage() {app.changeLanguage()wx.reLaunch({url: '/pages/index/index',})},
第四步,給所有頁面的onShow()里都加上如下代碼,然后別忘了把原本的文本都改成{{content.xxx}}這樣的形式,就搞定啦。
onShow() {this.setData({content: app.globalData.content,})},