Как подготовить игру для локализации?

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

  • Текстовые строки (очевидно)
  • Аудиоклипы, такие как музыка и /или повествования
  • Текст, отображаемый на текстурах (например, ярлык на ящике)
  • Текст, отображаемый в кадрах в предварительно обработанных фильмах
  • Шрифты /Наборы символов для разных языков
  • Etc.

Какими хорошими способами подготовиться к этим задачам на начальных этапах разработки, чтобы вы могли сделать это проще, не затрачивая слишком больших затрат?

44 голоса | спросил kevin42 17 J000000Saturday10 2010, 16:15:44

6 ответов


46

Я не эксперт, но вот некоторые основные вещи:

Убедитесь, что ваши строки могут обрабатывать больше, чем просто ASCII

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

Это действительно хорошая идея использовать фактический класс string, а не только char * всюду, или вы будете в мире боли.

Не забудьте свои шрифты. Убедитесь, что все шрифты, которые вы используете, имеют нужные вам символы.

Извлеките строки из кода

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

String text = Locale::getString("some unique identifier");

Не конкатенировать и не создавать строки в коде

Важно не делать никаких предположений о том, как часть текста построена из меньших слов. Даже что-то безобидное, как:

String currency = Locale::getCurrencyString() + money.toString();
// creates $123

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

String format = Locale::get("currency format"); // returns "${0}" in English
String currency = String::Format(format, money.toString());

Таким образом, локализаторы могут изменять слова в строке формата.

Свести к минимуму количество текста, отображаемого в искусстве, особенно видео

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

Тестирование на разных языках полностью

В большинстве кодов легко просто сказать printf("Hi there"); или loadTexture("someTexture"); и забыть, что это нужно пройдите свой API локализации. Кто-то забудет, и вы закончите с чем-то правильным на своем основном языке, но неправильно в других. Единственный способ их найти - проверить, тестируют ваши тестеры на непервичных языках.

Сделать недостающий локализованный текст очевидным

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

Одна дешевая вещь, которую вы можете сделать, это сделать недостающий текст очень очевидным, как «!!! ПЕРЕВОД, НЕОБХОДИМЫЙ ДЛЯ ID #blah blah !!!» в игре, когда она отсутствует.

Создайте свой интерфейс пользователя по наихудшему языку

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

Раздражающе, английский часто является самым коротким языком тех, которые обычно локализованы, поэтому ваши дизайнеры, вероятно, непреднамеренно разрабатывают для лучшего случая. Заставьте их использовать дополнительный длинный текст для своих заполнителей при их разработке. Предположим, что любой данный фрагмент текста может быть на 30% длиннее, чем на английском. Google Translate может быть полезен для получения приблизительного фрагмента текста для заполнителя.

Бюджетное время дляперевод

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

ответил munificent 17 J000000Saturday10 2010, 22:11:49
13

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

ответил James Sutherland 18 J000000Sunday10 2010, 01:50:32
9

Локализация игры правильно чертовски жесткая .

Вы можете просматривать Интернет, читать сообщения в блогах или отвечать на запросы StackOverflow; вы можете узнать традиционные рамки i18n, такие как gettext ; читать страницы Википедии на internationaliztaion и локализация игры ; ознакомьтесь с отличным руководством по языку Microsoft - но локализовать игры на самом деле сложнее чем это. Фактически, с играми это, вероятно, сложнее, чем с любым другим приложением или веб-интерфейсом. Это потому, что игры настолько динамичнее, ярче, живее (ну, по крайней мере, хорошие игры).

Более подробно можно сделать следующие шаги:

Установите границы.

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

Найдите экспертов для каждого языка, который вы хотите поддержать.

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

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

Другой пример: на русском языке для большинства слов существует 2 формы множественного числа. Так, например, вы бы перевели «1 монету» /«3 монеты» /«5 монет» как «1 монÐμÑ,Ð °», «3 монÐμÑ,Ñ

function LocalRU::GetPlural(n, form0, form1, form2) {
    return (n%10) == 0 || (n%100) >= 5 && (n%100) <= 20? form0 : 
           (n%10) == 1? form1 : 
           (n%10) <= 4? form2 : form0;
}

