i18n: translate all public page bodies (EN + IT)
Internationalised the ~44 public pages with next-intl (the shell was already translated). Each page now pulls its copy from a "pages.<slug>" namespace via getTranslations (server) / useTranslations (client); the EN + IT catalogs were authored by parallel agents and merged centrally, with natural Italian (ICU plurals) and it backfilled from en for any gap. request.ts gained getMessageFallback/onError so a missing key degrades to the English value, never a raw key. Behaviour unchanged (only display text moved to t() calls; queries, actions, fields, ContentCard structure preserved). Verified on the prod server: with NEXT_LOCALE=it, home/community/staff/news/shop/rankings all render Italian copy, no raw-key leakage; English unchanged. The nav language switcher toggles EN/IT live. tsc 0, vitest 49/49, next build 0. Admin pages intentionally left in English (staff tooling).
This commit is contained in:
1 parent
1199176883
commit
e004dfedaf
47 files changed
+1740
-471
No files matched your search
@@ -35,5 +35,576 @@
|
||||
"language": "Language",
|
||||
"lightMode": "Light mode",
|
||||
"darkMode": "Dark mode"
|
||||
},
|
||||
"pages": {
|
||||
"staff": {
|
||||
"title": "Staff",
|
||||
"subtitle": "The team behind the hotel",
|
||||
"ranksTitle": "Ranks",
|
||||
"ranksSubtitle": "What each part of the team takes care of",
|
||||
"membersTitle": "Team members",
|
||||
"membersEmptySubtitle": "Nobody to show right now",
|
||||
"membersSubtitle": "{count, plural, one {# member keeping things running} other {# members keeping things running}}",
|
||||
"emptyState": "No staff members to show.",
|
||||
"colUsername": "Username",
|
||||
"colRank": "Rank",
|
||||
"colMotto": "Motto"
|
||||
},
|
||||
"leaderboard": {
|
||||
"title": "Leaderboard",
|
||||
"subtitle": "Top 20 players by {currency}",
|
||||
"tab_credits": "Credits",
|
||||
"tab_diamonds": "Diamonds",
|
||||
"tab_duckets": "Duckets",
|
||||
"emptyState": "No rankings to show yet.",
|
||||
"colAvatar": "Avatar",
|
||||
"colPlayer": "Player"
|
||||
},
|
||||
"friends": {
|
||||
"title": "Friends",
|
||||
"emptySubtitle": "You have no friends added yet",
|
||||
"subtitle": "{count, plural, one {You have # friend} other {You have # friends}}",
|
||||
"emptyState": "Add friends in the hotel and they will show up here.",
|
||||
"noMotto": "No motto"
|
||||
},
|
||||
"messages": {
|
||||
"title": "Messages",
|
||||
"subtitle": "Friend requests and offline messages waiting for you",
|
||||
"requestsTitle": "Friend requests",
|
||||
"requestsEmptySubtitle": "Nobody's asked to be your friend yet",
|
||||
"requestsSubtitle": "{count, plural, one {# pending request} other {# pending requests}}",
|
||||
"requestsEmptyState": "No pending friend requests.",
|
||||
"wantsToBeFriend": "wants to be your friend.",
|
||||
"accept": "Accept",
|
||||
"offlineTitle": "Offline messages",
|
||||
"offlineEmptySubtitle": "Your inbox is empty",
|
||||
"offlineSubtitle": "{count, plural, one {# message received} other {# messages received}}",
|
||||
"offlineEmptyState": "You have no offline messages.",
|
||||
"unknownUser": "User #{id}"
|
||||
},
|
||||
"profile": {
|
||||
"noMotto": "No motto",
|
||||
"statRank": "Rank",
|
||||
"statCredits": "Credits",
|
||||
"statRegistered": "Registered",
|
||||
"badgesTitle": "Badges",
|
||||
"badgesEmpty": "No badges yet.",
|
||||
"photosTitle": "Photos",
|
||||
"photosEmpty": "No photos yet.",
|
||||
"guestbookTitle": "Guestbook",
|
||||
"guestbookSubtitle": "Messages on {username}'s wall",
|
||||
"leaveMessage": "Leave a message",
|
||||
"guestbookPlaceholder": "Write something on {username}'s guestbook…",
|
||||
"post": "Post",
|
||||
"loginToPost": "Log in to leave a guestbook message.",
|
||||
"guestbookEmpty": "No guestbook entries yet.",
|
||||
"unknownUser": "User #{id}"
|
||||
},
|
||||
"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 hotel",
|
||||
"latestNews": "Latest news",
|
||||
"newsTitle": "Latest news",
|
||||
"newsSubtitle": "Fresh from the hotel",
|
||||
"allNews": "All news →",
|
||||
"noArticles": "No articles yet."
|
||||
},
|
||||
"news": {
|
||||
"title": "News",
|
||||
"subtitle": "The latest announcements, events and updates from the hotel",
|
||||
"noArticles": "No articles yet."
|
||||
},
|
||||
"article": {
|
||||
"backToNews": "← News",
|
||||
"reactionsTitle": "Reactions",
|
||||
"reactionsSubtitle": "Tell us what you think",
|
||||
"reaction": {
|
||||
"like": "Like",
|
||||
"love": "Love",
|
||||
"wow": "Wow"
|
||||
},
|
||||
"removeReaction": "Click to remove your reaction",
|
||||
"reactWith": "React with {reaction}",
|
||||
"noReactions": "No reactions yet.",
|
||||
"logIn": "Log in",
|
||||
"toReact": "to react.",
|
||||
"commentsTitle": "Comments",
|
||||
"commentsSubtitle": "Join the conversation",
|
||||
"commentsCount": "{count} so far",
|
||||
"noComments": "No comments yet. Be the first to comment.",
|
||||
"userNumber": "User #{id}",
|
||||
"addComment": "Add a comment",
|
||||
"commentPlaceholder": "Write your comment…",
|
||||
"postComment": "Post comment",
|
||||
"toComment": "to leave a comment."
|
||||
},
|
||||
"photos": {
|
||||
"title": "Photos",
|
||||
"subtitle": "The latest snapshots taken in the hotel",
|
||||
"noPhotos": "No photos yet.",
|
||||
"photoAlt": "Photo by user #{id}",
|
||||
"byUser": "by user #{id}"
|
||||
},
|
||||
"badges": {
|
||||
"title": "Badges",
|
||||
"subtitle": "The badges you can earn and show off around the hotel",
|
||||
"noBadges": "No badges available yet."
|
||||
},
|
||||
"community": {
|
||||
"title": "Community",
|
||||
"subtitle": "Everything happening around the hotel in one place",
|
||||
"open": "Open →",
|
||||
"links": {
|
||||
"rankings": {
|
||||
"title": "Rankings",
|
||||
"text": "See the wealthiest players in the hotel, ranked by credits."
|
||||
},
|
||||
"staff": {
|
||||
"title": "Staff",
|
||||
"text": "Meet the team that keeps the hotel running every day."
|
||||
},
|
||||
"news": {
|
||||
"title": "News",
|
||||
"text": "The latest announcements, events and updates."
|
||||
},
|
||||
"photos": {
|
||||
"title": "Photos",
|
||||
"text": "Snapshots shared by the community from around the hotel."
|
||||
},
|
||||
"guilds": {
|
||||
"title": "Guilds",
|
||||
"text": "Browse the groups players have created and joined."
|
||||
},
|
||||
"leaderboards": {
|
||||
"title": "Leaderboards",
|
||||
"text": "Who's on top this season across the hotel's stats."
|
||||
}
|
||||
}
|
||||
},
|
||||
"guilds": {
|
||||
"title": "Guilds",
|
||||
"subtitle": "Browse the groups players have created and joined",
|
||||
"empty": "No guilds yet.",
|
||||
"unnamedGuild": "Unnamed guild",
|
||||
"noDescription": "No description"
|
||||
},
|
||||
"guild": {
|
||||
"allGuilds": "← All guilds",
|
||||
"unnamedGuild": "Unnamed guild",
|
||||
"noDescription": "No description",
|
||||
"memberSingular": "Member",
|
||||
"memberPlural": "Members",
|
||||
"founded": "Founded",
|
||||
"forumLink": "Forum →",
|
||||
"discussion": "Discussion",
|
||||
"membersTitle": "Members",
|
||||
"memberLowerSingular": "member",
|
||||
"memberLowerPlural": "members",
|
||||
"noMembers": "No members.",
|
||||
"owner": "Owner",
|
||||
"noMotto": "No motto"
|
||||
},
|
||||
"guildForum": {
|
||||
"backToGuild": "← Back to guild",
|
||||
"unnamedGuild": "Unnamed guild",
|
||||
"forumTitle": "{guild} — Forum",
|
||||
"threadSingular": "thread",
|
||||
"threadPlural": "threads",
|
||||
"newThread": "+ New thread",
|
||||
"empty": "No threads in this forum yet.",
|
||||
"colSubject": "Subject",
|
||||
"colAuthor": "Author",
|
||||
"colPosts": "Posts",
|
||||
"colDate": "Date",
|
||||
"noSubject": "(no subject)",
|
||||
"pinned": "Pinned",
|
||||
"locked": "Locked",
|
||||
"userNumber": "User #{id}",
|
||||
"unknown": "Unknown"
|
||||
},
|
||||
"guildForumNew": {
|
||||
"backToForum": "← Back to forum",
|
||||
"unnamedGuild": "Unnamed guild",
|
||||
"title": "New thread",
|
||||
"subtitle": "in {guild} forum",
|
||||
"subjectLabel": "Subject",
|
||||
"subjectPlaceholder": "Thread subject",
|
||||
"messageLabel": "Message",
|
||||
"messagePlaceholder": "Write your opening post…",
|
||||
"postThread": "Post thread",
|
||||
"cancel": "Cancel"
|
||||
},
|
||||
"shop": {
|
||||
"title": "Shop",
|
||||
"subtitle": "Top up your account and grab exclusive packages, currency and badges.",
|
||||
"browsingCategory": "Browsing the {category} packages.",
|
||||
"all": "All",
|
||||
"allPackages": "All packages",
|
||||
"packagesAvailable": "{count, plural, one {# package available} other {# packages available}}",
|
||||
"empty": "No packages available right now.",
|
||||
"buy": "Buy"
|
||||
},
|
||||
"topup": {
|
||||
"title": "Top up with PayPal",
|
||||
"subtitle": "Pay securely with PayPal and your credits are added the moment the payment clears.",
|
||||
"cancelled": "Checkout was cancelled — no payment was taken.",
|
||||
"chooseAmount": "Choose an amount",
|
||||
"notConfiguredPre": "PayPal isn't configured yet. An administrator needs to set",
|
||||
"notConfiguredAnd": "and",
|
||||
"notConfiguredOptional": "(and optionally",
|
||||
"notConfiguredPost": "for sandbox vs. live).",
|
||||
"balanceTitle": "Your balance",
|
||||
"signedInAs": "Signed in as {username}",
|
||||
"credits": "Credits",
|
||||
"creditsPerUnit": "Credits per 1.00 {currency}",
|
||||
"rateLine": "You receive <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",
|
||||
"listTitle": "Your tickets",
|
||||
"listSubtitle": "Every request you have sent to staff",
|
||||
"listEmpty": "You have no tickets yet.",
|
||||
"colId": "ID",
|
||||
"colSubject": "Subject",
|
||||
"colStatus": "Status",
|
||||
"colCreated": "Created",
|
||||
"statusOpen": "Open",
|
||||
"statusClosed": "Closed"
|
||||
},
|
||||
"applyStaff": {
|
||||
"title": "Apply for {hotel} staff",
|
||||
"subtitle": "We open staff applications every now and then. If you come across a position you feel you would fit perfectly into, do not hesitate to apply for it.",
|
||||
"noPositionsTitle": "No positions open",
|
||||
"noPositionsBody": "There are currently no positions open. Please come back at a later time to check if we have any openings by then. Thank you for your interest.",
|
||||
"noDeadline": "No deadline set",
|
||||
"deadline": "Application deadline: {date}",
|
||||
"alreadyApplied": "You have already applied for {rank}",
|
||||
"aboutYou": "About you",
|
||||
"aboutPlaceholder": "Tell us why you'd be a great {rank}…",
|
||||
"applyFor": "Apply for {rank}"
|
||||
},
|
||||
"applyTeam": {
|
||||
"title": "Apply for the {hotel} team",
|
||||
"subtitle": "We open team applications periodically. If you see a team you fit, do not hesitate to apply!",
|
||||
"noPositionsTitle": "No team positions open",
|
||||
"noPositionsBody": "There are currently no open team positions. Please come back later to check for new openings. Thank you!",
|
||||
"pending": "Your application is pending",
|
||||
"aboutYou": "About you",
|
||||
"aboutPlaceholder": "Tell us why you'd be a great fit for {rank}…",
|
||||
"applyFor": "Apply for {rank}"
|
||||
},
|
||||
"radio": {
|
||||
"title": "Radio",
|
||||
"subtitle": "Tune in to the hotel radio — live DJ sets, requests and shoutouts.",
|
||||
"nowPlaying": "Now playing",
|
||||
"nothingPlaying": "Nothing playing right now.",
|
||||
"onAir": "On air: {dj}",
|
||||
"noDj": "No DJ on air.",
|
||||
"audioUnsupported": "Your browser does not support the audio element.",
|
||||
"streamOffline": "The stream is currently offline.",
|
||||
"exploreTitle": "Explore the radio",
|
||||
"exploreSubtitle": "Schedule, shouts, requests and more",
|
||||
"linkSchedule": "Schedule",
|
||||
"linkScheduleText": "Our weekly line-up of DJs and shows.",
|
||||
"linkShouts": "Shouts",
|
||||
"linkShoutsText": "Shout-outs and requests from the community.",
|
||||
"linkRequests": "Requests",
|
||||
"linkRequestsText": "Ask the DJ to spin your favourite track.",
|
||||
"linkApply": "Apply as DJ",
|
||||
"linkApplyText": "Join the team and take to the airwaves.",
|
||||
"linkLeaderboard": "Leaderboard",
|
||||
"linkLeaderboardText": "Top listeners ranked by points earned.",
|
||||
"todayTitle": "Today's schedule",
|
||||
"todayTitleWithDay": "Today's schedule · {day}",
|
||||
"todaySubtitle": "What's on the airwaves today",
|
||||
"fullWeek": "Full week →",
|
||||
"noShowsToday": "No shows scheduled for today.",
|
||||
"colTime": "Time",
|
||||
"colShow": "Show",
|
||||
"colDj": "DJ",
|
||||
"untitledShow": "Untitled show",
|
||||
"userNumber": "User #{id}"
|
||||
},
|
||||
"radioSchedule": {
|
||||
"title": "Radio Schedule",
|
||||
"subtitle": "Our weekly line-up of DJs and shows",
|
||||
"empty": "No shows scheduled yet.",
|
||||
"colDay": "Day",
|
||||
"colTime": "Time",
|
||||
"colDj": "DJ",
|
||||
"colShow": "Show",
|
||||
"noShows": "No shows"
|
||||
},
|
||||
"radioShouts": {
|
||||
"title": "Radio Shouts",
|
||||
"subtitle": "Shout-outs and requests from the community",
|
||||
"postTitle": "Post a shout",
|
||||
"postSubtitle": "Send a message to the DJ on air",
|
||||
"messageLabel": "Your message",
|
||||
"messagePlaceholder": "Send a shout to the DJ…",
|
||||
"shoutButton": "Shout",
|
||||
"loginToPost": "Log in to post a shout.",
|
||||
"latestTitle": "Latest shouts",
|
||||
"latestSubtitle": "The most recent messages from listeners",
|
||||
"empty": "No shouts yet. Be the first!"
|
||||
},
|
||||
"radioContests": {
|
||||
"title": "Radio Contests",
|
||||
"subtitle": "Tune in and take part in our latest on-air contests",
|
||||
"empty": "No contests yet.",
|
||||
"contestLabel": "Contest #{id}",
|
||||
"dateUnknown": "Date unknown"
|
||||
},
|
||||
"radioGiveaways": {
|
||||
"title": "Radio Giveaways",
|
||||
"subtitle": "Listen in for your chance to win in our radio giveaways",
|
||||
"empty": "No giveaways yet.",
|
||||
"giveawayLabel": "Giveaway #{id}",
|
||||
"dateUnknown": "Date unknown"
|
||||
},
|
||||
"radioLeaderboard": {
|
||||
"title": "Radio Listener Leaderboard",
|
||||
"subtitle": "Top 50 listeners by points earned tuning in to the radio",
|
||||
"empty": "No listener points to show yet.",
|
||||
"colRank": "Rank",
|
||||
"colAvatar": "Avatar",
|
||||
"colListener": "Listener",
|
||||
"colPoints": "Points"
|
||||
},
|
||||
"radioApply": {
|
||||
"title": "Apply to be a Radio DJ",
|
||||
"subtitle": "Tell us about yourself and why you'd be a great fit for the airwaves",
|
||||
"latestTitle": "Your latest application",
|
||||
"statusLabel": "Status:",
|
||||
"submittedOn": "· submitted {date}",
|
||||
"submitAgain": "You can submit again below if your details have changed.",
|
||||
"formTitle": "Application form",
|
||||
"formSubtitle": "All fields marked required must be filled in",
|
||||
"realNameLabel": "Real name",
|
||||
"realNamePlaceholder": "Your full name",
|
||||
"ageLabel": "Age",
|
||||
"availabilityLabel": "Availability",
|
||||
"availabilityPlaceholder": "Which days and times can you broadcast?",
|
||||
"musicStyleLabel": "Music style",
|
||||
"musicStylePlaceholder": "e.g. House, Pop, Hip-Hop",
|
||||
"experienceLabel": "Experience",
|
||||
"optional": "(optional)",
|
||||
"experiencePlaceholder": "Any prior DJ or hosting experience?",
|
||||
"motivationLabel": "Motivation",
|
||||
"motivationPlaceholder": "Why do you want to join the radio team?",
|
||||
"submitButton": "Submit application"
|
||||
},
|
||||
"settings": {
|
||||
"accountSettings": "Account settings",
|
||||
"accountSettingsSubtitle": "Manage your profile, security and connected accounts",
|
||||
"publicProfile": "Your public profile",
|
||||
"noMotto": "No motto",
|
||||
"noEmail": "No e-mail on file",
|
||||
"changeMotto": "Change motto",
|
||||
"changeMottoSubtitle": "Updates instantly in-game if you are online",
|
||||
"mottoPlaceholder": "Your motto",
|
||||
"saveMotto": "Save motto",
|
||||
"securityTitle": "Security",
|
||||
"securitySubtitle": "Two-factor authentication",
|
||||
"securityDescription": "Add a second layer of protection to your account.",
|
||||
"twoFactorLink": "Two-factor authentication",
|
||||
"connectionsTitle": "Connected accounts",
|
||||
"connectionsSubtitle": "Sign in with one click",
|
||||
"connectionsDescription": "Link Discord or Google to your hotel account.",
|
||||
"manageConnections": "Manage connections"
|
||||
},
|
||||
"settings2fa": {
|
||||
"backToSettings": "← Settings",
|
||||
"title": "Two-factor authentication",
|
||||
"subtitle": "Add a second layer of security with an authenticator app",
|
||||
"nowEnabled": "2FA is now enabled. 🔒",
|
||||
"disabledNotice": "2FA has been disabled.",
|
||||
"badCode": "That code wasn't valid — try again.",
|
||||
"noAppKeyPrefix": "2FA is unavailable until",
|
||||
"noAppKeyMiddle": "is configured (the same Laravel",
|
||||
"noAppKeySuffix": "as your AtomCMS install, so existing secrets stay readable).",
|
||||
"isEnabled": "2FA is enabled",
|
||||
"onYourAccount": "on your account.",
|
||||
"disable": "Disable 2FA",
|
||||
"scanOrEnter": "Scan or enter this key",
|
||||
"scanInstructions": "Add this to Google Authenticator / Authy, then enter the 6-digit code to confirm.",
|
||||
"manualKey": "Manual key:",
|
||||
"codePlaceholder": "6-digit code",
|
||||
"confirm": "Confirm",
|
||||
"enableIntro": "Add a second layer of security with an authenticator app.",
|
||||
"enable": "Enable 2FA"
|
||||
},
|
||||
"connections": {
|
||||
"backToSettings": "← Settings",
|
||||
"title": "Connected accounts",
|
||||
"subtitle": "Link a social account so you can sign in with one click",
|
||||
"matchByEmail": "We match it to your hotel account by e-mail, so use the address on file:",
|
||||
"lookupFailed": "We couldn't read your linked accounts right now. You can still connect below — your status will show once it's available.",
|
||||
"statusUnavailable": "Not available on this hotel.",
|
||||
"statusConnected": "Connected — sign in with this account.",
|
||||
"statusNotConnected": "Not connected.",
|
||||
"connected": "Connected",
|
||||
"connectProvider": "Connect {provider}",
|
||||
"unavailable": "Unavailable",
|
||||
"footerNote": "Connecting takes you to the provider to authorise, then back here. If your social account's e-mail doesn't match a hotel account, you'll be returned to the login screen with a note."
|
||||
},
|
||||
"login": {
|
||||
"title": "Sign in",
|
||||
"subtitle": "Welcome back — log in to enter the hotel.",
|
||||
"subtitle2fa": "Enter the 6-digit code from your authenticator.",
|
||||
"usernamePlaceholder": "Username",
|
||||
"passwordPlaceholder": "Password",
|
||||
"codePlaceholder": "2FA code",
|
||||
"pleaseWait": "Please wait…",
|
||||
"verify": "Verify",
|
||||
"signIn": "Sign in",
|
||||
"or": "or",
|
||||
"continueWithDiscord": "Continue with Discord",
|
||||
"continueWithGoogle": "Continue with Google",
|
||||
"noAccount": "No account?",
|
||||
"createOne": "Create one",
|
||||
"forgotPassword": "Forgot password?",
|
||||
"errorInvalidCredentials": "Invalid username or password",
|
||||
"errorInvalid2fa": "Invalid 2FA code"
|
||||
},
|
||||
"register": {
|
||||
"title": "Create account",
|
||||
"subtitle": "Join the hotel — it only takes a moment.",
|
||||
"usernamePlaceholder": "Username",
|
||||
"emailPlaceholder": "Email",
|
||||
"passwordPlaceholder": "Password (min 6 chars)",
|
||||
"register": "Register",
|
||||
"alreadyHaveAccount": "Already have an account?",
|
||||
"signIn": "Sign in"
|
||||
},
|
||||
"forgot": {
|
||||
"title": "Reset password",
|
||||
"subtitle": "We'll email you a secure link to set a new password.",
|
||||
"sentNotice": "If that email is registered, a reset link has been sent. Check your inbox.",
|
||||
"emailPlaceholder": "Your email",
|
||||
"sendResetLink": "Send reset link",
|
||||
"backToLogin": "Back to login"
|
||||
},
|
||||
"reset": {
|
||||
"title": "Set a new password",
|
||||
"subtitle": "Choose a strong password you don't use elsewhere.",
|
||||
"passwordPlaceholder": "New password (min 6 chars)",
|
||||
"resetPassword": "Reset password",
|
||||
"backToLogin": "Back to login"
|
||||
},
|
||||
"verify": {
|
||||
"verifiedTitle": "You're all set",
|
||||
"verifiedSubtitle": "Email verified",
|
||||
"verifiedBody": "Your email address has been verified. You can now log in and play.",
|
||||
"goToLogin": "Go to login",
|
||||
"alreadyTitle": "Already verified",
|
||||
"alreadySubtitle": "Nothing left to do",
|
||||
"alreadyBody": "This email address has already been confirmed.",
|
||||
"unavailableTitle": "Try again shortly",
|
||||
"unavailableSubtitle": "Server unreachable",
|
||||
"unavailableBody": "We couldn't reach the server to verify your email. Please retry the link in a moment.",
|
||||
"invalidTitle": "Email verification",
|
||||
"invalidSubtitle": "Invalid or expired link",
|
||||
"invalidBody": "This verification link is not valid. Make sure you opened the full link from your email, or request a new one.",
|
||||
"backToLogin": "Back to login"
|
||||
},
|
||||
"banned": {
|
||||
"title": "You are banned",
|
||||
"subtitle": "Account suspended",
|
||||
"body": "Your account has been suspended from the hotel.",
|
||||
"reasonLabel": "Reason:",
|
||||
"permanent": "This ban is permanent.",
|
||||
"expires": "Expires {date}.",
|
||||
"contactStaff": "If you believe this is a mistake, contact the staff team."
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "{hotel} is under maintenance",
|
||||
"subtitle": "We'll be back shortly",
|
||||
"staffCanLogIn": "Staff can still log in."
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user