有关ruoyi 项目菜单框如何设置国际化----附上完整代码

2 篇文章 0 订阅

1. i18n的由来

i18n   全称Internationalization,因为单词太长中间18个字母被省略,缩写为18,这样就变成了18n。顾名思义,它是用来提供国际化的

那接下来就讲讲如何在ruoyi 项目里使用:

2. 安装插件

npm install vue-i18n --save

3. 创建文件夹

   在src下创建i18n文件夹,文件夹下面包含en.js,zh.js及index.js

其中index.js用于设置国际化的配置

import Vue from 'vue'
import VueI18n from 'vue-i18n'
import Cookies from 'js-cookie'
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang导入Element的语言包 英文
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang g导入Element的语言包 中文
import enLocale from './en' // 导入项目中用到的英文语言包
import zhLocale from './zh'// 导入项目中用到的中文语言包
Vue.use(VueI18n)
const messages = {                   
  en: {
    ...enLocale,
    ...elementEnLocale
  },
  zh: {
    ...zhLocale,
    ...elementZhLocale,
  },

}

const i18n = new VueI18n({
  locale: localStorage.getItem('language') || 'zh', // 设置当前语种,之所以放到storage中是为了避免用户手动点击刷新页面时语言被自动切换回去,所以需要把语言存起来
  messages, // 设置全局当地语言包,
  fallbackLocale: 'zh', //如果当前语种不存在时,默认设置当前语种
  numberFormats:{ //设置 数字本地化
    'en': {
      currency: { //添加 $
        style: 'currency', currency: 'USD'
      }
    },
    'zh': {
      currency: { //添加 ¥
        style: 'currency', currency: 'JPY', currencyDisplay: 'symbol'
      }
    }
  },
    dateTimeFormats:{//设置 日期时间本地化
    'en': {
      short: { 
        year: 'numeric', month: 'short', day: 'numeric'
      },
      long: {
        year: 'numeric', month: 'short', day: 'numeric',
        weekday: 'short', hour: 'numeric', minute: 'numeric'
      }
    },
    'zh': {
      short: {
        year: 'numeric', month: 'short', day: 'numeric'
      },
      long: {
            year: 'numeric', month: 'short', day: 'numeric',
            weekday: 'short', hour: 'numeric', minute: 'numeric'  
      }
    }
  }
})

export default i18n

en.js :英文语言包

export default {
    common: {
      username: '用户名',
      password: '密码',
      save: '保存',
      edit: '编辑',
      update: '更新',
      delete: '删除',
      forever: '永久',
      expired: '过期'
    },
    menus:{
        首页:"home page",
        用户管理:"user manage"
    },
    search:"search"
}

cn.js:中文语言包

export default {
    common: {
      username: '用户名',
      password: '密码',
      save: '保存',
      edit: '编辑',
      update: '更新',
      delete: '删除',
      forever: '永久',
      expired: '过期'
    },
    menus:{
        首页:"home page",
        用户管理:"user manage"
    },
    search:"搜索"
}

这里的menus:是用于上方menutitle这块,先找了两个菜单测试一下

4. 菜单栏页面增加国际化

改动如下

添加对应的方法:

   this.$te是Vue的内置方法,用于检查是否存在指定的翻译键

   this.$t是Vue的内置方法,用于获取指定翻译键对应的翻译文本

   return item: 如果不存在翻译键,那么返回原始的item

   这个方法是根据传入的item参数,检查是否存在对应的翻译文本,并返回翻译文本或原始的item。用于实现多语言的菜单标题翻译功能

5. 增加语言切换按钮

vue页面:

       <el-select style="width: 100%" @change="changeLanguage" v-model="lang">
          <el-option v-for="lan in langList"
                    :key="lan.value"
                    :label="lan.label"
                    :value="lan.value">
          </el-option>
        </el-select>

对应的数据:

  data(){
    return {
      lang: "cn",
      langList: [
        {
          label: "中文",
          value: "zh"
        },
        {
          label: "English",
          value: "en"
        }
      ],
    }
  },

对应的方法:

  methods: {
    changeLanguage(event){
      i18n.locale= event // 改变为中文
      localStorage.setItem('language',event)//在localStorage中存入设置
    },

这样就实现了语言的切换

6. 按钮国际化

   如果是按钮或者是其他内容又该如何修改,这种情况就更简单了,可以看到,我在前面的语言包里增加了搜索,为的就是修改搜索按钮,只要在页面上做如下修改即可

  这里说明一下,search是我们在语言包里设置的共通名,this.$t是Vue的内置方法,用于获取指定翻译键对应的翻译文本。

  这样就修改好了

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿土不土

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值