import fs from 'fs'; import path from 'path'; import { fileURLToPath } from 'url'; // Replicate __dirname behavior for ES modules const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const i18nDir = path.join(__dirname, '../i18n'); const outputDir = path.join(__dirname, '../src'); const outputFile = path.join(outputDir, 'translations.ts'); const allTranslations = {}; try { // Ensure output directory exists if (!fs.existsSync(outputDir)) { fs.mkdirSync(outputDir, { recursive: true }); } const files = fs.readdirSync(i18nDir); files.forEach(file => { if (path.extname(file) === '.json') { const lang = path.basename(file, '.json'); const filePath = path.join(i18nDir, file); const content = fs.readFileSync(filePath, 'utf8'); try { allTranslations[lang] = JSON.parse(content); console.log(`Successfully processed ${file}`); } catch (parseError) { console.error(`Error parsing JSON from ${file}:`, parseError); } } }); const tsContent = `// Auto-generated by scripts/translations.js // Do not edit this file manually. // All changes will be overwritten. export const translations: Record = ${JSON.stringify(allTranslations, null, 2)}; `; fs.writeFileSync(outputFile, tsContent, 'utf8'); console.log(`\nSuccessfully generated TypeScript translations file at ${outputFile}`); console.log('Included languages:', Object.keys(allTranslations).join(', ')); } catch (error) { console.error('Error generating translations file:', error); process.exit(1); }