Правильно локализовать игру - чертовски сложно .
Вы можете просматривать Интернет, читать сообщения в блогах или ответы на 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 были настолько захватывающими).