当前位置: 首页 > news >正文

ant-design-vue中英文切换

一 效果

二 依赖

npm install ant-design-vue@4.x --save

npm install vue-i18n@next

三 代码

1 main.ts引入

2 app.vue文件

<template>
  <ConfigProvider :locale="antdLocale">
    <div id="app">
      <RouterView />
    </div>
  </ConfigProvider>
</template>

<script lang="ts" setup>
import { ref, watch } from 'vue'
import { useI18n } from 'vue-i18n'
import { ConfigProvider } from 'ant-design-vue'
import { RouterView } from 'vue-router'

const { locale } = useI18n()
// 使用 ref 创建一个新的响应式变量来存储 ant-design-vue 的 locale
const antdLocale = ref()

// 监听语言变化
watch(
  () => locale.value,
  (newLocale) => {
    if (newLocale === 'zh') {
      // 引入中文语言包
      import('ant-design-vue/es/locale/zh_CN').then(({ default: zhCN }) => {
        antdLocale.value = zhCN
      })
    } else {
      // 引入英文语言包
      import('ant-design-vue/es/locale/en_US').then(({ default: enUS }) => {
        antdLocale.value = enUS
      })
    }
  },
  {
    immediate: true,
  },
)
</script>

3. locales

3.1 index.ts

import { createI18n } from 'vue-i18n'
import en from './en'
import zh from './zh'
import 'dayjs/locale/zh-cn'
import 'dayjs/locale/en'
import enUS from 'ant-design-vue/es/locale/en_US'
import zhCN from 'ant-design-vue/es/locale/zh_CN'

const messages = {
  en: {
    ...en,
    ...enUS,
  },
  zh: {
    ...zh,
    ...zhCN,
  },
}

const langLocale = localStorage.getItem('lang') || 'en'

const i18n = createI18n({
  locale: langLocale, // 默认语言
  fallbackLocale: 'en', // 备用语言
  messages,
})

export default i18n

en.ts

zh.ts

/en/indexPage.ts

/zh/indexPage.ts

四 切换

<template>
  <div class="HeaderLayout">
    <div class="HeaderLayout-left">
      {{ $t('indexPage.name') }}
    </div>
    <div class="HeaderLayout-right">
      <div class="HeaderLayout-right-locale">
        <div
          class="HeaderLayout-right-locale-item"
          v-for="(item, index) in languageList"
          :class="{ selectLanguage: defaultLanguage == item.value }"
          :key="index"
          @click="onClickLocale(item.value)"
        >
          {{ item.value }}
        </div>
      </div>
    </div>
  </div>
</template>

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

const { locale } = useI18n({
  useScope: 'global',
})

const defaultLanguage = ref(localStorage.getItem('lang') || 'en')
const languageList = ref([
  {
    label: '中文',
    value: 'zh',
  },
  {
    label: '英文',
    value: 'en',
  },
])

const onClickLocale = (str: string) => {
  defaultLanguage.value = str
  locale.value = str
}
</script>

<style lang="less" scoped>
.HeaderLayout {
  width: 100%;
  height: 100%;
  display: flex;
  justify-content: space-between;
  &-left {
    font-size: 16px;
    font-weight: 700;
    color: #000;
  }
  &-right {
    display: flex;
    align-items: center;
    &-locale {
      width: 108px;
      height: 36px;
      display: flex;
      align-items: center;
      border: 1px solid rgba(#000, 0.1);
      border-radius: 4px;
      box-sizing: border-box;
      margin-left: 16px;
      &-item {
        width: 54px;
        height: 34px;
        font-weight: 600;
        font-size: 14px;
        color: rgba(#000, 0.7);
        text-align: center;
        line-height: 32px;
        border-radius: 4px;
        cursor: pointer;
        &.selectLanguage {
          color: #fff;
          background: rgba(gray, 0.5);
        }
      }
    }
  }
}
</style>

相关文章:

  • 【Easylive】SpringBoot启动类——EasyLiveWebRunApplication
  • MySQL索引优化全攻略:从原理到实战
  • OpenAI发布的《Addendum to GPT-4o System Card: Native image generation》文件的详尽笔记
  • MySQL执行原理
  • 测试用例篇
  • 各种网址整理-vue开发,vue组件,linux部署,ai前端开发,前端基础开发,各种开发能用到的网址和一些有用的博客
  • P1449 后缀表达式
  • MySQL 大数据处理优化与分布式架构探索
  • Docker部署前后端分离项目
  • vue element-ui 工程创建
  • Unity:EasyRoad3D插件学习 二期
  • 学有所记- 探索FastAPI在docker上的部署
  • vLLM 部署 openai whisper 模型实现语音转文字
  • C语言基础:弟11天笔记
  • ubuntu20.04 APT 安装MySQL Community Server 8
  • vue create 与 vue init webpack 的 区别
  • 游戏搭建云服务器配置推荐
  • PyTorch --torch.cat张量拼接原理
  • 前端er在Cursor使用MCP实现精选照片的快速上手教程
  • AISTATS 2025 | ChronosX:利用外生变量调整预训练时间序列模型
  • 合肥网站建设制作/站长之家备案查询
  • 太原搜索引擎推广/网络优化seo是什么工作
  • 电子商务网站建设及维护管理/免费网站统计代码
  • 旅游小镇网站建设方案/友链交易平台
  • 中性衣服印花图案设计网站/搜索引擎推广案例
  • 小学课程建设网站目标/教育机构在线咨询