LocCheck Changelog¶
Version 1.2.0¶
Major reliability and workflow update for Unreal Engine 5.5, 5.6, 5.7, and 5.8.
Gather Text and commandlet stability¶
- Fixed a crash that could occur when Gather Text or another headless
UnrealEditor-Cmdoperation loaded LocCheck. - LocCheck no longer touches editor UI systems while running in commandlet mode.
- Shutdown is safe even when the editor interface was never created.
Translation detection and cultures¶
- Fixed valid translations being reported as missing.
- Translation coverage is now read directly from localization data on disk and no longer depends on the editor's active language.
- Added compiled locres fallback support for translations imported outside the normal Localization Dashboard workflow.
- A translation whose text matches the source now correctly counts as translated.
- Fixed parsing for namespaced archive entries and the nested subnamespaces used by String Tables.
- Culture names are canonicalized and culture folder matching is case-insensitive.
- Regional cultures now fall back only through their valid parent cultures. Sibling cultures are never substituted for one another.
- Unrecognised culture names are reported instead of being silently ignored.
- Added Translation Conflict warnings when localization targets provide different translations for the same namespace and key.
Usage detection¶
- Fixed entries being incorrectly reported as unused because the Asset Registry was queried with the wrong identifier.
- Fixed Usage Finder returning no results.
- Added five clear coverage states: not scanned, references found, no references under complete coverage, truncated coverage, and failed coverage.
- An entry is only described as unused when its table's relevant referencers were fully inspected.
- Improved reference inspection for Widget Blueprints, Data Tables, Data Assets, Blueprint defaults, nested structs, arrays, sets, and maps.
- String Tables are matched by exact identity, preventing tables with the same asset name in different folders from being mixed together.
- Added Usage Scan — Max Referencers Per Table, including an unlimited mode with progress and cancellation.
Problems and bulk review¶
- Added Ctrl/Shift multi-selection on the Problems page.
- Added Select All Filtered and Clear Selection.
- Added bulk Approved, Needs Review, and Ignore Selected Issues actions.
- Added Approve All Filtered with confirmation for large operations.
- Added live review-status badges to Problems rows.
- Added a confirmation notification after every bulk action, including the number of affected entries or issues.
- Bulk changes now use one batch and one save instead of rebuilding the list for every row.
- Fixed bulk review actions having no visible feedback.
- Review statuses and ignored issues persist through tab closure, rescanning, Gather Text, and full editor restarts.
Hardcoded Text and interface fixes¶
- Fixed Hardcoded Text search not filtering.
- Search now filters live across asset name, path, source or property, row, and suspect text.
- Clearing the search or choosing All Risks restores the complete list.
- Fixed missing scrollbars in Problems, Usage Finder, and Hardcoded Text.
- Scan results now refresh after localization or asset changes when Quick Scan is run again; no editor restart is required.
- LocCheck now appears in the shared Tools → ECal Studios → LocCheck menu.
Stability and compatibility¶
- Source packages compile successfully on Unreal Engine 5.5, 5.6, 5.7, and 5.8.
- Automated test suites pass on every supported engine version.
- Unreal Engine 5.6 received complete live UI workflow verification.
Known limitations¶
- Runtime-generated String Table keys cannot always be discovered statically and may still be flagged as unused. Use Unused Entry — Ignored Namespaces or the per-entry Ignore action for intentional dynamic keys.
- Blueprint graph-pin text literals are not currently included in usage detection. Serialized values in widgets, Data Tables, Data Assets, and class defaults are supported.
- When assets cannot be loaded or a scan is limited, LocCheck reports incomplete coverage instead of incorrectly declaring entries unused.
Version 1.1.0¶
Asset FText scanning and review workflow update.
Asset FText Scanner¶
- Added project asset scanning for reflected
FTextfields stored outside String Tables and Widget Blueprints. - Added support for
UDataAssetandUPrimaryDataAsset-based content, including common item, skill, spell, quest, NPC dialogue, buff/debuff, tooltip, and ability description data. - Added support for
UDataTablerow structs containingFTextfields. - Added recursive inspection for nested structs, arrays, maps, and sets where safe.
- Added safe Blueprint class default scanning for reflected
FTextfields. - Asset text risks now include asset path, asset type, property path, row name when available, suspect text preview, and review message.
- Asset FText results appear in the existing Text Risks/Hardcoded Text review flow and exported reports.
Text Risk Review UI¶
- Updated Text Risks to include Widget Blueprint text, Data Asset text, Data Table row text, and safe Blueprint class default text in one review page.
- Added single-click row selection support that updates the right-side details panel.
- Added selected-row visual indicators for Problems and Text Risks lists.
- Kept double-click reveal support for opening or revealing related assets in the Content Browser.
- Added Dashboard visibility for text risks so users can see when asset/widget text needs review.
Settings¶
- Added Scan Data Assets and Data Tables for FText scanner toggle.
- The new scanner is enabled by default and respects the configured include/exclude content paths.
- Project content remains the default scan scope to avoid noisy engine/plugin text results.
Versioning and Packaging¶
- Updated plugin version to 1.1.0.
- Kept LocCheck as an editor-only plugin with no runtime impact.
- Kept external dependencies at zero.
Notes¶
- LocCheck scans reflected Unreal
FTextproperties. Custom runtime-only text systems, external databases, non-reflected storage, or text created only in custom code paths may still require manual review.
Version 1.0.0¶
Initial release.
Dashboard¶
- Added Localization Health Score with score ring, label, and color-coded result bands.
- Added per-culture completion cards for translated, missing, empty, and long-text counts.
- Added issue summary cards for total issues, critical issues, warnings, and scanned tables.
- Added Top Fixes preview to show the most common problem categories.
- Added preview table for entries with active issues.
Table Browser¶
- Added full search across keys, source text, namespaces, table names, translations, and issue messages.
- Added filters for table, review status, severity, and culture.
- Added Problems Only toggle for issue-focused triage.
- Added column sorting.
- Added row selection synced to the Inspector Panel.
Problems View¶
- Added issue-focused list for critical, warning, and suggestion review.
- Added severity filter buttons.
- Added synchronized inspector details when selecting a problem.
Reveal Related Assets¶
- Added double-click reveal support for issue rows in Tables, Problems, and Hardcoded Text results.
- Added Content Browser syncing for related String Tables, Blueprints, Widget Blueprints, and project assets.
- Added documentation note that this reveals the related asset, but does not currently open the exact String Table entry, Blueprint node, graph pin, or text field automatically.
QA Scanners¶
- Added Missing Translation scanner.
- Added Empty Translation scanner.
- Added Placeholder scanner for format argument checks.
- Added rich text tag comparison through placeholder/rich text validation.
- Added Text Length scanner with configurable ratio and absolute delta thresholds.
- Added per-entry character limit support.
- Added Duplicate scanner for duplicate keys and repeated source text.
- Added Naming scanner for placeholder-style keys, keys with spaces, unnamespaced generic keys, and prefix rule violations.
- Added Font Glyph scanner using TrueType/OpenType cmap parsing without external dependencies.
- Added Unused Entry scanner using Asset Registry references and deep FText property inspection.
Hardcoded Text Scanner¶
- Added scanning for Widget Blueprint TextBlock, RichTextBlock, EditableText, and EditableTextBox properties.
- Added detection for common placeholder labels such as Text Block, Button, New Text, and TODO.
- Added asset path, widget name, suspect text, reason, and severity output.
Inspector Panel¶
- Added key, table, and namespace metadata.
- Added source text display.
- Added per-culture translation list with status badges and character deltas.
- Added issue chips with severity, message, suggested fix, and per-issue Ignore action.
- Added developer notes and context notes.
- Added per-entry character limit field.
- Added usage references with Open Asset actions.
- Added actions for Mark Approved, Mark Needs Review, Ignore Issue, Copy Key, and Open Asset.
Review Workflow¶
- Added review statuses: Unreviewed, Needs Review, Approved, Ignored, and Locked.
- Added per-entry developer notes and context notes.
- Added per-issue ignore flags.
- Added persisted review data in
Saved/LocCheck/ReviewData.json.
Reports¶
- Added Markdown report export.
- Added HTML report export.
- Added CSV export.
- Added Table Split Plan export for large table organization review.
- Added Review Status Export for sprint planning and QA tracking.
- Added timestamped filenames.
- Added automatic output folder opening after export.
Settings¶
- Added source culture and target culture configuration.
- Added culture auto-detection from project localization files.
- Added include and exclude content path settings.
- Added text length threshold settings.
- Added key naming convention rules and required prefixes.
- Added scanner enable/disable toggles.
- Added ignored namespaces for unused entry scanning.
- Added score penalty multiplier.
- Added report output directory setting.
Technical¶
- Added editor-only C++ module named
LocCheck. - Added Slate UI with custom dark theme, cards, badges, tables, scrollbars, and type scale.
- Added progress dialog support through
FScopedSlowTask, including cancellation. - Added localization archive fallback parsing when String Tables are not available through the runtime registry.
- Added menu entry under Tools > ECal Studios > LocCheck — Localization QA.
- Added keyboard shortcut Ctrl+Shift+L.
- Added support for Unreal Engine 5.5, 5.6, and 5.7.
- Added support for Windows, macOS, and Linux editor builds.
Copyright (c) 2026 ECal Studios. All Rights Reserved.