vue3.0前端国际化(支持中英文切换)

mountainghost_z 2024-10-15 15:03:01 阅读 67

*案例使用ElementPlus ,提供国际化功能

*i18n是internationalization的缩写,它源自英文单词“internationalization”的首末字符i和n,中间的18代表了中间的字符数。 i18n是“国际化”的简称

1.在前端项目src目录下新建国际化需要的文件

在这里插入图片描述

(1)在langs路径下创建i18n.js

<code>import { -- --> createI18n } from 'vue-i18n'

import messages from './langs'

//从localStorage获取语言选择。

const i18n = createI18n({

legacy:false,

locale:localStorage.getItem('lang') || 'zh',//语言包

messages

})

export default i18n

(2)langs/langs/路径下创建index.js

import en from './en';

import zh from './zh';

export default {

en: en,

zh: zh

}

(3)创建zh.js

const zh = {

message: {

"appName":"XXXXX系统",

"copyright":"版权所有 © 2009-2024 上海XXXX有限公司"

}

}

(4)创建en.js

const en = {

message: {

"appName":"XXXXX System",

"copyright":"All rights reserved © 2009-2024 Shanghai XXXX Co., Ltd",

}

}

有其他语种翻译,以此类推;案例支持中英文翻译

2.在main.js中引用需要的文件(全局使用)

import App from './App.vue'

import ElementPlus from 'element-plus'

import zhCn from 'element-plus/es/locale/lang/zh-cn'

import en from 'element-plus/es/locale/lang/en'

import i18n from './langs/i18n.js'

const app = createApp(App)

app

.use(i18n)

.use(ElementPlus,

{ locale:langsData == 'en' ? en : zhCn }

)

.mount('#app')

export default app

3.在页面中使用国际化

先在上面zh.js和en.js中做好翻译(已翻译),在页面中直接使用

<!--切换中英文-->

<el-dropdown-menu>

<el-dropdown-item

key="zh"code>

:label="$t('message.chinese')"code>

value="zh"code>

@click="selectLang('zh')"code>

>{ -- -->{ $t("message.chinese") }}</el-dropdown-item

>

<el-dropdown-item

key="en"code>

label="English"code>

value="en"code>

@click="selectLang('en')"code>

>English</el-dropdown-item

>

</el-dropdown-menu>

<p class="login_panle_form_title_p">{ -- -->{ $t("message.appName") }}</p>code>

<script setup>

import { -- --> useI18n } from "vue-i18n";

const { locale } = useI18n();

const { t } = useI18n();

const langsData = localStorage.getItem("lang");

//切换中英文

const selectLang = (lang) => {

localStorage.setItem("lang", lang);

locale.value = lang;

};

</script>

在js中 使用

ElMessage({

type: "error",

message: t("message.loginInfoTips"),

showClose: true,

});

4.效果展示

在这里插入图片描述

在这里插入图片描述



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。