Skip to content

Commit e7bb0c3

Browse files
author
Colin Yang
committed
Adjusted tslint config & added vue-i18n
1 parent 13c2486 commit e7bb0c3

File tree

11 files changed

+224
-10
lines changed

11 files changed

+224
-10
lines changed

.env

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
VUE_APP_I18N_LOCALE=en
2+
VUE_APP_I18N_FALLBACK_LOCALE=en

package-lock.json

Lines changed: 165 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,23 @@
55
"scripts": {
66
"serve": "vue-cli-service serve",
77
"build": "vue-cli-service build",
8-
"lint": "vue-cli-service lint"
8+
"lint": "vue-cli-service lint",
9+
"i18n:report": "vue-cli-service i18n:report --src './src/**/*.?(js|vue)' --locales './src/locales/**/*.json'"
910
},
1011
"dependencies": {
1112
"core-js": "^2.6.5",
1213
"vue": "^2.6.10",
1314
"vue-class-component": "^7.0.2",
15+
"vue-i18n": "^8.0.0",
1416
"vue-property-decorator": "^8.1.0"
1517
},
1618
"devDependencies": {
19+
"@types/webpack": "^4.4.0",
1720
"@vue/cli-plugin-babel": "^3.8.0",
1821
"@vue/cli-plugin-typescript": "^3.8.0",
1922
"@vue/cli-service": "^3.8.0",
2023
"typescript": "^3.4.3",
24+
"vue-cli-plugin-i18n": "^0.6.0",
2125
"vue-template-compiler": "^2.6.10"
2226
},
2327
"postcss": {

src/i18n.ts

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
import Vue from 'vue'
2+
import VueI18n, { LocaleMessages } from 'vue-i18n'
3+
4+
Vue.use(VueI18n)
5+
6+
function loadLocaleMessages (): LocaleMessages {
7+
const locales = require.context('./locales', true, /[A-Za-z0-9-_,\s]+\.json$/i)
8+
const messages: LocaleMessages = {}
9+
locales.keys().forEach(key => {
10+
const matched = key.match(/([A-Za-z0-9-_]+)\./i)
11+
if (matched && matched.length > 1) {
12+
const locale = matched[1]
13+
messages[locale] = locales(key)
14+
}
15+
})
16+
return messages
17+
}
18+
19+
export default new VueI18n({
20+
locale: process.env.VUE_APP_I18N_LOCALE || 'en',
21+
fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',
22+
messages: loadLocaleMessages()
23+
})

src/locales/en.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"message": "hello i18n !!"
3+
}

src/main.ts

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
1-
import Vue from 'vue';
2-
import App from './App.vue';
1+
import Vue from 'vue'
2+
import App from './App.vue'
3+
import i18n from './i18n'
34

4-
Vue.config.productionTip = false;
5+
Vue.config.productionTip = false
56

67
new Vue({
8+
i18n,
79
render: (h) => h(App),
8-
}).$mount('#app');
10+
}).$mount('#app')

src/shims-tsx.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import Vue, { VNode } from 'vue';
1+
import Vue, { VNode } from 'vue'
22

33
declare global {
44
namespace JSX {
@@ -7,7 +7,7 @@ declare global {
77
// tslint:disable no-empty-interface
88
interface ElementClass extends Vue {}
99
interface IntrinsicElements {
10-
[elem: string]: any;
10+
[elem: string]: any
1111
}
1212
}
1313
}

src/shims-vue.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
declare module '*.vue' {
2-
import Vue from 'vue';
3-
export default Vue;
2+
import Vue from 'vue'
3+
export default Vue
44
}

tsconfig.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
"sourceMap": true,
1313
"baseUrl": ".",
1414
"types": [
15+
"webpack",
1516
"webpack-env"
1617
],
1718
"paths": {
@@ -36,4 +37,4 @@
3637
"exclude": [
3738
"node_modules"
3839
]
39-
}
40+
}

tslint.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@
99
]
1010
},
1111
"rules": {
12+
"space-before-function-paren": false,
13+
"arrow-parens": false,
14+
"trailing-comma": false,
15+
"semicolon": false,
1216
"quotemark": [true, "single"],
1317
"indent": [true, "spaces", 2],
1418
"interface-name": false,

vue.config.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
module.exports = {
2+
pluginOptions: {
3+
i18n: {
4+
locale: 'en',
5+
fallbackLocale: 'en',
6+
localeDir: 'locales',
7+
enableInSFC: true
8+
}
9+
}
10+
}

0 commit comments

Comments
 (0)