Створення українізатора 2.0

Цей посібник створений як розширення та вдосконалення посібника piggsy. Він не дублює інформацію, а пропонує додаткові роз’яснення, приклади та нові інструменти. Рекомендується ознайомитися з обома посібниками. Усе, що описано в цьому посібнику, засноване на власному досвіді автора.
Останні зміни: 22.08.2025.
Подякувати автору: monobank
Telegram: Галицький Розбишака
Discord: .hikaro

Unity

Текст

Експортуйте і працюйте завжди з JSON, його простіше обслуговувати, простіше парсити, простіше знаходити зламані рядки.

> Види JSON:

> Імпорт

❗️ Увага: Якщо ви використовуєте UABEA для роботи з асетами та бандлами Unity, майте на увазі: в програми є баг, через який .json може імпортуватися некоректно з першого разу. Завжди перевіряйте файл за допомогою кнопки View Data. Якщо з’являється повідомлення Asset failed to deserialize — повторіть імпорт .json.

Новий інструмент UABEANext позбавлений цієї проблеми — імпортування завжди проходить успішно. Проте програма досі в розробці: можуть з’являтися артефакти під час прокручування списку, немає фільтрування за типами файлів, а сортування після імпорту постійно збивається.

Шрифт

Для редагування оригінальних .ttf або .otf шрифтів можна використовувати FontLab, FontForge або FontCreator.

Для зручного об’єднання згенерованих гліфів TMP/2D шрифтів з оригінальними MonoBehaviour використовуйте авторську програму Atlas MonoBehaviour Merger. Підтримується .json та .txt розширення MonoBehaviour файлу.


Unreal Engine 4 & 5

AES захист та .sig файл

Для швидкого пошуку AES-ключа зручно користуватися сайтом AES Dumpster.

Якщо у вашій грі використовується AES-захист разом із .sig файлами у теці Paks, скористайтеся інструментом Unreal Engine Signature Check Bypasser (один з авторів українець). Його потрібно розпаковувати у теку Binaries/Win64 поряд з .exe, так, обидва .dll та .asi.

Якщо на вашій грі це не спрацювало, створіть issue в репозиторії авторів щодо цього.

Це дозволить завантажувати сторонні .pak файли грою без необхідності ручного прописування -fileopenlog у «Параметрах запуску» властивостей гри в Steam.

❗️ Не забудьте додати .dll та .asi файли у архів разом із перекладом для решти гравців. ❗️

Текст

Для перекладу та роботи з .locres файлами використовуйте покращену версію UE Localizations Tool. Також підходить для перекладу .uasset та .umap файлів (Пункт меню програми Налаштування — Підтримка .uasset/.umap — Відкрити бажаний .uasset/.umap.), при умові, що вони не захищені .usmap ключем.

❗️ Не намагайтеся перекладати захищені .uasset/.umap, ви отримаєте неповний текст та пошкодите файл при збереженні. ❗️

Як дізнатись, чи .uasset/.umap захищені .usmap ключем:

Спробуйте відкрити .uasset/.umap у FModel для попереднього перегляду. Якщо з’явиться повідомлення ...mapping file is missing, вітаю, вам потрібен .usmap.

Як дістати .usmap:

Вам потрібен Dumper-7 та DLL Injector.

Можете скористатись моїм готовим архівом або скомпілюйте самі та знайдіть інджектор.

Як тільки побачите текст Generating SDK tools (*.*ms) можете закривати Командний рядок, при цьому гра також закриється.
Згенерований .usmap знайдете на системному диску у теці Dumper-7.

Правильне розпакування .uasset/.umap разом з .uexp

У вас при Export Data Raw в FModel експортується .uasset/.umap без .uexp? Вітаю, у вас Zen-контейнери.
Для роботи з ними потрібен retoc.

Шаблон команди для експорту потрібного файлу:

retoc --aes-key ВАШ_КЛЮЧ to-legacy --filter "/YourGame/Content/Some/Path/ФАЙЛ.uasset" "C:\Path\To\Game\Content\Paks" "C:\Path\To\OutputDir"

--aes-key можна не використовувати, якщо ваша гра його немає.

У моєму випадку з Life is Strange: Double Exposure команда виглядає ось так:

retoc to-legacy --filter "/Chronos/Content/Data/Localization" "E:\Games\Life is Strange - Double Exposure\Chronos\Content\Paks" "C:\Extract"

Правильний переклад захищених .uasset/.umap:

Раніше ми дістали .usmap з гри, тепер дістали .uasset+.uexp. Далі потрібен UAssetGUI, відкриваємо та імпортуємо наш .usmap.

Після чого обираємо в правому куті програми наш .usmap зі списку, та версію рушія (її ми дізнались при інджекті .dll)

Після всіх дій відкриваємо наш .uasset:

Я не рекомендую перекладати текст прямо в UAssetGUI. По-перше, в рядку англійського тексту постійно потрібно змінювати значення стовпця Variant з us-ascii на utf-16 (або utf-8 в залежності від гри) для підтримки кирилиці (інакше при збереженні і повторному відкритті .uasset у вас буде ???????? замість тексту). По-друге, це неефективна та марудна робота.

Для зручнішого перекладу натисніть FileSave As оберіть внизу Тип файлу .json та збережіть. У такому виді файлу не потрібно перейматись за значення стовпця Variant і можна перекладати спокійно рядки з текстом.

Такі .json файли також можна розпарсити та перекладати в .csv, але це робиться індивідуально для кожної гри, немає універсального інструменту, його потрібно писати власноруч, за допомогою ШІ, просити знайомих техніків або людей на дискорд серверах.

Після перекладу .json потрібно повернути в .uasset формат, для цього відкрийте його через UAssetGUI та натисніть Save, сформується .uasset+.uexp для імпорту в гру, впевніться, що назви файлів ідентичні з оригіналами з гри.

Пакування Zen-контейнерів

Для цього нам знову потрібен retoc.

Шаблон команди:

retoc to-zen ТЕКА ФАЙЛ.utoc --version UE*_*

У моєму випадку з Life is Strange: Double Exposure команда виглядає ось так:

retoc to-zen Exports pakchunk8-Windows_P.utoc --version UE5_2

Результат виконаної роботи:

Неофіційна українська мова

У даній статті я описав метод можливого додавання української як окремої мови, зауважу, не всюди таке спрацює, якщо маєте бажання, можете спробувати на своїй грі.


Поради

Для перекладу тексту та порівняння з оригіналом зручно використовувати ExamDiff, саме Pro версію, яка підтримує усі compare-функції.

Для вводу символів … — – « » ’ ° зручно використовувати авторські швидкі клавіші на AutoHotkey (Тільки для Windows).