[笔记]vue-cli i18n 多语系应用练习

参考文章: https://medium.com/easons-murmuring/%E5%9C%A8-vue-cli-%E4%B8%AD%E4%BD%BF%E7%94%A8-i18n-%E5%AF%A6%E4%BD%9C%E5%A4%9A%E5%9C%8B%E8%AA%9E%E7%B3%BB-720ec360783e

1.安装

npm install vue-i18n

2.专案根目录建立common资料夹

    common-config
               -i18n
                  -en.js
                  -tw.js
          -plugins
              -vue-i18n.js

https://ithelp.ithome.com.tw/upload/images/20210303/20120722qRELhtmw7i.png

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.完成
https://ithelp.ithome.com.tw/upload/images/20210303/20120722WBjHSneGjg.png


<<:  [Matplotlib] Flatten()

>>:  Leet Code 1. Two Sum

新新新手阅读 Angular 文件 - Component - ngOnDestroy(2) - Day26

本文内容 接续昨天 ngOnDestroy 还没有记录完的内容。 ngOnDestroy 可能没被启...

Day4.Cortex-M 系列 基础探讨

Overview ARM Architecture 从第七代开始,分为三种配置(Profile) A...

DAY5: Node 的内部机制(一)

今日主要会说明Node的内部运作,其实前面文章有提到Node其中是包含着JavaScript的元素。...

AE极光制作1-Day7

终於来到第二个练习了! 练习范例:https://www.sixvfx.com/northern_l...

JS 标签样板字面值 DAY76

在我们使用 标签样板字面值 可解决 XSS攻击 这里我们先来介绍简单的 标签样板字面值 依据在样板字...