Matreshka: a Russian localization for World of Warcraft that translates the game on the fly
A client-side add-on for WoW: The Burning Crusade. It translates quests, items, NPC dialogue and chat lines while the game is running, without touching the server. The project is open: the sources are on GitHub and releases go out on CurseForge.
An English client that cannot be switched to Russian
The official European servers are locked to English: the Russian locale cannot be enabled through Battle.net, because with it the realm simply refuses to let you in. So Russian text can only be added on the client side, with an add-on.
Existing solutions did not fit: some were built for old game versions and long abandoned, others translate word by word and produce nonsense. What was needed was an add-on that translates in coherent text and, above all, does not break the game. Add-ons in WoW run in a strict sandbox, and careless string replacement breaks the protected interface elements.
− How it was
English quests and dialogue; the existing localisations were outdated or translated word by word. Replacing system strings directly broke the action bar and the exit menu.
+ What was needed
Coherent translation of quests, items, dialogue and chat in real time, without a single crash of the game's protected interface.
What Matreshka translates
Translation through hooks rather than system string replacement
The add-on does not blindly rewrite the game's global strings, because that is exactly what broke the protected interface. Instead it hooks the drawing of windows (hooksecurefunc, chat filters, tooltip hooks) and places the Russian text over the already rendered frame. The action bar, the menus and the combat elements are left untouched.
Whole quests
The title, objectives, description, progress and completion are translated, along with the labels of the quest window itself ("Quest objectives", "Reward"). The text is looked up by quest identifier, so it is substituted exactly rather than by a name match.
Item and spell tooltips
The name and the description are translated line by line inside the native tooltip, keeping the original colours. Numbers that the game computes from character stats (damage, healing) are substituted live, because matching is done both on exact text and on a fuzzy pattern.
NPC dialogue and chat lines
Character and boss lines in chat come from Blizzard's official Russian translation, recovered from an open game server dump. NPC dialogue, letters and system events that are absent from the official translation are machine translated with mandatory manual proofreading.
How it looks in the game
Where the translation comes from
The core of the add-on is data rather than code. Blizzard's official Russian text is extracted from an open game server dump (tens of thousands of "original → translation" pairs), assembled by Python scripts into compact Lua tables and checked by a validator before the build. Whatever is missing from the official translation is added by machine translation with manual proofreading.