使用vue-i18n实现中英文切换

前言

一下内容均是基于vue3.0进行的
vue3版本的vue-i8n用法还是有挺大区别的相对于之前的版本

安装

npm install vue-i18n@next -S

创建目录及文件

- plugins		根目录,放一些插件配置文件
-- i18n			存放中英文配置的目录
-- ch.ts        中文
-- en.ts        英文
-- index.ts     出口文件

配置中英文对照表

注:键名要一 一对应

ch.ts

module.exports = {
  //语言
  language: {
    name: "简体中文",
    current: "当前语言",
  },
  //菜单
  menus: {
    home: "首页",
    about: "关于我们",
  },
};

en.ts

module.exports = {
  //语言
  language: {
    name: "Engilish",
    current: "Current Language",
  },
  //菜单
  menus: {
    home: "Home",
    about: "About",
  },
};

出口文件:index.ts

import { createI18n } from "vue-i18n";

const i18n = createI18n({
  //设置默认地区
  locale: localStorage.getItem("lang") || "ch",
  //备选区域
  fallbackLocale: "en",
  //设置地区对应的语言
  messages: {
    ch: require("./ch.ts"),
    en: require("./en.ts"),
  },
});

export default i18n;

使用

  • main.ts 里全局引入
//语言配置
import VueI18n from "./plugins/i18n/index.ts";

app
  .use(VueI18n)
  .mount("#app");
  • 在页面中使用
<template>
  <div>
      <el-button type="primary" @click="changeLanguage('ch')">中文</el-button>
      <el-button type="primary" @click="changeLanguage('en')">英文</el-button>
      <!-- 内容 -->
      <h2>{{$t('menus.home')}}</h2>
  </div>
</template>

<script lang="ts">
import { defineComponent} from "vue";
import { useI18n } from "vue-i18n";
export default defineComponent({
  setup() {
    const { locale, t } = useI18n();
    //通过local.value切换
    const changeLanguage = (val) => {
      locale.value = val;
      //保存一下修改的值
      localStorage.setItem("lang", locale.value);
    };

    return {
      changeLanguage,
    };
  },
});
</script>

<style scoped lang="scss">
</style>

通过$t() 来显示数据

效果
在这里插入图片描述

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无知的小菜鸡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值