Локалізація мобільної гри
Гра відрізняється від бізнес-додатку: тут рядки — це не «Зберегти» та «Скасувати», а діалоги з розгалуженням, імена персонажів з відмінками, інтерфейс з обмеженим місцем під текст та звукові доріжки. Кожен з цих компонентів потребує окремої стратегії.
Текст у іграх — це не просто рядки
Розширення тексту та layout
Німецький текст у середньому на 30-40% довший за англійський. «Inventory» — «Inventar» ще ок, але «Achievement Unlocked» → «Erfolg freigeschaltet» уже не влізе в кнопку. У Unity це вирішується через TextMeshPro з Auto Size — шрифт зменшується до Min Size, а далі текст обрізається. Потрібно задавати розумний Min Size (не менше 60% від базового) та тестувати все UI-панелі на німецькій та фінській (у фінської також довгі слова).
У Unreal — STextBlock з WrapTextAt та AutoWrapText. У Godot — Label з autowrap та динамічним розміром контейнера.
Арабська та іврит — весь UI переворачивається (RTL). Unity не підтримує RTL з коробки — потрібен пакет RTL-TMPro (безплатний, GitHub) або I2 Localization з RTL-підтримкою. Unreal з версії 4.23 підтримує RTL через Internationalization модуль нативно.
Відмінки, склоніння та розгалужені рядки
«Ви отримали [item]» — якщо item це «меч», то «Ви отримали меч». Якщо «броня» — «Ви отримали броню». Жорстка підстановка через string.Format("Ви отримали {0}", itemName) дає «Ви отримали броня».
Рішення:
-
PluralKit-підхід у Unity черезI2 Localizationз підтримкою CLDR plural rules та gender - Зберігати кілька форм іменника в даних предмета (
nominative,accusative,genitive) та вибирати потрібну за контекстом рядка - Для складних випадків —
MessageFormat(ICU) зselectтаpluralблоками
Японська та корейська не мають відмінків, але порядок слів зворотний — дієслово в кінці. «Attack the enemy» → 「敵を攻撃する」. Рядки зі вставленими іменами працюють тільки якщо перекладач знає, куди вставляється підстановка: {player_name} defeated {enemy_name} → у японській порядок може бути {enemy_name}を{player_name}が倒した. Для цього в локалізаційних системах використовують іменовані плейсхолдери, а не позиційні.
Інструменти та pipeline
Unity. I2 Localization — де-факто стандарт. Google Sheets інтеграція: перекладачі працюють прямо в таблиці, зміни підтягуються через Build або runtime. Альтернатива — Lean Localization (простіше, менше можливостей). Для голосового актерства — окремої таблиця з ключами аудио-файлів.
Godot. Вбудована система через TranslationServer + CSV або PO-файли. PO-файли зручніше для роботи з професійними перекладачами (підтримує Poedit, Crowdin).
React Native (Expo games, казуалки). i18next + react-i18next. Для більш серйозних ігор на RN — той же i18next з ICU-плагіном.
Нейтральний pipeline. Експорт рядків у XLIFF 2.0 або CSV → Translation Memory у CAT-інструменті (MemoQ, Phrase, Crowdin) → імпорт назад. Це важливо для узгодженості терміналогії: «урон» повинен везде перекладатися однаково, перекладач бачить контекст попередніх перекладів.
Шрифти та символи
Китайська (спрощена + традиційна), японська, корейська потребують шрифтів з відповідними глфами. У TextMeshPro не можна використовувати один Atlas для всіх мов — CJK потребує окремого Font Asset з потрібним Character Set. Dynamic Font Asset (TMP) завантажує глфи on-demand з системного шрифту — зручно, але додає runtime-залежність.
Арабська — шрифт повинен підтримувати лігатури (букви міняють форму залежно від позиції в слові). Noto Naskh Arabic, Cairo — хорошу безплатні варіанти.
Аудіо-локалізація
Голосове актерство (VO) — найдорожча частина. Синхронізація субтитрів з аудіо: у Unity через Timeline або AudioSource.clip.length — субтитри з'являються за подіями або за таймкодами. Lip-sync у 3D-персонажах — Oculus LipSync, SALSA LipSync (платний), або процедурний через Phoneme-систему.
Для казуальних ігор без VO — тільки текст + SFX. Локалізація займає 1-3 тижні.
Етапи роботи
- Аудит рядків — екстракція всіх hardcoded рядків з коду та префабів, створення ключів
- Інструментування — підключення локалізаційної системи (I2L, Godot TranslationServer)
- Передача перекладачам — XLIFF/CSV з контекстом (скриншоти екранів)
- Інтеграція перекладів — імпорт, перевірка layout на кожній мові
- Тестування — прохождення ключевих флоу на кожній мові, перевірка RTL, перевірка edge-cases (довгі імена, числа в рядках)
Графік: 1 тиждень (казуальна гра, 2-3 мови) до 3 місяців (RPG з розгалуженими діалогами, 10+ мов, VO). Вартість розраховується після аналізу обсягу контенту.







