forked from public/foundryvtt-wh4-lang-fr-fr
Ajout de la commande /voyage et grosse MAJK de la commande /auberge
This commit is contained in:
154
tools/replace-review-scripts.js
Normal file
154
tools/replace-review-scripts.js
Normal file
@@ -0,0 +1,154 @@
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { fileURLToPath } from 'node:url';
|
||||
|
||||
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
||||
const WFRP4E_SCRIPTS = '/home/morr/work/foundryvtt/WFRP4e-FoundryVTT/scripts';
|
||||
const FR_SCRIPTS = '/home/morr/work/foundryvtt/foundryvtt-wh4-lang-fr-fr/scripts';
|
||||
const REVIEW_FILE = path.join(__dirname, 'scripts-to-review.json');
|
||||
const OUTPUT_FILE = path.join(__dirname, 'scripts-replaced-list.md');
|
||||
|
||||
const scriptsToReview = JSON.parse(fs.readFileSync(REVIEW_FILE, 'utf-8'));
|
||||
|
||||
console.log(`\n=== REMPLACEMENT DES SCRIPTS PAR LES VERSIONS SYSTÈME ===\n`);
|
||||
console.log(`Nombre de scripts à remplacer: ${scriptsToReview.length}\n`);
|
||||
|
||||
let replaced = 0;
|
||||
let errors = [];
|
||||
const replacedList = [];
|
||||
|
||||
scriptsToReview.forEach(({file, reason}, index) => {
|
||||
const wfrp4ePath = path.join(WFRP4E_SCRIPTS, file);
|
||||
const frPath = path.join(FR_SCRIPTS, file);
|
||||
const backupPath = frPath + '.fr-backup';
|
||||
|
||||
try {
|
||||
// Sauvegarder la version FR avec traductions
|
||||
if (fs.existsSync(frPath)) {
|
||||
fs.copyFileSync(frPath, backupPath);
|
||||
}
|
||||
|
||||
// Remplacer par la version WFRP4E
|
||||
if (fs.existsSync(wfrp4ePath)) {
|
||||
fs.copyFileSync(wfrp4ePath, frPath);
|
||||
replaced++;
|
||||
|
||||
// Extraire les textes traduits de la sauvegarde pour référence
|
||||
const frContent = fs.readFileSync(backupPath, 'utf-8');
|
||||
const translations = extractTranslations(frContent);
|
||||
|
||||
replacedList.push({
|
||||
index: index + 1,
|
||||
file,
|
||||
translations
|
||||
});
|
||||
|
||||
console.log(`✓ [${index + 1}/${scriptsToReview.length}] ${file}`);
|
||||
} else {
|
||||
errors.push(`Source non trouvée: ${file}`);
|
||||
console.log(`✗ [${index + 1}/${scriptsToReview.length}] ${file} - Source non trouvée`);
|
||||
}
|
||||
} catch (error) {
|
||||
errors.push(`${file}: ${error.message}`);
|
||||
console.log(`✗ [${index + 1}/${scriptsToReview.length}] ${file} - Erreur: ${error.message}`);
|
||||
}
|
||||
});
|
||||
|
||||
function extractTranslations(content) {
|
||||
const translations = [];
|
||||
|
||||
// Patterns pour extraire les textes en français
|
||||
const patterns = [
|
||||
/ui\.notifications\.(info|warn|error|notify)\s*\(\s*["'`]([^"'`]+)["'`]/g,
|
||||
/this\.script\.(scriptNotification|scriptMessage|notification)\s*\(\s*["'`]([^"'`]+)["'`]/g,
|
||||
/["'`](Chargement|Impossible|Êtes-vous|Voulez-vous|créé|modifié|supprimé|Erreur)[^"'`]*["'`]/gi,
|
||||
/warhammer\.utility\.findAllItems\([^,]+,\s*["'`]([^"'`]+)["'`]/g
|
||||
];
|
||||
|
||||
patterns.forEach(pattern => {
|
||||
const regex = new RegExp(pattern.source, pattern.flags);
|
||||
let match;
|
||||
while ((match = regex.exec(content)) !== null) {
|
||||
const text = match[2] || match[1];
|
||||
if (text && text.length > 3 && /[a-zàâäéèêëïîôöùûüÿçœæ]/i.test(text)) {
|
||||
if (!translations.includes(text)) {
|
||||
translations.push(text);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return translations;
|
||||
}
|
||||
|
||||
// Générer le rapport
|
||||
let report = `# Scripts remplacés par les versions système\n\n`;
|
||||
report += `Date: ${new Date().toISOString()}\n\n`;
|
||||
report += `## Résumé\n\n`;
|
||||
report += `- **Scripts remplacés**: ${replaced}\n`;
|
||||
report += `- **Erreurs**: ${errors.length}\n\n`;
|
||||
report += `Tous les scripts ont été remplacés par leurs versions du système WFRP4E.\n`;
|
||||
report += `Les versions françaises avec traductions sont sauvegardées avec l'extension \`.fr-backup\`.\n\n`;
|
||||
|
||||
if (errors.length > 0) {
|
||||
report += `## Erreurs\n\n`;
|
||||
errors.forEach(error => {
|
||||
report += `- ${error}\n`;
|
||||
});
|
||||
report += `\n`;
|
||||
}
|
||||
|
||||
report += `## Scripts à revoir manuellement\n\n`;
|
||||
report += `Pour chaque script, vous devez :\n`;
|
||||
report += `1. Comparer la version actuelle (système) avec le backup (.fr-backup)\n`;
|
||||
report += `2. Identifier les textes à traduire\n`;
|
||||
report += `3. Appliquer les traductions nécessaires\n\n`;
|
||||
|
||||
report += `| # | Fichier | Traductions trouvées |\n`;
|
||||
report += `|---|---------|----------------------|\n`;
|
||||
|
||||
replacedList.forEach(({index, file, translations}) => {
|
||||
const translationsText = translations.length > 0
|
||||
? translations.slice(0, 3).join(', ') + (translations.length > 3 ? '...' : '')
|
||||
: 'Aucune';
|
||||
report += `| ${index} | \`${file}\` | ${translationsText} |\n`;
|
||||
});
|
||||
|
||||
report += `\n## Commandes utiles\n\n`;
|
||||
report += `### Comparer un script avec son backup\n\n`;
|
||||
report += `\`\`\`bash\n`;
|
||||
report += `# Avec meld\n`;
|
||||
report += `meld scripts/<fichier> scripts/<fichier>.fr-backup\n\n`;
|
||||
report += `# Avec diff\n`;
|
||||
report += `diff -u scripts/<fichier>.fr-backup scripts/<fichier>\n`;
|
||||
report += `\`\`\`\n\n`;
|
||||
|
||||
report += `### Exemples de scripts\n\n`;
|
||||
if (replacedList.length > 0) {
|
||||
const example = replacedList[0];
|
||||
report += `Premier script: \`${example.file}\`\n\n`;
|
||||
report += `\`\`\`bash\n`;
|
||||
report += `meld scripts/${example.file} scripts/${example.file}.fr-backup\n`;
|
||||
report += `\`\`\`\n\n`;
|
||||
|
||||
if (example.translations.length > 0) {
|
||||
report += `Traductions à réappliquer:\n`;
|
||||
example.translations.forEach(t => {
|
||||
report += `- "${t}"\n`;
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
fs.writeFileSync(OUTPUT_FILE, report, 'utf-8');
|
||||
|
||||
console.log(`\n=== RÉSUMÉ ===`);
|
||||
console.log(`Scripts remplacés: ${replaced}/${scriptsToReview.length}`);
|
||||
console.log(`Erreurs: ${errors.length}`);
|
||||
console.log(`\nBackups créés avec extension: .fr-backup`);
|
||||
console.log(`Liste détaillée: ${OUTPUT_FILE}`);
|
||||
|
||||
console.log(`\n=== PROCHAINES ÉTAPES ===`);
|
||||
console.log(`1. Consulter: ${OUTPUT_FILE}`);
|
||||
console.log(`2. Pour chaque script, comparer avec son .fr-backup`);
|
||||
console.log(`3. Réappliquer les traductions nécessaires`);
|
||||
console.log(`4. Supprimer les .fr-backup une fois terminé\n`);
|
||||
Reference in New Issue
Block a user