summaryrefslogtreecommitdiffstats
path: root/scripts/build-locales-coverage.js
diff options
context:
space:
mode:
authorkj_sh6042026-03-15 16:19:36 -0400
committerkj_sh6042026-03-15 16:19:36 -0400
commit72ece7c00b091011617fccf719df7f602cf4f7c7 (patch)
tree75a085594679b4282faac3b3646d589bf5a67ea5 /scripts/build-locales-coverage.js
parentc142734224f6263180e4cbe6fabec591a27972a1 (diff)
refactor: scripts/
Diffstat (limited to 'scripts/build-locales-coverage.js')
-rw-r--r--scripts/build-locales-coverage.js37
1 files changed, 37 insertions, 0 deletions
diff --git a/scripts/build-locales-coverage.js b/scripts/build-locales-coverage.js
new file mode 100644
index 0000000..bab7f2f
--- /dev/null
+++ b/scripts/build-locales-coverage.js
@@ -0,0 +1,37 @@
+const { readdirSync, writeFileSync } = require("fs");
+const files = readdirSync(`${__dirname}/../packages/excalidraw/locales`);
+
+const flatten = (object = {}, result = {}, extraKey = "") => {
+ for (const key in object) {
+ if (typeof object[key] !== "object") {
+ result[extraKey + key] = object[key];
+ } else {
+ flatten(object[key], result, `${extraKey}${key}.`);
+ }
+ }
+ return result;
+};
+
+const locales = files.filter(
+ (file) => file !== "README.md" && file !== "percentages.json",
+);
+
+const percentages = {};
+
+for (let index = 0; index < locales.length; index++) {
+ const currentLocale = locales[index];
+ const data = flatten(
+ require(`${__dirname}/../packages/excalidraw/locales/${currentLocale}`),
+ );
+
+ const allKeys = Object.keys(data);
+ const translatedKeys = allKeys.filter((item) => data[item] !== "");
+ const percentage = Math.floor((100 * translatedKeys.length) / allKeys.length);
+ percentages[currentLocale.replace(".json", "")] = percentage;
+}
+
+writeFileSync(
+ `${__dirname}/../packages/excalidraw/locales/percentages.json`,
+ `${JSON.stringify(percentages, null, 2)}\n`,
+ "utf8",
+);