33 lines
1020 B
JavaScript
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");
|