<template>
|
|
<view class="change-language">
|
|
<uv-picker ref="picker"
|
|
:columns="languageList"
|
|
keyName="name"
|
|
:itemHeight="70"
|
|
@confirm="confirm"></uv-picker>
|
|
</view>
|
|
</template>
|
|
|
|
<script>
|
|
export default {
|
|
props : {
|
|
url : {
|
|
default : '/pages/index/index',
|
|
type : String,
|
|
}
|
|
},
|
|
data(){
|
|
return {
|
|
languageList: [
|
|
[
|
|
{
|
|
name:'简体中文',
|
|
key : "zh-Hans"
|
|
},
|
|
{
|
|
name:'English',
|
|
key : "en"
|
|
},
|
|
]
|
|
],
|
|
}
|
|
},
|
|
methods : {
|
|
open() {
|
|
this.$refs.picker.open();
|
|
},
|
|
confirm(e) {
|
|
this.changeLanguage(e.value.pop())
|
|
},
|
|
//修改当前语言
|
|
changeLanguage(res){
|
|
|
|
//#ifdef H5
|
|
this.$router.go(0); //刷新页面,不然validate.js不好国际化
|
|
//#endif
|
|
|
|
//#ifdef APP-PLUS
|
|
uni.navigateTo({
|
|
url: this.url // 要刷新的页面路径
|
|
});
|
|
//#endif
|
|
|
|
if(!res.key){
|
|
return
|
|
}
|
|
|
|
uni.setStorage({
|
|
key: 'language',
|
|
data: res.key
|
|
})
|
|
|
|
this.$i18n.locale = res.key
|
|
uni.setLocale(res.key) //切换语言环境必须在this.$i18n.locale之后,否则app端会有意想不到的bug
|
|
|
|
uni.$responseMessage = this.$t('responseMessage')
|
|
}
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.change-language{
|
|
position: relative;
|
|
z-index: 999999999;
|
|
}
|
|
</style>
|