vue3使用vue-i18n国际化

1、安装插件。
与vue2不同的是版本问题,vue2之间安装的话版本回过高。

npm install --save vue-i18n

2、在src目录下新建语言文件夹。
3、main中引入插件。


// i18n
import i18n from '@/locales'
app.use(i18n)

4、语言文件夹下的入口文件。

import { createI18n } from 'vue-i18n'
import zh from './zh.json'
import en from './en.json'

// 获取浏览器界面语言,默认语言
// https://developer.mozilla.org/zh-CN/docs/Web/API/Navigator/language
let currentLanguage = navigator.language.replace(/-(\S*)/, '')
// 如果本地缓存记录了语言环境,则使用本地缓存
let lsLocale = localStorage.getItem('locale') || ''
if (lsLocale) {
  currentLanguage = JSON.parse(lsLocale)?.locale
}

export default createI18n({
  locale: currentLanguage,
  legacy: false, // you must set `false`, to use Composition API
  globalInjection: true, // 全局注册 $t
  messages: {
    zh,
    en
  }
})

export const langs = [
  { key: 'zh', title: '中文' },
  { key: 'en', title: 'English' }
]

5、使用方法。


<template>
  <el-dropdown trigger="click" class="h-full" @command="handleCommand">
    <div class="flex items-center px-4 hover:bg-slate-100">
      <el-icon size="20"><Basketball /></el-icon>
      <span class="ml-2">{{ currentLan }}</span>
    </div>

    <template #dropdown>
      <el-dropdown-menu>
        <el-dropdown-item v-for="lang in langs" :command="lang">{{
          lang.title
        }}</el-dropdown-item>
      </el-dropdown-menu>
    </template>
  </el-dropdown>
</template>
<script setup>
import { ref } from "vue";

import { langs } from "@/locales";
import { useLocaleStore } from "@/store/modules/locales";

const useLocale = useLocaleStore();

let curLocale = useLocale.locale;
let currentLan = ref(langs.find((item) => item.key === curLocale).title);

function handleCommand(command) {
  currentLan.value = command.title;
  useLocale.setLocale(command.key);
}
</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值