Как переводить игры на юнити
Перейти к содержимому

Как переводить игры на юнити

  • автор:

Unity «Простая система перевода игры на другие языки»

Unity Unity Unity Unity

На этом все. Далее можно, например, создать кнопку перевода на другой язык. Написать примерно вот такой скрипт. И язык будет меняться во всей игре.

using UnityEngine; public class OnClickBtnLanguage : MonoBehaviour < [SerializeField] CurrentLanguage currentLanguage; public void OnClick() < currentLanguage.ChangeLanguage(); EventsManager.onChangeLanguage?.Invoke(); >>

Во время написания статьи, я понял, что Current Language нужно создать как-то по-другому. Например, статическим классом или синглтоном. Из-за того, что приходится каждый раз его выбирать в SetTextMeshProLanguage. Хотя он всегда будет в единственном экземпляре.

Что касается системы в целом. В дальнейшем, можно очень просто добавить еще один язык. И строки перевода. Если не устроит какая-то часть системы, то ее можно легко заменить (до того, как начали внедрять в свой проект).

Локализация игр на Unity и Unreal Engine

Для того чтобы успешно локализовать игру, нужно учесть огромное количество аспектов (о некоторых из них можно почитать, например, здесь [ссылка удалена модератором] ). В том числе имеет значение и то, на каком движке создан проект. Мы решили углубиться в тему и рассказать об особенностях локализации игр на двух самых популярных движках: Unity и Unreal Engine.

Локализация игры на Unity

Самый простой способ вставить текст в игру на движке Unity — прописать его в свойствах соответствующего объекта интерфейса. Например, когда мы создаем кнопку, вместе с ней автоматически генерируется связанный текстовый объект. После этого мы можем задать нужный нам текст («Next» на рисунке ниже), и вуаля — он тут же окажется на самой кнопке.

Этот текст хранится внутри файла сцены (Unity scene file с расширением .unity). Если наша кнопка никогда не будет меняться, то на этом можно остановиться. А что, если мы хотим, чтобы текст на кнопке менялся в зависимости от определенных условий? Скажем, мы решили локализовать игру. Значит, перевод всех текстовых элементов, выведенных на экран, при необходимости должен мгновенно переключаться.

Нет, нам не нужно вручную создавать десятки новых кнопок, табличек и плашек для каждого языка — ведь можно просто связать каждый текстовый элемент интерфейса с текстовым файлом, содержащим нужные фразы. Такие файлы называются словарями. Игра просто будет подгружать из нужного словаря нужный текст на нужном языке. Unity поддерживает разные текстовые форматы: .txt, .csv, .xliff, .json, .po и т. д.

И все-таки придется хорошенько попрограммировать, написав в коде игры:

  • функцию, задающую язык;
  • функцию, загружающую в память устройства текст из словаря;
  • функцию, преобразующую загруженный текст в понятный для Unity вид;
  • функцию, вставляющую переведенный текст в интерфейс игры;
  • менеджер локализации — сценарий, устанавливающий связь между словарями и текстовыми объектами сцены;
  • менеджер загрузки, задача которого — дождаться, пока сработает менеджер локализации (т. е. игрок выберет язык), после чего загрузить новую сцену.

И еще чуть-чуть поработать руками:

  • привязать менеджер локализации к каждому локализуемому текстовому объекту;
  • назначить каждому текстовому объекту сценарий, который получает ключ нужного текста и вставляет локализованный текст в поле «Text».

Сложно? Не спорим. К счастью, недавно в Unity появился свой инструмент для локализации с говорящим названием Localization (он был и раньше, но на стадию пререлиза перешел только в апреле 2021 года; да и сейчас все еще сырой, судя по обилию баг-репортов на форуме техподдержки). Он автоматизирует большинство необходимых действий, позволяя задавать локали и в зависимости от них воспроизводить звуки и выводить на экран разные строки и рисунки. А еще он делает «псевдолокализацию», т. е. машинный перевод, чтобы можно было оценить, как будет выглядеть интерфейс в той или иной локали. С помощью Localization можно также экспортировать данные не только в текстовые файлы, но и в Google Sheets.

