Немецкие составные слова вылезают за границу диалогового окна? Арабские тексты идут слева направо, ломая layout? Это не баги перевода — это проблемы технической локализации. Локализация — системная работа с текстом, шрифтами, форматированием, правилами склонения и размерами UI под каждый язык. Игра, которая «переведена», но не локализована, выглядит как машинный перевод: текст вылезает за кнопки, числа отображаются без учёта локали, а RTL-строки не зеркалятся.
Наш опыт — 10+ лет в геймдеве. Мы строили пайплайны для проектов с 15 языками, включая арабский, иврит, китайский. Мы используем Unity Localization — стандарт для Unity-проектов. Он работает через StringTable (текстовые строки с ключами) и AssetTable (локализованные ассеты). Таблицы экспортируются в XLIFF или CSV для передачи переводчикам.
Ключевой принцип: в коде и Prefab'ах — только ключи, никаких хардкоженных строк. Компонент LocalizedString на TextMeshProUGUI — обязательная архитектура. Нарушение этого правила означает ручной поиск всех текстовых строк по сцене — это сотни объектов при добавлении нового языка.
Как работает техническая локализация?
Техническая локализация начинается с аудита: проверяем код на хардкоженные строки, UI на негибкие layout-ы. Затем настраиваем StringTable/AssetTable, связываем ключи с элементами. Экспортируем в XLIFF для переводчиков, импортируем обратно с верификацией. После — псевдолокализация и тестирование. Для CJK-языков подключаем Dynamic Font Asset, для RTL — зеркалирование UI.
Почему псевдолокализация незаменима?
До получения реальных переводов мы запускаем псевдолокализацию: удлиняем все строки на 30–40% и добавляем случайные символы. Это выявляет переполнение контейнеров за 2–3 дня вместо обнаружения на этапе интеграции переводов. Без псевдолокализации вы рискуете получить баги за пару недель до релиза. Сравнение: псевдолокализация в 3 раза эффективнее обнаруживает проблемы с переполнением до передачи строк переводчикам, тогда как реальные переводы — только после импорта.
Что такое Dynamic Font Asset и зачем он нужен?
Для китайского, японского и корейского языков статический шрифтовой атлас весит 15–30 MB. Dynamic Font Asset загружает только встретившиеся в тексте глифы, сокращая память до нескольких сотен килобайт. Минус — микрофризы (0.5–2 мс) при первом рендере нового иероглифа, но для мобильных проектов это приемлемо.
| Характеристика | Статический Font Asset | Dynamic Font Asset |
|---|---|---|
| Память | 15–30 MB | 0.5–2 MB (зависит от текста) |
| Микрофризы | Нет | Да (0.5–2 мс при новых глифах) |
| Простота настройки | Готовый атлас | Требует указания диапазонов Unicode |
Для арабского и иврита обязательна поддержка RTL. В TextMeshPro есть встроенный RTL режим (TMP_Text.isRightToLeftText = true), но одного флага недостаточно. Элементы UI тоже должны зеркалиться: кнопка «Назад» перемещается с левого края на правый, список читается справа налево. Это требует специальной логики в Layout Manager или переключаемых Prefab'ов с зеркальным layout'ом для RTL-языков.
Из нашей практики: на проекте с поддержкой русского, английского и немецкого мы столкнулись с тем, что немецкие составные слова (например, Geschwindigkeitsbegrenzung) не переносятся в TextMeshPro по умолчанию. Решение — Hyphenation через TMP_Settings + подключение словаря переносов для немецкого. После настройки текст корректно переносится, контейнер диалога перестал переполняться.
Ориентировочные сроки
| Масштаб | Сроки (без учёта времени перевода) |
|---|---|
| Добавление одного языка в готовый пайплайн | 3–7 дней |
| Построение пайплайна локализации с нуля (1–2 языка) | 1–3 недели |
| Полная локализация проекта (5–10 языков, RTL включая) | 4–10 недель |
| Интеграция с внешними CAT-инструментами + автоматизация | 1–3 недели |
Типичные ошибки при локализации
- Хардкоженные строки в коде и сценах — при добавлении языка приходится искать их вручную.
- Отсутствие RTL-зеркалирования UI — арабский текст идёт слева направо, ломая навигацию.
- Игнорирование множественных форм — в русском три числа, в английском два, в арабском шесть.
- Неиспользование псевдолокализации — баги с переполнением обнаруживаются только после интеграции переводов.
Что входит в нашу работу
Мы предоставляем полный цикл локализации под ключ:
- Аудит текущего кода и UI на готовность к локализации.
- Настройка пайплайна Unity Localization (или аналога для Unreal Engine).
- Создание StringTable/AssetTable, интеграция с CAT-инструментами.
- Разработка Dynamic Font Asset для CJK и RTL-языков.
- Псевдолокализация и тестирование переполнения UI.
- Автоматизация импорта/экспорта переводов.
- Документация по поддержке локализации для команды.
Свяжитесь с нами для аудита вашего проекта — мы подберём оптимальное решение. Получите консультацию инженера по локализации, чтобы избежать типичных ошибок и сократить время выхода на новые рынки.






