Skip to main content

Localization

The Season Pass uses a file-first localization system with automatic version management. Two languages are included by default: English (en-US) and German (de-DE).

File Location

configs/kyuubisoft_seasonpass/localization/
├── en-US.json # English (default)
└── de-DE.json # German

Language Setting

Set the active language in config.json:

{
"language": "en-US"
}

File-First Pattern

  1. The plugin checks localization/{lang}.json on disk
  2. If the file doesn't exist, it extracts the default from the JAR
  3. Missing keys fall back to en-US
  4. User edits to the file are preserved across updates

Version Management

Each localization file contains a _localization_version field:

{
"_localization_version": "3",
"seasonpass.ui.title": "Season Pass",
...
}

When the plugin ships new keys (version bump), it:

  1. Creates a backup of the existing file (.bak)
  2. Merges new keys into the user's file
  3. Updates the _localization_version field
  4. Preserves all user-customized values
Version Bump Required

When adding new i18n keys to a custom build, you must bump the _localization_version number. Otherwise, deployed files will NOT be updated (file-first pattern skips files that already exist).

Key Categories

Commands (seasonpass.cmd.*)

KeyDefault (en-US)
seasonpass.cmd.players_onlyThis command is for players only
seasonpass.cmd.no_permissionYou don't have permission
seasonpass.cmd.player_not_foundPlayer not found
seasonpass.cmd.season_infoSeason info message
seasonpass.cmd.no_active_seasonNo active season
seasonpass.cmd.premium_alreadyYou already have premium
seasonpass.cmd.premium_disabledPremium is disabled
seasonpass.cmd.premium_purchasedPremium purchased
seasonpass.cmd.premium_insufficientNot enough currency
seasonpass.cmd.openingOpening Season Pass...

UI (seasonpass.ui.*)

KeyDefault (en-US)
seasonpass.ui.titleSeason Pass
seasonpass.ui.tab_tiersTiers
seasonpass.ui.tab_challengesChallenges
seasonpass.ui.tab_shopShop
seasonpass.ui.tab_historyHistory
seasonpass.ui.tab_settingsSettings
seasonpass.ui.free_trackFree
seasonpass.ui.premium_trackPremium
seasonpass.ui.bonus_trackBonus
seasonpass.ui.season_ends_inSeason ends in: 0
seasonpass.ui.xp_progress0 / 1 XP
seasonpass.ui.token_balance0 Tokens
seasonpass.ui.premium_badgePREMIUM

Tiers (seasonpass.tier.*)

KeyDefault (en-US)
seasonpass.tier.tier_upTier Up! You reached Tier 0
seasonpass.tier.claimClaim now
seasonpass.tier.claimedClaimed
seasonpass.tier.lockedLocked
seasonpass.tier.premium_lockedPremium Only
seasonpass.tier.reward_claimedReward claimed!
seasonpass.tier.not_reachedTier not reached yet
seasonpass.tier.need_premiumPremium pass required

Challenges (seasonpass.challenge.*)

KeyDefault (en-US)
seasonpass.challenge.kill_mobsKill 0 mobs
seasonpass.challenge.kill_specificKill 0 1
seasonpass.challenge.break_blocksBreak 0 blocks
seasonpass.challenge.break_specificBreak 0 1
seasonpass.challenge.place_blocksPlace 0 blocks
seasonpass.challenge.harvestHarvest 0 crops
seasonpass.challenge.travelTravel 0 blocks
seasonpass.challenge.discover_zoneDiscover 0 zones
seasonpass.challenge.play_timePlay for 0 minutes
seasonpass.challenge.completeChallenge completed!

Shop (seasonpass.shop.*)

KeyDefault (en-US)
seasonpass.shop.titleSeason Shop
seasonpass.shop.cost0 Tokens
seasonpass.shop.buyBuy
seasonpass.shop.sold_outSOLD
seasonpass.shop.purchasedPurchased 0!
seasonpass.shop.not_enough_tokensNot enough tokens
seasonpass.shop.daily_rotationDaily Rotation
seasonpass.shop.refreshes_inRefreshes in: 0

Admin (seasonpass.admin.*)

KeyDefault (en-US)
seasonpass.admin.season_startedSeason 0 started
seasonpass.admin.season_endedSeason ended
seasonpass.admin.season_pausedSeason paused
seasonpass.admin.season_resumedSeason resumed
seasonpass.admin.config_reloadedConfiguration reloaded
seasonpass.admin.xp_grantedGranted 0 XP to 1
seasonpass.admin.tokens_grantedGranted 0 tokens to 1
seasonpass.admin.premium_grantedPremium granted to 0
seasonpass.admin.premium_revokedPremium revoked from 0
seasonpass.admin.tier_setSet 0's tier to 1
seasonpass.admin.player_resetReset 0's season data

Settings (seasonpass.settings.*)

KeyDefault (en-US)
seasonpass.settings.titleSettings
seasonpass.settings.hud_enabledHUD Tracker
seasonpass.settings.hud_positionHUD Position
seasonpass.settings.xp_notificationsXP Notifications
seasonpass.settings.xp_notif.allAll
seasonpass.settings.xp_notif.largeLarge only
seasonpass.settings.xp_notif.noneOff
seasonpass.settings.tier_notificationsTier-Up Notifications
seasonpass.settings.challenge_notificationsChallenge Notifications
seasonpass.settings.savedSettings saved

Adding a Custom Translation

  1. Copy en-US.json and rename to your locale (e.g., fr-FR.json)
  2. Translate all values (keep the keys unchanged)
  3. Set "language": "fr-FR" in config.json
  4. Reload with /spadmin reload
Partial Translations

You don't need to translate every key. Any missing key automatically falls back to the en-US value.