Впрочем, гораздо раньше стандартного инструмента появились разнообразные сторонние плагины, позволяющие управлять локализацией на проекте. Например, плагин I2 Localization компании Inter Illusion. Функционал примерно такой же, как и у стандартного:

  • поддержка Google Translate;
  • автоматический поиск отсутствующих, дублирующихся или неиспользуемых переводов;
  • поддержка множественного числа;
  • поддержка RTL (right-to-left) языков: арабского, иврита и т. п.;
  • локализация нетекстовых объектов (рисунок или аудиофайл может меняться в зависимости от языка);
  • управление шрифтами и текстурами (их можно задать объекту в зависимости от языка).

Стоит 45 долларов.

Что ж, с языками разобрались. Однако текст в игре — это не только смысл слов, но и их облик. О внешней красоте в данном случае стоит позаботиться не меньше, чем о внутренней.

UI Text, стандартный инструмент Unity для работы с текстом, очень простой и не имеет возможностей по созданию визуальных эффектов текста (динамических отражений, объемных теней и т. п.). Зато для этого можно использовать плагин TextMesh Pro, разработанный компанией Digital Native Studios. Он генерирует объемную сетку, позволяющую применять к тексту разнообразные эффекты и даже создавать анимацию. Плагин оказался очень удачным, поэтому корпорация Unity его приобрела и бесплатно поставляет в комплекте с основным редактором с версии 2018.

Локализация игры на Unreal Engine

В Unreal Engine проблемы локализации решены гораздо основательнее, чем в Unity. Здесь уже давно существует стандартный инструмент локализации, поэтому в сторонних плагинах нет большой необходимости.

Стоит отметить, что в Unreal Engine разделяются понятия локализации (адаптация игры к конкретному региону или языку путем перевода текста и добавления специфичных для локали компонентов) и интернационализации (разработка игры таким образом, чтобы она легко адаптировалась к разным языкам без изменений ее архитектуры).

Локализация в Unreal построена вокруг особого типа данных — FText, а интернационализация использует библиотеку ICU (International Components for Unicode).

Культурой (culture) в Unreal называется свод правил оформления текста, принятых в соответствующем регионе. К ним относятся правила:

  • обработки цифр и спецсимволов (знаки валют, процентов, десятичные разделители и т. п.);
  • форматирования даты и времени;
  • передачи множественного числа.

Культура обозначается кодом, состоящим из одной-трех частей:

  • обязательный двузначный буквенный код по стандарту ISO 639-1 (например, zh);
  • дополнительный четырехзначный буквенный код по стандарту ISO 15924 (например, Hans);
  • дополнительный двузначный код страны по стандарту ISO 3166-1 (например, CN).

Пример: zh-Hans-CN. Здесь zh — китайский язык, Hans — Hànyǔ Simplified (ханьюй упрощенный), а CN указывает на вариант китайского языка, используемый в КНР.

Библиотека ICU (англ. International Components for Unicode, «международные компоненты для стандарта Unicode»):

  • запрашивает у операционной системы, какую культуру использовать;
  • распознает нужное направление текста;
  • выполняет анализ внутренних ограничений в тексте (например, перенос строк).

Объектами локализации в Unreal могут быть текст (собственно текст и шрифт), текстуры, аудио- и видеофайлы, кат-сцены, порядок следования сцен, анимация.

Интерфейс локализации в Unreal представлен «панелью локализации» — Localization Dashboard.

Единицей локализации служат Localization Targets — модули, содержащие локализационные данные. Они содержат текст из указанных источников, хранятся в файле манифеста и переводятся в архивных файлах для каждой культуры. Модули собираются в файлы ресурсов локализации для каждой культуры, которые и отображаются игрой. Принцип локализации выглядит примерно так:

Да, как и в Unity, локализация здесь — дело непростое.