Создайте контекстно-зависимый модуль трансляции.

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

Например, простая фраза «Я согласна» переводится на русский язык как один из «¯ Ñ Ð¾Ð³Ð» Ð ° Ñ Ðμн "/" ¯ Ñ Ð¾Ð³Ð »Ð ° Ñ Ð½Ð °" /"¯ Ñ Ð¾Ð³Ð» Ð ° Ñ Ð½Ð¾ ", в зависимости от пола говорящего (мужчина /женщина /транссексуал | queer | опрос). Если это одна из ваших диалоговых линий, языковой модуль должен будет выбрать один из возможных переводов во время выполнения в зависимости от пола вашего персонажа (при условии, что вы предлагаете своим игрокам такой выбор).

Та же фраза при переводе на японский язык снова будет иметь разные переводы, в зависимости от уровня формальности отношений между говорящим и слушателем. Таким образом, если вы представите в своей игре идею репутации, дружбы или различного уровня превосходства (скажем, ваш персонаж может развиться от Rookie до General), тогда вам придется учитывать это при формировании перевода. (На самом деле, это не зависит от японского языка. Даже на английском языке, в армии, вы никогда не говорите «сэр, да, сэр!» Кому-то ниже вас в ранге.)

Имейте способ прыгнуть вконтекст.

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

Даже такое простое предложение, как «Эта книга синяя». не может быть однозначно переведена без меня , глядя в книгу и видя, какой именно оттенок синего она есть.

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

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

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

Поднимитесь!

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

ответил Pasha 25 AMpThu, 25 Apr 2013 01:27:43 +040027Thursday 2013, 01:27:43
3

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

ответил Dave O. 17 J000000Saturday10 2010, 17:12:04
1

Всегда, ВСЕГДА относиться к исходному языку как к локализованному языку.

Итак, если ваш исходный язык - EN, тогда сохраните все активы и строки EN в отдельной папке EN и оттуда оттуда.

Извлеките активы EN через предполагаемый конвейер локализации.

Проделав эту простую вещь, вы поймете 80% проблем с локализацией и настроитесь на более простой процесс локализации much .

Я локализую many игры и всегда провожу этот самородок.

ответил user79563 23 FebruaryEurope/MoscowbTue, 23 Feb 2016 19:09:35 +0300000000pmTue, 23 Feb 2016 19:09:35 +030016 2016, 19:09:35
1

Я вижу здесь несколько замечательных советов!

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

  • Думая о локализации в качестве последнего шага развития игры
  • Не изолировать текстовые строки от исходного кода
  • Конкатенация /разбиение строк в середине предложения.
  • Предполагая, что время, даты и единицы не нуждаются в локализации
  • Не предоставлять достаточное количество справочных материалов для переводчиков /Не отвечать на их вопросы.
  • Предполагая, что весь текст из вашей игры будет в ASCII
  • Наличие текста в visuals
  • Наличие жестких текстовых /пользовательских ящиков
  • Предполагая, что все языки имеют ту же длину, что и английский
  • Использование Google Translate /машинного перевода
  • Игнорирование культурных факторов.
  • Не выделяет достаточный бюджет для локализации

Локализация должна быть интегрирована в развитие как можно раньше, и вы всегда должны помнить об этом при разработке игры.

При правильном планировании и тщательном исследовании рынка вы сэкономите массу проблем и расходов дальше по линии.

Я оказался основателем компании по локализации игры , и мы рассмотрели подготовку игры для локализации пару месяцев назад в нашем блоге.

Вот инфографика, которая суммирует это сообщение: https://magic.piktochart.com/output/18317297-9-steps-to-cheaper-game-development-with-localization

Ссылка на полный пост, который охватывает эти советы более подробно, находится внизу.

ответил Damien Yoccoz 28 FebruaryEurope/MoscowbTue, 28 Feb 2017 18:32:36 +0300000000pmTue, 28 Feb 2017 18:32:36 +030017 2017, 18:32:36

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132