Редактор локализаций для UE4

Когда мы занялись локализацией нашей игры, то поняли что встроенный в движок редактор нам не подходит. На тот момент он даже в мультилайн не умел (баг?). Возможно, он удобен для больших дядь, которые умеют во всякие Localization Service Provider (чего?). Но для нас проще отправить Exel’евский файлик и быть уверенными, что любой переводчик сможет с ним работать. В итоге получилось это:

Translation Editor for UE4
Translation Editor for UE4

Для чего эта штука нужна и что она умеет? Во-первых, переводы можно править прямо в ней. Есть поиск и сортировка по нужным столбцам, удобно работает копипаста. Но, самое главное: эта штука умеет экспортировать переводы в табличку Excel (импорт ессно тоже есть). Получается такой результат:

Пример экспорта в Excel
Пример экспорта в Excel

Инструкция

  • Для начала нужно в Unreal Engine подготовить все для локализации: ссылка на статью об этом. Затем выполнить Gather и Compile для всех локализаций.
  • Дальше в утилите нужно открыть файл *.manifest из папки [YOUR_project]\Content\Localization\Game. Все локализации (*.archive) подтянутся автоматически.
  • Можно работать. Для того чтобы изменения применились к строке нужно жать [Ctrl] + [Enter].
  • Сохраняем все опять в *.manifest, а все *.archive cохранятся автоматически.
  • После запускаем Unreal Engine и делаем Gather + Compile. И все 😊

Теперь о том как делать импорт и экспорт:

  • Не забываем в начале и в конце делать Gather + Compile в UE4.
  • Открываем *.manifest
  • Выполняем File -> Export… и выбираем в какой файл сохранить. Утилита не требует Excel, все происходит через библиотеку EPPlus 4.5.
  • Таблица разделена на 2 части: верхние строки редактируемые (номер и ID ессно трогать нельзя), а все что лежит после красной строки
    --== ! DO NOT translate THE TEXT BELOW ! == service DATA ==--
    трогать вообще нельзя.
  • Непереведенные ячейки будут красными, так их легко найти переводчику, особенно если это вторая или третья итерация перевода.
  • После экспорта, я советую отсортировать все строки (из редактируемой части ессно) по ID. У нас так хоть какая-то логика сохраняется в текстах и переводчику проще понять что к чему относится.
  • Отправляем на перевод и ждем…
  • После того, как придет результат, не забываем отсортировать строки обратно по номеру (#).
  • В программе выбираем File -> Import… и, если все было сделано правильно, то загрузится перевод. Можно включить «глаз» (Hide Translated) и пощелкать по различным локейлам, чтобы проверить переведены ли все строки.
  • Далее жмем File -> Save As… и выбираем ваш *.manifest. Все.

Исходный код и программа

Утилита написана на C#, требует. Net 4.0 и пару пакетов из NuGet (они подтянутся автоматически). Исходники можно забрать отсюда:

Периодически я делаю релизы. Просто скачиваем, распаковываем и пользуемся:

Программа тестировалась только на нашей игре. Поэтому 100% гарантии работоспособности дать не могу. Если будут ошибки, замечания или предложения — пишите. Если прога форматнет ваш диск, украдет все ваши сбережения или убьет кота, то я ни при чем 😊

Надеюсь, утилита будет полезна не только нам, пользуйтесь на здоровье! Всем бобра!

104104
23 комментария
500 ₽

Спасибо за утилиту. Хотя вот прямо сейчас у меня нет надобности ее опробовать, но в будущем очень даже вероятно, понадобится. Круто, что поделились.

9
Ответить

В дополнение к статье, привожу ссылку на демо нашей игры (в ней сейчас 4 локализации). Локализацию на английский делали при помощи ребят из AllCorrect. Локализацию на китайский и немецкий нам делал издатель PQube. Во всех случаях мы использовали Excel файлики сгенерированные при помощи утилиты. Ну т.е. "обкатка боем" была.

7
Ответить

Комментарий недоступен

1
Ответить

 а тот момент он даже в мультилайн не умел (баг?)Я пытался это пофиксить. Лазял по сурсам часов 5 пока не нашел, где отрисовка этого бокса. Добавил макрос в декларации, чтобы бокс стал мультилайновым. Чуток потестил и радостно запушал им пулл реквест. Они тоже особо не смотрели и радостно смерджили. Потом вышла новая версия движка с моим мультилайном, а интерфейс стал дико глючить и разъезжаться при определенных условиях, которые я не углядел. Мне было кринжово, с тех пор не смотрел, что там. Но если мультилайна до сих пор нет, то это значит они откатили мои изменения, вместо того чтобы пофиксить.

Я еще пытался это пофиксить сам конечно. Со слейтом знаком, писал сложные едитор екстеншены когда эта возможность еще не была задокументирована. Так вот, нихера у меня не получилось. Код там **КРАЙНЕ** запутанный. Всё в макросах, ебнутом инхеритансе, каких-то байндингах через жопу и неадекватном слейте. Скорее всего, нужно переписывать большие куски кода. Джуном, и может даже мидлом, это не починить. Тут надо быть топовым в мире специалистом. Они у них есть, но им не до этого, видимо. Как же, надо срочно добавить новую совместимость с каким-нить телеком или чайником и поломать пару систем в процессе.

3
Ответить

В 4.23 вроде уже работает, но я тоже стараюсь туда не заглядывать. :) Даже чинить не пытался, потому что было понятно - через UE мы игру не локализуем. Был вариант выгружать все в PO формат, но я не нашел бесплатных и удобных редакторов. Да и ХЗ как разные студии переводчиков будут с ними работать: слова там подсчитать и т.п. В итоге вот и вышла эта утилитка.

