diff options
Diffstat (limited to 'scripts/build-locales-coverage.js')
| -rw-r--r-- | scripts/build-locales-coverage.js | 37 |
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", +); |
