Skip to content

Internationalization

Wayward Crown supports 15 languages, with the ability to add more through plugins.


Code Language
en English
zh_TW 繁體中文
zh_CN 简体中文
ja 日本語
ko 한국어
ru Русский
de Deutsch
fr Français
es Español
pt_BR Português (Brasil)
it Italiano
pl Polski
tr Türkçe
th ภาษาไทย
vi Tiếng Việt

Language files are in JSON format, stored in the game/lang/ directory:

{
"window_title": "Wayward Crown",
"log_defeated_enemy": "{adv} defeated {enemy} (Gold: {gold} XP: {xp})",
"building_market": "Market",
"class_warrior": "Warrior"
}
  • Supports {placeholder} dynamic substitution
  • Missing translation keys automatically fall back to English
  • Switching languages takes effect immediately without a restart

  1. --lang / --language CLI argument (highest priority; applies to this session only and is not saved)
  2. Language manually selected by the user in the settings menu (choosing “Auto” there clears it)
  3. Steam client language (auto-detected on every launch while there is no manual choice)
  4. The language used last time
  5. English (default fallback)

Adding a language via a plugin only requires a translation file and a plugin.json that lists it under content.languages (a file that is not listed is not loaded):

plugins/my_lang/
├── plugin.json
└── lang/
└── xx.json # Your language code
{
"id": "my_lang",
"name": "My Language",
"content": {"languages": ["lang/xx.json"]}
}

The language code and the name shown in the language list come from the file’s _meta block ("_meta": {"language": "xx", "label": "My Language"}); without it the file name is used. The code can be any string (e.g., ja, ko, my_custom) and will automatically appear in the language list in the settings menu.


Campaign text can use the i18n: prefix to reference translation keys:

{
"title": "i18n:tut_level1_title",
"intro": "i18n:tut_level1_intro"
}

The game automatically resolves translation keys based on the current language. If a matching translation is not found, the key name is displayed as-is.