vue add i18n

Former-commit-id: 93a57ab73023e37e7bd418f4221db12507653d74 [formerly 93a57ab73023e37e7bd418f4221db12507653d74 [formerly 93a57ab73023e37e7bd418f4221db12507653d74 [formerly 93a57ab73023e37e7bd418f4221db12507653d74 [formerly 331c42f3cf9c23bf114ea692b3aa23662d0963a5 [formerly a5f9f2449758fcc55395ccba72fb785b1764b593]]]]]
Former-commit-id: 2084d2f5552ba9ed91ce295cf7bc04e4d2a64e49
Former-commit-id: eb82e859e47e2ec91f48023c705189e538b986e8
Former-commit-id: 4f1713142447f154592c4b74fb5e167df4287be1 [formerly 6daa81e0511c54daab83f96ff69c37b0cd55cc55]
Former-commit-id: 90771d09b3356812c438fa9cb8fa713c7fe86762
Former-commit-id: 58b881a85f8baab6e6ef578575953de17bff0d40
Former-commit-id: aef4bbe6556d4bc4b6eb561c28148dd8b4395cbf
Former-commit-id: b12df0763e624fb55c9832ce4c7ec93ec881b19b
Former-commit-id: 06c2000def6d103aff231bd7a53a02d9ace87ca2
This commit is contained in:
liyang 2019-05-21 23:40:04 +08:00
parent cb65b56ce9
commit 810407cde0
7 changed files with 57 additions and 12 deletions

9
.env
View File

@ -1,10 +1,5 @@
# 所有环境默认
# 页面 title 前缀
VUE_APP_TITLE=D2Admin VUE_APP_TITLE=D2Admin
# 网络请求公用地址
VUE_APP_API=/api/ VUE_APP_API=/api/
# 仓库地址
VUE_APP_REPO=https://github.com/d2-projects/d2-admin VUE_APP_REPO=https://github.com/d2-projects/d2-admin
VUE_APP_I18N_LOCALE=en
VUE_APP_I18N_FALLBACK_LOCALE=en

View File

@ -3,13 +3,14 @@
"version": "1.7.0", "version": "1.7.0",
"scripts": { "scripts": {
"serve": "vue-cli-service serve --open", "serve": "vue-cli-service serve --open",
"start": "npm run serve",
"dev": "npm run serve",
"build": "vue-cli-service build", "build": "vue-cli-service build",
"lint": "vue-cli-service lint --fix",
"build:netlify": "vue-cli-service build --mode netlify",
"build:nomock": "vue-cli-service build --mode nomock", "build:nomock": "vue-cli-service build --mode nomock",
"build:travis": "vue-cli-service build --mode travis", "build:travis": "vue-cli-service build --mode travis",
"build:netlify": "vue-cli-service build --mode netlify", "dev": "npm run serve",
"lint": "vue-cli-service lint --fix", "i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'",
"start": "npm run serve",
"test:unit": "vue-cli-service test:unit" "test:unit": "vue-cli-service test:unit"
}, },
"dependencies": { "dependencies": {
@ -45,6 +46,7 @@
"v-contextmenu": "^2.8.0", "v-contextmenu": "^2.8.0",
"vue": "^2.6.10", "vue": "^2.6.10",
"vue-grid-layout": "^2.3.4", "vue-grid-layout": "^2.3.4",
"vue-i18n": "^8.0.0",
"vue-json-tree-view": "^2.1.4", "vue-json-tree-view": "^2.1.4",
"vue-router": "^3.0.3", "vue-router": "^3.0.3",
"vue-splitpane": "^1.0.4", "vue-splitpane": "^1.0.4",
@ -68,6 +70,7 @@
"svg-sprite-loader": "^4.1.3", "svg-sprite-loader": "^4.1.3",
"text-loader": "0.0.1", "text-loader": "0.0.1",
"uglifyjs-webpack-plugin": "^2.1.2", "uglifyjs-webpack-plugin": "^2.1.2",
"vue-cli-plugin-i18n": "^0.6.0",
"vue-template-compiler": "^2.5.21" "vue-template-compiler": "^2.5.21"
} }
} }

