vue3项目国际化,你还不了解吗?

简介: vue3项目国际化,你还不了解吗?

vue3使用的国际化库为:i18n

安装方式:

npm install vue-i18n@next

安装完成后在src文件夹下新建lang文件夹

lang文件夹下新建需要语言转换的文件夹,这里以中文zh英文en举例,在这两个文件夹下新建需要转换的语言

zhindex.ts中写好我们需要转换的语言

enindex.ts也是一样的

lang文件夹下新建index.ts文件,在该文件下引入刚才的建立的语言包,配置需要使用的默认语言

// lang -> index.ts
import { createI18n } from 'vue-i18n'
import zh from './zh' 
import en from './en'
/* 这里必须是messages名称 */
const messages = {
    'zh-US' : zh,
    'en-US' : en
}
const i18n = createI18n({
    legacy: false,         // 使用 Composition API 模式,则需要将其设置为false
    globalInjection: true, //全局生效$t
    locale: 'zh-US',          // 默认使用的语言
    messages,  // 使用数据源
})
export { i18n }

main.ts文件下导入并挂载i18n

import { createApp } from "vue";
import "./style.css";
import App from "./App.vue";
import router from "./router/index";
// 引入国际化
import { i18n } from './lang/index'
const app = createApp(App)
/* globalProperties一个用于注册能够被应用内所有组件实例访问到的全局属性的对象。 */
app.config.globalProperties.$i18n = i18n; 
app
.use(router)
.use(i18n)  // 挂载i18n
.mount("#app")

main文件设置好后,我们就可以在页面使用了,页面的使用方法:

<div>
  <el-switch
      v-model="lang"
      inline-prompt
      style="--el-switch-on-color: #13ce66; --el-switch-off-color: #97a0ff"
      active-text="中"
      inactive-text="英"
      @change="languageChange"
  />
  <!-- 在页面中使用,这里对应的是语言包中的对象,此处可以使用模板字符串 -->
  <span>{{  t('navUtil.loginText')  }}</span>
</div>
import { useI18n } from "vue-i18n";
const { t } = useI18n();
const lang = ref(true);  // 开关,语言状态切换
/* getCurrentInstance()可以用来获取当前组件实例 */
let current = getCurrentInstance()?.appContext.config.globalProperties as any;
// 根据状态,切换国际化
const languageChange = (val : boolean) => {
  // false英 true中,此处的zh-US就是lang -> index.ts -> messages对象的键名
  val ? current.$i18n.locale = 'zh-US' : current.$i18n.locale = 'en-US'
}


如果是后台返回的菜单数据,我们需要根据菜单数据的键做语言处理,例如这样的

首先需要在lang对应的中英文文件夹下新增语言配置,由于后台返回的键名都是一样的,我们可以使用 键+id 的方法让这些键保持独立,例如:

菜单一般都是遍历出来的,在页面中用模板字符串拼接id即可

<span>{{ t(`menu.authName${item.id}`) }}</span>

如果觉得这篇文章对你有帮助,欢迎点赞👍、收藏💖、转发✨哦~

目录
相关文章
|
20天前
|
数据采集 监控 JavaScript
在 Vue 项目中使用预渲染技术
【10月更文挑战第23天】在 Vue 项目中使用预渲染技术是提升 SEO 效果的有效途径之一。通过选择合适的预渲染工具,正确配置和运行预渲染操作,结合其他 SEO 策略,可以实现更好的搜索引擎优化效果。同时,需要不断地监控和优化预渲染效果,以适应不断变化的搜索引擎环境和用户需求。
|
6天前
|
JavaScript 前端开发
如何在 Vue 项目中配置 Tree Shaking?
通过以上针对 Webpack 或 Rollup 的配置方法,就可以在 Vue 项目中有效地启用 Tree Shaking,从而优化项目的打包体积,提高项目的性能和加载速度。在实际配置过程中,需要根据项目的具体情况和需求,对配置进行适当的调整和优化。
|
19天前
|
存储 JavaScript 前端开发
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
【10月更文挑战第21天】 vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
vue3的脚手架模板你真的了解吗?里面有很多值得我们学习的地方!
|
15天前
|
JavaScript 前端开发 开发者
Vue 3中的Proxy
【10月更文挑战第23天】Vue 3中的`Proxy`为响应式系统带来了更强大、更灵活的功能,解决了Vue 2中响应式系统的一些局限性,同时在性能方面也有一定的提升,为开发者提供了更好的开发体验和性能保障。
36 7
|
17天前
|
前端开发 数据库
芋道框架审批流如何实现(Cloud+Vue3)
芋道框架审批流如何实现(Cloud+Vue3)
39 3
|
15天前
|
JavaScript 数据管理 Java
在 Vue 3 中使用 Proxy 实现数据双向绑定的性能如何?
【10月更文挑战第23天】Vue 3中使用Proxy实现数据双向绑定在多个方面都带来了性能的提升,从更高效的响应式追踪、更好的初始化性能、对数组操作的优化到更优的内存管理等,使得Vue 3在处理复杂的应用场景和大量数据时能够更加高效和稳定地运行。
36 1
|
15天前
|
JavaScript 开发者
在 Vue 3 中使用 Proxy 实现数据的双向绑定
【10月更文挑战第23天】Vue 3利用 `Proxy` 实现了数据的双向绑定,无论是使用内置的指令如 `v-model`,还是通过自定义事件或自定义指令,都能够方便地实现数据与视图之间的双向交互,满足不同场景下的开发需求。
37 1
|
18天前
|
前端开发 JavaScript
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
简记 Vue3(一)—— setup、ref、reactive、toRefs、toRef
|
19天前
Vue3 项目的 setup 函数
【10月更文挑战第23天】setup` 函数是 Vue3 中非常重要的一个概念,掌握它的使用方法对于开发高效、灵活的 Vue3 组件至关重要。通过不断的实践和探索,你将能够更好地利用 `setup` 函数来构建优秀的 Vue3 项目。
|
19天前
|
JavaScript 测试技术 UED
解决 Vue 项目中 Tree shaking 无法去除某些模块
【10月更文挑战第23天】解决 Vue 项目中 Tree shaking 无法去除某些模块的问题需要综合考虑多种因素,通过仔细分析、排查和优化,逐步提高 Tree shaking 的效果,为项目带来更好的性能和用户体验。同时,持续关注和学习相关技术的发展,不断探索新的解决方案,以适应不断变化的项目需求。