Compare commits

...

7 Commits

Author SHA1 Message Date
94ca8cb6ea Align to v9.2.X 2025-09-23 16:44:41 +02:00
6af8d03d22 Fix natation/swim 2025-07-25 15:03:04 +02:00
7afcadfb6f Fix natation/swim 2025-07-25 10:51:41 +02:00
5801a5270f Fix translated talents ... 2025-07-20 10:17:55 +02:00
f8908617a1 Fix translated talents ... 2025-07-20 10:17:37 +02:00
4b36c52bb1 Enhance auto-translation 2025-06-04 20:00:36 +02:00
7685409a92 Enhance auto-translation 2025-06-04 17:46:20 +02:00
38 changed files with 187 additions and 122 deletions

View File

@@ -2421,6 +2421,18 @@
"name": "Sens aiguisé",
"tests": "Perception (Sens)"
},
{
"description": "<p>Lun de vos cinq sens principaux est particulièrement développé, vous permettant de repérer ce qui échappe à dautres. Vous pouvez effectuer des Tests de Perception pour détecter des détails normalement imperceptibles grâce au sens associé, déterminés par le MJ. Cela peut être : voir un aigle au-delà du champ visuel de tout le monde, sentir un poison presque inodore, entendre la respiration dune souris immobile dans un mur, percevoir une lettre effacée dans une gravure, ou déceler que deux bières dun même brasseur ont été tirées de deux tonneaux différents.</p>",
"id": "Acute Sense (Taste)",
"name": "Sens aiguisé (Goût)",
"tests": "Perception (Goût)"
},
{
"description": "<p>Lun de vos cinq sens principaux est particulièrement développé, vous permettant de repérer ce qui échappe à dautres. Vous pouvez effectuer des Tests de Perception pour détecter des détails normalement imperceptibles grâce au sens associé, déterminés par le MJ. Cela peut être : voir un aigle au-delà du champ visuel de tout le monde, sentir un poison presque inodore, entendre la respiration dune souris immobile dans un mur, percevoir une lettre effacée dans une gravure, ou déceler que deux bières dun même brasseur ont été tirées de deux tonneaux différents.</p>",
"id": "Acute Sense (Sight)",
"name": "Sens aiguisé (Vue)",
"tests": "Perception (Vue)"
},
{
"description": "<p>Votre expérience, Talent ou entraînement vous permet de manipuler de façon plus sûre les Vents de la Magie. Vous ne subissez pas dIncantation Imparfaite si vous obtenez un double à un Test de Focalisation réussi.</p>",
"id": "Aethyric Attunement",
@@ -5973,6 +5985,11 @@
"id": "Lore (Tilea)",
"name": "Savoir (Tilée)"
},
{
"description": "<p>Posséder une Compétence Savoir signifie que vous avez officiellement étudié, ou avez appris dune façon ou dune autre, une branche de connaissances avancées. Vous possédez des données approfondies dans une spécialisation et navez donc pas besoin deffectuer de Test pour que le MJ vous donne les éléments dinformation utiles. Si vous recherchez des informations spécifiques moins connues, vous aurez besoin deffectuer un Test de Savoir, modifié selon la nature obscure de linformation, où les DR indiqueront de combien de détails vous vous souvenez.<p>En combat, un Test de Savoir réussi peut éventuellement vous accorder +1 Avantage (avec laccord de votre MJ). Par exemple, Savoir (Géologie) peut vous donner un Avantage si vous combattez dans une caverne, ou Savoir (Ingénierie) peut vous aider si vous combattez un ennemi armé dun appareil mécanique complexe. Vous pouvez continuer à renforcer votre Avantage lors des tours ultérieurs, à condition que les circonstances le permettent (déterminé par le MJ) et que vous ne soyez pas interrompu ; de cette façon, vous pouvez gagner un maximum dAvantages, égal à votre Bonus dIntelligence.</p>",
"id": "Lore (Law)",
"name": "Savoir (Loi)"
},
{
"description": "<p>La Compétence Corps à corps représente l'entraînement spécifique que vous avez reçu avec un seul type d'armes de combat rapproché. Chaque Spécialisation de Corps à corps indique un entraînement à une classe d'arme spécifique. Si vous n'avez pas la Spécialisation appropriée pour une arme que vous souhaitez utiliser, référez-vous au <strong>Chapitre 11 : Guide de l'équipement </strong>pour consulter les statistiques de l'arme et savoir quelles pénalités vous subirez. Voir <strong>Chapitre 5 : Règles </strong>pour plus d'informations sur les combats et l'utilisation de la Compétence Corps à corps.<p><strong>Exemples de Spécialisations : </strong>Arme d'hast, Arme à deux mains, Bagarre, Base, Cavalerie, Escrime, Fléau, Parade.</p>",
"id": "Melee",

39
fr.json
View File

@@ -314,6 +314,10 @@
"SHEET.NPCSheetNoTheme":"Fiche de PNJ (sans thème)",
"SHEET.VehicleSheet":"Fiche de véhicule",
"SHEET.VehicleSheetNoTheme":"Fiche de véhicule (sans thème)",
"SHEET.Append":"Ajouter après",
"SHEET.Prepend":"Ajouter avant",
"SHEET.SkillName":"Nom de la compétence",
"SHEET.TalentName":"Nom du Talent",
"SHEETS.Actor.vehicle":"Fiche de Véhicule",
"SHEETS.Item.ammunition":"Fiche de Munitions",
@@ -645,6 +649,7 @@
"Hide": "Cacher",
"Targets": "Cibles",
"Melee": "Corps à corps",
"Swim":" Natation",
"Cost": "Prix",
"Length": "Longueur",
"Cargo": "Cargaison",
@@ -737,7 +742,6 @@
"Stat Block Parser":"Parser de fiches de PNJ",
"Submit":"Soumettre",
"SuccessLevels":"DR",
"Swim":"Nager",
"TBRed":"BE",
"TookDamage":"Encaisse {damage} dommages",
"ToughnessDesc":"Endurance",
@@ -756,6 +760,22 @@
"Wood Elf":"Elfe Sylvain",
"XP":"XP",
"comma separated":"éparé par des virgules",
"Overrides" : "Surcharges",
"Casting Skill" : "Comp. d'Incantation",
"Channelling Skill" : "Comp. de Focalisation",
"Ritual" : "Rituel",
"Random Vortex" : "Vortex aléatoire",
"Area of Effect" : "Zone d'Effet",
"Dice": "Dé",
"Extra Overcast Options": "Options Spéciales de Surincantation",
"Force Advancement": "Surcharge d'Avancement",
"Attack Type": "Types d'Attaque",
"Trapping Type": "Type d'Equipement",
"War Machine": "Machine de Guerre",
"XP Cost Modifier": "Modificateur de Coût en XP",
"Add SL": "DR additionnels",
"Prompt Location": "Demander la localisation",
"Dice Roll": "Lancer de Dé",
"TABLE.Column":"Colonne de la Table",
"TABLE.Key":"Clé de la Table",
@@ -1168,6 +1188,7 @@
"CHAT.Vital":"Vital",
"CHAT.DiseaseRollError":"Une erreur s'est produite lors du jet d'incubation ou de durée de la maladie.",
"CHAT.ExpReceivedNoReason":"Vous avez reçu <b>{amount}</b> points d'expérience",
"CHAT.CriticalDeflection":"Déviation de Critique",
"Error.SpeciesSkills" : "Impossible d'ajouter des compétences pour les races",
"Error.SpeciesTalents" : "Impossible d'ajouter des talents pour les races",
@@ -1481,6 +1502,19 @@
"WFRP4E.SymptomTreatment.Delirium" : "Certaines autorités traitent le délire comme faisant partie de la fièvre et prescrivent les mêmes remèdes. Ces derniers coûtent de quelques Sous de Cuivre à quelques Pistoles, et 10% d'entre eux sont efficaces.<br><br>Avec le bon médicament, un <b> Test de Guérison Intermédiaire (+0)</b> réussi fait cesser les hallucinations pendant <a class = 'chat-roll'><i class='fas fa-dice'></i> 1d10</a> heures.<br><br>Il est également courant de calmer les patients délirants avec des drogues tranquilisantes, comme la Fleur de Lune ou même de la Belladone, pour garder le patient Inconscient jusqu'à ce que la condition soit passée, en l'envoyant dans un sommeil agité jusqu'à ce qu'il récupère ou meure.",
"WFRP4E.SymptomTreatment.Swelling" : "La plupart des traitements consistent à plonger la partie affectée, ou parfois tout le corps, dans un bain d'eau glacée pour réduire la chaleur qui accompagne les gonflements. Un <b>Test de Guérison Etendu Difficile (-20)</b> requérant +3 DR réduit le gonflement pendant <b><a class = 'chat-roll'>2d10</a></b> heures. Chaque Test prend une heure. Le patient subit une condition Fatigué +1 pour chaque test effectué au cours du processus.<br><br>Certains médecins saignent plutôt le patient avec une lame ou des sangsues. Un <b>Test de Guérison Etendu</b> réussi nécessitant +4 SR et des Outils (Médecin) réduisent le gonflement pendant (<a class = 'chat-roll'>1d10</a> + le Bonus d'Endurance du patient) heures. Chaque Test a une Difficulté <b>Impossible (-50)</b> et nécessite 30mn.",
"WFRP4E.Symptom.Blight": "Toxine",
"WFRP4E.Symptom.Buboes": "Bubons",
"WFRP4E.Symptom.Convulsions": "Convulsions",
"WFRP4E.Symptom.CoughsSneezes": "Toux et éternuements",
"WFRP4E.Symptom.Fever": "Fièvre",
"WFRP4E.Symptom.Flux": "Intoxication Alimentaire",
"WFRP4E.Symptom.Gangrene": "Gangrène",
"WFRP4E.Symptom.Lingering": "Persistant",
"WFRP4E.Symptom.Malaise": "Malaise",
"WFRP4E.Symptom.Nausea": "Nausée",
"WFRP4E.Symptom.Pox": "Démangeaisons",
"WFRP4E.Symptom.Wounded": "Blessé",
"CONDITION.Apply" : "Appliquer {condition}",
"CONDITION.ApplyError" : "Vous ne pouvez pas appliquer d'états à cet acteur",
@@ -2667,6 +2701,9 @@
"major":"Majeur",
"minor":"Mineur",
"moderate":"Modéré",
"DurationPlaceholder":"Texte concernant a durée",
"ErrorArmourDamagePermission":"Vous n'avez pas les droits pour endommager l'armure de cet acteur.",
"IncubationPlaceholder":"Texte concernant l'incubation",
"WH":{
"TransferType":{

View File

@@ -8,7 +8,7 @@
}
],
"url": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr",
"version": "9.1.0",
"version": "9.2.0",
"esmodules": [
"modules/babele-register.js",
"modules/addon-register.js",
@@ -119,7 +119,7 @@
}
],
"manifest": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/raw/v10/module.json",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-9-1-0.zip",
"download": "https://www.uberwald.me/gitea/public/foundryvtt-wh4-lang-fr-fr/archive/foundryvtt-wh4-lang-fr-9-2-0.zip",
"id": "wh4-fr-translation",
"compatibility": {
"minimum": "13",

View File

@@ -320,6 +320,7 @@ const __add_actors_translation = () => {
const lang = game.settings.get('core', 'language');
if (lang == "fr") {
for (let metadata of game.packs) {
console.log("Checking pack", metadata.collection, metadata.documentName, metadata.metadata.id, game.babele.isTranslated(metadata));
if (!game.babele.isTranslated(metadata) &&
metadata.collection != "wfrp4e-core.actors" &&
metadata.collection != "wfrp4e-core.bestiary" &&

View File

@@ -420,8 +420,8 @@ Hooks.once('init', () => {
}
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("trait")
for (let compData of validCompendiums) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en, system:{description:{value: trait_en.system.description.value}} }, true)
if (trait_fr?.name && trait_fr?.name != name_en) {
trait_fr.name = trait_fr.name || trait_en.name
trait_en.name = nbt + trait_fr.name + special;
trait_en.system.description.value = trait_fr.system.description.value;
@@ -441,8 +441,9 @@ Hooks.once('init', () => {
}
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("skill")
for (let compData of validCompendiums) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en, system:{description:{value: trait_en.system.description.value}} }, true)
//console.log(">>>>> Skill FR ?", trait_fr, name_en, special)
if (trait_fr?.name && trait_fr?.name != name_en) {
trait_fr.name = trait_fr.name || name_en
trait_en.name = trait_fr.name + special;
trait_en.system.description.value = trait_fr.system.description.value;
@@ -452,8 +453,8 @@ Hooks.once('init', () => {
} else if (trait_en.type == "prayer") {
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("prayer")
for (let compData of validCompendiums) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en, system:{description:{value: trait_en.system.description.value}} }, true)
if (trait_fr?.name && trait_fr?.name != name_en) {
WFRP4FrTranslation.parseSpellContent(trait_en)
trait_fr.name = trait_fr.name || name_en
trait_en.name = trait_fr.name + special;
@@ -466,8 +467,8 @@ Hooks.once('init', () => {
} else if (trait_en.type == "spell") {
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("spell")
for (let compData of validCompendiums) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en, system:{description:{value: trait_en.system.description.value}} }, true)
if (trait_fr?.name && trait_fr?.name != name_en) {
WFRP4FrTranslation.parseSpellContent(trait_en)
trait_fr.name = trait_fr.name || name_en
trait_en.name = trait_fr.name + special;
@@ -492,12 +493,16 @@ Hooks.once('init', () => {
if (name_en === "Inspiring") {
name_en = "WCXnFSV4WOSmzzc4"
}
let trait_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true)
if (trait_fr?.system) {
trait_en.name = name_en // Reset the name to the original one
let trait_fr = game.babele.translate(compData.metadata.id, trait_en, true)
if (trait_fr?.name && trait_fr?.name != name_en) {
trait_fr.name = trait_fr.name || name_en // Security since babele v10
//console.log(">>>>> Talent ?", trait_fr, name_en, special, trait_fr.name);
if (trait_fr.name && (trait_fr.name == "Sprinter" || trait_fr.name != name_en)) { // Talent translated!
trait_en.name = trait_fr.name.trim() + special
if (trait_fr.system?.tests?.value) { // Why ???
trait_en.system.tests.value = trait_fr.system.tests.value;
}
if (trait_fr.system?.description?.value) { // Why ???
trait_en.system.description.value = trait_fr.system.description.value;
}
@@ -508,8 +513,8 @@ Hooks.once('init', () => {
} else if (trait_en.type == "career") {
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("career")
for (let compData of validCompendiums) {
let career_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true);
if (career_fr?.system) {
let career_fr = game.babele.translate(compData.metadata.id, trait_en, true);
if (career_fr?.name && career_fr?.name != name_en) {
trait_en.name = career_fr.name || trait_en.name
// DEBG: console.log(">>>>> Career ?", career_fr.name );
trait_en.system = foundry.utils.duplicate(career_fr.system);
@@ -520,7 +525,7 @@ Hooks.once('init', () => {
let validCompendiums = game.wfrp4e.tags.getPacksWithTag("vehicleRole")
for (let compData of validCompendiums) {
let role_fr = game.babele.translate(compData.metadata.id, trait_en, true);
if (role_fr?.system) {
if (role_fr?.name && role_fr?.name != name_en) {
trait_en.name = role_fr.name || trait_en.name
// DEBG: console.log(">>>>> Role ?", role_fr.name );
trait_en.system = foundry.utils.duplicate(role_fr.system);
@@ -530,8 +535,8 @@ Hooks.once('init', () => {
} else if (trait_en.type == "trapping" || trait_en.type == "weapon" || trait_en.type == "armour" || trait_en.type == "container" || trait_en.type == "money") {
let validCompendiums = game.wfrp4e.tags.getPacksWithTag(["trapping"], ["weapon", "armour", "container", "money"])
for (let compData of validCompendiums) {
let trapping_fr = game.babele.translate(compData.metadata.id, { name: name_en }, true);
if (trapping_fr?.system) {
let trapping_fr = game.babele.translate(compData.metadata.id, { name: name_en, system:{description:{value: trait_en.system.description.value}} }, true);
if (trapping_fr?.name && trapping_fr?.name != name_en) {
trait_en.name = trapping_fr.name || trait_en.name
if (trapping_fr.system?.description?.value) {
trait_en.system.description.value = trapping_fr.system.description.value

View File

@@ -10,6 +10,7 @@ export class WH4FRPatchConfig {
for( let compName of skillList) {
let special = "";
let newName = compName;
let baseName = compName
if ( compName.includes("(") && compName.includes(")") ) { // Then process specific skills name with (xxxx) inside
let re = /(.*) +\((.*)\)/i;
let res = re.exec( compName );
@@ -20,6 +21,9 @@ export class WH4FRPatchConfig {
if (compNameFR.name != compName) { // Translation OK
newName = compNameFR.name + special;
}
if ( !newName || newName == "" || newName == undefined ) { // If no translation, keep the original name
newName = baseName; // If no translation, keep the original name
}
newList.push(newName);
}
return newList;
@@ -119,9 +123,11 @@ export class WH4FRPatchConfig {
static fixSpeciesTable() {
let speciesTable = game.wfrp4e.tables.findTable("species");
for (let result of speciesTable.results) {
let newResults = foundry.utils.duplicate(speciesTable.results);
for (let result of newResults) {
result.name = game.i18n.localize(result.name);
}
speciesTable.update({results: newResults } )
console.log("Species table patched to use 'Humain' instead of 'Human'", speciesTable);
}

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
MANIFEST-001102
MANIFEST-001202

View File

@@ -1,7 +1,7 @@
2025/05/28-21:18:37.826014 7f53e5dfa6c0 Recovering log #1100
2025/05/28-21:18:37.836604 7f53e5dfa6c0 Delete type=3 #1098
2025/05/28-21:18:37.836673 7f53e5dfa6c0 Delete type=0 #1100
2025/05/28-21:28:51.892598 7f53df3ff6c0 Level-0 table #1105: started
2025/05/28-21:28:51.892649 7f53df3ff6c0 Level-0 table #1105: 0 bytes OK
2025/05/28-21:28:51.899980 7f53df3ff6c0 Delete type=0 #1103
2025/05/28-21:28:51.913897 7f53df3ff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
2025/08/10-09:41:30.434041 7f671e7fc6c0 Recovering log #1200
2025/08/10-09:41:30.489680 7f671e7fc6c0 Delete type=3 #1198
2025/08/10-09:41:30.489808 7f671e7fc6c0 Delete type=0 #1200
2025/08/10-09:49:10.451136 7f671cbff6c0 Level-0 table #1205: started
2025/08/10-09:49:10.451187 7f671cbff6c0 Level-0 table #1205: 0 bytes OK
2025/08/10-09:49:10.458441 7f671cbff6c0 Delete type=0 #1203
2025/08/10-09:49:10.465515 7f671cbff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/05/28-21:03:44.312047 7f53e55f96c0 Recovering log #1096
2025/05/28-21:03:44.322437 7f53e55f96c0 Delete type=3 #1094
2025/05/28-21:03:44.322507 7f53e55f96c0 Delete type=0 #1096
2025/05/28-21:11:25.680666 7f53df3ff6c0 Level-0 table #1101: started
2025/05/28-21:11:25.680709 7f53df3ff6c0 Level-0 table #1101: 0 bytes OK
2025/05/28-21:11:25.703756 7f53df3ff6c0 Delete type=0 #1099
2025/05/28-21:11:25.703972 7f53df3ff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)
2025/08/10-09:38:47.985179 7f671e7fc6c0 Recovering log #1196
2025/08/10-09:38:47.997149 7f671e7fc6c0 Delete type=3 #1194
2025/08/10-09:38:47.997358 7f671e7fc6c0 Delete type=0 #1196
2025/08/10-09:40:05.248945 7f671cbff6c0 Level-0 table #1201: started
2025/08/10-09:40:05.249030 7f671cbff6c0 Level-0 table #1201: 0 bytes OK
2025/08/10-09:40:05.256958 7f671cbff6c0 Delete type=0 #1199
2025/08/10-09:40:05.264598 7f671cbff6c0 Manual compaction at level-0 from '!journal!3IgmiprzLB6Lwenc' @ 72057594037927935 : 1 .. '!journal.pages!suuYN87Al1ZZWtQQ.jhgNnhWhrkOpKs1B' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-001104
MANIFEST-001204

View File

@@ -1,7 +1,7 @@
2025/05/28-21:18:37.839615 7f53e55f96c0 Recovering log #1102
2025/05/28-21:18:37.851230 7f53e55f96c0 Delete type=3 #1100
2025/05/28-21:18:37.851367 7f53e55f96c0 Delete type=0 #1102
2025/05/28-21:28:51.906375 7f53df3ff6c0 Level-0 table #1107: started
2025/05/28-21:28:51.906404 7f53df3ff6c0 Level-0 table #1107: 0 bytes OK
2025/05/28-21:28:51.913702 7f53df3ff6c0 Delete type=0 #1105
2025/05/28-21:28:51.913922 7f53df3ff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2025/08/10-09:41:30.497713 7f671d7fa6c0 Recovering log #1202
2025/08/10-09:41:30.549674 7f671d7fa6c0 Delete type=3 #1200
2025/08/10-09:41:30.549805 7f671d7fa6c0 Delete type=0 #1202
2025/08/10-09:49:10.474047 7f671cbff6c0 Level-0 table #1207: started
2025/08/10-09:49:10.474141 7f671cbff6c0 Level-0 table #1207: 0 bytes OK
2025/08/10-09:49:10.480834 7f671cbff6c0 Delete type=0 #1205
2025/08/10-09:49:10.495981 7f671cbff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/05/28-21:03:44.326284 7f53e4df86c0 Recovering log #1098
2025/05/28-21:03:44.336533 7f53e4df86c0 Delete type=3 #1096
2025/05/28-21:03:44.336600 7f53e4df86c0 Delete type=0 #1098
2025/05/28-21:11:25.653977 7f53df3ff6c0 Level-0 table #1103: started
2025/05/28-21:11:25.654005 7f53df3ff6c0 Level-0 table #1103: 0 bytes OK
2025/05/28-21:11:25.680479 7f53df3ff6c0 Delete type=0 #1101
2025/05/28-21:11:25.703960 7f53df3ff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)
2025/08/10-09:38:48.002599 7f671d7fa6c0 Recovering log #1198
2025/08/10-09:38:48.015227 7f671d7fa6c0 Delete type=3 #1196
2025/08/10-09:38:48.015395 7f671d7fa6c0 Delete type=0 #1198
2025/08/10-09:40:05.272247 7f671cbff6c0 Level-0 table #1203: started
2025/08/10-09:40:05.272308 7f671cbff6c0 Level-0 table #1203: 0 bytes OK
2025/08/10-09:40:05.279541 7f671cbff6c0 Delete type=0 #1201
2025/08/10-09:40:05.294800 7f671cbff6c0 Manual compaction at level-0 from '!folders!3uquYH73ttCdoH0I' @ 72057594037927935 : 1 .. '!items!ylFhk7mGZOnAJTUT' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-001102
MANIFEST-001202

View File

@@ -1,7 +1,7 @@
2025/05/28-21:18:37.866780 7f53dffff6c0 Recovering log #1100
2025/05/28-21:18:37.877487 7f53dffff6c0 Delete type=3 #1098
2025/05/28-21:18:37.877575 7f53dffff6c0 Delete type=0 #1100
2025/05/28-21:28:51.928101 7f53df3ff6c0 Level-0 table #1105: started
2025/05/28-21:28:51.928158 7f53df3ff6c0 Level-0 table #1105: 0 bytes OK
2025/05/28-21:28:51.935136 7f53df3ff6c0 Delete type=0 #1103
2025/05/28-21:28:51.941551 7f53df3ff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
2025/08/10-09:41:30.620497 7f671dffb6c0 Recovering log #1200
2025/08/10-09:41:30.676767 7f671dffb6c0 Delete type=3 #1198
2025/08/10-09:41:30.676888 7f671dffb6c0 Delete type=0 #1200
2025/08/10-09:49:10.481011 7f671cbff6c0 Level-0 table #1205: started
2025/08/10-09:49:10.481056 7f671cbff6c0 Level-0 table #1205: 0 bytes OK
2025/08/10-09:49:10.488490 7f671cbff6c0 Delete type=0 #1203
2025/08/10-09:49:10.495998 7f671cbff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/05/28-21:03:44.352825 7f53e55f96c0 Recovering log #1096
2025/05/28-21:03:44.363415 7f53e55f96c0 Delete type=3 #1094
2025/05/28-21:03:44.363484 7f53e55f96c0 Delete type=0 #1096
2025/05/28-21:11:25.704076 7f53df3ff6c0 Level-0 table #1101: started
2025/05/28-21:11:25.704112 7f53df3ff6c0 Level-0 table #1101: 0 bytes OK
2025/05/28-21:11:25.729480 7f53df3ff6c0 Delete type=0 #1099
2025/05/28-21:11:25.819973 7f53df3ff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)
2025/08/10-09:38:48.037997 7f671d7fa6c0 Recovering log #1196
2025/08/10-09:38:48.049385 7f671d7fa6c0 Delete type=3 #1194
2025/08/10-09:38:48.049520 7f671d7fa6c0 Delete type=0 #1196
2025/08/10-09:40:05.287302 7f671cbff6c0 Level-0 table #1201: started
2025/08/10-09:40:05.287366 7f671cbff6c0 Level-0 table #1201: 0 bytes OK
2025/08/10-09:40:05.294479 7f671cbff6c0 Delete type=0 #1199
2025/08/10-09:40:05.294847 7f671cbff6c0 Manual compaction at level-0 from '!journal!cZtNgayIw2QFhC9u' @ 72057594037927935 : 1 .. '!journal.pages!cZtNgayIw2QFhC9u.ts265H1XkisLgdow' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-001102
MANIFEST-001202

View File

@@ -1,7 +1,7 @@
2025/05/28-21:18:37.812928 7f53e4df86c0 Recovering log #1100
2025/05/28-21:18:37.823073 7f53e4df86c0 Delete type=3 #1098
2025/05/28-21:18:37.823147 7f53e4df86c0 Delete type=0 #1100
2025/05/28-21:28:51.900122 7f53df3ff6c0 Level-0 table #1105: started
2025/05/28-21:28:51.900150 7f53df3ff6c0 Level-0 table #1105: 0 bytes OK
2025/05/28-21:28:51.906260 7f53df3ff6c0 Delete type=0 #1103
2025/05/28-21:28:51.913909 7f53df3ff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
2025/08/10-09:41:30.372911 7f671dffb6c0 Recovering log #1200
2025/08/10-09:41:30.428729 7f671dffb6c0 Delete type=3 #1198
2025/08/10-09:41:30.428919 7f671dffb6c0 Delete type=0 #1200
2025/08/10-09:49:10.458650 7f671cbff6c0 Level-0 table #1205: started
2025/08/10-09:49:10.458700 7f671cbff6c0 Level-0 table #1205: 0 bytes OK
2025/08/10-09:49:10.465270 7f671cbff6c0 Delete type=0 #1203
2025/08/10-09:49:10.465530 7f671cbff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/05/28-21:03:44.298365 7f53e5dfa6c0 Recovering log #1096
2025/05/28-21:03:44.308425 7f53e5dfa6c0 Delete type=3 #1094
2025/05/28-21:03:44.308489 7f53e5dfa6c0 Delete type=0 #1096
2025/05/28-21:11:25.595569 7f53df3ff6c0 Level-0 table #1101: started
2025/05/28-21:11:25.595655 7f53df3ff6c0 Level-0 table #1101: 0 bytes OK
2025/05/28-21:11:25.624793 7f53df3ff6c0 Delete type=0 #1099
2025/05/28-21:11:25.703933 7f53df3ff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)
2025/08/10-09:38:47.968676 7f671effd6c0 Recovering log #1196
2025/08/10-09:38:47.979591 7f671effd6c0 Delete type=3 #1194
2025/08/10-09:38:47.979718 7f671effd6c0 Delete type=0 #1196
2025/08/10-09:40:05.257273 7f671cbff6c0 Level-0 table #1201: started
2025/08/10-09:40:05.257347 7f671cbff6c0 Level-0 table #1201: 0 bytes OK
2025/08/10-09:40:05.264214 7f671cbff6c0 Delete type=0 #1199
2025/08/10-09:40:05.264619 7f671cbff6c0 Manual compaction at level-0 from '!journal!50u8VAjdmovyr0hx' @ 72057594037927935 : 1 .. '!journal.pages!yzw9I0r3hCK7PJnz.sPNCYj2nR3Cp3jHd' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-001102
MANIFEST-001202

View File

@@ -1,7 +1,7 @@
2025/05/28-21:18:37.797820 7f53e5dfa6c0 Recovering log #1100
2025/05/28-21:18:37.809064 7f53e5dfa6c0 Delete type=3 #1098
2025/05/28-21:18:37.809141 7f53e5dfa6c0 Delete type=0 #1100
2025/05/28-21:28:51.885497 7f53df3ff6c0 Level-0 table #1105: started
2025/05/28-21:28:51.885605 7f53df3ff6c0 Level-0 table #1105: 0 bytes OK
2025/05/28-21:28:51.892302 7f53df3ff6c0 Delete type=0 #1103
2025/05/28-21:28:51.913882 7f53df3ff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
2025/08/10-09:41:30.307012 7f671d7fa6c0 Recovering log #1200
2025/08/10-09:41:30.367868 7f671d7fa6c0 Delete type=3 #1198
2025/08/10-09:41:30.368014 7f671d7fa6c0 Delete type=0 #1200
2025/08/10-09:49:10.443604 7f671cbff6c0 Level-0 table #1205: started
2025/08/10-09:49:10.443659 7f671cbff6c0 Level-0 table #1205: 0 bytes OK
2025/08/10-09:49:10.450889 7f671cbff6c0 Delete type=0 #1203
2025/08/10-09:49:10.465497 7f671cbff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/05/28-21:03:44.283375 7f53e55f96c0 Recovering log #1096
2025/05/28-21:03:44.294020 7f53e55f96c0 Delete type=3 #1094
2025/05/28-21:03:44.294093 7f53e55f96c0 Delete type=0 #1096
2025/05/28-21:11:25.625053 7f53df3ff6c0 Level-0 table #1101: started
2025/05/28-21:11:25.625118 7f53df3ff6c0 Level-0 table #1101: 0 bytes OK
2025/05/28-21:11:25.653818 7f53df3ff6c0 Delete type=0 #1099
2025/05/28-21:11:25.703948 7f53df3ff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)
2025/08/10-09:38:47.949419 7f671d7fa6c0 Recovering log #1196
2025/08/10-09:38:47.962305 7f671d7fa6c0 Delete type=3 #1194
2025/08/10-09:38:47.962494 7f671d7fa6c0 Delete type=0 #1196
2025/08/10-09:40:05.241623 7f671cbff6c0 Level-0 table #1201: started
2025/08/10-09:40:05.241681 7f671cbff6c0 Level-0 table #1201: 0 bytes OK
2025/08/10-09:40:05.248620 7f671cbff6c0 Delete type=0 #1199
2025/08/10-09:40:05.264575 7f671cbff6c0 Manual compaction at level-0 from '!tables!4l60Lxv8cpsyy2Cg' @ 72057594037927935 : 1 .. '!tables.results!tfaYKDZqu7kgZvRG.yvbwKursaixh2dby' @ 0 : 0; will stop at (end)

View File

@@ -1 +1 @@
MANIFEST-000745
MANIFEST-000845

View File

@@ -1,7 +1,7 @@
2025/05/28-21:18:37.854215 7f53e5dfa6c0 Recovering log #743
2025/05/28-21:18:37.864349 7f53e5dfa6c0 Delete type=3 #741
2025/05/28-21:18:37.864418 7f53e5dfa6c0 Delete type=0 #743
2025/05/28-21:28:51.920436 7f53df3ff6c0 Level-0 table #748: started
2025/05/28-21:28:51.920500 7f53df3ff6c0 Level-0 table #748: 0 bytes OK
2025/05/28-21:28:51.927922 7f53df3ff6c0 Delete type=0 #746
2025/05/28-21:28:51.941532 7f53df3ff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
2025/08/10-09:41:30.555391 7f671e7fc6c0 Recovering log #843
2025/08/10-09:41:30.615784 7f671e7fc6c0 Delete type=3 #841
2025/08/10-09:41:30.616159 7f671e7fc6c0 Delete type=0 #843
2025/08/10-09:49:10.488698 7f671cbff6c0 Level-0 table #848: started
2025/08/10-09:49:10.488749 7f671cbff6c0 Level-0 table #848: 0 bytes OK
2025/08/10-09:49:10.495762 7f671cbff6c0 Delete type=0 #846
2025/08/10-09:49:10.496015 7f671cbff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)

View File

@@ -1,7 +1,7 @@
2025/05/28-21:03:44.339388 7f53e5dfa6c0 Recovering log #739
2025/05/28-21:03:44.350115 7f53e5dfa6c0 Delete type=3 #737
2025/05/28-21:03:44.350180 7f53e5dfa6c0 Delete type=0 #739
2025/05/28-21:11:25.729707 7f53df3ff6c0 Level-0 table #744: started
2025/05/28-21:11:25.729741 7f53df3ff6c0 Level-0 table #744: 0 bytes OK
2025/05/28-21:11:25.761507 7f53df3ff6c0 Delete type=0 #742
2025/05/28-21:11:25.819994 7f53df3ff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)
2025/08/10-09:38:48.020986 7f671e7fc6c0 Recovering log #839
2025/08/10-09:38:48.032740 7f671e7fc6c0 Delete type=3 #837
2025/08/10-09:38:48.032899 7f671e7fc6c0 Delete type=0 #839
2025/08/10-09:40:05.279829 7f671cbff6c0 Level-0 table #844: started
2025/08/10-09:40:05.279902 7f671cbff6c0 Level-0 table #844: 0 bytes OK
2025/08/10-09:40:05.287026 7f671cbff6c0 Delete type=0 #842
2025/08/10-09:40:05.294824 7f671cbff6c0 Manual compaction at level-0 from '!journal!056ILNNrLiPq3Gi3' @ 72057594037927935 : 1 .. '!journal.pages!yfZxl4I7XAuUF6r3.apXmOlZRmGT4GreB' @ 0 : 0; will stop at (end)

View File

@@ -1,12 +1,13 @@
package.path = package.path .. ";luajson/?.lua"
local JSON = require"json"
--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-dotr/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-core/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-middenheim/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-eis/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-rnhd/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-dev/Data/modules/wfrp4e-up-in-arms/lang/en.json"
local enjsonf = "/home/morr/foundry/foundrydata-v13/Data/modules/wfrp4e-dotr/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-v13/Data/modules/wfrp4e-core/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-v13/Data/modules/wfrp4e-middenheim/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-v13/Data/modules/wfrp4e-eis/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-v13/Data/modules/wfrp4e-rnhd/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-v13/Data/modules/wfrp4e-up-in-arms/lang/en.json"
--local enjsonf = "/home/morr/foundry/foundrydata-v13/Data/modules/wfrp4e-starter-set/lang/en.json"
local enjsonf = "../../WFRP4e-FoundryVTT/static/lang/en.json"
local frjsonf = "../fr.json"
@@ -20,13 +21,13 @@ fp:close()
local todisplay = {}
for tag, value in pairs(entags) do
if not frtags[tag] then
if not frtags[tag] then
todisplay[#todisplay+1] = { tag=tag, value=value }
end
end
table.sort(todisplay, function (a, b)
return a.tag < b.tag
table.sort(todisplay, function (a, b)
return a.tag < b.tag
end
)
@@ -49,5 +50,3 @@ for _, tagDef in pairs(todisplay) do
print('"'.. tagDef.tag ..'":"'.. tagDef.value..'",')
end
end