针对上一篇文章写的小程序项目,须要一个相对应的后台管理系统来对其中一部分资源进行管理,因此衍生了这个后台管理系统项目。因为时间紧迫,内容也不是特别多,因而决定使用市面上现成的 vue 后台项目模板。用的比较多的是 vue-element-admin,一方面想试试新一点的技术 vue3.0,另外一方面是由于业务线其余项目都用的 react + antd,我的也比较喜欢 antd ,因此想试试 antd 的 vue UI 框架,因此找到了这个模版:vue-admin-beautifulvue
该项目主要涉及的技术
![]()
4.项目结构react
Vue 3.0 不能直接像 2.0 那样直接使用 i18n,3.0 的 i18n 不是写在 main.js
里,而是使用一种 Provide 与 Inject 的方式。在网上找了一堆文章,大部分都仍是 2.0 的用法,最后发现两篇帮助很大的文章:git
参考文章,建立国际化插件文件 i18nPlugins.js,建立 i18n 文件夹,用于存放项目所须要的各个语言的 js 文件,我的习惯把各个页面的多语言文案和页面文件放在一块儿,因此 src 下的 i18n 文件夹中的 lang 存放的是一些全局可共用的资源,最终多语言相关目录结构以下红框所示:github
如何使用?
首先要在 App.vue 文件中使用provideI18n
函数正确的配置初始化插件。vue-cli
// 导入所须要的资源 import { provideI18n } from '@/i18nPlugin' import langEn from './i18n/en' import langZh from './i18n/zh' import langTh from './i18n/th' // 初始化 setup() { let langObj = localStorage.getItem('language') let lang = langObj ? JSON.parse(langObj).language : '' const locale = lang || navigator.language let langUsed = '' if (locale.indexOf('zh') > -1) { langUsed = 'zh' } else if (locale.indexOf('en') > -1) { langUsed = 'en' } else if (locale.indexOf('th') > -1) { langUsed = 'th' } // 核心代码,langUsed 视项目状况而定 provideI18n({ locale: langUsed, messages: { en: langEn, zh: langZh, th: langTh, }, }) },
最后,在咱们要使用该插件的任何组件中,都必须使用该useI18n
函数中的setup
函数将其注入。
例如:小程序
!!!须要注意的点
antd-vue 的 table 组件,要想表头内容也实现多语言,须要把 columns 写在 computed 属性里面,如图:segmentfault
未完待续......api