← К блогу

Переполнение локалей в игровом UI: запас в дизайне и QA экспорта перевода VberAI Studio

Как не допустить поломки кнопок и списков из-за немецкого или испанского текста, заложить ширину в дизайн и сравнить локали на холсте VberAI Studio до полного повторного экспорта.

Опубликовано
  • game-ui-design
  • game-dev-ai
  • ui-localization
  • i18n
  • figma-to-unity
  • psd-to-unity
  • vberai
  • ai-studio
  • unity
  • godot
  • cocos
  • 2026
Переполнение локалей в игровом UI: запас в дизайне и QA экспорта перевода VberAI Studio

Готовый к выпуску UI часто проваливает локализацию не из-за плохого перевода, а потому что тот же макет не вмещает переведённый текст. Текст кнопки обрезается RectTransform, строки списка схлопываются с двух строк в одну, вкладки остаются тесными и показывают многоточия. Проверка в редакторе Unity с английским плейсхолдером скрывает проблему до теста на немецком или испанском — а затем правки обычно затрагивают и исходник дизайна, и Prefab.

Примеры макета и обрезки ниже используют Unity UGUI (RectTransform, Prefab и так далее). Godot Control и Cocos UI применяют те же идеи через якоря, minimum_size и префабы; критерии запаса в дизайне и переполнения работают так же.

Пункты 9–11 чек-листа передачи дизайна уже упоминают запас на длину текста и локали с одинаковой структурой. Этот пост добавляет референсные диапазоны, чек-лист со стороны дизайна, QA на холсте после перевода в VberAI Studio и критерии провала перед выпуском. Safe Area на устройстве, ассеты Release-сборки и связанные проверки остаются в пунктах 1, 5 и 6 чек-листа UI перед выпуском.

Критерии провала (любой один = не пройдено): читаемый текст обрезан или перекрывается; многоточия или бегущая строка без спецификации продукта; визуальная рамка кнопки не совпадает с областью нажатия; главный экран локали требует уникального изменения Hierarchy, чтобы показать полный текст (конфликтует с целями многоязычия при одинаковой структуре).


Расширение текста: референсные диапазоны для дизайна

Команды локализации часто оценивают рост относительно английского или исходного языка. Это не контрактные SLA — задайте внутренние пороги с учётом вашего UI-шрифта и размеров. Используйте таблицу, чтобы выбрать 2–3 стресс-локали для ревью дизайна перед передачей, а не для предсказания точной длины строк.

СвязьТипичный паттерн (мобильные кнопки, короткие метки)Действие в дизайне
DE / ES / PT против коротких китайских метокТот же смысл часто требует ~+25% до +40% горизонтального места (сложные слова, артикли)Заложите в спецификацию min-width кнопки и фиксированную ширину вкладки или правила переноса
EN против ZH на одной кнопкеПохожая длина или EN чуть длиннее — не считайте ширину EN подтверждением для всех локалейПроверьте DE или ES в дополнение к EN
FR / ITСредне-длинные; подзаголовки списка часто требуют двух строкЗарезервируйте вторую строку или ограничьте длину подзаголовка
VI / IDЛатиница, но переменная длина словТот же уровень стресса, что и ES
ARДлина плюс RTL и формирование цифр; зеркальный макет — отдельная темаЭтот пост предполагает LTR с одинаковой структурой; RTL требует собственного дизайна или правил зеркалирования движка
JA / KOСмешение полной ширины: визуальная ширина не линейна по числу символовИзмеряйте ширину отрисованной строки при целевом размере; не считайте только символы

Замечание по движку: Unity TextMeshPro Auto Size только уменьшает между минимальным и максимальным размерами шрифта. Если текст всё ещё переполняется при минимальном размере, это ёмкость макета, а не то, что нужно исправлять дальнейшим уменьшением — расширьте контейнер или измените текст в дизайне.

Side-by-side stress locales (e.g. DE, ES) with no overflow


12 проверок дизайна с фокусом на переполнение (чек-лист)

В дополнение к общему списку передачи из 12 пунктов отметьте эти для локалей:

