实现elementUI多语言切换

根据自己的需要加载表情包,不需要在页面上手动切换

// 在main.js中引入并设置

// import locale from "element-ui/lib/locale/lang/zh-CN";
import locale from 'element-ui/lib/locale/lang/en'
Vue.use(ElementUI, { locale, size: 'small' })

使用 i18n 手动切换语言

  • 安装相关依赖
    npm install vue vue-i18n --save - 注意两者版本匹配问题,不然安装报错

  • 在 src 目录下创建 lang 文件夹(包含不同的语言包:zh.js\en.js…\index.js)。各个文件的内容如下:

    //zh.js
    export default {
      item: {
        username: '用户名',
        password: '密码',
        email: '邮箱',
      },
    }
    
    //en.js
    export default {
      item: {
        username: 'Username',
        password: 'Password',
        email: 'Email',
      },
    }
    
    //index.js
    import Vue from 'vue'
    import VueI18n from 'vue-i18n'
    import elementEnLocale from 'element-ui/lib/locale/lang/en'
    import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'
    import elementLocal from 'element-ui/lib/locale'
    
    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',
      messages,
    })
    elementLocal.i18n((key, value) => i18n.t(key, value))
    
    export default i18n
    
    • 在 src/store 中设置 language 的相关信息
    //src/store/index.js
    import Vue from 'vue'
    import Vuex from 'vuex'
    
    Vue.use(Vuex)
    
    export default new Vuex.Store({
      state: {
        language: localStorage.getItem('language') || 'zh',
      },
    
      mutations: {
        SET_LANGUAGE: (state, language) => {
          state.language = language
          localStorage.setItem('language', language)
        },
      },
    
      actions: {
        setLanguage({ commit }, language) {
          commit('SET_LANGUAGE', language)
        },
      },
    
      getters: {
        language: (state) => {
          return state.language
        },
      },
    })
    
    • 在页面中应用完成语言的切换
    <template>
      <div>
        <el-dropdown trigger="click" @command="handleSetLanguage">
          <div>选择语言</div>
          <el-dropdown-menu slot="dropdown">
            <el-dropdown-item :disabled="language === 'zh'" command="zh"
              >中文</el-dropdown-item
            >
            <el-dropdown-item :disabled="language === 'en'" command="en"
              >English</el-dropdown-item
            >
          </el-dropdown-menu>
        </el-dropdown>
    
        <div>
          <p>用户:{{ $t('item.username') }}</p>
          <p>密码:{{ $t('item.password') }}</p>
          <p>邮箱:{{ $t('item.email') }}</p>
        </div>
      </div>
    </template>
    <script>
      export default {
        name: 'Lang',
        data() {
          return {
            dateTime: '',
          }
        },
        computed: {
          language() {
            return this.$store.getters.language
          },
        },
        methods: {
          handleSetLanguage(lang) {
            this.$i18n.locale = lang
            this.$store.dispatch('setLanguage', lang)
          },
        },
      }
    </script>
    
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
element-ui的多语言切换可以通过Vue的国际化插件vue-i18n来实现。下面是一个简单的示例: 首先,安装vue-i18n插件: ``` npm install vue-i18n ``` 然后,在项目的入口文件(一般是main.js)中引入vue-i18n: ```javascript import Vue from 'vue' import VueI18n from 'vue-i18n' Vue.use(VueI18n) ``` 然后,创建一个i18n实例,配置不同的语言: ```javascript const i18n = new VueI18n({ locale: 'zh-CN', // 默认显示的语言 messages: { 'zh-CN': require('./locales/zh-CN.json'), // 中文语言包 'en-US': require('./locales/en-US.json') // 英文语言包 } }) ```***言包。 接下来,在组件中使用多语言功能。假设我们有一个button组件,在button组件中使用了element-ui的组件,我们现在要实现这个button的多语言切换。 首先,在组件的template中使用`$t`方法来获取多语言文本: ```html <template> <div> <el-button>{{ $t('buttonText') }}</el-button> </div> </template> ``` 然后,在组件的script中使用`this.$i18n.locale`来切换当前的语言: ```javascript export default { methods: { changeLanguage() { if (this.$i18n.locale === 'zh-CN') { this.$i18n.locale = 'en-US' } else { this.$i18n.locale = 'zh-CN' } } } } ```***内容如下: ```json // zh-CN.json { "buttonText": "按钮" } // en-US.json { "buttonText": "Button" } ``` 这样,当我们切换语言时,button组件中的文本会根据当前的语言包进行切换。 以上就是element-ui多语言切换的基本实现过程。希望能对你有所帮助!如有疑问,请继续提问。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值