Локализация мобильной игры
Игра отличается от бизнес-приложения: здесь строки — это не «Сохранить» и «Отмена», а диалоги с ветвлением, имена персонажей с падежами, интерфейс с ограниченным местом под текст и звуковые дорожки. Каждый из этих компонентов требует отдельной стратегии.
Текст в играх — это не просто строки
Расширение текста и 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). Стоимость рассчитывается после анализа объёма контента.







