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

Однако, его слабость очевидна — перевод всегда пестрит изъянами, неточностями, и в целом — углепластиком.

Старая пиратская локализация Grand Theft Auto: San Andreas
Старая пиратская локализация Grand Theft Auto: San Andreas

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

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

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

Небольшая проверка строк, на которых Google обычно лажает. Без контекста.
Небольшая проверка строк, на которых Google обычно лажает. Без контекста.

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


Содержание статьи:

  1. Нам нужна таблица!

  2. Устанавливаем расширение и настраиваем OpenAPI ключ

  3. Переводим! - Базовая формула

  4. Переводим круче - Задаём контекст

  5. Стоимость и качество

  6. Итог


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 - Итог

В первую очередь, важно помнить, что каким бы удобным и выгодным не был данный способ — он всё равно не скоро заменит качественный человеческий перевод, сделанный «с заботой о продукте».

Надеюсь, что я помог кому‑то с успехом его будущего проекта. ????


Если у вас есть какие-то вопросы, или нужна помощь - я всегда рад помочь. Обращайтесь!

Мой телеграм-канал, в котором могут быть дополнительные материалы и новости по теме статьи.

Комментарии (6)


  1. saboteur_kiev
    11.07.2023 10:13

    Вроде гугл транслейт переводит не так плохо, как на вашем скриншоте.
    Но я согласен, что чатГПТ лучше переводит в контексте


    1. ligofff Автор
      11.07.2023 10:13

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

      И вот конкретно в таблицах получается больше бреда.


    1. Car3man
      11.07.2023 10:13
      +1

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


  1. dimitrii_z
    11.07.2023 10:13
    +2

    Статье плюс, опыт интересный. Но у вас простой случай рассмотрен. В строках может быть (и должно быть) большое количество констант, которые подставляются как переменные. Например, имя вашего персонажа, название местности и т.п., чтобы где-то не ошибиться в написании, например.

    Тогда будет полезно добавить в промпт фразу типа "Сохрани в переводе исходное форматирование текста.". Также могут быть случаи неестественного для целевого языка порядка слов - надо добавить фразу "Используй для целевого языка естественный для него порядок слов.".

    Вообще есть интересная статья про подбор промпта, люто бешено рекомендую https://habr.com/ru/articles/734954/


    1. ligofff Автор
      11.07.2023 10:13

      Да, отличные замечания. Спасибо!


  1. Judge_Solomon
    11.07.2023 10:13

    Не раз задумывался, как выпускать игры на Unity на других языках. Идея, столь любимая китайскими разработчиками, использовать autotranslator - мне не особо нравилась. А вот нейронка - это хороший выход. Спасибо.