code: function parseJSON(locale, data = {}, options = {}) {
    const separator = options.keyseparator || '##';
    const json = {};
    const ctxSeparator = options.ctxSeparator || '_';
  
    Object.keys(data).forEach((m) => {
      const context = data[m];
  
      Object.keys(context).forEach((key) => {
        let targetKey = key;
        let appendTo = json;
  
        if (key.length === 0) {
          // delete if msgid is empty.
          // this might be the header.
          delete context[key];
          return;
        }
  
        if (options.skipUntranslated && isFuzzy(context[key])) {
          delete context[key];
          return;
        }
  
        if (key.indexOf(separator) > -1) {
          const keys = key.split(separator);
  
          let x = 0;
          while (keys[x]) {
            if (x < keys.length - 1) {
              appendTo[keys[x]] = appendTo[keys[x]] || {};
              appendTo = appendTo[keys[x]];
            } else {
              targetKey = keys[x];
            }
            x += 1;
          }
        }
  
        if (m !== '') targetKey = `${targetKey}${ctxSeparator}${m}`;
  
        const values = context[key].msgstr;
        const newValues = getGettextValues(values, locale, targetKey, options);
        Object.assign(appendTo, newValues);
      });
    });
  
    return Promise.resolve(json);
  }
docs: /*
  barebone json --> i18next json