在vue 使用i18n

许多项目需要做语言国际化,那就可以用到i18n了,在vue 中用到的插件是vue-i18n

1.安装依赖包

npm install vue-i18n 

或者

yarn add vue-i18n

2.创建语言包、i18n实例对象,并在main.js中引入:

|-- main.js 导入文件
|-- i18n
  |-- index.js 创建实例对象
  |-- languages 各种语言包
    |-- en_us.json  英文包
    |-- id_us.json  中文包

i18n/index.js,创建i18n实例对象,代码如下:

import Vue from 'vue'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)
 
// 注册i18n实例并引入语言文件
const i18n = new VueI18n({
  locale: 'zh',
  messages: {
    'zh': require('./languages/zh_cn'),
    'en': require('./languages/en_us')
  }
})

export default i18n

接下来我们就需要新建两个js文件(或者josn文件)作为语言包。
其中zh.js中文包中代码为i18n/languages/zh:

module.exports = {
  message: {
    login: '欢迎登录',
    lang:{
      zh: '中文',
      en: '英文'
    }
  }
}

其中en.js英文包中代码为i18n/languages/en:

module.exports = {
    message: {
      login: 'Welcome To Login',
      lang: {
        zh: 'Chinese',
        en: 'English'
      }
    }
   }

将i18n实例对象挂载到Vue实例之上:main.js

import Vue from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";

import "@/assets/plugins/element-ui";
import i18n from '@/assets/plugins/i18n';

new Vue({
    i18n,  // 挂载到Vue实例之上
    router,
    store,
    render: (h) => h(App),
}).$mount("#app");

3.实现中英文切换按钮,代码如下:

<template>
  <div>
    <el-dropdown
      class="languageBox"
      trigger="click"
      placement="bottom-end"
      @command="changeLanguage"
    >
      <el-button class="languageBtn">
        <div class="languageBtnBox">
          <img v-lazy="currentLanguage.icon" class="languageImg" />
          <span>{{ currentLanguage.label }}</span>
          <i class="el-icon-arrow-down el-icon--right"></i>
        </div>
      </el-button>
      <el-dropdown-menu slot="dropdown">
        <el-dropdown-item
          v-for="item in languages"
          :key="item.index"
          :command="item.value"
        >
          <div class="languageItem">
            <img :src="item.icon" alt="" />
            <span>{{ item.label }}</span>
          </div>
        </el-dropdown-item>
      </el-dropdown-menu>
    </el-dropdown>
  </div>
</template>
<script>
import Vue from "vue";
export default {
    data() {
        return {
            language: "zh",
        };
    },
computed: {
    currentLanguage() {
      return this.languages.find((item) => {
        return item.value === this.$i18n.locale;
      });
    },
  },
  mounted() {
    this.$i18n.locale = this.$store.state.language;
  },
    methods:{
 changeLanguage(locale) {
      this.$i18n.locale = locale
 }
    },
};
</script>
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,463评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,868评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,213评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,666评论 1 290
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,759评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,725评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,716评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,484评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,928评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,233评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,393评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,073评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,718评论 3 324
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,308评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,538评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,338评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,260评论 2 352

推荐阅读更多精彩内容

  • 前言 在之前的大数据可视化项目和最近的后台管理项目,都用到了国际化,所以在这里记录下来,以方便后续的维护使用。 S...
    郝艳峰Vip阅读 605评论 0 0
  • 中英文切换功能,笔者是通过i8n实现的。本文讲述了各个场景下的中英文如何替换,包括表单验证,提示信息,各中组件等。...
    Renaissance_阅读 2,692评论 4 4
  • 一、前言 项目中需要实现多语言切换,这时候接触到国际化,前端框架无数,其中几种热门的框架都有相匹配的国际化插件工具...
    头发飘逸阅读 1,348评论 2 32
  • vue中如何使用i18n实现国际化 一、前言 项目中需要实现多语言切换,这时候接触到国际化,前端框架无数,其中几种...
    张先觉阅读 1,402评论 1 12
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,535评论 28 53