build-locales-coverage.js 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. const { readdirSync, writeFileSync } = require("fs");
  2. const files = readdirSync(`${__dirname}/../packages/excalidraw/locales`);
  3. const flatten = (object = {}, result = {}, extraKey = "") => {
  4. for (const key in object) {
  5. if (typeof object[key] !== "object") {
  6. result[extraKey + key] = object[key];
  7. } else {
  8. flatten(object[key], result, `${extraKey}${key}.`);
  9. }
  10. }
  11. return result;
  12. };
  13. const locales = files.filter(
  14. (file) => file !== "README.md" && file !== "percentages.json",
  15. );
  16. const percentages = {};
  17. for (let index = 0; index < locales.length; index++) {
  18. const currentLocale = locales[index];
  19. const data = flatten(
  20. require(`${__dirname}/../packages/excalidraw/locales/${currentLocale}`),
  21. );
  22. const allKeys = Object.keys(data);
  23. const translatedKeys = allKeys.filter((item) => data[item] !== "");
  24. const percentage = Math.floor((100 * translatedKeys.length) / allKeys.length);
  25. percentages[currentLocale.replace(".json", "")] = percentage;
  26. }
  27. writeFileSync(
  28. `${__dirname}/../packages/excalidraw/locales/percentages.json`,
  29. `${JSON.stringify(percentages, null, 2)}\n`,
  30. "utf8",
  31. );