Как перевести юнити на русский язык

Как поставить русский язык в Unity 3D

Новые пользователи, которым не очень привычно видеть интерфейс Юнити на английском, желая перевести его на «Русский язык». Можно попытаться найти кряк программы, для корректировки платформы, но сразу стоит огорчиться. Большинство источником, которые желают помочь в поиске такого решения, нацелены на распространение рекламы своих же ресурсов. По сути, часть сайтов, в сети Интернет, заполнена бесплатными предложениями ключей для русификации Юнити, но все они наполнены вирусной начинкой и пользы для пользователя не принесут. Единственным остаётся для рассмотрения Unity Web Player, в котором есть встроенный, на уровне с остальными языками, русский язык.

Характеристика Unity Web Player

Как перевести юнити на русский язык

Для удобства в просмотре 3D график онлайн игр, созданных на движке Юнити, был разработано браузерное расширение в виде Веб плеера. Данный плагин станет превосходным дополнением для увеличения потенциала и функциональных возможностей браузера. Плеер позволит совершать запуск популярных игр не выходя с Веб-обозревателя.

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

Как перевести юнити на русский язык

До-недавно, Unity Web, поддерживался всеми браузерами без исключения, но в связи с изменениями от компании Google, было отказано в сотрудничестве. Поддержка осталась в браузерах:

Так как Юнити предоставляет замечательный контент для создания проектов, с анимированными персонажами, превосходной графикой и другими захватывающими эффектами, то от ПК требуется не малое количество ресурсов, которых вероятно не хватит для полноценной работы с характерным содержанием технологии рендеринга. Для этого Web Player, после первого игрового запуска, кеширует все файлы на винчестере, что позволяет игроку не тратить время на ожидание запуска, а также избавляет от непредвиденных ошибок, например при запуске установленной игры с ПК.

Как перевести юнити на русский язык

Потенциал

Плеер имеет конфигурации ко всем популярным браузерам, кроме Chrome;

ПО занимает мало места на жестком диске;

Предотвращение нежелательных сбоев, связанных с аппаратными характеристиками ПК.Файл инсталляции не русифицирован;

Большие требования к аппаратной части;

Отсутствует синхронизация с Я.Браузером, Orbitum, UC Brauzer.

Технические показатели

Как перевести юнити на русский язык

Обязательно перед установкой рекомендуется проверить показатели ПК:

Версия сборки:5.3.6.0
Лицензия:Бесплатно
Язык интерфейс:Русский
Компания разработки:Unity Technologies
Совместимость ОС:Windows 7, 8, 8.1, 10, XP, Vista

Теперь, что бы ни устанавливать любимые игры на компьютер, можно запустить их в удобном окне вышеперечисленных браузеров и наслаждаться процессом в игровом мире предоставленным Unity 3D.

Мультиязычность играет большую роль при создании приложений и игр любого жанра на платформе Unity, начиная от тетриса и заканчивая качественными шутырами. Если в игре будет присутствовать один тип языка, например русский, то данный проект попадает в категорию, которая нацелена на страны такие как:

Как перевести юнити на русский язык

Это не очень качественно и малодоходно с точки зрения больших компаний. Эффективнее будет распространение продукта на западные страны: США, Канаду, Австралию или ближний Запад. Но это всё имеет отношение к крупным поставщикам компьютерных игр.

В данном случае от пользователя требуется общее понимание мультиязычности в проектировки собственных разработок. Данную поддержку можно внедрить в свою игру на примере подхода со стороны практичности и удобства. Приведённый ниже универсальный метод решения направлен на поддержку богатого количества языков и может быть гибким к любым модификациям, как правило, с функцией смены языка в нужный момент.

Как перевести юнити на русский язык

Установка мультиязычности

В примере, за язык будет отвечать класс Language.as – данный класс не имеет конструктора, константы и переменные будут статичными, что открывает доступ к нему с любого угла созданной игры:

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

Источник

Локализация игр и приложений в Unity. Быстро и удобно

Привет! В этой статье я поделюсь своим опытом локализации игр и приложений в Unity, а также расскажу о своем плагине Simple Localization, который доступен в Asse Store. Уровень статьи — Easy. Кода не будет вообще, он вам не пригодится.

Как перевести юнити на русский язык

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

Формат будет следующий: первая колонка — ключи, все последующие колонки — словари. Первая строка — заголовок. Можно иметь один общий CSV, если текстов в приложении немного, а можно разбить на несколько CSV по какому-либо принципу, например: меню, настройки, достижения и т.д.

