From e6c1294c910e6b54d24d62981632cf5e5f79d33f Mon Sep 17 00:00:00 2001 From: Florian Dold Date: Mon, 14 Feb 2022 16:51:13 +0100 Subject: pogen: read files from tsconfig, import po2ts --- packages/pogen/src/po2ts.ts | 60 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 packages/pogen/src/po2ts.ts (limited to 'packages/pogen/src/po2ts.ts') diff --git a/packages/pogen/src/po2ts.ts b/packages/pogen/src/po2ts.ts new file mode 100644 index 000000000..d0f4ed34d --- /dev/null +++ b/packages/pogen/src/po2ts.ts @@ -0,0 +1,60 @@ +/* + This file is part of GNU Taler + (C) 2020 Taler Systems S.A. + + GNU Taler is free software; you can redistribute it and/or modify it under the + terms of the GNU General Public License as published by the Free Software + Foundation; either version 3, or (at your option) any later version. + + GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. See the GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along with + GNU Taler; see the file COPYING. If not, see + */ + +/** + * Convert a .po file into a JavaScript / TypeScript expression. + */ + +// @ts-ignore +import * as po2json from "po2json"; +import * as fs from "fs"; +import * as path from "path"; + +const files = fs + .readdirSync("./src/i18n") + .filter((x) => x.endsWith(".po")) + .map((x) => path.join("./src/i18n/", x)); + +if (files.length === 0) { + console.error("no .po files found in src/i18n/"); + process.exit(1); +} + +console.log(files); + +const chunks: string[] = []; + +for (const filename of files) { + const m = filename.match(/([a-zA-Z0-9-_]+).po/); + + if (!m) { + console.error("error: unexpected filename (expected .po)"); + process.exit(1); + } + + const lang = m[1]; + const pojson = po2json.parseFileSync(filename, { + format: "jed1.x", + fuzzy: true, + }); + const s = + "strings['" + lang + "'] = " + JSON.stringify(pojson, null, " ") + ";\n\n"; + chunks.push(s); +} + +const tsContents = chunks.join(""); + +fs.writeFileSync("src/i18n/strings.ts", tsContents); -- cgit v1.2.3