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.
Portiert aus der aktualisierten, v14-verifizierten franzoesischen
Referenzimplementierung (foundryvtt-wh4-lang-fr-fr). Die aktuelle
Babele-Version liefert im Rueckgabewert von game.babele.translate()
offenbar kein .system-Feld mehr zuverlaessig. Unsere bisherigen Checks
(if (trait_fr?.system)) in der bestiary_traits-Converter-Funktion schlugen
deshalb immer fehl und die Uebersetzung von Traits, Skills, Talenten,
Zaubern, Gebeten, Karrieren, Fahrzeugrollen und Ausruestung auf
NPC-Statblaettern wurde stillschweigend uebersprungen - das Item blieb
englisch.
Fix: Pruefung umgestellt auf if (trait_fr?.name && trait_fr?.name != name_en).
Zusaetzlich uebernommen:
- Gefixte Bonus-Formel-Regex (behebt den 'willpower bonus+4' SyntaxError
bei Zauberformeln, u.a. bei Wolfgang Hollseher aufgetreten)
- \r-Stripping-Bug in Trait-Namen behoben
- Symptom-Namen (Fever, Malaise etc.) werden nicht mehr vom Item-Namen
ueberschrieben
- 'Inspiring'-Sonderfall fuer Talente ergaenzt
Version auf 8.6.14 angehoben.
1CeYp5MlPcH68UIw.js mixed English and French skill/talent/trapping
names (Intimidate, Commandement, Menaçant, Arme simple...) in an NPC
statblock-building script. Replaced with the actual German names used
in the core compendium, matching the lookup-by-exact-name convention
used throughout scripts/.
Note: the earlier "1 file left" estimate was right; a follow-up grep
across all of scripts/ that showed ~95 hits was a false alarm caused
by bash's grep doing byte-wise matching against the accented-character
class in this shell's locale, flagging German umlauts/en-dashes as
false positives. Verified with Node's proper Unicode regex instead.
Rebuilt modules/loadScripts.js; all 2114 scripts still parse cleanly.
These predate today's script sync (not among the 621 copied files) --
stale/corrupted copies that had already diverged from FR's own fixed
versions, so a syntax error would have crashed the moment the item's
effect actually ran in Foundry:
- E7D4bxz8gy4e1wL7.js: whole condition had no body/return at all
- FAB12eLcSCAOOQwk.js: "scirptMessage" typo + missing closing paren
- Me1wS5XdqUEy7OGt.js: missing paren/brace in a template literal,
and a literal "{this.actor.name}" instead of "${this.actor.name}"
- Na7Nanl9YmxZlTo7.js: stray unmatched closing paren
- nGTxNWBUBgTr87wU.js: loose "speaker : {...}" args instead of being
part of the single options object
- sPvfYQEnyAYNpIhF.js: missing comma between two object properties
- vvVhAqreedtmOR9b.js: missing closing brace before the closing paren
Rebuilt modules/loadScripts.js; all 2114 scripts now parse cleanly.
scripts/ was missing 621 of FR's 2114 effect scripts (referenced via
game.wfrp4e.config.effectScripts by Foundry item id). Copied them all
over so the registry is complete, then translated the 129 that still
contained French user-facing text: skill/talent/trapping name arrays
in NPC-statblock-building scripts, chat/notification messages, and
dialog prompts. Skill/talent/trait names were cross-checked against
the already-translated core compendium rather than translated ad hoc,
since Foundry looks these up by exact document name.
Also fixed real bugs found along the way (present in FR's originals
too, just inherited via the copy):
- Two "let x / let x" duplicate-declaration scripts (SyntaxError)
- A "0rgs.actor" typo (ReferenceError) for "args.actor"
- Two "effet.update(...)" typos for "effect.update(...)"
- A corrupted ui.notifications.warn(...) template literal in 3 of the
NPC-statblock scripts, mangled into stray leftover code text
- 19 scripts across the whole scripts/ folder (not just the 621) using
the wrong game.i18n.localize() key (NAME.Résistance/Démoniaque/
Mort-vivant instead of the actual English key names NAME.Endurance/
Daemonic/Undead), which silently failed to resolve in any language
Rebuilt modules/loadScripts.js via `npm run build` (2114 scripts).
Known follow-up (out of scope here, pre-existing in the scripts DE
already had before this sync): 7 scripts elsewhere in scripts/ have
unrelated syntax bugs, and one has a lingering French accent.
- Remove dead import of babele/script/translated-compendium.js (404,
MIME-type block on load) and its unused TranslatedCompendium usage
- Replace broken game.babele.converters.X() cross-calls (career_skills,
career_careergroup, tableResults) with direct function references,
since Babele 2.8+ wraps converters as objects
- Rename RollTable fields data.text/results[].text -> .description and
documentCollection -> documentUuid to match Babele's current schema
- Migrate ActiveEffect label -> name (Foundry v13 requires name) with
legacy fallback in process_effects, bestiary_traits, effects and
diseases_effects converters
- Fix stray bare duplicate() call and a syntax typo in the infighting
effect script in config-patch.js
- Bump module.json compatibility to minimum 13 / verified 14