VUE3 +TypeScript + i18n多语言结合使用

8 篇文章 0 订阅

VUE3 +TypeScript + i18n多语言结合使用

1、安装i18n

npm install vue-i18n@9

2、配置多语言文件

在src目录下创建lang文件夹,内部创建index.ts【多语言入口文件】 、zh.ts【中文语言配置】、en.ts【英文语言配置】。
结构如下:
|-src
|— assets
|— components
|— lang
|— index.ts
|— zh.ts
|— en.ts

1. index.ts

import { createI18n } from 'vue-i18n' // 引入i18n创建多语言对象
import zhLocale from './zh'; // 引入中文对应语言配置
import enLocale from './en'; // 引入英文对应语言配置

const messages = {
    zh: zhLocale,
    en: enLocale
}

const localLang = navigator.language.split('-')[0]; // 获取浏览器语言环境
const storageLang = window.localStorage.getItem('locale')?.split('"')[1].split('"')[0].toLocaleLowerCase() || 'en'; // 获取localStorage本地语言环境
const c = (storageLang.toLocaleLowerCase() !== 'zh' && storageLang.toLocaleLowerCase() !== 'en') ? 'en' : storageLang; // 如果localStorage语言环境既不是中文也不是英文就取为英文

const i18n = createI18n({
    globalInjection: true, // 开启全局多语言渗透
    locale: c || localLang || 'en', // 语言环境
    messages, // 语言配置字段
    legacy: false, // // 使用 vue3 组合式API 时必须设置为 false
})

export default i18n

2. zh.ts

export default {
  common: {
    add: "新增",
    edit: "编辑",
    delete: "删除"
  }
}

3. en.ts

export default {
  common: {
    add: "Add",
    edit: "Edit",
    delete: "Delete"
  }
}

其他语种配置同理

3、挂在到VUE上

main.ts

import { createApp } from 'vue
import App from './App.vue'
import './registerServiceWorker'
import router from './router'
import store from './store'

import i18n from '@/lang/index' // 多语言引入

const app = createApp(App);

app.use(store).use(router).use(i18n).mount('#app') // 使用i18n
app.config.globalProperties.$t = i18n.global.t // 挂载到全局,DOM上能使用$t使用

4、使用

由于上一步使用了app.config.globalProperties挂载到全局,所有vue页面都可用$t来使用。
比如:

<template>
  <div :style="{ boxShadow: 'var(--el-box-shadow-lighter)' }" id="topBar">
    <span class="vertical-middle">{{ $t('common.label1') }}</span>
  </div>
</template>

但是,在ts中,直接使用是不行的,需要另外引入,setup 有两种写法。

<script lang="ts">
import { defineComponent, ref } from 'vue';
import { useI18n } from 'vue-i18n' // 多语言


export default defineComponent({
  name: 'LeftMenu',
  setup() {
    const { t } = useI18n() // t方法取出,t('code')使用
    const menuList = [
      { id: '1', icon: 'Connection', title: t('tenant.label1'), path: '/tenant' }, 
      { id: '2', icon: 'Iphone', title: t('android.label1'), path: '/android' },
      { id: '3', icon: 'Iphone', title: t('androidManage.label1'), path: '/androidManage' },
      { id: '4', icon: 'Iphone', title: t('orderManage.label1'), path: '/orderManage' }
    ]
    return {
      menuList
    }
  },

})

</script>

或者

<script setup lang="ts">
import { defineComponent, ref } from 'vue';
import { useI18n } from 'vue-i18n' // 多语言

const { t } = useI18n() // t方法取出,t('code')使用
const menuList = [
  { id: '1', icon: 'Connection', title: t('tenant.label1'), path: '/tenant' }, 
  { id: '2', icon: 'Iphone', title: t('android.label1'), path: '/android' },
  { id: '3', icon: 'Iphone', title: t('androidManage.label1'), path: '/androidManage' },
  { id: '4', icon: 'Iphone', title: t('orderManage.label1'), path: '/orderManage' }
]

</script>
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue3 + TypeScript 是一种常用的前端开发技术组合,它结合Vue框架的便捷性和TypeScript的类型检查能力,可以提高项目的可维护性和开发效率。下面是一些Vue3 + TypeScript项目经验的介绍: 1. 项目初始化:使用Vue CLI创建一个Vue3项目,并选择TypeScript作为项目的语言。这样可以自动生成一些基本的配置和文件结构,方便快速开始开发。 2. 类型定义:在Vue3 + TypeScript项目中,可以使用TypeScript的类型系统来定义组件的props、data、computed等属性的类型,以及事件的参数类型等。这样可以在编码过程中及早发现潜在的类型错误,提高代码的健壮性。 3. 组件开发:在Vue3 + TypeScript项目中,可以使用装饰器(decorators)来定义组件选项,例如使用@Prop来定义props属性的类型,使用@Emit来定义事件的参数类型。这样可以更清晰地描述组件的接口和行为。 4. 路由管理:在Vue3 + TypeScript项目中,可以使用Vue Router进行路由管理。通过定义路由的类型和参数类型,可以在编码过程中获得更好的类型提示和错误检查。 5. 状态管理:在Vue3 + TypeScript项目中,可以使用Vuex进行状态管理。通过定义状态的类型和操作的参数类型,可以提高代码的可读性和可维护性。 6. 第三方库的使用:在Vue3 + TypeScript项目中,可以使用第三方库,并为其编写类型声明文件,以获得更好的类型检查和代码提示。例如,可以使用axios发送HTTP请求,并为其编写类型声明文件,以确保请求参数和响应数据的类型正确。 7. 单元测试:在Vue3 + TypeScript项目中,可以使用Jest等测试框架进行单元测试。通过编写类型安全的测试用例,可以提高代码的质量和可靠性。 8. 构建和部署:在Vue3 + TypeScript项目中,可以使用Webpack等构建工具进行项目的打包和优化。通过配置合适的TypeScript编译选项和Webpack插件,可以生成高效的生产环境代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值