当前位置:首页 > VUE

vue3多语言实现

2026-03-06 21:44:16VUE

vue3多语言实现方法

使用vue-i18n插件

安装vue-i18n依赖包:

npm install vue-i18n@9

创建语言资源文件:

// src/locales/en.js
export default {
  message: {
    hello: 'Hello world'
  }
}

// src/locales/zh.js
export default {
  message: {
    hello: '你好世界'
  }
}

配置i18n实例:

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

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

在main.js中挂载:

import { createApp } from 'vue'
import App from './App.vue'
import i18n from './i18n'

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

模板中使用:

<template>
  <p>{{ $t('message.hello') }}</p>
</template>

动态切换语言

添加语言切换方法:

// 在组件中
import { useI18n } from 'vue-i18n'

export default {
  setup() {
    const { locale } = useI18n()

    const changeLanguage = (lang) => {
      locale.value = lang
    }

    return { changeLanguage }
  }
}

组合式API使用

在setup中使用:

import { useI18n } from 'vue-i18n'

export default {
  setup() {
    const { t } = useI18n()
    return { t }
  }
}

按需加载语言包

实现懒加载语言资源:

const loadLocaleMessages = async (locale) => {
  const messages = await import(`./locales/${locale}.js`)
  i18n.global.setLocaleMessage(locale, messages.default)
}

浏览器语言自动检测

检测用户浏览器语言:

const navigatorLang = navigator.language.split('-')[0]
if (['zh', 'en'].includes(navigatorLang)) {
  i18n.global.locale = navigatorLang
}

数字和日期本地化

配置日期时间格式:

const i18n = createI18n({
  datetimeFormats: {
    en: {
      short: {
        year: 'numeric',
        month: 'short',
        day: 'numeric'
      }
    },
    zh: {
      short: {
        year: 'numeric',
        month: 'short',
        day: 'numeric'
      }
    }
  }
})

模板中使用:

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

自定义复数规则

配置复数规则:

const i18n = createI18n({
  pluralizationRules: {
    ru: (choice, choicesLength) => {
      // 俄语复数规则
    }
  }
})

语言持久化

使用localStorage保存语言选择:

const savedLocale = localStorage.getItem('locale')
if (savedLocale) {
  i18n.global.locale = savedLocale
}

// 切换语言时
localStorage.setItem('locale', newLocale)

服务端渲染(SSR)支持

在SSR环境中使用:

export default function (ssrContext) {
  const locale = ssrContext.locale || 'en'
  return createI18n({
    locale,
    messages: {
      [locale]: require(`./locales/${locale}.json`)
    }
  })
}

单元测试支持

测试环境中配置:

vue3多语言实现

import { createI18n } from 'vue-i18n'
import { config } from '@vue/test-utils'

const i18n = createI18n({
  locale: 'en',
  messages: {}
})

config.global.plugins = [i18n]

标签: 多语言
分享给朋友:

相关文章

vue实现多语言

vue实现多语言

Vue 多语言实现方案 Vue 实现多语言通常使用 vue-i18n 库,以下是具体实现步骤: 安装 vue-i18n 通过 npm 或 yarn 安装依赖包: npm install vue-i…

react 实现多语言

react 实现多语言

实现多语言支持的步骤 安装依赖库 使用 react-i18next 和 i18next 库实现多语言功能。安装命令如下: npm install react-i18next i18next 配置…

vue3多语言实现

vue3多语言实现

vue3 多语言实现方案 使用 vue-i18n 插件 安装 vue-i18n 依赖包: npm install vue-i18n@9 创建语言资源文件(如 locales/en.json 和 lo…

php实现多语言切换

php实现多语言切换

实现多语言切换的基本方法 在PHP中实现多语言切换通常涉及以下核心步骤:准备语言文件、设置语言标识、动态加载对应语言内容。以下是具体实现方式: 语言文件存储结构 采用键值对方式存储翻译内容,每个语言…

vue实现多语言

vue实现多语言

Vue 实现多语言方案 使用 vue-i18n 插件 安装 vue-i18n 依赖: npm install vue-i18n 在项目中创建语言资源文件,例如: // src/locales/en…

php实现多语言切换

php实现多语言切换

PHP 实现多语言切换的方法 使用数组存储多语言文本 创建一个语言文件数组,存储不同语言的文本。例如,创建 lang.php 文件,定义不同语言的键值对: $lang = [ 'en' =&…