Fixed a performance issue where AggressiveExportMode also affected normal gameplay runtime UI text patches.
Runtime UI translation now tries fast global/unique matches before doing any component-owner lookup.
Added a bounded runtime translation cache to avoid repeating expensive misses or repeated UI text translations.
Added EnableScopedRuntimeComponentLookup = false by default for smoother gameplay. Enable it only if duplicate hardcoded UI strings require owner-specific runtime matching.
Deep export still uses aggressive component-owner lookup, so export coverage is preserved while normal gameplay stays lighter.
0.1.12
Refreshed the Thunderstore package metadata for r2modman visibility checks.
Updated the BepInExPack Valheim dependency from denikson-BepInExPack_Valheim-5.4.2350 to the newer denikson-BepInExPack_Valheim-5.4.2351.
Rebuilt the package with the corrected 0.1.12 manifest and matching plugin version.
0.1.11
Added vanilla token preservation through BepInEx/config/UniversalModLocalizer/vanilla_tokens.txt.
Vanilla Valheim tokens such as $item_hammer, $item_club, $piece_fire, and common captions are no longer imported, exported, or globally overridden by mod translation files.
This keeps original Valheim localization in control when mods reuse base-game items, pieces, creatures, captions, or UI tokens.
0.1.10
Removed BepInEx config text from export scans; new exports no longer create _config.json files.
Skips token passthrough entries such as "$item_hammer": "$item_hammer" during export and import so native Valheim/mod localization can handle them.
Cleaned the active Polish import/export files by archiving generated config exports and removing self-token overrides.
0.1.9
Fixed import JSON files failing to load when edited text contained common invalid escapes such as \_, \<, or \~.
Added tolerant import parsing for over-escaped quotes and simple missing commas between key/value entries.
Repaired the current Polish import set so all 119 JSON files validate before game launch.
0.1.8
Export files are now merged instead of overwritten.
Existing key/value pairs are preserved when running uml deep and uml scan one after another.
New export runs only add missing keys; empty existing values may be filled from the latest detected source text.
If an existing export file cannot be parsed, a timestamped .bak-* copy is created before regenerating it.
0.1.7
Reworked uml deep into a faster PrefabLocalizer-style visible-content export path.
Deep export now focuses on mod localization files, ObjectDB items, status effects, ZNetScene prefabs, hammer/PieceTable build pieces, creatures, and targeted loaded UI text.
Regular uml scan still includes BepInEx config metadata; uml deep skips config metadata to avoid huge slow exports dominated by settings text.
Added ObjectDB PieceTable scanning so hammer build-menu pieces are exported from the same practical source the game uses.
Replaced broad loaded GameObject field scanning with targeted TMP_Text and Unity UI Text scanning.
Unresolved prefab owners remain in diagnostics, but are not exported as translation files unless ExportUnresolvedPrefabs is explicitly enabled.
Added start/end scan log messages with duration.
0.1.6
Added a tolerant fallback parser for malformed .json localization files that are actually loose "key": "value" dictionaries without valid JSON commas.
Fixed OdinArchitect-style translation files being skipped with After parsing a value an unexpected character was encountered.
Such files are imported as loose-json records instead of causing a warning and being ignored.
0.1.5
Added AggressiveExportMode, enabled by default, for stronger manual export scans.
Added uml deep, an aggressive export command that also writes unresolved prefab strings under _unresolved_prefabs.
Added uml runtime on/off to enable or disable hardcoded UI string collection from the in-game console.
Expanded prefab export scanning to include item shared data, status effect fields, and deeper generic string fields.
Extended uml deep to inspect loaded Unity objects and TMP/Unity UI text components when they can be attributed to an installed mod.
Improved runtime/UI owner detection by checking related parent components, useful when visible text is owned by Unity/TMP but the window controller belongs to a mod.
Added owner recovery for previously unresolved strings by matching localization keys and source values back to installed mods.
Enabled component ownership fallback in the recommended config for better mod attribution during manual scans.
0.1.4
Enabled imported translations to override native/mod-registered localization by default. This is required for many mods that register English text as their native localization.
Added generic prefab component string scanning to catch more prefab, build-piece, HUD, and UI text candidates during manual exports.
Added safe token source resolution from Valheim's currently loaded localization dictionary, avoiding repeated noisy TranslateSingleId calls.
Scans localization files inside Assets/Translations folders and matches localization keys with or without a leading $.
Made uml reload reload the config file before reloading translation imports.
Added ExportGenericPrefabStrings and ResolveTokenSourcesFromCurrentLocalization config options.
0.1.3
Made Jotunn a required BepInEx and Thunderstore dependency.
Disabled unresolved-prefab export by default to avoid very large scans.
Disabled slow component-assembly prefab ownership fallback by default.
Disabled native target-language probing by default to avoid repeated Valheim localization lookups during export.
Reused detected English mod localization files as prefab export values when available.
0.1.2
Added AutoScanOnWorldLoad, disabled by default, so a full export scan only runs automatically when explicitly enabled.
Fixed ExportMissingTranslations being reused as an automatic scan trigger.
Recommended disabling runtime string collection during normal gameplay and using manual uml scan for controlled exports.
0.1.1
Fixed plugin discovery incorrectly marking every plugin as a technical library when installed under BepInEx/plugins.
Changed export files to simple JSON dictionaries: "key": "value".
Changed exported file names to include the mod name and category, such as ExampleMod_prefabs.json and ExampleMod_ui.json.
Added _unresolved_prefabs export coverage for prefab strings whose owning mod cannot be identified reliably.
Improved prefab token keys so description/tooltips use their real Valheim token when available.
Kept backward compatibility for the previous entries JSON import format.
0.1.0
Initial release.
Added plugin discovery and per-ModGUID translation isolation.
Added import/export folder structure.
Added JSON import/export schema.
Added localization file scanner for JSON, YAML/YML, CSV, TSV, and TXT.
Added prefab scanner for items, pieces, creatures, and status effects.
Added BepInEx config text scanner.
Added token, exact-string, and simple template runtime translation.
Added TMP_Text and UnityEngine.UI.Text runtime patches.
Added runtime UI string collection.
Added hot reload for import JSON files.
Added server-to-client translation sync with compression, chunking, SHA-256 checks, and cache.
Added uml console commands.
Thunderstore development is made possible with ads. Please consider making an exception to your adblock.