vue3 + vite +element-plus(四)- 国际化

StackOverflow
• 阅读 591

本文将记录如何实现多语言切换

安装依赖

npm i vue-i18n pinia

新建 src/locale/zh-cn.ts

// src/locale/zh-cn.ts
export default {
    searchInput: {
        placeholdar: '请输入',
    },
};

新建 src/locale/en.ts

// src/locale/en.ts
export default {
    searchInput: {
        placeholdar: 'Please enter',
    },
};

新建 src/locale/index.ts

// src/locale/index.ts
import { zhCn, en } from 'element-plus/es/locale/index.mjs';
import zhCnLocal from './zh-cn';
import enLocal from './en';

export default {
    zhCn: Object.assign(zhCn, zhCnLocal),
    en: Object.assign(en, enLocal),
};

新建 src/store/user.ts

// src/store/user.ts
import { defineStore } from 'pinia';
import locale from '@/locale';

export default defineStore('useUserStore', {
    state() {
        return {
            lang: 'zhCn',
        };
    },
    getters: {
        locale(): any {
            return locale[this.lang as 'zhCn'];
        },
    },
    actions: {
        changeLang(lang: string) {
            this.lang = lang;
        },
    },
});

修改 src/main.ts

// src/main.ts
import { createApp } from 'vue';
import App from './App.vue';
import '@/style/index.scss';
import { getRouterList } from '@/router/config';
import { initRouter } from '@/router/index';
import { createPinia } from 'pinia'; // 新增

(async () => {
    const routerList = await getRouterList();

    const router = initRouter(routerList as any[]);
    const app = createApp(App);
    app.use(router);
    app.use(createPinia()); // 新增
    app.mount('#app');
})();

修改src/App.vue

<template>
    <ElConfigProvider :locale="userStore.locale">
        <router-view></router-view>
    </ElConfigProvider>
</template>
<script setup lang="ts">
// import { zhCn } from 'element-plus/es/locale/index.mjs';
import useUserStore from '@/store/user';

const userStore = useUserStore();
</script>

修改 src/home.vue

<template>
    <el-select v-model="userStore.lang">
        <el-option
            label="中文"
            value="zhCn"
        >
        </el-option>
        <el-option
            label="英文"
            value="en"
        ></el-option>
    </el-select>

    <el-input :placeholder="t('searchInput.placeholdar')"></el-input>
</template>

<script setup lang="ts">
import useUserStore from '@/store/user';
import { useLocale } from 'element-plus';

const userStore = useUserStore();
const { t } = useLocale();
</script>
点赞
收藏
评论区
推荐文章
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
美凌格栋栋酱 美凌格栋栋酱
7个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Easter79 Easter79
3年前
svg自适应写法
svg自适应写法<pre<!DOCTYPEhtml<htmllang"en"<head<metacharset"UTF8"<titleDocument</title</head<body<divstyle"width:30%;height:3.6rem;"<svg
虾米大王 虾米大王
3年前
java代码022
code022.jsp国际化locaex1Local.CHINA
Stella981 Stella981
3年前
InsightFace源码以及pre
一下摘自:https://blog.csdn.net/Fire\_Light\_/article/details/79602705(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2FFire_Light_%2Farticle%2Fdetails%2F7960
Stella981 Stella981
3年前
Linux自动检测网站心跳通知shell脚本
!/bin/bashLIST("http://xxxx.com")NAME("评价系统getwindowList接口")for((i0;i<${LIST@};i))doHTTP_CODEcurlo/dev/nullsw"%{http_code}""${LIST
Stella981 Stella981
3年前
Python获取 当前目录、上一级目录
<pre<spanstyle"color:0000ff"import</span<spanstyle"color:000000"os</span<spanstyle"color:0000ff"print</span<spanstyle"color:800000"'</span<spanstyle"c
Easter79 Easter79
3年前
TiDB Pre
8月30日,TiDB发布PreGA版。该版本对MySQL兼容性、SQL优化器、系统稳定性、性能做了大量的工作。TiDB:SQL查询优化器调整代价模型优化索引选择,支持不同类型字段比较的索引选择支持基于贪心算法的JoinReorder
Stella981 Stella981
3年前
Jenkins配置下拉菜单联动效果
  在使用Jenkins集成时,经常需要配置一些环境信息,由于测试、线上、预发布需要切换环境和域名,需要在Jenkins中配置下拉菜单联动效果。  首先选择参数化构建过程,然后首先配置环境,环境分为:测试环境、预发布环境、正式环境,选择的组件为ChoiceParameter,Name定义为environment,选项为test、pre、onli
Stella981 Stella981
3年前
Pre
PAT甲级1119,我先在CSDN上面发布的这篇文章:https://blog.csdn.net/weixin\_44385565/article/details/89737224(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fblog.csdn.net%2Fweixin_443855
Wesley13 Wesley13
3年前
Unity 获取场景中所有目标对象(包括不激活的对象)
usingUnityEngine;usingUnityEditor;usingSystem.Collections.Generic;publicclassExampleScript:MonoBehaviour{//获取场景中所有目标对象(包括不激活的对象)不包括Pre