From 1b6fe3cefa6ed9a1a80b1815aff2f63af4159cad Mon Sep 17 00:00:00 2001 From: alzer Date: Mon, 27 Jul 2026 19:35:18 +0200 Subject: [PATCH] Fix: Babele-Registrierung in Hooks.once('babele.init', ...) verschoben (Kernursache fuer 'Items werden nicht uebersetzt') Laut Babele 2.8+ Developer Migration Guide muessen register()/ registerConverters() vor dem Aufbau von Babeles eigener Runtime-Session erfolgen, ueber einen dedizierten Hook 'babele.init' - nicht in Foundrys allgemeinem 'init'-Hook. Registrierungen, die zu spaet erfolgen, werden seit Babele 2.8+ still verworfen ('late calls are rejected'), sobald die Runtime-Session installiert ist. Das erklaert das beobachtete Verhalten vollstaendig: Babele las unsere Uebersetzungsdateien zwar erfolgreich ein (Konsole zeigte 'successfully loaded'), aber ohne erfolgreiche Registrierung blieb inspectMapping() fuer betroffene Packs leer (layers: [], effective.mapping: {}), und isTranslated()/translate() lieferten false/{} zurueck - obwohl die Match-Daten (id/name) nachweislich korrekt waren. Journals funktionierten vermutlich ueber eingebaute Babele-Standardmappings, die keine eigene Registrierung benoetigen. Fix: game.babele.register(...) und game.babele.registerConverters(...) laufen jetzt in einem eigenen Hooks.once('babele.init', ...) statt im bisherigen Hooks.once('init', ...). Ausserdem den fehlerhaften Typ-Check 'game.babele !== "undefined"' (String-Vergleich statt typeof) korrigiert. Version auf 8.6.15 angehoben. --- module.json | 2 +- modules/babele-register.js | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/module.json b/module.json index 76da68c..93e4991 100644 --- a/module.json +++ b/module.json @@ -8,7 +8,7 @@ } ], "url": "https://gitea.palmenalzer.de/alzer/wfrp-4e-de", - "version": "8.6.14", + "version": "8.6.15", "esmodules": [ "modules/babele-register.js", "modules/addon-register.js", diff --git a/modules/babele-register.js b/modules/babele-register.js index 291caf5..4a9efed 100644 --- a/modules/babele-register.js +++ b/modules/babele-register.js @@ -132,9 +132,19 @@ Hooks.once('init', () => { console.log("WFRP4E-DE | Loading Babele translation module ..."); loadScripts(); - /*---------------------------------------------------------------------*/ - // Converters area - if (game.babele !== 'undefined') { +}); + +/************************************************************************************/ +// Babele registration must happen in Babele's own "babele.init" hook (fires before +// Babele builds its runtime session/mapping layers). Registering in Foundry's +// "init" hook is too late for Babele 2.8+: once the runtime session is installed, +// late register()/registerConverters() calls are silently rejected, leaving the +// pack "loaded" (JSON parsed) but with no effective mapping applied - which is +// exactly the "everything stays English except journals" symptom. +// See: https://gitlab.com/riccisi/foundryvtt-babele/-/raw/master/DEVELOPER_MIGRATION_2_8_0.md +Hooks.once('babele.init', () => { + + if (typeof game.babele !== 'undefined') { game.babele.register({ module: 'wh4-de-translation',