diff options
| author | Fuwn <[email protected]> | 2026-01-24 13:09:50 +0000 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2026-01-24 13:09:50 +0000 |
| commit | 396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b (patch) | |
| tree | b9df4ca6a70db45cfffbae6fdd7252e20fb8e93c /scripts/merge-messages.js | |
| download | umami-396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b.tar.xz umami-396acf3bbbe00a192cb0ea0a9ccf91b1d8d2850b.zip | |
Created from https://vercel.com/new
Diffstat (limited to 'scripts/merge-messages.js')
| -rw-r--r-- | scripts/merge-messages.js | 43 |
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); +}); |