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

Крылатые выражения, сленговые фразочки — современный Google Translate хоть и может их перевести, но он всё равно не сможет правильно вписать их в контекст вашего сценария/интерфейса игры.
И, в свою очередь, из‑за невозможности сделать качественный машинный перевод, множество инди‑разработчиков, и просто низкобюджетных студий, теряют большое количество игроков.
Данная статья написана для того чтобы исправить ситуацию, и рассказать о том, как можно получить качественный машинный перевод, используя ChatGPT.

Это позволит нам не только лучше сохранить смысл ваших текстов, но и передать контекст для перевода - жанр игры, лор, характеры персонажей, и всё-всё-всё остальное.
Содержание статьи:
1 - Нам нужна таблица!
В целом, метод может быть использован с любой системой локализации, или даже без неё — закидывайте фразы в ChatGPT вручную, и спрашивайте перевод — получится неплохо.
Но мы здесь говорим об удобном, системном, и не сильно сложном способе — поэтому работать будем с Google Sheets.

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

2 - Устанавливаем расширение и настаиваем ключ
Если ваша таблица локализации уже готова, то следующий этап — установка расширения для Google Sheets, которое будет связываться с OpenAI API, и запрашивать перевод ваших данных.
Тут ничего сложного — просто переходим по ссылке (Google Workspace Marketplace), и нажимаем — «Установить».

После чего идём к нашей таблице в Google Sheets -> Расширения -> GPT for Sheets and Docs -> Set API key

Соответственно, делаем себе API ключ на https://platform.openai.com/account/api‑keys.
Если у вас нет аккаунта OpenAI — заводим оный. Но понадобится номер телефона не из РФ.
Ключ засовываем в предназначенное для него поле:

Когда всё будет готово - жмём "Save API key".
Дальше идём в Расширения -> GPT for Sheets and Docs -> Enable GPT functions,
и на этом менюшку можно закрывать. ?
3 - Переводим! - Базовая формула
Бозовый принцип в следующем — взять клетку, положить в неё формулу, и растянуть до самого низа вашей таблицы. Всё.

Сама формула следующая:
=GPT_TRANSLATE(<текст или номер ячейки>; <Язык, в который переводить>; <Язык, из которого переводить>; <контекст>)
<Язык, в который переводить>
— наименование языка в любом формате. Я обычно пишу «en»(Английский), «zh‑CH»(Китайский урощённый) и т. д.<Язык, из которого переводить>
— то же самое, что и выше, но здесь указываем наименование языка оригинального текста.<контекст>
— контекст запроса на перевод, о нём в следующем блоке.
В собранном виде выглядит так:
=GPT_TRANSLATE(A1; "zh-CN"; "en"; "Text from medieval Action-RPG game localization table")
В результате, в клетке появится перевод нужного вам текста, на нужный вам язык.
4 - Переводим круче - Задаём контекст
Сейчас перевод уже будет лучше, чем перевод из Google Translate. Но мы ещё даже не задействовали поле<контекст> нашей формулы.
Сделайте отдельную ячейку где‑нибудь на задворках, и напишите туда общий контекст вашей игры. Что‑то вроде "Это таблица локализации игры в жанре Стратегия, в которой игрок - вечно пьяный и злой генерал Иван Иваныч. Он сражается против армии Эдуарда Рафаэлло - добродушного мужчины с итальянским акцентом".
И можете скормить адрес этой ячейки в нашу формулу, на место <контекста>
— нейросеть начнёт учитывать контекст вашей игры при переводе. Она будет понимать, что опечатки в речи Ивана Иваныча — это не ошибки, а пародирование речи пьяного человека, а Эдуард — итальянец.
Если для вашего проекта это важно, то можете дописать "Если в оригинальном тексте есть рифма, то постарайся соблюсти её и в переводе"
— но результат будет, конечно, хуже, потому что ChatGPT хоть и хороший инструмент, но не магический.
Но и на этом всё не заканчивается, потому что в контекст также можно включить комментарии к ключам. Знаю, что вообще не у всех инди-разработчиков есть колонка с комментариями, но для больших проектов, локализация которых идёт на аутсорс, колонка с комментариями почти всегда присутствует:

=GPT_TRANSLATE(<текст или номер ячейки>; <Язык, в который переводить>; <Язык, из которого переводить>; CONCATENATE(<общий контекст, ячейка>; " "; <ячейка с комментарием>))
И теперь, если у строки есть комментарий, нейросеть также будет учитывать и его! Это позволит нам добиться ещё большего качества перевода.
5 - Стоимость и качество
Итого, на перевод 3000 строк с английского на упр. китайский с помощью ChatGPT было потрачено не больше 5$, тогда как студия по локализации запросила >500$. На самом деле мы и отдали $500 баксов, потому что на тот момент я не додумался о переводе через ChatGPT ?
По качеству перевод через нейросеть, безусловно, уступал переводу от студии. Но разница была не на уровне "Небо и земля".
Если перевод от студии получился хороший со знаком плюс, то перевод от ChatGPT получился просто приемлимым, а также понадобилась пара часов на довольно банальные правки, которых было штук 30 на весь столбец из 3000 строк. И без которых всё в том числе выглядело бы нормально.
Если большие и средние студии разработки могут позволить себе большие траты на перевод, то товарищи индюки, на которых вся индустрия по сути и держится - нет.
И я считаю, что получаемое качество перевода с помощью нейронки - очень даже оправдывает затраты на токены OpenAI. $5 против $500 - разница в 100 раз, конечно оправдывает блин!
6 - Итог
В первую очередь, важно помнить, что каким бы удобным и выгодным не был данный способ — он всё равно не скоро заменит качественный человеческий перевод, сделанный «с заботой о продукте».
Надеюсь, что я помог кому‑то с успехом его будущего проекта. ?
Если у вас есть какие-то вопросы, или нужна помощь - я всегда рад помочь. Обращайтесь!
Мой телеграм-канал, в котором могут быть дополнительные материалы и новости по теме статьи.