Идем дальше. Редактирование локализации в Excel, это, конечно, здорово, но я предлагаю загрузить их в Google Sheets. Тогда редактировать их можно будет из любого места, в любое время и с любого устройства. Но самое главное — локализацию можно будет расшарить переводчикам, и у них не будет никаких сложностей с переводом. Посмотреть на словарь можно по ссылке.
Как перевести юнити на русский язык

И последний пункт — интеграция с Unity, с uGUI. Тут тоже все просто — на каждый текстовый компонент Text добавим свой компонент LocalizedText, в котором укажем ключ. При запуске этот компонент получит локализованное значение и установит его в Text.

Как перевести юнити на русский язык

Дальше возникает несколько вопросов:

Скачать можно в Asset Store: Simple Localization.

Источник

7 советов по локализации инди-игры в Unity

Unity — один из самых популярных игровых движков среди независимых разработчиков. Это мощный инструмент, открывающий доступ в игровую индустрию даже самым мелким издателям и разработчикам-одиночкам.

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

Это относится и к локализации, благодаря которой вы можете познакомить со своей игрой весь мир. Однако нужно быть осторожным, ведь локализация игры — сложный процесс. Давайте рассмотрим наилучший способ выполнить её в Unity.

1. Используйте расширения Smart Localization и I2 Localization (но аккуратно)

Smart Localization (бесплатная и платная версии)

Хорошим началом локализации проекта Unity будет выбор готового расширения под названием Smart Localization, разработанного janeTech. У расширения есть две версии: бесплатная и платная версия Pro.

Как перевести юнити на русский язык

Вот что можно доверить Smart Localization:

I2 Localization (45$)

Среди платных ассетов определённо полезным будет I2 Localization, разработанный игровой студией Inter Illusion.

Как перевести юнити на русский язык

Наиболее удобными функциями этого ассета являются синхронизация с электронными таблицами Google и автоматическое отображение текста справа налево для арабского.

«I2 Localization в целом прекрасный инструмент для локализации. [. ] Первое и главное — это возможность импорта данных непосредственно из Таблиц Google даже после выпуска игры. Это чрезвычайно полезно, потому что большинство компаний-локализаторов отдаёт результаты в файле Excel, который можно быстро перенести в Таблицы Google и импортировать все данные.

Вторая функция, которую я люблю, позволяет обрабатывать hardcoded-текст в коде. Вместо того, чтобы создавать конструкции из циклов или switch, можно использовать единственную строку для перевода текста: I2.Loc.ScriptLocalization.Get(»»);».

Оба расширения популярны среди разработчиков Unity (в особенности бесплатная версия Smart Localization, по понятным причинам). Это полезные инструменты, но применяйте их аккуратно. Ни одно расширение не решит всех вопросов локализации, и уж точно не выполнит процесс локализации за вас.

2. Наймите профессиональных переводчиков

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

Подготовьте первый черновик переводов ещё до начала разработки.

Вы сэкономите кучу времени, если займётесь кодингом игры после того, как процесс локализации будет выполнен. Уделите особое внимание длине слов и предложений в каждом переводе по сравнению с английской версией (или другим базовым языком). Так вы сможете внести в дизайн необходимые правки или снова обратиться к переводчику и поработать над альтернативами.

Если вы займётесь локализацией после завершения разработки, то это обернётся кошмаром.

3. Выберите правильный формат текстовых строк

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

Unity поддерживает множество форматов, самые популярные из них это:

Если вы разрабатываете игру на JavaScript, то правильнее всего будет использовать JSON. Это простой и лёгкий формат, используемый множеством разработчиков в течение долгих лет. Кроме того, он быстр в обработке. Кроме преимуществ для разработчика, он очень лёгок в чтении даже для тех, кто не занимается разработкой. Это важный плюс для будущих переводов и правок.

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

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

4. Определитесь со структурой строк

Подбор самого эффективного способа структурирования строк может стать настоящей проблемой. Для этого процесса нет чётко заданных инструкций. Unity предоставляет разработчику свободу в выборе структуры. Свобода — это, конечно, всегда хорошо, но она и увеличивает вероятность ошибок.

Существует три основных фактора, влияющих на структуру строк:

Для большинства игр (в которых выбор языка сохраняется в самом начале) можно хранить строки в отдельных файлах для каждого языка (например, en.json, es.json, fr.json и т.д.). Это наиболее продуктивный способ разделения строк по языкам, чтобы игре не требовалось обрабатывать ненужные дополнительные файлы.

