1.安裝
npm install vue-i18n
2.專案根目錄建立common資料夾
common-config
-i18n
-en.js
-tw.js
-plugins
-vue-i18n.js
3.en.js為例
// en.js
export const locale = {
GENERAL: {
NAV_OPTIONS: ['Home', 'About', 'Contact'],
WELCOME_WORD: 'Welcome to your Vue.js application',
OK: 'ok',
CONTINUE: 'continue',
CANCEL: 'cancel',
GUEST: 'guest',
},
}
4.vue-i18n.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import { locale as en } from '../config/i18n/en'
import { locale as tw } from '../config/i18n/tw'
import { locale as jp } from '../config/i18n/jp'
Vue.use(VueI18n)
let messages = {}
messages = { en, tw ,jp} // 這邊把所有的翻譯文檔JS放進來
export default new VueI18n({
locale: 'jp', // set locale (指定要讀哪一份譯文文檔)
messages, // set locale messages
})
5.在vue檔中使用 {{$t('譯文文檔的欄位名稱')}}
<template>
<div id="app">
<img src="./assets/logo.png">
<h1>{{ $t('GENERAL.WELCOME_WORD') }}</h1>
<router-view/>
</div>
</template>
6.也可以在script中調用 (App.vue),設置語言,不需要再額外import
<script>
export default {
name: 'App',
mounted(){
this.$i18n.locale = "en"
}
}
</script>
更正 :
必須先在 main.js中引入,才可以在其他的component中使用 this.$i18n.locale
// main.js
import Vue from 'vue'
import App from './App'
import router from './router'
import i18n from '../common/plugins/vue-i18n.js' // 這邊引入
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
i18n, // 這邊也引入,跟router,vuex 使用方式是一樣的
components: { App },
template: '<App/>'
})
7.完成