A1 - Translations to keypaths

A1 - Translations to keypaths

by Csaba Hellinger

HTML

<pre id="output"></pre>

JavaScript

// lets pretend this is what we got from the real translations endpoint.
// the texts are different for different services.
const response = {
  "translations": {
    "app": {
      "exit": {
        "message": "Exit",
        "title": "Are you sure?"
      },
      "geoRestriction": {
        "message": "Sorry, this app is currently not available in your region.",
        "title": "Geo restriction"
      }
    }
  }
};

const replaceTextsToKeypaths = (obj, parentKey='') => {
  if (typeof obj !== "object") {
    return;
  }
  Object.keys(obj).forEach(key => {
    const keyPath = [parentKey, key].filter(Boolean).join('.');
    if (typeof obj[key] === "string") {
      obj[key] = keyPath;
    } else {
      replaceTextsToKeypaths(obj[key], keyPath);
    }
  })
};

replaceTextsToKeypaths(response.translations);

// display result.
// now we have service independent keypaths instead of the texts.
document.getElementById('output').innerText = JSON.stringify(response, null, 2);