LocCheck README¶
Localization QA & Table Management for Unreal Engine
Current version: 1.2.0
Supported engines: Unreal Engine 5.5, 5.6, 5.7, and 5.8
Fab listing: Open LocCheck on Fab
LocCheck helps you inspect, review, and document localization problems inside Unreal Engine. It is built for projects where text is spread across String Tables, generated localization data, Widget Blueprints, Data Assets, Data Tables, Blueprint defaults, and other project assets.
LocCheck does not translate your game and does not replace Unreal Engine's Localization Dashboard. It gives you a clearer QA layer on top of the localization workflow you already use.
What changed in 1.2.0¶
LocCheck 1.2.0 is a major corrective update focused on reliability in real projects.
The update fixes the Gather Text crash caused by editor UI code loading inside headless UnrealEditor-Cmd operations. It also repairs translation detection for String Tables and namespaced archive entries, reads coverage independently of the editor's active language, handles regional cultures through their correct parent cultures, and recognises translations even when the translated text matches the source.
Usage scanning now queries the Asset Registry correctly and reports references from Widget Blueprints, Data Tables, Data Assets, Blueprint defaults, nested structs, arrays, sets, and maps. The Usage Finder returns real results, and an entry is only called unused when its reference coverage is complete.
The Problems page now supports Ctrl/Shift multi-selection, Select All Filtered, Clear Selection, bulk approval, Needs Review, ignored issues, and Approve All Filtered. Status badges and confirmation notifications make each action visible, and review data survives editor restarts.
Hardcoded Text search now filters live, long result lists scroll correctly, and scan results refresh after localization or asset changes without requiring an editor restart.
Key features¶
- Localization Health Score — A 0 to 100 review score based on enabled checks and issue severity.
- Dashboard — Overall health, issue totals, culture progress, text risks, top fixes, and a quick entry preview.
- Translation coverage — Reads archives and compiled locres data directly from disk instead of relying on the active editor language.
- Culture handling — Canonical culture names, case-insensitive folder matching, valid parent fallback, and warnings for unrecognised cultures.
- Translation conflict detection — Flags cases where multiple localization targets provide different translations for the same namespace and key.
- Table Browser — Search and filter by key, source text, namespace, table, culture, review status, severity, or issue text.
- Problems View — Issue-focused review with severity filters, multi-selection, bulk actions, status badges, and immediate feedback.
- Inspector Panel — Source text, per-culture translations, issue details, notes, character limits, usage references, and review actions.
- Usage Finder — Search by key, partial key, namespace, or table name and inspect the referencing asset and property or row.
- Coverage-aware unused detection — Separates not scanned, references found, complete zero results, truncated coverage, and failed coverage.
- Hardcoded Text / Text Risks — Reviews Widget Blueprint text and reflected
FTextvalues in Data Assets, Data Tables, and safe Blueprint defaults. - QA scanners — Missing and empty translations, placeholders, rich-text tags, text length, duplicate keys, naming, font glyphs, unused entries, and text risks.
- Reports — Markdown, HTML, CSV, Table Split Plan, and Review Status exports.
- Persistent review data — Statuses, notes, ignored issues, and character limits are stored separately from your content.
- Commandlet-safe startup — Gather Text and other headless Unreal operations can run with LocCheck enabled.
Compatibility¶
| Item | Supported |
|---|---|
| Unreal Engine | 5.5, 5.6, 5.7, 5.8 |
| Platforms | Windows, macOS, Linux |
| Plugin type | Editor-only |
| Runtime impact | None |
| External dependencies | None |
Source packages compile on all supported engine versions. LocCheck is editor-only and adds no code or content to packaged games.
Installation¶
Install from Fab¶
- Install LocCheck for your engine version through the Epic Games Launcher.
- Open your Unreal project.
- Go to Edit → Plugins → Editor → LocCheck.
- Enable the plugin and restart the editor when requested.
Install from source¶
- Close Unreal Engine.
- Copy the
LocCheckfolder into your project'sPluginsdirectory. - Confirm the path looks like this:
YourProject/Plugins/LocCheck/LocCheck.uplugin
- Reopen the project and allow Unreal to compile the module.
A C++ project or an installed C++ toolchain is required when compiling from source.
Quick start¶
- Open Tools → ECal Studios → LocCheck.
- Press Quick Scan.
- Read the Dashboard for overall health, culture progress, issue totals, and top fixes.
- Open Tables to inspect individual entries and translations.
- Open Problems to review findings and use the bulk actions when several items need the same decision.
- Use Usage Finder to find where a key, namespace, or table is referenced.
- Use Hardcoded Text to review text that may be bypassing your localization workflow.
- Use Reports to export your current results.
You can also open LocCheck with Ctrl+Shift+L.
How scanning works¶
A Quick Scan runs the following steps:
- Collects String Table entries from the project.
- Reads localization archives from
Content/Localization. - Uses compiled locres data as a fallback when needed.
- Re-applies saved review statuses and ignored issues.
- Indexes asset usage for each String Table entry.
- Runs the enabled QA scanners.
- Recalculates the health score and refreshes every page.
After you update translations, edit assets, compile localization data, or run Gather Text, press Quick Scan again. LocCheck refreshes without restarting the editor.
Translation and culture handling¶
LocCheck reads translation data directly from disk, so the results are not affected by the language currently selected in Unreal Editor.
Culture names are canonicalized (fr_fr becomes fr-FR), folder matching ignores letter casing, and fallback follows Unreal's culture hierarchy. A specific culture can use a valid parent where appropriate, but a sibling culture is never treated as a substitute. Unrecognised culture names are written to the log instead of being silently ignored.
A translation that intentionally matches its source text still counts as translated. When two localization targets translate the same namespace and key differently, LocCheck keeps a deterministic result and adds a Translation Conflict warning for review.
Usage detection¶
The usage index inspects:
- Widget Blueprint widget trees
- Data Table rows
- Data Assets
- Blueprint class defaults
FTextnested in structs, arrays, sets, and maps
String Tables are matched by exact identity, so tables with the same asset name in different folders are not mixed together.
Usage results distinguish between:
- No scan data yet
- References found
- No references under complete coverage
- Truncated or cancelled coverage
- Failed coverage
Only the complete zero-reference state is treated as genuinely unused.
Review workflow¶
Use the Inspector for one entry at a time, or the Problems page for larger review passes.
The Problems page supports:
- Ctrl-click to toggle individual rows
- Shift-click to select a range
- Select All Filtered
- Clear Selection
- Mark Selected Approved
- Mark Selected Needs Review
- Ignore Selected Issues
- Approve All Filtered
Large operations ask for confirmation. Bulk changes are applied in one batch and one save, with status badges and a notification showing how many entries or issues were changed.
Review data is stored per project in:
Saved/LocCheck/ReviewData.json
It survives closing the tab, restarting Unreal Editor, rescanning, and running Gather Text.
Hardcoded Text and asset FText¶
The Hardcoded Text page combines common Widget Blueprint text with reflected asset FText findings. Search filters live across the asset name, path, type, property, row, and suspect text. Clearing the search or choosing All Risks restores the complete list.
The asset scanner can inspect:
UDataAssetandUPrimaryDataAssetcontentUDataTablerow structs- Nested structs and containers
- Safe Blueprint class defaults
Typical findings include item names, descriptions, skills, spells, quests, dialogue, buffs, debuffs, tooltips, and ability text.
Configuration¶
Open Edit → Project Settings → Plugins → LocCheck, or use the in-plugin Settings page or Cultures button.
Important settings include:
- Cultures to Scan / Source Culture — Leave the target list empty for automatic detection, or set it explicitly for exact control.
- Include / Exclude Paths — Limit the project content inspected by LocCheck.
- Scanners — Enable only the checks relevant to the current review pass.
- Usage Scan — Max Referencers Per Table — Limit inspected packages per String Table. Set it to
0for unlimited scanning with progress and cancellation. - Unused Entry — Ignored Namespaces — Exclude known runtime-generated namespaces from unused warnings.
- Text length and naming rules — Tune long-text thresholds, character limits, required prefixes, spaces, and generic keys.
- Report Output Path — Choose where exported files are written.
When the referencer limit is reached, LocCheck keeps any references it found and reports incomplete coverage. It does not incorrectly label the remaining entries as unused.
What LocCheck does not do¶
LocCheck is an audit and review tool. It does not:
- Translate text automatically.
- Replace Unreal Engine's Localization Dashboard.
- Edit, delete, or automatically fix project assets during a scan.
- Guarantee linguistic quality.
- Discover every key assembled dynamically at runtime.
- Inspect non-reflected custom storage or external databases automatically.
Known limitations¶
- Runtime-generated String Table keys may still appear unused. Add known namespaces to Unused Entry — Ignored Namespaces or ignore the individual issue.
- Blueprint graph-pin text literals are not currently included in usage detection. Serialized property values are supported.
- Assets that fail to load and scans limited by the referencer cap are reported as incomplete coverage.
- Font glyph checks require imported
UFontFaceassets. - Custom Slate code, runtime-only text systems, external databases, and non-reflected storage may need manual review.
- The health score is a practical guide, not a localization certification.
Support¶
For questions, bug reports, or feature requests, email [email protected].
Please include the LocCheck version shown at the bottom of the window (currently 1.2.0), your Unreal Engine version, operating system, a short description of the problem, and relevant Output Log lines containing LogLocCheck.
Copyright (c) 2026 ECal Studios. All Rights Reserved.