Как стать автором
Обновить

Система перевода (локализации) текста в Unreal engine

Время на прочтение2 мин
Количество просмотров19K


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

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

image

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

image

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

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

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

image

Включив переключатель 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".

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

image

Теперь можно нажать кнопку «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.

image

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

Вот пример
Теги:
Хабы:
+7
Комментарии0

Публикации

Изменить настройки темы

Истории

Работа

Ближайшие события