test-in-demo
Version:
## Project setup ``` yarn install ```
89 lines (80 loc) • 2.52 kB
text/typescript
import HelloWorld from "@/components/HelloWorld.vue";
import { createApp, reactive } from "vue";
import { createI18n } from "vue-i18n";
import zh from "@/languages/zh";
import en from "@/languages/en";
const messages = reactive({
en: {
...en,
},
zh: {
...zh,
},
});
const i18 = createI18n({
locale: "zh", //定义默认语言为中文
messages,
});
const loadLang = function (Vue: any, lang: any, locale: any, i18n: any) {
if (locale) {
console.log(1);
locale("en", { ...locale("en"), ...en });
locale("zh", { ...locale("zh"), ...zh });
Vue.config.lang = lang;
} else if (i18n) {
console.log(2, i18n);
i18n.global.setLocaleMessage("en", { ...i18n.global.messages["en"] });
i18n.global.setLocaleMessage("zh", { ...i18n.global.messages["zh"] });
i18n.global.locale = lang;
} else {
console.log(33);
createApp({}).use(i18);
Vue.locale("en", { ...Vue.locale("en"), ...en });
Vue.locale("zh", { ...Vue.locale("zh"), ...zh });
Vue.config.lang = lang;
}
setTimeout(()=>{
console.log(123)
if (locale) {
console.log(1);
locale("en", { ...locale("en"), ...en });
locale("zh", { ...locale("zh"), ...zh });
Vue.config.lang = lang;
} else if (i18n) {
console.log(2, i18n);
i18n.global.setLocaleMessage("en", { ...i18n.global.messages["en"], ...en, ...{ test: "Test" } });
i18n.global.setLocaleMessage("zh", { ...i18n.global.messages["zh"], ...zh, ...{ test: "测试" } });
i18n.global.locale = lang;
} else {
console.log(33);
createApp({}).use(i18);
Vue.locale("en", { ...Vue.locale("en"), ...en });
Vue.locale("zh", { ...Vue.locale("zh"), ...zh });
Vue.config.lang = lang;
}
},2000)
}
const components =[HelloWorld]
// 定义 install 方法,接收 Vue 作为参数。如果使用 use 注册插件,那么所有的组件都会被注册
const install = function (app:any,opts = {
lang: "zh",
locale: null,
i18n: null,
config: {
privateCloud: process.env.VUE_APP_PRIVATE_CLOUD == "true",
privateURL: process.env.VUE_APP_PICTURE_PATH,
},
}): void {
// 遍历注册全局组件
// components.map((component) => Vue.component(component.name, component));
loadLang(app, opts.lang, opts.locale, opts.i18n);
app.component('HelloWorld',HelloWorld)
};
export {
// 以下是具体的组件列表
HelloWorld,
};
export default {
// 导出的对象必须具有 install,才能被 Vue.use() 方法安装
install,
};