微信小程式開發:中英文切換能力的簡單實現方法
阿新 • • 發佈:2021-12-10
專案背景,在已經完善的漢語微信小程式基礎上,實現登入時切換中英文介面的功能,這裡只要做前端固定文案部分,介面返回的內容先不考慮。實現程式碼如下:
1、首先在微信小程式的根目錄下建立“language”資料夾,用於儲存語言相關的js檔案。用_en.js代表英語,_zh.js代表漢語。
_en.js程式碼舉例:
const languageMap = { "登入": "Login", "請輸入手機號": "Mobile phone number", "密碼": "Password", "登入說明": "Login instructions" } module.exports= { languageMap: languageMap }
_zh.js程式碼舉例:
const languageMap = { "登入": "登入", "請輸入手機號": "請輸入手機號", "密碼": "密碼", "登入說明": "登入說明" } module.exports = { languageMap: languageMap }
2、在utils資料夾下建立languageUtils.js,目的是寫入操作語言的通用方法。
languageUtils.js:
const app = getApp(); // 獲取當前存的語言選擇結果,如果沒有預設用中文const languageVersion = function () { return wx.getStorageSync('lang') || 'zh'; } //返回翻譯資料 function translate() { return require('../language/_' + languageVersion() + '.js').languageMap; } //切換語言方法 const changeLanguage= function (langType) { if (langType== 1) { wx.setStorageSync('lang', 'en') }else { wx.setStorageSync('lang', 'zh') } } //丟擲方法 module.exports = { languageVersion: languageVersion, changeLanguage: changeLanguage, _lang: translate, }
切換語言就用小程式自己的Picker元件來操作,比較簡單,舉個小栗子:
<picker bindchange="changeLang" value="{{langInex}}" range="{{array}}">
<view class="picker" >
{{array[langInex]}} <i class="sz szxia"></i>
</view>
</picker>
3、正式使用,程式碼如下
需要使用頁面的Js檔案:
//先將js檔案引入頁面 var lang = require('../../utils/languageUtils'); //生命週期函式 onShow: function () { this.initLanguage(); }, //初始化展示語言 initLanguage() { this.setData({ _lang: lang._lang() })
//把頁面的Title值順便修改一下 wx.setNavigationBarTitle({ title: this.data._lang["登入"], }) }
頁面的wxml檔案:
<form bindsubmit="formSubmit">
<view class="wp100">
<input class="loginInput" value="{{mobile}}" name="mobile" focus="{{mobileFocus}}" type="number" maxlength="11"
placeholder="{{_lang['請輸入手機號']}}" />
</view>
<view class="wp100 pt20 pr">
<input class="loginInput wp100" focus="{{pwdFocus}}" name="pwd" type="password" placeholder="{{_lang['密碼']}}" />
</view>
<view class="wp100 pt50">
<button class="loginBtn" formType="submit">{{_lang["登入"]}}</button>
</view>
</form>
這樣就妥啦!!