Затем нужно подумать об идентификаторах строк. Объём этой задачи сильно зависит от количества текстовых строк в игре. Стремитесь предугадывать проблемы при создании ID строк, давая каждой из них уникальный подробный идентификатор, позволяющий с лёгкостью найти нужную строку в будущем.

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

Всегда создавайте строки с учётом будущей локализации. Наиболее частые ошибки: разная длина строк в различных языках и отсутствие подходящего перевода для строк. Не позволяйте им снижать качество скрипта, но укорачивание или перефразирование могут помочь в будущем.

Если вы выберете такой подход, процесс сохранения и загрузки локализованных строк станет гораздо проще. Вы не только снизите таким образом рабочую нагрузку, но и уменьшите риск возникновения ошибок.

5. Создавайте большинство компонентов локализации в Unity

Unity позволяет создавать компоненты, что значительно уменьшает объём разрабатываемого вручную кода. Это также снижает риск возникновения ошибок и экономит время.

Подробно о компонентах можно почитать на странице ресурсов Unity. Однако в этой статье мы сосредоточимся только на нескольких задачах:

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

Способ выбора дизайна и реализации этой возможности больше относится и к UX, и к локализации. Здесь важно сохранить выбранное игроком значение (если оно было выбрано) и сохранить его как новое значение по умолчанию. После этого вам не придётся задавать один и тот же вопрос при каждом запуске игры.

Чтобы сделать это в Unity, можно создать компонент Master для назначения языка по умолчанию. Если пользователь решает сменить настройку языка, то новый язык назначается компоненту и обрабатывается как язык по умолчанию.

6. Локализация визуальных элементов в Unity

Этого не избежать, и локализация визуальных элементов игры может стать пыткой. Первое, о чём нужно подумать — это шрифты. Важен не только их внешний вид, но и поддерживаемые ими языки. Вот какие аспекты нужно рассмотреть:

Это зависит от количества языков, которые вы хотите поддерживать. Поиск шрифтов с диакритическими символами (для испанского, французского, итальянского и т.д.) не очень сложен. Но вы замучаетесь искать один шрифт, поддерживающий, например, несколько европейских языков и азиатские системы отображения. И даже если вы его найдёте, размер файла будет очень велик. Поэтому не бойтесь подбирать отдельные шрифты для разных языков, если вам нравятся их стили.

Конечно, не все тексты должны быть обязательно заданы в коде. Некоторые текстовые элементы представлены в графике. Кроме того, существуют другие различные визуальные элементы, о которых тоже нужно подумать.

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

Самое важное — не пропустить текстовую графику, влияющую на геймплей. Это может быть что-то простое, вроде элемента UI внутри мини-игры, но вы будете жалеть о том, что упустили такие мелкие детали.

Как локализовать текстовую графику в Unity

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

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

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

7. Используйте AssetBundle движка Unity

Бандлы AssetBundle в Unity позволяют создавать пакеты файлов, загружаемые пользователями только при необходимости. Это значит, что можно значительно уменьшить общий размер игры, в то же время предоставив полные ресурсы для любой аудитории.

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

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

Итак, это была инструкция для начинающих по локализации игр в Unity. Плохие новости в том, что невозможно выполнить её в одиночку – вам необходимы профессиональные переводчики. Однако, есть и хорошие новости: Unity делает управление процессом локализации гораздо проще.

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

Источник

Простой плагин для локализации приложений на Unity3D

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

В данной статье я опишу разработку простого плагина для локализации UI Text-компонентов с возможностью динамической смены языка и редактирования текста в редакторе.

Для перечисления используемых языков (в статье будем рассматривать русский и английский) будем использовать enum Unity SystemLanguage.

К сожалению, насколько мне известно, Unity из коробки не поддерживает сериализацию Dictionary или key-value-pair-классов. Так что, чтобы не усложнять, напишем пару своих классов для нужд плагина.

Translation

Структура Translation — по-сути является парой ключ-значение:

Label

Следующий шаг: создадим класс Label. Его задача — хранить в себе уникальный целочисленный id и список Translation:

Т.к. класс Label по-сути реализует логику Dictionary, необходимо добавить два публичных метода: Get и Set.
В методе Get мы ищем, есть ли строка на запрашиваемом языке, если есть — возвращаем ее, если нет — возвращаем пустую строку.
В методе Set аналогично — если у нас есть строка на нужном языке — меняем ее, если нет — добавляем.

