PIGONA
Translation for Discord

Перевод Discord для больших серверов

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

1. Перевод теряет нить разговора

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

Активные каналы состоят не из самодостаточных сообщений. Они состоят из ответов, местоимений, обрывков фраз и отсылок к тому, что было сказано две минуты назад. Переведённое изолированно, «да, вон тот» не несёт информации ни на одном языке. Чем быстрее канал, тем выше доля сообщений, которые имеют смысл только относительно того, что было раньше - поэтому эта проблема растёт вместе с сервером, а не остаётся неизменной.

Часть, которую легко сделать неправильно

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

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

У тебя есть два регулятора. Глубина - это сколько подходящих сообщений собирать: 5, 10 или 20. Минимальная длина - это насколько длинным должно быть сообщение, чтобы вообще стоило собирать для него контекст, что избавляет от платы за «ок» и «лол».

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

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

2. Каждый перевод - ещё одно сообщение в твоём канале

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

Полезный вопрос не в том, переводить ли, а в том, куда должен попасть результат. Pigona даёт четыре ответа, и их можно комбинировать по каналам:

3. Модерация слепнет в языках, которые твоя команда не читает

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

Собственные рекомендации Discord по интернационализации сводятся к найму двуязычных модераторов, что работает - пока не понадобится четвёртый язык в три часа ночи. Автоматические фильтры слов тоже не закрывают пробел, поскольку каждый список приходится вручную пересобирать под язык.

Честно о том, что здесь делает Pigona: он делает контент читаемым, и это всё. Автономный перевод в публичном канале означает, что модератор, читающий на своём языке, видит, что на самом деле говорится, в том же месте, в то же время, что и все остальные. Pigona - не продукт для модерации, он не оценивает токсичность и не интегрируется с AutoMod. Что он убирает - так это отговорку «никто не мог это прочитать».

4. Ёмкость, чтобы перестать гадать

Pigona берёт плату в Translation Credits, а не рекламирует безлимитный тариф, что закономерно вызывает вопрос, переживёт ли квота реальный сервер. Вот пересчёт кредитов в переводы для коротких сообщений - а это большая часть трафика Discord:

ТарифЦенаПереводов / месяцВ день
Community15€up to 50,000~1,700
Pro29€up to 100,000~3,300
Business45€up to 200,000~6,700

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

Это потолки, и читать их стоит именно так. Они оценивают каждое сообщение по минимуму в 0,2 Кредита - это вся плата за что угодно длиной до сорока символов, при выключенном умном контексте - конфигурации, с которой стартует канал. Реальный канал - это смесь длин, и по замерам на нашем собственном продакшн-трафике сервер Community оказывается ближе к 29 000 переводов в месяц, чем к 50 000. Умный контекст добавляет небольшую плату за каждое проанализированное сообщение сверху, и только после того как ты включишь его для канала.

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

Чего Pigona не делает

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

Попробуй на самом активном канале, который у тебя есть

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