23
src/i18n.js Normal file
View File

@ -0,0 +1,23 @@
import Vue from 'vue'
import VueI18n from 'vue-i18n'
Vue.use(VueI18n)
function loadLocaleMessages () {
const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.json$/i)
const messages = {}
locales.keys().forEach(key => {
const matched = key.match(/([A-Za-z0-9-_]+)\./i)
if (matched && matched.length > 1) {
const locale = matched[1]
messages[locale] = locales(key)
}
})
return messages
}
export default new VueI18n({
locale: process.env.VUE_APP_I18N_LOCALE || 'en',
fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',
messages: loadLocaleMessages()
})

3
src/locales/en.json Normal file
View File

@ -0,0 +1,3 @@
{
"message": "hello i18n !!"
}

View File

@ -31,6 +31,7 @@ import d2VueFiltersDayjs from '@d2-admin/filters-dayjs'
import router from './router' import router from './router'
import { menuHeader, menuAside } from '@/menu' import { menuHeader, menuAside } from '@/menu'
import { frameInRoutes } from '@/router/routes' import { frameInRoutes } from '@/router/routes'
import i18n from './i18n'
// 核心插件 // 核心插件
Vue.use(d2Admin) Vue.use(d2Admin)
@ -52,6 +53,7 @@ new Vue({
router, router,
store, store,
render: h => h(App), render: h => h(App),
created () { created () {
// 处理路由 得到每一级的路由设置 // 处理路由 得到每一级的路由设置
this.$store.commit('d2admin/page/init', frameInRoutes) this.$store.commit('d2admin/page/init', frameInRoutes)
@ -60,6 +62,7 @@ new Vue({
// 初始化菜单搜索功能 // 初始化菜单搜索功能
this.$store.commit('d2admin/search/init', menuHeader) this.$store.commit('d2admin/search/init', menuHeader)
}, },
mounted () { mounted () {
// 展示系统信息 // 展示系统信息
this.$store.commit('d2admin/releases/versionShow') this.$store.commit('d2admin/releases/versionShow')
@ -70,6 +73,9 @@ new Vue({
// 初始化全屏监听 // 初始化全屏监听
this.$store.dispatch('d2admin/fullscreen/listen') this.$store.dispatch('d2admin/fullscreen/listen')
}, },
i18n,
watch: { watch: {
// 检测路由变化切换侧边栏内容 // 检测路由变化切换侧边栏内容
'$route.matched': { '$route.matched': {

View File

@ -12,11 +12,15 @@ process.env.VUE_APP_BUILD_TIME = require('dayjs')().format('YYYY-M-D HH:mm:ss')
let publicPath = '/' let publicPath = '/'
module.exports = { module.exports = {
publicPath, // 根据你的实际情况更改这里 // 根据你的实际情况更改这里
publicPath,
lintOnSave: true, lintOnSave: true,
devServer: { devServer: {
publicPath // 和 publicPath 保持一致 publicPath // 和 publicPath 保持一致
}, },
css: { css: {
loaderOptions: { loaderOptions: {
// 设置 scss 公用变量文件 // 设置 scss 公用变量文件
@ -25,6 +29,7 @@ module.exports = {
} }
} }
}, },
// 默认设置: https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-service/lib/config/base.js // 默认设置: https://github.com/vuejs/vue-cli/tree/dev/packages/%40vue/cli-service/lib/config/base.js
chainWebpack: config => { chainWebpack: config => {
/** /**
@ -105,5 +110,14 @@ module.exports = {
.add('@/mock') .add('@/mock')
.end() .end()
} }
},
pluginOptions: {
i18n: {
locale: 'en',
fallbackLocale: 'en',
localeDir: 'locales',
enableInSFC: false
}
} }
} }

1
yarn.lock.REMOVED.git-id Normal file
View File

@ -0,0 +1 @@
1de11ec632cee64f600400ccff46f90fd4761a05