import fs from 'fs';
import path from 'path';
import { fileURLToPath } from 'url';

const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const FR_DIR = path.join(__dirname, 'scripts');
const OPPORTUNITIES_FILE = path.join(__dirname, 'translation-opportunities.json');

// Charger les opportunités de traduction
const data = JSON.parse(fs.readFileSync(OPPORTUNITIES_FILE, 'utf8'));
const { reliableTranslations, opportunities } = data;

// Fonction pour échapper les caractères spéciaux pour regex
function escapeRegExp(string) {
    return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
}

// Statistiques
let stats = {
    filesProcessed: 0,
    filesModified: 0,
    replacementsMade: 0,
    errors: 0
};

console.log('Application automatique des traductions...\n');
console.log('='.repeat(60));

// Traiter chaque fichier avec des opportunités
opportunities.forEach(({ file, translations }) => {
    const filePath = path.join(FR_DIR, file);
    stats.filesProcessed++;

    try {
        let content = fs.readFileSync(filePath, 'utf8');
        let modified = false;
        let replacementsInFile = 0;

        // Appliquer chaque traduction
        translations.forEach(({ en, fr }) => {
            // Vérifier que la chaîne anglaise existe toujours dans le fichier
            if (content.includes(en)) {
                // Remplacement simple (pas de regex pour éviter les problèmes avec les caractères spéciaux)
                const newContent = content.split(en).join(fr);

                if (newContent !== content) {
                    const count = (content.split(en).length - 1);
                    content = newContent;
                    modified = true;
                    replacementsInFile += count;
                    stats.replacementsMade += count;
                }
            }
        });

        // Sauvegarder si modifié
        if (modified) {
            fs.writeFileSync(filePath, content, 'utf8');
            stats.filesModified++;
            console.log(`✓ ${file} : ${replacementsInFile} remplacement(s)`);
        }

    } catch (error) {
        stats.errors++;
        console.error(`✗ ${file} : ${error.message}`);
    }
});

console.log('\n' + '='.repeat(60));
console.log('Application terminée !');
console.log('='.repeat(60));
console.log(`Fichiers traités : ${stats.filesProcessed}`);
console.log(`Fichiers modifiés : ${stats.filesModified}`);
console.log(`Remplacements effectués : ${stats.replacementsMade}`);
console.log(`Erreurs : ${stats.errors}`);
console.log('='.repeat(60));
