安装

npm install vue-i18n
yarn add vue-i18n

main.js

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

import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import router from './router/index'
import i18n  from './lang/i18n'const app = createApp(App)
app.use(ElementPlus)
app.use(router)
app.use(i18n)
app.mount('#app')

在src目录下创建lang文件夹,下包含ch.js(中文包) en.js(英文包) index.js i18n.js(配置i18n)

ch.js

export default{message: {username: '用户名',password: '密码',login: '登录',captcha: '验证码',forgetPassword: '忘记密码?',loginTip: '当前登录结果随机。验证码随便填',editpassword: '修改密码',logout: '退出登录',errMsg: {inputRequired: '请输入{cont}',selectRequired: '请选择{cont}'  }},
}

en.js

export default{message: {username: 'User Name',password: 'Password',login: 'Login',captcha: 'Captcha',forgetPassword: 'Forget Password?',loginTip: 'The login result is random. Just fill in the captcha',editpassword: 'Edit Password',logout: 'Logout',errMsg: {inputRequired: 'Please Input {cont}',selectRequired: 'Please Select {cont}'}},
}

index.js

import ch from './ch'
import en from './en'export default {ch,en
}; //将i18n暴露出去,在main.js中引入挂载

i18n.js

import { createI18n } from 'vue-i18n' //引入vue-i18n组件
import messages from './index'
const language = ((navigator.language ? navigator.language : navigator.userLanguage) || "ch"
).toLowerCase();
const i18n = createI18n({fallbackLocale: 'ch',//预设语言环境globalInjection:true,legacy: false, // you must specify 'legacy: false' optionlocale: language.split("-")[0] || "ch",//默认显示的语言 messages,//本地化的语言环境信息。
});export default i18n

使用

{{ $t(`message.login`) }}

封装组件加入点击事件(js环境,不是typeScript环境)

配置element Plus

<template><div><el-dropdown><template #dropdown><el-dropdown-menu><el-dropdown-itemv-for="item in languages ":key="item.value":disabled="languages === item.value"><span @click="handSeletlanguages">{{item.name}}</span></el-dropdown-item></el-dropdown-menu></template></el-dropdown></div>
</template>
<script>
import { defineComponent, reactive, toRefs, computed } from 'vue'
import { useI18n } from 'vue-i18n'
import $store from '../../store/index'
import { ElMessage } from 'element-plus'
export default defineComponent({setup() {const { locale } = useI18n()console.log('locale' , locale)const state = reactive({languages: [{name: 'en',value: 'en'},{name: '中文',value: 'ch'}],handSeletlanguages: (lang) => {locale.value = lang$store.dispatch("setLang", lang)ElMessage({message: 'Switch Language Success',type: 'success'})}})const languages = computed(() => {return $store.state.languages})return {...toRefs(state),languages}}
})
</script>

store.js

import { createStore } from 'vuex'export default createStore({state: {language: ''},mutations: {setLang(state, language) {state.language = language}},actions: {setLang(context, value) {context.commit('setLang', value)}}
})

使用封装组件

<template><div class="login-context"><div class="title-container">{{ $t(`message.login`) }}<langSelect></langSelect></div></div>
</template>
<script >
import { reactive, toRefs, defineComponent } from 'vue'
import langSelect from '../../components/lang/index.vue'export default defineComponent({components: {langSelect},
})
</script>

