control-panel-for-twitter/scripts/update-locale-messages.js

47 lines
1.2 KiB
JavaScript

const fs = require('fs')
const {sortProperties} = require('./utils')
if (process.argv.some(arg => /^-h|--help$/.test(arg))) {
console.log(`
Updates ../_locales/**/messages.json with translations from ./scripts/translations.json
Where translations.json is in the format:
{
"exampleMessageLabel": {
"en": "English version",
"es": "Versión en español"
}
}
`.trim()
)
process.exit()
}
let translationsJson = JSON.parse(fs.readFileSync('./translations.json', 'utf-8'))
let localeMessagesJson = new Map()
for (let [messageProp, translations] of Object.entries(translationsJson)) {
for (let [localeCode, message] of Object.entries(translations)) {
if (!localeMessagesJson.has(localeCode)) {
localeMessagesJson.set(
localeCode,
JSON.parse(
fs.readFileSync(`../_locales/${localeCode}/messages.json`, 'utf-8')
)
)
}
let messagesJson = localeMessagesJson.get(localeCode)
messagesJson[messageProp] = {...messagesJson[messageProp], message}
}
}
for (let [localeCode, messagesJson] of localeMessagesJson.entries()) {
fs.writeFileSync(
`../_locales/${localeCode}/messages.json`,
JSON.stringify(sortProperties(messagesJson), null, 2),
'utf8'
)
}