Типовой порядок локализации в Unreal:

  • Добавляем в проект очередной текстовый элемент (кнопка с надписью, плашка и т. п.).
  • Добавляем в проект список культур, для которых будет выполняться локализация (en-US, ru-RU и т. п.).
  • Собираем локализуемые текстовые элементы в систему локализации.
  • Для каждого текстового элемента интерфейса в Unreal создается объект FText. FText — не просто строка с текстом. Этот объект имеет специальную структуру, поддерживающую смену культуры на ходу. При создании FText и установке параметра «Localizable» = «Yes» (по умолчанию) текстовому элементу присваивается ключ вида «9567B129548DD2468752BA0F5». Этот ключ служит для идентификации текстового элемента при локализации.

  • Система локализации Unreal составляет список локализуемых объектов FText этого проекта.
  • Экспортируем локализуемые элементы интерфейса в виде файлов формата .po, переводим их и импортируем обратно.

А как в Unreal обстоят дела с визуальными эффектами текста? В 2019 году движок получил плагин Text 3D, с помощью которого можно создавать вот такие шедевры:

Text 3D поддерживает такие настройки шрифта, как объемные тени, фаски, скругления символов, изменение расстояния между символами, словами и строками, сохранение пропорций при изменении масштаба, выравнивание текста по горизонтали и вертикали, применение различных шрифтов, создание побуквенной анимации, изменение анимированного текста прямо во время игры и многое другое. Смущает лишь одно: по состоянию на 2022 год Text 3D еще находится в стадии бета-тестирования, и неизвестно, какие из его возможностей доживут до финальной версии.

Если вам интересны особенности работы с текстом в других игровых движках, напишите нам [ссылка удалена модератором] , и мы подготовим обзор инструментов.

  • Разработка игр
  • Unity
  • Локализация продуктов
  • Unreal Engine

Как переводить игры на юнити

Всем привет, раскажу как переводить игры созданые на движке Unity.

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

1.Создаем патч для перевода.
1) Установить переводимую игру юнити на диск c, что бы на его путях не было русских символов.
Как пример C:\Games\novella

2)Далее вам необходимо будет скачать программу XUnity.AutoTranslator

Выберите самый новый релиз ( releases ) вам нужно будет скачать файл под названием XUnity.AutoTranslator-ReiPatcher-номер_версии.zip .

В скачаном зип файле будет лежать файл SetupReiPatcherAndAutoTranslator.exe

3) Распакуйте его в корневую папку с игрой, где файл exe.

4) Запустите распакованный файл SetupReiPatcherAndAutoTranslator.exe .
Он создаст новый exe файл, который будет иметь приставку к имени (Patch and Run)

5) Запустите созданый exe файл. Он пропатчивает переводимую игру и создает файл конфигурации.

6) Когда у вас игра окончательно запустится, вам нужно будет выйти из приложения и зайти в файл конфигурации \AutoTranslator\Config.ini

2. Настраиваем конфигурационный файл (Config.ini)

1) Выбираем переводчик
Данная программа поддерживает множество переводчиков но самый качественный перевод будет у диип, поэтому вместо GoogleTranslateV2, прописываем DeepLTranslate

[Service]
Endpoint=DeepLTranslate

2) Далее выбираем язык с которого на какой будем переводить. Например, у вас проект на японском(ja),(английский будет en), и вам нужно будет его перевести на русский(ru), то прописываем следующее:

[General]
Language=ru
FromLanguage=ja

3) Нужно прописать что бы любой текст, который попадется в игре, программа его извлекала и переводила через переводчик.

[TextFrameworks]
EnableIMGUI=True
EnableUGUI=True
EnableNGUI=True
EnableTextMeshPro=True
EnableTextMesh=True
EnableFairyGUI=True

4)Настраиваем перевод
Распишу только то, с чем сталкиваться мне приходилось, и соответственно использовал

[Behaviour]
MaxCharactersPerTranslation=1000 ;Переводимое число символов
EnableUIResizing=True ;попытка изменить размеры символов в строке текста, что бы влезло
OverrideFont= ;определить свой шрифт gui, смотри TextMeshPro с кирилицей
OverrideFontTextMeshPro= ;определить свой шрифт, если у вас квадратики вместо текста перевода, смотри TextMeshPro с кирилицей

5)Извлекать изображения(текстуры) на перевод

