当前位置:首页 > VUE

vue实现中英切换

2026-01-16 01:34:39VUE

国际化(i18n)方案

Vue 中实现中英切换通常采用 vue-i18n 库,以下是具体实现步骤:

安装依赖:

npm install vue-i18n

配置多语言文件

创建语言资源文件,例如:

// en.json
{
  "welcome": "Welcome",
  "button": {
    "submit": "Submit"
  }
}

// zh-CN.json
{
  "welcome": "欢迎",
  "button": {
    "submit": "提交"
  }
}

初始化 i18n 实例

在 Vue 项目中初始化国际化插件:

import Vue from 'vue'
import VueI18n from 'vue-i18n'

Vue.use(VueI18n)

const messages = {
  en: require('./locales/en.json'),
  'zh-CN': require('./locales/zh-CN.json')
}

const i18n = new VueI18n({
  locale: 'en', // 默认语言
  fallbackLocale: 'en', // 回退语言
  messages
})

export default i18n

在组件中使用

模板中使用 $t 方法:

<template>
  <div>
    <h1>{{ $t('welcome') }}</h1>
    <button>{{ $t('button.submit') }}</button>
  </div>
</template>

脚本中切换语言:

methods: {
  changeLanguage(lang) {
    this.$i18n.locale = lang
  }
}

语言切换组件

实现一个语言切换下拉框:

<select v-model="$i18n.locale">
  <option value="en">English</option>
  <option value="zh-CN">中文</option>
</select>

持久化存储

为保持用户选择的语言,可使用 localStorage:

created() {
  const savedLocale = localStorage.getItem('locale')
  if (savedLocale) {
    this.$i18n.locale = savedLocale
  }
},
watch: {
  '$i18n.locale'(newVal) {
    localStorage.setItem('locale', newVal)
  }
}

动态导入优化

对于大型项目,建议按需加载语言包:

async changeLanguage(lang) {
  const messages = await import(`@/locales/${lang}.json`)
  this.$i18n.setLocaleMessage(lang, messages.default)
  this.$i18n.locale = lang
}

日期时间本地化

处理日期时间格式差异:

import { DateTime } from 'luxon'

const dateFormats = {
  en: {
    short: {
      year: 'numeric', month: 'short', day: 'numeric'
    }
  },
  'zh-CN': {
    short: {
      year: 'numeric', month: 'short', day: 'numeric'
    }
  }
}

const i18n = new VueI18n({
  dateTimeFormats: dateFormats
})

模板中使用:

<span>{{ $d(new Date(), 'short') }}</span>

vue实现中英切换

标签: 中英vue
分享给朋友:

相关文章

vue实现屏幕共享

vue实现屏幕共享

Vue 实现屏幕共享的方法 使用 WebRTC 和 getDisplayMedia API 通过 navigator.mediaDevices.getDisplayMedia 捕获屏幕内容,结合 We…

vue实现人脸识别比对

vue实现人脸识别比对

Vue 实现人脸识别比对的方法 使用现成的人脸识别 API 通过调用第三方人脸识别 API(如 Face++、百度 AI、腾讯云等)实现比对功能。注册开发者账号获取 API Key 和 Secret,…

vue实现横向导航

vue实现横向导航

vue实现横向导航的方法 使用Flex布局实现横向导航 在Vue中可以通过Flex布局快速实现横向导航。创建一个组件,使用display: flex和flex-direction: row属性使导航项…

vue实现导航切换内容

vue实现导航切换内容

Vue实现导航切换内容的方法 在Vue中实现导航切换内容,可以通过以下方式实现: 使用动态组件 动态组件通过<component :is="currentComponent">实现内容切…

vue实现冰墩墩

vue实现冰墩墩

使用 Vue 实现冰墩墩动画 通过 Vue 的动画特性和 SVG 技术,可以动态渲染冰墩墩的形象。以下是具体实现方法: 准备 SVG 素材 冰墩墩的形象通常由多个 SVG 路径组成,包括身体轮廓…

vue实现录音文件播放

vue实现录音文件播放

使用 Vue 实现录音文件播放 准备工作 确保项目中已安装必要的依赖,如 vue-audio-recorder 或原生 Web Audio API。录音文件播放通常涉及录音、存储和播放三个核心环节。…