#ПроверкаСтандарт прохождения
1Текст основной кнопки — это текстовый слой, а не растровый наборЗаменяемые строки; перечислите нелокализуемый набор в спецификации
2Контейнер кнопки имеет min-width (Figma Auto Layout или фиксированную ширину)DE/ES псевдолокаль или реальные строки не переполняются
3Вкладка / нижняя панель: фиксированная ячейка или явное разрешение на две строкиНикаких «выглядит как одна строка, а на деле обрезано»
4Строки списка: заголовок и подзаголовок на отдельных строках; у подзаголовка есть максимум строкЕсли две строки не проходят, сократите текст или расширьте список
5Числа, валюта, таймеры и единицы — отдельные поляНикакого растрового целого предложения; форматы живут в таблицах строк
6Иконка + текст: ширина текста независима от иконкиБолее длинный текст не сжимает иконку
7Отступы nine-slice панели и отступы контента достаточныСм. пункт 6 передачи; растягиваемая область не прилегает к тексту
8Заголовок диалога, тело, основная/вторичная кнопки — отдельные слоиСпецификация для переноса или на один шаг меньшего кегля при длинном заголовке
9Бейджи событий и короткий текст рядом с красными точками имеют максимальную длинуОперационный текст сверх лимита возвращается на правку — а не экстренно сжимается
10Многоязычные варианты: одинаковая структура Frame, только текстНикаких контролов только для локали, если спецификация не разрешает
11Заметки об экспорте перечисляют, какие стресс-локали были провереныИнженеры / QA знают базовую линию приёмки
12Полноэкранный концепт всё ещё имеет читаемый текстРазделите текстовые слои или примите повторный экспорт перед движком (срез на месте)

Figma Auto Layout hug/fill, min/max width и truncate текста должны совпадать с договорённостью с инженерами — если продукт запрещает многоточия, не принимайте макет только с truncate.


Путь VberAI Studio: перевод → сравнение → полный повторный экспорт дерева

VberAI Studio (AI Studio, ≠ Google AI Studio) перевод в один клик нацелен на изменение только читаемого текста — геометрия и иерархия остаются прежними. Это согласуется с работой в движке, где меняются только CSV / таблицы строк, а структура Prefab остаётся — разные этапы одного конвейера локализации: AI Studio владеет многоязычным визуальным дизайном и экспортом; TMP и таблицы строк владеют переключением во время выполнения.

Рекомендуемый порядок (тот же, что холст → Prefab):

ШагДействиеПриёмка
1Зафиксируйте основной макет на холсте или в Figma/PSDТекстовые слои и границы кнопок ясны
2Запустите перевод в один клик для каждого экрана (по партии локалей выпуска или мультилокально)Иерархия слоёв и имена узлов не изменились
3На холсте сравните 2–3 локали с самым длинным текстом рядом или переключением (включите DE или ES + основную локаль выпуска)Нет переполнения, нет перекрытия
4Проверьте машинно-переведённые строки, которые слишком длинныОтредактируйте текст или измените размер в рамках спецификации; человеческое подтверждение юридических/брендовых строк
5Полный повторный экспорт дерева Prefab (Unity UGUI / Godot Control / Cocos UI)Совпадает с холстом; не редактируйте только Text в проекте без синхронизации исходника дизайна
6Согласуйте таблицы строк с текстом по умолчанию в Prefab в проектеПереключение локали в Play mode совпадает с холстом

Одинаковый макет, только смена темы: reskin. После reskin, если вы добавляете новые локали выпуска, всё равно переведите и экспортируйте — избегайте ручного редактирования Text в Scene, пока Prefab в репозитории расходятся (пункт 6 перед выпуском).

До перевода: домашний макет и связи узлов зафиксированы

После перевода: меняется только язык текста; геометрия должна оставаться один к одному


Приёмка перед выпуском: связь с чек-листом тестирования

Пункт 2 чек-листа перед выпуском требует каждую живую локаль на домашнем экране и ключевых попапах. Рекомендуемое выполнение:

ПунктПрактика
Приоритет локалейПеред полным проходом локалей прогоните стресс-локаль + основную локаль выпуска
ОбластьОсновной HUD, частые попапы, экраны оплаты/возраста/юридических длинных текстов
ОкружениеПереключение локали в Unity Editor не заменяет проверки отрисовки шрифтов на устройстве (особенно смешение CJK + латиница)
ПрохождениеНет обрезки, нет незаявленных многоточий, области нажатия совпадают с визуалом

