Створення українізатора 2.0
Цей посібник створений як розширення посібника piggsy. Він не повторює інформацію, а розширює її прикладами й новими інструментами. Рекомендується ознайомитися з обома посібниками. Усе, що описано в цьому посібнику, засноване на власному досвіді автора.
Останні зміни: 25.06.2026
Telegram: Канал
Discord: Сервер
Unity
Я однозначно рекомендую переходити з UABEA на UABEANext. Перший фактично перебуває у замороженому стані: розробка припинена, нові версії Unity не підтримуються, а частина критичних багів так і не була виправлена. Натомість UABEANext активно* розвивається, отримує підтримку нових версій рушія та пропонує значно ширший і зручніший інструментарій для роботи з асетами.
UABEANext
- Робота з безліччю assets/bundle одночасно, підтримка вкладок.
- Підтримка останніх* версій Unity асетів.
- Підтримка пакетного експорту/імпорту асетів.
- Підтримка експорту спрайтів як текстур.
- Підтримка Drag & Drop.
- Підтримка пошуку по Path ID.
- Підтримка пошуку тексту.
UABEA
- Робота лише з одним assets/bundle за раз.
- Не підтримуються нові версії bundle.
- Експорт/імпорт відбувається поштучно.
- В одному assets підтягуються файли з інших assets, що наводить плутатину.
- Баг при імпорті JSON.
- Збій програми при експорті файлів, назва яких перевищує 260 символів.
- Розробка припинена.
Типи асетів Unity, що містять текст
-
TextAsset
У TextAsset зберігаються практично будь-які текстові дані. Це можуть бути власні формати рядків або табличні дані у вигляді CSV чи TSV, структурований JSON чи формат з тегами XML. Такий асет можна експортувати двома варіантами:
a) Через меню Plugins у UABEANext:
b) Через кнопку Export у UABEANext, зберегти файл з форматом JSON і скористатися онлайн-конвертером JSON to CSV.
Для перетворення csv назад в json використовуйте онлайн-конвертер CSV to JSON. Приберіть зайві [ ], які встановлюються за замовчуванням, вони не потрібні.
❗️ Зверніть увагу: онлайн-конвертер зберігає json не з \r\n, як це інколи буває в оригіналі, а лише з \n. Через цю дрібницю у мене траплялися баги з діалогами в одній з ігор. Виправити це можна за допомогою Notepad++: відкрийте всі ваші конвертовані json і замініть потрібні символи.
-
MonoBehaviour
Експортуйте їх завжди у JSON формат через кнопку Export у UABEANext.
Багатомовні масиви
Використовуйте авторський інструмент Unity Localization Tool, який підтримує сім видів подібних масивів. Перекладайте текст прямо в програмі або експортуйте з неї в CSV чи TXT для перекладу деінде.
Файли з однією мовою, у тому числі з bundle
Підтримка таких файлів додана у 4.0 версії Unity Localization Tool.
Імпорт
❗️ Увага: Якщо ви досі використовуєте UABEA для роботи з assets та bundle, майте на увазі: в програми є баг, через який json може імпортуватися некоректно з першого разу. Завжди перевіряйте файл за допомогою кнопки View Data. Якщо з’являється повідомлення Asset failed to deserialize — повторіть імпорт json.
Новий інструмент UABEANext позбавлений цієї проблеми — імпортування завжди проходить успішно. Також можна використовувати авторський консольний інструмент UnityCLI. Його можливості:
bundle, unity3d та catalog.*
Для патчингу catalog.json чи catalog.bin використовуйте покращений мною інструмент CatalogTool, у якому виправлено роботу з бандлами, що містять символи # у назвах, та додано функцію Drag & Drop для патчингу без ручного введення шляху. Це консольна утиліта, просто перетягніть catalog.json/.bin на .exe програми. Або використовуйте python скрипт Unity Catalog Patcher від NooB.
Увага: UABEANext поки не підтримує компресію bundle і unity3d контейнерів, тому використовуйте старий UABEA або UnityCLI:
Вибирайте завжди LZ4 компресію, якщо не хочете просидіти 10-15 хв з LZMA.
Шрифти
Для швидкої і зручної генерації атласу шрифту використовуйте інструмент TMP Unity від MrIkso.
Якщо ви віддаєте перевагу ручній генерації атласів шрифтів через рушій Unity по посібнику від art-kandy, використовуйте авторську програму Atlas MonoBehaviour Merger для подальшого об’єднання згенерованих гліфів TMP/2D шрифтів з оригінальними MonoBehaviour.
Відеогайд від MrIkso як за допомогою BepInEx та UnityExplorer знайти шрифт, згенерувати новий через TMP Unity та замінити все через UABEANext:
Неофіційна українська мова
Для додавання української як окремої в MonoBehaviour файли з масивами було написано власний інструмент Array Language Tool.
Її слід використовувати в поєднанні з Unity Localization Tool:
Додатково може знадобитися додавання нового рядка з ID з назвою нашої мови у багатомовний 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, uasset і umap файлами використовуйте авторський інструмент UELT або мій старий форк UE Localization Tool 2.8.6 (не рекомендую, з перелічених у спойлерах причин).
Також текст з певних структур uasset та umap файлів, можна перенести в locres для зручності і збереження сумісності перекладу з оновленнями гри, що й було зроблено з перекладом Fatekeeper від Sent_Dez. Детальніше розписано в документації UELT.
Usmap/jmap/jmap.gz для uasset/umap файлів
Спробуйте переглянути випадковий uasset/umap у FModel. Якщо з’явиться повідомлення ...but mapping file is missing... — вам потрібен usmap/jmap/jmap.gz.
Що це таке: Цей файл містить усі структури гри для правильного відкриття та редагування uasset/umap, usmap є старою бінарною версією, коли jmap є новою альтернативою у вигляді JSON файлу, jmap.gz є його стисненим варіантом в архіві. Практично обов’язковий у Unreal Engine 5, іноді потрібен у 4-х версіях, тому й важливо перевіряти шляхом передогляду випадкового uasset у FModel'і.
Варіанти отримання usmap/jmap/jmap.gz
-
Dumper-7 та DLL Injector, знайдіть будь-який на просторах інтернету, або скористайтеся reinjector, звісно ваш антивірус буде на нього реагувати — він інтегрує сторонню dll під час роботи гри, що буде вважатись загрозою.
Як тільки побачите текст Generating SDK tools (*.*ms) можете закривати Командний рядок, при цьому гра також закриється. Згенерований usmap знайдете на системному диску у теці Dumper-7/Mappings.
jmap — консольний варіант генерування usmap/jmap/jmap.gz.
FModel Discord — знайти готовий usmap/jmap/jmap.gz, перейшовши в розділ game-compatibility.
Nexus Mods — іноді туди завантажують usmap файли, хоча здебільшого там дурня.
Правильне розпакування uasset/umap разом з uexp і подальший переклад
У вас при Export Data Raw в FModel експортується uasset/umap без uexp? Вітаю, у вас Zen-контейнери. Для роботи з ними потрібен retoc. Користуйтеся або консольним варіантом, або GUI-обгорткою від NooB.
Шаблон консольної команди для експорту потрібного файлу:
retoc --aes-key ВАШ_КЛЮЧ to-legacy --filter "/YourGame/Content/Some/Path/ФАЙЛ.uasset" "C:\Path\To\Game\Content\Paks" "C:\Path\To\OutputDir" --version UE*_*
--aes-key можна не використовувати, якщо ваша гра його немає.
--version версію рушія гри можете дізнатись із заголовку вікна FModel, з Властивостей виконуваного файлу гри, чи переглянувши перші рядки згенерованого jmap.
У моєму випадку з Samson команда виглядає ось так:
retoc to-legacy --filter "/CJ/Content/CJ/Core/Systems/Dialogue/DT_SayLines.uasset" "E:\Games\Samson\CJ\Content\Paks" "E:\Exports" --version UE5_7

