实现i18n前端国际化的核心原理浅剖析

607 阅读1分钟

对实现i18n前端国际化的核心原理做一个浅剖析,只造轮子不造车,省去天花乱坠的描述直接上代码


//创建语言包对象
 const zh = {
      page: {
        login: {
          loginButton: '登录'
        },
      },
    };

    /**
     * 解析层级对象
     * @param obj {*} {obj: {a: 'xxx',}}
     * @param value obj.a
     */
    const getlanguageValue = (obj = {}, value = '') => {
      if (Object.prototype.toString.call(obj) !== '[object Object]') {
        return obj;
      }
      const toArray = value.split('.');
      return toArray.reduce((preVal, currVal) => {
        if (!preVal) return null;
        return preVal[currVal];
      }, obj);
    };
    
    //调用
    console.log(getlanguageValue(zh, 'page.login.loginButton'));