Локализация игр и программ - Творческое программирование для всех
Игровые механики, заготовки, шаблоны

«Локализация — это перевод и культурная адаптация продукта к особенностям определенной страны, региона или группы населения». — Википедия

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

Одного перевода недостаточно. В любой стране существуют и свои культурные особенности. К ним также относятся особенности религии, традиций, вкусов и даже законодательства. Мы не будем детально рассматривать этот вопрос. Подробнее о задачах локализации игр можно почитать, например, в статье на сайте разработчиков игр DTF.

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

Локализация — 1 заготовка

Базовый функционал (нажать на зелёный флажок):
— изменение костюма спрайта при наведении мыши на кнопку
— вывод языкового сообщения-подсказки при наведении мыши на кнопку
— два вспомогательных блока для переключения языка русский/английский:
задаём значение переменной language — ru или en, соответственно. Сменить язык можно, войдя внутрь проекта и кликнув мышью по одному из этих вспомогательных блоков.

Войти внутрь проекта можно по ссылке https://scratch.mit.edu/projects/508340187/

Локализация — 2 заготовка

Это продолжение предыдущего проекта.

Базовый функционал (нажать на зелёный флажок):
— добавлены кнопки переключения языка русский/английский
— клик по кнопка переключения языка задает соответствующее значение переменной language

Войти внутрь проекта можно по ссылке https://scratch.mit.edu/projects/508344783/

Локализация — 3 заготовка

Базовый функционал (нажать на зелёный флажок):
— добавлены состояния активности для кнопок переключения языка русский/английский для индикации текущего выбранного языка
— задано значение по умолчанию — русский язык
— добавлен перевод надписи на кнопке Старт/Start на выбранный язык. В результате у спрайта кнопки теперь не 2, а 4 костюма. А в скрипте дополнительное ветвление для смены костюмов в зависимости от языка (значения переменной language).

Войти внутрь проекта можно по ссылке https://scratch.mit.edu/projects/508350044/

Локализация — 4 заготовка

Базовый функционал (нажать на зелёный флажок):
— добавлены персонажи, которые общаются на двух языках (урок по созданию диалога здесь)
— персонажи появляются после нажатия кнопки Старт/Start (как это сделать, см. во 2-й части того же урока)

Войти внутрь проекта можно по ссылке https://scratch.mit.edu/projects/508368111/

 

А что если у нас не 2, а намного больше языков?

Рассмотрим аналогичным образом ещё несколько заготовок.

Локализация (много языков) — 1 заготовка

Базовый функционал (нажать на зелёный флажок):
— изменение костюма спрайта при наведении мыши на кнопку
— вывод языкового сообщения-подсказки при наведении мыши на кнопку
— четыре вспомогательных блока для переключения языка русский/английский/немецкий/белорусский: задаём значение переменной language — ru, en, de или by, соответственно. Сменить язык можно, войдя внутрь проекта и кликнув мышью по одному из этих вспомогательных блоков.

По сравнению с заготовкой для двух языков (https://scratch.mit.edu/projects/508340187/) видим более сложное вложенное ветвление и более длинный код. Если языков будет ещё больше, ветвление будет ещё глубже.

Войти внутрь проекта можно по ссылке https://scratch.mit.edu/projects/508375527/

Локализация (много языков) — 2 заготовка

По сравнению с 1-й заготовкой  выносим ветвление для анализа заданного языка в
Другой блок Определить язык и вывести …

Базовый функционал (остаётся прежним):
— изменение костюма спрайта при наведении мыши на кнопку
— вывод языкового сообщения-подсказки при наведении мыши на кнопку
— четыре вспомогательных блока для переключения языка русский/английский/немецкий/белорусский: задаём значение переменной language — ru, en, de или by, соответственно

Войти внутрь проекта можно по ссылке https://scratch.mit.edu/projects/508621387/

Локализация (много языков) — 3 заготовка

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

В данной заготовке пока не совсем ясно, что нам это даёт (профессиональные программисты такие преобразования кода называют рефакторингом). Продолжение — в заготовке 4.

Войти внутрь проекта можно по ссылке https://scratch.mit.edu/projects/508623308/

Локализация (много языков) — 4 заготовка

Продолжаем совершенствовать проект на базе 3-й заготовки:
— добавляем новый спрайт-кнопку переключения языков. Костюмы этого спрайта имеют имена ru, en, de, by — точно такие, какими должны становиться значения переменной language
— клик по кнопке переключения языков задаёт значение переменной language, беря его из имени костюма этого спрайта
— добавляем спрайт Text-Start для вывода надписей на кнопке Старт на разных языках. Костюмы этого спрайта тоже имеют имена ru, en, de, by. Это позволяет одной командой смены костюма с параметром — переменной language заменить надпись.

Войти внутрь проекта можно по ссылке https://scratch.mit.edu/projects/508628582/

Локализация (много языков) — 5 заготовка

Продолжаем совершенствовать проект на базе 4-й заготовки:
— добавляем спрайты для участников диалога игровых персонажей
— дополняем списки для вывода сообщений и реплик диалога
— пишем скрипт диалога персонажей (пример такого диалога на основе списков здесь, а урок здесь (см. часть 1). Но в данном проекте мы немного изменили тактику, и для всех реплик обоих персонажей используем один и тот же список. Реплики в нём идут через одну: одна первого персонажа, вторая — второго и т.д. И так для каждой языковой версии. Если списки продолжить (добавить элементы с новыми репликами), продолжится и диалог персонажей (без необходимости писать новый код).

Войти внутрь проекта можно по ссылке https://scratch.mit.edu/projects/508654906/

Какие ещё задачи мы не рассмотрели?

Ольга Елисеева

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

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