Итак, начнём с того, как в Unreal Engine в целом устроена локализация
В движке предусмотрен специальный инструмент — Localization Dashboard, который предоставляет достаточно широкий набор возможностей для перевода, нас больше всего интересуют: сбор текста, экспорт и импорт локализованных данных в формате .po
.
Формат .po
удобен для переводчиков, редакторов для них есть множество на любой вкус.
По мере роста проекта (особенно крупного) количество текста быстро увеличивается. Многие строки повторяются: одна и та же фраза может встречаться десятки раз в разных местах, и Unreal будет воспринимать каждую такую строку как уникальную.
Чтобы избавиться от дублирования и централизовать управление текстом, в Unreal существуют String Table'ы.
Вместо непосредственного ввода текста мы просто вставляем ссылку на строку в таблице. Обычно таблиц бывает несколько — логично разбивать их по категориям, чтобы облегчить жизнь локализаторам и самим разработчикам.

Выглядит это довольно удобно, но на практике возникает проблема: текста становится слишком много, с ним могут работать разные люди, и даже один человек может забыть, что уже добавлял нужную строку, да ещё и не вспомнит, в какую именно таблицу. Начинается хаос: одни и те же строки появляются в разных таблицах, какие‑то строки меняются в процессе разработки предположительно в одном месте — а по факту происходит изменение везде. Отличная среда для размножения багов.
Всё это подводит к очевидной мысли: необходимо решение, которое упростит работу с текстом, ускорит процесс и снизит количество ошибок. И у меня оно есть.
StringTableSearch_Plugin + Asset Search
Ясоздал плагин для Unreal Engine 4.27 — 5.6 который добавляет удобный инструмент для работы со StringTable'ами. Крайне прост в использовании.
Скачать его можно у меня на GitHub тут.
Для установки нужно распаковать zip архив в папку Plugins своего проекта.
На картинках снизу описан весь функционал. Рекомендую ознакомиться.
Copy Row Reference, например — существенно ускоряет монотонную работу по вбиванию ссылок на строку.


Тем не менее, остаётся ещё одна важная деталь: хочется иметь возможность искать конкретную строку не только в String Table'ах, но и во всех ассетах проекта. Ведь если строка используется в нескольких местах, логично понимать, где именно — чтобы не наломать дров, случайно изменив текст «в одном месте», попутно изменив его в сотне других мест.
К счастью, в Unreal Engine уже есть решение этой задачи - плагин Asset Search. Он позволяет искать по всем ассетам проекта, включая тексты. Всё, что нужно - просто включить его через Plugins.
Не забудьте, что для корректной работы все ассеты должны быть проиндексированы.

