Vue3国际化 vue-i18n插件使用

安装

// npm安装
npm install vue-i18n -S

使用

src下面新文件夹i18n/lang

lang文件夹下面新建两个文件分别为en.ts和zh.ts

// src/i18n/lang/en.ts
export default {
  login: {
    login: "login",
    userName: "userName"
  }
}
// src/i18n/lang/zh.ts
export default {
  login: {
    login: "登录",
    userName: "用户名"
  }
}

在lang文件夹下新建index.ts

// src/lang/index.ts
import { createI18n } from 'vue-i18n'
// 引入模块
import zh from './lang/zh'
import en from './lang/en'

const i18n = createI18n({
  // 浏览器语言
  locale: localStorage.getItem("lang") || "zh",
  messages: {
    zh, en
  }
})

export default i18n;

在main.ts中引入

// main.ts
import { createApp } from 'vue';
import i18n from './i18n/index';
import App from './App.vue';

const app = createApp(App);
app.use(i18n);
app.mount('#app');

使用方式

中英切换方式1
<template>
  <div>
    <h2>{{ $t('login.login') }}</h2>
    <button @click="chinese('zh')">中文</button>
    <button @click="english('en')">英文</button>
  </div>
</template>
<script setup lang="ts">
import i18n from './i18n'
// 点击切换中文、英文
const chinese = (lang: any) => {
  i18n.global.locale = lang
  localStorage.setItem("lang", lang)
}
const english = (lang: any) => {
  i18n.global.locale = lang
  localStorage.setItem("lang", lang)
}
</script>

中英切换方式2

<template>
  <div>
    <h2>{{ $t('login.login') }}</h2>
    <button @click="chinese('zh')">中文</button>
    <button @click="english('en')">英文</button>
  </div>
</template>
<script setup lang="ts">
import { useI18n } from 'vue-i18n'
const { locale } = useI18n()
const chinese = (lang: any) => {
  locale.value = lang
  localStorage.setItem("lang", lang)
}
const english = (lang: any) => {
  locale.value = lang
  localStorage.setItem("lang", lang)
}
</script>

切记:使用第二种切换方式的时候要把legacy设置为false

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值