49 lines
1.2 KiB
JavaScript
49 lines
1.2 KiB
JavaScript
const fs = require('node:fs')
|
|
|
|
const prettier = require('prettier')
|
|
|
|
/**
|
|
* @param {import('plop').NodePlopAPI} plop
|
|
* @returns {import('node-plop').PlopGeneratorConfig}
|
|
*/
|
|
exports.languageGenerator = (plop) => {
|
|
return {
|
|
description: 'Add a new language for translations',
|
|
prompts: [
|
|
{
|
|
type: 'input',
|
|
name: 'locale',
|
|
message: 'locale'
|
|
}
|
|
],
|
|
actions: [
|
|
{
|
|
type: 'addMany',
|
|
base: 'locales/en',
|
|
destination: 'locales/{{locale}}',
|
|
templateFiles: 'locales/en/**'
|
|
},
|
|
async (answers) => {
|
|
process.chdir(plop.getPlopfilePath())
|
|
const data = JSON.parse(
|
|
await fs.promises.readFile('i18n.json', { encoding: 'utf-8' })
|
|
)
|
|
data.locales.push(answers.locale)
|
|
const formatted = prettier.format(JSON.stringify(data, null, 2), {
|
|
filepath: 'i18n.json'
|
|
})
|
|
await fs.promises.writeFile('i18n.json', formatted, {
|
|
encoding: 'utf-8'
|
|
})
|
|
return plop.renderString(
|
|
`
|
|
Added '{{locale}}' to the 'locales' array inside 'i18n.json'
|
|
Don't forget to add the flag at 'public/images/svg/languages/{{locale}}.svg'
|
|
`,
|
|
answers
|
|
)
|
|
}
|
|
]
|
|
}
|
|
}
|