Аддон для игры · World of Warcraft

Matreshka: русификатор World of Warcraft, который переводит игру на лету

Клиентский аддон для WoW: The Burning Crusade. Переводит квесты, предметы, диалоги NPC и реплики в чате прямо во время игры, не трогая сервер. Проект открытый: исходники лежат на GitHub, релизы выходят на CurseForge.

РольРазработка + данные
ПлатформаWoW TBC · Anniversary
СтекLua · WoW API · Python
ПубликацияGitHub + CurseForge
Задача

Английский клиент, который нельзя переключить на русский

Официальные европейские серверы залочены на английский язык: включить русскую локализацию через Battle.net нельзя, потому что с ней на реалм просто не пускает. Значит, русский текст можно добавить только на стороне клиента, аддоном.

Готовые решения не подошли: одни собраны под старые версии игры и давно заброшены, другие переводят пословно и выдают "кашу". Нужен был аддон, который переводит связным текстом и, главное, не ломает игру. В WoW у аддонов строгая песочница, а неаккуратная подмена строк роняет защищённые элементы интерфейса.

Как было

Английские квесты и диалоги, готовые русификаторы устарели или переводят по слову. Прямая подмена системных строк роняла панель действий и меню выхода.

+ Что нужно

Связный перевод квестов, предметов, диалогов и чата в реальном времени, причём без единого краша защищённого интерфейса игры.

Решение

Что переводит Matreshka

Перевод через хуки, а не подмену системных строк

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

Квесты целиком

Переводятся заголовок, цели, описание, прогресс и завершение, а вместе с ними подписи самого окна задания ("Цели задания", "Награда"). Текст берётся по идентификатору квеста, поэтому подставляется точно, а не по совпадению названия.

Подсказки предметов и заклинаний

Название и описание переводятся построчно прямо в нативной подсказке, с сохранением родных цветов. Числа, которые игра считает от характеристик персонажа (урон, лечение), подставляются живыми, потому что совпадение ищется и по точному тексту, и по "размытому" шаблону.

Диалоги NPC и реплики в чате

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

Интерфейс

Как это выглядит в игре

Окно задания · с аддоном Matreshka
Угроза из Тёмного портала
Цели задания
Разведать лагерь Пылающего Легиона (0/1)
Собрать печати скверны (0/8)
Описание
Демоны снова стягиваются к порталу. Отправляйся в Адское Пламя, разузнай их планы и принеси доказательства: печати, которые они носят на поясе.
Принять Отказаться
Заголовок, цели, описание и кнопки окна показаны на русском. До установки весь этот текст на английском.
Данные

Откуда берётся перевод

Ядро аддона состоит не из кода, а из данных. Официальный русский текст Blizzard извлекается из открытого дампа игрового сервера (десятки тысяч пар "оригинал → перевод"), собирается скриптами на Python в компактные Lua-таблицы и проверяется валидатором перед сборкой. То, чего в официальном переводе нет, добавляется машинным переводом с ручной вычиткой.

Источникдамп Blizzard
Python-сборкагенератор + валидатор
База аддонаLua-таблицы
Играперевод на лету
Результат

Что получилось

2.3.0публичный релиз на GitHub и CurseForge
53 770реплик в чате, официальный перевод
1 078переведённых диалогов NPC
0крашей защищённого интерфейса
Проект открытый и обновляется. Новые релизы собираются автоматически: пуш версии в репозиторий запускает GitHub Actions, который публикует сборку в GitHub Releases и на CurseForge.
Стек

Технологии

LuaWoW Addon APIhooksecurefunc PythonДатамайнинг DB2 / SQLGoogle Translate GitHub ActionsCI/CDCurseForge API