The language folder: where mods actually go
Every mod for Dota lives in a folder named after a language. Which one is decided by the game's own settings file, not by a launch option, and that changed on 24 July 2026.
Checked
Where the folder name comes from
Dota's search paths include an entry with a placeholder for the language, and the engine substitutes a real value into it at startup. Whatever that value is, the folder game/dota_<value> gets mounted and everything inside it loads on top of the game's own archives. That is the whole mechanism mods run on. Nothing is patched and nothing is injected: a folder the engine already looks in gets an extra archive in it.
Two languages, not one
The July 2026 update split the setting in two and moved both into game/dota/cfg/boot.vcfg:
"boot"
{
"UILanguage" "english"
"AudioLanguage" "english"
}The one that matters here is AudioLanguage. That is the value the engine puts into the search path, which is why switching your voice language asks for a restart and switching interface text does not. Interface text lives in the game's own pak01 for every language at once, so it never had a folder of its own.
Why -language mods stopped working
The old trick relied on the argument being free-form. You passed -language mods or -language tempcontent, the engine put that word into the search path, and a folder appeared for you to hide mods in, away from the real language folders. Now a word Dota does not recognise as a language produces nothing. The folder is not created, not mounted, and the mods in it never load.
The argument still works and still sets the language. It just cannot invent a folder any more. Every guide still teaching that step is sending people to a directory the game will never open, which is the single most common reason a mod installed correctly does nothing.
What a launch option does to all of this
A -language in Steam's launch options outranks the setting in boot.vcfg. Measured, not assumed: on a machine with -language dutch set and AudioLanguage russian written in boot.vcfg, the game mounted dota_dutch and never opened dota_russian at all. The console log lists what was mounted, and Russian did not appear in it.
So the order is: a -language naming a real Dota language wins outright; failing that, AudioLanguage from boot.vcfg decides; and a -language naming something Dota does not know decides nothing at all, because the engine mounts no folder for it. The parameter also locks both language settings while it is there, which is why the text language stops being changeable in game.
This is what other mod tools use: set a language nobody plays in, fill the folder it names, and hand back the English text as an archive. It works, and it is why a mod installed into the folder your voice language names can still do nothing. The app reads the launch option and installs into whatever folder the game is really going to mount.
Finding your folder
- Open the game folderSteam, right-click Dota 2, Manage, Browse local files, then into
game. - Check the launch options firstSteam, right-click Dota 2, Properties. A
-language somethingthere decides everything, and the folder isdota_something. - No launch option? Read boot.vcfgA text file in
game/dota/cfg/. AudioLanguage is your answer, and the folder is the one that matches it.
No dota_ folder at all? Your audio language is English, and Valve ships no folder for it: English speech sits inside the base game. You cannot create the folder yourself either, and switching the audio language to Russian, Korean or Chinese does not cost you English voices. The whole case, and why.
The app does this for you and shows the folder it is writing to, which is worth a glance the first time you install anything.
If you change your voice language
The game starts mounting a different folder, and every mod you installed stays behind in the old one. Nothing is lost and nothing is broken; the game is simply looking somewhere else. The app can move your mods across when it notices, and by hand it is a matter of moving the pakNN files into the new folder.
Four voice languages, three folders
Dota records hero speech in four languages: English, Russian, Simplified Chinese and Korean. Three of them have a folder in the game directory - dota_russian, dota_schinese, dota_koreana - and English does not, because English speech is what the base game already carries. Every other language Dota offers, Dutch and German and the rest, is text only. There is no recorded speech behind them, so Valve ships no folder for them either.
Those three folders are on the disk of everybody who has Dota installed, whether or not they ever downloaded the speech that goes in them. That is the detail the rest of this page turns on.
The Steam language and the audio language are two settings
The language in the Steam properties of Dota decides which voice pack is on your disk. The audio language inside the game decides which one it plays. Different places, different jobs, and they do not have to agree.
Steam keeps exactly one pack. Pick Russian in the properties and it downloads Russian speech; pick Korean later and it deletes the Russian and downloads the Korean. Gigabytes each way, every time. English downloads nothing, because it is already in the base game, so switching the properties to English is how you delete whatever pack you had.
And if the game is told to play a pack that is not on disk, it falls back to English. Nothing is broken and nothing is missing: English is the floor everything else sits on.
What this app does with that
It sets the audio language inside the game to one of the three that have a folder, and puts mods in that folder. For anybody whose Steam language is English the pack was never downloaded, so the folder mounts carrying nothing but mods, and the speech stays English because that is the fallback. What you hear does not change. The text language stays whatever you chose.
No launch option, no folder made by hand, no extra archive to undo a side effect. It is the setting the game already has, doing the thing it does.
Why the launch option is the worse route
A real language still works as an argument: -language dutch sets the text to Dutch, leaves the speech English, and mounts dota_dutch. That is what the older guides teach and what some tools still do. Three things come with it.
- The folder does not exist. It has to be created, with a
gameinfo.giof its own copied from a real language folder. - Both language settings are locked while the argument is there. The menus inside the game cannot change them back, so getting English text again means putting an archive of the English localization into that folder.
- A program setting this up has to write into the configuration files of Steam itself to put the argument there.
There is also what Valve did in July. Folders invented out of nothing stopped mounting. The languages with no speech of their own are the closest thing left to an invented folder, while the three with speech have to be mounted for that speech to play at all. Preferring those three costs nothing and asks nothing of Steam.
Questions
- Which languages does Dota record voices in?
- Four, and that list has nothing to do with the twenty-nine the interface is translated into. Three of them get a folder:
dota_russian,dota_koreana,dota_schinese. English is the fourth and has none, because English speech lives inside the base game. What to do if your audio is English. - Is a separate mods folder still possible?
- Not by making up a name. Mods go in the language folder your game already mounts, in their own pak slots, which is what the app does.
- Do I need to edit gameinfo.gi?
- No. Guides that teach editing it are working around the same problem from the other side, and editing a file the client checks is a worse trade than using a folder that already works.