96 lines
2.2 KiB
JavaScript
96 lines
2.2 KiB
JavaScript
import langEn from './en'
|
||
import zhHans from './zh-Hans'
|
||
import uniStarterConfig from '../uni-starter.config.js'
|
||
const {i18n:{enable:i18nEnable} }= uniStarterConfig
|
||
const messages = {
|
||
'en': langEn,
|
||
'zh-Hans': zhHans
|
||
}
|
||
let currentLang
|
||
if(i18nEnable){
|
||
currentLang = uni.getStorageSync('CURRENT_LANG')
|
||
}else{
|
||
currentLang = "zh-Hans"
|
||
}
|
||
// console.log(uni.getStorageSync('CURRENT_LANG'),currentLang);
|
||
if (!currentLang) {
|
||
if (uni.getLocale) {
|
||
console.log('获取应用语言:', uni.getLocale());
|
||
let language = 'en'
|
||
if (uni.getLocale() != 'en') {
|
||
language = 'zh-Hans'
|
||
}
|
||
uni.setStorageSync('CURRENT_LANG', language)
|
||
currentLang = language
|
||
} else {
|
||
uni.getSystemInfo({
|
||
success: function(res) {
|
||
console.log('获取设备信息:', res);
|
||
let language = 'zh-Hans'
|
||
if (res.language == 'en') {
|
||
language = 'en'
|
||
}
|
||
uni.setStorageSync('CURRENT_LANG', language)
|
||
currentLang = language
|
||
},
|
||
fail: (err) => {
|
||
console.error(err)
|
||
}
|
||
})
|
||
}
|
||
}
|
||
let i18nConfig = {
|
||
locale: currentLang, // set locale
|
||
messages // set locale messages
|
||
}
|
||
|
||
// #ifdef VUE2
|
||
import Vue from 'vue'
|
||
import VueI18n from 'vue-i18n'
|
||
Vue.use(VueI18n)
|
||
const i18n = new VueI18n(i18nConfig)
|
||
// #endif
|
||
|
||
// #ifdef VUE3
|
||
import {
|
||
createI18n
|
||
} from 'vue-i18n'
|
||
const i18n = createI18n(i18nConfig)
|
||
// #endif
|
||
|
||
export default i18n
|
||
|
||
|
||
if(i18nEnable){
|
||
console.log(`
|
||
你已开启多语言国际化,将自动根据语言获取【lang/en.js】或【lang/en.js】文件中配置的tabbar的值,
|
||
覆盖你在pages.json中的tabbar的值
|
||
如果你不需要多语言国际化,请打开配置文件uni-starter.config.js找到 -> i18n -> enable把值设置为false
|
||
`);
|
||
let initLanguageAfter = () => {
|
||
function $i18n(e){
|
||
// #ifdef VUE3
|
||
return i18n.global.messages[i18n.global.locale][e]
|
||
// #endif
|
||
return i18n.messages[i18n.locale][e]
|
||
}
|
||
setTimeout(function(){
|
||
//底部tabbar更新
|
||
$i18n('tabbar').split(',').forEach((text, index) => {
|
||
// console.log(text);
|
||
uni.setTabBarItem({
|
||
index,
|
||
text,
|
||
complete: e => {
|
||
// console.log("e: " + JSON.stringify(e));
|
||
}
|
||
})
|
||
})
|
||
},1)
|
||
}
|
||
initLanguageAfter()
|
||
uni.$on('changeLanguage', e => {
|
||
console.log('changeLanguage', e);
|
||
initLanguageAfter(e)
|
||
})
|
||
} |