webui/scripts/generate-locales.js

33 lines
1020 B
JavaScript

// scripts/generate-locales.js
const fs = require("fs");
const path = require("path");
const localesDir = path.join(__dirname, "../public/locales");
const outputFile = path.join(__dirname, "../src/i18n/generatedLocales.ts");
// Discover locale folders
const rawLocales = fs
.readdirSync(localesDir)
.filter((name) => fs.statSync(path.join(localesDir, name)).isDirectory());
// Normalise folder names (e.g., en_GB → en-GB)
const locales = rawLocales.map((l) => l.replace("_", "-"));
// Sort by locale code
locales.sort((a, b) => a.localeCompare(b));
// Only region-specific locales (those with a hyphen)
const availableLocales = locales.filter((l) => l.includes("-"));
// Generate TS file
const ts = `
// AUTO-GENERATED FILE — DO NOT EDIT MANUALLY
export const availableLocales = ${JSON.stringify(availableLocales, null, 2)} as const;
export type Locale = typeof availableLocales[number];
`;
fs.writeFileSync(outputFile, ts);
console.log("Generated generatedLocales.ts");