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

48

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

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

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

kevin42
источник
8
Я играл в Dawn of Discovery - в последнее время в Венеции, переведен на английский с немецкого. Это примерно на 99% правильно. , , и время от времени один из персонажей необъяснимо говорит по-немецки за строку, или один из отчетов о состоянии здания имеет умлауты, или (время от времени) мне сообщают, что я могу купить предмет отладки в местном магазине. Какой бы метод вы ни использовали, убедитесь, что нетрудно обнаружить непереведенные строки - если вам нужно прочитать их визуально или сыграть в игру и надеяться, что они появятся, вы делаете это неправильно.
ZorbaTHut
@ZorbaTHut Является ли элемент отладки способом сообщения об ошибках перевода, или разработчики DoD использовали DLC для исправления ошибок локализации?
Дэн Нили,
Создание поддельного языка, который ваши программисты могут читать и писать, может быть полезным. У Google есть "хакерский" язык, а у Facebook есть пиратский. Это весело для разработчиков, и это то, что они могут проверить самостоятельно, не изучая новый язык.
Джон Макдональд
Чтобы добавить к вышеупомянутым ответам, я предлагаю вам пройти через этап псевдолокализации (по сути, формальное имя и процесс «Сделать пропущенный локализованный текст очевидным» в верхнем ответе). Вы сможете устранить потенциальные проблемы с реализацией еще до начала перевода.
Энтони

Ответы:

49

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

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

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

Это действительно хорошая идея - использовать настоящий класс строк, а не только 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());

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

Минимизируйте объем текста, который появляется в искусстве, особенно видео

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

Тщательно тестируйте на разных языках

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

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

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

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

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

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

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

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

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

необычайно щедрый
источник
4
Ах, связанные строки. Какая боль в заднице. Прекрасно работает на родном языке для быстрого и простого построения разнообразия. Но затем вы попадаете на язык с другой грамматикой, и это полный провал. Все остальные моменты тоже хорошие. «Настройки» на немецком языке - «Einstellungen», который потребляет немного дополнительного места на экране, когда это необходимо.
Кейси Вагнер
13

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

Джеймс Сазерленд
источник
9

Правильно локализовать игру - чертовски сложно .

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

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

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

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

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

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

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

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

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;
}

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

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

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

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

Есть способ прыгнуть в контекст.

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

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

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

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

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

Взбодритесь!

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

паша
источник
Альтернативой «избегать словесной игры» является включение творческого писателя в группу языкового перевода и предоставление им возможности изменять буквальные значения. В качестве хорошего примера FFXIV делает это чрезвычайно хорошо для их английской версии.
Патрик Хьюз
3

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

Дейв О.
источник
1

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

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

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

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

Я локализовал много игр и всегда веду с этим самородком.

user79563
источник
1

Я вижу некоторые действительно отличные советы здесь!

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

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

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

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

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

Вот инфографика, подытоживающая этот пост: https://magic.piktochart.com/output/18317297-9-steps-to-cheaper-game-development-with-localization

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

Дэмиен Йоккоз
источник