[Texture]
TextureDirectory=Translation\\Texture
EnableTextureTranslation=True
EnableTextureDumping=True
EnableTextureToggling=True
EnableTextureScanOnSceneLoad=True
EnableSpriteRendererHooking=False
LoadUnmodifiedTextures=False
DetectDuplicateTextureNames=False
DuplicateTextureNames=
EnableLegacyTextureLoading=False
TextureHashGenerationStrategy=FromImageName
CacheTexturesInMemory=True
EnableSpriteHooking=False

Остальное оставляете без изменений..

После изменения конфигурационного файла вам необходимо запустить игру. Можно запустить exe файл что был по умолчанию, вам нужно будет подождать некоторое время, пока некоторые текстуры программа извлекет. После запуска программы. У вас высветится главное меню на исходном языке, через сек 7 программа автоматически переведет текст на русский язык, если шрифт конечно поддерживает кирилицу(или текст в виде картинки)

Заходим в раздел настройки, сохранения, разные разделы меню и нажимаем кнопку старт и проходим с автоперевод игру, не забывая заходить в историю(log)

Теперь рассмотрим тот вариант, если вы хотите создать качественный перевод, а не использовать автоперевод.

3. Работа с текстом
Весь текст, которая программа поймает, оно кидает в файл \AutoTranslator\Translation\ru\Text\_AutoGeneratedTranslations.txt

Откройте его и вы увидете там примерно такое

はじめから=Сначала
つづきから=Продолжить
おわる=Выход
撫でてもいい……?=А можно. Погладить Вас.

Вы можете изменять текст диалога только после знака =
Текст из истории(log) только между тегами аудио файлов

Основные теги, которые используются в тексте

はじめから=Сначала ;изменить цвет текста
マウスホイールで\n文字送り=Переключать колесиком \nмыши ;отступ на следующую строку
つづきから= Продолжить ;изменить размер текста

Это основное, более полный набор тегов смотрите здесь

Не закрывая игру, редактируйте текст и сохраните изменения. Что бы посмотреть как в самой игре изменится текст, переведите клавиатуру на английскую раскладку и нажмите Alt+R и программа автоматически перезагрузится.

Всякие фразы с тегами диип плохо переводит, поэтому рекомендую их удалять когда на сайте переводите.

Текстуры(изображения) находятся здесь \AutoTranslator\Translation\ru\Texture их через фотошоп редактируете, и заменяете в той папке.

Пункт меню сразу все программа не переводит, то есть если несколько вариантов выбора, то вам нужно будет каждый выбор пройти и перевести, что достаточно муторно.

4. Перевод повторяющихся символов или ввод имени.
Когда вам попадется ввод имени, оставляете имя по умолчанию,

Далее вам нужно будет зайти \AutoTranslator\Translation\ru\Text\_Substitutions.txt и записать там имя по умолчанию, или слово что постоянно повторяется.

日目= День
好感度=Симпатия

И когда вы будете дальше листать игру, и где вам пападутся эти слова, в файле _AutoGeneratedTranslations.txt вместо

01 日目 =01 день
будет
01<>=01<>

И когда игрок введет свое имя, ваш перевод сохранится.

У кого квадратики вместо теста скачайте TextMeshPro с кирилицей для версии юнити что в игре

Надеюсь что кому-нибудь помог с переводом игр юнити.

Автопереводчик для Unity игр XUnity.AutoTranslator

Memoric

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Войти

Уже зарегистрированы? Войдите здесь.

Сейчас популярно

SerGEAnt

Автор: SerGEAnt
Создана 4 апреля

Продвигаемые темы

0wn3df1x

Автор: 0wn3df1x
Создана 21 мая, 2023

james_sun

Автор: james_sun
Создана 19 марта

Outcaster

Автор: Outcaster
Создана 14 марта

SerGEAnt

Автор: SerGEAnt
Создана 7 ноября, 2023

Dark_Sonic

Автор: Dark_Sonic
Создана 1 мая, 2023

Последние сообщения

Сильвер_79

Ну да. Они всего лишь два раза заплатили за одну и ту же роль. Очень рациональное расходование бюджетных средств. Если бы кто-то выкинул такой финт в рамках госконтракта, ему бы пришлось, во-первых, эти деньги вернуть в бюджет, во-вторых, заплатить штраф за растрату.

Hellson

