zoukankan      html  css  js  c++  java
  • Vue国际化四 -- 本地缓存

    本地缓存和国际化后计算label宽度 【在vuex中编写】

    /**
     * @Description: 国际化
     * @Author: 云霄紫潭
     * @Date: 2020年12月29日10:42:36
     * @LastEditTime: 2020年12月29日10:42:36
     * @LastEditors: 云霄紫潭
     */
    import { setLang, getLang } from "@/utils/auth"
    import context from "@/main"
    const state = {
      lang: getLang() || 'cn',
      labelWidth: ''
    }
    const mutations = {
      SET_NEW_LANGUAGE: (state, command) => {
        switch (command) {
          case 'ZH':
            context.$i18n.locale = 'cn'
            state.lang = 'cn'
            setLang(state.lang)
            break;
          case 'EN':
            context.$i18n.locale = 'en'
            state.lang = 'en'
            setLang(state.lang)
            break;
          case 'JP':
            context.$i18n.locale = 'ja'
            state.lang = 'ja'
            setLang(state.lang)
            break;
        }
      },
      /**
         * @method 计算form表单labelWidth国际化后宽度
         * @param  {cnLang}  中文的内容宽度
         * @param  {otherLang}  日语与英语的内容宽度
         * @return {String}  labelWidth 宽度
    */
      GET_LABEL_WIDTH: (state, val) => {
        if (val === undefined) {
          val = {}
        }
        console.log('val===>', val);
        console.log('state.lang===>', state.lang);
        if (state.lang === 'ja' || state.lang === 'en') {
          state.labelWidth = val.otherLang || '190px'
        } else if (state.lang === 'cn') {
          state.labelWidth = val.cnLang || '120px'
        }
        console.log('state.labelWidth==>', state.labelWidth);
      }
    }
    const actions = {
      getLang({ commit }, view) {
        commit('SET_NEW_LANGUAGE', view)
        commit('GET_LABEL_WIDTH', view)
      }
    }
    export default {
      namespaced: true,
      state,
      mutations,
      actions
    }
    
    

    本地缓存选择的语言

    //国际化 
    const lang = "HLT_INTERNATION_LANGUAGE"
    export function getLang() {
      return sessionStorage.getItem(lang)
    }
    export function setLang(cache) {
      return sessionStorage.setItem(lang, cache)
    }
    export function removeLang(cache) {
      return sessionStorage.removeItem(lang)
    }
    

    获取lableWidth

      computed: {
        ...mapGetters(['labelWidth'])
      },
    

    使用

    弹框时使用【在弹框打开的时候】:
    this.$store.commit('transfer/GET_LABEL_WIDTH', { cnLang: '130px', })
    
    如果页面,直接计算labelWidth即可。
    
  • 相关阅读:
    【职业规划】一位资深程序员大牛给予Java初学者的学习路线建议
    一个断点调试的小技巧
    无穷分数
    Spring事务异常回滚,捕获异常不抛出就不会回滚
    理解Servlet和Servlet容器、Web服务器等概念
    图解红黑树及Java进行红黑二叉树遍历的方法
    Majority Element
    Factorial Trailing Zeroes
    Valid Parentheses
    House Robber
  • 原文地址:https://www.cnblogs.com/0520euv/p/14886038.html
Copyright © 2011-2022 走看看