Vue中vue-i18n结合element-ui实现国际化

摘要:
',}}(III)初始化国际化//main.js文件importVuefrom'vu'importElementUIfrom'element-uiimport{i18n}from'/Lang'//路径取决于代码目录结构和层次结构vue。使用lang文件夹和main.js文件//调用国际化初始函数initLocalLang()函数initLocalLanguage(){//element ui组件国际化Vue.use}(IV)在Vue文件模板标签中使用国际化<template><!事实上,在原始基础上动态更改区域设置值也是非常简单的。您可以参考以下示例:import{i18n}from'@/lang'functionchangeLang{if{i18n.locale='en'}else{i8n.locale='zh'}上述代码可以动态切换元素ui组件库的国际化进程。

  (一)添加依赖模块

  在package.json文件中添加vant模块的依赖,如:

// package.json

{
   "dependencies": {
       "element-ui": "^2.12.0"
   }
}

  (二)配置语言资源文件

  • 目录结构

Vue中vue-i18n结合element-ui实现国际化第1张

  • index.js文件内容
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import elementEnLocale from 'element-ui/lib/locale/lang/en' 
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'
import enLocale from './en_us'
import zhLocale from './zh_cn'

Vue.use(VueI18n)

const localMessages = {
  en: {
  ...enLocale,
  ...elementEnLocale   // 将enLocale和elementEnLocale两个JSON格式的内容合并成一个JSON格式的内容 
  },
  zh: {
  ...zhLocale,
  ...elementZhLocale  // 将zhLocal和elementZhLocale两个JSON格式的内容合并成一个JSON格式的内容
  }
}
const i18n = new VueI18n({
  locale: 'zh', // 提供默认语言
  messages: localMessages
})
  
export {i18n}
  • en_us.js和zh_cn.js文件内容示例
// en_us.js
export default {
  app: {
      hello: 'Hello World!',
  }
}


// zh_cn.js
export default {
  app: {
      hello: '你好,世界!',
  }
}

  (三)初始化国际化

// main.js文件
import Vue from 'vue'
import ElementUI from 'element-ui'
import {i18n} from './lang'  // 路径要视代码目录结构,看lang文件夹和main.js文件的层次

Vue.use(i18n)

// 调用国际化初始函数
initLocalLang()


function initLocalLang () {
  // element-ui组件国际化
  Vue.use(ElementUI, {
    i18n: (key, value) => i18n.t(key, value)
  })
}

  (四)使用国际化

  • 在Vue文件中的使用

  (1)template标签中的使用

<template>
   <!-- 可以用this.$t,也可以直接使用$t-->
   <el-butto>{{$t('app.hello')}}</el-butto>
  <el-butto v-text="$t('app.hello')"></el-butto>
</template>

  (2)script标签中的使用

<script>
   data() {
       return {
             helloTip: this.$t('app.hello')
       }
}
</script>
  • 在JS文件中的使用
// JS文件

import {i18n} from '@/lang' 


let helloTip = i18n.messages[i18n.locale].app.hello

   (五)element-ui组件库国际化

  以上的国际化处理是支持网页中自身开发的多语言,那要是更改element-ui组件库的国际化,又如何处理呢?其实也很简单,在原有的基础上动态更改locale值即可,可以参考如下示例:

import { i18n } from '@/lang'

function changeLang(currentLang) {
    if ('zh' === currentLang) {
        i18n.locale = 'en'
    } else {
        i18n.locale = 'zh'
    }
}

  上述代码,可以动态切换element-ui组件库的国际化过程。

免责声明:文章转载自《Vue中vue-i18n结合element-ui实现国际化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇有哪些好笑的关于程序员的笑话NGINX负载均衡下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue源码实现的整体流程解析

一、前言 最近一直在使用vue做项目,闲暇之余查阅了一些关于vue实现原理的资料,一方面对所了解到的知识做个总结,另外一方面希望能对看到此文章的同学有所帮助。本文如有不足之处,还请过往的大佬批评指正。 二、vue实现原理概述 vue作为一个前端渐进式的MVVM开发库,将广大的前端劳苦大众从DOM操作中解放出来;说到vue的实现原理,大体可分为三个要素: 1...

vue 图片下载到本地,图片保存到本地

  必须同源(访问的网站域名与服务器域名一致)才能下载 1 2 3 4 5 6 downs() {   var alink = document.createElement("a");   alink.href = this.shop.shoppic_url;   alink.download = "pic"; //图片名   al...

spring boot + vue实现图片上传及展示

转载:https://blog.csdn.net/weixin_40337982/article/details/84031778 其中一部分对我很有帮助 转载记录下 首先,html页面: <!--form中是要加这个enctype的--> <form class="form-horizontal" enctype="...

vue指令(7)v-on

理论知识 双向数据绑定中,数据有多个来源,包括后台业务数据,用户网页操作数据等。对于用户网页操作,vue提供了事件机制,对用户操作做出反应。 使用方式 v-on:标准事件='事件处理逻辑'。 标准实践包括点击(click)、焦点(focus)等。在标签中使用时有四种方式,以点击事件为例 < button v-on:click='msg++'>...

vue需求表单有单位(时分秒千克等等)

需求如下: 问题分析: 因为用elementui组件 el-input 相当于块级元素,后面的单位<span>分</span>会被挤下去,无法在同一水平。 解决方法: 不用它的组件,自己写个原生的,用组件的class名,替换el-input__inner 为 el-input__myinner   <el-form-it...

Vue中table表头合并的用法

<div class="panel-container"> <div> <table class="table-head"width="80%"> <thead> <tr> &l...