首先目录结构是这样的

lib文件夹里面存放四个js文件,ch(存放中文语言)、en(存放英文语言)、index(设置语言)、vue-i18n(vue-i18n插件);同时在main.js中配置就可以使用了;
ch.js
1export default { 2 index: { 3 msg: '信息' 4 } 5}
en.js
1export default { 2 index: { 3 msg: 'information' 4 } 5}
index.js
1// 引入文件 2import LangEn from './en.js' 3import LangChs from './ch.js' 4import Vue from 'vue' 5import VueI18n from './vue-i18n' 6Vue.use(VueI18n) 7// 在本地存储中找用户设备信息,如果没有则获取用户设备信息 8const system_info = uni.getStorageSync('system_info') 9if (!system_info) { 10 // 获取设备信息 11 uni.getSystemInfo({ 12 success: function(res) { 13 // 存到storage里面,后续操作都需要用到 14 uni.setStorageSync('system_info', res); 15 } 16 }) 17} 18// 如果他的设备默认语言是英文的话就用英文,否则用中文; 19const cur_lang = system_info.language == 'en' ? 'en' : 'zh_CN' 20const i18n = new VueI18n({ 21 locale: cur_lang || 'zh_CN', // 默认选择的语言 22 /* 如果需要其他语言,在lib文件夹下创建js文件,引入,并在下面messages导入即可 */ 23 messages: { 24 'en': LangEn, 25 'zh_CN': LangChs 26 } 27}) 28export default i18n 29
main.js
1import Vue from 'vue' 2import App from './App' 3import i18n from './lib/index.js' 4// 将其放到vue的原型上面 5Vue.prototype._i18n = i18n 6 7Vue.config.productionTip = false 8 9App.mpType = 'app' 10 11const app = new Vue({ 12 i18n, 13 ...App 14}) 15app.$mount() 16
示例
1<template> 2 <view class="container"> 3 <text>{{ i18n.msg }}</text> 4 </view> 5</template> 6 7<script> 8 export default { 9 data() { 10 return { 11 12 } 13 }, 14 // 利用计算属性来判断当前是中文还是英文 15 computed: { 16 i18n() { 17 return this.$t('index') 18 } 19 }, 20 } 21</script>