vite+vue-ts 如何在项目中实现多语言

开源库:github.com/intlify/vue...

插件:github.com/intlify/bun...

安装插件:pnpm add vue-i18n @intlify/unplugin-vue-i18n

配置vite

ts 复制代码
// vite.config.ts
import VueI18nPlugin from '@intlify/unplugin-vue-i18n/vite'
export default defineConfig({
...
  plugins: [
  ...
  VueI18nPlugin({
      include: [resolve(__dirname, './src/locales/**')],
    }),
  ]
})

创建文件

目录结构 复制代码
src/
├── locales/
│   ├── en.json
│   ├── zh.json

添加en.json数据

json 复制代码
 
{
    "language": "English",
    "lang": {
        "zh-CN": "Chinese",
        "en-US": "English"
    },
    "home": {
        "welcome": "welcome",
        "loading": "loading..."
    }
}

添加zh.json数据

json 复制代码
{
    "language": "中文",
    "lang": {
        "zh-CN": "中文",
        "en-US": "英文"
    },
    "home": {
        "welcome": "欢迎使用",
        "loading": "加载中..."
    }
}

将数据加载到项目中

ts 复制代码
// main.ts
import { createI18n } from 'vue-i18n'
import messages from '@intlify/unplugin-vue-i18n/messages'

const locale = localStorage.getItem("i18n-locale") || 'zh-CN'
const i18n = createI18n({
  locale: locale,
  fallbackLocale: 'en-US',
  messages: messages
})

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

实现多语言切换 案例:

vue 复制代码
<template>
    <el-dropdown placement="bottom" style="margin-right: 20px;cursor: pointer;" @command="selectLang">
        <span>语言({{ t('language') }})</span>
        <template #dropdown>
            <el-dropdown-menu>
                <el-dropdown-item command="zh-CN">中文</el-dropdown-item>
                <el-dropdown-item command="en-US">English</el-dropdown-item>
            </el-dropdown-menu>
        </template>
    </el-dropdown>
</template>
<script lang="ts" setup>
import { useI18n } from 'vue-i18n'
const { t, locale } = useI18n()
const selectLang = (lang: string) => {
    locale.value = lang
    localStorage.setItem('i18n-locale', lang)
}
</script>
<style scoped></style>

实现方式很简单,目前还没有发现缺陷,有更好的方案请求大家多多指导

相关推荐
计算机魔术师1 分钟前
GPT-6 Astra幻觉砍到2%,却被一种老招数轻松绕过
前端
cjy00011122 分钟前
2026AI 产品如何从一次性 Demo 变成可重复使用的业务工具?
前端·人工智能·fde
IT_陈寒28 分钟前
React的状态更新坑得我差点加班到天亮
前端·人工智能·后端
风骏时光牛马39 分钟前
深挖底层逻辑:XX源码深度拆解分析
前端
渡我白衣1 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
电商API_180079052471 小时前
电商商品价格监控工具淘宝京东商品价格抓取API项目实操分享
java·大数据·开发语言·前端·数据挖掘
sxmas1 小时前
用状态机与DAG建模四阶段业务流程:以MIND模型为例
前端
八角丶2 小时前
Node 网络编程 —— TLS 模块
javascript·后端·node.js
倔强的石头1062 小时前
【Linux指南】动静态库系列(七):符号表与重定位:链接器如何把函数调用接起来
linux·前端·javascript
图扑软件3 小时前
中篇・运笔|统一 DataModel 底座,HT UI 组件万物同源
javascript·低代码·ui·性能优化·数据可视化