4. vue i18n国际化 切换中英文

最近在做的一个网站需要加上一个英文版(看过之前文章的会知道),点击按钮切换中文/英文,在这里记录下实现过程。

需求:网站实现中英文切换
项目环境:vue + vue-cli + element-ui

1、首先 npm 安装 i18n 国际化插件:npm install vue-i18n --save;

2、在 src 下新建一个目录 i18n(目录名随意),新建i18n.js文件,再建一个子文件目录 langs,里面包含 cn/en/index.js文件,目录结构如下:


image.png

3、把安装好的 i18n 引入 main.js 文件中,并且在 app 根组件中注入;

import i18n from './i18n/i18n'
window.app = new Vue({
  el: '#app',
  router,
  store,
  i18n,  //注入根目录下,千万不能忘记
  components: { App },
  template: '<App/>'
})

4、这里需要用的存储store,在src下新建store, index.js文件

import Vue from 'vue'
import Vuex from 'vuex'  //引入vuex之前,先npm安装  npm install vuex  --save

Vue.use(Vuex)

export default new Vuex.Store({
  state: {
    lang: localStorage.lang || 'cn'
  },
  mutations: {
    switchLang (state, lang) {
      state.lang = lang
      window.app.$i18n.locale = lang
      localStorage.setItem('lang', lang)
    }
  },
  actions: {}
})

5、开始在 i18n.js 中编写代码;

import Vue from 'vue'
import locale from 'element-ui/lib/locale'   // element-ui 国际化
import VueI18n from 'vue-i18n'
import messages from './langs'  // 这里是调用 langs/index.js

Vue.use(VueI18n)

const i18n = new VueI18n({
  locale: localStorage.lang || 'cn',   // 语言标识
  messages
})
locale.i18n((key, value) => i18n.t(key, value))  // 重点:为了实现element插件的多语言切换

export default i18n

6、langs目录下的 index.js文件;

import en from './en'
import cn from './cn'
export default {
  cn,
  en
}

7、langs目录下的 en.js 文件;

import enLocale from 'element-ui/lib/locale/lang/en'  // element-ui 国际化 英文

// 这里把翻译好的英文以对象的格式包裹起来,建议以模块来划分,这样在调用起来方便效率,举例说明:导航菜单栏
const en = {
  navbar: {  // 取导航的英文来包裹其内的子对象
    'home': 'Home',  //前面的第一个英文home为页面将调用的
    'Product description': 'Product description',
    'Login': 'Login',
    'Register': 'Register',
    'Simplified Chinese': 'Simplified Chinese'
  },
    ...enLocale
}
 export default en    // vuex方法,映射到英文上
image.png

image.png

8、langs目录下的 cn.js 文件;

import zhLocale from 'element-ui/lib/locale/lang/zh-CN'   // element-ui 国际化 中文

 // 同理en.js文件,只是这里改成中文了
const cn = {
  navbar: {
    'home': '首页',
    'Product description': '产品介绍',
    'Login': '登录',
    'Register': '注册',
    'Simplified Chinese': '简体中文'
  },
    ...zhLocale  // vuex方法,映射到中文上
}
export default cn

9、逻辑部分;

export default {
  name: '',
  data () {
    return {
      lang: 'cn',   // 因为网站默认是中文的,默认初始化为中文
      is_en: true  // (因样式问题自己单独写的)
    }
  },
methods{
  handleCommand (command) {
      // 点击切换为英文
      if (command === 'en') { // command 是element-ui 下拉框的用法,具体可参考官方文档
        this.lang = 'en'
        this.is_en = true  // 当点击切换成英文后,此样式生效(因样式问题自己单独写的)
      } else {
        this.lang = 'cn'
        this.is_en = false
      }
      this.$store.commit('switchLang', this.lang)  // 这里的switchLang是调用store/index.js中mutations里的switchLang
    }
  },
 created () {
    // 点击切换英文后调用此样式(这里是点击英文后页面部分的样式有点变化,我自己单独写的动态class方法)
    if (this.$store.state.lang === 'en') {
      this.is_en = true
    } else {
      this.is_en = false
    }
}
// 这里主要是对应动态class部分,如果同时需要绑字两个动态class,那么可以以数组的的方式给包裹起来
<span class="product_content" :class="[{product_content_1920:is_1920},{product_content_en:is_en}]">{{this.$t('product.productContent')}}</span>

10、最后把首页部分全部替换成英文,然后点击切换中英后页面就得到英文了。


image.png
image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,427评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,551评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,747评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,939评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,955评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,737评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,448评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,352评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,834评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,992评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,133评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,815评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,477评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,022评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,147评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,398评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,077评论 2 355

推荐阅读更多精彩内容