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:
100
tools/analyze-english-terms.js
Normal file
100
tools/analyze-english-terms.js
Normal file
@@ -0,0 +1,100 @@
|
||||
import fs from 'fs';
|
||||
|
||||
// Lire le fichier JSON
|
||||
const jsonData = JSON.parse(fs.readFileSync('./compendium/wfrp4e-core.items.json', 'utf8'));
|
||||
const frJson = JSON.parse(fs.readFileSync('./fr.json', 'utf8'));
|
||||
|
||||
// Chercher les termes en anglais (labels et titres courts)
|
||||
const englishTerms = new Set();
|
||||
const termOccurrences = {};
|
||||
|
||||
// Parcourir les entrées
|
||||
jsonData.entries.forEach(entry => {
|
||||
// Vérifier le champ 'name' pour des patterns entre parenthèses
|
||||
if (entry.name && entry.name.includes('(') && entry.name.includes(')')) {
|
||||
const matches = entry.name.matchAll(/\(([^)]+)\)/g);
|
||||
|
||||
for (const match of matches) {
|
||||
const parenthesisContent = match[1];
|
||||
|
||||
// Liste de termes français connus à exclure
|
||||
const frenchTerms = [
|
||||
'Mineure', 'Majeure', 'Accessible', 'Complexe', 'Difficile',
|
||||
'Facile', 'Intermédiaire', 'Type', 'Domaine', 'Arme de jet',
|
||||
'Arme de mêlée', 'Compétence avancée', 'Compétence de base'
|
||||
];
|
||||
|
||||
// Détecter si c'est potentiellement de l'anglais
|
||||
// - Contient des mots anglais courants (et, the, or, of)
|
||||
// - Ne contient pas de caractères français (é, è, à, ô, etc.)
|
||||
const hasEnglishWords = /\b(and|the|or|of|to|in|a|is)\b/i.test(parenthesisContent);
|
||||
const hasNoFrenchChars = !/[àâäéèêëïîôùûüÿæœç]/i.test(parenthesisContent);
|
||||
const notInFrenchList = !frenchTerms.some(term =>
|
||||
parenthesisContent.toLowerCase().includes(term.toLowerCase())
|
||||
);
|
||||
|
||||
if ((hasEnglishWords || (hasNoFrenchChars && notInFrenchList)) &&
|
||||
parenthesisContent.length > 2) {
|
||||
englishTerms.add(parenthesisContent);
|
||||
|
||||
if (!termOccurrences[parenthesisContent]) {
|
||||
termOccurrences[parenthesisContent] = [];
|
||||
}
|
||||
|
||||
termOccurrences[parenthesisContent].push({
|
||||
id: entry.id,
|
||||
name: entry.name
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
// Afficher les résultats
|
||||
console.log('Termes anglais détectés dans les noms (entre parenthèses):');
|
||||
console.log('==========================================================\n');
|
||||
|
||||
const sortedTerms = Array.from(englishTerms).sort();
|
||||
sortedTerms.forEach(term => {
|
||||
console.log(`${term} (${termOccurrences[term].length} occurrence(s)):`);
|
||||
termOccurrences[term].slice(0, 3).forEach(occ => {
|
||||
console.log(` - ${occ.id}: ${occ.name}`);
|
||||
});
|
||||
if (termOccurrences[term].length > 3) {
|
||||
console.log(` ... et ${termOccurrences[term].length - 3} autres`);
|
||||
}
|
||||
console.log('');
|
||||
});
|
||||
|
||||
console.log(`\nTotal: ${englishTerms.size} termes anglais différents détectés`);
|
||||
|
||||
// Chercher aussi dans d'autres champs
|
||||
console.log('\n\nAnalyse des autres champs potentiels...');
|
||||
console.log('========================================\n');
|
||||
|
||||
// Chercher des labels courts en anglais dans tous les champs
|
||||
const fieldsToCheck = ['type', 'special', 'description'];
|
||||
const englishInFields = {};
|
||||
|
||||
jsonData.entries.slice(0, 20).forEach(entry => {
|
||||
Object.keys(entry).forEach(key => {
|
||||
if (typeof entry[key] === 'string' && entry[key].length < 50) {
|
||||
const value = entry[key];
|
||||
// Détecter des mots anglais courants
|
||||
if (/\b(Rating|Target|Group|Feature|Type|Level|Rank)\b/.test(value)) {
|
||||
if (!englishInFields[key]) {
|
||||
englishInFields[key] = new Set();
|
||||
}
|
||||
englishInFields[key].add(value);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Object.keys(englishInFields).forEach(field => {
|
||||
console.log(`Champ '${field}':`);
|
||||
englishInFields[field].forEach(value => {
|
||||
console.log(` - "${value}"`);
|
||||
});
|
||||
console.log('');
|
||||
});
|
||||
Reference in New Issue
Block a user