Skip to main content

Translations

Since v1.5.0 every text the mod shows comes from plain JSON files rather than from its code. It ships in English, Italian and, since v1.5.7, Russian, and follows the language you choose in Valheim's own settings. The Russian translation is by Rudra and Axibed. Anyone can add a language without touching the mod itself.

Where the texts live​

The files sit in a Translations folder next to the mod's DLL, one folder per language and one file per kind of text:

FileWhat it holds
races.jsonThe race selection menu: every race's name and description
status_effects.jsonThe names and tooltips of the mod's status icons
items.jsonItems, build pieces and summoned creatures: names and descriptions
messages.jsonEverything the mod writes in the middle or corner of the screen
hover.jsonThe prompts under the crosshair on stations, thralls and the ward
merchants.jsonThe faction merchants, their closing jokes, the troop and hive shops
compendium.jsonThe race pages in the compendium's Texts tab

Where the folder is depends on how the mod was installed: inside the mod's own folder with a mod manager, or BepInEx/plugins/RacesOfValheim/Translations for a manual install.

Adding a language​

  1. Copy the Translations/English folder and rename the copy to the language's name as Valheim spells it: German, French, Spanish, Polish, Chinese, Japanese and so on. The name has to match, or the game will not pick the files up.
  2. Translate the values, never the keys. In "rov_msg_skadi_dragon_form_fades": "Your dragon form fades." only the text on the right changes.
  3. Restart the game with that language selected.

A key you leave out falls back to English, so a partial translation works: you can start with races.json and messages.json and see your progress in game straight away.

Rules for the text​

  • $1, $2, $3… are numbers or names the game fills in: a cooldown, a boss, a creature. Keep every one of them, but move them wherever your sentence needs them. "Eclipse is on cooldown. Remaining: $1s" can become "Mancano $1s all'Eclissi.".
  • Tokens starting with $ and a word, such as $KEY_Use or $rov_piece_racemenuward_name, are resolved by the game. Leave them exactly as they are.
  • \n is a line break, and the <color=…> / <b> tags are formatting. Keep them.
  • Quotes and song titles stay in the original. Ability names such as "Purple Rain", "Like a Bat out of Hell", "Weight of Shadows" or "Vae Victis" are references, and the Italian translation leaves them alone on purpose.
  • Boss and creature names mostly come from the game's own translations already, so a merchant called "Greydwarf" or a message naming "The Elder" is translated for you.
Race names are safe to translate

A race has an internal id ("Skadi", "Trol") that is saved with your character, and a display name that only appears on screen. The files translate the display name alone, so a character saved in one language is still recognised in another.

Sharing a translation​

Send the finished folder on the Discord and it can ship with the next release, so every player gets it without installing anything extra.