当前位置: 首页 > news >正文

国际化不生效

经过我的重重检查 最终发现是 版本问题。

原本下载默认next版本cnpm install vue-i18n@next

下载 国际化插件

cnpm install vue-i18n@^9.14.3  

删除掉node_models,再重新加载包:cnpm install 这时候就可以正常显示了

国际化操作:

en.js zh.js为这种格式的数据:

export default {login: {title: 'User Login',loginBtn: 'Login',usernameRule: 'Username is required',passwordRule: 'Password cannot be less than 6 digits',desc: `Test authority account:<br />Provide three kinds of authority accounts:<br />1. Super administrator account: super-admin <br />2. Administrator account: admin <br />3. Test configurable account: test <br />The uniform password is: 123456 <br /><br />Import user account:<br />You can log in with the imported username <br />The password is unified as: 123456 <br /><b>Note: Import user-discriminatory Chinese and English libraries! ! ! ! </b>`},route: {profile: 'Profile',chart: 'chart',user: 'user',excelImport: 'ExcelImport',userManage: 'EmployeeManage',userInfo: 'UserInfo',roleList: 'RoleList',permissionList: 'PermissionList',article: 'article',articleRanking: 'ArticleRanking',articleCreate: 'ArticleCreate',articleDetail: 'ArticleDetail',articleEditor: 'ArticleEditor'}
}

i18n/index.js

import { createI18n } from 'vue-i18n'
import mZhLocale from './lang/zh'
import mEnLocale from './lang/en'
import store from '@/store'const messages = {en: {msg: {...mEnLocale}},zh: {msg: {...mZhLocale}}
}/*** 返回当前 lang*/
function getLanguage () {return store && store.getters && store.getters.language
}
const i18n = createI18n({// 使用 Composition API 模式,则需要将其设置为falselegacy: false,// 全局注入 $t 函数globalInjection: true,locale: getLanguage(),messages
})export default i18n

再在main.js中挂载。

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import installElementPlus from './plugins/element'
import './styles/index.scss'
import * as ElementPlusIconsVue from '@element-plus/icons-vue'
import installIcons from './icons'
import './permission.js'
import i18n from './i18n'
const app = createApp(App)
installElementPlus(app)
// 导入svg图标
installIcons(app)
// 全局注册element图标
for (const [key, component] of Object.entries(ElementPlusIconsVue)) {app.component(key, component)
}
app.use(store).use(router).use(i18n).mount('#app')

组件中调用

<template>中

<p class="title">{{ $t('msg.theme.themeColorChange') }}</p>

<script>中

<script setup>
import { useI18n } from 'vue-i18n'
import { computed, effect } from 'vue'
import { useStore, defineProps } from 'vuex'
import { ElMessage } from 'element-plus'defineProps({effect: {type: String,default: 'dark',validator: function (value) {return ['dark', 'light'].indexOf(value) !== -1}}
})const store = useStore()
const language = computed(() => store.getters.language)
// 切换语言的方法
const i18n = useI18n()
const handleSetLanguage = (lang) => {// 切换i18n的localei18n.locale.value = lang// 修改vuex中保存的languagestore.commit('app/setLanguage', lang)// 提示ElMessage.success(i18n.t('msg.toast.switchLangSuccess'))
}
</script>

相关文章:

  • 聊聊SpringAI流式输出的底层实现?
  • 安全复健|windows常见取证工具
  • 从零开始搭建Django博客③--前端界面实现
  • 超声三维测试水箱与超声功率计:精准医疗与工业检测的核心技术支撑
  • Java基础 4.23
  • GOC 课程制作
  • YOLO数据处理
  • 树莓派超全系列教程文档--(41)树莓派config.txt旧版内存控制选项
  • system verilog 语句 耗时规则
  • MySQL 锁机制
  • SwiftUI 2.Image介绍和使用
  • leve1.4
  • C# AutoResetEvent 详解
  • HTTP:十一.HTTP认证概述
  • 内存管理(Linux程序设计)
  • 宿主机和容器 ping 不通域名解决方法
  • 51c大模型~合集120
  • 汽车可变转向比系统的全面认识
  • Linux下载与安装
  • Python内置函数---breakpoint()
  • 李公明︱一周书记:大学的价值、韧性以及……不相称的对抗
  • 云南洱源县4.8级地震:房屋受损442户,无人员伤亡报告
  • 消费补贴政策力度最大的一届!第六届上海“五五购物节” 4月底启幕
  • 解放军报社论:谱写新时代双拥工作崭新篇章
  • 展讯:漫游者秦龙和巫鸿的三本书
  • 冒充县领导亲戚十年骗取38箱香菇木耳,河南一男子被判拘役