Русификация документации движка! Persona Editor - редактор персонажа. Matinee Editor - монтажный редактор

Возможности 07.04.2019
Возможности

Здравствуйте, меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Пару дней назад я написал статью о Ну раз вы написали диалоги для игры то наверно вы захотите их перевести на другие языки. В этой статье я опишу как работает модуль предназначены для локализации текста в Unreal engine.

Итак сначала надо включить его Editor Preferens → Experemental → Localization Dasbord. К сожалению модуль до сих пор является экспериментальным.

После этого надо перезагрузить Unreal engin. Как только вы это сделаете в меню Windows появится пункт Localization Dasbord. Заходим в него и видим вот что.

Здесь надо добавить новую культуру (Add new culture) и выбрать Native язык, это язык на котором написан ваш текст в моем случае это английски у вас наверно будет Русский.

Теперь надо определить откуда Unreal engine будет извлекать текст.

Во первых нужно сказать что Unreal engine будет извлекать текст из всех переменных тип которых FText (собственно это главное отличие этого типа от FString). Если у вас есть переменная FText но вы не хотите чтобы Unreal engine переводил этот текст, то это можно отключить:


Включив переключатель Gather from text files мы сможем извлечь текст из с++ файлов. По умолчанию текст будет извлекаться из ".h", ".cpp", ".ini" Естественно переменные в этих файлах должны быть определены как FText в с++ это делается так:

/* Top of File */ #define LOCTEXT_NAMESPACE "Your Namespace" ... FText TestHUDText = LOCTEXT("Your Key", "Your Text") ... #undef LOCTEXT_NAMESPACE /* Bottom of File */
или так

FText TestHUDText = NSLOCTEXT("Your Namespace", "Your Key", "Your Text")
Включив переключатель Gather from Packages, Unreal engine будет извлекать текст из ассетов. По умолчанию стоит ".uasset" и ".umap".

У меня все выглядело так:

Теперь можно нажать кнопку «Gather text» и Unreal engine создаст файлы локализации. Переводить можно или прямо в Unreal engine или импортировать файл перевода и использовать редактор ".po" файлов. Я использовал Poedit.

Важно: После того как вы завершите перевод не забудьте нажать кнопку «Compile Text». А то перевод не появится в игре.

Для переключения текста в игре можно использовать функцию:

Void AHUD_StoryGraph::ChangeLocalization(FString target) { FInternationalization::Get().SetCurrentCulture(target); }
В качестве target нужно подставлять сокращения en - Английски, ru - Русский и так далее.

Важно: Чтобы увидеть перевод, игру надо запускать в Standalon Game режиме, если запустить во вьпорте то перевод вы не уведите.

При упаковке игры нужно зайти в Project setting → Packing и выбрать Include prerequisites, выбрать языки которые вы включите в игру и изменить параметр Intarnacialization support с English only на All.

Собственно все, теперь вы сможете локализовать вашу игру на все языки мира.

Здравствуйте, меня зовут Дмитрий. Я занимаюсь созданием компьютерных игр на Unreal Engine в качестве хобби. Пару дней назад я написал статью о редакторе квестов и диалогов. Ну раз вы написали диалоги для игры то наверно вы захотите их перевести на другие языки. В этой статье я опишу как работает модуль предназначены для локализации текста в Unreal engine.

Итак сначала надо включить его Editor Preferens → Experemental → Localization Dasbord. К сожалению модуль до сих пор является экспериментальным.

После этого надо перезагрузить Unreal engin. Как только вы это сделаете в меню Windows появится пункт Localization Dasbord. Заходим в него и видим вот что.

Здесь надо добавить новую культуру (Add new culture) и выбрать Native язык, это язык на котором написан ваш текст в моем случае это английски у вас наверно будет Русский.

Теперь надо определить откуда Unreal engine будет извлекать текст.

Во первых нужно сказать что Unreal engine будет извлекать текст из всех переменных тип которых FText (собственно это главное отличие этого типа от FString). Если у вас есть переменная FText но вы не хотите чтобы Unreal engine переводил этот текст, то это можно отключить:


Включив переключатель Gather from text files мы сможем извлечь текст из с++ файлов. По умолчанию текст будет извлекаться из ".h", ".cpp", ".ini" Естественно переменные в этих файлах должны быть определены как FText в с++ это делается так:

