Главное окно редактора и немного UI
Главное окно редактора и немного UI

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

Для чего эта штука нужна? Все очень просто: мы не можем заставить локализаторов установить UE4 и работать с нашим проектом напрямую. И мы не можем подготовить специальный билд игры, предназначенный для локализаторов (у нас лапки). Мы не знаем с какими сторонними утилитами готовы работать локализаторы и с какими форматами они работают. С некоторыми локализаторами мы даже напрямую связаться не можем, с ними работает наш издатель. Эта утилита позволяет конвертировать внутренний формат локейлов UE4 в то, что можно отправить людям, не знакомым с этим движком.

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

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

А чего она не умеет? Естественно никакой локализации текстур, мешей и звуков нет. Только текст. Утилита не умеет собирать тексты (Gather) и компилировать локейлы в *.locres файлы (Compile). Движок с этим справляется и сам. К сожалению, нет возможности добавлять комментарии. Они есть таблицах строк, но экспорта в локейлы не предусмотрено. А расширять формат UE4 в наши планы не входило.

Инструкция

  • Для начала нужно в 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 (они подтянутся автоматически). Исходники можно забрать отсюда:

https://github.com/rionix/LocalizationUE4

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

https://github.com/rionix/LocalizationUE4/releases

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

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

Минутка саморекламы

Утилита прошла "обкатку боем" на нашей игре The Unexpected Quest:

https://store.steampowered.com/app/1307670/The_Unexpected_Quest/

В ней много текста, разбитого на пространства имен. Плюс к этому все локализации проходили в несколько этапов: сначала подготовили тестовую версию, потом выпустили пролог и затем основную версию. Локализацию на английский делали при помощи ребят из @allcorrect. Локализацию на китайский и немецкий нам делал издатель PQube. Во всех случаях мы использовали Excel файлики, а саму утилиту не высылали. Доработку текстов проводили в утилите, редактор UE4 практически не использовался. Каких-то замечаний по формату от локализаторов не получали. Сами никаких проблем с имортом не встретили. Работать было удобно. Попробуйте!