Как игра «Мат» заговорила на семи языках: опыт перевода

У ДревоКуса теперь есть немецкое имя — Baumbeißer. У кнопки окончания хода — испанское Pasar turno. А у меня — проверка, которая останавливает сборку игры, если я забыл перевести новую строку. Последнее оказалось полезнее, чем кажется.

13 сентября я добавил в игру «Мат» пять новых вариантов интерфейса. В настройках стало семь пунктов: русский, английский, немецкий, французский, испанский и португальский для Бразилии и Португалии. Строго говоря, это семь локализаций: два последних пункта относятся к одному языку.

Семь панелей локализации над гексагональной доской; выбранная панель выделена золотым светом
Одна игра — семь вариантов интерфейса.

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

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

В этот момент я особенно оценил преимущества работы в одиночку: совещание с отделом локализации можно провести, не вставая со стула и не меняя собеседника.

Первый выбор за игрока

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

Теперь при запуске игра смотрит на список языков браузера или системы. Немецкая система получает немецкий интерфейс, французская — французский. Если подходящего языка нет, включается английский. Для испанского достаточно одного варианта, а у португальского учитывается регион: Бразилия и Португалия получают свои словари.

При этом ручной выбор важнее автоматического. Если человек на немецкой системе выбрал испанский, следующий запуск останется испанским. В настройках языки подписаны собственными названиями: Deutsch, Français, Español. Так проще найти знакомое слово даже в незнакомом меню.

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

Почему португальский занял два места

Для Бразилии и Португалии я завёл отдельные локализации. Это позволяет выбирать привычные слова и обращение к игроку для каждого варианта. В бразильском словаре принято você, в европейском — tu. Во французском — vous, в немецком — du. Эти решения закреплены заранее.

Без такого правила разные экраны могут разговаривать с человеком по-разному: одна кнопка обращается к нему на «ты», соседняя подсказка — на «вы». По отдельности оба перевода выглядят нормально. Вместе создают ощущение, что меню собирали несколько авторов, которые не читали друг друга.

Для меня это стало хорошим напоминанием: переводить приходится ещё и манеру разговора. Короткое приглашение, объяснение ошибки и подробные правила должны принадлежать одной игре. Список допустимых терминов и обращений помогает удержать этот голос, когда словарей становится больше.

ДревоКус переводится, Эонор остаётся Эонором

В обычном меню есть «Настройки», «Назад» и «Продолжить». В игре «Мат» к ним добавляются ИоКамни, Аномы, ТурбоБоты и имена персонажей. Здесь буквальный перевод каждого слова быстро начинает мешать узнаваемости мира.

Я разделил названия по смыслу. Имя героя сохраняется: Эонор остаётся Eonor. Составные названия вроде IoStone и TurboBot тоже сохраняют утверждённую форму. А прозвища, которые описывают существо, переводятся. ДревоКус стал Baumbeißer в немецком и Croque-Bois во французском.

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

Для этого появился глоссарий — небольшой словарь обязательных решений. Например, раса людей называется Империей: по-английски Empire, по-немецки Imperium. Если на одном экране написать Empire, а на другом Human, перевод формально останется понятным, но связь между названием расы и её карточками станет слабее.

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

Первый перевод новых словарей я делал с помощью языковых моделей. Они получали русский исходник и глоссарий; английская версия помогала уточнить смысл спорного места. Это ускоряет работу, но требует ясного задания. Если попросить просто «перевести красиво», можно получить несколько вариантов названия одного ресурса. Поэтому важнее всего было заранее определить, какие слова сохраняются, какие переводятся и какие обозначения нельзя трогать. После перевода оставалась проверка словарей и экранов.

ДревоКус на гексагональной подставке, три таблички для имён разной длины и измеритель ширины
Разные имена — одна узнаваемая фигура.

У перевода тоже есть ширина и высота

После перевода строк начинается проверка экранов. Русская подпись помещалась в кнопку; иностранная может стать длиннее. Рядом стоят цена способности, значок заряда, имя фигуры. На телефоне свободного места ещё меньше.

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

У коротких надписей я проверяю длину отдельно. Если перевод длиннее английского более чем в 1,4 раза, это повод посмотреть на него внимательнее. Такая проверка помогает найти кандидатов на переполнение, но сама по себе ничего не доказывает: широкие и узкие буквы занимают разное место.

Иногда решение находится в самой формулировке. Для партии вдвоём за одним устройством сейчас используется подпись «На одном экране», по-испански — En una pantalla. Она объясняет режим и на компьютере, и на телефоне. А «Конец хода» превратился в Pasar turno. У каждого языка получается своя короткая надпись с тем же назначением.

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

Числа должны доехать вместе со словами

Часть надписей меняется прямо во время партии. Количество ходов, остаток контрактов, прогресс приглашений — всё это подставляется в готовую фразу. Например:

Русская версия Испанская версия
Ходов: {{count}} Turnos: {{count}}
Осталось контрактов: {{count}} Contratos restantes: {{count}}

Обозначение {{count}} заменяется числом. Слова вокруг него можно переставлять; саму подстановку надо сохранить. То же относится к другим значениям и к меткам, которыми интерфейс выделяет части текста.

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

Грамматика требует отдельного внимания. Короткое «Ходов: 5» удобно тем, что подпись отделена от числа. В более сложной фразе приходится учитывать форму слова и порядок частей предложения. Собирать предложение из нескольких независимо переведённых обрывков особенно рискованно: каждый обрывок верный, а готовая фраза звучит плохо.

Перевод готов. До следующего изменения правил

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

Поэтому одной проверки «все строки переведены» мало. У каждого перевода сохраняется отпечаток русского исходника, с которого он сделан. Если исходник меняется, проверка помечает перевод как устаревший. Так появляется конкретный список строк, которые надо пересмотреть.

У проверок разная строгость. Отсутствующий перевод или потерянная подстановка останавливают сборку. Изменившийся русский исходник даёт предупреждение: старая фраза может оставаться верной, но её нужно сверить. Автоматике хватает возможностей обнаружить расхождение; оценить смысл всё равно приходится отдельно.

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

Теперь новая надпись начинается с русского эталона, затем проходит перевод и проверку остальных шести локализаций. Этот порядок даёт шанс поймать пропуск до того, как его найдёт игрок посреди партии.

Карточки переводов проходят сверку с золотой карточкой исходника; отличающаяся карточка отложена в сторону
Перевод надо сверять заново, когда меняется исходное описание.

Пять новых словарей без пяти лишних загрузок

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

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

По замеру сентябрьского обновления основной файл после сжатия вырос всего на 792 байта. Каждый дополнительный языковой файл занимал примерно 21–22 тысячи байт после сжатия. Это цена выбранного языка, которую не приходится платить всем посетителям.

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

Что удалось проверить

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

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

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

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

Если хочется посмотреть, как это выглядит в партии, игра «Мат» открывается прямо в браузере. Язык можно сменить в настройках. А если знакомый язык режет слух, конкретная надпись и место, где она встретилась, будут полезнее общей оценки перевода.

Что почитать дальше

← На главную