/* Top of File */ #define LOCTEXT_NAMESPACE "Your Namespace" ... FText TestHUDText = LOCTEXT("Your Key", "Your Text") ... #undef LOCTEXT_NAMESPACE /* Bottom of File */
или так

FText TestHUDText = NSLOCTEXT("Your Namespace", "Your Key", "Your Text")
Включив переключатель Gather from Packages, Unreal engine будет извлекать текст из ассетов. По умолчанию стоит ".uasset" и ".umap".

У меня все выглядело так:

Теперь можно нажать кнопку «Gather text» и Unreal engine создаст файлы локализации. Переводить можно или прямо в Unreal engine или импортировать файл перевода и использовать редактор ".po" файлов. Я использовал Poedit.

Важно: После того как вы завершите перевод не забудьте нажать кнопку «Compile Text». А то перевод не появится в игре.

Для переключения текста в игре можно использовать функцию:

Void AHUD_StoryGraph::ChangeLocalization(FString target) { FInternationalization::Get().SetCurrentCulture(target); }
В качестве target нужно подставлять сокращения en - Английски, ru - Русский и так далее.

Важно: Чтобы увидеть перевод, игру надо запускать в Standalon Game режиме, если запустить во вьпорте то перевод вы не уведите.

При упаковке игры нужно зайти в Project setting → Packing и выбрать Include prerequisites, выбрать языки которые вы включите в игру и изменить параметр Intarnacialization support с English only на All.

Собственно все, теперь вы сможете локализовать вашу игру на все языки мира.

Вообще, если оценивать ситуацию в целом, Эпики перевели часть документации на китайский, японский и корейский, т.е. вероятно у них уже выработан какой-то подход к переводу и они ему следуют. Скорее всего этот подход отличается от коллективного перевода через единую онлайн платформу и именно поэтому они не воспринимают этот подход, т.е. просто не хотят менять свой подхот, т.к. вероятно в него уже много вложено и т.д., короче сидят и отмалчиваются, тянут резину.
Понятно, что сейчас Unreal Engine может себе это позволить, по одной простой причине - они предоставляют исходники движка для пользователей. Одно это просто убивает всех конкурентов на месте, хотя бы потому, что даже если мы ничего не смыслим в программировании и исходники нам для внедрения своего кода особо и не нужны, но тем не менее остаётся возможность компиляции движка на определённой машине. Как известно компиляция довольно интеллектуальная штука, в её процессе учитывается железо на котором она собственно происходит, таким образом скомпилировав движок на каком-нибудь последнем процессоре c последней видеокартой мы получим оптимизированный движок именно под эту платформу и соответственно игры, созданные на этом движке будут тоже оптимизированы под неё, ну а если компьютер будет другой, то и оптимизация будет другая, так можно вообще выпустить несколько вариантов игр, оптимизированных под разные конфигурации.
Однако в плане графики, как известно, Unreal Engine находится на уровне CryEngine, так что в этом плане они вполне взаимозаменяемы. У Края, как мы знаем, появились финансовые трудности, да ещё на фоне этого половина сотрудников переметнулась в проект Star Citizen, они им там движок переделывают под неограниченную вселенную. Короче у Края проблемы и он уже не на первом месте, на первое место явно вырвался Unreal Engine. Что для нас в этом хорошего, так это то, что Край теперь просто вынужден быть менее глухим и слушать пользователей, кстати активность форума у них на сайте это подтверждает, реально общественность стали больше слушать. И ещё хорошо то, что они ещё и не думали переводить свою документацию, т.е. у них вообще никаких начинаний в этом отношении нет, таким образом, они могут лучше воспринять идею создания такой платформы, нужно только предложить. Я это всё исключительно в плане альтернативы! Просто понятно, что Unity конечно хорош, и то что они переводят документацию тоже отлично, но всё-таки он не так хорош как Unreal, а вот CryEngine на альтернативу очень даже тянет и если там захотят организовать такую платформу перевода, то можно спокойно отстать от Эпиков и перейти туда. Это я к тому, что с подобным можно обратиться и к нашему комьюнити CryEngine...



Рекомендуем почитать

Наверх