Files
EpicNext-Cms/src/messages/en.json
T

3393 lines
117 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"nav": {
"home": "Home",
"community": "Community",
"articles": "Articles",
"photos": "Photos",
"staff": "Staff",
"rankings": "Rankings",
"guilds": "Guilds",
"events": "Events",
"polls": "Polls",
"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",
"mod": "Mod"
},
"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"
},
"emails": {
"verify": {
"subject": "Verify your email · {hotel}",
"heading": "Verify your email",
"body": "Welcome to {hotel}! Confirm this email address to finish setting up your account.",
"button": "Verify email",
"fallback": "If the button doesn't work, paste this link into your browser:"
}
},
"pages": {
"error": {
"code": "Error",
"title": "Something went wrong",
"subtitle": "The hotel hit an unexpected snag.",
"body": "Try again in a moment. If it keeps happening, contact staff with the reference below.",
"tryAgain": "Try again",
"backHome": "Back home",
"reference": "Reference: {digest}"
},
"notFound": {
"code": "404",
"title": "Page not found",
"subtitle": "This room doesn’t exist — or the furniture was moved.",
"body": "Check the link, or head back to the lobby.",
"backHome": "Back home",
"latestNews": "Latest news"
},
"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",
"remove": "Remove",
"success": {
"removed": "Friend removed."
},
"errors": {
"notFound": "That friendship was not found.",
"invalid": "Invalid friend.",
"error": "Something went wrong. Please try again."
}
},
"messages": {
"title": "Messages",
"subtitle": "Friend requests, offline inbox, and messages to friends",
"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",
"decline": "Decline",
"offlineTitle": "Offline messages",
"offlineEmptySubtitle": "Your inbox is empty",
"offlineSubtitle": "{count, plural, one {# message received} other {# messages received}}",
"offlineEmptyState": "You have no offline messages.",
"composeTitle": "Send offline message",
"composeSubtitle": "Delivered in the hotel messenger when your friend is offline",
"composeEmptyFriends": "Add friends in the hotel to send offline messages.",
"composeFriendLabel": "Friend",
"composeFriendPlaceholder": "Choose a friend",
"composeMessageLabel": "Message",
"composeMessagePlaceholder": "Write your message (max 500 characters)…",
"composeSend": "Send message",
"unknownUser": "User #{id}",
"success": {
"accepted": "Friend request accepted.",
"declined": "Friend request declined.",
"sent": "Offline message sent."
},
"errors": {
"notFound": "That friend request was not found.",
"unauthorized": "You can't act on this friend request.",
"invalid": "Invalid friend request.",
"error": "Something went wrong. Please try again.",
"notFriend": "You can only message friends.",
"emptyMessage": "Please write a message.",
"rateLimited": "Too many messages. Wait a moment and try again."
}
},
"sessions": {
"title": "Login activity",
"subtitle": "Recent sign-ins and failed attempts on your account",
"recentTitle": "Recent sign-ins",
"recentEmpty": "No sign-ins recorded yet.",
"colWhen": "When",
"colIp": "IP",
"colDevice": "Device",
"failedTitle": "Failed attempts",
"failedSubtitle": "Wrong password on your username",
"unknownDevice": "Unknown device",
"signOutEverywhereTitle": "Sign out everywhere",
"signOutEverywhereDescription": "Ends all website sessions on every device. You will need to sign in again here too.",
"signOutEverywhereButton": "Sign out all sessions",
"successSignedOutAll": "All sessions have been signed out."
},
"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",
"addFriend": "Add friend",
"alreadyFriends": "You're friends",
"requestPending": "Request pending",
"respondInMessages": "Respond in Messages",
"success": {
"sent": "Friend request sent.",
"guestbook": "Guestbook message posted."
},
"errors": {
"self": "You can't send a friend request to yourself.",
"alreadyFriends": "You're already friends with this user.",
"alreadyPending": "You already sent a friend request to this user.",
"incomingPending": "This user already sent you a request — accept or decline it in Messages.",
"empty": "Please write a message before posting.",
"moderated": "That message was blocked by moderation.",
"ratelimit": "You're posting too fast. Please wait a moment and try again.",
"invalid": "That request was invalid.",
"error": "Something went wrong. Please try again."
}
},
"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 →",
"allUsers": "Community →",
"noArticles": "No articles yet.",
"noPhotos": "No photos yet.",
"noUsers": "No users online",
"latestUsers": "Newest citizens ({count} total)",
"latestArticle": "Latest Article",
"statsOnline": "Online",
"statsCitizens": "Citizens",
"statsRooms": "Rooms",
"statsArticles": "Articles",
"featuresAvatar": "Avatar",
"featuresAvatarDesc": "Create your unique look",
"featuresFurniture": "Furniture",
"featuresFurnitureDesc": "Decorate rooms with items",
"featuresCommunity": "Community",
"featuresCommunityDesc": "Make friends and chat",
"featuresGames": "Games",
"featuresGamesDesc": "Compete and have fun"
},
"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.",
"success": {
"posted": "Comment posted.",
"reaction": "Reaction updated."
},
"errors": {
"empty": "Please write a comment before posting.",
"moderated": "That comment was blocked by moderation.",
"ratelimit": "You're commenting too fast. Please wait a moment and try again.",
"invalid": "Invalid comment.",
"notFound": "That article was not found.",
"error": "Something went wrong. Please try again."
}
},
"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",
"success": {
"posted": "Thread posted."
}
},
"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",
"errors": {
"invalid": "Subject and message are required.",
"notFound": "That guild was not found.",
"ratelimit": "You're posting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"guildForumThread": {
"backToForum": "← Back to forum",
"unnamedGuild": "Unnamed guild",
"noSubject": "(no subject)",
"inGuildForum": "{guild} forum",
"pinned": "Pinned",
"locked": "Locked",
"postsTitle": "Posts",
"postsSubtitle": "{count, plural, one {# post} other {# posts}}",
"postsEmpty": "No posts in this thread.",
"userNumber": "User #{id}",
"replyTitle": "Reply",
"replySubtitle": "Add your message to this thread",
"replyPlaceholder": "Write your reply…",
"replySubmit": "Post reply",
"lockedHint": "This thread is locked — new replies are disabled.",
"loginToReply": "Sign in to reply.",
"loginLink": "Log in",
"success": {
"replied": "Reply posted."
},
"errors": {
"invalid": "Please enter a message.",
"notFound": "That thread was not found.",
"locked": "This thread is locked.",
"ratelimit": "You're posting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"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",
"loginToBuy": "Log in to buy",
"creditsHint": "Packages are paid with in-game credits. Top up first if you need more.",
"topUpLink": "Top up credits",
"priceCredits": "{credits} credits (≈ {usd})",
"priceCreditsShort": "{credits} cr",
"success": {
"bought": "Package purchased — rewards have been added to your account.",
"boughtNamed": "You purchased \"{name}\" — rewards have been added to your account."
},
"errors": {
"invalid": "That package is no longer available.",
"credits": "You don't have enough credits for this package.",
"ratelimit": "You're purchasing too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"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 <strong>{amount}</strong> 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",
"banAppealLabel": "This is a ban appeal",
"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",
"success": {
"created": "Ticket submitted."
},
"errors": {
"invalid": "Please fill in a subject and description.",
"moderated": "That ticket was blocked by moderation.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"helpTicketDetail": {
"backToList": "← Your tickets",
"ticketId": "Ticket #{id}",
"statusOpen": "Open",
"statusClosed": "Closed",
"messagesTitle": "Conversation",
"messagesSubtitle": "{count, plural, one {# message} other {# messages}}",
"you": "You",
"userNumber": "User #{id}",
"replyTitle": "Reply",
"replySubtitle": "Send a follow-up to staff",
"replyPlaceholder": "Write your message…",
"replySubmit": "Send reply",
"closeTitle": "Close ticket",
"closeSubtitle": "Mark this request as resolved when you no longer need help",
"closeSubmit": "Close ticket",
"closedHint": "This ticket is closed. Open a new ticket if you need more help.",
"success": {
"replied": "Reply sent.",
"closed": "Ticket closed."
},
"errors": {
"invalid": "Please enter a message.",
"notFound": "That ticket was not found.",
"closedTicket": "This ticket is closed.",
"moderated": "That message was blocked by moderation.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"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}",
"success": {
"submitted": "Application submitted — staff will review it soon."
},
"errors": {
"empty": "Please write at least 10 characters about yourself.",
"invalid": "Invalid application.",
"duplicate": "You have already applied for this position.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"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}",
"success": {
"submitted": "Application submitted — staff will review it soon."
},
"errors": {
"empty": "Please write at least 10 characters about yourself.",
"invalid": "Invalid application.",
"duplicate": "You have already applied for this team.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"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!",
"success": {
"posted": "Shout posted."
},
"errors": {
"invalid": "Please write a message before shouting.",
"moderated": "That shout was blocked by moderation.",
"ratelimit": "You're shouting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"events": {
"title": "Events",
"subtitle": "Upcoming and recent hotel events you can join",
"empty": "No events yet.",
"back": "← Events",
"when": "When",
"status": "Status",
"statusPublished": "Open",
"statusCompleted": "Completed",
"registrations": "Registrations",
"registered": "{count} registered",
"spots": "{count} / {max} spots",
"registerTitle": "Register",
"registerSubtitle": "Save your spot for this event",
"register": "Register for event",
"registering": "Registering…",
"registerSuccess": "You are registered!",
"registerError": "Could not register for this event.",
"loginToRegister": "Log in to register for this event.",
"alreadyRegistered": "You are already registered.",
"eventEnded": "This event has ended.",
"eventFull": "This event is full.",
"cannotRegister": "Registration is not available.",
"prizesTitle": "Prizes",
"winnersTitle": "Winners",
"unknownUser": "User #{id}"
},
"polls": {
"title": "Polls",
"subtitle": "Share your opinion in community polls",
"empty": "No polls yet.",
"back": "← Polls",
"statusActive": "Open",
"statusClosed": "Closed",
"questionsCount": "{count} questions",
"ends": "Ends {date}",
"voteTitle": "Cast your vote",
"voteSubtitle": "Answer each question below",
"submitVote": "Submit vote",
"voting": "Submitting…",
"voteSuccess": "Thanks for voting!",
"voteError": "Could not submit your vote.",
"loginToVote": "Log in to vote in this poll.",
"alreadyVoted": "You have already voted.",
"pollClosed": "This poll is closed.",
"cannotVote": "Voting is not available.",
"textPlaceholder": "Your answer…",
"resultsTitle": "Results",
"voteCount": "{count} ({pct}%)",
"totalVotes": "{count} total votes",
"textResponses": "{count} free-text responses"
},
"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",
"success": {
"posted": "Request submitted."
},
"errors": {
"empty": "Please enter a song title or artist.",
"invalid": "Invalid request.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"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",
"success": {
"submitted": "Application submitted — we will get back to you soon."
},
"errors": {
"invalid": "Please fill in all required fields.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"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"
},
"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"
},
"login": {
"title": "Sign in",
"subtitle": "Welcome back — log in to enter the hotel.",
"subtitle2fa": "Enter the 6-digit code from your authenticator.",
"welcomeBack": "Welcome back",
"welcomeBackSub": "Sign in to continue to {hotelName}",
"usernamePlaceholder": "Username",
"passwordPlaceholder": "Password",
"codePlaceholder": "2FA code",
"pleaseWait": "Please wait…",
"verify": "Verify",
"signIn": "Sign in",
"or": "or",
"noAccount": "No account?",
"createOne": "Create one",
"forgotPassword": "Forgot password?",
"errorInvalidCredentials": "Invalid username or password",
"errorInvalid2fa": "Invalid 2FA code",
"errorUnverified": "Please verify your email before signing in.",
"errorCaptcha": "Captcha verification failed. Please try again."
},
"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 8 chars)",
"confirmPasswordPlaceholder": "Repeat password",
"selectOutfit": "Select your outfit",
"termsAccept": "I am 18+ and accept the {hotel} terms & rules.",
"accepted": "Accepted & agreed",
"showPassword": "Show",
"hidePassword": "Hide",
"accountDetails": "Account details",
"credentials": "Credentials & security",
"createAccount": "Create account",
"creatingAccount": "Creating account...",
"redirecting": "Redirecting to your account...",
"alreadyHaveAccount": "Already have an account? Login!",
"alreadyHaveAccountPre": "Already have an account?",
"alreadyHaveAccountLink": "Sign in",
"register": "Register",
"whoIsOnline": "Who's online",
"usersOnline": "{count} online",
"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",
"errorCaptcha": "Captcha verification failed. Please try again."
},
"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",
"helpTickets": "Help-center tickets",
"events": "Events",
"polls": "Polls",
"guilds": "Guilds",
"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",
"catalogMaintenance": "Catalog maintenance",
"itemsBase": "Items base",
"shop": "Shop",
"marketplace": "Marketplace",
"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",
"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",
"adminMenu": "Admin menu",
"backToSite": "Back to site",
"expandAll": "Expand all",
"collapseAll": "Collapse all",
"searchMenu": "Search menu…",
"clearMenuSearch": "Clear menu search",
"noMenuResults": "No matching pages.",
"housekeeping": "Permission archive",
"hotelManagementPanel": "Hotel management panel",
"rankLabel": "Rank {rank}",
"community": "Community",
"monitoring": "Monitoring",
"staffAccess": "Ranks & permissions",
"multiAccounts": "Multi-accounts",
"chatLog": "Chat log",
"commandLog": "Command log",
"tradeLog": "Trade log",
"tools": "Tools",
"studio": "Studio",
"search": {
"placeholder": "Search…",
"noResults": "No results found",
"users": "Users",
"articles": "Articles",
"rooms": "Rooms",
"guilds": "Guilds",
"shop": "Shop",
"hint": "Start typing to search across users, articles, rooms, guilds and shop items"
}
},
"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",
"status": "Status",
"statusDraft": "Draft",
"statusScheduled": "Scheduled",
"statusPublished": "Published",
"publishAt": "Publish at",
"publishedAt": "Published at"
}
},
"events": {
"newEvent": "+ New event",
"createTitle": "Create event",
"createSubtitle": "Schedule a new hotel event",
"searchPlaceholder": "Search events…",
"colId": "ID",
"colTitle": "Title",
"colType": "Type",
"colStarts": "Starts",
"colStatus": "Status",
"colActions": "Actions",
"statusPublished": "Published",
"statusDraft": "Draft",
"statusCancelled": "Cancelled",
"statusCompleted": "Completed",
"statRegistrations": "Registrations",
"statPrizes": "Prizes",
"statWinners": "Winners",
"statTime": "Time",
"maxPlayers": "Max: {count}",
"timeUpcoming": "Upcoming",
"timePast": "Past",
"endsAt": "Ends: {date}",
"userFallback": "User #{id}",
"registrationsTitle": "Registrations ({count})",
"noRegistrations": "No registrations yet.",
"noPrizes": "No prizes configured yet.",
"noWinners": "No winners yet.",
"addPrize": "Add prize",
"addWinner": "Add winner",
"formEditTitle": "Edit event",
"formDetailsTitle": "Event details",
"formTitle": "Title",
"formEventType": "Event type",
"formSelectType": "Select type",
"formDescription": "Description",
"formStartsAt": "Starts at",
"formEndsAt": "Ends at",
"formSelectStart": "Select start date",
"formSelectEnd": "Select end date",
"formMaxPlayers": "Max players",
"formUnlimited": "Unlimited",
"formRoomId": "Room ID",
"formOptional": "Optional",
"formImageUrl": "Image URL",
"formSaving": "Saving…",
"formUpdate": "Update event",
"formCreate": "Create event",
"toastUpdated": "Event updated!",
"toastCreated": "Event created!"
},
"polls": {
"newPoll": "+ New poll",
"createTitle": "Create poll",
"createSubtitle": "Create a new community poll or survey",
"searchPlaceholder": "Search polls…",
"colId": "ID",
"colTitle": "Title",
"colStatus": "Status",
"colType": "Type",
"colCreated": "Created",
"colActions": "Actions",
"statusActive": "Active",
"statusDraft": "Draft",
"statusClosed": "Closed",
"typeMultiple": "Multiple choice",
"typeSingle": "Single choice",
"statVoters": "Total voters",
"statQuestions": "Questions",
"statVotes": "Total votes",
"questionsTitle": "Questions ({count})",
"addQuestion": "Add question",
"noQuestions": "No questions yet. Add your first question above.",
"resultsTitle": "Results",
"formEditTitle": "Edit poll",
"formDetailsTitle": "Poll details",
"formTitle": "Title",
"formDescription": "Description",
"formStartsAt": "Starts at",
"formEndsAt": "Ends at",
"formSelectStart": "Select start date",
"formSelectEnd": "Select end date",
"formShowResults": "Show results to voters",
"formAllowMultiple": "Allow multiple answers",
"formSaving": "Saving…",
"formUpdate": "Update poll",
"formCreate": "Create poll",
"toastUpdated": "Poll updated!",
"toastCreated": "Poll created!"
},
"multiAccounts": {
"minAccounts": "Min accounts per cluster",
"resultLimit": "Result limit",
"refresh": "Refresh",
"noClusters": "No clusters found at the current thresholds."
},
"devops": {
"noEmulatorErrors": "No emulator errors found",
"noRecentErrors": "No recent errors"
},
"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?",
"deleteSuccess": "Advertisement deleted!",
"deleteError": "Failed to delete advertisement.",
"adsCount": "Total ads",
"latest": "Latest",
"mostRecentAd": "Most recent ad",
"allAds": "All advertisements",
"colPreview": "Preview",
"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",
"purgeHint": "Delete removes the database row and best-effort deletes a matching file under /public. External CDN URLs are not purged.",
"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}",
"photosShown": "Shown",
"rooms": "Rooms",
"users": "Users",
"distinctRooms": "Distinct rooms on this page",
"distinctPhotographers": "Distinct photographers on this page",
"total": "Total photos",
"recentPhotos": "Recent photos",
"pageOf": "Page {page} of {last} · {total} total"
},
"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",
"tabInfo": "Account Info",
"tabBadges": "Badges ({count})",
"tabRooms": "Rooms ({count})",
"tabSanctions": "Sanctions ({count})",
"tabActivity": "Activity",
"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": "[email protected]",
"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": "CMS support desk",
"subtitle": "Internal CMS tickets (assignee, priority, staff workflow). Not the same as help-center tickets from /help.",
"queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab. Use Inbox for both queues.",
"queueOtherCta": "Open help-center tickets",
"queueCounts": "Open here: {here} · Help center: {other}",
"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}"
},
"ticketInbox": {
"hint": "Merged view of open CMS desk and help-center tickets. Detail pages and replies stay on each product’s own route.",
"noTickets": "No open tickets in either queue",
"searchPlaceholder": "Search subject, title, user or ID…",
"statCmsOpen": "CMS open",
"statHelpOpen": "Help open",
"statTotal": "Open total",
"colTicket": "Ticket",
"colStatus": "Status",
"colType": "Queue",
"colUpdated": "Updated",
"meta": "by {user}",
"typeAll": "All queues",
"typeCms": "CMS desk",
"typeHelp": "Help center",
"statusOpen": "Open",
"statusClosed": "Closed",
"statusAll": "All statuses",
"presetOpen": "Open only",
"modNavLabel": "Queues:",
"modNavInbox": "Inbox",
"modNavDesk": "CMS desk",
"modNavHelp": "Help center"
},
"helpTickets": {
"title": "Help center tickets",
"subtitle": "Tickets players open at /help/tickets. Separate from the CMS support desk.",
"queueHint": "This queue is the public help center. Use Inbox for both queues, or Support desk for CMS-only.",
"queueOtherCta": "Open unified inbox",
"queueCounts": "Open here: {here} · Support desk: {other}",
"noTickets": "No open help center tickets",
"searchPlaceholder": "Search title, user or ID…",
"presetOpen": "Open",
"presetAll": "All",
"statusOpen": "Open",
"statusClosed": "Closed",
"colTicket": "Ticket",
"colStatus": "Status",
"colUser": "User",
"colCreated": "Created",
"colUpdated": "Updated",
"meta": "by {user} · {count} replies",
"backToList": "Back to list",
"threadTitle": "Conversation",
"staffBadge": "Staff",
"replyPlaceholder": "Reply as staff…",
"replySubmit": "Send reply",
"replyHint": "Ctrl+Enter to send.",
"closeSubmit": "Close ticket",
"reopenSubmit": "Reopen ticket",
"liftBanSubmit": "Lift requester ban & close",
"requesterBanned": "Requester banned",
"closedHint": "This ticket is closed.",
"actionsTitle": "Actions",
"requesterTitle": "Requester",
"detailsTitle": "Details",
"rankLabel": "Rank {rank}",
"messageCountLabel": "Messages",
"success": {
"replied": "Reply sent.",
"closed": "Ticket closed.",
"reopened": "Ticket reopened.",
"banLifted": "Ban lifted and ticket closed."
}
},
"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": "This is the live access control for admin and mod panels",
"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"
}
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
},
"items": {
"title": "Items base",
"subtitle": "Browse and edit furni definitions in items_base (standalone from catalog pages)",
"total": "{count, plural, one {# item} other {# items}}",
"editTitle": "Edit {name}",
"editSubtitle": "items_base #{id}",
"back": "Back to list",
"save": "Save",
"saved": "Item saved",
"untitled": "Untitled item",
"sectionIdentity": "Identity",
"sectionDims": "Dimensions & interaction",
"sectionFlags": "Allow flags",
"sectionExtra": "Extra",
"publicName": "Public name",
"itemName": "Classname",
"type": "Type",
"spriteId": "Sprite ID",
"width": "Width",
"length": "Length",
"stackHeight": "Stack height",
"interactionType": "Interaction",
"interactionModes": "Modes",
"vendingIds": "Vending IDs",
"multiheight": "Multiheight",
"customparams": "Custom params"
},
"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 (most recent 25)",
"pageOf": "Page {page} of {lastPage}",
"packagesTotal": "{count} packages",
"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"
}
},
"marketplace": {
"title": "Marketplace",
"subtitle": "Hotel marketplace listings",
"activeListings": "Active listings",
"soldListings": "Sold",
"filterActive": "Active",
"filterSold": "Sold",
"empty": "No marketplace listings to show.",
"loadError": "Could not load marketplace data (database unavailable).",
"cancel": "Cancel listing",
"colId": "ID",
"colItem": "Item ID",
"colSeller": "Seller",
"colPrice": "Price",
"colListed": "Listed",
"colSold": "Sold at",
"colActions": "Actions"
},
"guilds": {
"title": "Guilds",
"subtitle": "Hotel groups and membership",
"totalGuilds": "Guilds",
"listHeading": "Guilds ({count})",
"searchPlaceholder": "Search by name, description or ID…",
"search": "Search",
"empty": "No guilds found.",
"loadError": "Could not load guilds (database unavailable).",
"colId": "ID",
"colBadge": "Badge",
"colName": "Name",
"colOwner": "Owner",
"colMembers": "Members",
"colCreated": "Created",
"colThreads": "Forum threads",
"colRoom": "Room",
"colUser": "User",
"colLevel": "Level",
"colJoined": "Joined",
"members": "Members",
"noMembers": "No members.",
"back": "Back to guilds",
"viewPublic": "Open public page",
"disband": "Disband guild",
"edit": "Edit guild",
"save": "Save",
"saving": "Saving…",
"updated": "Guild updated",
"updateError": "Could not update guild",
"formName": "Name",
"formDescription": "Description",
"formState": "State",
"formForum": "Forum",
"formReadForum": "Read forum",
"formPostMessages": "Post messages",
"formPostThreads": "Post threads",
"formModForum": "Moderate forum"
},
"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",
"updated": "Voucher updated",
"createError": "Could not create voucher",
"deleteError": "Could not delete voucher",
"updateError": "Could not update 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",
"editValue": "Edit value",
"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 <audio> player as visitors will see it. Press play to confirm the stream is reachable.",
"source": "Source",
"audioSnippet": "Audio player snippet",
"audioSnippetDesc": "Drop-in HTML5 audio player pointed straight at the stream. Works anywhere plain HTML is allowed.",
"iframeSnippet": "Iframe wrapper snippet",
"iframeSnippetDesc": "Embeds the site’s own radio player page in an iframe — keeps your styling and now-playing info. Adjust width/height to taste.",
"audioUnsupported": "Your browser does not support the audio element."
},
"banners": {
"title": "Banners",
"heading": "Radio Banners",
"description": "Promotional banners shown on the radio page, ordered by sort order.",
"addBanner": "Add banner",
"createBanner": "Create banner",
"deleteBanner": "Delete banner",
"noBanners": "No banners yet — add one above.",
"existing": "Existing banners ({count})",
"save": "Save",
"delete": "Delete",
"byUser": "by user {id}",
"active": "active",
"hidden": "hidden",
"bannerAlt": "Radio banner",
"statusActive": "Active",
"statusHidden": "Hidden",
"dbError": "Could not load banners (database unavailable).",
"form": {
"imagePath": "Image path / URL",
"imagePathPlaceholder": "/storage/radio/banner.png",
"title": "Title",
"description": "Description",
"sortOrder": "Sort order",
"active": "Active"
}
},
"ranksForm": {
"title": "Radio Ranks",
"subtitle": "DJ / staff ranks assignable on radio applications.",
"dbError": "Could not load ranks (database unavailable).",
"active": "Active",
"addRank": "Add rank",
"name": "Name",
"badgeCode": "Badge code",
"description": "Description",
"createRank": "Create rank",
"existing": "Existing ranks ({count})",
"noRanks": "No ranks yet — add one above.",
"activeLabel": "active",
"inactiveLabel": "inactive",
"save": "Save",
"deleteRank": "Delete rank #{id}"
},
"historyPage": {
"title": "Radio Play History",
"subtitle": "Past DJ shows and airtime (radio_history), most recent first. Read-only log of who was on air, when, and how many listeners tuned in.",
"dbError": "Could not load radio history (database unavailable).",
"showsLogged": "Shows logged",
"onAirNow": "On air now",
"uniqueDjs": "Unique DJs",
"peakListeners": "Peak listeners",
"empty": "No radio history recorded yet.",
"showLog": "Show log ({count})",
"colDj": "DJ",
"colShow": "Show",
"colStarted": "Started",
"colEnded": "Ended",
"colAirtime": "Airtime",
"colListeners": "Listeners",
"colNotes": "Notes",
"onAir": "on air"
},
"apiKeysForm": {
"title": "Radio API Keys",
"subtitle": "API keys for external radio integrations (radio_api_keys). Keys are generated server-side and shown masked — copy the full value from the database when first issued.",
"dbError": "Could not load API keys (database unavailable).",
"totalKeys": "Total keys",
"active": "Active",
"inactive": "Inactive",
"generateKey": "Generate key",
"generateHint": "The secret key is generated automatically with cryptographic randomness — you do not enter it.",
"name": "Name",
"namePlaceholder": "AzureCast bridge",
"rateLimit": "Rate limit (requests/min)",
"allowedIps": "Allowed IPs (optional)",
"allowedIpsPlaceholder": "comma-separated, blank = any",
"generate": "Generate key",
"existingKeys": "Existing keys ({count})",
"noKeys": "No API keys yet — generate one above.",
"colName": "Name",
"colKey": "Key",
"colAllowedIps": "Allowed IPs",
"colRateLimit": "Rate limit",
"colLastUsed": "Last used",
"colExpires": "Expires",
"colStatus": "Status",
"colActions": "Actions",
"maskedHint": "Only the first 8 characters are shown",
"any": "any",
"activeLabel": "active",
"inactiveLabel": "inactive",
"deactivate": "Deactivate",
"activate": "Activate",
"delete": "Delete"
},
"pointsForm": {
"title": "Radio Listener Points",
"subtitle": "Reward listeners with currency for time spent on the radio. Edits write to website_settings (radio_points_* keys) and bust the runtime settings cache. Booleans use 0 / 1.",
"points": "Points",
"enabled": "Enabled",
"disabled": "Disabled",
"perMinute": "Per minute",
"paidIn": "paid in {currency}",
"maxPerDay": "Max / day",
"unlimited": "Unlimited",
"minListeners": "Min listeners",
"settings": "Settings",
"pointsEnabled": "Points enabled",
"pointsEnabledHint": "Master switch for awarding listener points.",
"currency": "Currency",
"currencyHint": "Which wallet the points are paid into.",
"pointsPerMinute": "Points per minute",
"pointsPerMinuteHint": "Amount awarded for each full minute of listening.",
"maxPerDayHint": "Daily cap per user. Use 0 for unlimited.",
"minListenersHint": "Points are only awarded when at least this many people are tuned in.",
"save": "Save points settings"
},
"autoDjForm": {
"title": "Radio AutoDJ",
"subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.",
"dbError": "Could not load the AutoDJ playlist (database unavailable).",
"tracks": "Tracks",
"active": "Active",
"inactive": "Inactive",
"addTrack": "Add track",
"trackTitle": "Title",
"titlePlaceholder": "Track title",
"artist": "Artist",
"album": "Album",
"artworkUrl": "Artwork URL",
"artworkUrlPlaceholder": "https://…/cover.png",
"duration": "Duration (seconds)",
"durationPlaceholder": "e.g. 215",
"sortOrder": "Sort order",
"playlist": "Playlist ({count})",
"noTracks": "No AutoDJ tracks yet — add one above.",
"colOrder": "Order",
"colTitle": "Title",
"colArtist": "Artist",
"colAlbum": "Album",
"colDuration": "Duration",
"colPlays": "Plays",
"colLastPlayed": "Last played",
"colStatus": "Status",
"colActions": "Actions",
"activeLabel": "active",
"inactiveLabel": "inactive",
"deactivate": "Deactivate",
"activate": "Activate",
"delete": "Delete"
},
"monitoring": {
"title": "Radio Monitoring",
"subtitle": "Read-only live probe of the configured radio endpoints (radio_now_playing_api_url, radio_listeners_api_url). Each request fails soft with a {timeout}s timeout — no data is written. Configure URLs under Settings.",
"stream": "Stream",
"online": "Online",
"offline": "Offline",
"notConfigured": "Not configured",
"nowPlaying": "Now playing",
"nowPlayingApi": "Now-playing API",
"listenersApi": "Listeners API",
"listeners": "Listeners",
"currentSong": "Current song",
"bitrate": "Bitrate",
"status": "Status",
"noNowPlayingHint": "no now-playing API set",
"noListenersHint": "no listeners API set",
"endpointDiagnostics": "Endpoint diagnostics",
"diagnosticsLegend": "<span class=\"inline-block text-[0.72rem] font-bold px-2 py-0.5 rounded-full bg-green-600/20 text-[var(--color-text)]\">OK</span> reachable · <span class=\"inline-block text-[0.72rem] font-bold px-2 py-0.5 rounded-full bg-[var(--color-primary)]/18 text-[var(--color-text)]\">WARN</span> not configured · <span class=\"inline-block text-[0.72rem] font-bold px-2 py-0.5 rounded-full bg-red-500/22 text-[var(--color-text)]\">ERROR</span> fetch failed / timed out.",
"streamUrl": "Stream URL",
"unreachable": "unreachable",
"refresh": "Refresh"
},
"moderationPage": {
"title": "DJ Moderation",
"subtitle": "Review and remove radio shouts (50 most recent).",
"recentShouts": "Recent Shouts ({count})"
}
},
"commandocentrum": {
"title": "Commandocentrum",
"subtitle": "Diagnostics, RCON controls and user management",
"diagnostics": "Diagnostics",
"rcon": "RCON",
"userActions": "User actions",
"diagnosticsTitle": "Emulator diagnostics",
"memoryUsage": "Memory usage",
"uptime": "Uptime",
"onlineUsers": "Online users",
"roomsLoaded": "Rooms loaded",
"refresh": "Refresh",
"rconTitle": "RCON commands",
"rconPlaceholder": "Enter RCON command…",
"rconSend": "Send",
"rconSending": "Sending…",
"rconResponse": "Response",
"userActionsTitle": "User actions",
"username": "Username",
"usernamePlaceholder": "Target username",
"action": "Action",
"execute": "Execute",
"actions": {
"disconnect": "Disconnect",
"alert": "Send alert",
"giveCredits": "Give credits",
"giveBadge": "Give badge",
"givePoints": "Give points",
"ban": "Ban",
"kick": "Kick"
},
"messagePlaceholder": "Message (for alerts)…",
"amountPlaceholder": "Amount…",
"badgePlaceholder": "Badge code…",
"commandCategories": "Command categories",
"groups": {
"hotel": "Hotel",
"players": "Players",
"rewards": "Currency and gifts",
"advanced": "Advanced"
},
"executing": "Executing command…",
"chooseCommand": "Choose an operation. Values entered are preserved when switching categories.",
"refreshStatus": "Refresh status",
"checkedAt": "Checked at {time}",
"serviceAttention": "Some services need attention",
"servicesHealthy": "Core services are responding",
"cmsErrors": "CMS error center",
"readFailed": "Data could not be loaded",
"emulatorConfig": "Emulator connection",
"emailConfig": "Email delivery",
"configured": "Configured"
},
"emulator": {
"title": "Emulator Config",
"subtitle": "View and edit emulator settings and locale texts",
"settings": "Settings",
"texts": "Texts",
"search": "Search",
"searchPlaceholder": "Search keys…",
"noSettings": "No settings found",
"noTexts": "No texts found",
"edit": "Edit",
"save": "Save",
"saving": "Saving…",
"cancel": "Cancel",
"colKey": "Key",
"colValue": "Value",
"colType": "Type",
"colActions": "Actions",
"editDialog": {
"title": "Edit: {key}",
"value": "Value",
"valuePlaceholder": "Enter value…",
"save": "Save changes",
"cancel": "Cancel"
}
},
"alerts": {
"title": "Alerts",
"subtitle": "Send hotel-wide alerts and view recent ops alerts",
"sendAlert": "Send hotel alert",
"recentAlerts": "Recent alerts ({count})",
"noAlerts": "No recent alerts",
"noRecentAlerts": "No recent alerts",
"alertsShown": "Shown",
"critical": "Critical",
"warnings": "Warnings",
"unread": "Unread",
"markAllRead": "Mark all read",
"form": {
"title": "Alert title",
"titlePlaceholder": "e.g. Server maintenance in 10 minutes",
"message": "Alert message",
"messagePlaceholder": "Write the alert message…",
"description": "Broadcasts via RCON <code>hotelalert</code> to online users.",
"type": "Type",
"typeHotel": "Hotel-wide alert",
"typeStaff": "Staff only",
"urgent": "Urgent",
"send": "Send alert",
"sending": "Sending…"
},
"colId": "ID",
"colTitle": "Title",
"colSentBy": "Sent by",
"colType": "Type",
"colDate": "Date",
"colWhen": "When",
"colSeverity": "Severity",
"colMessage": "Message",
"colActions": "Actions"
},
"logs": {
"title": "Staff Activities",
"subtitle": "Audit trail of staff actions in the admin panel",
"noLogs": "No staff activity logged yet",
"noResults": "No matching activities",
"colId": "ID",
"colUser": "User",
"colStaff": "Staff",
"colAction": "Action",
"colTarget": "Target",
"colDescription": "Description",
"colIp": "IP",
"colWhen": "When",
"colTimestamp": "Timestamp",
"filterByUser": "Filter by user…",
"filterByAction": "Filter by action…",
"clearFilters": "Clear filters",
"searchPlaceholder": "Search action, description or IP…",
"totalActivities": "Total activities",
"onThisPage": "On this page",
"recent": "Last minute",
"authorizationErrors": "Authorization errors",
"authorizationOnly": "Auth errors only",
"allActivities": "All activities",
"staffId": "Staff ID",
"actionType": "Action type",
"filter": "Filter",
"activities": "{count} activities",
"staffWithId": "#{id} {name}",
"userPrefix": "user",
"pagination": "Page {page} of {pages} · {total} total",
"next": "Next",
"prev": "Previous",
"unknownUser": "unknown",
"emptyValue": "-",
"colTime": "Time",
"audit": {
"colTargetId": "Target ID",
"colDetails": "Details",
"colDate": "Date",
"searchPlaceholder": "Search by action or target…",
"changesCount": "{count} changes",
"notAvailable": "N/A"
},
"chat": {
"colMessage": "Message",
"colRoomId": "Room ID",
"searchPlaceholder": "Search by username or message…"
},
"commands": {
"colCommand": "Command",
"colParams": "Params",
"searchPlaceholder": "Search by username, command, or params…"
},
"trades": {
"colUserOne": "User one",
"colUserTwo": "User two",
"colStatus": "Status",
"statusUnknown": "unknown",
"searchPlaceholder": "Search by username…"
}
},
"hubs": {
"newsMedia": "News & media",
"newsMediaSubtitle": "Articles, photos, banners, ads and media library",
"siteContent": "Site content",
"siteContentSubtitle": "Navigation, help center, boxes, tags and prefixes",
"engagement": "Engagement",
"engagementSubtitle": "Events, polls and support tickets",
"users": "Users",
"usersSubtitle": "Directory, online players, applications and teams",
"access": "Access & security",
"accessSubtitle": "Bans, IP, VPN, permissions and word filter",
"moderation": "Moderation",
"moderationSubtitle": "Reports, actions and moderation team",
"catalog": "Catalog & rares",
"catalogSubtitle": "Catalog, rares, badges, achievements and sounds",
"shop": "Shop & payments",
"shopSubtitle": "Shop, transactions, vouchers, subscriptions and calendar",
"radio": "Radio",
"radioSubtitle": "Stream, DJ tools, embed and monitoring",
"settings": "Settings",
"settingsSubtitle": "CMS config, theme, maintenance and related tools",
"tools": "Tools",
"toolsSubtitle": "RCON, rooms, import and translations",
"observability": "Observability",
"observabilitySubtitle": "Logs, analytics, DevOps and hotel alerts",
"tabs": {
"articles": "Articles",
"photos": "Photos",
"banners": "Banners",
"ads": "Ads",
"media": "Media",
"navigator": "Navigator",
"help": "Help",
"boxes": "Boxes",
"tags": "Tags",
"prefixes": "Prefixes",
"events": "Events",
"eventTypes": "Event types",
"polls": "Polls",
"tickets": "Support desk",
"ticketInbox": "Inbox",
"helpTickets": "Help center",
"templates": "Templates",
"directory": "Directory",
"multiAccounts": "Multi-accounts",
"online": "Online",
"applications": "Applications",
"teams": "Teams",
"bans": "Bans",
"ip": "IP",
"vpn": "VPN",
"permissions": "Permissions",
"wordFilter": "Word filter",
"overview": "Overview",
"actions": "Actions",
"cfh": "CFH",
"team": "Team",
"catalogTab": "Catalog",
"rares": "Rares",
"badges": "Badges",
"achievements": "Achievements",
"sounds": "Sounds",
"shopTab": "Shop",
"transactions": "Transactions",
"vouchers": "Vouchers",
"subscriptions": "Subscriptions",
"calendar": "Calendar",
"history": "History",
"moderationTab": "Moderation",
"monitoring": "Monitoring",
"settingsTab": "Settings",
"embed": "Embed",
"apiKeys": "API keys",
"points": "Points",
"ranks": "Ranks",
"autoDj": "Auto DJ",
"cms": "CMS",
"theme": "Theme",
"themeBuilder": "Theme Builder",
"maintenance": "Maintenance",
"favicon": "Favicon",
"emulator": "Emulator",
"email": "Email",
"housekeeping": "Permission archive",
"commando": "Commando",
"rooms": "Rooms",
"import": "Import",
"studio": "Studio",
"importOverview": "Overview",
"importBadges": "Badges",
"importFurni": "Furni",
"importUpload": "Upload",
"importClothing": "Clothing",
"importEffects": "Effects",
"importPets": "Pets",
"importClone": "Clone",
"importSync": "Sync",
"importRepairIcons": "Repair icons",
"importAudit": "Audit",
"translations": "Translations",
"logs": "Logs",
"audit": "Audit",
"chat": "Chat",
"commands": "Commands",
"trades": "Trades",
"analytics": "Analytics",
"activity": "Activity",
"economy": "Economy",
"devops": "DevOps",
"errors": "Errors",
"alerts": "Alerts",
"toolsGroup": "Tools"
},
"events": "Events",
"eventsSubtitle": "Hotel events and event types",
"tickets": "Tickets",
"ticketsSubtitle": "Unified inbox over CMS support desk and help-center queues",
"staffAccess": "Ranks & permissions",
"staffAccessSubtitle": "Staff ranks and live access. Archive is compare/export only.",
"analytics": "Analytics",
"analyticsSubtitle": "Hotel activity, retention and economy",
"devops": "DevOps",
"devopsSubtitle": "Service health and emulator errors",
"import": "Import",
"importSubtitle": "Furni, badges, clothing and asset tools"
},
"wordfilter": {
"title": "Word Filter",
"subtitle": "Manage filtered words and phrases in the hotel",
"filteredWords": "Filtered words",
"addWord": "Add word",
"addWords": "Add words",
"words": "Words",
"noWords": "No filtered words yet",
"delete": "Delete",
"confirmDeleteTitle": "Remove word",
"confirmDelete": "Remove \"{word}\" from the filter?",
"added": "Word added to filter",
"deleted": "Word removed from filter",
"addError": "Could not add word (it may already exist)",
"deleteError": "Could not remove word",
"colId": "ID",
"colWord": "Word",
"colAddedBy": "Added by",
"colCreated": "Created",
"colActions": "Actions",
"form": {
"word": "Word",
"wordPlaceholder": "e.g. badword",
"addMore": "Add multiple words (one per line)",
"save": "Add to filter",
"saving": "Saving…",
"cancel": "Cancel"
}
},
"maintenance": {
"title": "Maintenance Mode",
"subtitle": "Enable or disable hotel-wide maintenance",
"enabled": "Maintenance mode is enabled",
"disabled": "Maintenance mode is disabled",
"enable": "Enable maintenance",
"disable": "Disable maintenance",
"message": "Maintenance message",
"messagePlaceholder": "We'll be back shortly!",
"staffAccess": "Allow staff access during maintenance",
"save": "Save settings",
"saving": "Saving…",
"confirmEnable": "Enabling maintenance will prevent all non-staff users from accessing the hotel. Continue?",
"confirmDisable": "Disable maintenance mode and restore access for all users?"
},
"housekeeping": {
"title": "Permission archive",
"subtitle": "Old backup table. Real access is managed under Permissions — this page is compare + export only.",
"addPermission": "Add permission",
"editPermission": "Edit permission",
"deletePermission": "Delete permission",
"noPermissions": "No housekeeping permissions configured",
"confirmDelete": "Delete this permission?",
"colId": "ID",
"colRank": "Rank",
"colSection": "Section",
"colActions": "Actions",
"saved": "Saved!",
"deleted": "Deleted!",
"errorOccurred": "An error occurred",
"emptyInput": "Empty input",
"invalidJson": "Invalid JSON",
"imported": "Imported!",
"importedWithErrors": "Imported {count} permissions with {errors} errors",
"presetApplied": "Preset applied!",
"cleared": "All permissions cleared!",
"invalidRank": "Invalid rank",
"testDone": "Test done: {count} permissions found",
"testing": "Testing...",
"loading": "Loading...",
"prev": "Previous",
"next": "Next",
"form": {
"rankId": "Rank ID",
"rankIdPlaceholder": "Minimum rank",
"section": "Section key",
"sectionPlaceholder": "e.g. admin.dashboard",
"save": "Save permission",
"saving": "Saving…",
"cancel": "Cancel"
},
"confirmClearAll": "Delete ALL permissions? This action cannot be undone!",
"confirmClearAllDesc": "This will remove every permission entry from the database. Are you sure?",
"confirmDeletePermission": "Delete this permission permanently?",
"confirmBulkDelete": "Delete {count} selected permissions?",
"deleteSelected": "Delete {count} selected",
"selectAllMatching": "Select all {count} matching",
"cancel": "Cancel",
"confirm": "Confirm",
"colGroup": "Group",
"colDepends": "Depends on",
"colPermission": "Permission",
"colDescription": "Description",
"colMinRank": "Min. Rank",
"permissionKey": "Permission key",
"minRank": "Min. rank",
"description": "Description",
"permissions": "Permissions",
"permissionsCount": "{count} permissions",
"permission": "permission",
"highestMinRank": "Highest min. rank: {rank}",
"totalMinRank": "Total min. rank sum: {total}",
"groupCount": "{count} groups",
"rankCount": "{count} ranks",
"missingDeps": "{count} missing dependencies",
"dependsOn": "depends on",
"notFound": "not found",
"missing": "(missing)",
"rank": "Rank",
"count": "Count",
"searchPermission": "Search permissions…",
"search": "Search",
"manage": "Manage",
"importSelection": "Import selection",
"noGroup": "No group",
"allGroups": "All groups",
"perGroup": "Permissions per group",
"perRank": "Permissions per rank",
"rankOverviewHint": "All permissions grouped by the rank they are assigned to.",
"tabOverview": "Overview",
"tabManage": "Manage",
"tabImport": "Import / Export",
"tabRanks": "Rank overview",
"tabPresets": "Presets",
"tabTest": "Test",
"tabAudit": "Audit log",
"importPermissions": "Import permissions",
"importHint": "Paste a JSON array of permission objects. Format: [{ \"permission\": \"...\", \"minRank\": 7, \"description\": \"...\", \"groupName\": \"...\", \"dependsOn\": \"...\" }]",
"importPlaceholder": "Paste JSON here…",
"import": "Import",
"exportTitle": "Export permissions",
"exportHint": "Export all permissions as JSON for backup or batch editing.",
"export": "Export JSON",
"copy": "Copy",
"copied": "Copied!",
"presets": "Permission presets",
"presetsHint": "Apply a predefined set of permissions for common staff roles.",
"presetModerator": "Moderator",
"presetModeratorDesc": "Basic moderation tools: user lookup, bans, CFH handling, chat logs.",
"presetAdmin": "Administrator",
"presetAdminDesc": "Full admin access: users, rooms, news, settings, shop, events, radio & more.",
"presetSuperAdmin": "Super Admin",
"presetSuperAdminDesc": "Complete access to every feature including permission management and asset import.",
"applyPreset": "Apply preset",
"clearAll": "Clear all permissions",
"testTitle": "Test rank access",
"testHint": "Enter a rank number to see which permissions would be granted.",
"test": "Test",
"auditTitle": "Permission audit log",
"auditHint": "All changes to housekeeping permissions are logged.",
"auditLogsAt": "Audit logs are available on the Audit log page.",
"viewAuditLogs": "View audit logs",
"auditTime": "Time",
"auditUser": "User",
"auditAction": "Action",
"auditTarget": "Target",
"save": "Save",
"importTitle": "Import permissions",
"legacyBannerTitle": "Use Permissions to change who can do what",
"legacyBannerBody": "This archive does not control the site. Open Permissions to grant or revoke access for ranks.",
"legacyBannerCta": "Open Permissions",
"writesRetired": "Editing here is disabled on purpose. Change access only in Permissions.",
"tabCompare": "ACL compare",
"tabExportOnly": "Export archive",
"compareHint": "Compares legacy housekeeping min-rank rows to live ACL rank_* role grants (lowest rank that has the slug).",
"compareAligned": "{count} aligned",
"compareMissingAcl": "{count} missing in ACL",
"compareMismatch": "{count} rank mismatch",
"colAclPresent": "In ACL",
"colAclMinRank": "ACL min rank",
"colStatus": "Status",
"statusAligned": "Aligned",
"statusMissingAcl": "Missing in ACL",
"statusMismatch": "Rank differs",
"exportOnlyHint": "Writes are disabled. You can still export the legacy table for archival."
},
"rooms": {
"title": "Rooms",
"subtitle": "Search and manage hotel rooms",
"search": "Search",
"searchPlaceholder": "Search by name, owner or ID…",
"searchResults": "{count, plural, one {# room} other {# rooms}} found for \"{query}\"",
"noResults": "No rooms found",
"colId": "ID",
"colName": "Name",
"colOwner": "Owner",
"colUsers": "Users",
"colState": "State",
"colCategory": "Category",
"colCreated": "Created",
"colActions": "Actions",
"stateOpen": "Open",
"stateClosed": "Closed",
"stateLocked": "Locked",
"stateInvisible": "Invisible",
"detail": {
"title": "Room: {name}",
"subtitle": "Owned by {owner}",
"overview": "Overview",
"actions": "Actions",
"description": "Description",
"noDescription": "No description",
"owner": "Owner",
"users": "Users online",
"maxUsers": "Max users",
"category": "Category",
"state": "State",
"tags": "Tags",
"noTags": "No tags",
"created": "Created",
"deleteRoom": "Delete room",
"confirmDelete": "Delete room \"{name}\"? This cannot be undone.",
"enterRoom": "Enter room",
"changeOwner": "Change owner",
"changeOwnerPlaceholder": "New owner username"
}
},
"emailTemplates": {
"title": "Email Templates",
"subtitle": "Manage transactional email templates",
"newTemplate": "+ New template",
"edit": "Edit",
"delete": "Delete",
"noTemplates": "No email templates yet",
"confirmDelete": "Delete template \"{name}\"?",
"colId": "ID",
"colName": "Name",
"colSubject": "Subject",
"colKey": "Key",
"colUpdated": "Updated",
"colActions": "Actions",
"form": {
"name": "Name",
"namePlaceholder": "e.g. Welcome email",
"key": "Key",
"keyPlaceholder": "e.g. welcome_email",
"subject": "Subject",
"subjectPlaceholder": "Email subject line",
"body": "Body (HTML)",
"bodyPlaceholder": "<p>Dear {username},</p>",
"variables": "Available variables",
"variablesHint": "{username}, {email}, {hotel_name}",
"save": "Save template",
"saving": "Saving…",
"cancel": "Cancel"
}
},
"theme": {
"title": "Theme",
"subtitle": "Customise the CMS appearance",
"presets": "Presets",
"colours": "Colours",
"css": "CSS",
"presetsTitle": "Theme presets",
"presetsSubtitle": "Choose a pre-built colour scheme",
"applyPreset": "Apply",
"customiseTitle": "Custom colours",
"primary": "Primary",
"secondary": "Secondary",
"accent": "Accent",
"background": "Background",
"surface": "Surface",
"text": "Text",
"saveColours": "Save colours",
"savingColours": "Saving…",
"cssTitle": "Custom CSS",
"cssSubtitle": "Add custom CSS to override theme styles",
"cssPlaceholder": "/* Your custom CSS here */",
"saveCss": "Save CSS",
"savingCss": "Saving…",
"reset": "Reset to defaults",
"confirmReset": "Reset theme to default values?"
},
"media": {
"title": "Media Library",
"subtitle": "Upload and manage media files",
"upload": "Upload",
"uploadTitle": "Upload a file",
"uploadSubtitle": "Drag and drop or click to upload",
"uploadButton": "Choose file",
"uploading": "Uploading…",
"noFiles": "No media files yet",
"delete": "Delete",
"confirmDelete": "Delete this file permanently?",
"search": "Search",
"searchPlaceholder": "Search by filename…",
"colPreview": "Preview",
"colName": "Name",
"colSize": "Size",
"colType": "Type",
"colUploaded": "Uploaded",
"colActions": "Actions",
"copyUrl": "Copy URL",
"urlCopied": "URL copied to clipboard"
},
"favicon": {
"title": "Favicon",
"subtitle": "Upload and manage the site favicon",
"current": "Current favicon",
"uploadLabel": "Upload favicon",
"uploadHint": "PNG, JPEG, GIF, WebP, ICO or SVG. Max 2MB.",
"upload": "Upload",
"uploading": "Uploading…",
"delete": "Remove",
"deleting": "Removing…",
"cancel": "Cancel",
"saved": "Favicon saved successfully!",
"deleted": "Favicon removed successfully!",
"error": "Something went wrong",
"confirmDelete": "Remove the favicon? The site will no longer show a custom favicon.",
"generator": {
"title": "Generate favicon",
"text": "Text",
"bgColor": "Background color",
"textColor": "Text color",
"rounded": "Rounded corners",
"save": "Save as favicon"
}
},
"import": {
"title": "Import",
"subtitle": "Import assets from external sources into your hotel.",
"badges": "Badges",
"badgesDescription": "Import and manage badge assets from external sources.",
"furni": "Furni",
"furniDescription": "Import furniture definitions, SWF files, and icons.",
"upload": "Upload .nitro",
"uploadDescription": "Upload .nitro bundles and icons directly without SWF conversion.",
"clothing": "Clothing",
"clothingDescription": "Import clothing and wearables for avatars.",
"effects": "Effects",
"effectsDescription": "Import avatar effects and animations.",
"pets": "Pets",
"petsDescription": "Import pet data and icons.",
"clone": "Clone",
"cloneDescription": "Clone existing items from one source to another.",
"sync": "Auto Sync",
"syncDescription": "Automatically import missing furniture from all configured sources.",
"repairIcons": "Repair Icons",
"repairIconsDescription": "Download any missing icon files for furniture already in the database.",
"audit": "Catalog Audit",
"auditDescription": "Scan your catalog for missing entries, broken references, and items missing from clone sources."
},
"translations": {
"title": "Translations",
"subtitle": "Translate your hotel into multiple languages.",
"tabs": {
"cms": "CMS",
"client": "Client (Nitro)",
"emulator": "Emulator"
},
"emulator": {
"title": "Emulator",
"subtitle": "User-facing strings from emulator_settings (commands, wordfilter, pet/matchmaking messages).",
"infoBox": "Configuration settings (ports, timeouts, IDs) do not appear here — use the full settings link. Saved changes are synced to the emulator via RCON.",
"fullSettings": "Full settings"
}
},
"settings": {
"title": "CMS Settings",
"subtitle": "Manage key/value CMS configuration",
"addSetting": "Add setting",
"edit": "Edit",
"delete": "Delete",
"noSettings": "No settings found",
"confirmDelete": "Delete setting \"{key}\"?",
"keysInDatabase": "{count} keys in database",
"managedInForm": "{count} managed in form",
"documented": "{count} documented",
"saved": "Settings saved.",
"saveFailed": "Could not save settings.",
"saveSettings": "Save settings",
"viewOnly": "You can view settings but need edit permission to change them.",
"colKey": "Key",
"colValue": "Value",
"colUpdated": "Updated",
"colActions": "Actions",
"form": {
"key": "Key",
"keyPlaceholder": "e.g. hotel_name",
"value": "Value",
"valuePlaceholder": "Setting value",
"save": "Save setting",
"saving": "Saving…",
"cancel": "Cancel"
}
},
"menu": {
"title": "Admin menu",
"subtitle": "Reorder and hide sidebar groups and links. Routes and permissions stay in code.",
"save": "Save menu",
"saving": "Saving…",
"saved": "Admin menu saved.",
"saveFailed": "Could not save admin menu.",
"reset": "Reset to default",
"viewOnly": "You can view the menu layout but need settings edit permission to change it.",
"hint": "Dashboard and this page stay visible. ACL still filters what each rank sees.",
"moveUp": "Move up",
"moveDown": "Move down",
"hideGroup": "Hide group",
"showGroup": "Show group",
"hideItem": "Hide item",
"showItem": "Show item",
"pinned": "Pinned"
},
"analytics": {
"loadError": "Some analytics queries failed. Numbers below may be incomplete — check the database connection and emulator tables.",
"totalUsers": "Total users",
"onlineNow": "{count} online now",
"weekRegistrations": "Week registrations",
"thisMonth": "{count} this month",
"activeRooms": "Active rooms",
"totalRooms": "{count} total rooms",
"weeklyActivity": "Weekly activity",
"tradesAndBans": "{trades} trades, {bans} bans",
"registrationsChartTitle": "Registrations (30 days)",
"registrationsChartDescription": "New user registrations over the last 30 days",
"chatActivity": "Chat activity",
"messagesLast7Days": "Messages in the last 7 days",
"trades": "Trades",
"tradesLast7Days": "Trades in the last 7 days",
"retention": "Retention",
"usersOnlineOverTotal": "Users online / total",
"activity": {
"chatMessages": "Chat messages",
"commands": "Commands",
"bans": "Bans",
"registrations": "Registrations",
"last7Days": "Last 7 days",
"dailyBreakdownTitle": "Daily breakdown (7 days)",
"colDay": "Day",
"colChats": "Chats",
"colCmds": "Cmds",
"colBans": "Bans",
"colRegs": "Regs",
"mostActiveUsersTitle": "Most active users (7 days)",
"noChatActivity": "No chat activity",
"msgCount": "{count} msgs",
"userFallback": "User #{id}"
},
"economy": {
"creditsInCirculation": "Credits in circulation",
"creditsDescription": "Total credits across all users",
"pixelsInCirculation": "Pixels in circulation",
"pixelsDescription": "Total pixels across all users",
"pointsInCirculation": "Points in circulation",
"pointsDescription": "Total points across all users",
"weeklyTrades": "Weekly trades",
"marketplaceListings": "{count} marketplace listings",
"shopRevenueTitle": "Shop revenue (7d)",
"purchases": "Purchases",
"creditsSpent": "Credits spent",
"pointsSpent": "Points spent",
"marketplaceTitle": "Marketplace",
"activeListings": "Active listings",
"sold7d": "Sold (7d)",
"currencyDistributionTitle": "Currency distribution",
"credits": "Credits",
"pixels": "Pixels",
"points": "Points",
"catalogSpendingTitle": "Catalog spending",
"creditsTooltip": "{count} credits",
"pointsTooltip": "{count} points"
},
"peakHours": {
"title": "Peak hours",
"description": "User activity by day & hour (last 7 days)",
"days": {
"mon": "Mon",
"tue": "Tue",
"wed": "Wed",
"thu": "Thu",
"fri": "Fri",
"sat": "Sat",
"sun": "Sun"
},
"tooltip": "{day} {hour}:00 — {count} users",
"less": "Less",
"more": "More"
}
}
},
"mod": {
"title": "Moderation panel",
"badge": "Mod",
"overviewTitle": "Moderator overview",
"overviewSubtitle": "CFH, quick actions and bans without full admin access.",
"shortcutsTitle": "Shortcuts",
"nav": {
"overview": "Overview",
"cfh": "Call for Help",
"actions": "Quick actions",
"bans": "Bans",
"fullAdmin": "Full admin",
"backToSite": "Back to site",
"tickets": "Tickets",
"helpTickets": "Help-center tickets",
"users": "Users",
"team": "Team"
},
"usersTitle": "Players",
"usersSubtitle": "Lookup without email or IP — use full admin for sensitive fields.",
"usersEmpty": "No players found",
"usersSearchPlaceholder": "Search username, motto or ID…",
"usersRank": "rank",
"usersPublicProfile": "Public profile",
"usersPiiNote": "Email, IP and currency are hidden in the mod panel. Open full admin if you have access.",
"usersJoined": "Joined",
"usersLastLogin": "Last login",
"usersLastOnline": "Last online",
"stats": {
"openCfh": "Open CFH",
"bansToday": "Bans today",
"modsOnline": "Mods online",
"quickActions": "Quick actions",
"quickActionsHint": "Kick, mute, alert",
"openTickets": "Open CMS tickets",
"openHelpTickets": "Open help tickets",
"team": "Mod team",
"teamHint": "Online staff & workload"
}
},
"studio": {
"title": "Studio",
"sourceFurnidata": "{source} furnidata",
"searchPlaceholder": "Search furni, classnames, keywords… (/)",
"results": "{count} results",
"inDb": "in DB",
"inCatalog": "in catalog",
"missingNitro": "missing nitro",
"globalTranslation": "Translation (global)",
"catalogTree": "Catalog",
"source": "Furni source",
"officialSource": "(official)",
"type": "Type",
"allTypes": "All types",
"floorItems": "Floor items",
"wallItems": "Wall items",
"category": "Category",
"allCategories": "All categories",
"status": "Status",
"allStatuses": "All statuses",
"imported": "Imported",
"inCatalogStatus": "In catalog",
"missingNitroStatus": "Missing nitro",
"sort": "Sort",
"defaultOrder": "Default order",
"nameAZ": "Name A–Z",
"classnameAZ": "Classname A–Z",
"categorySort": "Category",
"importedFirst": "Imported first",
"notImportedFirst": "Not imported first",
"noNitro": "{count} no nitro",
"gridView": "Grid view",
"listView": "List view",
"selectAll": "Select all",
"selectedCount": "{count} selected",
"clear": "Clear",
"translate": "Translate",
"noLanguages": "No languages",
"allLanguages": "All languages",
"languagesCount": "{count} languages",
"languages": "Languages",
"all": "All",
"none": "None",
"languageLabel": "Language {lang}",
"translateAll": "Translate all",
"translateAllTitle": "Translate the whole catalog into all languages (afterwards)",
"importAuto": "Import {count} auto",
"maintenance": {
"title": "Catalog maintenance",
"description": "Force the furniture tables to 100% consistency with FurnitureData.json. Every action runs inside a database transaction and rolls back on error.",
"refresh": "Refresh",
"currentHealth": "Current health",
"itemsInBase": "{count} items in items_base",
"loading": "Loading…",
"statSpriteId": "sprite_id ≠ id",
"hintSpriteId": "items_base sprite drift",
"statOfferId": "offer_id ≠ id",
"hintOfferId": "catalog offer drift",
"statDuplicateClassnames": "Duplicate classnames",
"hintDuplicateClassnames": "items_base item_name repeats",
"statDuplicateCatalogRows": "Duplicate catalog rows",
"hintDuplicateCatalogRows": "same product listed twice on a page",
"statIdMismatch": "ID ≠ FurnitureData",
"hintIdMismatch": "items_base id differs from furnidata",
"statDuplicateBcCatalogRows": "Duplicate BC catalog rows",
"hintDuplicateBcCatalogRows": "same product listed twice in builder club",
"statDuplicateCatalogPages": "Duplicate catalog pages",
"hintDuplicateCatalogPages": "same caption under the same parent (double links)",
"optionSpriteId": "Fix sprite_id",
"optionOfferId": "Fix catalog offer_id",
"optionRemoveDuplicates": "Remove duplicates (items + catalog)",
"optionReconcile": "Reconcile FurnitureData ↔ DB",
"optionAlignIds": "Align items_base IDs to FurnitureData",
"alignDescription": "Moves every items_base.id to the FurnitureData sprite id (source of truth). Rewrites all referencing tables.",
"previewChanges": "Preview changes",
"plannedIdMoves": "Planned ID moves: {moves}",
"newItemsInsert": "New items to insert: {inserted}",
"skipped": "Skipped (id occupied): {list}",
"applyAlignment": "Apply alignment",
"fixEverythingTitle": "Fix everything",
"fixEverythingDescription": "Runs the selected repairs in order. Heavy operation — make a backup first.",
"alsoMergeDuplicatePages": "Also merge duplicate catalog pages (double links)",
"runSelected": "Run selected",
"selectAtLeastOne": "Select at least one repair to run",
"previewReady": "Preview ready",
"previewFailed": "Preview failed",
"toast": {
"spriteFixed": "sprite_id fixed",
"offerFixed": "catalog offer_id fixed",
"duplicatesRemoved": "Duplicates removed (items + catalog)",
"reconciled": "FurnitureData reconciled",
"aligned": "items_base IDs aligned to FurnitureData",
"allApplied": "All selected repairs applied",
"failed": "Failed"
}
}
},
"housekeeping": {
"preview": {
"badge": "Foundation preview",
"commandDisabled": "Search and commands are enabled in a later subproject.",
"backToSite": "Back to site"
},
"navigation": {
"skipToContent": "Skip to content",
"primary": "Housekeeping domains",
"contextual": "Domain navigation"
},
"domains": {
"operations": {
"title": "Operations",
"description": "Operational overview and daily queues"
},
"people": {
"title": "People",
"description": "Users, moderation, and support"
},
"content": {
"title": "Content",
"description": "Editorial content and community engagement"
},
"economy": {
"title": "Economy",
"description": "Catalog and shop operations"
},
"hotel": {
"title": "Hotel",
"description": "Rooms, radio, and asset tools"
},
"system": {
"title": "System",
"description": "Configuration, observability, and access"
}
},
"states": {
"loading": {
"title": "Loading housekeeping",
"description": "Preparing the available housekeeping tools."
},
"empty": {
"title": "Nothing available",
"description": "No housekeeping content is available for this domain."
},
"partial": {
"label": "Partial data",
"title": "Some information is unavailable",
"description": "Review the available information and try again later."
},
"error": {
"title": "Unable to load housekeeping",
"description": "Try again later or contact an administrator."
}
}
}
},
"toolbar": {
"home": "Home",
"reload": "Reload",
"fullscreen": "Fullscreen",
"logout": "Logout",
"onlineUsers": "Online users",
"emulatorOnline": "Emulator online",
"emulatorOffline": "Emulator offline",
"dragToMove": "Drag to move",
"hide": "Hide toolbar",
"fullscreenExit": "Exit fullscreen",
"show": "Show toolbar",
"emulatorUnknown": "Emulator status unknown"
}
}