AdrenalineGames - LocKit: One-Click Localization

LocKit replaces the Localization Dashboard with three buttons.

1. Scan and check

LocKit sets up localization for your project, collects every text and lists everything that will go wrong for players in other languages.

2. Export for translators

One Excel file with every text, its context and notes for the translator.

3. Import translations

LocKit reads the file back, checks every line and compiles the translations into the game.

WHAT THE SCAN FINDS

Texts that are never translated

• Culture invariant texts and texts without a localization key in Blueprints, Widget Blueprints, data assets, DataTables and any other asset, including texts inside structs, arrays, maps and sets.

• Text pins in Blueprint graphs with localization switched off.

• Strings typed into a graph and converted with "To Text (String)" or "To Text (Name)", and text built from typed-in strings.

• FText::FromString("..."), FText::AsCultureInvariant("...") and INVTEXT("...") with literal text in your C++.

• Options of String ComboBoxes and player text stored in String variables or DataTable String columns.

• Texts that point to a string table entry that no longer exists.

Problems that lose translations

• Two different texts sharing one namespace and key.

• Placeholder texts such as "Text Block" that would be sent to translators.

Translation problems

• Missing and outdated translations per language, with progress bars.

• Translations that lose or rename a {placeholder}, so the value would not show in game.

• Rich text tags that differ from the source.

• Key labels such as E, LMB or F1 that were translated.

• Translations much longer than the source, spaces and line breaks that differ, one text translated in different ways.

Fonts

• For every language, the characters your fonts cannot draw (players would see empty boxes). LocKit reads the fonts' character maps, including sub-fonts and fallback fonts.

Project and packaging setup

• No localization target, or a target that gathers nothing (every new project starts with one like this).

• The game not loading translations at runtime.

• Languages missing from "Localizations to Package", so they disappear from the packaged game.

• Internationalization Support (ICU data) too small for your languages.

• Translations not compiled.

AUTOMATIC FIXES

Press Fix automatically and LocKit:

• gives asset texts and Blueprint Text pins a localization key, then saves (and compiles) them,

• rewrites hardcoded C++ texts to LOCTEXT / NSLOCTEXT,

• gives a new key to a text that shares one with another text,

• excludes placeholder texts from translation,

• creates and configures the localization target, registers it for the game, adds your languages to packaging and sets the ICU data,

• compiles the translations.

Findings without an automatic fix open the asset, the Blueprint node or the C++ line on double-click. Ignore what must never be translated, such as your studio name; ignored findings are shared with your team.

THE SPREADSHEET

• Source text, one column per language, then Context, Notes and Status.

• Status NEW, CHANGED (with the old text and old translation in Notes) and MACHINE.

• A "Read me" tab with instructions for the translator.

• Cells formatted as text, so Excel does not turn "1/2" into a date.

• Import finds columns by their header, empty cells never erase translations, and lines whose source changed after the export are skipped and listed.

• .xlsx and .csv supported.

SAFE IMPORT

Every translation is checked before it goes in. A translation that loses or renames a placeholder is refused. Tags, key labels and long lines are flagged.

MACHINE TRANSLATION WITH DEEPL (OPTIONAL)

No translator yet? Fill every untranslated text using your own DeepL API key (free DeepL API keys are supported).

• LocKit shows how many texts and characters will be sent and asks first.

• Placeholders, rich text tags and escaped characters are hidden from DeepL and put back afterwards.

• Every result is checked like an import.

• Machine translations are marked MACHINE in the spreadsheet until a person checks them.

• Your API key is stored on your computer only, never in the project's shared config.

SAFETY

• Assets and source files are copied to Saved/LocKit/Backups before LocKit changes them.

• Manifest and archives are snapshotted before every gather and import.

• LocKit keeps every translation your project ever had, so a changed source text shows the translator the previous translation.

• Gather settings you configured by hand are never changed.

ALSO INCLUDED

• Preview game in: see your UI in another language right in the editor.

• Build machines: a commandlet (-run=LocKitAudit) with exit codes, so a broken localization stops the build. Writes a CSV report.

• Scripting: every step is callable from Blueprints and Python.

Editor only: nothing from LocKit ships in your game.

Documentation: https://adrenalinegames.pl/LocKit.html