Ajout de la commande /voyage et grosse MAJK de la commande /auberge

This commit is contained in:
2026-01-07 15:04:49 +01:00
parent c8119601d8
commit f525b6c07a
1329 changed files with 24138 additions and 4397 deletions

View 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`);