LabelsData

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

Для создания экземпляра LabelsData мы добавим перед объявлением класса атрибут CreateAssetMenu:

Для обеспечения доступности экземпляра LabelsData используем ленивую инициализацию по следующей логике:

1. Публичные поля являются геттерами, которые возвращают значения полей экземпляра instance;
2. instance — глобальная ссылка на экземпляр LabelsData. Если она не инициализирована, то применяется подгрузка из папки Resources, либо создается новый экземпляр LabelsData.
3. Из этого следует, что наша база переводов должна быть размещена в Resources.

Таким образом, мы получаем возможность удобного редактирования наших переводов в редакторе Unity:

Как перевести юнити на русский язык

Мы можем создать сколько угодно новых Label, назначить им id для идентификации и заполнить переводами на нужные языки.

LanguageManager

Следующий шаг — напишем статический класс LanguageManager, предоставляющий удобный интерфейс для всех компонентов, реализующих отображение мультиязычного контента.

Посредством свойства currentLanguage данного класса мы можем менять текущий язык, а все компоненты, подписанные на событие onLanguageChanged — изменят свое содержание.
Для первоначального определения текущего системного языка добавим метод Init, который будет вызываться только один раз:

Для получения строки с нужным id добавим метод GetString, в котором мы будем искать среди данных LabelsData нужный Label, а если его нет — возвращать строку по-умолчанию «not translated»:

Представление

Теперь осталось написать компоненты плагина, отвечающие за отображение контента. Какой контент мы можем отображать в Unity? Строки для UI.Text и TextMesh, какие-либо картинки (например, иконки и баннеры на русском и английском языках). В рамках статьи рассмотрим отображение мультиязычных строк для UI.Text.

Создадим абстрактный класс MultiLanguageComponent для отображения контента, от которого будем наследоваться дальше. Его задачи просты — хранить текущий язык, подписываться на LanguageManager.onLanguageChanged и обновлять содержимое в OnValidate (для тестов в редакторе):

Здесь метод Refresh — виртуальный, который мы будем переопределять в классах-наследниках.

Создадим класс-наследник MultiLanguageTextBase, хранящий в себе целочисленный labelID:

Переопределим в нем метод Refresh. Т.к. Refresh будет вызываться при изменении языка приложения либо при изменении labelID — в нем мы получаем строку на нужном языке от LanguageManager и вызываем метод VisualizeString (в котором в наследниках строка будет уже выводиться на экран приложения с помощью UI.Text или TextMesh). Переменная local нужна для определения того, происходит ли обновление в редакторе до запуска приложения — в этом случае для дебага от LanguageManager-а будет получена строка на текущем языке конкретного компонента, а не на системном.

Создадим последний класс MultiLanguageTextUI, уже непосредственно выводящий строку на экран и наследующийся от MultiLanguageTextBase. В нем мы переопределим метод VisualizeString для вывода текста в UI.Text:

Теперь мы можем просто добавить компонент MultiLanguageTextUI на объект с текстом и выставить нужный labelID:

Как перевести юнити на русский язык

Демонстрация

Как перевести юнити на русский язык

Таким образом, мы получили простую систему локализации для приложения. В дальнейшем можно отнаследоваться от MultiLanguageComponent и добавить собственные компоненты для перевода.

Репозиторий на GitHub (здесь добавлены некоторые дополнительные функции — экспорт/импорт в csv, компоненты для TextMesh, Image, AudioSource, VideoPlayer, MeshFilter).

Источник

Локализация в Unity

Здравствуй, игродел!
В этой статье ты узнаешь как сделать удобную локализацию в своей игре.

Проблема:

Пути решения:

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

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

Решение:

Как перевести юнити на русский язык

Когда вы разместите Localization.csv в Resources (там я создал папку «Localization» и уже в неё поместил сsv) своей игры вы увидите, что Unity воспринимает ваш файл как Text Asset, так и должно быть, для него в Unity есть свои методы загрузки, потому нам не придётся заниматься парсингом.

Как перевести юнити на русский язык

Итак, перед непосредственной локализацией текста нам нужно реализовать выбор языка:

Как перевести юнити на русский язык

Наконец можно писать сам скрипт-локализатор, который в последствии мы будем вешать на всё, что имеет поле Text.

Как перевести юнити на русский языкпример использования

Источник

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

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