Увага: Для ігор на 5.7 версії Unreal Engine потрібно розпаковувати з обов’язковим аргументом --version UE5_7, інакше асети конвертуватимуться як з 5.6 версії і не відкриватимуться коректно.
Правильний переклад uasset/umap
Раніше ми отримати usmap/jmap/jmap.gz, тепер маємо uasset/umap+uexp. Далі використовуємо UELT, відкриваємо uasset/umap та підтягуємо usmap/jmap/jmap.gz:
Застосування плюралізації та родів
Плюралізація
Unreal Engine підтримує плюралізацію (множину чогось/когось) через конструкцію {x}|plural(...). Важливо: замінюючи англійську локалізацію плюралізація обмежуватиметься лише one= і other= опціями, для повноцінної плюралізації з чотирма опціями потрібно створювати локалізацію окремою українською (дякую veydzh3r'у за ідею перевірити це):
{daysDelay} {daysDelay}|plural(one=day,other=days)
{daysDelay} {daysDelay}|plural(one=день,few=дні,many=днів,other=дня)
<NumberText>{0}</NumberText> {0}|plural(one=Townie,other=Townies)
<NumberText>{0}</NumberText> {0}|plural(one=містянин,few=містяни,many=містян,other=містянина)
and it also requires {amount} {name}{amount}|plural(one=s,other=)
і також вимагає {amount} {amount}|plural(one={name},few={name}и,many={name}ів,other={name}а)
| Ключ | Коли спрацьовує | Приклад |
|---|---|---|
| one= | 1, 21, 31, 41... | 1 день, 21 день |
| few= | 2-4, 22-24, 32-34... | 2 дні, 3 дні |
| many= | 5-20, 25-30, 35-40... | 5 днів, 11 днів |
| other= | десяткові числа (1.5, 2.3...) та 0 | 1.5 дня |
Роди
Для перекладу слів залежно від роду персонажа (знайшов/знайшла/знайшло) використовується конструкція {x}|gender(...).
Назва всередині дужок { } це аргумент, який задають розробники. Він може бути будь-яким: {NpcGender}, {NPC_A.Gender}, {Player.Gender} тощо. Знайти його можна двома способами:
- У файлах locres або uasset — якщо пощастить, і текст з |gender потрапив у локалізацію.
- У Blueprints, доведеться шукати в нодах Format Text або в текстових полях структур EventTemplate, QuestTemplate, DialogueTemplate чи DataAsset.
Пишете три форми через кому: Masculine → Feminine → Neuter (чоловічий, жіночий, середній рід). Порядок не можна змінювати. Якщо в оригіналі дві форми, додаєте третю за потребою.
{NPC_A} did not sleep all night.
{NPC_A} не {NPC_A.Gender}|gender(спав,спала,спало) усю ніч.
{NPC_A} is tired.
{NPC_A} {NPC_A.Gender}|gender(втомлений,втомлена,втомлене).
{NPC_A} met {NPC_B.Gender}|gender(his,her,its) best friend.
{NPC_A} {NPC_A.Gender}|gender(зустрів,зустріла,зустріло) {NPC_B.Gender}|gender(свого найкращого друга,свою найкращу подругу,свого найкращого друга).
Значення роду персонажа (Masculine/Feminine/Neuter) зберігається в окремих файлах (CompanionData, NPCData). Перекладач цього не бачить — він лише дає всі три форми, а рушій сам підставляє потрібну.
Приклад плюралізації та родів в одному рядку
{NPC_A} has fallen ill for {DaysAmount} {DaysAmount}|plural(one=day,other=days). {NPC_A.Gender}|gender(His,Her) condition worsens.
{NPC_A} захворів на {DaysAmount} {DaysAmount}|plural(one=день,few=дні,many=днів,other=дня). {NPC_A.Gender}|gender(Його,Її,Його) стан погіршується.
Особливості перекладу
Коли ви заміняєте англійську локалізацію, у деяких іграх може залишатись неперекладеними список мов і час та дата збережень, наприклад:
Для їх перекладу потрібно дістати uk.res з кожної теки у Engine/Content/Internationalization/icudt64l (включно з нею) і перейменувати їх у en.res (або ту, яку ви заміняєте):
Результат:
Заміна шрифтів
uasset
Коли поряд з uasset немає файлу ufont, а ви впевнені, що шрифт усередині uasset+uexp — знадобиться авторська програма UAsset Font Tool. Підтримується заміна ttf/otf та swf. Перевірено на Life is Strange 2, Borderlands 3 та KINGDOM HEARTS III + Re Mind.
Приклад заміненого шрифту:
ufont (UE 5.6+)
Починаючи з Unreal Engine 5.6 було додано розмір шрифту у заголовок ufont файлів як метадані для швидшого зчитування рушієм. Для видалення розміру і подальшого його правильного обрахування для пакування було написано інструмент uFontTool. Підтримується перетягування ufont/ttf/otf файлів та тек з підтеками.
Пакування
pak контейнери
Замість старого unrealpak варто використовувати новий інструмент repak, який дозволяє пакувати різними версіями контейнерів під потрібну версію Unreal Engine, а також є швидшим.
Важливо: Починаючи з Unreal Engine 5.6 з’явилася вимога обов’язкових utoc/ucas контейнерів для pak файлів, інакше гра просто не завантажить запакований переклад у контейнері pak. Так як у нових pak зберігаються лише locres, ufont, ini та інші звичайні формати — uasset та umap із Zen-контейнерів потрібно запаковувати в utoc.
Увага: У випадках, коли немає потреби у перекладі uasset чи umap, і при цьому utoc/ucas обов’язкові — можна взяти global.utoc і global.ucas з гри і використовувати їх як заглушки, перейменувавши під назву pak файлу.
Zen-контейнери utoc/ucas
Для цього нам знову потрібен retoc. Користуйтеся або консольним варіантом, або GUI-обгорткою від NooB.
Шаблон консольної команди:
retoc to-zen ТЕКА ЯК_БУДЕ_НАЗИВАТИСЬ_ФАЙЛ.utoc --version UE*_*
У моєму випадку з Life is Strange: Double Exposure команда виглядає ось так:
retoc to-zen Exports pakchunk8-Windows_P.utoc --version UE5_2
Неофіційна українська мова
У даній статті я описав метод можливого додавання української як окремої мови, зауважу, не всюди таке спрацює, якщо маєте бажання, можете спробувати на своїй грі.
Так як LocRes Builder зі статті є вкрай незручним, я написав власний інструмент LocMetaTool для роботи з locmeta файлами. Підтримує перетягування locmeta/json та конвертацію між версіями locmeta. Перевірено на The Midnight Walk і Aphelion.
Godot 4.x
Спершу прочитайте інформацію щодо цього рушія з посібникa piggsy, і вже тоді повертайтеся сюди.
Текст і шрифти
Потрібні інструменти Godot RE Tools і GodotTresEditor. Відеогайд по редагуванню translation файлів від MrIkso:
За таким самим принципом можна замінювати й шрифти — вони, як і інші ресурси, завжди зберігаються в .godot/imported.
Інструменти
Загальні
- XJV 1.0.1 — авторський інструмент для масової перевірки коректності XML і JSON файлів. Підтримується рекурсивне сканування вказаної теки, XML і JSON структури у TXT форматі, експортовані через UABEANext чи UABEA як TextAsset, експорт звіту з помилками у TXT, відкриття файлу у Провіднику подвійним натисканням рядка в таблиці. Підтримуватись буде Windows (мінімум Windows 10 1607) і Linux (Підтримка через Proton).
Unity
- Atlas MonoBehaviour Merger 1.4 — авторський інструмент для зручного об’єднання згенерованих гліфів з оригінальним MonoBehaviour файлом шрифту.
- Unity Localization Tool 4.4.1 — авторський інструмент для зручного перекладу і роботи з MonoBehaviour файлами.
Остання публічна версія Можливі баги з імпортом тексту з JSON (виправлено в ULT).
- CatalogTool 1.2 — власний форк CatalogTool. Додав підтримку Drag & Drop для json і bin каталогів. Виправив патчинг бандлів, що містять символи # у назвах.
- Array Language Tool 1.4 — авторський інструмент для зручного додавання і видалення мов з багатомовних масивів MonoBehaviour файлу.
Підтримку припинено Напрацювання об’єднано з новим інструментом ULT.
- UnityCLI — авторський консольний інструмент для пакетного й гнучкого експорту/імпорту будь-яких типів асетів, потрібних для локалізації, у тому числі аудіо та відео, кращої компресії unity3d та bundle та пошуку тексту. Підтримуватись буде Windows (мінімум Windows 10 1607).
Доступ відкрито Надається персонально через Discord сервер чи Telegram канал перекладачам, які не займаються машинним перекладом.
Also, dear non-Ukrainian translators, I will not provide my tools or forks to you — they are designed for Ukrainians. - ULT — закритий авторський інструмент, наступник Unity Localization Tool. Підтримується робота у вкладках, розширено і виправлено попередній функціонал, робота з 15-ма видами MonoBehaviour файлів, присутні автоматичні оновлення. Підтримуватись буде Windows (мінімум Windows 10 1607) і Linux (Обмежена підтримка через Proton, без автоматичних оновлень).
Доступ відкрито Надається персонально через Discord сервер чи Telegram канал перекладачам, які не займаються машинним перекладом.
Also, dear non-Ukrainian translators, I will not provide my tools or forks to you — they are designed for Ukrainians.
Unreal Engine
- UE Localization Tool 2.8.6 — власний форк UE4LocalizationsTool зі швидшою роботою, виправленням помилок і новим функціоналом.
- Змінив бібліотеку для CSV і переписав його обробку.
- Оптимізував програму асинхронними методами та словниками.
Для тестування швидкості було взято .locres файл на 107233 рядка з мільйоном слів.
UE4 Localizations Tool 2.7:
Відкриття .locres: 28 с 567 мс; Імпорт csv: 2 с 983 мс; Збереження .locres: 2 хв 49 с 350 мс.
UE Localizations Tool 2.7.8:
Відкриття .locres: 1 с 283 мс; Імпорт csv: 2 с 567 мс; Збереження .locres: 2 с 750 мс.
Відкриття стало приблизно на 95,5% швидшим.
Імпорт став приблизно на 13,9% швидшим.
Збереження стало приблизно на 98,4% швидшим. - Додав підтримку .locres v4 (Stellar Blade).
- Додав імпорт TXT за ID (за проханням Aedan).
- Додав експорт CSV/TXT тільки вибраних рядків (за проханням volorus).
- Додав підрахунок слів.
- Переписав обробку .locres.
- Покращив інтерфейс.
- Переклав українською.
- Виправив і додав статусні повідомлення у багатьох місцях.
- Виправив виявлення тексту у uasset. В одному файлі зустрічаються два різні формати структури даних. Реалізував двопрохідний алгоритм обробки файлу.
- Витирає певну кількість рядків у locres файлі після збереження: доказ #1, доказ #2 (виправлено в UELT).
- Не може дістати деякий текст з uasset/umap файлів (виправлено в UELT).
- Дістає мусорні рядки з uasset/umap файлів, які не відносяться до фактичного тексту гри (виправлено в UELT).
- Спотворює структуру uasset/umap файлів після збереження (виправлено в UELT).
- Не підтримує рідкісні та складні структури uasset файлів (підтримується в UELT).
- Не підтримує uasset/umap файли з Unreal Engine 5.6+ (підтримується в UELT).
- CSV Merger Tool 1.3 — авторський інструмент для об’єднання перекладу з новим CSV файлом.
Підтримку припинено Напрацювання об’єднано з новим інструментом UELT.
- UAsset Font Tool 1.2 — авторський інструмент для заміни ttf/otf чи swf шрифту у uasset+uexp файлах.
- FModel Text Searcher — власний форк FModel з функцією пошуку тексту по всіх файлах.
Доступ відкрито Надається персонально через Discord сервер чи Telegram канал перекладачам, які не займаються машинним перекладом.
Also, dear non-Ukrainian translators, I will not provide my tools or forks to you — they are designed for Ukrainians. - UELT — закритий авторський інструмент, глибоко переосмислений UE Localization Tool, інтерфейс створено з нуля, логіку роботи суттєво перероблено й розширено, позбавлений проблем попередників, використовує модифіковані сторонні бібліотеки, присутні автоматичні оновлення. Підтримуватись буде Windows (мінімум Windows 10 1607) і Linux (Обмежена підтримка через Proton, без автоматичних оновлень).
Доступ відкрито Надається персонально через Discord сервер чи Telegram канал перекладачам, які не займаються машинним перекладом.
Also, dear non-Ukrainian translators, I will not provide my tools or forks to you — they are designed for Ukrainians. - uFontTool 1.1 — авторський інструмент для роботи з ufont файлами починаючи з Unreal Engine 5.6.
- LocMetaTool 1.1 — авторський інструмент для роботи з locmeta файлами. Підтримується перетягування locmeta/json, конвертація між 0, 1 і 2 версіями.
Деталі форку
Проблеми форку і оригінальної програми
Поради
Для перекладу тексту та порівняння з оригіналом зручно використовувати ExamDiff, саме Pro версію, яка підтримує усі compare-функції.
Для вводу символів … — – « » ’ ° зручно використовувати авторські швидкі клавіші на AutoHotkey (Тільки для Windows).