vue3 + i18n相关推荐

  1. Vue3+i18n多语言动态国际化设置步骤

    1.技术介绍 i18n:Vue.js 的国际化插件.它可以轻松地将一些本地化功能集成到你的 Vue.js 应用程序中 i18n的官网地址安装 | Vue I18n (kazupon.github.io ...

  2. pako 压缩lottie动效资源方案

    原文链接: pako 压缩lottie动效资源方案 上一篇: typescript-json-schema 和 ajv 检测数据是否符合指定的ts类型 下一篇: vue3 i18n 国际化支持 基本思 ...

  3. vue3.0 引入i18n 做国际化 - 做动态语言切换

    说明 适合 vue2.0版本的官方链接如下: ​​​​​​Vue I18nVue I18n 是 Vue.js 的国际化插件https://kazupon.github.io/vue-i18n/zh/ ...

  4. vue3.x使用i18n和i18n Ally自动化翻译

    以下为vue3.x 使用i18n和i18n Ally自动化翻译的步骤, vue2.x配置i18n步骤>> vue 版本> 3.0.0 vue/cli 版本 4.5.13 vue-i1 ...

  5. vue3玩转i18n

    交流QQ群:555913397 有什么问题可以加群大家一起交流 1.安装i18n yarn add vue-i18n 2.配置i18n 目录结构 index.ts i18n配置文件 import ty ...

  6. vite+vue3+ts使用i18n

    vue3使用i18n必须使用9.*版本 "vue-i18n": "^9.2.2" 目录 1.下载使用 1.1.创建配置 1.2.基本使用 1.3.这时会有一个警 ...

  7. 推荐 10 个好用的 Vue3 的开源项目,开发效率又能提升了!

    大家好,我是你们的 猫哥,那个不喜欢吃鱼.又不喜欢喵 的超级猫又在线营业啦. 平时如何发现好的开源项目,可以看看这篇文章:GitHub 上能挖矿的神仙技巧 - 如何发现优秀开源项目 如果不想错过精彩内 ...

  8. cli3解决 ie11语法错误 vue_【VUE3.0】它来了,2020年09月18日,Vue.js 3.0 正式发布,但是........

    您曾见过凌晨的苹果发布会,那前端界的发布会你见过吗? 在Vue3正式发布前,Vue的作者尤雨溪发表主题演讲. 注意! 注意! 注意! 发布会中表示不建议大家立刻升级到Vue3.0版本,之前项目中某些依 ...

  9. 2、Gantt 入门 (vue3 + ts)

    首先把 gantt 官网下载的相关文件放入 resource 文件中. 下载地址:https://dhtmlx.com/docs/products/dhtmlxGantt/download.shtml ...

最新文章

  1. Maven官宣:干掉Maven和Gradle!推出更强更快更牛逼的新一代构建工具,炸裂!
  2. 【干货】产品经理常忽略的用户研究的四大误区
  3. 中国34城最全剖析:深圳、天津的短板与不足,何时才能补?
  4. 利用matlab将二进制小数转换为十进制小数
  5. c++的头文件与源文件
  6. python调用菜单响应事件_Python处理菜单消息操作示例【基于win32ui模块】
  7. java中elapseTime设置新时间,Java ApplicationLike.getApplicationStartElapsedTime方法代码示例...
  8. Java权限管理(授权与认证)
  9. Java设计模式之观察者模式应用与实战
  10. .Net Core MVC使用EF
  11. android自定义View之(四)------一键清除动画
  12. 云服务器ECS常见的计费方式
  13. Apache httpd 几个报错的解决记录
  14. MySQL数据库名字能不能用中划线 ‘-’ ?
  15. 在济南,少儿国画到底要怎么学?
  16. OLED通信方式_IIC通信
  17. SQLiLab刷题记录
  18. 公需科目必须学吗_可以补学2019年专业技术人员公需科目学时吗?
  19. vbs小程序图标更改方法
  20. 给input[text]添加icon,并且绑定事件

热门文章

  1. 【回归分析】MATLAB实现Lasso回归算法
  2. HarmonyOS连接新体验,半入耳舒适降噪耳机华为FreeBuds 4E全新亮相
  3. IOS实现输入验证码、密码按位分割
  4. 【SequoiaDB巨杉数据库】匹配符 $gte
  5. 如何设计王者荣耀角色转移服务避免系统崩溃(附服务架构方案)
  6. 解决电脑安装GeForce Experience停在“正在下载更新”最后“无法连接到NVIDIA”问题
  7. 非DDS卡发送彩信(MMS)业务流程介绍
  8. 高创伺服电机飞车问题
  9. 电脑是否被监控?几个步骤教你判断
  10. 如何收割淘宝逛逛人群