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

Цей посібник створений як розширення посібника piggsy. Він не повторює інформацію, а розширює її прикладами й новими інструментами. Рекомендується ознайомитися з обома посібниками. Усе, що описано в цьому посібнику, засноване на власному досвіді автора.

Останні зміни: 31.12.2025
Telegram: Галицький Розбишака
Discord: .hikaro

Важливе оголошення

Даний посібник, оновлення інструментів та реліз нових, форки, публічна та приватна допомога з локалізаціями заморожується до досягнення цілі банки:
monobank

Unity

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

UABEANext

  • Робота з безліччю .asset/.bundle одночасно, підтримка вкладок.
  • Підтримка останніх* версій Unity асетів.
  • Підтримка пакетного експорту/імпорту асетів.
  • Підтримка експорту/імпорту спрайтів як текстур (імпорт лише у форку).
  • Підтримка Drag & Drop.
  • Підтримка пошуку по Path ID (лише у форку).
  • Активно розвивається, можливі баги.

UABEA

  • Робота лише з одним .asset/.bundle за раз.
  • Не підтримуються нові версії .bundle.
  • Експорт/імпорт відбувається поштучно.
  • В одному .assets підтягуються файли з інших .assets, що наводить плутатину.
  • Баг при імпорті JSON.
  • Збій програми при експорті файлів, назва яких перевищує 260 символів.
  • Розробка припинена.

Типи асетів Unity, що містять текст

Імпорт

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

Новий інструмент UABEANext позбавлений цієї проблеми — імпортування завжди проходить успішно.

.Bundle та catalog.*

Для патчингу catalog.json чи catalog.bin використовуйте покращений мною інструмент CatalogTool, у якому виправлено роботу з бандлами, що містять символи # у назвах, та додано функцію Drag & Drop для патчингу без ручного введення шляху. Це консольна утиліта, просто перетягніть catalog.json/.bin на .exe програми.

Шрифт

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

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

Текстури

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

Для додавання української як окремої в MonoBehaviour файли з масивами було написано власний інструмент Array Language Tool.

Її слід використовувати в поєднанні з Unity Localization Tool:

Додатково може знадобитися додавання нового рядка з назвою нашої мови у багатомовний MonoBehaviour і/або редагування .dll гри.

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 файли та файл із ліцензією (❗️ ОБОВ’ЯЗКОВО ❗️) у архів разом із перекладом для решти гравців, або ж додайте посилання на Unreal Engine Signature Check Bypasser для окремого завантаження. ❗️

Текст

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

❗️ Не намагайтеся перекладати такі .uasset/.umap, ви отримаєте неповний текст та пошкодите файл при збереженні. ❗️
UPD: В останніх версіях UE Localization Tool (2.8.4) було виправлено виявлення тексту, тепер його можна безпечно використовувати для перекладу .uasset.

Для об’єднання перекладу з новим .locres після оновлення гри використовуйте авторську CSV Merger Tool.

Як дізнатись, чи для .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 для підтримки кирилиці (інакше при збереженні і повторному відкритті .uasset у вас буде ???????? замість тексту). По-друге, це неефективна та марудна робота.

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

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

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

Заміна шрифтів

Коли поряд з .uasset немає файлу.ufont, а ви впевнені, що шрифт усередині .uasset+.uexp — знадобиться авторська програма UAsset Font Tool Підтримується заміна .ttf та .swf. Перевірено на Life is Strange 2, Borderlands 3 та KINGDOM HEARTS III + Re Mind.

Приклад заміненого шрифту через програму:

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

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

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

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

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

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

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

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

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

Інструменти

Unity

Unreal Engine

Поради

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

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