const fs = require('fs').promises; const gt = require("gettext-parser"); const l = require("lodash"); const path = require('path'); async function* getFiles(dir) { const dirents = await fs.readdir(dir, { withFileTypes: true }); for (const dirent of dirents) { const res = path.resolve(dir, dirent.name); if (dirent.isDirectory()) { yield* getFiles(res); } else { yield res; } } } ;(async () => { const fileRe = /.+\.po$/; const target = path.normalize("./translations/"); const parent = path.join(target, ".."); for await (const f of getFiles(target)) { if (!fileRe.test(f)) continue; const entry = path.relative(parent, f); console.log(`=> processing: ${entry}`); const content = await fs.readFile(f); const data = gt.po.parse(content, "utf-8") const buff = gt.po.compile(data, {sort: true}); await fs.writeFile(f, buff); } })()