diff --git a/src/messages/en.json b/src/messages/en.json index 6f07d477..9dae2c21 100644 --- a/src/messages/en.json +++ b/src/messages/en.json @@ -1,2378 +1,2395 @@ { - "nav": { - "home": "Home", - "community": "Community", - "articles": "Articles", - "photos": "Photos", - "staff": "Staff", - "rankings": "Rankings", - "guilds": "Guilds", - "leaderboards": "Leaderboards", - "rareValues": "Rare values", - "shop": "Shop", - "market": "Market", - "assistance": "Assistance", - "helpCenter": "Help center", - "myTickets": "My tickets", - "badges": "Badges", - "radio": "Radio", - "friends": "Friends", - "messages": "Messages", - "admin": "Admin", - "openMenu": "Open menu", - "closeMenu": "Close menu", - "drawBadge": "Draw badge" - }, - "header": { - "online": "{count} {hotel} online", - "nitroClient": "Nitro client", - "tagline": "An online virtual world where you can create your own avatar, make friends, chat, create rooms and much more!", - "login": "Login", - "or": "Or", - "createAccount": "Create an account" - }, - "footer": { - "copyright": "© {year} - {hotel} is a not for profit educational project" - }, - "common": { - "language": "Language", - "lightMode": "Light mode", - "darkMode": "Dark mode" - }, - "pages": { - "staff": { - "title": "Staff", - "subtitle": "The team behind the hotel", - "ranksTitle": "Ranks", - "ranksSubtitle": "What each part of the team takes care of", - "membersTitle": "Team members", - "membersEmptySubtitle": "Nobody to show right now", - "membersSubtitle": "{count, plural, one {# member keeping things running} other {# members keeping things running}}", - "emptyState": "No staff members to show.", - "colUsername": "Username", - "colRank": "Rank", - "colMotto": "Motto" - }, - "leaderboard": { - "title": "Leaderboard", - "subtitle": "Top 20 players by {currency}", - "tab_credits": "Credits", - "tab_diamonds": "Diamonds", - "tab_duckets": "Duckets", - "tab_achievement": "Achievements", - "tab_respects": "Respects", - "tab_onlinetime": "Online Time", - "emptyState": "No rankings to show yet.", - "colAvatar": "Avatar", - "colPlayer": "Player" - }, - "friends": { - "title": "Friends", - "emptySubtitle": "You have no friends added yet", - "subtitle": "{count, plural, one {You have # friend} other {You have # friends}}", - "emptyState": "Add friends in the hotel and they will show up here.", - "noMotto": "No motto" - }, - "messages": { - "title": "Messages", - "subtitle": "Friend requests and offline messages waiting for you", - "requestsTitle": "Friend requests", - "requestsEmptySubtitle": "Nobody's asked to be your friend yet", - "requestsSubtitle": "{count, plural, one {# pending request} other {# pending requests}}", - "requestsEmptyState": "No pending friend requests.", - "wantsToBeFriend": "wants to be your friend.", - "accept": "Accept", - "offlineTitle": "Offline messages", - "offlineEmptySubtitle": "Your inbox is empty", - "offlineSubtitle": "{count, plural, one {# message received} other {# messages received}}", - "offlineEmptyState": "You have no offline messages.", - "unknownUser": "User #{id}" - }, - "profile": { - "noMotto": "No motto", - "statRank": "Rank", - "statCredits": "Credits", - "statRegistered": "Registered", - "badgesTitle": "Badges", - "badgesEmpty": "No badges yet.", - "photosTitle": "Photos", - "photosEmpty": "No photos yet.", - "guestbookTitle": "Guestbook", - "guestbookSubtitle": "Messages on {username}'s wall", - "leaveMessage": "Leave a message", - "guestbookPlaceholder": "Write something on {username}'s guestbook…", - "post": "Post", - "loginToPost": "Log in to leave a guestbook message.", - "guestbookEmpty": "No guestbook entries yet.", - "unknownUser": "User #{id}", - "statDuckets": "Duckets", - "statDiamonds": "Diamonds", - "walletTitle": "Wallet", - "friendsTitle": "Friends", - "friendsSubtitle": "People in the hotel they hang out with", - "friendsEmpty": "No friends to show.", - "roomsTitle": "Rooms", - "roomsSubtitle": "Rooms they own", - "roomsEmpty": "No rooms to show.", - "roomUntitled": "Untitled room" - }, - "rankings": { - "title": "Rankings", - "subtitle": "The top 12 players ranked by credits", - "emptyState": "No players to rank yet." - }, - "home": { - "welcome": "Welcome to {hotelName}", - "welcomeSubtitle": "Your retro hotel, now powered by Next.js", - "welcomeBody": "Hang out, collect furni, and meet friends.", - "enterHotel": "Enter {hotelName}", - "onlineFriends": "Online Friends", - "noFriendsOnline": "No friends online", - "register": "REGISTER NOW", - "joinNow": "Join {hotelName} today!", - "recentUsers": "Recent Users", - "recentPhotos": "Recent Photos", - "latestNews": "Latest news", - "newsTitle": "Latest news", - "newsSubtitle": "Fresh from the hotel", - "allNews": "All news →", - "noArticles": "No articles yet.", - "noPhotos": "No photos yet.", - "noUsers": "No users online", - "latestArticle": "Latest Article" - }, - "news": { - "title": "News", - "subtitle": "The latest announcements, events and updates from the hotel", - "noArticles": "No articles yet." - }, - "article": { - "backToNews": "← News", - "reactionsTitle": "Reactions", - "reactionsSubtitle": "Tell us what you think", - "reaction": { - "like": "Like", - "love": "Love", - "wow": "Wow" - }, - "removeReaction": "Click to remove your reaction", - "reactWith": "React with {reaction}", - "noReactions": "No reactions yet.", - "logIn": "Log in", - "toReact": "to react.", - "commentsTitle": "Comments", - "commentsSubtitle": "Join the conversation", - "commentsCount": "{count} so far", - "noComments": "No comments yet. Be the first to comment.", - "userNumber": "User #{id}", - "addComment": "Add a comment", - "commentPlaceholder": "Write your comment…", - "postComment": "Post comment", - "toComment": "to leave a comment." - }, - "photos": { - "title": "Photos", - "subtitle": "The latest snapshots taken in the hotel", - "noPhotos": "No photos yet.", - "photoAlt": "Photo by user #{id}", - "byUser": "by user #{id}" - }, - "badges": { - "title": "Badges", - "subtitle": "The badges you can earn and show off around the hotel", - "noBadges": "No badges available yet." - }, - "community": { - "title": "Community", - "subtitle": "Everything happening around the hotel in one place", - "open": "Open →", - "links": { - "rankings": { - "title": "Rankings", - "text": "See the wealthiest players in the hotel, ranked by credits." - }, - "staff": { - "title": "Staff", - "text": "Meet the team that keeps the hotel running every day." - }, - "news": { - "title": "News", - "text": "The latest announcements, events and updates." - }, - "photos": { - "title": "Photos", - "text": "Snapshots shared by the community from around the hotel." - }, - "guilds": { - "title": "Guilds", - "text": "Browse the groups players have created and joined." - }, - "leaderboards": { - "title": "Leaderboards", - "text": "Who's on top this season across the hotel's stats." - } - } - }, - "guilds": { - "title": "Guilds", - "subtitle": "Browse the groups players have created and joined", - "empty": "No guilds yet.", - "unnamedGuild": "Unnamed guild", - "noDescription": "No description" - }, - "guild": { - "allGuilds": "← All guilds", - "unnamedGuild": "Unnamed guild", - "noDescription": "No description", - "memberSingular": "Member", - "memberPlural": "Members", - "founded": "Founded", - "forumLink": "Forum →", - "discussion": "Discussion", - "membersTitle": "Members", - "memberLowerSingular": "member", - "memberLowerPlural": "members", - "noMembers": "No members.", - "owner": "Owner", - "noMotto": "No motto" - }, - "guildForum": { - "backToGuild": "← Back to guild", - "unnamedGuild": "Unnamed guild", - "forumTitle": "{guild} — Forum", - "threadSingular": "thread", - "threadPlural": "threads", - "newThread": "+ New thread", - "empty": "No threads in this forum yet.", - "colSubject": "Subject", - "colAuthor": "Author", - "colPosts": "Posts", - "colDate": "Date", - "noSubject": "(no subject)", - "pinned": "Pinned", - "locked": "Locked", - "userNumber": "User #{id}", - "unknown": "Unknown" - }, - "guildForumNew": { - "backToForum": "← Back to forum", - "unnamedGuild": "Unnamed guild", - "title": "New thread", - "subtitle": "in {guild} forum", - "subjectLabel": "Subject", - "subjectPlaceholder": "Thread subject", - "messageLabel": "Message", - "messagePlaceholder": "Write your opening post…", - "postThread": "Post thread", - "cancel": "Cancel" - }, - "shop": { - "title": "Shop", - "subtitle": "Top up your account and grab exclusive packages, currency and badges.", - "browsingCategory": "Browsing the {category} packages.", - "all": "All", - "allPackages": "All packages", - "packagesAvailable": "{count, plural, one {# package available} other {# packages available}}", - "empty": "No packages available right now.", - "buy": "Buy" - }, - "topup": { - "title": "Top up with PayPal", - "subtitle": "Pay securely with PayPal and your credits are added the moment the payment clears.", - "cancelled": "Checkout was cancelled — no payment was taken.", - "chooseAmount": "Choose an amount", - "notConfiguredPre": "PayPal isn't configured yet. An administrator needs to set", - "notConfiguredAnd": "and", - "notConfiguredOptional": "(and optionally", - "notConfiguredPost": "for sandbox vs. live).", - "balanceTitle": "Your balance", - "signedInAs": "Signed in as {username}", - "credits": "Credits", - "creditsPerUnit": "Credits per 1.00 {currency}", - "rateLine": "You receive {amount} credits per 1.00 {currency}. Credits appear in-game the next time you log in." - }, - "marketplace": { - "title": "Marketplace", - "subtitle": "Browse furniture and rares listed by players. Listings are placed in-game and update live — head into the hotel to make an offer.", - "activeOffers": "Active offers", - "sellers": "Sellers", - "totalValue": "Total value", - "activeListings": "Active listings", - "mostRecentFirst": "Most recently listed first", - "empty": "There are no active marketplace offers right now. Check back later.", - "colOffer": "Offer", - "colItem": "Item", - "colSeller": "Seller", - "colPrice": "Price", - "colListed": "Listed", - "itemLabel": "Item #{id}", - "userLabel": "User #{id}", - "justNow": "just now", - "minutesAgo": "{count}m ago", - "hoursAgo": "{count}h ago", - "daysAgo": "{count}d ago" - }, - "rares": { - "title": "Rare values", - "subtitle": "Get an overview of all of the rares on the hotel, grouped by category.", - "empty": "We currently have no rares listed here.", - "rareCount": "{count, plural, one {# rare} other {# rares}}", - "viewRares": "View rares →" - }, - "rareCategory": { - "rareCount": "{count, plural, one {# rare in this category} other {# rares in this category}}", - "allRares": "← All rares", - "empty": "No rares listed in this category yet.", - "colRare": "Rare", - "colCredits": "Credits", - "colCurrency": "Currency", - "creditsValue": "{value} credits", - "duckets": "Duckets", - "diamonds": "Diamonds", - "credits": "Credits" - }, - "redeem": { - "title": "Redeem a voucher", - "subtitle": "Got a voucher code? Enter it below to add the reward to your account.", - "enterCode": "Enter your code", - "oncePerAccount": "Each voucher can only be redeemed once per account.", - "balanceTitle": "Your balance", - "signedInAs": "Signed in as {username}", - "credits": "Credits", - "instantCredit": "Redeemed rewards are credited instantly and appear in-game the next time you log in." - }, - "help": { - "title": "Help Center", - "subtitle": "Find guides, support topics, and the hotel rules — everything you need to get help.", - "myTickets": "My tickets →", - "topicsTitle": "Support topics", - "topicsSubtitle": "Browse guides and answers to common questions", - "topicsEmpty": "No help topics yet.", - "rulesTitle": "Hotel rules", - "rulesSubtitle": "Please read these before hanging out in the hotel", - "rulesEmpty": "No rules published yet.", - "categoryEmpty": "No rules in this category." - }, - "helpCategory": { - "back": "← Help Center", - "topicSubtitle": "Help Center topic", - "moreTitle": "More help topics", - "moreSubtitle": "Jump to another support topic" - }, - "helpTickets": { - "title": "Help Tickets", - "subtitle": "Submit a ticket to staff and track your open requests.", - "statTotal": "Total tickets", - "statOpen": "Open", - "statClosed": "Closed", - "newTitle": "New ticket", - "newSubtitle": "Describe your issue and staff will follow up", - "subjectPlaceholder": "Subject", - "contentPlaceholder": "Describe your issue…", - "submit": "Submit ticket", - "listTitle": "Your tickets", - "listSubtitle": "Every request you have sent to staff", - "listEmpty": "You have no tickets yet.", - "colId": "ID", - "colSubject": "Subject", - "colStatus": "Status", - "colCreated": "Created", - "statusOpen": "Open", - "statusClosed": "Closed" - }, - "applyStaff": { - "title": "Apply for {hotel} staff", - "subtitle": "We open staff applications every now and then. If you come across a position you feel you would fit perfectly into, do not hesitate to apply for it.", - "noPositionsTitle": "No positions open", - "noPositionsBody": "There are currently no positions open. Please come back at a later time to check if we have any openings by then. Thank you for your interest.", - "noDeadline": "No deadline set", - "deadline": "Application deadline: {date}", - "alreadyApplied": "You have already applied for {rank}", - "aboutYou": "About you", - "aboutPlaceholder": "Tell us why you'd be a great {rank}…", - "applyFor": "Apply for {rank}" - }, - "applyTeam": { - "title": "Apply for the {hotel} team", - "subtitle": "We open team applications periodically. If you see a team you fit, do not hesitate to apply!", - "noPositionsTitle": "No team positions open", - "noPositionsBody": "There are currently no open team positions. Please come back later to check for new openings. Thank you!", - "pending": "Your application is pending", - "aboutYou": "About you", - "aboutPlaceholder": "Tell us why you'd be a great fit for {rank}…", - "applyFor": "Apply for {rank}" - }, - "radio": { - "title": "Radio", - "subtitle": "Tune in to the hotel radio — live DJ sets, requests and shoutouts.", - "nowPlaying": "Now playing", - "nothingPlaying": "Nothing playing right now.", - "onAir": "On air: {dj}", - "noDj": "No DJ on air.", - "audioUnsupported": "Your browser does not support the audio element.", - "streamOffline": "The stream is currently offline.", - "exploreTitle": "Explore the radio", - "exploreSubtitle": "Schedule, shouts, requests and more", - "linkSchedule": "Schedule", - "linkScheduleText": "Our weekly line-up of DJs and shows.", - "linkShouts": "Shouts", - "linkShoutsText": "Shout-outs and requests from the community.", - "linkRequests": "Requests", - "linkRequestsText": "Ask the DJ to spin your favourite track.", - "linkApply": "Apply as DJ", - "linkApplyText": "Join the team and take to the airwaves.", - "linkLeaderboard": "Leaderboard", - "linkLeaderboardText": "Top listeners ranked by points earned.", - "todayTitle": "Today's schedule", - "todayTitleWithDay": "Today's schedule · {day}", - "todaySubtitle": "What's on the airwaves today", - "fullWeek": "Full week →", - "noShowsToday": "No shows scheduled for today.", - "colTime": "Time", - "colShow": "Show", - "colDj": "DJ", - "untitledShow": "Untitled show", - "userNumber": "User #{id}" - }, - "radioSchedule": { - "title": "Radio Schedule", - "subtitle": "Our weekly line-up of DJs and shows", - "empty": "No shows scheduled yet.", - "colDay": "Day", - "colTime": "Time", - "colDj": "DJ", - "colShow": "Show", - "noShows": "No shows" - }, - "radioShouts": { - "title": "Radio Shouts", - "subtitle": "Shout-outs and requests from the community", - "postTitle": "Post a shout", - "postSubtitle": "Send a message to the DJ on air", - "messageLabel": "Your message", - "messagePlaceholder": "Send a shout to the DJ…", - "shoutButton": "Shout", - "loginToPost": "Log in to post a shout.", - "latestTitle": "Latest shouts", - "latestSubtitle": "The most recent messages from listeners", - "empty": "No shouts yet. Be the first!" - }, - "radioContests": { - "title": "Radio Contests", - "subtitle": "Tune in and take part in our latest on-air contests", - "empty": "No contests yet.", - "contestLabel": "Contest #{id}", - "dateUnknown": "Date unknown" - }, - "radioGiveaways": { - "title": "Radio Giveaways", - "subtitle": "Listen in for your chance to win in our radio giveaways", - "empty": "No giveaways yet.", - "giveawayLabel": "Giveaway #{id}", - "dateUnknown": "Date unknown" - }, - "radioLeaderboard": { - "title": "Radio Listener Leaderboard", - "subtitle": "Top 50 listeners by points earned tuning in to the radio", - "empty": "No listener points to show yet.", - "colRank": "Rank", - "colAvatar": "Avatar", - "colListener": "Listener", - "colPoints": "Points" - }, - "radioRequests": { - "formTitle": "Submit a request", - "formSubtitle": "Ask the DJ to play your favourite track", - "songLabel": "Song", - "songPlaceholder": "Title of the song", - "artistLabel": "Artist", - "artistPlaceholder": "Name of the artist (optional)", - "submitButton": "Submit request", - "loginToRequest": "Log in to submit a request.", - "latestTitle": "Recent requests", - "latestSubtitle": "The most recently requested songs", - "empty": "No requests yet.", - "colSong": "Song", - "colArtist": "Artist", - "colRequester": "Requester", - "colDate": "Date", - "colStatus": "Status", - "statusPending": "Pending", - "statusApproved": "Approved", - "statusPlayed": "Played" - }, - "client": { - "title": "Nitro client", - "loading": "Loading client…", - "generatingTicket": "Generating SSO ticket…", - "connected": "Connected", - "welcome": "Welcome to {hotel}", - "openingClient": "Opening the client in a new tab…", - "fallbackLink": "If it doesn't open,", - "fallbackClick": "click here", - "errors": { - "unauthorized": "You need to be logged in to open the client.", - "generic": "Could not generate SSO ticket", - "loginRedirect": "Log in" - } - }, - "radioApply": { - "title": "Apply to be a Radio DJ", - "subtitle": "Tell us about yourself and why you'd be a great fit for the airwaves", - "latestTitle": "Your latest application", - "statusLabel": "Status:", - "submittedOn": "· submitted {date}", - "submitAgain": "You can submit again below if your details have changed.", - "formTitle": "Application form", - "formSubtitle": "All fields marked required must be filled in", - "realNameLabel": "Real name", - "realNamePlaceholder": "Your full name", - "ageLabel": "Age", - "availabilityLabel": "Availability", - "availabilityPlaceholder": "Which days and times can you broadcast?", - "musicStyleLabel": "Music style", - "musicStylePlaceholder": "e.g. House, Pop, Hip-Hop", - "experienceLabel": "Experience", - "optional": "(optional)", - "experiencePlaceholder": "Any prior DJ or hosting experience?", - "motivationLabel": "Motivation", - "motivationPlaceholder": "Why do you want to join the radio team?", - "submitButton": "Submit application" - }, - "settings": { - "accountSettings": "Account settings", - "accountSettingsSubtitle": "Manage your profile, security and connected accounts", - "publicProfile": "Your public profile", - "noMotto": "No motto", - "noEmail": "No e-mail on file", - "changeMotto": "Change motto", - "changeMottoSubtitle": "Updates instantly in-game if you are online", - "mottoPlaceholder": "Your motto", - "saveMotto": "Save motto", - "securityTitle": "Security", - "securitySubtitle": "Two-factor authentication", - "securityDescription": "Add a second layer of protection to your account.", - "twoFactorLink": "Two-factor authentication", - "connectionsTitle": "Connected accounts", - "connectionsSubtitle": "Sign in with one click", - "connectionsDescription": "Link Discord or Google to your hotel account.", - "manageConnections": "Manage connections" - }, - "settings2fa": { - "backToSettings": "← Settings", - "title": "Two-factor authentication", - "subtitle": "Add a second layer of security with an authenticator app", - "nowEnabled": "2FA is now enabled. 🔒", - "disabledNotice": "2FA has been disabled.", - "badCode": "That code wasn't valid — try again.", - "noAppKeyPrefix": "2FA is unavailable until", - "noAppKeyMiddle": "is configured (the same Laravel", - "noAppKeySuffix": "as your AtomCMS install, so existing secrets stay readable).", - "isEnabled": "2FA is enabled", - "onYourAccount": "on your account.", - "disable": "Disable 2FA", - "scanOrEnter": "Scan or enter this key", - "scanInstructions": "Add this to Google Authenticator / Authy, then enter the 6-digit code to confirm.", - "manualKey": "Manual key:", - "codePlaceholder": "6-digit code", - "confirm": "Confirm", - "enableIntro": "Add a second layer of security with an authenticator app.", - "enable": "Enable 2FA" - }, - "connections": { - "backToSettings": "← Settings", - "title": "Connected accounts", - "subtitle": "Link a social account so you can sign in with one click", - "matchByEmail": "We match it to your hotel account by e-mail, so use the address on file:", - "lookupFailed": "We couldn't read your linked accounts right now. You can still connect below — your status will show once it's available.", - "statusUnavailable": "Not available on this hotel.", - "statusConnected": "Connected — sign in with this account.", - "statusNotConnected": "Not connected.", - "connected": "Connected", - "connectProvider": "Connect {provider}", - "unavailable": "Unavailable", - "footerNote": "Connecting takes you to the provider to authorise, then back here. If your social account's e-mail doesn't match a hotel account, you'll be returned to the login screen with a note." - }, - "login": { - "title": "Sign in", - "subtitle": "Welcome back — log in to enter the hotel.", - "subtitle2fa": "Enter the 6-digit code from your authenticator.", - "usernamePlaceholder": "Username", - "passwordPlaceholder": "Password", - "codePlaceholder": "2FA code", - "pleaseWait": "Please wait…", - "verify": "Verify", - "signIn": "Sign in", - "or": "or", - "continueWithDiscord": "Continue with Discord", - "continueWithGoogle": "Continue with Google", - "noAccount": "No account?", - "createOne": "Create one", - "forgotPassword": "Forgot password?", - "errorInvalidCredentials": "Invalid username or password", - "errorInvalid2fa": "Invalid 2FA code" - }, - "register": { - "title": "Create account", - "subtitle": "Join the hotel — it only takes a moment.", - "username": "Username", - "email": "Email", - "password": "Password", - "confirmPassword": "Repeat password", - "usernamePlaceholder": "Username", - "emailPlaceholder": "Email", - "passwordPlaceholder": "Password (min 6 chars)", - "confirmPasswordPlaceholder": "Repeat password", - "selectOutfit": "Select your outfit", - "termsAccept": "I am 18+ and accept the {hotel} terms & rules.", - "createAccount": "Create account", - "creatingAccount": "Creating account...", - "alreadyHaveAccount": "Already have an account? Login!", - "register": "Register", - "termsError": "You must accept the terms & rules to register.", - "usernameError": "Username is required.", - "emailError": "Valid email is required.", - "passwordError": "Password must be at least 6 characters.", - "confirmPasswordError": "Passwords do not match.", - "termsRequired": "You must accept the terms & rules.", - "usernameRequired": "Username is required.", - "emailRequired": "Email is required.", - "passwordRequired": "Password is required.", - "passwordsDontMatch": "Passwords do not match." - }, - "forgot": { - "title": "Reset password", - "subtitle": "We'll email you a secure link to set a new password.", - "sentNotice": "If that email is registered, a reset link has been sent. Check your inbox.", - "emailPlaceholder": "Your email", - "sendResetLink": "Send reset link", - "backToLogin": "Back to login" - }, - "reset": { - "title": "Set a new password", - "subtitle": "Choose a strong password you don't use elsewhere.", - "passwordPlaceholder": "New password (min 6 chars)", - "resetPassword": "Reset password", - "backToLogin": "Back to login" - }, - "verify": { - "verifiedTitle": "You're all set", - "verifiedSubtitle": "Email verified", - "verifiedBody": "Your email address has been verified. You can now log in and play.", - "goToLogin": "Go to login", - "alreadyTitle": "Already verified", - "alreadySubtitle": "Nothing left to do", - "alreadyBody": "This email address has already been confirmed.", - "unavailableTitle": "Try again shortly", - "unavailableSubtitle": "Server unreachable", - "unavailableBody": "We couldn't reach the server to verify your email. Please retry the link in a moment.", - "invalidTitle": "Email verification", - "invalidSubtitle": "Invalid or expired link", - "invalidBody": "This verification link is not valid. Make sure you opened the full link from your email, or request a new one.", - "backToLogin": "Back to login" - }, - "banned": { - "title": "You are banned", - "subtitle": "Account suspended", - "body": "Your account has been suspended from the hotel.", - "reasonLabel": "Reason:", - "permanent": "This ban is permanent.", - "expires": "Expires {date}.", - "contactStaff": "If you believe this is a mistake, contact the staff team." - }, - "maintenance": { - "title": "{hotel} is under maintenance", - "subtitle": "We'll be back shortly", - "staffCanLogIn": "Staff can still log in." - }, - "admin": { - "nav": { - "overview": "Overview", - "dashboard": "Dashboard", - "content": "Content", - "hubNewsMedia": "News & media", - "hubSiteContent": "Site content", - "hubEngagement": "Engagement", - "articles": "Articles", - "tags": "Tags", - "navigator": "Navigator", - "helpCenter": "Help center", - "advertisements": "Advertisements", - "writeableBoxes": "Writeable boxes", - "photos": "Photos", - "tickets": "Tickets", - "events": "Events", - "polls": "Polls", - "banners": "Banners", - "prefixes": "Prefixes", - "usersAndAccess": "Users & access", - "hubUsers": "Users", - "hubAccess": "Access & security", - "users": "Users", - "bans": "Bans", - "ipManagement": "IP management", - "vpn": "VPN", - "applications": "Applications", - "teams": "Teams", - "permissions": "Permissions", - "onlineUsers": "Online users", - "moderation": "Moderation", - "economy": "Economy", - "hubCatalog": "Catalog & rares", - "hubShop": "Shop & payments", - "catalog": "Catalog", - "shop": "Shop", - "transactions": "Transactions", - "vouchers": "Vouchers", - "subscriptions": "Subscriptions", - "rareValues": "Rare values", - "badges": "Badges", - "achievements": "Achievements", - "calendar": "Calendar", - "radio": "Radio", - "radioHistory": "Radio history", - "radioBanners": "Banners", - "radioEmbed": "Embed", - "radioApiKeys": "API keys", - "radioModeration": "Moderation", - "radioSettings": "Settings", - "radioMonitoring": "Monitoring", - "radioPoints": "Points", - "radioRanks": "Ranks", - "radioAutodj": "Auto DJ", - "plugins": "Plugins", - "system": "System", - "hubTools": "Tools", - "hubObservability": "Observability", - "commandocentrum": "Commandocentrum", - "emulator": "Emulator", - "alerts": "Alerts", - "logs": "Logs", - "auditLog": "Audit log", - "analytics": "Analytics", - "devops": "DevOps", - "wordFilter": "Word filter", - "maintenance": "Maintenance", - "rooms": "Rooms", - "emailTemplates": "Email templates", - "theme": "Theme", - "media": "Media", - "favicon": "Favicon", - "sounds": "Sounds", - "translations": "Translations", - "import": "Import", - "settings": "Settings", - "backToSite": "Back to site", - "housekeeping": "Housekeeping", - "hotelManagementPanel": "Hotel management panel", - "rankLabel": "Rank {rank}" - }, - "dashboard": { - "title": "Dashboard", - "subtitle": "Hotel overview & live status", - "playersOnline": "Players online", - "articles": "Articles", - "activeBans": "Active bans", - "database": "Database", - "databaseConnected": "Connected", - "databaseDown": "Down", - "usersByRank": "Users by rank", - "noAccountsToBreakDown": "No accounts to break down yet", - "rankLabel": "Rank {rank}", - "rankWithCount": "Rank {rank}: {count} accounts", - "recentStaffActivity": "Recent staff activity", - "viewAll": "View all", - "noStaffActivityLogged": "No staff activity logged yet" - }, - "articles": { - "title": "Articles", - "subtitle": "News articles — 50 most recent", - "newArticle": "+ New article", - "edit": "Edit", - "delete": "Delete", - "noArticles": "No articles yet", - "confirmDelete": "Are you sure you want to delete \"{title}\"?", - "colTitle": "Title", - "colSlug": "Slug", - "colAuthor": "Author", - "colCreated": "Created", - "colActions": "Actions", - "form": { - "title": "Title", - "titlePlaceholder": "Article title", - "slug": "Slug", - "slugPlaceholder": "article-url-slug", - "category": "Category", - "categoryPlaceholder": "Select a category", - "body": "Body", - "bodyPlaceholder": "Write your article content…", - "image": "Image", - "imagePlaceholder": "https://example.com/image.png", - "thumbnail": "Thumbnail", - "thumbnailPlaceholder": "https://example.com/thumb.png", - "published": "Published", - "featured": "Featured", - "save": "Save article", - "saving": "Saving…", - "deleteArticle": "Delete article", - "deleteConfirm": "This action cannot be undone. The article will be permanently removed.", - "cancel": "Cancel" - } - }, - "tags": { - "title": "Tags", - "subtitle": "Article tags / categories", - "addTag": "Add tag", - "name": "Name", - "namePlaceholder": "Tag name", - "backgroundColour": "Background colour", - "createTag": "Create tag", - "editTag": "Edit tag", - "updateTag": "Update tag", - "deleteTag": "Delete tag", - "confirmDelete": "Delete \"{name}\"?", - "noTags": "No tags yet", - "colId": "ID", - "colTag": "Tag", - "colColour": "Colour", - "colUsedBy": "Used by", - "colCreated": "Created", - "colActions": "Actions" - }, - "navigation": { - "title": "Navigator", - "flatCategories": "Flat categories", - "publicRooms": "Public rooms", - "addCategory": "Add category", - "editCategory": "Edit category", - "deleteCategory": "Delete category", - "categoryName": "Category name", - "categoryNamePlaceholder": "e.g. Chill & Chat", - "categoryOrder": "Order", - "roomName": "Room name", - "roomNamePlaceholder": "e.g. Welcome Lounge", - "roomId": "Room ID", - "roomIdPlaceholder": "Numeric room ID", - "save": "Save", - "cancel": "Cancel", - "noCategories": "No categories yet", - "noPublicRooms": "No public rooms yet", - "colId": "ID", - "colName": "Name", - "colOrder": "Order", - "colRooms": "Rooms", - "colActions": "Actions" - }, - "helpCenter": { - "title": "Help Center", - "subtitle": "Support entries and FAQ management", - "entries": "Entries", - "newEntry": "+ New entry", - "edit": "Edit", - "delete": "Delete", - "noEntries": "No entries yet", - "confirmDelete": "Delete \"{title}\"?", - "colId": "ID", - "colTitle": "Title", - "colCategory": "Category", - "colCreated": "Created", - "colActions": "Actions", - "form": { - "title": "Title", - "titlePlaceholder": "Entry title", - "category": "Category", - "categoryPlaceholder": "Select category", - "body": "Body", - "bodyPlaceholder": "Write the answer…", - "save": "Save entry", - "saving": "Saving…", - "deleteEntry": "Delete entry", - "cancel": "Cancel" - } - }, - "ads": { - "title": "Advertisements", - "subtitle": "Manage hotel advertisements and promotional banners", - "newAd": "+ New ad", - "edit": "Edit", - "delete": "Delete", - "noAds": "No advertisements yet", - "confirmDelete": "Delete this ad?", - "colId": "ID", - "colName": "Name", - "colImage": "Image", - "colUrl": "URL", - "colViews": "Views", - "colStatus": "Status", - "colCreated": "Created", - "colActions": "Actions", - "form": { - "name": "Name", - "namePlaceholder": "Ad name", - "image": "Image URL", - "imagePlaceholder": "https://example.com/banner.png", - "url": "Target URL", - "urlPlaceholder": "https://example.com", - "enabled": "Enabled", - "save": "Save ad", - "saving": "Saving…", - "deleteAd": "Delete ad", - "cancel": "Cancel" - } - }, - "writeableBoxes": { - "title": "Writeable Boxes", - "subtitle": "Content panels shown across the hotel and CMS", - "newBox": "New box", - "edit": "Edit", - "delete": "Delete", - "noBoxes": "No writeable boxes yet", - "confirmDelete": "Delete this box?", - "colId": "ID", - "colName": "Name", - "colLocation": "Location", - "colUpdated": "Updated", - "colActions": "Actions", - "form": { - "name": "Name", - "namePlaceholder": "Box name", - "location": "Location", - "locationPlaceholder": "e.g. homepage, sidebar", - "content": "Content", - "contentPlaceholder": "Write the box content…", - "enabled": "Enabled", - "save": "Save box", - "saving": "Saving…", - "deleteBox": "Delete box", - "cancel": "Cancel" - } - }, - "photos": { - "title": "Photo Moderation", - "subtitle": "Recent in-game camera photos", - "delete": "Delete", - "approve": "Approve", - "noPhotos": "No photos to moderate", - "confirmDelete": "Delete this photo permanently?", - "colId": "ID", - "colPreview": "Preview", - "colUser": "User", - "colRoom": "Room", - "colTimestamp": "Timestamp", - "colActions": "Actions", - "photoAlt": "User photo #{id}", - "byUser": "by {username}" - }, - "users": { - "title": "Users", - "subtitle": "Browse, search and manage hotel accounts", - "search": "Search", - "searchPlaceholder": "Search by username, email or ID…", - "searchResults": "{count, plural, one {# result} other {# results}} for \"{query}\"", - "noResults": "No users found", - "colId": "ID", - "colUsername": "Username", - "colEmail": "Email", - "colRank": "Rank", - "colOnline": "Online", - "colRegistered": "Registered", - "colLastOnline": "Last online", - "colActions": "Actions", - "yes": "Yes", - "no": "No", - "edit": "Edit", - "setRank": "Set rank", - "disconnect": "Disconnect", - "alert": "Alert", - "ban": "Ban", - "detail": { - "title": "User: {username}", - "subtitle": "Account details and management", - "overview": "Overview", - "actions": "Actions", - "username": "Username", - "email": "Email", - "motto": "Motto", - "rank": "Rank", - "credits": "Credits", - "duckets": "Duckets", - "diamonds": "Diamonds", - "online": "Online", - "registered": "Registered", - "lastOnline": "Last online", - "ipAddress": "IP address", - "machineId": "Machine ID", - "sendAlert": "Send alert", - "sendMessage": "Send message", - "disconnectUser": "Disconnect user", - "banUser": "Ban user", - "resetPassword": "Reset password", - "deleteUser": "Delete user", - "confirmDelete": "Are you sure you want to delete {username}? This cannot be undone." - }, - "editForm": { - "title": "Edit user: {username}", - "subtitle": "Modify account details", - "username": "Username", - "usernamePlaceholder": "Username", - "email": "Email", - "emailPlaceholder": "user@example.com", - "motto": "Motto", - "mottoPlaceholder": "User motto", - "rank": "Rank", - "credits": "Credits", - "duckets": "Duckets", - "diamonds": "Diamonds", - "save": "Save changes", - "saving": "Saving…", - "cancel": "Cancel" - } - }, - "bans": { - "title": "Bans", - "subtitle": "Manage account, IP and machine bans", - "newBan": "New ban", - "edit": "Edit", - "delete": "Delete", - "noBans": "No bans yet", - "confirmDelete": "Remove this ban?", - "colId": "ID", - "colValue": "Value", - "colType": "Type", - "colReason": "Reason", - "colBannedBy": "Banned by", - "colExpires": "Expires", - "colCreated": "Created", - "colActions": "Actions", - "form": { - "value": "Value", - "valuePlaceholder": "Username, IP, or machine ID", - "type": "Type", - "typeUser": "User", - "typeIp": "IP", - "typeMachine": "Machine", - "reason": "Reason", - "reasonPlaceholder": "Ban reason", - "expiresAt": "Expires at", - "permanent": "Permanent", - "save": "Save ban", - "saving": "Saving…", - "cancel": "Cancel" - } - }, - "ip": { - "title": "IP Management", - "subtitle": "Manage IP whitelist and blacklist", - "whitelist": "Whitelist", - "blacklist": "Blacklist", - "addIp": "Add IP", - "ipAddress": "IP address", - "ipAddressPlaceholder": "e.g. 127.0.0.1", - "reason": "Reason", - "reasonPlaceholder": "Reason for listing", - "add": "Add", - "remove": "Remove", - "confirmRemove": "Remove this IP from the {list}?", - "noWhitelistedIps": "No whitelisted IPs", - "noBlacklistedIps": "No blacklisted IPs", - "colIp": "IP", - "colReason": "Reason", - "colAdded": "Added", - "colActions": "Actions" - }, - "vpn": { - "title": "VPN / Proxy Detection", - "subtitle": "Configure VPN and proxy detection settings", - "enabled": "Enabled", - "apiKey": "API key", - "apiKeyPlaceholder": "Your VPN detection API key", - "apiKeyHint": "Leave empty to disable", - "blockOnDetect": "Block on detection", - "blockOnDetectHint": "Automatically block users detected behind a VPN or proxy", - "save": "Save settings", - "saving": "Saving…", - "settingsSaved": "VPN settings saved successfully" - }, - "tickets": { - "title": "Tickets", - "subtitle": "Support tickets from players", - "noTickets": "No active tickets", - "searchPlaceholder": "Search subject, user, category or ID…", - "presetActive": "Active", - "statusOpen": "Open", - "statusInProgress": "In progress", - "statusWaiting": "Waiting", - "statusClosed": "Closed", - "colTicket": "Ticket", - "colStatus": "Status", - "colPriority": "Priority", - "colAssigned": "Assigned", - "colDate": "Date", - "meta": "by {user} · {count} msg · {category}" - }, - "cfh": { - "title": "Call for Help", - "subtitle": "In-game CFH / support tickets", - "noTickets": "No CFH tickets", - "searchPlaceholder": "Search issue, user or ID…", - "noDescription": "No description", - "roomMeta": "Room #{room} · {when}", - "stateOpen": "Open", - "statePicked": "Picked", - "stateClosed": "Closed", - "colId": "ID", - "colIssue": "Issue", - "colSender": "Sender", - "colReported": "Reported", - "colMod": "Mod", - "colStatus": "Status" - }, - "applications": { - "title": "Staff Applications", - "subtitle": "Pending and reviewed staff applications", - "pending": "Pending", - "approved": "Approved", - "rejected": "Rejected", - "noApplications": "No applications yet", - "colId": "ID", - "colApplicant": "Applicant", - "colPosition": "Position", - "colStatus": "Status", - "colSubmitted": "Submitted", - "colActions": "Actions", - "review": "Review", - "approve": "Approve", - "reject": "Reject", - "confirmApprove": "Approve {username} for {position}?", - "confirmReject": "Reject {username}'s application for {position}?", - "detail": { - "title": "Application by {username}", - "subtitle": "For {position}", - "about": "About the applicant", - "message": "Application message", - "status": "Status", - "submitted": "Submitted", - "noMessage": "No message provided" - } - }, - "teams": { - "title": "Teams", - "subtitle": "Define staff rank names and descriptions", - "addRank": "Add rank", - "editRank": "Edit rank", - "deleteRank": "Delete rank", - "noTeams": "No rank definitions yet", - "confirmDelete": "Delete rank {id} definition?", - "colId": "ID", - "colRank": "Rank", - "colName": "Name", - "colBadge": "Badge", - "colColour": "Colour", - "colActions": "Actions", - "form": { - "rankId": "Rank ID", - "rankIdPlaceholder": "Numeric rank ID", - "name": "Name", - "namePlaceholder": "e.g. Administrator", - "badge": "Badge code", - "badgePlaceholder": "e.g. ADM001", - "colour": "Colour", - "colourPlaceholder": "e.g. #ff0000", - "save": "Save team definition", - "saving": "Saving…", - "cancel": "Cancel" - } - }, - "permissions": { - "title": "Permissions", - "subtitle": "Manage rank-based permissions for the admin panel", - "addPermission": "Add permission", - "editPermission": "Edit permission", - "deletePermission": "Delete permission", - "noPermissions": "No permissions configured yet", - "confirmDelete": "Delete this permission?", - "colId": "ID", - "colRank": "Rank", - "colPermission": "Permission", - "colCreated": "Created", - "colActions": "Actions", - "form": { - "rankId": "Rank ID", - "rankIdPlaceholder": "Minimum rank required", - "permission": "Permission key", - "permissionPlaceholder": "e.g. admin.articles.manage", - "save": "Save permission", - "saving": "Saving…", - "cancel": "Cancel" - } - }, - "catalog": { - "title": "Catalog", - "subtitle": "Browse and manage catalog pages and items", - "pages": "Pages", - "items": "Items", - "addPage": "Add page", - "editPage": "Edit page", - "deletePage": "Delete page", - "addItem": "Add item", - "editItem": "Edit item", - "deleteItem": "Delete item", - "noPages": "No catalog pages yet", - "noItems": "No items in this page", - "confirmDeletePage": "Delete catalog page \"{name}\"?", - "confirmDeleteItem": "Delete this item?", - "colId": "ID", - "colName": "Name", - "colIcon": "Icon", - "colOrder": "Order", - "colItems": "Items", - "colEnabled": "Enabled", - "colActions": "Actions", - "colItemId": "Item ID", - "colItemName": "Item name", - "colCostCredits": "Cost (credits)", - "colCostPoints": "Cost (points)", - "colLimited": "Limited", - "pageForm": { - "name": "Name", - "namePlaceholder": "Page name", - "icon": "Icon ID", - "iconPlaceholder": "Numeric icon ID", - "order": "Order", - "enabled": "Enabled", - "parent": "Parent page", - "parentNone": "None (root)", - "save": "Save page", - "saving": "Saving…", - "cancel": "Cancel" - }, - "itemForm": { - "itemId": "Item ID", - "itemName": "Item name", - "costCredits": "Cost in credits", - "costDuckets": "Cost in duckets", - "costDiamonds": "Cost in diamonds", - "limitedStack": "Limited stack size", - "limitedSold": "Limited sold", - "save": "Save item", - "saving": "Saving…", - "cancel": "Cancel" - } - }, - "shop": { - "title": "Shop", - "subtitle": "Manage packages and orders", - "packages": "Packages", - "orders": "Orders", - "recentOrders": "Recent orders", - "paidOrders": "Paid orders", - "ordersHint": "Latest PayPal transactions", - "newPackage": "+ New package", - "edit": "Edit", - "delete": "Delete", - "viewOrder": "View", - "noPackages": "No shop packages yet", - "noOrders": "No orders yet", - "confirmDelete": "Delete this package?", - "colId": "ID", - "colName": "Name", - "colPrice": "Price", - "colCredits": "Credits", - "colDuckets": "Duckets", - "colDiamonds": "Diamonds", - "colRank": "Rank", - "colPosition": "Position", - "colCurrency": "Currency", - "colType": "Type", - "colSold": "Sold", - "colEnabled": "Enabled", - "colActions": "Actions", - "colOrderId": "Order ID", - "colCustomer": "Customer", - "colPackage": "Package", - "colTransaction": "Transaction", - "colUser": "User", - "colDescription": "Description", - "colAmount": "Amount", - "colStatus": "Status", - "colDate": "Date", - "statusPending": "Pending", - "statusCompleted": "Completed", - "statusRefunded": "Refunded", - "form": { - "name": "Name", - "namePlaceholder": "Package name", - "description": "Description", - "descriptionPlaceholder": "Package description", - "price": "Price", - "currency": "Currency", - "currencyPlaceholder": "EUR, USD, GBP…", - "type": "Type", - "typeCredits": "Credits", - "typeDuckets": "Duckets", - "typeDiamonds": "Diamonds", - "typeBadge": "Badge", - "typeFurni": "Furniture", - "typeRank": "Rank", - "amount": "Amount", - "badgeCode": "Badge code", - "badgeCodePlaceholder": "e.g. VIP001", - "rankId": "Rank ID", - "furniItems": "Furniture items", - "enabled": "Enabled", - "save": "Save package", - "saving": "Saving…", - "cancel": "Cancel" - } - }, - "transactions": { - "title": "Transactions", - "subtitle": "PayPal payment log", - "noTransactions": "No transactions yet", - "totalTransactions": "Total transactions", - "pagePaid": "Paid (this page)", - "pageFailed": "Failed (this page)", - "searchPlaceholder": "Search by user, transaction ID or package…", - "presetPaid": "Paid", - "presetFailed": "Failed", - "colId": "ID", - "colUser": "User", - "colPayer": "Payer", - "colAmount": "Amount", - "colCurrency": "Currency", - "colPackage": "Package", - "colStatus": "Status", - "colTransaction": "Transaction ID", - "colDate": "Date", - "colActions": "Actions", - "statusCompleted": "Completed", - "statusPending": "Pending", - "statusFailed": "Failed", - "statusRefunded": "Refunded", - "detail": { - "title": "Transaction #{id}", - "paypalId": "PayPal ID", - "payerEmail": "Payer email", - "grossAmount": "Gross amount", - "fee": "Fee", - "netAmount": "Net amount" - } - }, - "vouchers": { - "title": "Shop Vouchers", - "subtitle": "Manage redeemable voucher codes", - "vouchers": "Vouchers", - "active": "Active", - "usedUp": "Used up", - "expired": "Expired", - "newVoucher": "+ New voucher", - "edit": "Edit", - "delete": "Delete", - "noVouchers": "No vouchers yet", - "confirmDeleteTitle": "Delete voucher", - "confirmDelete": "Delete voucher \"{code}\"?", - "created": "Voucher created", - "deleted": "Voucher deleted", - "createError": "Could not create voucher", - "deleteError": "Could not delete voucher", - "statusActive": "Active", - "statusUsedUp": "Used up", - "statusExpired": "Expired", - "colId": "ID", - "colCode": "Code", - "colValue": "Value", - "colAmount": "Amount", - "colType": "Type", - "colUses": "Uses / Max", - "colStatus": "Status", - "colExpires": "Expires", - "colCreated": "Created", - "colActions": "Actions", - "form": { - "code": "Code", - "codePlaceholder": "e.g. SUMMER2025", - "value": "Value", - "amount": "Credits amount", - "amountPlaceholder": "e.g. 100", - "type": "Type", - "typeCredits": "Credits", - "typeDuckets": "Duckets", - "typeDiamonds": "Diamonds", - "typeBadge": "Badge", - "typeFurni": "Furniture", - "typeRank": "Rank", - "badgeCode": "Badge code", - "badgeCodePlaceholder": "e.g. VIP001", - "rankId": "Rank ID", - "maxUses": "Max uses", - "maxUsesPlaceholder": "0 = unlimited", - "expiresAt": "Expires at", - "enabled": "Enabled", - "create": "Create voucher", - "save": "Save voucher", - "saving": "Saving…", - "cancel": "Cancel" - } - }, - "subscriptions": { - "title": "Subscriptions", - "subtitle": "Active recurring subscriptions", - "noSubscriptions": "No active subscriptions", - "cancel": "Cancel", - "confirmCancel": "Cancel subscription for {username}?", - "colId": "ID", - "colUser": "User", - "colPackage": "Package", - "colAmount": "Amount", - "colInterval": "Interval", - "colStarted": "Started", - "colNextBilling": "Next billing", - "colStatus": "Status", - "colActions": "Actions", - "statusActive": "Active", - "statusCancelled": "Cancelled", - "statusExpired": "Expired" - }, - "rareValues": { - "title": "Rare Values", - "subtitle": "Manage rare value categories and item prices", - "categories": "Categories", - "items": "Items", - "addCategory": "Add category", - "editCategory": "Edit category", - "deleteCategory": "Delete category", - "noCategories": "No rare value categories yet", - "confirmDeleteCategory": "Delete category \"{name}\" and all its items?", - "colId": "ID", - "colName": "Name", - "colItems": "Items", - "colUpdated": "Updated", - "colActions": "Actions", - "colItemName": "Item name", - "colCredits": "Credits", - "colPoints": "Points", - "colPointType": "Point type", - "categoryForm": { - "name": "Name", - "namePlaceholder": "Category name", - "save": "Save category", - "saving": "Saving…", - "cancel": "Cancel" - }, - "itemForm": { - "itemName": "Item name", - "itemNamePlaceholder": "e.g. Throne", - "credits": "Credits value", - "points": "Points value", - "pointType": "Point type", - "pointTypeDuckets": "Duckets", - "pointTypeDiamonds": "Diamonds", - "save": "Save item", - "saving": "Saving…", - "cancel": "Cancel" - } - }, - "badges": { - "title": "Badges", - "subtitle": "Upload, give and manage badge catalogue", - "upload": "Upload", - "giveBadge": "Give badge", - "catalogue": "Catalogue", - "uploadTitle": "Upload a new badge", - "uploadSubtitle": "Upload a badge image file", - "badgeCode": "Badge code", - "badgeCodePlaceholder": "e.g. VIP001", - "badgeFile": "Badge file", - "badgeFileHint": "PNG or GIF, recommended 40x40", - "uploadButton": "Upload", - "uploading": "Uploading…", - "giveTitle": "Give badge to user", - "giveSubtitle": "Grant a badge to a specific user", - "username": "Username", - "usernamePlaceholder": "Target username", - "giveButton": "Give badge", - "giving": "Giving…", - "catalogueTitle": "Badge catalogue", - "catalogueSubtitle": "All available badges in the hotel", - "noBadges": "No badges in the catalogue", - "search": "Search badges", - "searchPlaceholder": "Search by code or name…", - "colCode": "Code", - "colImage": "Image", - "colName": "Name", - "colDescription": "Description", - "colActions": "Actions" - }, - "achievements": { - "title": "Achievements", - "subtitle": "Read-only list of in-game achievements", - "noAchievements": "No achievements configured", - "colId": "ID", - "colName": "Name", - "colCategory": "Category", - "colLevels": "Levels", - "colReward": "Reward", - "colProgress": "Progress", - "levelLabel": "Level {level}", - "rewardCredits": "{count} credits", - "rewardPoints": "{count} {points}" - }, - "calendar": { - "title": "Calendar campaigns", - "subtitle": "Read-only list of calendar campaigns and events", - "noCampaigns": "No calendar campaigns yet", - "colId": "ID", - "colName": "Name", - "colStart": "Start", - "colEnd": "End", - "colType": "Type", - "colReward": "Reward", - "colActions": "Actions", - "detail": { - "title": "Campaign: {name}", - "subtitle": "Calendar event details", - "days": "Days", - "dayLabel": "Day {day}", - "reward": "Reward", - "noDays": "No days configured for this campaign" - } - }, - "radio": { - "title": "Radio Moderation", - "subtitle": "Latest shouts, DJ applications and on-air schedules (25 most recent of each).", - "moderation": "Moderation", - "shouts": "Shouts", - "applications": "Applications", - "schedules": "Schedules", - "settings": "Settings", - "embed": "Embed", - "ranks": "Ranks", - "history": "History", - "apiKeys": "API Keys", - "points": "Points", - "autoDj": "AutoDJ", - "user": "User", - "message": "Message", - "posted": "Posted", - "realName": "Real Name", - "age": "Age", - "style": "Style", - "applied": "Applied", - "day": "Day", - "start": "Start", - "end": "End", - "show": "Show", - "status": "Status", - "active": "active", - "inactive": "inactive", - "hidden": "hidden", - "activeSchedules": "Active schedules", - "noShouts": "No shouts to moderate", - "noApplications": "No applications submitted.", - "noSchedules": "No schedules configured.", - "deleteShout": "Delete", - "confirmDeleteShout": "Delete this shout?", - "pendingApplications": "Pending applications", - "settingsForm": { - "title": "Radio Settings", - "subtitle": "Edits write to website_settings (radio_* keys) and bust the runtime settings cache. Booleans use 0 / 1.", - "enabled": "Enabled", - "disabled": "Disabled", - "totalKeys": "Total keys", - "configured": "Configured", - "curatedHint": "curated keys with a value", - "customKeys": "Custom keys", - "saveAll": "Save all", - "singleKey": "Add / overwrite a single key", - "keyPlaceholder": "radio_custom_key", - "valuePlaceholder": "value", - "commentPlaceholder": "comment (optional)", - "saveSingle": "Save", - "otherSettings": "Other radio settings", - "dbError": "Could not load settings (database unavailable). Defaults will be created on save." - }, - "embedPage": { - "title": "Radio Embed", - "subtitle": "Copy-ready embed code for the live stream. Read-only — nothing here writes to the database. Configure the stream URL in Radio Settings (radio_stream_url).", - "streamUrl": "Stream URL", - "configured": "Configured", - "missing": "Missing", - "radioName": "Radio name", - "nowPlayingApi": "Now-playing API", - "set": "Set", - "notSet": "Not set", - "noStreamUrl": "No stream URL configured", - "noStreamUrlText": "There is no radio_stream_url set, so there is nothing to embed yet.", - "goToSettings": "Go to Radio Settings", - "livePreview": "Live preview", - "livePreviewText": "This is the bare