piton4

Ну, не суть ) Это ему ещё выпрашивать пришлось эту 3080, Виталик изначально на 2060 ориентировался для Миши.

Dusker

piton4

Он Мише запрещает 4090 покупать Если я не ошибаюусь, у Миши 3070 вроде? Велит говорить ему, что якобы его всё устраивает и большего и не нужно ) Бедный Миша ) Чтоб оно ближе к народу было

Freeman665

Да не, ничего, но какое интересное совпадение выходит: одна и та же блогерша участвует в озвучке, ругается с теми, кто критикует Смуту, записывает интервью с разрабами. не ангажированность, что вы)) прямое, но раз до сих пор не понял, то уже и не поймешь. причем тут последовательность? Если для работы нужна мощная видяха, приходится ее приобретать, а как иначе, индюшки обозревать?

lixal

@SerGEAnt добавьте пожалуйста релиз русификатора на популярную фан-игру LISA the Pointless SOTWS Infinity Unfolds под авторством @5aradoxa! Заранее спасибо!

Dusker

Какое имеет отношение к тому борется она там с критиками или нет к кидалову? Это ее личная инициатива. Есть люди, которые и не учавствуя в проекте этим занимаются. Получается разработчики им тоже за это что-то должны? Рабочие обязательства между друг другом разработчик и эта девушка выполнили.. Обязанности у разработчиков нету ставить именно ее голос. Причем здесь представительницы древнейшей профессии? Им заплатили они выполнили работу, или теперь на них жениться должны, иначе они кинутые? Ожидания людей, это ожидания людей, а не кидалово.

romka

Да не, и на релизе 4090 встречались игры с убитой оптимизацией, с которой не справлялась. Говорю же, прошло несколько месяцев и он приобрёл то, что высмеивал. И дело не в том ему просто захотелось или увидел провидческий сон . Не важно чем он руководствовался, его слова расходятся с действиями, он не последователен. Дело в том, что он сам отдаляется от своей аудитории, как минимум про оптимизацию в играх, соответствует ли игра системкам, он уже не скажет. У какого процента их аудитории и в целом среди игроков имеется 4090? У меньшинства. Да, он ещё и стример, тут чем мощнее, тем лучше. Но в первую очередь он обзорщик, якобы журналист и позиционирует себя с простым народом. Но увы и ах, между все этим и им легла пропасть в виде 4090 . Не мелочи, но оплаченная реклама . Опять же, что такого страшного было в том интервью, разве что кроме отвлечения от насущной темы на двух придурков с камерой ? Сколько было лжи о состоянии Смуты, сколько было ложных обещаний? Сколько вставляли кадров и постановочного геймплея с пререндером? Да ни чего такого, тупо привлекли медийное лицо для привлечения внимания. Вот и весь пшик, а шума. И снова на лицо не правильный пиар, с этим у них совсем беда. Правда, у них со всем беда .

Rinats

Оригинальное название: Kingdom of the Planet of the Apes
Премьера : 08 мая 2024
Жанр: фантастика, боевик
Режиссер: Уэс Болл Сценарий: Патрик Эйсон, Джош Фридман, Рик Джаффа
В ролях: Фрейя Аллан, Кевин Дюран, Уильям Х.Мэйси, Дичен Лакмэн, Оуэн Тиг, Питер Макон, Сара Вайсман Несколько поколений после правления Цезаря. Обезьяны являются доминирующим видом, живущим в гармонии, а люди вынуждены оставаться в тени. Пока новый тиранический лидер обезьян строит свою империю, один молодой шимпанзе отправляется в путешествие, которое заставит его усомниться во всём, что он знал о прошлом, и сделать выбор, который определит будущее как обезьян, так и людей.

Изменения статусов

evilneverdie

evilneverdie » McLain

Здравствуйте, нет ли у Вас желания починить шрифт в русификаторе The Last Case of Benedict Fox для версии Definitive Edition, заранее спасибо

Иван54

Иван54 » SerGEAnt

почему после устоновке русефекатора звука меня выкинула на мисе где вечеринка когда я захожу нажимаю продолжить меня опять выкинула Marvel’s Midnight Suns

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *