当前位置: 首页 > news >正文

vue怎么实现国际化? vue-i18n 插件实现国际化,支持切换不同语言

依赖的文档开始 | Vue I18n

一、安装 

npm install vue-i18n

如果在一个模块系统中使用它,你必须通过 Vue.use() 明确地安装 vue-i18n

import Vue from 'vue'
import VueI18n from 'vue-i18n'Vue.use(VueI18n)

二、使用

在 src 下创建 lang 文件夹

1.准备语言包

这里我们用中文和英文的来举例,在lang文件下创建en.js和zh,js

// en.js
export default {login: {username: 'Username',password: 'Password'},
}
// zh.js
export default {login: {username: '用户名',password: '密码'},
}

2、准备翻译的语言环境

在 lang 下创建 index.js,使用如上的两种语言包。

// index.js
import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Cookies from 'js-cookie'
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN' // element-ui lang
import enLocale from './en'
import zhLocale from './zh'Vue.use(VueI18n)const messages = {en: {...enLocale,...elementEnLocale},zh: {...zhLocale,...elementZhLocale}
}const i18n = new VueI18n({// 设置语言 选项 en | zhlocale: Cookies.get('language') || 'zh',// 设置文本内容messages
})export default i18n

3、实现语言翻译

import i18n from './lang'
// use使用添加i18n
Vue.use(Element, {i18n: (key, value) => i18n.t(key, value)
})
new Vue({el: '#app',router,store,i18n,//注入render: h => h(App)
})
如何使用
<template><div >{{$t('login.password')}}</div>
</template>
实现语言切换
  <template><el-dropdown trigger="click" class="international" @command="handleSetLanguage"><div><svg-icon class-name="international-icon" icon-class="language" /></div><el-dropdown-menu slot="dropdown"><el-dropdown-item :disabled="language==='zh'" command="zh">中文</el-dropdown-item><el-dropdown-item :disabled="language==='en'" command="en">English</el-dropdown-item></el-dropdown-menu></el-dropdown>
</template>computed: {language() {return this.$store.getters.language}},methods: {handleSetLanguage(lang) {this.$i18n.locale = lang;   //设置当前语言// this.$store.dispatch('app/setLanguage', lang);this.$message({message: '设置语言成功',type: 'success'})},}

到这里就可以实现语言切换了

http://www.lryc.cn/news/241599.html

相关文章:

  • rabbit MQ的延迟队列处理模型示例(基于SpringBoot延时插件实现)
  • 虽不想承认,但这就是CSGO游戏搬砖行业的现状
  • 想问问各位大佬,网络安全这个专业普通人学习会有前景吗?
  • uniapp IOS从打包到上架流程(详细简单) 原创
  • React Native项目接入Sentry指南
  • 首批!创邻科技入选《图数据库金融应用场景优秀案例》
  • WPF树形控件TreeView使用介绍
  • Django 模型和Admin站点管理(三)
  • JVMj之console Java监视与管理控制台
  • Android进阶知识:ANR的定位与解决
  • 基于SSM的老年公寓信息管理(有报告)。Javaee项目
  • 阿里云 ACK 新升级,打造智算时代的现代化应用平台
  • CodeWhisperer 一款好玩的 AI 插件
  • 大模型生态新篇章:以AI Agent为引,助企业创新应用落地
  • 什么是网络安全工程师,你想知道的都在这里!
  • uniapp开发的微信小程序进行代码质量控制,分包+压缩js+组件按需注入等
  • GD32替换STM32使用HAL库开发问题
  • PE文件分析
  • MySQL 中文转拼音函数
  • HTML5+CSS3+JS小实例:蜂巢里的小蜜蜂光标特效
  • leetcode做题笔记1410. HTML 实体解析器
  • sql18(Leetcode1633各赛事的用户注册率)
  • 开发旅游APP的意义
  • docker安装xxl-job
  • Django QuerySet.order_by SQL注入漏洞(CVE-2021-35042)
  • 鼠标拖拽问题,不选中文本不触发单击事件
  • Java 之 final 详解
  • 数据分析策略
  • 子虔科技亮相2023工业软件生态大会 以先进理念赋能工业软件发展
  • 《C++PrimePlus》第9章 内存模型和名称空间