針對上一篇文章寫的小程序項目,須要一個相對應的後臺管理系統來對其中一部分資源進行管理,因此衍生了這個後臺管理系統項目。因爲時間緊迫,內容也不是特別多,因而決定使用市面上現成的 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