uniapp可在有三种方法配置i18n,不同的配置效果不一致
第一种:
在vue文件中配置语言(优先级高)
/*
* 1.如下配置可更改应用部分及框架部分的语言
* (应用部分,即开发者自己的代码里涉及的界面部分;框架部分,即uni-app内置组件和API涉及界面的部分)
* 2.安卓端执行完如下代码即使注释后依然有效,如要重新更换语言,需更改语言后再次执行如下代码更换
*/
uni.setLocale('zh-Hant');
this.$i18n.locale = 'zh-Hant';
第二种
在manifest.json文件中的基础配置下的国际化配置语言(优先级中)
注释:第一种设置会覆盖第二种设置
第三种
在main.js文件中配置new VueI18n时,在locale字段配置语言(优先级低)
/*
*1.如下代码:locale: 'en',将语言固定写为‘en’,此操作仅更改应用部分的语言,
* 框架部分的语言跟随第二种中的设置或第一种设置(如有)
* 2.如下代码:locale: uni.getLocale(),获取已设置的语言为第二种中的设置或第一种设置(如有)
*/
import messages from './locale/index', //引入语言文件在此不做累述
let i18nConfig = {
//locale: uni.getLocale(), // 获取已设置的语言
locale: 'en',
messages
}
// #ifndef VUE3
import Vue from 'vue'
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
const i18n = new VueI18n(i18nConfig)
Vue.config.productionTip = false
App.mpType = 'app'
const app = new Vue({
i18n,
...App
})
app.$mount()
// #endif
写在最后
1.接入i18n,有时会出现获取不到配置的语言或者显示的为非自己设置的语言类型,需重启编译器
2.接入i18n,有时会出现乱码,需在编译器的文件-以指定编译器重新打开-选择类型(Hbuilder X编译器)