aboutsummaryrefslogtreecommitdiff
path: root/scripts/merge-messages.js
diff options
context:
space:
mode:
authorFuwn <[email protected]>2026-01-24 13:09:50 +0000
committerFuwn <[email protected]>2026-01-24 13:09:50 +0000
commit396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b (patch)
treeb9df4ca6a70db45cfffbae6fdd7252e20fb8e93c /scripts/merge-messages.js
downloadumami-396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b.tar.xz
umami-396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b.zip
Initial commitHEADmain
Created from https://vercel.com/new
Diffstat (limited to 'scripts/merge-messages.js')
-rw-r--r--scripts/merge-messages.js43
1 files changed, 43 insertions, 0 deletions
diff --git a/scripts/merge-messages.js b/scripts/merge-messages.js
new file mode 100644
index 0000000..29abc53
--- /dev/null
+++ b/scripts/merge-messages.js
@@ -0,0 +1,43 @@
+/* eslint-disable no-console */
+import fs from 'node:fs';
+import path from 'node:path';
+import { createRequire } from 'module';
+import prettier from 'prettier';
+
+const require = createRequire(import.meta.url);
+
+const messages = require('../build/extracted-messages.json');
+const dest = path.resolve(process.cwd(), 'src/lang');
+const files = fs.readdirSync(dest);
+const keys = Object.keys(messages).sort();
+
+/*
+This script takes extracted messages and merges them
+with the existing files under `lang`. Any newly added
+keys will be printed to the console.
+ */
+files.forEach(file => {
+ const lang = require(path.resolve(process.cwd(), `src/lang/${file}`));
+
+ console.log(`Merging ${file}`);
+
+ const merged = keys.reduce((obj, key) => {
+ const message = lang[key];
+
+ if (file === 'en-US.json') {
+ obj[key] = messages[key].defaultMessage;
+ } else {
+ obj[key] = message || messages[key].defaultMessage;
+ }
+
+ if (!message) {
+ console.log(`* Added key ${key}`);
+ }
+
+ return obj;
+ }, {});
+
+ const json = prettier.format(JSON.stringify(merged), { parser: 'json' });
+
+ fs.writeFileSync(path.resolve(dest, file), json);
+});