Если строки меняются только в движке, а макет не менялся, но переполнение сохраняется → считайте это недостаточным запасом в дизайне или отсутствием QA холста по стресс-локали, затем исправляйте по таблице ниже — а не постоянным глобальным уменьшением шрифта в Prefab.


Маршрутизация исправлений

СимптомВероятная причинаДействиеВладелец
Переполнение одной кнопки или меткиmin-width слишком мал; набор использован как основной текстРасширьте дизайн или сократите текст; переведите в текстовый слойДизайн
Много переполнений на одном экранеОсновной макет слишком тесный; нет проверки стресс-локалиFigma/холст Auto Layout → повторный перевод в AI Studio → полный повторный экспорт дереваДизайн + инженерия
В Unity Editor OK, одна локаль падает на устройствеFallback-шрифт шире; DPIПеретестируйте на устройстве; настройте Font Asset / контейнерИнженерия
Список в две строки только в одной локалиПеревод подзаголовка слишком длинныйЛокализация сокращает или высота строки увеличивается (повторный экспорт при изменении структуры)Локализация + дизайн
Переключение во время выполнения падает, холст OKНесовпадение таблицы строк и PrefabСогласуйте таблицу и Text по умолчанию; проверьте переносы строкИнженерия
После reskin события локаль всё ещё показывает старый макетReskin заменил только арт, без повторного экспорта PrefabПосле reskin повторно запустите перевод + экспорт для каждой локалиДизайн

Правило решения: если структура остаётся прежней → предпочитайте текст, min-width и QA холста в VberAI Studio, затем повторный экспорт. Если нужно добавить/удалить узлы или изменить число вкладок → изменение макета — обновите основной макет и спецификации всех локалей; не патчите Prefab только одной локали.


Разделение труда против «только таблицы строк»

ПодходПодходитНе подходит
Таблица строк движка / TMPМакет проверен; только переключение локали во время выполненияПервый импорт UI без QA стресс-локали
Перевод + экспорт VberAI StudioНа основе дизайна; многоязычный визуальный паритет; исходник Figma/PSDЗамена юридической проверки или проверки соответствия платежей
Ручное редактирование Text в PrefabЭкстренный хотфикс для одной-двух строкДолгосрочная многоязычная поддержка (расхождение Scene)

Полная цепочка: запас в дизайне → многоязычный макет в VberAI Studio → экспорт Prefab → согласование таблицы строк и значений по умолчанию → прогон всех локалей перед выпуском. Привязка и QA в Play после импорта: чек-лист движка + MCP.


Часто задаваемые вопросы

TMP Auto Size на минимуме всё ещё переполняется — это баг инженерии?
Обычно нет. Auto Size масштабирует только внутри контейнера. Если ширина была зафиксирована при передаче, расширьте дизайн или измените текст, либо разрешите две строки по спецификации.

Макет «теоретически не изменился» после перевода — всё равно повторно экспортировать Prefab?
Если UI пришёл из экспорта VberAI Studio, полный повторный экспорт дерева после финализации текста сохраняет Prefab в репозитории согласованными с холстом. Правки только Text в проекте без синхронизации холста теряются при следующем reskin или повторном экспорте.

Может ли RTL (арабский и т. д.) использовать этот чек-лист одинаковой структуры?
Правила ширины для LTR с одинаковой структурой всё равно помогают. RTL также требует зеркального макета и направления цифр — не предполагайте, что строк только перевода достаточно для выпуска.

Нужно ли повторно переводить при reskin события?
Если reskin не меняет текст, нет. Если текст события меняется вместе со скином, а имена узлов остаются прежними, перепроверьте стресс-локали на холсте, затем повторно экспортируйте.

Немецкий длинный — можно уменьшить размер шрифта только для этой локали?
Только если спецификация продукта определяет глобальный «−1 шаг» для этой локали. Иначе предпочитайте min-width и более короткий текст, чтобы читаемость оставалась согласованной между кнопками.

VberAI Studio — то же самое, что Google AI Studio?
Нет. VberAI Studio — это холст игрового UI, перевод и мультидвижковый экспорт; Google AI Studio — общая среда разработки ИИ от Google. См. сравнение.

Другие статьи, которые могут вам понравиться