Локализация игры (приложения) на Unity

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

Решение я нашёл на просторах Интернета, уже даже не вспомню где (для поста пришлось залезать в основной скрипт, чтобы узнать имя автора и выйти на его Github). Оно представляет из себя всего два C# скрипта, которые разработал Daniel Erdmann:


I18n.cs
I18nTextTranslator.cs

Суть работы крайне проста. Скачиваете оба скрипта, бросаете в любую папку своего проекта. Далее в корне проекта создаёте директорию Resources, а внутри ещё одну - I18n

Локализация игры (приложения) на Unity Unity, Перевод, Gamedev, Игры, Github, Длиннопост

Внутри же второй папки будут находится файлы переводов в формате txt (то бишь, обычные текстовые файлы). В моём случае это файлы en.txt и ru.txt

Локализация игры (приложения) на Unity Unity, Перевод, Gamedev, Игры, Github, Длиннопост

Внутри этих файлов и создаются словари для перевода. Вы задаете каждому переводу метку, которую потом нужно будет использовать в Unity. Например текстовое поле с меткой shop будет переведено на русский, как "магазин". Метки одинаковы для обоих файлов, ну а содержимое перевода вставляется через приравнивание. Аналогичным образом можно создать переводы на любой язык:

word=WORD_TO_TRANSLATE (en.txt)
word=СЛОВО_ДЛЯ_ПЕРЕВОДА (ru.txt)
Локализация игры (приложения) на Unity Unity, Перевод, Gamedev, Игры, Github, Длиннопост

На этом предварительная подготовка переводов завершена и можно переходить в Unity. На текстовое поле мы вешаем скрипт под названием I18nTextTranslator.cs и указываем метку для перевода.

Локализация игры (приложения) на Unity Unity, Перевод, Gamedev, Игры, Github, Длиннопост

Насколько я понял, основной скрипт под названием I18n.cs запрашивает язык системы и подтягивает соответствующий текстовый файл с переводом. Если, например, ваш язык немецкий, но файла de.txt нет, то скрипт подтянет английский язык по-умолчанию. При запуске проекта язык автоматически меняется на системный и в соответствии с тем переводом, который указали ранее.

Локализация игры (приложения) на Unity Unity, Перевод, Gamedev, Игры, Github, Длиннопост

На данный момент я работаю над обновлением Color Chips и решил добавить в игру русский язык, потому данный способ мне вполне подходит. Но он не лишён недостатков:

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

Для небольшого проекта, такого как мой данный способ вполне подойдёт. Расскажите, как вы занимаетесь локализацией приложения (игры) в комментариях, интересно прочитать и, возможно, перенять опыт. Ну и по традиции внизу ссылки на всё нужное.

Скачать скрипты для перевода с Github


Скачать Color Chips в Play Market

Лига Разработчиков Видеоигр

6.8K постов22.2K подписчиков

Добавить пост

Правила сообщества

ОБЩИЕ ПРАВИЛА:

- Уважайте чужой труд и используйте конструктивную критику

- Не занимайтесь саморекламой, пишите качественные и интересные посты

- Никакой политики


СТОИТ ПУБЛИКОВАТЬ:

- Посты о Вашей игре с историей её разработки и описанием полученного опыта

- Обучающие материалы, туториалы

- Интервью с опытными разработчиками

- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе

НЕ СТОИТ ПУБЛИКОВАТЬ:

- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры

- Посты, единственная цель которых - набор команды для разработки игры

- Посты, не относящиеся к тематике сообщества

Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.

ЗАПРЕЩЕНО:

- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции

- Выдавать чужой труд за свой

Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.


О РАЗМЕЩЕНИИ ССЫЛОК:

Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:

- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества

- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз

- Cсылка размещается в формате: "Страница игры в Steam: URL"