• vue3+element-plus国际化


    package.json

    {
      "name": "vue3-eplus",
      "version": "0.0.0",
      "private": true,
      "type": "module",
      "scripts": {
        "dev": "vite",
        "build": "vite build",
        "preview": "vite preview"
      },
      "dependencies": {
        "element-plus": "^2.7.2",
        "vue": "^3.4.21",
        "vue-i18n": "^10.0.0-alpha.3",
        "vue-router": "^4.3.0",
        "vuex": "^4.1.0"
      },
      "devDependencies": {
        "@vitejs/plugin-vue": "^5.0.4",
        "@vitejs/plugin-vue-jsx": "^3.1.0",
        "vite": "^5.2.8"
      }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    main.js

    import './assets/main.css'
    import { createApp } from 'vue'
    import App from './App.vue'
    import router from './router'
    import i18n from "@/i18n/index";
    import ElementPlus from 'element-plus'
    import 'element-plus/dist/index.css'
    import store from './store'
    
    const app = createApp(App)
    app.use(ElementPlus)
    app.use(i18n)
    app.use(store)
    
    app.use(router)
    
    app.mount('#app')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    app.vue

    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40

    store.js

    import { createStore } from "vuex";
    export default createStore({
        state: {
            lan: 'zh'
        },
        mutations: {
            setLanguage(state, val) {
                state.lan = val
            }
        },
        getters: {
            getLanguage(state) {
                return state.lan
            }
        }
    })
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    i18n/index.js

    import { createI18n } from "vue-i18n";
    //这是我自己创建的语言包
    import mZhLocale from "./lang/zh";
    import mEnLocale from "./lang/en";
    //这里使用了vuex来进行全局的数据共享
    import { useStore } from "vuex";
    const store = useStore();
    //创建messages对象,里面注册相应的语言包,这里面我注册了自己定义的语言包
    const messages = {
      en: {
        ...mEnLocale,
      },
      zh: {
        ...mZhLocale,
      },
    };
    
    const i18n = createI18n({
      legacy: false, // 使用composition API
      locale: store?.state.lan || 'zh'
      globalInjection: true,  // 表明使用全局t函数
      messages,
    });
    export default i18n
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
  • 相关阅读:
    你还在为SFTP连接超时而困惑么?
    【工具使用】Audition软件导入.sesx文件报错问题
    分组卷积和深度可分离卷积
    给yarn/npm包管理设置代理加速nodejs依赖下载的方法
    docker基本使用
    渗透测试-Kali Linux 正确清理垃圾的姿势
    c++使用http请求-drogon框架
    小白从CentOS7到安装CDH6.3.2入坑实操指北(二)
    git介绍和安装、(git,github,gitlab,gitee介绍)、git工作流程、git常用命令、git忽略文件
    Redis实战——优惠券秒杀(超卖问题)
  • 原文地址:https://blog.csdn.net/elena_705/article/details/138569037