Skip to content

Localization

shmitzas edited this page May 5, 2026 · 6 revisions

MixScrims supports multiple languages through Swiftly's JSONC-based localization system.


Requirements

CRITICAL: Only CS2-supported languages will work. The language code must match CS2's language system exactly, otherwise English fallback will be used.

Translation Files Location:

csgo/addons/swiftlys2/plugins/MixScrims/resources/translations/
├── en.jsonc          # English (default)
├── pt-BR.jsonc       # Portuguese (Brazil)
├── zh-CN.jsonc       # Simplified Chinese
└── [cs2-lang].jsonc  # Your CS2-supported language

Swiftly automatically detects player language from Steam/CS2 settings.


Translation Keys

All translation keys are in en.jsonc. Main categories:

  • server_prefix - Chat message prefix
  • announcement.* - Ready status, captains, timeouts, map voting, state changes, team picking, knife round, surrender, vote kick
  • command.* - Command responses
  • command_reminders.* - Periodic reminders
  • error.* - Error messages
  • info.* - Disconnects, clan tags, center messages
  • menu.* - Voting and picking menus

~95+ keys total. Refer to en.jsonc for complete list.


Format Rules

Colors

Available: [default], [darkred], [green], [lightyellow], [lightblue], [olive], [lime], [red], [purple], [grey], [yellow], [gold], [silver], [blue], [darkblue], [bluegrey], [magenta], [lightred]

Placeholders

Use {0}, {1}, {2}, etc. - must match en.jsonc exactly.

HTML Tags

Some center messages use HTML. See Swiftly HTML Styling Documentation


Creating a Translation

  1. Verify CS2 supports your language - Check CS2 settings
  2. Copy en.jsonc as template
  3. Rename to CS2 language code (e.g., de.jsonc, fr.jsonc)
  4. Translate values only - Keep all keys unchanged
  5. Preserve placeholders - Same count and order as en.jsonc
  6. Keep color codes - Copy exactly from en.jsonc
  7. Save as UTF-8 without BOM
  8. Test in-game with CS2 language set correctly

Example

{
  // ❌ Wrong - don't change keys
  "ankündigung.bereit": "[[red]{0}[default]/[lime]{1}[default]] Spieler bereit"
  
  // ✅ Correct - keep keys, translate values, preserve colors & placeholders
  "announcement.ready_status": "[[red]{0}[default]/[lime]{1}[default]] Spieler bereit"
}

Command Reminders

Configure in plugin settings:

"CommandRemindersLocalization": [
  "command_reminders.timeout",
  "command_reminders.ready",
  "command_reminders.reset",
  "command_reminders.invite"
]

Troubleshooting

Translation Not Loading

  • Verify CS2 supports the language
  • Check language code is exact
  • File location: resources/translations/
  • Filename: [cs2-code].jsonc
  • Validate JSONC syntax
  • UTF-8 without BOM encoding
  • Restart server or reload plugin

Placeholders Show Literally

  • Match en.jsonc placeholder count and order exactly
  • Check syntax: {0} not { 0 } or {O}

Missing Messages

  • All keys from en.jsonc must be present
  • Don't add or remove keys

Checklist

  • CS2 supports this language
  • Correct CS2 language code
  • All keys from en.jsonc present
  • No extra keys added
  • Placeholders preserved
  • Color codes intact
  • Valid JSONC syntax
  • UTF-8 without BOM
  • Tested in-game

Related: Configuration | Contributing | Installation

Clone this wiki locally