49 lines
1.3 KiB
JavaScript
49 lines
1.3 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,
|
|
)
|
|
},
|
|
],
|
|
}
|
|
}
|