VUE3+TS+Vite使用i18n国际化插件

VUE3+TS+Vite使用i18n国际化插件

  1. 下载i18n插件
npm install vue-i18n
  1. 在src目录下创建locals文件夹,包含index.ts,en.ts,zh.ts(只做中英文切换)
/en.ts
export default {
    login: {
        login: 'login',
        userName: 'userName',
        password: 'password'
    }
}
/zh.ts
export default {
    login: {
        login: '登录',
        userName: '用户名',
        password: '密码'
    }
}
/index.ts
import { createI18n } from "vue-i18n";
// 导入全局中英文配置对象
import zh from './zh'
import en from './en'
const messages = {
    en,
    zh,
  }
  const language = (navigator.language || 'en').toLocaleLowerCase() // 这是获取浏览器的语言
  const i18n = createI18n({
    legacy: false, //解决vue-i18n报错Uncaught (in promise) SyntaxError: Not available in legacy mode
    locale: localStorage.getItem('lang') || language.split('-')[0] || 'en', // 首先从缓存里拿,没有的话就用浏览器语言,
    fallbackLocale: 'en', // 设置备用语言
    messages, 
  })
  
  export default i18n

3.最后在main.ts引入就好了

import { createApp } from 'vue'
import i18n from './locals'

const app = createApp(App)
app.use(i18n)

app.mount('#app')

此时浏览器的调试框可能会出现i18n的警告信息,可以在vite.config.ts文件中加入下面的代码

export default defineConfig({
  resolve:{
    alias: {
      'vue-i18n': 'vue-i18n/dist/vue-i18n.cjs.js', //去除vue-i18n的警告信息
    }
  },
  })

<template>中使用
要用到一个$t()的方法,或者使用v-t也行

<div>
    {{`$t('login.userName')`}}
</div>
<div v-t="'login.password'"></div>

setup中使用

<script setup lang="ts">
import { useI18n } from 'vue-i18n'

const { t } = useI18n()

console.log(t('login.useName'))
</script>

vue-i18n提供了一个全局变量locale,直接修改即可

<template>
	<div class="menu">
    	<div class="menu-item" @click="changeLang('en')">English</div>
    	<div class="menu-item" @click="changeLang('zh')">中文</div>
    </div>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { locale } = useI18n()

const changeLang = (lang: string) => {
  locale.value = lang
  localStorage.setItem('lang', lang)// 重要!下面遇到问题里解释
}
</script>

完结

Vue3 TS Vite Element Plus I18n开源项目是一个基于Vue3和TypeScript的快速开发框架,它集成了Element Plus组件库和国际化功能。 Vue3是目前最新的Vue版本,它带来了很多新的特性和改进,比如更好的性能、更强大的类型推断和优化的渲染逻辑。使用Vue3可以让开发者拥有更好的开发体验和更高效的编码方式。 TS是TypeScript的缩写,它是JavaScript的超集,为JavaScript添加了静态类型检查和其他新特性。使用TypeScript可以更早地发现代码错误,并提供更好的代码提示和重构能力,提高了代码的可维护性和可读性。 Vite是一个由Evan You(Vue的创造者)开发的新一代前端构建工具,它具有极快的冷启动和热重载能力,能够大大提升开发效率。使用Vite可以快速搭建起整个项目的开发环境。 Element Plus是一套基于Vue3的UI组件库,它提供了丰富的常用组件和样式,可以帮助开发者快速搭建精美的界面。Element Plus基于Vue3的语法进行了优化,提供了更好的性能和更丰富的功能。 I18n国际化的缩写,它是指将应用程序适配到不同的语言和地区。开源项目中的I18n功能可以帮助开发者轻松实现多语言支持,提供了翻译和切换语言的功能。 综上所述,Vue3 TS Vite Element Plus I18n开源项目是一个强大的开发框架,它集成了最新的Vue版本、TypeScript、快速开发工具Vite、Element Plus组件库和国际化功能。使用这个项目可以大大提高前端开发的效率和质量,特别适合构建大型和多语言的应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值