Files
EpicNext-Cms/src/messages/de.json
T
openhands 0f01ebf48b
CI / check (push) Failing after 5m7s
CI / preflight (push) Skipped
CI / deploy (push) Skipped
CI / publish-container (push) Skipped
Organize imports: persist undo across sessions, translate UI to 23 languages
2026-09-14 19:07:56 +02:00

5016 lines
197 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.
{
"draftRecovery": {
"ready": "Eine Wiederherstellungskopie wird 7 Tage in diesem Browser aufbewahrt.",
"saved": "Die Wiederherstellungskopie wurde für 7 Tage in diesem Browser gespeichert.",
"unavailable": "Die Wiederherstellung im Browser ist nicht verfügbar. Lass diese Seite geöffnet, bis deine Änderungen gespeichert sind.",
"found": "In diesem Browser ist eine Wiederherstellungskopie verfügbar, gespeichert am",
"restore": "Browserkopie wiederherstellen",
"discard": "Browserkopie löschen",
"confirmRestore": "Das aktuelle Formular durch die Wiederherstellungskopie im Browser ersetzen? Prüfe den Inhalt vor dem Speichern.",
"confirmDiscard": "Diese Wiederherstellungskopie im Browser löschen? Das aktuelle Formular bleibt unverändert."
},
"nav": {
"home": "Start",
"community": "Community",
"articles": "Artikel",
"photos": "Fotos",
"staff": "Team",
"rankings": "Ranglisten",
"guilds": "Gilden",
"leaderboards": "Bestenlisten",
"rareValues": "Seltene Werte",
"shop": "Shop",
"market": "Markt",
"assistance": "Hilfe",
"helpCenter": "Hilfecenter",
"myTickets": "Meine Tickets",
"badges": "Abzeichen",
"radio": "Radio",
"friends": "Freunde",
"messages": "Nachrichten",
"admin": "Admin",
"openMenu": "Open menu",
"closeMenu": "Close menu",
"drawBadge": "Abzeichen zeichnen",
"events": "Events",
"polls": "Polls",
"mod": "Mod"
},
"header": {
"online": "{count} {hotel} online",
"nitroClient": "Nitro Client",
"tagline": "Eine Online-Welt, in der du deinen eigenen Avatar erstellen, Freunde finden, chatten, Räume bauen und vieles mehr kannst!",
"login": "Anmelden",
"or": "Oder",
"createAccount": "Konto erstellen"
},
"footer": {
"copyright": "© {year} - {hotel} ist ein nicht-kommerzielles Bildungsprojekt"
},
"pages": {
"staff": {
"title": "Team",
"subtitle": "Das Team hinter dem Hotel",
"ranksTitle": "Ränge",
"ranksSubtitle": "Wofür jeder Teil des Teams zuständig ist",
"membersTitle": "Teammitglieder",
"membersEmptySubtitle": "Im Moment gibt es niemanden zu zeigen",
"membersSubtitle": "{count, plural, one {# Mitglied hält den Betrieb aufrecht} other {# Mitglieder halten den Betrieb aufrecht}}",
"emptyState": "Keine Teammitglieder zu sehen.",
"colUsername": "Benutzername",
"colRank": "Rang",
"colMotto": "Motto",
"viewProfile": "View profile",
"noMotto": "No motto set",
"loadError": "Unable to load staff members. Please try again shortly.",
"retry": "Try again"
},
"leaderboard": {
"title": "Bestenliste",
"subtitle": "Top 20 Spieler nach {currency}",
"tab_credits": "Credits",
"tab_diamonds": "Diamanten",
"tab_duckets": "Duckets",
"tab_achievement": "Errungenschaften",
"tab_respects": "Respekt",
"tab_onlinetime": "Online-Zeit",
"emptyState": "Noch keine Ranglisten zu sehen.",
"colAvatar": "Avatar",
"colPlayer": "Spieler"
},
"friends": {
"title": "Freunde",
"emptySubtitle": "Du hast noch keine Freunde hinzugefügt",
"subtitle": "{count, plural, one {Du hast # Freund} other {Du hast # Freunde}}",
"emptyState": "Füge im Hotel Freunde hinzu und sie werden hier angezeigt.",
"noMotto": "Kein 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": "Nachrichten",
"subtitle": "Freundschaftsanfragen und Offline-Nachrichten warten auf dich",
"requestsTitle": "Freundschaftsanfragen",
"requestsEmptySubtitle": "Niemand hat noch gefragt, ob er dein Freund sein darf",
"requestsSubtitle": "{count, plural, one {# ausstehende Anfrage} other {# ausstehende Anfragen}}",
"requestsEmptyState": "Keine ausstehenden Freundschaftsanfragen.",
"wantsToBeFriend": "möchte dein Freund sein.",
"accept": "Akzeptieren",
"offlineTitle": "Offline-Nachrichten",
"offlineEmptySubtitle": "Dein Posteingang ist leer",
"offlineSubtitle": "{count, plural, one {# Nachricht erhalten} other {# Nachrichten erhalten}}",
"offlineEmptyState": "Du hast keine Offline-Nachrichten.",
"unknownUser": "Benutzer #{id}",
"decline": "Decline",
"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",
"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."
}
},
"profile": {
"noMotto": "Kein Motto",
"statRank": "Rang",
"statCredits": "Credits",
"statRegistered": "Registriert",
"badgesTitle": "Abzeichen",
"badgesEmpty": "Noch keine Abzeichen.",
"photosTitle": "Fotos",
"photosEmpty": "Noch keine Fotos.",
"guestbookTitle": "Gästebuch",
"guestbookSubtitle": "Nachrichten auf {username}s Pinnwand",
"leaveMessage": "Nachricht hinterlassen",
"guestbookPlaceholder": "Schreibe etwas in {username}s Gästebuch…",
"post": "Posten",
"loginToPost": "Melde dich an, um eine Gästebuch-Nachricht zu hinterlassen.",
"guestbookEmpty": "Noch keine Gästebucheinträge.",
"unknownUser": "Benutzer #{id}",
"statDuckets": "Duckets",
"statDiamonds": "Diamanten",
"walletTitle": "Geldbörse",
"friendsTitle": "Freunde",
"friendsSubtitle": "Leute im Hotel, mit denen sie abhängen",
"friendsEmpty": "Keine Freunde zu sehen.",
"roomsTitle": "Räume",
"roomsSubtitle": "Räume, die sie besitzen",
"roomsEmpty": "Keine Räume zu sehen.",
"roomUntitled": "Unbenannter Raum",
"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."
},
"noRoomPreview": "Preview unavailable",
"viewRoom": "View room",
"roomStates": {
"open": "Open",
"locked": "Doorbell",
"password": "Password",
"invisible": "Hidden"
},
"privacy": {
"title": "Profile visibility",
"hint": "Choose what visitors can see on your public profile. Your email is never shown here. Your own view still shows your information. These controls apply to the profile page.",
"wallet": "Show my wallet",
"online": "Show my online status",
"friends": "Show my friends",
"photos": "Show my photos",
"registered": "Show my registration date",
"save": "Save visibility",
"saved": "Profile visibility saved.",
"error": "Profile visibility could not be loaded or saved. Please try again.",
"ownerHint": "You are viewing your own information, including hidden sections."
},
"morePhotos": "Show more photos (up to 24 recent photos)",
"openPhoto": "Open full photo in a new tab",
"photosUnavailable": "Photos could not be loaded. Please try again later."
},
"rankings": {
"title": "Ranglisten",
"subtitle": "Die Top 12 Spieler nach Credits geordnet",
"emptyState": "Noch keine Spieler zu ordnen."
},
"home": {
"welcome": "Willkommen bei {hotelName}",
"welcomeSubtitle": "Dein Retro-Hotel, jetzt mit Next.js",
"welcomeBody": "Abhängen, Möbel sammeln und Freunde treffen.",
"enterHotel": "{hotelName} betreten",
"onlineFriends": "Online-Freunde",
"noFriendsOnline": "Keine Freunde online",
"register": "JETZT REGISTRIEREN",
"joinNow": "Werde noch heute Mitglied bei {hotelName}!",
"recentUsers": "Aktuelle Benutzer",
"recentPhotos": "Aktuelle Fotos",
"latestNews": "Neueste Nachrichten",
"newsTitle": "Neueste Nachrichten",
"newsSubtitle": "Frisch aus dem Hotel",
"allNews": "Alle Nachrichten →",
"allUsers": "Community →",
"noArticles": "Noch keine Artikel.",
"noPhotos": "Noch keine Fotos.",
"noUsers": "Keine Benutzer online",
"latestArticle": "Neuester Artikel",
"latestUsers": "Neueste Bürger ({count} insgesamt)",
"statsOnline": "Online",
"statsCitizens": "Bürger",
"statsRooms": "Räume",
"statsArticles": "Artikel",
"featuresAvatar": "Avatar",
"featuresAvatarDesc": "Erstelle deinen einzigartigen Look",
"featuresFurniture": "Möbel",
"featuresFurnitureDesc": "Dekoriere Räume mit Gegenständen",
"featuresCommunity": "Community",
"featuresCommunityDesc": "Freunde finden und chatten",
"featuresGames": "Spiele",
"featuresGamesDesc": "Wettkämpfe und Spaß",
"sectionFeaturesLabel": "Features",
"sectionFeaturesTitle": "Everything a great hotel needs",
"sectionStatsLabel": "Live stats",
"sectionStatsTitle": "A community that keeps growing",
"sectionCommunityLabel": "Community",
"sectionCommunityTitle": "Make yourself at home"
},
"news": {
"title": "Nachrichten",
"subtitle": "Die neuesten Ankündigungen, Events und Updates aus dem Hotel",
"noArticles": "Noch keine Artikel.",
"searchLabel": "Search news",
"orderLabel": "Order",
"newest": "Newest first",
"oldest": "Oldest first",
"apply": "Apply",
"loadError": "News could not be loaded. Please try again.",
"pagination": "News pages",
"previous": "Previous",
"next": "Next",
"pageSummary": "Page {page} of {pages} · {total} articles"
},
"article": {
"backToNews": "← Nachrichten",
"reactionsTitle": "Reaktionen",
"reactionsSubtitle": "Sag uns, was du denkst",
"reaction": {
"like": "Gefällt mir",
"love": "Liebe es",
"wow": "Wow"
},
"removeReaction": "Klicke, um deine Reaktion zu entfernen",
"reactWith": "Reagiere mit {reaction}",
"noReactions": "Noch keine Reaktionen.",
"logIn": "Anmelden",
"toReact": "um zu reagieren.",
"commentsTitle": "Kommentare",
"commentsSubtitle": "Mach mit bei der Unterhaltung",
"commentsCount": "{count} bisher",
"noComments": "Noch keine Kommentare. Sei der Erste, der kommentiert.",
"userNumber": "Benutzer #{id}",
"addComment": "Kommentar hinzufügen",
"commentPlaceholder": "Schreibe deinen Kommentar…",
"postComment": "Kommentar posten",
"toComment": "um einen Kommentar zu hinterlassen.",
"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."
},
"loadError": "This article is temporarily unavailable.",
"retry": "Try again",
"commentsUnavailable": "Comments are temporarily unavailable.",
"reactionsUnavailable": "Reactions are temporarily unavailable.",
"commentsPagination": "Comment pages",
"previous": "Previous",
"next": "Next",
"commentsPageSummary": "Page {page} of {pages} · {total} comments"
},
"photos": {
"title": "Fotos",
"subtitle": "Die neuesten Schnappschüsse aus dem Hotel",
"noPhotos": "Noch keine Fotos.",
"photoAlt": "Foto von Benutzer #{id}",
"byUser": "von Benutzer #{id}"
},
"badges": {
"title": "Abzeichen",
"subtitle": "Die Abzeichen, die du verdienen und im Hotel zeigen kannst",
"noBadges": "Noch keine Abzeichen verfügbar."
},
"community": {
"title": "Community",
"subtitle": "Alles, was rund um das Hotel passiert, an einem Ort",
"open": "Öffnen →",
"links": {
"rankings": {
"title": "Ranglisten",
"text": "Sieh dir die reichsten Spieler im Hotel an, geordnet nach Credits."
},
"staff": {
"title": "Team",
"text": "Lerne das Team kennen, das das Hotel täglich am Laufen hält."
},
"news": {
"title": "Nachrichten",
"text": "Die neuesten Ankündigungen, Events und Updates."
},
"photos": {
"title": "Fotos",
"text": "Schnappschüsse, die von der Community aus dem Hotel geteilt wurden."
},
"guilds": {
"title": "Gilden",
"text": "Durchstöbere die Gruppen, die Spieler erstellt und denen sie beigetreten sind."
},
"leaderboards": {
"title": "Bestenlisten",
"text": "Wer ist diese Saison in den Hotel-Statistiken an der Spitze."
}
}
},
"guilds": {
"title": "Gilden",
"subtitle": "Durchstöbere die Gruppen, die Spieler erstellt und denen sie beigetreten sind",
"empty": "Noch keine Gilden.",
"unnamedGuild": "Unbenannte Gilde",
"noDescription": "Keine Beschreibung"
},
"guild": {
"allGuilds": "← Alle Gilden",
"unnamedGuild": "Unbenannte Gilde",
"noDescription": "Keine Beschreibung",
"memberSingular": "Mitglied",
"memberPlural": "Mitglieder",
"founded": "Gegründet",
"forumLink": "Forum →",
"discussion": "Diskussion",
"membersTitle": "Mitglieder",
"memberLowerSingular": "Mitglied",
"memberLowerPlural": "Mitglieder",
"noMembers": "Keine Mitglieder.",
"owner": "Besitzer",
"noMotto": "Kein Motto"
},
"guildForum": {
"backToGuild": "← Zurück zur Gilde",
"unnamedGuild": "Unbenannte Gilde",
"forumTitle": "{guild} — Forum",
"threadSingular": "Thema",
"threadPlural": "Themen",
"newThread": "+ Neues Thema",
"empty": "Noch keine Themen in diesem Forum.",
"colSubject": "Betreff",
"colAuthor": "Autor",
"colPosts": "Beiträge",
"colDate": "Datum",
"noSubject": "(kein Betreff)",
"pinned": "Angepinnt",
"locked": "Gesperrt",
"userNumber": "Benutzer #{id}",
"unknown": "Unbekannt",
"success": {
"posted": "Thread posted."
}
},
"guildForumNew": {
"backToForum": "← Zurück zum Forum",
"unnamedGuild": "Unbenannte Gilde",
"title": "Neues Thema",
"subtitle": "im {guild} Forum",
"subjectLabel": "Betreff",
"subjectPlaceholder": "Thema",
"messageLabel": "Nachricht",
"messagePlaceholder": "Schreibe deinen Eröffnungsbeitrag…",
"postThread": "Thema erstellen",
"cancel": "Abbrechen",
"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."
}
},
"shop": {
"title": "Shop",
"subtitle": "Lade dein Konto auf und sichere dir exklusive Pakete, Währungen und Abzeichen.",
"browsingCategory": "Durchstöbere {category} Pakete.",
"all": "Alle",
"allPackages": "Alle Pakete",
"packagesAvailable": "{count, plural, one {# Paket verfügbar} other {# Pakete verfügbar}}",
"empty": "Derzeit keine Pakete verfügbar.",
"buy": "Kaufen",
"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": "Aufladen mit PayPal",
"subtitle": "Sicher mit PayPal bezahlen und deine Credits werden sofort gutgeschrieben, sobald die Zahlung abgeschlossen ist.",
"cancelled": "Bezahlung abgebrochen — es wurde kein Betrag abgebucht.",
"chooseAmount": "Betrag wählen",
"notConfiguredPre": "PayPal ist noch nicht konfiguriert. Ein Administrator muss",
"notConfiguredAnd": "und",
"notConfiguredOptional": "(und optional",
"notConfiguredPost": "für Sandbox vs. Live).",
"balanceTitle": "Dein Guthaben",
"signedInAs": "Angemeldet als {username}",
"credits": "Credits",
"creditsPerUnit": "Credits pro 1,00 {currency}",
"rateLine": "Du erhältst <strong>{amount}</strong> Credits pro 1,00 {currency}. Credits erscheinen im Spiel, sobald du dich das nächste Mal einloggst."
},
"marketplace": {
"title": "Marktplatz",
"subtitle": "Durchstöbere Möbel und Seltenheiten, die von Spielern angeboten werden. Angebote werden im Spiel erstellt und live aktualisiert — geh ins Hotel, um ein Angebot zu machen.",
"activeOffers": "Aktive Angebote",
"sellers": "Verkäufer",
"totalValue": "Gesamtwert",
"activeListings": "Aktive Einträge",
"mostRecentFirst": "Neueste zuerst",
"empty": "Derzeit gibt es keine aktiven Marktplatz-Angebote. Schau später nochmal vorbei.",
"colOffer": "Angebot",
"colItem": "Gegenstand",
"colSeller": "Verkäufer",
"colPrice": "Preis",
"colListed": "Eingestellt",
"itemLabel": "Gegenstand #{id}",
"userLabel": "Benutzer #{id}",
"justNow": "gerade eben",
"minutesAgo": "vor {count}m",
"hoursAgo": "vor {count}h",
"daysAgo": "vor {count}d"
},
"rares": {
"title": "Seltene Werte",
"subtitle": "Erhalte eine Übersicht aller Seltenheiten im Hotel, gruppiert nach Kategorie.",
"empty": "Wir haben derzeit keine Seltenheiten gelistet.",
"rareCount": "{count, plural, one {# Seltenheit} other {# Seltenheiten}}",
"viewRares": "Seltenheiten ansehen →"
},
"rareCategory": {
"rareCount": "{count, plural, one {# Seltenheit in dieser Kategorie} other {# Seltenheiten in dieser Kategorie}}",
"allRares": "← Alle Seltenheiten",
"empty": "Noch keine Seltenheiten in dieser Kategorie.",
"colRare": "Seltenheit",
"colCredits": "Credits",
"colCurrency": "Währung",
"creditsValue": "{value} Credits",
"duckets": "Duckets",
"diamonds": "Diamanten",
"credits": "Credits"
},
"redeem": {
"title": "Gutschein einlösen",
"subtitle": "Hast du einen Gutscheincode? Gib ihn unten ein, um die Belohnung deinem Konto hinzuzufügen.",
"enterCode": "Code eingeben",
"oncePerAccount": "Jeder Gutschein kann nur einmal pro Konto eingelöst werden.",
"balanceTitle": "Dein Guthaben",
"signedInAs": "Angemeldet als {username}",
"credits": "Credits",
"instantCredit": "Eingelöste Belohnungen werden sofort gutgeschrieben und erscheinen im Spiel, sobald du dich das nächste Mal einloggst."
},
"help": {
"title": "Hilfecenter",
"subtitle": "Finde Anleitungen, Support-Themen und die Hotelregeln — alles, was du brauchst, um Hilfe zu bekommen.",
"myTickets": "Meine Tickets →",
"topicsTitle": "Support-Themen",
"topicsSubtitle": "Durchstöbere Anleitungen und Antworten auf häufige Fragen",
"topicsEmpty": "Noch keine Hilfethemen.",
"rulesTitle": "Hotelregeln",
"rulesSubtitle": "Bitte lies diese, bevor du dich im Hotel aufhältst",
"rulesEmpty": "Noch keine Regeln veröffentlicht.",
"categoryEmpty": "Keine Regeln in dieser Kategorie."
},
"helpCategory": {
"back": "← Hilfecenter",
"topicSubtitle": "Hilfecenter-Thema",
"moreTitle": "Weitere Hilfethemen",
"moreSubtitle": "Zu einem anderen Support-Thema springen"
},
"helpTickets": {
"title": "Hilfe-Tickets",
"subtitle": "Reiche ein Ticket beim Team ein und verfolge deine offenen Anfragen.",
"statTotal": "Tickets gesamt",
"statOpen": "Offen",
"statClosed": "Geschlossen",
"newTitle": "Neues Ticket",
"newSubtitle": "Beschreibe dein Problem und das Team wird sich darum kümmern",
"subjectPlaceholder": "Betreff",
"contentPlaceholder": "Beschreibe dein Problem…",
"submit": "Ticket einreichen",
"listTitle": "Deine Tickets",
"listSubtitle": "Jede Anfrage, die du an das Team gesendet hast",
"listEmpty": "Du hast noch keine Tickets.",
"colId": "ID",
"colSubject": "Betreff",
"colStatus": "Status",
"colCreated": "Erstellt",
"statusOpen": "Offen",
"statusClosed": "Geschlossen",
"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."
},
"banAppealLabel": "This is a ban appeal"
},
"applyStaff": {
"title": "Bewirb dich als {hotel} Team",
"subtitle": "Wir öffnen ab und zu Bewerbungen. Wenn du eine Position siehst, die perfekt zu dir passt, zögere nicht, dich zu bewerben.",
"noPositionsTitle": "Keine offenen Positionen",
"noPositionsBody": "Derzeit gibt es keine offenen Positionen. Bitte komm später nochmal vorbei, um zu prüfen, ob es neue Stellen gibt. Vielen Dank für dein Interesse.",
"noDeadline": "Keine Frist gesetzt",
"deadline": "Bewerbungsfrist: {date}",
"alreadyApplied": "Du hast dich bereits für {rank} beworben",
"aboutYou": "Über dich",
"aboutPlaceholder": "Erzähl uns, warum du ein großartiger {rank} wärst…",
"applyFor": "Bewirb dich für {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": "Bewirb dich für das {hotel} Team",
"subtitle": "Wir öffnen regelmäßig Teambewerbungen. Wenn du ein Team siehst, das zu dir passt, zögere nicht, dich zu bewerben!",
"noPositionsTitle": "Keine offenen Team-Positionen",
"noPositionsBody": "Derzeit gibt es keine offenen Team-Positionen. Bitte komm später nochmal vorbei, um nach neuen Stellen zu sehen. Vielen Dank!",
"pending": "Deine Bewerbung ist in Bearbeitung",
"aboutYou": "Über dich",
"aboutPlaceholder": "Erzähl uns, warum du eine großartige Ergänzung für {rank} wärst…",
"applyFor": "Bewirb dich für {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": "Schalte das Hotelradio ein — Live-DJ-Sets, Wünsche und Shoutouts.",
"nowPlaying": "Jetzt läuft",
"nothingPlaying": "Momentan läuft nichts.",
"onAir": "On Air: {dj}",
"noDj": "Kein DJ on Air.",
"audioUnsupported": "Dein Browser unterstützt das Audio-Element nicht.",
"streamOffline": "Der Stream ist derzeit offline.",
"exploreTitle": "Entdecke das Radio",
"exploreSubtitle": "Programm, Shouts, Wünsche und mehr",
"linkSchedule": "Programm",
"linkScheduleText": "Unser wöchentliches Programm mit DJs und Shows.",
"linkShouts": "Shouts",
"linkShoutsText": "Shoutouts und Wünsche aus der Community.",
"linkRequests": "Wünsche",
"linkRequestsText": "Bitte den DJ, deinen Lieblingssong zu spielen.",
"linkApply": "Als DJ bewerben",
"linkApplyText": "Werde Teammitglied und geh auf Sendung.",
"linkLeaderboard": "Bestenliste",
"linkLeaderboardText": "Top-Hörer nach verdienten Punkten.",
"todayTitle": "Heutiges Programm",
"todayTitleWithDay": "Heutiges Programm · {day}",
"todaySubtitle": "Was heute auf Sendung ist",
"fullWeek": "Ganze Woche →",
"noShowsToday": "Heute sind keine Sendungen geplant.",
"colTime": "Zeit",
"colShow": "Sendung",
"colDj": "DJ",
"untitledShow": "Unbenannte Sendung",
"userNumber": "Benutzer #{id}"
},
"radioSchedule": {
"title": "Radiosendungplan",
"subtitle": "Unser wöchentliches Programm mit DJs und Shows",
"empty": "Noch keine Sendungen geplant.",
"colDay": "Tag",
"colTime": "Zeit",
"colDj": "DJ",
"colShow": "Sendung",
"noShows": "Keine Sendungen"
},
"radioShouts": {
"title": "Radio Shouts",
"subtitle": "Shoutouts und Wünsche aus der Community",
"postTitle": "Einen Shout posten",
"postSubtitle": "Sende eine Nachricht an den DJ, der on Air ist",
"messageLabel": "Deine Nachricht",
"messagePlaceholder": "Sende einen Shout an den DJ…",
"shoutButton": "Shout",
"loginToPost": "Melde dich an, um einen Shout zu posten.",
"latestTitle": "Neueste Shouts",
"latestSubtitle": "Die aktuellsten Nachrichten von Hörern",
"empty": "Noch keine Shouts. Sei der Erste!",
"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."
}
},
"radioContests": {
"title": "Radio-Wettbewerbe",
"subtitle": "Schalte ein und nimm an unseren neuesten On-Air-Wettbewerben teil",
"empty": "Noch keine Wettbewerbe.",
"contestLabel": "Wettbewerb #{id}",
"dateUnknown": "Datum unbekannt"
},
"radioGiveaways": {
"title": "Radio-Gewinnspiele",
"subtitle": "Hör zu und gewinne bei unseren Radio-Gewinnspielen",
"empty": "Noch keine Gewinnspiele.",
"giveawayLabel": "Gewinnspiel #{id}",
"dateUnknown": "Datum unbekannt"
},
"radioLeaderboard": {
"title": "Radio-Hörer-Bestenliste",
"subtitle": "Top 50 Hörer nach Punkten, die sie durchs Radiohören verdient haben",
"empty": "Noch keine Hörerpunkte zu sehen.",
"colRank": "Rang",
"colAvatar": "Avatar",
"colListener": "Hörer",
"colPoints": "Punkte"
},
"radioApply": {
"title": "Bewirb dich als Radio-DJ",
"subtitle": "Erzähl uns von dir und warum du eine großartige Bereicherung für das Radioteam wärst",
"latestTitle": "Deine letzte Bewerbung",
"statusLabel": "Status:",
"submittedOn": "· eingereicht am {date}",
"submitAgain": "Du kannst unten erneut einreichen, wenn sich deine Angaben geändert haben.",
"formTitle": "Bewerbungsformular",
"formSubtitle": "Alle mit * markierten Felder sind Pflichtfelder",
"realNameLabel": "Vollständiger Name",
"realNamePlaceholder": "Dein vollständiger Name",
"ageLabel": "Alter",
"availabilityLabel": "Verfügbarkeit",
"availabilityPlaceholder": "An welchen Tagen und zu welchen Zeiten kannst du senden?",
"musicStyleLabel": "Musikrichtung",
"musicStylePlaceholder": "z.B. House, Pop, Hip-Hop",
"experienceLabel": "Erfahrung",
"optional": "(optional)",
"experiencePlaceholder": "Frühere DJ- oder Moderationserfahrung?",
"motivationLabel": "Motivation",
"motivationPlaceholder": "Warum möchtest du dem Radioteam beitreten?",
"submitButton": "Bewerbung einreichen",
"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": "Kontoeinstellungen",
"accountSettingsSubtitle": "Verwalte dein Profil, deine Sicherheit und verbundene Konten",
"publicProfile": "Dein öffentliches Profil",
"noMotto": "Kein Motto",
"noEmail": "Keine E-Mail hinterlegt",
"changeMotto": "Motto ändern",
"changeMottoSubtitle": "Aktualisiert sich sofort im Spiel, wenn du online bist",
"mottoPlaceholder": "Dein Motto",
"saveMotto": "Motto speichern",
"securityTitle": "Sicherheit",
"securitySubtitle": "Zwei-Faktor-Authentifizierung",
"securityDescription": "Füge deinem Konto eine zweite Sicherheitsebene hinzu.",
"twoFactorLink": "Zwei-Faktor-Authentifizierung"
},
"settings2fa": {
"backToSettings": "← Einstellungen",
"title": "Zwei-Faktor-Authentifizierung",
"subtitle": "Füge eine zweite Sicherheitsebene mit einer Authenticator-App hinzu",
"nowEnabled": "2FA ist jetzt aktiviert. 🔒",
"disabledNotice": "2FA wurde deaktiviert.",
"badCode": "Dieser Code war nicht gültig — versuche es erneut.",
"noAppKeyPrefix": "2FA ist nicht verfügbar, bis",
"noAppKeyMiddle": "konfiguriert ist (derselbe Laravel",
"noAppKeySuffix": "wie deine AtomCMS-Installation, damit vorhandene Geheimnisse lesbar bleiben).",
"isEnabled": "2FA ist aktiviert",
"onYourAccount": "auf deinem Konto.",
"disable": "2FA deaktivieren",
"scanOrEnter": "Scanne oder gib diesen Schlüssel ein",
"scanInstructions": "Füge dies zu Google Authenticator / Authy hinzu und gib dann den 6-stelligen Code zur Bestätigung ein.",
"manualKey": "Manueller Schlüssel:",
"codePlaceholder": "6-stelliger Code",
"confirm": "Bestätigen",
"enableIntro": "Füge eine zweite Sicherheitsebene mit einer Authenticator-App hinzu.",
"enable": "2FA aktivieren",
"rateLimit": "Too many attempts. Please wait before trying again."
},
"title": "Verbundene Konten",
"subtitle": "Verknüpfe ein Social-Media-Konto, damit du dich mit einem Klick anmelden kannst",
"connected": "Verbunden",
"unavailable": "Nicht verfügbar",
"login": {
"title": "Anmelden",
"subtitle": "Willkommen zurück — melde dich an, um das Hotel zu betreten.",
"subtitle2fa": "Gib den 6-stelligen Code aus deiner Authenticator-App ein.",
"usernamePlaceholder": "Benutzername",
"passwordPlaceholder": "Passwort",
"codePlaceholder": "2FA-Code",
"pleaseWait": "Bitte warten…",
"verify": "Verifizieren",
"signIn": "Anmelden",
"or": "oder",
"noAccount": "Noch kein Konto?",
"createOne": "Konto erstellen",
"forgotPassword": "Passwort vergessen?",
"errorInvalidCredentials": "Ungültiger Benutzername oder Passwort",
"errorInvalid2fa": "Ungültiger 2FA-Code",
"welcomeBack": "Willkommen zurück",
"welcomeBackSub": "Melde dich an, um zu {hotelName} zu gelangen",
"errorUnverified": "Please verify your email before signing in.",
"errorCaptcha": "Captcha verification failed. Please try again."
},
"register": {
"title": "Konto erstellen",
"subtitle": "Werde Mitglied im Hotel — es dauert nur einen Moment.",
"username": "Benutzername",
"email": "E-Mail",
"password": "Passwort",
"confirmPassword": "Passwort wiederholen",
"usernamePlaceholder": "Benutzername",
"emailPlaceholder": "E-Mail",
"passwordPlaceholder": "Passwort (min. 6 Zeichen)",
"confirmPasswordPlaceholder": "Passwort wiederholen",
"selectOutfit": "Wähle dein Outfit",
"termsAccept": "Ich bin 18+ und akzeptiere die {hotel} AGB & Regeln.",
"createAccount": "Konto erstellen",
"creatingAccount": "Konto wird erstellt...",
"redirecting": "Weiterleitung zu deinem Account...",
"alreadyHaveAccount": "Bereits ein Konto? Anmelden!",
"register": "Registrieren",
"termsError": "Du musst die AGB & Regeln akzeptieren, um dich zu registrieren.",
"usernameError": "Benutzername ist erforderlich.",
"emailError": "Eine gültige E-Mail ist erforderlich.",
"passwordError": "Das Passwort muss mindestens 6 Zeichen lang sein.",
"confirmPasswordError": "Passwörter stimmen nicht überein.",
"termsRequired": "Du musst die AGB & Regeln akzeptieren.",
"usernameRequired": "Benutzername ist erforderlich.",
"emailRequired": "E-Mail ist erforderlich.",
"passwordRequired": "Passwort ist erforderlich.",
"passwordsDontMatch": "Passwörter stimmen nicht überein.",
"alreadyHaveAccountPre": "Hast du bereits ein Konto?",
"alreadyHaveAccountLink": "Anmelden",
"whoIsOnline": "Wer ist online",
"usersOnline": "{count} online",
"accepted": "Accepted & agreed",
"showPassword": "Show",
"hidePassword": "Hide",
"accountDetails": "Account details",
"credentials": "Credentials & security"
},
"forgot": {
"title": "Passwort zurücksetzen",
"subtitle": "Wir senden dir einen sicheren Link, um ein neues Passwort zu erstellen.",
"sentNotice": "Wenn diese E-Mail registriert ist, wurde ein Reset-Link gesendet. Überprüfe deinen Posteingang.",
"emailPlaceholder": "Deine E-Mail",
"sendResetLink": "Reset-Link senden",
"backToLogin": "Zurück zur Anmeldung",
"errorCaptcha": "Captcha verification failed. Please try again."
},
"reset": {
"title": "Neues Passwort festlegen",
"subtitle": "Wähle ein sicheres Passwort, das du sonst nirgendwo verwendest.",
"passwordPlaceholder": "Neues Passwort (min. 6 Zeichen)",
"resetPassword": "Passwort zurücksetzen",
"backToLogin": "Zurück zur Anmeldung"
},
"verify": {
"verifiedTitle": "Du bist startklar",
"verifiedSubtitle": "E-Mail verifiziert",
"verifiedBody": "Deine E-Mail-Adresse wurde verifiziert. Du kannst dich jetzt anmelden und spielen.",
"goToLogin": "Zur Anmeldung",
"alreadyTitle": "Bereits verifiziert",
"alreadySubtitle": "Nichts zu tun",
"alreadyBody": "Diese E-Mail-Adresse wurde bereits bestätigt.",
"unavailableTitle": "Später nochmal versuchen",
"unavailableSubtitle": "Server nicht erreichbar",
"unavailableBody": "Wir konnten den Server nicht erreichen, um deine E-Mail zu verifizieren. Bitte versuche den Link später erneut.",
"invalidTitle": "E-Mail-Verifizierung",
"invalidSubtitle": "Ungültiger oder abgelaufener Link",
"invalidBody": "Dieser Verifizierungslink ist nicht gültig. Stelle sicher, dass du den vollständigen Link aus deiner E-Mail geöffnet hast, oder fordere einen neuen an.",
"backToLogin": "Zurück zur Anmeldung"
},
"banned": {
"title": "Du bist gebannt",
"subtitle": "Konto gesperrt",
"body": "Dein Konto wurde vom Hotel gesperrt.",
"reasonLabel": "Grund:",
"permanent": "Dieser Bann ist permanent.",
"expires": "Läuft ab am {date}.",
"contactStaff": "Wenn du glaubst, dass dies ein Fehler ist, wende dich an das Team."
},
"maintenance": {
"title": "{hotel} wird gewartet",
"subtitle": "Wir sind bald zurück",
"staffCanLogIn": "Teammitglieder können sich weiterhin anmelden."
},
"admin": {
"nav": {
"overview": "Übersicht",
"dashboard": "Dashboard",
"content": "Inhalte",
"articles": "Artikel",
"tags": "Tags",
"navigator": "Navigator",
"helpCenter": "Hilfecenter",
"advertisements": "Werbung",
"writeableBoxes": "Editierbare Boxen",
"photos": "Fotos",
"tickets": "Tickets",
"events": "Events",
"polls": "Polls",
"banners": "Banners",
"prefixes": "Prefixes",
"usersAndAccess": "Benutzer & Zugang",
"users": "Benutzer",
"bans": "Banns",
"ipManagement": "IP-Verwaltung",
"vpn": "VPN",
"applications": "Bewerbungen",
"teams": "Teams",
"permissions": "Berechtigungen",
"onlineUsers": "Online users",
"moderation": "Moderation",
"economy": "Wirtschaft",
"catalog": "Katalog",
"shop": "Shop",
"transactions": "Transaktionen",
"vouchers": "Gutscheine",
"subscriptions": "Abonnements",
"rareValues": "Seltene Werte",
"badges": "Abzeichen",
"achievements": "Errungenschaften",
"calendar": "Kalender",
"radio": "Radio",
"radioHistory": "Radio-Verlauf",
"radioBanners": "Banner",
"radioEmbed": "Einbettung",
"radioApiKeys": "API-Schlüssel",
"radioModeration": "Moderation",
"radioSettings": "Einstellungen",
"radioMonitoring": "Überwachung",
"radioPoints": "Punkte",
"radioRanks": "Ränge",
"radioAutodj": "Auto DJ",
"system": "System",
"commandocentrum": "Commandocentrum",
"emulator": "Emulator",
"alerts": "Alarme",
"logs": "Logs",
"auditLog": "Audit log",
"analytics": "Analytics",
"devops": "DevOps",
"wordFilter": "Wortfilter",
"maintenance": "Wartung",
"rooms": "Räume",
"emailTemplates": "E-Mail-Vorlagen",
"theme": "Design",
"media": "Medien",
"favicon": "Favicon",
"sounds": "Sounds",
"translations": "Übersetzungen",
"import": "Importieren",
"settings": "Einstellungen",
"backToSite": "Zurück zur Website",
"housekeeping": "Hausverwaltung",
"hotelManagementPanel": "Hotel-Verwaltungsbereich",
"rankLabel": "Rang {rank}",
"hubNewsMedia": "News & media",
"hubSiteContent": "Site content",
"hubEngagement": "Engagement",
"hubUsers": "Users",
"hubAccess": "Access & security",
"hubCatalog": "Catalog & rares",
"hubShop": "Shop & payments",
"hubTools": "Tools",
"hubObservability": "Observability",
"helpTickets": "Help-center tickets",
"marketplace": "Marketplace",
"expandAll": "Expand all",
"collapseAll": "Collapse all",
"searchMenu": "Menü durchsuchen…",
"clearMenuSearch": "Menüsuche löschen",
"noMenuResults": "Keine passenden Seiten.",
"community": "Community",
"monitoring": "Monitoring",
"staffAccess": "Ranks & permissions",
"multiAccounts": "Multi-accounts",
"chatLog": "Chat log",
"commandLog": "Command log",
"tradeLog": "Trade log",
"tools": "Tools",
"guilds": "Guilds",
"itemsBase": "Items base",
"adminMenu": "Admin menu",
"studio": "Studio",
"operationsCenter": "Operations center",
"catalogMaintenance": "Catalog maintenance",
"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"
},
"peopleSupport": "Users and support",
"catalogFurniture": "Catalog and furniture",
"communityContent": "Community and content",
"staffPermissions": "Staff and access",
"cmsErrors": "CMS errors",
"themeBuilder": "Theme builder",
"openSidebar": "Open menu",
"closeSidebar": "Close menu"
},
"dashboard": {
"title": "Dashboard",
"subtitle": "Hotel-Übersicht & Live-Status",
"playersOnline": "Spieler online",
"articles": "Artikel",
"activeBans": "Aktive Banns",
"database": "Datenbank",
"databaseConnected": "Verbunden",
"databaseDown": "Ausgefallen",
"usersByRank": "Benutzer nach Rang",
"noAccountsToBreakDown": "Noch keine Konten aufzuschlüsseln",
"rankLabel": "Rang {rank}",
"rankWithCount": "Rang {rank}: {count} Konten",
"recentStaffActivity": "Letzte Team-Aktivität",
"viewAll": "Alle anzeigen",
"noStaffActivityLogged": "Noch keine Team-Aktivität protokolliert",
"totalAccounts": "{count} total accounts"
},
"articles": {
"title": "Artikel",
"subtitle": "Nachrichtenartikel — die 50 neuesten",
"newArticle": "+ Neuer Artikel",
"edit": "Bearbeiten",
"delete": "Löschen",
"noArticles": "Noch keine Artikel",
"confirmDelete": "Bist du sicher, dass du „{title}“ löschen möchtest?",
"colTitle": "Titel",
"colSlug": "Slug",
"colAuthor": "Autor",
"colCreated": "Erstellt",
"colActions": "Aktionen",
"form": {
"title": "Titel",
"titlePlaceholder": "Artikel-Titel",
"slug": "Slug",
"slugPlaceholder": "artikel-url-slug",
"category": "Kategorie",
"categoryPlaceholder": "Wähle eine Kategorie",
"body": "Inhalt",
"bodyPlaceholder": "Schreibe den Artikel-Inhalt…",
"image": "Bild",
"imagePlaceholder": "https://example.com/image.png",
"thumbnail": "Vorschaubild",
"thumbnailPlaceholder": "https://example.com/thumb.png",
"published": "Veröffentlicht",
"featured": "Hervorgehoben",
"save": "Artikel speichern",
"saving": "Wird gespeichert…",
"deleteArticle": "Artikel löschen",
"deleteConfirm": "Dieser Vorgang kann nicht rückgängig gemacht werden. Der Artikel wird dauerhaft entfernt.",
"cancel": "Abbrechen",
"autosaveLoading": "Loading saved drafts…",
"autosaveReady": "Private draft autosave is ready.",
"autosaveSaving": "Saving private draft…",
"autosaveSaved": "Private draft saved. Publication changes require Save.",
"autosaveFailed": "Draft recovery is unavailable. Keep this page open and use Save; reload to retry recovery.",
"autosaveConflict": "Another tab changed this draft. Autosave is paused: reload to review the newer draft before continuing.",
"recoveryFound": "An unfinished private draft is available. Recover or discard it to enable autosave.",
"recoverDraft": "Recover draft",
"discardDraft": "Discard saved draft",
"confirmRecovery": "Replace the current editor content with this recovered draft? It will remain unpublished until you save.",
"confirmDiscardDraft": "Permanently discard your saved recovery draft? The current editor content will remain.",
"revisionHistory": "Previous saved versions (latest 20)",
"restoreRevision": "Restore into editor",
"confirmRevision": "Replace the current editor content with this previous version as a draft? Review it and choose a publication status before saving.",
"editConflict": "This article changed after you opened it. Your changes were not applied. Copy your work, reload the article, and merge the changes before saving again.",
"retryRecovery": "Reload recovery without changing this form",
"status": "Status",
"statusDraft": "Draft",
"statusScheduled": "Scheduled",
"statusPublished": "Published",
"publishAt": "Publish at",
"publishedAt": "Published at",
"titleRequired": "Enter a title.",
"titleTooLong": "The title must be at most 255 characters.",
"summaryTooLong": "The summary must be at most 255 characters.",
"imageTooLong": "The image URL must be at most 255 characters.",
"invalidStatus": "Select a valid publication status.",
"publishDateRequired": "Choose a valid publication date.",
"saveFailedReference": "Could not save the article. Your content is preserved. Error reference: {reference}",
"articleNotFound": "Article not found.",
"summary": "Summary",
"imageNotFound": "Image not found. Enter a valid URL or browse.",
"imagePreview": "Article image preview",
"previewTitle": "Article preview",
"previewDescription": "Content preview. The published page applies the site theme.",
"previewFrame": "Article content preview",
"imageInvalid": "Use a local image path or an HTTP/HTTPS image URL without credentials.",
"linksInvalid": "Review the content links: only local, HTTP/HTTPS and email links are allowed."
},
"listActionError": "The article action could not be completed.",
"listStatus": "Publication status",
"listStatus_all": "All articles",
"listStatus_draft": "Draft",
"listStatus_published": "Published",
"listStatus_scheduled": "Scheduled",
"listSearch": "Search title or summary",
"listApply": "Apply",
"listLoading": "Loading…",
"listReset": "Reset filters",
"listUnavailable": "Articles are temporarily unavailable. Try again.",
"listRetry": "Try again",
"listTotal": "{count, plural, one {# matching article} other {# matching articles}}",
"listNoMatches": "No articles match these filters. Change the search or reset the filters.",
"listPagination": "Article pages",
"listPrevious": "Previous",
"listNext": "Next",
"listPage": "Page {page} of {total}",
"articlesShown": "Articles shown",
"latest": "Latest article",
"mostRecentPost": "Most recent publication",
"recentArticles": "Recent articles"
},
"tags": {
"title": "Tags",
"subtitle": "Artikel-Tags / Kategorien",
"addTag": "Tag hinzufügen",
"name": "Name",
"namePlaceholder": "Tag-Name",
"backgroundColour": "Hintergrundfarbe",
"createTag": "Tag erstellen",
"editTag": "Tag bearbeiten",
"updateTag": "Tag aktualisieren",
"deleteTag": "Tag löschen",
"confirmDelete": "„{name}“ löschen?",
"noTags": "Noch keine Tags",
"colId": "ID",
"colTag": "Tag",
"colColour": "Farbe",
"colUsedBy": "Verwendet von",
"colCreated": "Erstellt",
"colActions": "Aktionen",
"databaseError": "Tags could not be loaded. Please try again.",
"totalTags": "Total tags",
"inUse": "In use",
"attachedToContent": "Attached to content",
"unused": "Unused",
"allTags": "All tags"
},
"navigation": {
"title": "Navigator",
"flatCategories": "Flache Kategorien",
"publicRooms": "Öffentliche Räume",
"addCategory": "Kategorie hinzufügen",
"editCategory": "Kategorie bearbeiten",
"deleteCategory": "Kategorie löschen",
"categoryName": "Kategoriename",
"categoryNamePlaceholder": "z.B. Chill & Chat",
"categoryOrder": "Reihenfolge",
"roomName": "Raumname",
"roomNamePlaceholder": "z.B. Welcome Lounge",
"roomId": "Raum-ID",
"roomIdPlaceholder": "Numerische Raum-ID",
"save": "Speichern",
"cancel": "Abbrechen",
"noCategories": "Noch keine Kategorien",
"noPublicRooms": "Noch keine öffentlichen Räume",
"colId": "ID",
"colName": "Name",
"colOrder": "Reihenfolge",
"colRooms": "Räume",
"colActions": "Aktionen",
"publicFlatcats": "Public room categories",
"markedPublic": "Categories marked as public",
"visibleRooms": "Visible rooms",
"rows": "rows",
"unnamed": "Unnamed room"
},
"helpCenter": {
"title": "Hilfecenter",
"subtitle": "Support-Einträge & FAQ-Verwaltung",
"entries": "Einträge",
"newEntry": "+ Neuer Eintrag",
"edit": "Bearbeiten",
"delete": "Löschen",
"noEntries": "Noch keine Einträge",
"confirmDelete": "„{title}“ löschen?",
"colId": "ID",
"colTitle": "Titel",
"colCategory": "Kategorie",
"colCreated": "Erstellt",
"colActions": "Aktionen",
"form": {
"title": "Titel",
"titlePlaceholder": "Eintrag-Titel",
"category": "Kategorie",
"categoryPlaceholder": "Wähle eine Kategorie",
"body": "Inhalt",
"bodyPlaceholder": "Schreibe die Antwort…",
"save": "Eintrag speichern",
"saving": "Wird gespeichert…",
"deleteEntry": "Eintrag löschen",
"cancel": "Abbrechen"
},
"withButton": "With a button",
"smallBoxes": "Small boxes"
},
"ads": {
"title": "Werbung",
"subtitle": "Hotel-Werbung und Werbebanner verwalten",
"newAd": "+ Neue Anzeige",
"edit": "Bearbeiten",
"delete": "Löschen",
"noAds": "Noch keine Werbung",
"confirmDelete": "Diese Anzeige löschen?",
"colId": "ID",
"colName": "Name",
"colImage": "Bild",
"colUrl": "URL",
"colViews": "Aufrufe",
"colStatus": "Status",
"colCreated": "Erstellt",
"colActions": "Aktionen",
"form": {
"name": "Name",
"namePlaceholder": "Anzeigenname",
"image": "Bild-URL",
"imagePlaceholder": "https://example.com/banner.png",
"url": "Ziel-URL",
"urlPlaceholder": "https://example.com",
"enabled": "Aktiviert",
"save": "Anzeige speichern",
"saving": "Wird gespeichert…",
"deleteAd": "Anzeige löschen",
"cancel": "Abbrechen"
},
"deleteSuccess": "Advertisement deleted!",
"deleteError": "Failed to delete advertisement.",
"adsCount": "Total ads",
"latest": "Latest",
"mostRecentAd": "Most recent ad",
"allAds": "All advertisements",
"colPreview": "Preview"
},
"writeableBoxes": {
"title": "Editierbare Boxen",
"subtitle": "Inhaltsfelder, die im Hotel und CMS angezeigt werden",
"newBox": "Neue Box",
"edit": "Bearbeiten",
"delete": "Löschen",
"noBoxes": "Noch keine editierbaren Boxen",
"confirmDelete": "Diese Box löschen?",
"colId": "ID",
"colName": "Name",
"colLocation": "Position",
"colUpdated": "Aktualisiert",
"colActions": "Aktionen",
"form": {
"name": "Name",
"namePlaceholder": "Box-Name",
"location": "Position",
"locationPlaceholder": "z.B. startseite, sidebar",
"content": "Inhalt",
"contentPlaceholder": "Schreibe den Box-Inhalt…",
"enabled": "Aktiviert",
"save": "Box speichern",
"saving": "Wird gespeichert…",
"deleteBox": "Box löschen",
"cancel": "Abbrechen",
"iconEmoji": "Icon or emoji"
},
"totalBoxes": "Total boxes",
"active": "Active",
"shownOnHomePage": "Shown on the home page",
"position": "Position",
"boxes": "Content boxes",
"hidden": "Hidden",
"hide": "Hide",
"activate": "Activate"
},
"photos": {
"title": "Foto-Moderation",
"subtitle": "Aktuelle In-Game-Fotos",
"delete": "Löschen",
"approve": "Genehmigen",
"noPhotos": "Keine Fotos zu moderieren",
"confirmDelete": "Dieses Foto dauerhaft löschen?",
"colId": "ID",
"colPreview": "Vorschau",
"colUser": "Benutzer",
"colRoom": "Raum",
"colTimestamp": "Zeitstempel",
"colActions": "Aktionen",
"photoAlt": "Benutzerfoto #{id}",
"byUser": "von {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",
"purgeHint": "Delete removes the database row and best-effort deletes a matching file under /public. External CDN URLs are not purged."
},
"users": {
"title": "Benutzer",
"subtitle": "Hotel-Konten durchsuchen, suchen und verwalten",
"search": "Suchen",
"searchPlaceholder": "Suche nach Benutzername, E-Mail oder ID…",
"searchResults": "{count, plural, one {# Ergebnis} other {# Ergebnisse}} für „{query}“",
"noResults": "Keine Benutzer gefunden",
"colId": "ID",
"colUsername": "Benutzername",
"colEmail": "E-Mail",
"colRank": "Rang",
"colOnline": "Online",
"colRegistered": "Registriert",
"colLastOnline": "Zuletzt online",
"colActions": "Aktionen",
"yes": "Ja",
"no": "Nein",
"edit": "Bearbeiten",
"setRank": "Rang setzen",
"disconnect": "Trennen",
"alert": "Alarm",
"ban": "Bannen",
"detail": {
"title": "Benutzer: {username}",
"subtitle": "Kontodetails und -verwaltung",
"overview": "Übersicht",
"actions": "Aktionen",
"username": "Benutzername",
"email": "E-Mail",
"motto": "Motto",
"rank": "Rang",
"credits": "Credits",
"duckets": "Duckets",
"diamonds": "Diamanten",
"online": "Online",
"registered": "Registriert",
"lastOnline": "Zuletzt online",
"ipAddress": "IP-Adresse",
"machineId": "Maschinen-ID",
"sendAlert": "Alarm senden",
"sendMessage": "Nachricht senden",
"disconnectUser": "Benutzer trennen",
"banUser": "Benutzer bannen",
"resetPassword": "Passwort zurücksetzen",
"deleteUser": "Benutzer löschen",
"confirmDelete": "Bist du sicher, dass du {username} löschen möchtest? Dies kann nicht rückgängig gemacht werden.",
"tabInfo": "Account Info",
"tabBadges": "Badges ({count})",
"tabRooms": "Rooms ({count})",
"tabSanctions": "Sanctions ({count})",
"tabActivity": "Activity"
},
"editForm": {
"title": "Benutzer bearbeiten: {username}",
"subtitle": "Kontodetails ändern",
"username": "Benutzername",
"usernamePlaceholder": "Benutzername",
"email": "E-Mail",
"emailPlaceholder": "[email protected]",
"motto": "Motto",
"mottoPlaceholder": "Benutzer-Motto",
"rank": "Rang",
"credits": "Credits",
"duckets": "Duckets",
"diamonds": "Diamanten",
"save": "Änderungen speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
},
"presentation": {
"users": "Users",
"edit": "Edit",
"view": "View",
"rank": "Rank {rank}",
"online": "Online",
"offline": "Offline",
"banned": "Banned",
"credits": "credits",
"diamonds": "diamonds",
"duckets": "duckets",
"pixels": "pixels",
"rooms": "Rooms",
"messages": "Messages",
"trades": "Trades",
"accountDetails": "Account details",
"registered": "Registered",
"lastLogin": "Last login",
"ipRegister": "Registration IP",
"ipCurrent": "Current IP",
"machineId": "Device ID",
"email": "Email",
"gender": "Gender",
"never": "Never",
"findIp": "Find users with this IP",
"enabled": "Enabled",
"disabled": "Disabled",
"unavailable": "Not available",
"noBadges": "No badges assigned"
},
"create": {
"newUser": "New user",
"title": "Create user",
"description": "Creates the account immediately with a default avatar and 5,000 credits, pixels, duckets and diamonds.",
"username": "Username",
"email": "Email",
"password": "Password",
"rank": "Rank",
"rankOption": "Rank {rank}",
"motto": "Motto (optional)",
"usernamePlaceholder": "NewHabbo",
"passwordPlaceholder": "At least 6 characters",
"mottoPlaceholder": "I'm new here!",
"generate": "Generate",
"passwordGenerated": "Password generated in the password field.",
"required": "Username, email and password are required.",
"invalidUsername": "Use 3–20 characters: letters, numbers, _ or -.",
"passwordLength": "The password must contain at least 6 characters.",
"created": "User {username} created."
},
"overview": {
"title": "Overview",
"hint": "Up to 5 recent records per source. Only sections you can access are shown.",
"restricted": "You do not have permission to view operational records.",
"sanctions": "Recent bans",
"mute": "Active mute",
"tickets": "Support tickets",
"help": "Help center requests",
"reports": "In-game reports",
"transactions": "Payments",
"purchases": "Catalog purchases",
"activity": "Recorded staff actions",
"openModule": "Open management",
"purchaseHint": "Recorded quantities and currency costs.",
"purchaseDetail": "Quantity: {amount} · Credits: {credits} · Points: {points} (type {type})",
"activityHint": "Staff audit entries targeting this account. This is not a complete history of player activity.",
"muteUntil": "Muted until {date}",
"error": "This source could not be loaded. Refresh the page to try again.",
"empty": "No records found.",
"status": {
"active": "Active",
"expired": "Expired",
"open": "Open",
"closed": "Closed",
"reported": "Reported user",
"reporter": "Reporter"
}
}
},
"bans": {
"title": "Banns",
"subtitle": "Konto-, IP- und Maschinen-Banns verwalten",
"newBan": "Neuer Bann",
"edit": "Bearbeiten",
"delete": "Löschen",
"noBans": "Noch keine Banns",
"confirmDelete": "Diesen Bann entfernen?",
"colId": "ID",
"colValue": "Wert",
"colType": "Typ",
"colReason": "Grund",
"colBannedBy": "Gebannt von",
"colExpires": "Läuft ab",
"colCreated": "Erstellt",
"colActions": "Aktionen",
"form": {
"value": "Wert",
"valuePlaceholder": "Benutzername, IP oder Maschinen-ID",
"type": "Typ",
"typeUser": "Benutzer",
"typeIp": "IP",
"typeMachine": "Maschine",
"reason": "Grund",
"reasonPlaceholder": "Bann-Grund",
"expiresAt": "Läuft ab am",
"permanent": "Permanent",
"save": "Bann speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
},
"activeBans": "Active bans",
"permanent": "Permanent bans",
"accountBans": "Account bans",
"userIdPlaceholder": "User ID",
"typeAccount": "Account",
"typeIp": "IP address",
"typeMachine": "Device",
"typeSuper": "Account, IP and device",
"hoursPlaceholder": "Duration in hours",
"reasonPlaceholder": "Reason for the ban",
"ban": "Ban user",
"colUserId": "User ID",
"lift": "Lift ban"
},
"ip": {
"title": "IP-Verwaltung",
"subtitle": "IP-Whitelist und Blacklist verwalten",
"whitelist": "Whitelist",
"blacklist": "Blacklist",
"addIp": "IP hinzufügen",
"ipAddress": "IP-Adresse",
"ipAddressPlaceholder": "z.B. 127.0.0.1",
"reason": "Grund",
"reasonPlaceholder": "Grund für die Listung",
"add": "Hinzufügen",
"remove": "Entfernen",
"confirmRemove": "Diese IP aus der {list} entfernen?",
"noWhitelistedIps": "Keine IPs auf der Whitelist",
"noBlacklistedIps": "Keine IPs auf der Blacklist",
"colIp": "IP",
"colReason": "Grund",
"colAdded": "Hinzugefügt",
"colActions": "Aktionen",
"whitelisted": "Allowed IP addresses",
"blacklisted": "Blocked IP addresses",
"asnPlaceholder": "ASN (optional)",
"colAsn": "ASN"
},
"vpn": {
"title": "VPN / Proxy-Erkennung",
"subtitle": "VPN- und Proxy-Erkennungseinstellungen konfigurieren",
"enabled": "Aktiviert",
"apiKey": "API-Schlüssel",
"apiKeyPlaceholder": "Dein VPN-Erkennungs-API-Schlüssel",
"apiKeyHint": "Leer lassen zum Deaktivieren",
"blockOnDetect": "Bei Erkennung blockieren",
"blockOnDetectHint": "Benutzer hinter einem VPN oder Proxy automatisch blockieren",
"save": "Einstellungen speichern",
"saving": "Wird gespeichert…",
"settingsSaved": "VPN-Einstellungen erfolgreich gespeichert",
"protection": "VPN protection",
"on": "Enabled",
"off": "Disabled",
"providerLabel": "Provider: {provider}",
"notScreened": "Connections are not checked for VPN use.",
"settings": "VPN settings",
"provider": "Provider",
"providerHint": "Choose the service used to check incoming connections.",
"blockMessage": "Blocked connection message",
"blockMessagePlaceholder": "Please disable your VPN and try again.",
"blockMessageHint": "Shown when a connection is blocked by VPN protection.",
"rawIpTitle": "IP address lists",
"rawIpDescription": "Manage individual addresses in <ipLink>IP management</ipLink>.",
"openIpManagement": "Open IP management"
},
"applications": {
"title": "Team-Bewerbungen",
"subtitle": "Ausstehende und geprüfte Bewerbungen",
"pending": "Ausstehend",
"approved": "Genehmigt",
"rejected": "Abgelehnt",
"noApplications": "Noch keine Bewerbungen",
"colId": "ID",
"colApplicant": "Bewerber",
"colPosition": "Position",
"colStatus": "Status",
"colSubmitted": "Eingereicht",
"colActions": "Aktionen",
"review": "Prüfen",
"approve": "Genehmigen",
"reject": "Ablehnen",
"confirmApprove": "{username} für {position} genehmigen?",
"confirmReject": "{username}s Bewerbung für {position} ablehnen?",
"detail": {
"title": "Bewerbung von {username}",
"subtitle": "Für {position}",
"about": "Über den Bewerber",
"message": "Bewerbungsnachricht",
"status": "Status",
"submitted": "Eingereicht",
"noMessage": "Keine Nachricht angegeben"
},
"applicationsTitle": "Applications ({count})",
"userNumber": "User #{id}",
"rankLabel": "Rank {rank}"
},
"teams": {
"title": "Teams",
"subtitle": "Team-Rang-Namen und Beschreibungen festlegen",
"addRank": "Rang hinzufügen",
"editRank": "Rang bearbeiten",
"deleteRank": "Rang löschen",
"noTeams": "Noch keine Rang-Definitionen",
"confirmDelete": "Rang {id}-Definition löschen?",
"colId": "ID",
"colRank": "Rang",
"colName": "Name",
"colBadge": "Abzeichen",
"colColour": "Farbe",
"colActions": "Aktionen",
"form": {
"rankId": "Rang-ID",
"rankIdPlaceholder": "Numerische Rang-ID",
"name": "Name",
"namePlaceholder": "z.B. Administrator",
"badge": "Abzeichen-Code",
"badgePlaceholder": "z.B. ADM001",
"colour": "Farbe",
"colourPlaceholder": "z.B. #ff0000",
"save": "Team-Definition speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
},
"teamRanks": "Staff ranks",
"visible": "Visible",
"hidden": "Hidden",
"newTeamRank": "New staff rank",
"rankName": "Rank name",
"rankNamePlaceholder": "For example: Moderator",
"badgeCode": "Badge code",
"badgeCodePlaceholder": "For example: ADM",
"jobDescription": "Job description",
"jobDescriptionPlaceholder": "Describe this staff role",
"staffColor": "Staff colour",
"staffColorPlaceholder": "For example: #3366cc",
"hiddenRank": "Hide from the staff page",
"createTeam": "Create staff rank",
"ranksTitle": "Staff ranks ({count})",
"badge": "Badge",
"color": "Colour",
"visibility": "Visibility",
"delete": "Delete"
},
"permissions": {
"title": "Berechtigungen",
"subtitle": "Rangbasierte Berechtigungen für das Admin-Panel verwalten",
"addPermission": "Berechtigung hinzufügen",
"editPermission": "Berechtigung bearbeiten",
"deletePermission": "Berechtigung löschen",
"noPermissions": "Noch keine Berechtigungen konfiguriert",
"confirmDelete": "Diese Berechtigung löschen?",
"colId": "ID",
"colRank": "Rang",
"colPermission": "Berechtigung",
"colCreated": "Erstellt",
"colActions": "Aktionen",
"form": {
"rankId": "Rang-ID",
"rankIdPlaceholder": "Erforderlicher Mindestrang",
"permission": "Berechtigungsschlüssel",
"permissionPlaceholder": "z.B. admin.articles.manage",
"save": "Berechtigung speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
}
},
"catalog": {
"title": "Katalog",
"subtitle": "Katalogseiten und -artikel durchsuchen und verwalten",
"pages": "Seiten",
"items": "Artikel",
"addPage": "Seite hinzufügen",
"editPage": "Seite bearbeiten",
"deletePage": "Seite löschen",
"addItem": "Artikel hinzufügen",
"editItem": "Artikel bearbeiten",
"deleteItem": "Artikel löschen",
"noPages": "Noch keine Katalogseiten",
"noItems": "Keine Artikel auf dieser Seite",
"confirmDeletePage": "Katalogseite „{name}“ löschen?",
"confirmDeleteItem": "Diesen Artikel löschen?",
"colId": "ID",
"colName": "Name",
"colIcon": "Symbol",
"colOrder": "Reihenfolge",
"colItems": "Artikel",
"colEnabled": "Aktiviert",
"colActions": "Aktionen",
"colItemId": "Artikel-ID",
"colItemName": "Artikelname",
"colCostCredits": "Preis (Credits)",
"colCostPoints": "Preis (Punkte)",
"colLimited": "Limitiert",
"pageForm": {
"name": "Name",
"namePlaceholder": "Seitenname",
"icon": "Symbol-ID",
"iconPlaceholder": "Numerische Symbol-ID",
"order": "Reihenfolge",
"enabled": "Aktiviert",
"parent": "Überseite",
"parentNone": "Keine (Stamm)",
"save": "Seite speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
},
"itemForm": {
"itemId": "Artikel-ID",
"itemName": "Artikelname",
"costCredits": "Preis in Credits",
"costDuckets": "Preis in Duckets",
"costDiamonds": "Preis in Diamanten",
"limitedStack": "Limitierte Stückzahl",
"limitedSold": "Limitierte verkauft",
"save": "Artikel speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
},
"packages": {
"openPackages": "Catalog packages",
"title": "Catalog packages",
"description": "Prepare category and price changes in a separate draft. Review the catalog before publishing.",
"createPackage": "New package",
"createDraft": "Create draft",
"draftCreated": "Package draft created. The live catalog has not changed.",
"refresh": "Refresh list",
"searchPackages": "Search packages",
"noPackages": "No packages match this search.",
"choosePackage": "Open a package or create a draft from existing categories.",
"name": "Package name",
"mode": "Publication mode",
"update": "Update existing categories",
"copy": "Create copies",
"updateHint": "Publication applies the package to its existing categories and offers.",
"copyHint": "Publication creates new categories and offers under the selected parent. Furniture references are preserved.",
"sourceCategories": "Source categories",
"packageLimits": "Descendant categories are included. Each package supports up to 200 categories and 500 offers.",
"searchCategories": "Search categories",
"selectedCategories": "Selected: {count}",
"targetParent": "Destination parent category",
"rootCategory": "Catalog root",
"draft": "Draft",
"published": "Published",
"editDraft": "Edit draft",
"catalogPreview": "Catalog preview",
"showBaseline": "Show the original saved snapshot",
"changes": "Before and after",
"entry": "Entry",
"field": "Field",
"before": "Before",
"after": "After",
"noChanges": "No edited fields compared with the original snapshot.",
"copyReview": "The entire package will be copied on publication, even if no fields were edited. The table lists edits to the original snapshot.",
"updateReview": "These draft changes will update existing catalog entries after publication.",
"saveDraft": "Save draft",
"saveHint": "Saving keeps the package as a draft. Save all changes before requesting a publication review.",
"draftSaved": "Draft saved. Publication is a separate step.",
"reviewPublication": "Review publication",
"publicationImpact": "Publication affects {pages} categories and {offers} offers.",
"conflicts": "Publication is blocked by conflicts. Resolve them before requesting another review.",
"readyToPublish": "The saved version passed the publication check. Publishing changes the live catalog.",
"publish": "Publish package",
"confirmPublish": "Publish this reviewed package to the live catalog now?",
"publishedSuccess": "Package published: {pages} categories and {offers} offers.",
"staleReview": "This package changed in another session. Reopen it to review the latest saved version.",
"unsaved": "Unsaved changes",
"discardChanges": "Discard unsaved package changes and continue?",
"working": "Working…",
"requestFailed": "The request failed. Try again.",
"invalidFields": "Check required names, layouts and whole-number fields before saving.",
"category": "Category",
"caption": "Category caption",
"iconImage": "Category icon ID",
"minRank": "Minimum rank",
"orderNum": "Display order",
"pageLayout": "Page layout",
"enabled": "Enabled",
"visible": "Visible",
"clubOnly": "Club members only",
"vipOnly": "VIP members only",
"offers": "Offers ({count})",
"offer": "Offer",
"catalogName": "Offer name",
"costCredits": "Credits",
"costPoints": "Points",
"pointsType": "Points currency ID",
"amount": "Amount",
"searchOffers": "Search offers",
"currentCategoryOffers": "Only the selected category",
"selectMatching": "Select all matching offers ({count})",
"clearSelection": "Clear selection",
"selectedOffers": "Selected offers: {count}",
"select": "Select",
"selectOffer": "Select offer #{id}",
"noOffers": "No offers match these filters.",
"bulkPrices": "Bulk draft prices ({count} selected)",
"bulkHint": "Preview the selected price changes, then accept them into this draft. The live catalog remains unchanged until publication.",
"operation": "Operation",
"set": "Set value",
"add": "Add or subtract",
"percent": "Adjust by percent",
"value": "Value",
"reviewBulk": "Preview prices",
"invalidBulk": "Choose valid numbers and at least one offer. Resulting prices must be nonnegative and within the supported range.",
"acceptBulk": "Accept prices into draft",
"previous": "Previous",
"next": "Next"
},
"integrity": {
"title": "Catalog integrity",
"description": "Check references, category paths, identifiers and furniture icons. Scanning does not change records.",
"catalog": "Catalog",
"normal": "Normal catalog",
"bc": "Builders Club",
"refresh": "Scan again",
"working": "Checking…",
"failed": "The operation could not be completed. Try again.",
"stalePreview": "The catalog changed after the preview. Create a new preview before applying repairs.",
"applied": "{count} categories reattached to the catalog root.",
"iconsUnavailable": "The icon folder could not be read. Icon availability has not been verified.",
"healthy": "No issues found in the completed checks.",
"total": "{count} issues found. Showing {shown}.",
"open": "Open",
"reference": "Reference: {value}",
"repairHint": "Preview categories whose parent no longer exists. Applying moves only these categories to the root and preserves every record. Cycles, missing furniture, icons and identifier conflicts require individual review.",
"preview": "Preview safe repairs",
"planned": "{count} categories will be moved:",
"parentChange": "parent #{from} → catalog root",
"apply": "Apply previewed repairs",
"legacyTitle": "Advanced maintenance actions",
"legacyHint": "These existing maintenance tools can rewrite identifiers and merge or remove duplicate records. They are separate from the non-destructive integrity check and its previewed parent repair.",
"issues": {
"missing_furniture": "Offer references missing furniture",
"invalid_item_ids": "Invalid furniture identifiers",
"missing_page": "Offer references a missing category",
"unreachable_page": "Unreachable category",
"category_cycle": "Category path contains a cycle",
"missing_icon": "Missing furniture icon",
"invalid_offer_id": "Invalid offer identifier",
"duplicate_offer_id": "Repeated offer identifier"
}
},
"bulk": {
"undo": "Undo",
"undoHint": "You can also restore individual offers from audit history.",
"undoSuccess": "Restored {count} offers.",
"previewCount": "{count} of {total} offers will change.",
"success": "Updated {count} offers.",
"selectOffer": "Select offer {name} (#{id})",
"pageEmpty": "No category found.",
"clearSelection": "Clear selection",
"disabledReason": "Save or reset pending edits and wait for current operations before bulk editing.",
"operation": "Operation",
"loadingDestinations": "Loading categories…",
"cancel": "Cancel",
"pagePlaceholder": "Select destination category…",
"noChanges": "The selected values already match. No changes to save.",
"costPoints": "Points price",
"chooseFields": "Check at least one field to change.",
"pageAll": "All categories",
"offer": "Offer",
"costCredits": "Credits",
"invalidPrice": "Enter a valid number. Set and add operations require whole numbers.",
"modes": {
"set": "Set to value",
"add": "Add or subtract",
"percent": "Change by percentage"
},
"fieldHint": "Only checked fields will change.",
"currencies": {
"0": "Duckets",
"5": "Diamonds",
"101": "Snowflakes",
"103": "Hearts",
"104": "Stars",
"105": "Shells"
},
"currency": "Points currency",
"button": "Bulk edit ({count})",
"description": "{count} selected offers. Preview changes before saving.",
"confirm": "Confirm and save {count} offers",
"beforeAfter": "Each cell shows the current value → the new value.",
"requestFailed": "The request failed. Refresh the preview before trying again.",
"priceHint": "Use negative additions or percentages to reduce prices. Percentage results round to the nearest integer; final prices cannot be negative.",
"selectedCount": "{count} offers selected across categories",
"value": "Value",
"unknownCurrency": "Type {type}",
"becomes": "becomes",
"title": "Edit selected offers",
"preview": "Preview changes",
"retryDestinations": "Retry loading categories",
"chooseDestination": "Select a destination category.",
"pageSuggested": "Suggested",
"previewTitle": "Review bulk changes",
"visibilityHint": "Visibility is controlled by the category. Moving offers makes them follow the destination category's visibility.",
"percentage": "Percentage (%)",
"destination": "Destination category",
"pageSearch": "Search categories…",
"back": "Edit changes",
"selectionLimit": "Select at most 500 offers for one operation.",
"refreshing": "Refreshing updated offers…"
},
"workspace": {
"diagnostics": "Diagnostics",
"editor": "Editor",
"normal": "Catalog",
"tree": "Tree",
"table": "Table",
"manager": "Catalog manager",
"backToCategories": "Back to categories",
"retryPage": "Retry loading page",
"retryItems": "Retry loading items",
"hotel": "Hotel",
"sent": "Update request sent",
"sendFailed": "Update request failed",
"unknown": "No status yet",
"disabled": "Not configured",
"exportFailed": "Export failed",
"queued": "Export pending",
"exported": "Export completed",
"retryHotel": "Retry hotel update",
"retryStatus": "Status unavailable — retry",
"saved": "Saved",
"globalSearch": "Search catalog",
"searchPlaceholder": "Category, offer, classname or ID",
"searchNoResults": "No results found",
"searchFailed": "Search failed. Try again.",
"searching": "Searching...",
"category": "Category",
"offer": "Offer",
"duplicate": {
"title": "Duplicate category",
"description": "Copy this category, every descendant and all their offers.",
"name": "New category name",
"destination": "Destination category",
"disabled": "The copied root starts disabled and hidden. Descendants keep their settings; furniture definitions and assets are shared.",
"counts": "{pages} categories and {offers} offers",
"summary": "“{name}” under {destination}",
"cancel": "Cancel",
"working": "Working…",
"confirm": "Confirm duplication",
"preview": "Preview copy",
"saved": "Category and offers duplicated",
"savedPending": "Copy saved; hotel update pending",
"failed": "Duplication failed",
"root": "Catalog root",
"search": "Search categories…",
"empty": "No category found",
"suggested": "Suggested",
"all": "All categories",
"draftBlocked": "Save or discard category edits before duplicating."
},
"unsaved": "Unsaved changes",
"fullEditor": "Full editor",
"saveHint": "Category changes are not saved. Use Save or Ctrl+S.",
"access": {
"enabled": "Enabled",
"enabledHint": "Makes this category available in the catalog.",
"visible": "Visible in navigation",
"visibleHint": "Shows this category in the catalog menu.",
"club": "HC only",
"clubHint": "Restricts access to users with an HC subscription.",
"yes": "Yes",
"no": "No"
},
"preview": {
"label": "Live catalog preview",
"title": "Live preview",
"on": "On",
"off": "Off",
"untitled": "Untitled page",
"noItems": "No offers on this page yet",
"items": "offer(s)",
"disabledHint": "This page is disabled — players cannot see it.",
"suggestedLayout": "Better layout suggested",
"suggestedLayoutReason": "This page {reason}. Switch to “{layout}” to match players’ expectations.",
"applyLayout": "Apply layout"
},
"autoCategory": {
"title": "Auto-Category",
"itemsBadge": "{count} items",
"fromFurni": "From furni",
"emptyPage": "Empty page",
"searchPlaceholder": "Search furni by name or classname…",
"noResults": "No results",
"added": "Added",
"price": "Price",
"free": "Free",
"setPrice": "Set a price",
"credits": "Credits",
"points": "Points",
"pointsType": "Type",
"parent": "Parent",
"root": "Catalog root",
"caption": "Caption",
"captionPlaceholder": "e.g. Chairs, Wallpapers…",
"icon": "Icon",
"pickIcon": "Pick icon",
"layout": "Layout",
"suggestedLayout": "Suggested: {layout}",
"enabled": "Enabled",
"visible": "Visible",
"cancel": "Cancel",
"create": "Create",
"createWithItems": "Create ({count} items)"
},
"organizeImports": {
"title": "Imports organisieren",
"itemsBadge": "{count} Artikel",
"loading": "Importierte Möbel werden geladen…",
"empty": "Keine importierten Möbel gefunden. Importiere zuerst Möbel.",
"loadError": "Imports konnten nicht geladen werden. Versuche es erneut.",
"refresh": "Aktualisieren",
"desc": "Importierte Möbel werden in vorgeschlagene Seiten gruppiert. Prüfe jede Gruppe und erstelle anschließend die Seiten, die du genehmigst.",
"selectAll": "Alle auswählen",
"deselectAll": "Auswahl aufheben",
"mode": "Modus",
"modeCreate": "Neue Seiten erstellen",
"modeMove": "In vorhandene Seite verschieben",
"destination": "Zielseite",
"destinationChosen": "ausgewählt",
"destinationSearchPlaceholder": "Seiten nach Name suchen…",
"noDestResults": "Keine Seiten gefunden",
"destinationHint": "Alle genehmigten Gruppen werden in diese Seite verschoben – es wird keine neue Seite erstellt.",
"chooseDestination": "Wähle zuerst eine Zielseite",
"move": "{count, plural, one {1 Artikel verschieben} other {# Artikel verschieben}}",
"name": "Name",
"icon": "Symbol",
"layout": "Layout",
"resetSuggestion": "Vorgeschlagen",
"suggestedLayout": "Vorgeschlagen: {layout}",
"movedLabel": "{count} verschoben",
"newLabel": "{count} neu",
"isNew": "neu",
"price": "Preis",
"free": "Kostenlos",
"setPrice": "Preis festlegen",
"credits": "Coins",
"points": "Punkte",
"pointsType": "Typ",
"newPriceHint": "Gilt nur für neue Angebote; verschobene Angebote behalten ihren aktuellen Preis.",
"parent": "Seiten platzieren unter",
"root": "Katalog-Wurzel",
"importedRoot": "Importierte Möbel",
"cancel": "Abbrechen",
"create": "{count, plural, one {1 Seite erstellen} other {# Seiten erstellen}}",
"batchLayout": "Layout für alle festlegen",
"batchPrefix": "Präfix zu allen Titeln hinzufügen",
"applyBatch": "Auf alle anwenden",
"searchGroups": "Importgruppen filtern...",
"visualPreview": "Vorschau",
"resetAll": "Überschreibungen zurücksetzen",
"onlyUnplaced": "Nur nicht platzierte Artikel anzeigen",
"errorMaxItems": "Max. 500 Artikel pro Durchlauf. Auswahl verringern.",
"errorMaxGroups": "Max. {count} Gruppen pro Durchlauf. Auswahl verringern.",
"errorNoName": "Jede genehmigte Seite braucht einen Namen",
"tipMove": "Tipp: Wähle unten eine Zielseite, um Möbel zu verschieben.",
"tipCreate": "Tipp: Wähle diesen Modus, um neue Seiten zu erstellen.",
"limitHint": "Max. 500 Artikel und 50 Gruppen pro Durchlauf.",
"errorFailed": "Imports konnten nicht organisiert werden",
"successMove": "{moved} Angebot{moved, plural, one {} other {e}}{added, plural, =0 {} other {, {added} neu}} nach \"{destination}\" verschoben",
"successCreate": "{count, plural, one {1 Seite} other {# Seiten}} mit {moved} verschobenen und {added} neuen Möbeln erstellt",
"batchLabel": "Stapel:",
"layoutFallbackDefault3x3": "3x3",
"itemsUnit": "Artikel",
"impPrefix": "Imp ",
"isMoved": "verschoben",
"showAll": "Alle anzeigen ({count})",
"showLess": "Weniger anzeigen",
"moveItemTo": "Verschieben nach…",
"batchMoveTo": "Ausgewählte verschieben nach…",
"selectedCount": "{count} ausgewählt",
"clearSelection": "Auswahl löschen",
"undo": "Rückgängig",
"daysLabel": "Tage",
"daysValue": "{days} Tage",
"dupeSummary": "Bereits auf der Zielseite: {count, plural, one {1 Artikel} other {# Artikel}}",
"layoutPreview": "Layout-Vorschau",
"emptyCategory": "Keine Artikel in dieser Kategorie",
"dupeOnDest": "Bereits auf der Zielseite vorhanden",
"dupeOnDestShort": "Duplikat",
"errorPartial": "{failed} von {total} Durchläufen fehlgeschlagen. Prüfen und erneut versuchen.",
"successCreateRuns": "{count, plural, one {1 Seite} other {# Seiten}} in {runs, plural, one {1 Durchlauf} other {# Durchläufen}} mit {moved} verschobenen und {added} neuen Möbeln erstellt"
}
},
"discovery": {
"searchPlaceholder": "Name, classname, furniture ID or #offer ID…",
"filterLabel": "Filter offers",
"filters": {
"all": "All offers",
"free": "Free",
"paid": "Paid",
"bundles": "Bundles",
"limited": "Limited editions"
},
"shown": "({count} shown)",
"selected": "{count} selected",
"reset": "Reset filters",
"results": "Showing {count} of {total} offers.",
"selectionHint": "Changing the search or filter clears the selection.",
"noResults": "No offers match the current search and filter.",
"selectVisible": "Select all visible offers"
}
},
"shop": {
"title": "Shop",
"subtitle": "Pakete und Bestellungen verwalten",
"packages": "Pakete",
"orders": "Bestellungen",
"newPackage": "+ Neues Paket",
"edit": "Bearbeiten",
"delete": "Löschen",
"viewOrder": "Ansehen",
"noPackages": "Noch keine Shop-Pakete",
"noOrders": "Noch keine Bestellungen",
"confirmDelete": "Dieses Paket löschen?",
"colId": "ID",
"colName": "Name",
"colPrice": "Preis",
"colCurrency": "Währung",
"colType": "Typ",
"colSold": "Verkauft",
"colEnabled": "Aktiviert",
"colActions": "Aktionen",
"colOrderId": "Bestell-ID",
"colCustomer": "Kunde",
"colPackage": "Paket",
"colAmount": "Betrag",
"colStatus": "Status",
"colDate": "Datum",
"statusPending": "Ausstehend",
"statusCompleted": "Abgeschlossen",
"statusRefunded": "Erstattet",
"form": {
"name": "Name",
"namePlaceholder": "Paketname",
"description": "Beschreibung",
"descriptionPlaceholder": "Paketbeschreibung",
"price": "Preis",
"currency": "Währung",
"currencyPlaceholder": "EUR, USD, GBP…",
"type": "Typ",
"typeCredits": "Credits",
"typeDuckets": "Duckets",
"typeDiamonds": "Diamanten",
"typeBadge": "Abzeichen",
"typeFurni": "Möbel",
"typeRank": "Rang",
"amount": "Menge",
"badgeCode": "Abzeichen-Code",
"badgeCodePlaceholder": "z.B. VIP001",
"rankId": "Rang-ID",
"furniItems": "Möbel-Artikel",
"enabled": "Aktiviert",
"save": "Paket speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen",
"infoPlaceholder": "Describe the package contents",
"iconPlaceholder": "Icon URL",
"colorPlaceholder": "For example: #3366cc",
"costsPlaceholder": "Price",
"creditsPlaceholder": "Number of credits",
"ducketsPlaceholder": "Number of duckets",
"diamondsPlaceholder": "Number of diamonds",
"giveRankPlaceholder": "Rank ID (0 for none)",
"badgesPlaceholder": "Badge codes separated by semicolons",
"positionPlaceholder": "Display order",
"create": "Create package",
"deletePackage": "Delete package"
},
"recentOrders": "Recent orders",
"paidOrders": "Paid orders",
"ordersHint": "Latest PayPal transactions",
"colCredits": "Credits",
"colDuckets": "Duckets",
"colDiamonds": "Diamonds",
"colRank": "Rank",
"colPosition": "Position",
"colTransaction": "Transaction",
"colUser": "User",
"colDescription": "Description",
"pageOf": "Page {page} of {lastPage}",
"packagesTotal": "{count} packages",
"newPackageTitle": "New shop package",
"backToShop": "Back to shop",
"editPackageTitle": "Edit shop package"
},
"transactions": {
"title": "Transaktionen",
"subtitle": "PayPal-Zahlungsprotokoll",
"noTransactions": "Noch keine Transaktionen",
"colId": "ID",
"colUser": "Benutzer",
"colAmount": "Betrag",
"colCurrency": "Währung",
"colPackage": "Paket",
"colStatus": "Status",
"colDate": "Datum",
"colActions": "Aktionen",
"statusCompleted": "Abgeschlossen",
"statusPending": "Ausstehend",
"statusFailed": "Fehlgeschlagen",
"statusRefunded": "Erstattet",
"detail": {
"title": "Transaktion #{id}",
"paypalId": "PayPal-ID",
"payerEmail": "Zahler-E-Mail",
"grossAmount": "Bruttobetrag",
"fee": "Gebühr",
"netAmount": "Nettobetrag"
},
"totalTransactions": "Total transactions",
"pagePaid": "Paid (this page)",
"pageFailed": "Failed (this page)",
"searchPlaceholder": "Search by user, transaction ID or package…",
"presetPaid": "Paid",
"presetFailed": "Failed",
"colPayer": "Payer",
"colTransaction": "Transaction ID"
},
"vouchers": {
"title": "Shop-Gutscheine",
"subtitle": "Einlösbare Gutscheincodes verwalten",
"newVoucher": "+ Neuer Gutschein",
"edit": "Bearbeiten",
"delete": "Löschen",
"noVouchers": "Noch keine Gutscheine",
"confirmDelete": "Gutschein „{code}“ löschen?",
"colId": "ID",
"colCode": "Code",
"colValue": "Wert",
"colType": "Typ",
"colUses": "Verwendet / Max.",
"colExpires": "Läuft ab",
"colCreated": "Erstellt",
"colActions": "Aktionen",
"form": {
"code": "Code",
"codePlaceholder": "z.B. SOMMER2025",
"value": "Wert",
"type": "Typ",
"typeCredits": "Credits",
"typeDuckets": "Duckets",
"typeDiamonds": "Diamanten",
"typeBadge": "Abzeichen",
"typeFurni": "Möbel",
"typeRank": "Rang",
"badgeCode": "Abzeichen-Code",
"badgeCodePlaceholder": "z.B. VIP001",
"rankId": "Rang-ID",
"maxUses": "Max. Verwendungen",
"maxUsesPlaceholder": "0 = unbegrenzt",
"expiresAt": "Läuft ab am",
"enabled": "Aktiviert",
"save": "Gutschein speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen",
"amount": "Credits amount",
"amountPlaceholder": "e.g. 100",
"create": "Create voucher"
},
"vouchers": "Vouchers",
"active": "Active",
"usedUp": "Used up",
"expired": "Expired",
"confirmDeleteTitle": "Delete voucher",
"created": "Voucher created",
"deleted": "Voucher deleted",
"createError": "Could not create voucher",
"deleteError": "Could not delete voucher",
"statusActive": "Active",
"statusUsedUp": "Used up",
"statusExpired": "Expired",
"colAmount": "Amount",
"colStatus": "Status",
"updated": "Voucher updated",
"updateError": "Could not update voucher"
},
"subscriptions": {
"title": "Abonnements",
"subtitle": "Aktive wiederkehrende Abonnements",
"noSubscriptions": "Keine aktiven Abonnements",
"cancel": "Kündigen",
"confirmCancel": "Abonnement für {username} kündigen?",
"colId": "ID",
"colUser": "Benutzer",
"colPackage": "Paket",
"colAmount": "Betrag",
"colInterval": "Intervall",
"colStarted": "Gestartet",
"colNextBilling": "Nächste Abrechnung",
"colStatus": "Status",
"colActions": "Aktionen",
"statusActive": "Aktiv",
"statusCancelled": "Gekündigt",
"statusExpired": "Abgelaufen",
"activeSubs": "Active subscriptions",
"types": "Subscription types",
"expiringSoon": "Expiring soon",
"activeSubscriptions": "Active subscriptions",
"colSubId": "Subscription ID",
"colUserId": "User ID",
"colType": "Type",
"colExpires": "Expires"
},
"rareValues": {
"title": "Seltene Werte",
"subtitle": "Kategorien und Artikelpreise für seltene Werte verwalten",
"categories": "Kategorien",
"items": "Artikel",
"addCategory": "Kategorie hinzufügen",
"editCategory": "Kategorie bearbeiten",
"deleteCategory": "Kategorie löschen",
"noCategories": "Noch keine Seltene-Werte-Kategorien",
"confirmDeleteCategory": "Kategorie „{name}“ mit allen Artikeln löschen?",
"colId": "ID",
"colName": "Name",
"colItems": "Artikel",
"colUpdated": "Aktualisiert",
"colActions": "Aktionen",
"colItemName": "Artikelname",
"colCredits": "Credits",
"colPoints": "Punkte",
"colPointType": "Punktetyp",
"categoryForm": {
"name": "Name",
"namePlaceholder": "Kategoriename",
"save": "Kategorie speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
},
"itemForm": {
"itemName": "Artikelname",
"itemNamePlaceholder": "z.B. Thron",
"credits": "Credits-Wert",
"points": "Punkte-Wert",
"pointType": "Punktetyp",
"pointTypeDuckets": "Duckets",
"pointTypeDiamonds": "Diamanten",
"save": "Artikel speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen",
"itemIdPlaceholder": "Item ID",
"iconPlaceholder": "Icon URL",
"creditsPlaceholder": "Credits",
"currencyValuePlaceholder": "Currency value",
"addValue": "Add value"
},
"editValue": "Edit value",
"badgePlaceholder": "Category badge code",
"priorityPlaceholder": "Priority",
"addCategoryButton": "Add category",
"badgeLabel": "Badge: {badge}",
"priorityLabel": "Priority: {priority}",
"itemCount": "{count} items",
"colItemId": "Item ID",
"colCurrencyValue": "Currency value",
"colCurrency": "Currency",
"colIcon": "Icon",
"noValuesInCategory": "No values in this category yet."
},
"badges": {
"title": "Abzeichen",
"subtitle": "Abzeichen hochladen, vergeben und verwalten",
"upload": "Hochladen",
"giveBadge": "Abzeichen geben",
"catalogue": "Katalog",
"uploadTitle": "Neues Abzeichen hochladen",
"uploadSubtitle": "Eine Abzeichen-Bilddatei hochladen",
"badgeCode": "Abzeichen-Code",
"badgeCodePlaceholder": "z.B. VIP001",
"badgeFile": "Abzeichen-Datei",
"badgeFileHint": "PNG oder GIF, empfohlen 40x40",
"uploadButton": "Hochladen",
"uploading": "Wird hochgeladen…",
"giveTitle": "Abzeichen an Benutzer geben",
"giveSubtitle": "Einem bestimmten Benutzer ein Abzeichen gewähren",
"username": "Benutzername",
"usernamePlaceholder": "Zielbenutzername",
"giveButton": "Abzeichen geben",
"giving": "Wird vergeben…",
"catalogueTitle": "Abzeichen-Katalog",
"catalogueSubtitle": "Alle verfügbaren Abzeichen im Hotel",
"noBadges": "Keine Abzeichen im Katalog",
"search": "Abzeichen suchen",
"searchPlaceholder": "Suche nach Code oder Name…",
"colCode": "Code",
"colImage": "Bild",
"colName": "Name",
"colDescription": "Beschreibung",
"colActions": "Aktionen",
"uploadedMessage": "Badge {code} uploaded.",
"errorMessage": "Upload failed: {error}",
"userIdPlaceholder": "User ID"
},
"achievements": {
"title": "Errungenschaften",
"subtitle": "Nur-Lesen-Liste der In-Game-Errungenschaften",
"noAchievements": "Keine Errungenschaften konfiguriert",
"colId": "ID",
"colName": "Name",
"colCategory": "Kategorie",
"colLevels": "Stufen",
"colReward": "Belohnung",
"colProgress": "Fortschritt",
"levelLabel": "Stufe {level}",
"rewardCredits": "{count} Credits",
"rewardPoints": "{count} {points}",
"achievementRows": "Achievement levels",
"distinctAchievements": "Distinct achievements",
"categories": "Categories",
"colLevel": "Level",
"colRewardType": "Reward type",
"colRewardAmount": "Reward amount",
"colPoints": "Points"
},
"calendar": {
"title": "Kalender-Kampagnen",
"subtitle": "Nur-Lesen-Liste der Kalenderkampagnen und -events",
"noCampaigns": "Noch keine Kalender-Kampagnen",
"colId": "ID",
"colName": "Name",
"colStart": "Start",
"colEnd": "Ende",
"colType": "Typ",
"colReward": "Belohnung",
"colActions": "Aktionen",
"detail": {
"title": "Kampagne: {name}",
"subtitle": "Kalender-Event-Details",
"days": "Tage",
"dayLabel": "Tag {day}",
"reward": "Belohnung",
"noDays": "Keine Tage für diese Kampagne konfiguriert",
"campaignMeta": "#{id} · {days} days · starts {date}",
"disabled": "Disabled",
"enabled": "Enabled",
"locksExpired": "Expired days are locked",
"rewards": "Rewards",
"noRewards": "No rewards configured.",
"colId": "ID",
"colProduct": "Product",
"colItem": "Item",
"colCredits": "Credits",
"colPixels": "Duckets",
"colPoints": "Points",
"colBadge": "Badge",
"colSubscription": "Subscription",
"typeLabel": "Type {type}",
"rewardCount": "{count} rewards"
},
"campaigns": "Campaigns",
"enabled": "Enabled campaigns",
"totalRewards": "Total rewards",
"statusEnabled": "Enabled",
"statusDisabled": "Disabled",
"campaignMeta": "#{id} · {days} days · {rewards} rewards",
"startsAt": "Starts: {date}",
"locksExpired": "Expired days are locked"
},
"radio": {
"title": "Radio-Moderation",
"subtitle": "Latest shouts, DJ applications and on-air schedules (25 most recent of each).",
"moderation": "Moderation",
"shouts": "Shouts",
"applications": "Bewerbungen",
"schedules": "Programm",
"settings": "Einstellungen",
"embed": "Einbetten",
"ranks": "Ränge",
"history": "Verlauf",
"apiKeys": "API-Schlüssel",
"points": "Punkte",
"autoDj": "AutoDJ",
"monitoring": {
"title": "Radio-Überwachung",
"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": "Hörer",
"currentSong": "Aktueller Song",
"bitrate": "Bitrate",
"status": "Status",
"noNowPlayingHint": "no now-playing API set",
"noListenersHint": "no listeners API set",
"endpointDiagnostics": "Endpoint diagnostics",
"diagnosticsLegend": "OK: erreichbar · WARN: nicht konfiguriert · ERROR: Anfrage fehlgeschlagen oder Zeitüberschreitung.",
"streamUrl": "Stream URL",
"unreachable": "unreachable",
"refresh": "Aktualisieren"
},
"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": "Keine Shouts zu moderieren",
"noApplications": "No applications submitted.",
"noSchedules": "No schedules configured.",
"deleteShout": "Löschen",
"confirmDeleteShout": "Diesen Shout löschen?",
"pendingApplications": "Ausstehende Bewerbungen",
"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": "Banner",
"heading": "Radio Banners",
"description": "Promotional banners shown on the radio page, ordered by sort order.",
"addBanner": "Banner hinzufügen",
"createBanner": "Create banner",
"deleteBanner": "Banner löschen",
"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-Ränge",
"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": "API-Schlüssel",
"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": "Neuen Schlüssel generieren",
"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": "Generieren",
"existingKeys": "Existing keys ({count})",
"noKeys": "No API keys yet — generate one above.",
"colName": "Name",
"colKey": "Schlüssel",
"colAllowedIps": "Allowed IPs",
"colRateLimit": "Rate limit",
"colLastUsed": "Last used",
"colExpires": "Expires",
"colStatus": "Status",
"colActions": "Aktionen",
"maskedHint": "Only the first 8 characters are shown",
"any": "any",
"activeLabel": "active",
"inactiveLabel": "inactive",
"deactivate": "Deactivate",
"activate": "Activate",
"delete": "Delete"
},
"pointsForm": {
"title": "Hörer-Punkte-Konfiguration",
"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.",
"saved": "Saved",
"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": "Punkteeinstellungen speichern"
},
"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",
"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",
"trackTitle": "Title"
},
"moderationPage": {
"title": "DJ Moderation",
"subtitle": "Review and remove radio shouts (50 most recent).",
"recentShouts": "Recent Shouts ({count})"
}
},
"commandocentrum": {
"title": "Commandocentrum",
"subtitle": "Diagnose, RCON-Steuerung und Benutzerverwaltung",
"diagnostics": "Diagnose",
"rcon": "RCON",
"userActions": "Benutzeraktionen",
"diagnosticsTitle": "Emulator-Diagnose",
"memoryUsage": "Speichernutzung",
"uptime": "Betriebszeit",
"onlineUsers": "Benutzer online",
"roomsLoaded": "Geladene Räume",
"refresh": "Aktualisieren",
"rconTitle": "RCON-Befehle",
"rconPlaceholder": "RCON-Befehl eingeben…",
"rconSend": "Senden",
"rconSending": "Wird gesendet…",
"rconResponse": "Antwort",
"userActionsTitle": "Benutzeraktionen",
"username": "Benutzername",
"usernamePlaceholder": "Zielbenutzername",
"action": "Aktion",
"execute": "Ausführen",
"actions": {
"disconnect": "Trennen",
"alert": "Alarm senden",
"giveCredits": "Credits geben",
"giveBadge": "Abzeichen geben",
"givePoints": "Punkte geben",
"ban": "Bannen",
"kick": "Kicken"
},
"messagePlaceholder": "Nachricht (für Alarme)…",
"amountPlaceholder": "Betrag…",
"badgePlaceholder": "Abzeichen-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",
"playersOnline": "Players online",
"totalAccounts": "{count} total accounts",
"dbUnavailable": "Database unavailable",
"emulator": "Emulator",
"online": "Online",
"offline": "Offline",
"rconReachable": "Emulator connection available",
"rconNotResponding": "Emulator is not responding",
"database": "Database",
"connected": "Connected",
"down": "Unavailable",
"queriesResponding": "Database queries are responding",
"cannotReachDb": "Cannot connect to the database",
"emulatorErrors": "Emulator errors",
"last50Logged": "Up to 50 latest records",
"serverInfo": "Server information",
"node": "Node.js",
"platform": "Platform",
"appUptime": "Application uptime",
"heapUsed": "Heap memory used",
"rss": "Process memory (RSS)",
"hostUptime": "Host uptime",
"load1m": "Load average (1 min)",
"cpus": "Logical CPUs",
"systemDiagnostics": "System diagnostics",
"connectionHealthy": "Connection is healthy",
"unreachable": "Unreachable",
"emulatorRcon": "Emulator connection",
"respondingToPing": "Responding to health checks",
"noResponse": "No response",
"notConfigured": "Not configured",
"twoFaEncryptionKey": "2FA encryption key",
"appKeyConfigured": "Encryption key configured",
"appKeyMissing": "Encryption key missing",
"maintenanceMode": "Maintenance mode",
"siteIsInMaintenance": "The site is in maintenance mode",
"siteIsLive": "The site is open",
"recentStaffActivity": "Recent staff activity",
"noStaffActivity": "No recent staff activity",
"colWhen": "Date and time",
"colStaff": "Staff member",
"colAction": "Action",
"colDescription": "Description",
"recentEmulatorErrors": "Recent emulator errors",
"noEmulatorErrors": "No emulator errors recorded",
"colType": "Type",
"colVersion": "Version",
"colStacktrace": "Error details",
"truncated": "Further lines omitted",
"empty": "No details available",
"defaultGiftMessage": "A gift for you!",
"emulatorControls": "Emulator commands",
"updateCatalog": "Reload catalog",
"updateCatalogDesc": "Reload the catalog from the database.",
"updateWordFilter": "Reload word filter",
"updateWordFilterDesc": "Apply the latest word filter settings.",
"updateNavigator": "Reload navigator",
"updateNavigatorDesc": "Reload the room navigator data.",
"hotelAlert": "Hotel announcement",
"hotelAlertDesc": "Send a message to all online players.",
"messageToBroadcast": "Message for all players",
"sendAlert": "Send announcement",
"disconnectDesc": "Disconnect the selected player from the hotel.",
"userId": "User ID",
"usernameRequired": "Username (required)",
"alertDesc": "Send a private alert to a player.",
"alertMessage": "Alert message",
"forwardToRoom": "Move player to room",
"forwardDesc": "Send the selected player to a specific room.",
"roomId": "Room ID",
"forwardUser": "Move player",
"giveCredits": "Give credits",
"giveCreditsDesc": "Add credits to the selected player’s balance.",
"amount": "Amount",
"giveDuckets": "Give duckets",
"giveDucketsDesc": "Add duckets to the selected player’s balance.",
"giveDiamonds": "Give diamonds",
"giveDiamondsDesc": "Add diamonds to the selected player’s balance.",
"giveBadge": "Give badge",
"giveBadgeDesc": "Give a badge to the selected player.",
"badgeCode": "Badge code",
"setMotto": "Change motto",
"setMottoDesc": "Update the selected player’s motto.",
"newMotto": "New motto",
"setRank": "Change rank",
"setRankDesc": "Update the selected player’s rank.",
"rankPlaceholder": "Rank (1–10)",
"executeCommand": "Execute emulator command",
"executeCommandDesc": "Execute a command for the selected player.",
"commandPlaceholder": "Command",
"sendGift": "Send gift",
"sendGiftDesc": "Send a furniture item as a gift to the selected player.",
"furniId": "Furniture ID",
"giftMessage": "Gift message"
},
"emulator": {
"title": "Emulator-Konfiguration",
"subtitle": "Emulator-Einstellungen und Lokaltexte anzeigen und bearbeiten",
"settings": "Einstellungen",
"texts": "Texte",
"search": "Suchen",
"searchPlaceholder": "Schlüssel suchen…",
"noSettings": "Keine Einstellungen gefunden",
"noTexts": "Keine Texte gefunden",
"edit": "Bearbeiten",
"save": "Speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen",
"colKey": "Schlüssel",
"colValue": "Wert",
"colType": "Typ",
"colActions": "Aktionen",
"editDialog": {
"title": "Bearbeiten: {key}",
"value": "Wert",
"valuePlaceholder": "Wert eingeben…",
"save": "Änderungen speichern",
"cancel": "Abbrechen"
},
"settingsKeys": "Settings",
"textKeys": "Text entries",
"keysCount": "{count} keys",
"addOverwriteSetting": "Add or update a setting",
"key": "Key",
"value": "Value",
"showingFirst": "Showing the first {count}",
"addOverwriteText": "Add or update a text",
"truncatedHint": "Showing {shown} of {total} entries."
},
"alerts": {
"title": "Alarme",
"subtitle": "Hotelweite Alarme senden und aktuelle anzeigen",
"sendAlert": "Hotel-Alarm senden",
"recentAlerts": "Letzte Alarme ({count})",
"noRecentAlerts": "Keine aktuellen Alarme",
"form": {
"title": "Alarm-Titel",
"titlePlaceholder": "z.B. Serverwartung in 10 Minuten",
"message": "Alarm-Nachricht",
"messagePlaceholder": "Schreibe die Alarm-Nachricht…",
"type": "Typ",
"typeHotel": "Hotelweiter Alarm",
"typeStaff": "Nur Team",
"urgent": "Dringend",
"send": "Alarm senden",
"sending": "Wird gesendet…",
"description": "Broadcasts via RCON <code>hotelalert</code> to online users."
},
"colId": "ID",
"colTitle": "Titel",
"colSentBy": "Gesendet von",
"colType": "Typ",
"colDate": "Datum",
"colActions": "Aktionen",
"noAlerts": "No recent alerts",
"alertsShown": "Shown",
"critical": "Critical",
"warnings": "Warnings",
"unread": "Unread",
"markAllRead": "Mark all read",
"colWhen": "When",
"colSeverity": "Severity",
"colMessage": "Message"
},
"logs": {
"title": "Team-Aktivitäten",
"subtitle": "Prüfpfad der Team-Aktionen im Admin-Panel",
"noLogs": "Noch keine Team-Aktivität protokolliert",
"colId": "ID",
"colUser": "Benutzer",
"colAction": "Aktion",
"colTarget": "Ziel",
"colDescription": "Beschreibung",
"colIp": "IP",
"colTimestamp": "Zeitstempel",
"filterByUser": "Nach Benutzer filtern…",
"filterByAction": "Nach Aktion filtern…",
"clearFilters": "Filter zurücksetzen",
"noResults": "No matching activities",
"colStaff": "Staff",
"colWhen": "When",
"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",
"filtersTitle": "Filter audit records",
"filterActor": "Actor (exact username or ID)",
"filterAction": "Exact action",
"filterFrom": "From date (UTC)",
"filterTo": "Through date (UTC)",
"filtersHint": "Dates include the full day in UTC. Actions and usernames must match exactly. Records are shown newest first.",
"applyFilters": "Apply filters",
"resetFilters": "Reset filters",
"invalidDetails": "These legacy details cannot be displayed.",
"beforeValue": "Before",
"afterValue": "After",
"exportHint": "CSV exports the current filtered page, up to 100 records.",
"operation": "Operation"
},
"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…"
},
"history": {
"preview": "Preview restore",
"title": "Restore a recorded edit",
"description": "Compare current values with the previous values before confirming. Only category settings, offer prices or news content are restored. Deleted records and category hierarchy cannot be restored here.",
"loading": "Loading…",
"unavailable": "This revision is unavailable or you do not have permission to restore it.",
"conflict": "This record changed after the selected edit. Refresh and review its latest history before restoring.",
"failed": "The restore could not be completed. Please reload and try again.",
"field": "Field",
"current": "Current value",
"restore": "Value to restore",
"confirm": "Confirm restore",
"restoring": "Restoring…",
"fields": {
"caption": "Category name",
"captionSave": "Internal category name",
"pageLayout": "Category layout",
"enabled": "Enabled",
"visible": "Visible",
"clubOnly": "Club members only",
"vipOnly": "VIP members only",
"minRank": "Minimum rank",
"iconImage": "Category icon",
"iconColor": "Icon colour",
"pageHeadline": "Header image",
"pageTeaser": "Preview image",
"pageSpecial": "Special image",
"pageText1": "Primary text",
"pageText2": "Secondary text",
"pageTextDetails": "Details text",
"pageTextTeaser": "Preview text",
"includes": "Included categories",
"costCredits": "Credit price",
"costPoints": "Points price",
"pointsType": "Points currency",
"title": "News title",
"slug": "News address",
"image": "News image",
"shortStory": "Summary",
"fullStory": "Article content",
"status": "Publication status",
"publishAt": "Scheduled publication",
"publishedAt": "Publication date",
"pageId": "Category"
}
}
},
"wordfilter": {
"title": "Wortfilter",
"subtitle": "Gefilterte Wörter und Phrasen im Hotel verwalten",
"addWord": "Wort hinzufügen",
"addWords": "Wörter hinzufügen",
"noWords": "Noch keine gefilterten Wörter",
"confirmDelete": "„{word}“ aus dem Filter entfernen?",
"colId": "ID",
"colWord": "Wort",
"colAddedBy": "Hinzugefügt von",
"colCreated": "Erstellt",
"colActions": "Aktionen",
"form": {
"word": "Wort",
"wordPlaceholder": "z.B. schlechteswort",
"addMore": "Mehrere Wörter hinzufügen (eines pro Zeile)",
"save": "Zum Filter hinzufügen",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
},
"filteredWords": "Filtered words",
"words": "Words",
"delete": "Delete",
"confirmDeleteTitle": "Remove word",
"added": "Word added to filter",
"deleted": "Word removed from filter",
"addError": "Could not add word (it may already exist)",
"deleteError": "Could not remove word"
},
"maintenance": {
"title": "Wartungsmodus",
"subtitle": "Hotelweite Wartung aktivieren oder deaktivieren",
"enabled": "Wartungsmodus ist aktiviert",
"disabled": "Wartungsmodus ist deaktiviert",
"enable": "Wartung aktivieren",
"disable": "Wartung deaktivieren",
"message": "Wartungs-Nachricht",
"messagePlaceholder": "Wir sind bald zurück!",
"staffAccess": "Team-Zugriff während der Wartung erlauben",
"save": "Einstellungen speichern",
"saving": "Wird gespeichert…",
"confirmEnable": "Durch Aktivieren der Wartung wird allen Nicht-Team-Benutzern der Zugriff verwehrt. Fortfahren?",
"confirmDisable": "Wartungsmodus deaktivieren und Zugriff für alle Benutzer wiederherstellen?",
"maintenance": "Maintenance",
"hotelLockedDown": "Access to the hotel is restricted.",
"hotelOpen": "The hotel is open.",
"minLoginRank": "Minimum login rank",
"duringMaintenance": "During maintenance",
"splashMessage": "Maintenance message",
"set": "Configured",
"empty": "Empty",
"currentState": "Current status",
"maintenanceCurrently": "Maintenance: {status}",
"onlyRankCanLogin": "Only users with rank {rank} or higher can log in.",
"hotelOpenToEveryone": "All eligible users can log in.",
"settings": "Settings",
"enableMaintenance": "Enable maintenance mode",
"minLoginRankLabel": "Minimum rank allowed during maintenance",
"maintenanceMessageLabel": "Message shown to visitors",
"maintenanceMessagePlaceholder": "Explain why the hotel is unavailable.",
"saveChanges": "Save changes"
},
"housekeeping": {
"title": "Hausverwaltungs-Berechtigungen",
"subtitle": "Festlegen, welche Ränge auf welche Admin-Bereiche zugreifen können",
"addPermission": "Berechtigung hinzufügen",
"editPermission": "Berechtigung bearbeiten",
"deletePermission": "Berechtigung löschen",
"noPermissions": "Keine Hausverwaltungs-Berechtigungen konfiguriert",
"confirmDelete": "Diese Berechtigung löschen?",
"colId": "ID",
"colRank": "Rang",
"colSection": "Bereich",
"colActions": "Aktionen",
"form": {
"rankId": "Rang-ID",
"rankIdPlaceholder": "Mindestrang",
"section": "Bereichsschlüssel",
"sectionPlaceholder": "z.B. admin.dashboard",
"save": "Berechtigung speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
},
"saved": "Saved!",
"deleted": "Deleted!",
"errorOccurred": "An error occurred",
"emptyInput": "Empty input",
"invalidJson": "Invalid JSON",
"imported": "Imported!",
"presetApplied": "Preset applied!",
"cleared": "All Berechtigungen cleared!",
"invalidRank": "Invalid Rang",
"testDone": "Test done: {count} Berechtigungen found",
"testing": "Testing...",
"loading": "Loading...",
"prev": "Previous",
"next": "Next",
"confirmClearAll": "Löschen ALL Berechtigungen? This Aktion cannot be undone!",
"colGroup": "Group",
"colDepends": "Depends on",
"colPermission": "Berechtigung",
"colDescription": "Beschreibung",
"colMinRank": "Min. Rang",
"permissionKey": "Berechtigungsschlüssel",
"minRank": "Min. Rang",
"description": "Beschreibung",
"permissions": "Berechtigungen",
"permissionsCount": "{count} Berechtigungen",
"permission": "Berechtigung",
"highestMinRank": "Highest min. Rang: {rank}",
"totalMinRank": "Total min. Rang sum: {total}",
"groupCount": "{count} groups",
"rankCount": "{count} Ränge",
"missingDeps": "{count} missing dependencies",
"dependsOn": "depends on",
"notFound": "not found",
"missing": "(missing)",
"rank": "Rang",
"count": "Count",
"searchPermission": "Suchen Berechtigungen…",
"search": "Suchen",
"manage": "Manage",
"importSelection": "Importieren selection",
"noGroup": "Nein group",
"allGroups": "All groups",
"perGroup": "Berechtigungen per group",
"perRank": "Berechtigungen per Rang",
"rankOverviewHint": "All Berechtigungen grouped by the Rang they are assigned to.",
"tabOverview": "Übersicht",
"tabManage": "Manage",
"tabImport": "Importieren / Export",
"tabRanks": "Rang Übersicht",
"tabPresets": "Voreinstellungen",
"tabTest": "Test",
"tabAudit": "Audit log",
"importPermissions": "Importieren Berechtigungen",
"importHint": "Paste a JSON array of Berechtigung objects. Format: ['{' \"permission\": \"...\", \"minRank\": 7, \"description\": \"...\", \"groupName\": \"...\", \"dependsOn\": \"...\" '}']",
"importPlaceholder": "Paste JSON here…",
"import": "Importieren",
"exportTitle": "Export Berechtigungen",
"exportHint": "Export all Berechtigungen as JSON for backup or batch editing.",
"export": "Export JSON",
"copy": "Copy",
"copied": "Copied!",
"presets": "Berechtigung Voreinstellungen",
"presetsHint": "Anwenden a predefined set of Berechtigungen for common staff roles.",
"presetModerator": "Moderator",
"presetModeratorDesc": "Basic moderation tools: Benutzer lookup, Banns, CFH handling, chat logs.",
"presetAdmin": "Administrator",
"presetAdminDesc": "Full admin access: Benutzer, Räume, news, Einstellungen, shop, events, radio & more.",
"presetSuperAdmin": "Super Admin",
"presetSuperAdminDesc": "Complete access to every feature including Berechtigung management and asset Importieren.",
"applyPreset": "Anwenden preset",
"clearAll": "Clear all Berechtigungen",
"testTitle": "Test Rang access",
"testHint": "Enter a Rang number to see which Berechtigungen would be granted.",
"test": "Test",
"auditTitle": "Berechtigung audit log",
"auditHint": "All changes to Hausverwaltung Berechtigungen are logged.",
"auditLogsAt": "Audit logs are available on the Audit log page.",
"viewAuditLogs": "Ansehen audit logs",
"importedWithErrors": "Imported {count} Berechtigungen with {errors} errors",
"confirmClearAllDesc": "This will Entfernen every Berechtigung entry from the Datenbank. Are you sure?",
"confirmDeletePermission": "Löschen this Berechtigung permanently?",
"confirmBulkDelete": "Löschen {count} selected Berechtigungen?",
"deleteSelected": "Löschen {count} selected",
"cancel": "Abbrechen",
"confirm": "Confirm",
"auditTime": "Time",
"auditUser": "Benutzer",
"auditAction": "Aktion",
"auditTarget": "Ziel",
"selectAllMatching": "Select all {count} matching",
"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": "Räume",
"subtitle": "Hotel-Räume durchsuchen und verwalten",
"search": "Suchen",
"searchPlaceholder": "Suche nach Name, Besitzer oder ID…",
"searchResults": "{count, plural, one {# Raum} other {# Räume}} gefunden für „{query}“",
"noResults": "Keine Räume gefunden",
"colId": "ID",
"colName": "Name",
"colOwner": "Besitzer",
"colUsers": "Benutzer",
"colState": "Status",
"colCategory": "Kategorie",
"colCreated": "Erstellt",
"colActions": "Aktionen",
"stateOpen": "Offen",
"stateClosed": "Geschlossen",
"stateLocked": "Gesperrt",
"stateInvisible": "Unsichtbar",
"detail": {
"title": "Raum: {name}",
"subtitle": "Besitzer: {owner}",
"overview": "Übersicht",
"actions": "Aktionen",
"description": "Beschreibung",
"noDescription": "Keine Beschreibung",
"owner": "Besitzer",
"users": "Benutzer online",
"maxUsers": "Max. Benutzer",
"category": "Kategorie",
"state": "Status",
"tags": "Tags",
"noTags": "Keine Tags",
"created": "Erstellt",
"deleteRoom": "Raum löschen",
"confirmDelete": "Raum „{name}“ löschen? Dies kann nicht rückgängig gemacht werden.",
"enterRoom": "Raum betreten",
"changeOwner": "Besitzer ändern",
"changeOwnerPlaceholder": "Benutzername des neuen Besitzers"
}
},
"emailTemplates": {
"title": "E-Mail-Vorlagen",
"subtitle": "Transaktions-E-Mail-Vorlagen verwalten",
"newTemplate": "+ Neue Vorlage",
"edit": "Bearbeiten",
"delete": "Löschen",
"noTemplates": "Noch keine E-Mail-Vorlagen",
"confirmDelete": "Vorlage „{name}“ löschen?",
"colId": "ID",
"colName": "Name",
"colSubject": "Betreff",
"colKey": "Schlüssel",
"colUpdated": "Aktualisiert",
"colActions": "Aktionen",
"form": {
"name": "Name",
"namePlaceholder": "z.B. Willkommens-E-Mail",
"key": "Schlüssel",
"keyPlaceholder": "z.B. welcome_email",
"subject": "Betreff",
"subjectPlaceholder": "E-Mail-Betreffzeile",
"body": "Inhalt (HTML)",
"bodyPlaceholder": "<p>Lieber/Liebe {username},</p>",
"variables": "Verfügbare Variablen",
"variablesHint": "{username}, {email}, {hotel_name}",
"save": "Vorlage speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen",
"variablesPlaceholder": "Variables, separated by commas",
"active": "Active"
},
"create": "Create template",
"save": "Save template",
"updated": "Updated: {date}"
},
"theme": {
"title": "Design",
"subtitle": "Das CMS-Erscheinungsbild anpassen",
"presets": "Voreinstellungen",
"colours": "Farben",
"css": "CSS",
"presetsTitle": "Design-Voreinstellungen",
"presetsSubtitle": "Wähle ein vorgefertigtes Farbschema",
"applyPreset": "Anwenden",
"presetApplied": "Voreinstellung angewendet: {preset}",
"customiseTitle": "Benutzerdefinierte Farben",
"primary": "Primär",
"secondary": "Sekundär",
"accent": "Akzent",
"background": "Hintergrund",
"surface": "Oberfläche",
"text": "Text",
"saveColours": "Farben speichern",
"savingColours": "Wird gespeichert…",
"cssTitle": "Benutzerdefiniertes CSS",
"cssSubtitle": "Füge benutzerdefiniertes CSS hinzu, um Design-Stile zu überschreiben",
"cssPlaceholder": "/* Dein benutzerdefiniertes CSS hier */",
"saveCss": "CSS speichern",
"savingCss": "Wird gespeichert…",
"reset": "Auf Standard zurücksetzen",
"confirmReset": "Design auf Standardwerte zurücksetzen?",
"saved": "Theme settings saved.",
"typographyLayout": "Typography and layout",
"font": "Font",
"borderRadius": "Corner radius"
},
"media": {
"title": "Medienbibliothek",
"subtitle": "Mediendateien hochladen und verwalten",
"upload": "Hochladen",
"uploadTitle": "Datei hochladen",
"uploadSubtitle": "Ziehen und ablegen oder klicken zum Hochladen",
"uploadButton": "Datei auswählen",
"uploading": "Wird hochgeladen…",
"noFiles": "Noch keine Mediendateien",
"delete": "Löschen",
"confirmDelete": "Diese Datei dauerhaft löschen?",
"search": "Suchen",
"searchPlaceholder": "Nach Dateiname suchen…",
"colPreview": "Vorschau",
"colName": "Name",
"colSize": "Größe",
"colType": "Typ",
"colUploaded": "Hochgeladen",
"colActions": "Aktionen",
"copyUrl": "URL kopieren",
"urlCopied": "URL in die Zwischenablage kopiert"
},
"settings": {
"title": "CMS-Einstellungen",
"subtitle": "Schlüssel/Wert-CMS-Konfiguration verwalten",
"addSetting": "Einstellung hinzufügen",
"edit": "Bearbeiten",
"delete": "Löschen",
"noSettings": "Keine Einstellungen gefunden",
"confirmDelete": "Einstellung „{key}“ löschen?",
"colKey": "Schlüssel",
"colValue": "Wert",
"colUpdated": "Aktualisiert",
"colActions": "Aktionen",
"form": {
"key": "Schlüssel",
"keyPlaceholder": "z.B. hotel_name",
"value": "Wert",
"valuePlaceholder": "Einstellungswert",
"save": "Einstellung speichern",
"saving": "Wird gespeichert…",
"cancel": "Abbrechen"
},
"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."
},
"favicon": {
"title": "Favicon",
"subtitle": "Upload and manage the site favicon",
"current": "Current favicon",
"uploadLabel": "Upload favicon",
"uploadHint": "PNG, JPEG, GIF, WebP or ICO. Max 2 MB.",
"upload": "Upload",
"uploading": "Uploading…",
"delete": "Remove",
"deleting": "Removing…",
"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"
},
"cancel": "Cancel"
},
"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.",
"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.",
"upload": "Upload .nitro",
"uploadDescription": "Upload .nitro bundles and icons directly without SWF conversion.",
"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"
},
"cms": {
"title": "CMS translations",
"description": "Edit the text shown on the website and in housekeeping. Saved changes are applied on the next page load and survive deployments.",
"export": "Export JSON",
"saving": "Saving…",
"saveLocale": "Save {locale}",
"saved": "Translations saved and applied.",
"readOnly": "You can review and export translations. Editing requires permission to change settings.",
"language": "Language",
"coverage": "{total} keys · {missing} missing · {identical} identical to English",
"search": "Search",
"searchPlaceholder": "Key, translation or English source…",
"group": "Group",
"allGroups": "All groups",
"status": "Show",
"all": "All texts",
"missing": "Missing translations",
"identical": "Identical to English",
"modified": "Unsaved changes",
"fallbackHint": "Missing translations use English. Identical text may be intentional. Keep variable names inside braces unchanged.",
"unsaved": "{count} unsaved changes in this language",
"discard": "Discard changes",
"discardConfirm": "Discard unsaved changes in this language?",
"fixErrors": "Fix {count} invalid messages before saving.",
"noResults": "No texts match these filters.",
"source": "English reference",
"missingPlaceholder": "Translation missing; English is used.",
"page": "Page {page} of {total} · {count} keys",
"previous": "Previous",
"next": "Next",
"leaveWarning": "You have unsaved translations. Leave this page?",
"conflict": "These translations changed since you opened the editor. Export your changes, then reload before saving.",
"unknownKey": "Unknown translation key: {key}",
"empty": "Enter a translation for {key}, or discard this change.",
"invalid": "Invalid message syntax in {key}. Check braces and rich-text tags.",
"variables": "Keep the same variable names and rich-text tags as the English source in {key}."
}
},
"tickets": {
"title": "Tickets",
"subtitle": "Support tickets from players",
"noTickets": "No active tickets",
"searchPlaceholder": "Search subject, user, category or ID…",
"presetActive": "Active",
"statusOpen": "Open",
"statusInProgress": "In progress",
"statusWaiting": "Waiting",
"statusClosed": "Closed",
"colTicket": "Ticket",
"colStatus": "Status",
"colPriority": "Priority",
"colAssigned": "Assigned",
"colDate": "Date",
"meta": "by {user} · {count} msg · {category}",
"queueHint": "This queue is the CMS support desk. Player help-center tickets live in the Help-center tickets tab.",
"queueOtherCta": "Open help-center tickets",
"queueCounts": "Open here: {here} · Help center: {other}",
"awaitingStaff": "Waiting for staff",
"assignedMine": "Assigned to me",
"unassigned": "Unassigned",
"assignedAny": "Assigned",
"lastReplyAge": "Since last response",
"ageMinutes": "{count} min ago",
"ageHours": "{count} h ago",
"ageDays": "{count} d ago"
},
"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"
},
"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": "Tickets",
"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",
"maintenance": "Maintenance",
"favicon": "Favicon",
"emulator": "Emulator",
"email": "Email",
"housekeeping": "Housekeeping",
"commando": "Commando",
"rooms": "Rooms",
"import": "Import",
"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",
"helpTickets": "Help-center tickets",
"ticketInbox": "Inbox",
"importOverview": "Overview",
"importBadges": "Badges",
"importFurni": "Furni",
"importUpload": "Upload",
"importClothing": "Clothing",
"importEffects": "Effects",
"importPets": "Pets",
"importClone": "Clone",
"importSync": "Sync",
"importRepairIcons": "Repair icons",
"importAudit": "Audit",
"themeBuilder": "Theme Builder",
"studio": "Studio",
"cmsErrors": "CMS errors"
},
"events": "Events",
"eventsSubtitle": "Hotel events and event types",
"tickets": "Support desk",
"ticketsSubtitle": "CMS tickets, help-center tickets, and reply templates",
"staffAccess": "Ranks & permissions",
"staffAccessSubtitle": "Staff ranks, ACL permissions and housekeeping access",
"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"
},
"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",
"cmsErrors": "CMS error center"
},
"helpTickets": {
"title": "Help center tickets",
"subtitle": "Player tickets from /help/tickets",
"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",
"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."
},
"queueHint": "This queue is the public help center. CMS support desk tickets are in the Support desk tab.",
"queueOtherCta": "Open CMS support desk",
"queueCounts": "Open here: {here} · Support desk: {other}",
"liftBanSubmit": "Lift requester ban & close",
"requesterBanned": "Requester banned"
},
"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"
},
"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"
}
},
"guilds": {
"title": "Guilds",
"subtitle": "Hotel groups and membership",
"totalGuilds": "Guilds",
"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",
"listHeading": "Guilds ({count})",
"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"
},
"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"
},
"online": {
"title": "Online users",
"subtitle": "Players currently connected",
"connected": "{count, plural, one {# player connected} other {# players connected}}"
},
"ticketInbox": {
"hint": "Merged view of open CMS desk and help-center tickets. Detail pages and replies stay on each product 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"
},
"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"
},
"cmsErrors": {
"firstSeen": "First occurrence in retained records",
"lastSeen": "Latest occurrence",
"affectedUsers": "Distinct identified users",
"unidentifiedEvents": "Events without a verified user ID",
"metricsScope": "Counts cover only the retained records loaded here. Users are counted only from numeric server-side user IDs; anonymous and browser reports are not attributed.",
"assignedStaff": "Assigned to staff #{id}",
"unassigned": "Unassigned",
"assignSelf": "Assign to me",
"clearAssignment": "Clear assignment",
"openOperation": "Open related area",
"releaseOccurrences": "Occurrences by release",
"releaseScope": "These releases appear in the retained records. The earliest occurrence here does not establish which release introduced the error.",
"releaseFilter": "Version",
"allReleases": "All versions",
"period": "Period",
"allRetained": "All retained events",
"last24h": "Last 24 hours",
"last7d": "Last 7 days",
"sort": "Order",
"recentFirst": "Most recent first",
"frequentFirst": "Most frequent first",
"filterScope": "Counts refer to matching retained events. Group status and latest details remain current across versions.",
"title": "CMS error center",
"storageError": "Error storage could not be read. Check the storage volume and permissions.",
"subtitle": "Server and browser errors from the last 7 days. Browser reports are unverified client observations.",
"emulator": "Emulator errors",
"refresh": "Refresh / clear filters",
"search": "Search errors",
"allSources": "All sources",
"empty": "No captured errors match these filters. Older console logs are not imported.",
"resolve": "Mark resolved",
"reopenHint": "A new occurrence reopens the group automatically.",
"references": "Occurrence references",
"stackHint": "Browser stacks may reference compiled chunks. Use the reference to investigate; request bodies are not stored.",
"previous": "Previous",
"next": "Next",
"searchHint": "Reference, digest, message, route or release",
"source": "Error source",
"pages": "Error pages",
"resolved": "Resolved",
"open": "Open",
"occurrences": "{count} occurrences",
"reference": "Reference",
"release": "Release",
"noStack": "No stack supplied. Use the reference or digest to correlate server logs.",
"truncated": "Showing the latest 1,000 events; filters search this retained window.",
"counts": "{count} occurrences · {groups} groups.",
"retention": "Storage is limited to 10 MB per day; excess events remain in server logs where available.",
"status": "Status",
"allStatuses": "All statuses",
"auditTrail": "Related audit records"
},
"installation": {
"title": "Installation diagnostics",
"hint": "Read-only checks of this installation. Unknown means there is not enough evidence; configured does not prove external reachability.",
"checked": "Checked at {time} · probes completed in {ms} ms",
"recheck": "Check again",
"ok": "Check passed",
"failed": "Needs attention",
"unknown": "Not verified",
"missing": "Not configured",
"release": "Running release",
"database": "Database",
"redis": "Redis",
"emulator": "Emulator",
"storage": "Writable storage",
"migrations": "Database migrations",
"worker": "Background worker",
"renderer": "Renderer configuration",
"registry": "Container registry",
"releaseHint": "The full identifier of the running build. Use it to compare installations and choose a previous image for rollback.",
"databaseHint": "Connection check and measured SELECT 1 response time.",
"redisHint": "Optional for some pages; required for queued import work.",
"emulatorHint": "Response to the configured emulator ping.",
"storageHint": "Read/write permissions on storage, Nitro assets and SWF directories.",
"migrationsHint": "Number of packaged migrations absent from the database history. Apply migrations through the release process.",
"workerHint": "Last worker heartbeat in Redis. More than two minutes old needs investigation; no heartbeat cannot establish whether the worker is running.",
"rendererHint": "The client uses the configured address or /nitro-client/ by default. Open the game separately to verify rendering and assets.",
"registryHint": "Registry credentials live in CI, not in the CMS. Check the image publication job and its immutable release tag in Gitea.",
"guideTitle": "Installation and updates",
"guideHost": "Run these commands in the repository clone on your Linux Docker host. This page only checks status; it does not control Docker.",
"guideAccess": "Source builds need repository access. Private prebuilt images also require registry package access. The wizard preserves existing settings.",
"guidePinned": "For a reviewed version, check out its commit on the host and run bash cms update --skip-pull. Paired application and migrations digests are optional in prebuilt mode; see docs/operations/docker-installation.md.",
"guideWorker": "After startup, check storage, migrations and worker heartbeat below. HTTP health alone does not confirm background jobs are running.",
"guideRecovery": "Back up the database and verify its restore procedure before upgrading. Image rollback does not undo migrations. Database downgrade compatibility is not guaranteed."
},
"importHistory": {
"cancelled": "Cancelled",
"cancelFailed": "Could not request cancellation. Retry or refresh the job history.",
"cancelRequested": "Cancellation requested. The current item will finish; remaining items will not start.",
"cancelHint": "Cancellation preserves completed items and allows the current item to finish.",
"cancelRemaining": "Cancel remaining items",
"historyLimit": "Showing up to 30 most recently updated jobs.",
"refreshHistory": "Refresh history",
"showMoreItems": "Show 50 more items",
"uncertainOutcome": "An interrupted item may already have changed local data. It is excluded from retries.",
"reviewLocalData": "Review local data",
"ownerHistory": "Your imports and repairs, newest first. Retries never repeat completed or uncertain items.",
"previousPage": "Previous",
"nextPage": "Next",
"page": "Page {page}",
"summary": "Import history · {count} active",
"empty": "No background imports yet.",
"result": "{done}/{total} imported · {failed} failed",
"progress": "Import progress",
"queued": "Queued",
"running": "Running",
"completed": "Completed",
"interrupted": "Interrupted",
"done": "Imported",
"failed": "Failed",
"pending": "Pending",
"retryFailed": "Retry failed items only",
"retryUnfinished": "Retry unfinished items"
},
"operations": {
"title": "Needs attention",
"hint": "Accessible work: imports sample your latest 30 jobs; errors sample up to 1,000 retained events. Older work may be outside these counts.",
"empty": "No pending items found in the checked records.",
"errors": "Unresolved CMS error groups",
"imports": "Your imports needing review",
"tickets": "Open support tickets",
"publications": "News drafts",
"unavailable": "{source}: data is temporarily unavailable.",
"installation": "Installation diagnostics"
},
"catalogPackages": {
"backend": {
"sourceChanged": "Source categories or offers changed since this package was created. Create a fresh package to include the current data.",
"saveConflict": "Package changed. Reload it before saving",
"publishConflict": "Package changed. Refresh the publication preview",
"catalogChanged": "Catalog changed. Refresh the publication preview",
"missing": "Catalog package not found",
"pageLimit": "A package supports at most 200 categories including descendants",
"offerLimit": "A package supports at most 500 offers",
"payloadLimit": "Package data exceeds 8 MB safety limit",
"membership": "Package membership cannot change",
"hierarchy": "Package hierarchy cannot change",
"references": "Package furniture references cannot change",
"furnitureMissing": "Package furniture reference no longer exists",
"auditWarning": "Package published, but audit logging failed.",
"hotelWarning": "Package published, but the hotel update was not delivered.",
"exportWarning": "Package published, but export scheduling failed.",
"refreshWarning": "Package published. Refresh the page to see the latest catalog."
}
},
"catalogPackagePreview": {
"title": "Catalog preview",
"hint": "Browse the actual package pages and offers. This is a catalog preview, not a full game-client rendering. No purchases are made.",
"search": "Search categories or offers",
"playerMode": "Player access",
"rank": "Rank",
"club": "Club",
"vip": "VIP",
"externalParents": "This selection starts inside a larger catalog. Access restrictions on ancestors outside this snapshot cannot be evaluated.",
"invalidHierarchy": "{count} pages have a cyclic hierarchy and cannot be navigated.",
"snapshotLimit": "Preview limited to 200 pages and 500 offers.",
"restricted": "{count} pages are hidden by the selected player access settings.",
"categories": "Catalog categories",
"noPages": "This snapshot contains no categories.",
"inaccessible": "No categories are accessible with these settings. Adjust player access or turn it off to inspect the draft.",
"noMatches": "No matches for this search.",
"offerCount": "{count} offers",
"layout": "Layout: {layout}",
"missingLayout": "Not specified",
"unsupportedLayout": "This layout has no dedicated preview. The grid shows the actual offers; custom layout widgets and imagery are not reproduced.",
"loadingIcons": "Loading furniture icons…",
"assetsUnavailable": "Furniture details are temporarily unavailable. Offer data remains visible.",
"assetLimit": "Icons and furniture names are limited to the first 200 item IDs on this view.",
"emptyPage": "This category has no direct offers. Browse its subcategories.",
"missingIcon": "Icon unavailable",
"amount": "Quantity: {count}",
"bundle": "{count} furniture types",
"changed": "Changed from the saved baseline",
"previous": "Previous",
"next": "Next",
"page": "Page {page} of {total}",
"offerId": "Offer #{id}",
"unknownFurniture": "Furniture name unavailable",
"selectOffer": "Select an offer to inspect its price and furniture references.",
"credits": "Credits",
"duckets": "Duckets",
"diamonds": "Diamonds",
"pointsType": "Points (type {type}):",
"free": "Free",
"specialPricing": "Special pricing: {credits} credits, {points} points (type {type})",
"restrictedOffers": "{count} offers in this category require Club membership.",
"clubOffer": "Club offer"
},
"search": {
"furniture": "Furniture",
"catalog": "Catalog categories",
"tickets": "Support tickets",
"loading": "Searching…",
"hint": "Enter a numeric ID or at least 2 characters, or choose a page.",
"retry": "Retry",
"description": "Search pages, users, furniture, catalog categories, articles and support tickets.",
"partialError": "Some results could not be loaded. Try again.",
"pages": "Pages and tools",
"loadError": "Records could not be loaded. You can still open the pages above.",
"placeholder": "Search pages, users, rooms…",
"users": "Users",
"articles": "Articles",
"rooms": "Rooms",
"guilds": "Groups",
"shop": "Shop",
"rareValues": "Rare values",
"noResults": "No results found."
},
"permissionPreview": {
"title": "Role access preview",
"description": "Inspect CMS access without changing a session or impersonating a user.",
"back": "Back to permissions",
"role": "Role",
"show": "Show access",
"missing": "Select an existing role.",
"entryAllowed": "Housekeeping entry allowed",
"entryDenied": "Housekeeping entry denied: dashboard permission missing",
"superAdmin": "This rank currently receives the highest-rank override.",
"scope": "This preview shows one role only. A user may receive additional roles. Navigation customization can hide allowed sections; specific records and actions can require further checks.",
"sections": "Sections",
"allowed": "Allowed",
"denied": "Denied",
"actions": "CMS permissions",
"actionScope": "A granted permission alone does not bypass dashboard entry, rank hierarchy, record ownership or action-specific validation.",
"granted": "Granted",
"notGranted": "Not granted"
},
"operationsCenter": {
"title": "Operations center",
"hint": "Track your durable imports and repairs, and the shared catalog export queue.",
"syncTitle": "Source synchronization",
"syncHint": "Source synchronization shows live progress on its own page. It has no durable history or automatic retry of failed items here. Catalog export reports the shared queue and latest result; item-level retry is not supported.",
"openSync": "Open synchronization and export",
"openImports": "Open furniture imports"
},
"operationsExport": {
"title": "Catalog repository export",
"hint": "Automatic export of bundles, icons, gamedata, translations and catalog SQL. The queue and latest result are shared across operators.",
"loadError": "Unable to load export status",
"queueError": "Unable to queue export",
"loading": "Loading…",
"disabled": "Export is disabled. Open synchronization to review its configuration.",
"active": "Waiting for {count} operation(s) to finish.",
"running": "Export in progress…",
"pending": "{count} update(s) queued for export.",
"idle": "No pending updates.",
"lastCommit": "Last published commit:",
"lastAttempt": "Last attempt: {date}",
"queuing": "Queuing…",
"queue": "Export now / retry"
},
"performance": {
"title": "Request performance",
"scope": "Server measurements for authenticated HK APIs and selected public page components. Choose a group below.",
"refresh": "Refresh",
"shared": "Shared diagnostics via Redis.",
"local": "Local diagnostics for this instance only; cleared on restart.",
"retention": "Up to 200 recent samples per group, retained for one hour. Collection is best effort.",
"search": "Route or operation ID",
"sort": "Order",
"slowest": "Slowest first",
"recent": "Most recent first",
"threshold": "Duration filter",
"all": "All durations",
"slow": "At least 1 second",
"explanation": "Database time includes completed queries and pool waits. External time covers monitored curl downloads only. Concurrent calls can add up to more than the request duration; these values are not exclusive parts of the total.",
"empty": "No matching requests yet. Use the HK, then refresh this page.",
"database": "Database",
"external": "Monitored downloads",
"calls": "{count} calls",
"failures": "{count} failures",
"streaming": "Streaming response: timing stops at response creation, not at the end of the operation.",
"operation": "Operation ID",
"kind": "Measurement group",
"adminApi": "HK APIs",
"publicPage": "Public pages",
"applyFilters": "Apply filters",
"publicBoundary": "Public measurements cover the root server page component on /me, news, profiles, events and search. They exclude metadata, separately rendered children, network transfer and browser rendering. Component outcomes are not HTTP response codes. Static build invocations are excluded.",
"outcomes": {
"completed": "Component completed",
"failed": "Component failed",
"redirect": "Redirect",
"not-found": "Page not found"
}
},
"importProgress": {
"validating": "Checking local data",
"downloading": "Downloading files",
"converting": "Converting to Nitro",
"checking_sources": "Searching configured sources",
"writing_db": "Saving SQL and catalog",
"writing_furnidata": "Updating furnidata",
"translating": "Updating translations",
"current": "Current phase: {phase}",
"last": "Last phase: {phase}",
"elapsed": "{seconds}s in this phase",
"recovered": "Bundle recovered from {source} · revision {revision}. Classname, type and revision matched; bundle identity validated.",
"recoveryHint": "You can continue. If the original files fail, the importer will search enabled sources for a matching classname, type and revision, then validate the Nitro bundle. Unavailable files can still be attached manually."
},
"table": {
"search": "Search…",
"clearSearch": "Clear search",
"filters": "Filters",
"clearAll": "Clear all",
"all": "All",
"columns": "Columns",
"perPage": "{count} / page",
"selected": "{count} selected",
"results": "{count} results",
"empty": "No results match your search or filters.",
"selectAll": "Select all rows on this page",
"selectRow": "Select row {id}",
"removeFilter": "Remove filter: {name}",
"previous": "Previous page",
"next": "Next page",
"page": "Page {page}",
"pageOf": "Page {page} of {last}",
"bulkError": "The operation failed. Your selection has been kept; check the result before retrying.",
"confirmBulk": "{action} on {count} selected rows?",
"views": {
"title": "Saved views",
"hint": "Save filters, sorting and visible columns to your account. Up to 20 views per table.",
"saved": "View saved",
"error": "Saved views are temporarily unavailable. Try again.",
"retry": "Retry",
"loading": "Loading views...",
"empty": "No saved views yet.",
"deleteNamed": "Delete {name}",
"delete": "Delete",
"name": "View name",
"replace": "Replace this view",
"save": "Save current view"
}
},
"actions": {
"saved": "Saved successfully.",
"error": "The operation could not be completed.",
"saving": "Saving…",
"saveError": "Save failed. Your changes are still here; please try again.",
"unsaved": "Unsaved changes",
"leaveUnsaved": "You have unsaved changes. Leave this page?",
"preview": "Preview"
},
"workQueue": {
"title": "Work to review",
"tickets": "Open tickets",
"ticketsHint": "CMS and help-center queues",
"imports": "Imports to review",
"importsHint": "Your interrupted jobs or jobs with failed items",
"errors": "Open CMS error groups",
"errorsHint": "From the retained diagnostic history",
"unavailable": "Status unavailable — open to inspect"
},
"syncQueue": {
"preparing": "Preparing synchronization...",
"queued": "Synchronization saved. Follow its progress in the history below.",
"start": "Start synchronization",
"description": "Synchronization runs in the background. Progress and safe retries remain in your import history after you leave this page.",
"failed": "Could not queue synchronization"
},
"publicationPreflight": {
"affectedPages": "Affected public pages",
"scheduleInvalid": "Choose a valid start or publication date. An event end must follow its start.",
"description": "Checks use the current form values. Remote image and link availability is not tested.",
"slugNormalized": "The public address will use the normalized slug shown below.",
"imageInvalid": "Use a local image path or an HTTP/HTTPS image URL without credentials.",
"imageMissing": "No cover image selected. The page will use its fallback.",
"title": "Publication checks",
"ready": "Image, links and schedule passed the local checks.",
"linksInvalid": "Review the content links: only local, HTTP/HTTPS and email links are allowed.",
"schedulePast": "The selected date is in the past. Review it before publishing.",
"previewHint": "These links show the current public pages. Use Preview to check unsaved content. The final article slug may receive a suffix if already in use."
},
"deliveries": {
"title": "Background updates",
"scope": "Latest 100 background updates for news and bulk catalog changes. Saved content and background delivery are tracked separately. Import progress is available in Import history.",
"refresh": "Refresh",
"empty": "No delivery records.",
"retry": "Retry delivery",
"retried": "Delivery queued again.",
"retryError": "Delivery failed. Check service diagnostics before retrying.",
"hotel": "Hotel catalog update",
"export": "Catalog Git export request",
"actor": "Staff #{id}",
"attempts": "{count} attempts",
"states": {
"pending": "Waiting",
"running": "Delivering",
"done": "Delivered",
"failed": "Needs attention",
"unknown": "Unknown status"
},
"news": "News cache refresh",
"unknown": "Other background update",
"contextUnavailable": "Content details unavailable",
"changedOffers": "{count} catalog offers",
"system": "System",
"unknownTime": "Time unavailable",
"savedAlready": "The content is saved. This update runs in the background.",
"nextAttempt": "Next automatic attempt: {time}",
"attemptsExhausted": "Automatic attempts are exhausted. Retry here after checking the service.",
"openContent": "Open content",
"diagnostics": "Service diagnostics",
"technicalDetails": "Technical references",
"operationReference": "Operation: {id}",
"deliveryReference": "Delivery: {id}",
"openImports": "Import history",
"unavailable": "Background updates could not be loaded. Try refreshing this page.",
"completed": {
"news": "News cache refresh completed.",
"hotel": "The catalog update request was sent to the hotel. This does not confirm that every client has refreshed.",
"export": "The export request was processed. Check the Git export history for the final result; disabled export does not publish files.",
"unknown": "Background processing completed."
},
"issues": {
"news": "The news cache could not be refreshed. Check Redis and the background worker.",
"hotel": "The catalog update could not be delivered to the hotel. Check the emulator connection.",
"export": "The Git export request could not be queued. Check the export configuration and background worker.",
"unknown": "The background update failed. Check the service diagnostics."
}
}
},
"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."
}
},
"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"
},
"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."
},
"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."
}
},
"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."
}
},
"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}",
"filterStatus": "Status",
"allEvents": "All events",
"statusOngoing": "In progress",
"statusUpcoming": "Upcoming",
"weekStarting": "Week starting (UTC)",
"myRegistrations": "My registrations",
"apply": "Apply",
"reset": "Reset",
"timeZoneHint": "Times are shown in your local time zone. The seven-day filter uses UTC dates.",
"loginForRegistrations": "Sign in to view your registrations.",
"loadError": "Events could not be loaded. Please try again.",
"youRegistered": "You are registered",
"pagination": "Event pages",
"previous": "Previous",
"next": "Next",
"pageSummary": "Page {page} of {pages} · {total} events",
"weeklyView": "Weekly view",
"previousWeek": "Previous week",
"nextWeek": "Next week"
},
"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"
},
"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",
"team": "Team",
"helpTickets": "Help-center tickets",
"users": "Users"
},
"stats": {
"openCfh": "Open CFH",
"bansToday": "Bans today",
"modsOnline": "Mods online",
"quickActions": "Quick actions",
"quickActionsHint": "Kick, mute, alert",
"openTickets": "Open tickets",
"team": "Mod team",
"teamHint": "Online staff & workload",
"openHelpTickets": "Open help tickets"
},
"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"
},
"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"
}
}
},
"myDashboard": {
"messagesCaughtUp": "No unread messages",
"messagesUnavailable": "Open your inbox to check",
"eventTitle": "On the calendar",
"allEvents": "All events",
"eventsUnavailable": "The calendar is temporarily unavailable. Open all events to try again.",
"eventOngoing": "Happening now",
"eventUpcoming": "Coming up",
"eventDetails": "View event",
"noUpcomingEvents": "No upcoming events have been announced yet.",
"roomsUnavailable": "Rooms are temporarily unavailable. Open the community to try again.",
"title": "My dashboard",
"loadError": "We could not load your dashboard. Please try again.",
"retry": "Try again",
"login": "Sign in",
"never": "Never",
"claimed": "Reward claimed successfully!",
"welcome": "Your space on {hotel}",
"noMotto": "No motto yet",
"registered": "Registered: {date}",
"lastOnline": "Last online: {date}",
"enter": "Enter {hotel}",
"quickLinks": "Quick links",
"messages": "Messages",
"profile": "My profile",
"settings": "Settings",
"shop": "Shop",
"unread": "{count} unread messages",
"wallet": "Your wallet",
"currencies": {
"credits": "Credits",
"duckets": "Duckets",
"diamonds": "Diamonds",
"points": "Points"
},
"onlineFriends": "Online friends",
"allFriends": "All friends",
"noOnlineFriends": "None of your friends are online right now.",
"recentRooms": "New rooms",
"community": "Community",
"roomsHint": "The newest rooms created in the hotel.",
"noRooms": "No rooms available yet.",
"activity": "Your activity",
"achievements": "Achievement score",
"respects": "Respects received",
"friends": "Friends",
"lastLogin": "Last login",
"referrals": "Invite your friends",
"referralHint": "Share your link and earn rewards when new players register.",
"referralProgress": "Progress towards your reward",
"reward": "{amount} {currency} for every {count} new players.",
"rewardHint": "Invite {count} players to unlock your reward.",
"referralLink": "Your invitation link",
"claim": "Claim reward",
"remaining": "{count, plural, one {Invite # more player to unlock your reward.} other {Invite # more players to unlock your reward.}}",
"rules": "Invitation rules",
"rulesText": "Creating extra accounts to increase invitations can lead to removal of progress, currency and inventory, and a ban.",
"badges": "Equipped badges",
"noBadges": "You are not wearing any badges yet.",
"copy": "Copy link",
"copied": "Copied!",
"copyFailed": "Copy failed. Select the link and copy it manually.",
"errors": {
"not_enough": "You need more invitations to claim the reward.",
"no_referrals": "Share your link to invite your first friend.",
"bad_config": "The reward is not configured correctly. Contact the staff.",
"ratelimit": "Too many attempts. Wait a moment and try again.",
"error": "The reward could not be claimed. Please try again."
},
"tasks": {
"title": "To do",
"support": "{count, plural, one {# ticket with a support reply} other {# tickets with support replies}}",
"friends": "{count, plural, one {# friend request to review} other {# friend requests to review}}",
"event": "Your next registered event: {title} · {date}",
"reward": "Your referral reward is ready to claim",
"empty": "You're all caught up. No actions waiting.",
"unavailable": "Some actions could not be checked. Available actions are shown above.",
"retry": "Try again",
"rewardUnavailable": "Referral progress is temporarily unavailable. Please try again."
}
},
"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."
}
}
},
"search": {
"title": "Search",
"subtitle": "Find users, open rooms, news and events.",
"queryLabel": "Search term",
"submit": "Search",
"enterQuery": "Enter a search term to find users, rooms, news and events.",
"resultsFor": "Results for “{query}”",
"users": "Users",
"rooms": "Open rooms",
"news": "News",
"events": "Events",
"loadError": "These results could not be loaded. Please try again.",
"empty": "No matches found.",
"online": "Online",
"offline": "Offline",
"pagination": "{category} pages",
"previous": "Previous",
"next": "Next",
"pageSummary": "Page {page} of {pages} · {total} results"
},
"notifications": {
"title": "Notifications",
"subtitle": "Your support replies, friend requests and registered events.",
"scope": "This inbox shows up to 100 recent support replies, 100 pending friend requests and 100 upcoming registered events.",
"loading": "Loading notifications…",
"error": "Notifications are temporarily unavailable.",
"retry": "Try again",
"preferences": "Notification preferences",
"preferencesHint": "Choose which categories appear here. These settings do not send emails or change your registrations.",
"support": "Support replies",
"friends": "Friend requests",
"events": "Upcoming events",
"unreadCount": "{count, plural, =0 {No unread notifications} one {# unread notification} other {# unread notifications}}",
"saveError": "The change could not be saved. Please try again.",
"saved": "Change saved.",
"empty": "No notifications in your enabled categories.",
"read": "Read",
"unread": "Unread",
"markRead": "Mark as read",
"pagination": "Notification pages",
"previous": "Previous",
"next": "Next",
"page": "Page {page} of {pages}"
}
},
"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:"
}
},
"toolbar": {
"home": "Startseite",
"reload": "Neu laden",
"fullscreen": "Vollbild",
"logout": "Abmelden",
"onlineUsers": "Nutzer online",
"emulatorOnline": "Emulator online",
"emulatorOffline": "Emulator offline",
"dragToMove": "Ziehen zum Verschieben",
"hide": "Leiste ausblenden",
"fullscreenExit": "Vollbild beenden",
"show": "Leiste anzeigen",
"emulatorUnknown": "Emulatorstatus unbekannt"
},
"admin": {
"studio": {
"importDiagnostics": {
"attempts": "Dateidiagnose",
"preliminary": "Vorprüfung der Adressen; der Inhalt wird beim Import geprüft.",
"http": "HTTP {status}",
"network": "Verbindung fehlgeschlagen",
"timeout": "Zeitüberschreitung der Quelle",
"invalidResponse": "Die Quelle lieferte eine Webseite statt einer Datei",
"available": "Datei gefunden; Prüfung steht aus",
"recover": "Original anhängen und fortsetzen",
"recoveryHint": "Wähle {file} (maximal 50 MB). Die Identität wird geprüft. Fehlgeschlagene Einträge werden wiederholt; abgeschlossene Importe bleiben erhalten.",
"attach": "Originale .nitro-Datei wählen",
"working": "Datei wird geprüft oder Import fortgesetzt...",
"attached": "Passende Originaldatei angehängt",
"resume": "Fehlgeschlagene Importe mit dieser Datei fortsetzen",
"invalidFile": "Wähle eine passende originale .nitro-Datei bis 50 MB und versuche es erneut.",
"resumeError": "Aktualisiere den Verlauf und nutze den neuesten Versuch; prüfe die Datei und versuche es erneut.",
"mismatchedFile": "Diese Datei gehört zu einem anderen Möbelstück.",
"alreadyStarted": "Die Wiederherstellung läuft bereits. Aktualisiere den Verlauf und nutze den neuesten Versuch.",
"notEligible": "Dieser Eintrag kann nicht mit einem Anhang wiederhergestellt werden."
},
"completeness": {
"title": "Completeness and next steps",
"parts": {
"sql": "SQL item",
"catalog": "Catalog offer",
"furnidata": "Furnidata",
"icon": "Local icon",
"nitro": "Nitro file"
},
"statuses": {
"present": "Present",
"missing": "Missing",
"unknown": "Not verified",
"conflict": "Needs review"
},
"actions": {
"sql": "Import or repair this furni to create the missing item record.",
"catalog": "Import or repair this furni to add an offer using the automatic category and price.",
"furnidata": "Import or repair this furni to add the missing furniture data.",
"icon": "Import or repair this furni to retrieve the missing local icon.",
"nitro": "Import or repair this furni to retrieve the asset. For an existing item, Regenerate .nitro is also available.",
"recheck": "Recheck local state before repair. If this persists, check the local file access.",
"audit": "Review duplicate records and matching sprite IDs and types in Catalog audit before repair."
},
"openAudit": "Open Catalog audit to resolve conflicts",
"excludedConflicts": "{count, plural, one {# item needs review and is excluded from this import.} other {# items need review and are excluded from this import.}}"
},
"preflight": {
"filterLabel": "Filter import checks",
"filters": {
"all": "All ({count})",
"complete": "To complete ({count})",
"conflict": "Conflicts ({count})",
"verify": "To verify ({count})"
},
"empty": "No furniture in this group.",
"actions": {
"complete": "Suggested: complete existing furniture",
"import": "Suggested: import new furniture",
"refresh": "Existing furniture is complete; refresh source data",
"conflict": "Resolve the conflicting local records before import",
"verify": "Review the unverified components before continuing"
},
"missing": "Missing: {parts}",
"unknown": "Not verified: {parts}"
}
}
},
"publicData": {
"loadError": "This section could not be loaded. Please try again.",
"retry": "Retry",
"unavailable": "Unavailable"
}
}