Ответить

Привет!

Спасибо, что раскрываете тему. Инфы по локе в UE явно маловато.

Интересная программка. И, конечно, необходимая, если вы не пользуетесь никакими CAT-программами, поскольку редактор переводов в UE — абсолютный ужас. Да и даже если отдавать потом профикам или использовать какую-то CAT-программу самим, у многоязычного табличного формата типа эксельки есть явные преимущества относительно PO, который в UE используется для экспорта по умолчанию.

Посмотрел, однако, формат, который испольузется у вас в эксельке, и у меня вопрос: почему вынесли SERVICE DATA вниз таблицы отдельно? На это есть какие-то технические причины, которые я не улавливаю? Просто было бы куда лучше оставить эти данные в отдельных столбцах прямо в основной таблице: так контекст был бы виден переводчику сразу (Source Reference очень помогает при переводе, плюс по нему можно сортировать — и получать более-менее хорошую группировку строк), искать и фильтровать по нему (фильтрация по asset name или кусочку имени, например, очень помогает увидеть все строки, так или иначе связанные с одним понятием или ассетом), ну и так далее. Плюсов много, но есть один очень важный: если бы все метаданные были в той же таблице, что и данные, а не под ней, то файл стал бы совместим с CAT-программами — а все стоящие переводчики сейчас только в них и работают, прямо в файлах очень редко когда переводят, разве что мелочь всякую. То есть формат таблицы (навскидку) #, Namespace, ID, Source Reference, Comments, Source Locale, Target Locale #1, ..., Target Locale #N без «лишних» данных внизу был бы как минимум универсальнее, а на мой профессиональный взгляд попросту лучше во всех отношениях.

А как вы вообще с текстом работаете в игре? У вас текст прямо в ассетах сидит или в стринг тейблс? Если в таблицах, то это ассеты или CSV-шки? Вообще, я бы с радостью пообщался с вами — у меня нехватка знаний по Unreal Engine (информации о локе вообще немного, а уж о том, как люди реально работают с текстом в UE и того меньше), зато есть чем поделиться про локализацию (я 15 лет перевожу и 4 года управляю проектами по локализации). Если вам это интересно, давайте поболтаем :) 

Я нынче работаю лок менеджером в компании, где несколько больших игр на UE. И текущий подход к работе с текстом мне не нравится. У нас есть идеи, как допилить редактор, чтобы было не так больно работать с текстом и локой, но это требует немало ресурсов. Сначала хочется понять, а не слишком ли я заморачиваюсь, не упускаю ли я какой-то другой подход, который не требует таких вложений.

1
Ответить

Привет!
Если хочется пообщаться по поводу локализации в UE4, то пишите на мыло maltsevda@yandex.ru. А тут коротенько:
1. Формат проектировал так, чтобы локализатор работал только с нужной ему информацией. Все "лишнее" вынес вниз. Возможно кому-то эта информация нужна, но у нас ни разу ее не спрашивали.
2. Комменты к тексту - это очень полезная фича. Но на уровне локейлов UE4 ее нет. Можно добавлять комменты только к таблицам строк... вроде. Но как их удобно вытаскивать, я пока не понимаю. Возможно стоит расширять формат UE4 своим файликом. В общем проблема есть, но как ее решать, пока не задумывался.
3. В игре у нас все или в таблицах строк или в отдельном С++ файле. В ассетах только ссылки на таблицы строк. Хотя вру. Еще в Data Table могут быть строки в чистом виде. Раньше мы строки кидали как попало, но столкнулись с некоторыми проблемами и пришлось все аккуратно "разложить".
В общем если есть предложения или вопросы - пишите. Обсудим :)

1
Ответить