Files
EpicNext-Cms/src/messages/el.json
T
openhands 6bffc53779
Gitea Actions Runner Test / test-job (push) Successful in 1s
CI / check (push) Successful in 1m8s
CI / tests-integration (push) Successful in 1m53s
CI / tests-unit (push) Successful in 1m59s
CI / tests-ui (push) Successful in 2m42s
CI / preflight (push) Skipped
CI / deploy (push) Successful in 4m33s
refactor(auth): merge the duplicate login form and localize the auth screens
`home-login-form.tsx` and `login-form.tsx` were two ~240-line near-identical
components. Delete the former and give `LoginForm` a `variant` prop:

- `variant="page"`   sr-only labels plus the register/forgot footer (/login)
- `variant="compact"` visible labels, no footer (homepage sidebar)

Field ids now come from `useId()`, so the two usages can never collide, and the
hardcoded "Show"/"Hide"/"Loading" strings are translated.

Localization of the login and register screens:

- `home-login-form.tsx` was entirely hardcoded English.
- `passwordStrength()` returned hardcoded "Weak"/"Fair"/"Good"/"Strong".
- `register.ts` returned only English strings. It now returns a
  locale-independent `code` next to the message, and the form renders
  `t(code)` with the English string as a fallback.
- Backfilled the new keys across all 25 locales, plus the login/register
  strings that were still English in most of them. `ar`, `fi` and `ja` had
  their entire login/register namespace in English and are now filled in.
  Locale parity stays at 0 missing keys, as `i18n:check` requires.

Copy that did not match the enforced rules: the UI advertised "min 8 chars"
(EN) / "min 6 tekens" (NL) while registration requires 12 characters plus an
uppercase, a lowercase, a digit and a special character. Corrected in every
locale. `password-reset.ts` enforced only 6 characters and is raised to 12 to
match registration.

Accessibility: `login-form.tsx` had no `<label>`, no `id` and no `required` on
any field. All three are now present, and error banners are announced with
`role="alert"`.

Adds `src/i18n/auth-messages.test.ts`, which asserts every `RegisterErrorCode`
resolves to a non-empty message in all 25 locales; verified it fails when a key
is removed. The existing register tests now also assert the error `code`.
2026-10-04 18:50:23 +02:00

6797 lines
323 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": "Ένα αντίγραφο ανάκτησης θα διατηρηθεί σε αυτό το πρόγραμμα περιήγησης για 7 ημέρες.",
"saved": "Το αντίγραφο ανάκτησης αποθηκεύτηκε σε αυτό το πρόγραμμα περιήγησης για 7 ημέρες.",
"unavailable": "Η ανάκτηση στο πρόγραμμα περιήγησης δεν είναι διαθέσιμη. Κράτησε αυτή τη σελίδα ανοιχτή μέχρι να αποθηκευτούν οι αλλαγές σου.",
"found": "Υπάρχει αντίγραφο ανάκτησης σε αυτό το πρόγραμμα περιήγησης, αποθηκευμένο στις",
"restore": "Επαναφορά αντιγράφου περιήγησης",
"discard": "Διαγραφή αντιγράφου περιήγησης",
"confirmRestore": "Να αντικατασταθεί η τρέχουσα φόρμα με το αντίγραφο ανάκτησης του προγράμματος περιήγησης; Έλεγξε το περιεχόμενο πριν από την αποθήκευση.",
"confirmDiscard": "Να διαγραφεί αυτό το αντίγραφο ανάκτησης από το πρόγραμμα περιήγησης; Η τρέχουσα φόρμα θα παραμείνει αμετάβλητη."
},
"nav": {
"home": "Σπίτι",
"community": "Κοινότητα",
"articles": "Άρθρα",
"photos": "Φωτογραφίες",
"staff": "Προσωπικό",
"rankings": "Κατάταξη",
"guilds": "Συντεχνίες",
"leaderboards": "Πίνακες κατάταξης",
"rareValues": "Σπάνιες αξίες",
"shop": "Κατάστημα",
"market": "Αγορά",
"assistance": "Βοήθεια",
"helpCenter": "Κέντρο βοήθειας",
"myTickets": "Τα εισιτήριά μου",
"badges": "Σήματα",
"radio": "Ραδιόφωνο",
"friends": "Φίλοι",
"messages": "Μηνύματα",
"admin": "Διαχειρ",
"openMenu": "Άνοιγμα μενού",
"closeMenu": "Κλείσιμο μενού",
"drawBadge": "Σχεδιάστε το σήμα",
"events": "Events",
"polls": "Polls",
"mod": "Mod"
},
"header": {
"online": "{count} {hotel} στο διαδίκτυο",
"nitroClient": "Πελάτης Nitro",
"tagline": "Ένας διαδικτυακός εικονικός κόσμος όπου μπορείτε να δημιουργήσετε το δικό σας avatar, να κάνετε φίλους, να συνομιλήσετε, να δημιουργήσετε δωμάτια και πολλά άλλα!",
"login": "Είσοδος",
"or": "Ή",
"createAccount": "Δημιουργία λογαριασμού"
},
"footer": {
"copyright": "© {year} - Το {hotel} είναι ένα μη κερδοσκοπικό εκπαιδευτικό έργο"
},
"pages": {
"staff": {
"title": "Προσωπικό",
"subtitle": "Η ομάδα πίσω από το ξενοδοχείο",
"ranksTitle": "Βαθμοί",
"ranksSubtitle": "Τι φροντίζει το κάθε μέρος της ομάδας",
"membersTitle": "μέλη της ομάδας",
"membersEmptySubtitle": "Κανένας να δείξει αυτή τη στιγμή",
"membersSubtitle": "{count, plural, one {# member keeping things running} other {# members keeping things running}}",
"emptyState": "Δεν υπάρχουν μέλη του προσωπικού για εμφάνιση.",
"colUsername": "Όνομα χρήστη",
"colRank": "Κατάταξη",
"colMotto": "Μότο",
"viewProfile": "View profile",
"noMotto": "No motto set",
"loadError": "Unable to load staff members. Please try again shortly.",
"retry": "Try again"
},
"leaderboard": {
"title": "Leaderboard",
"subtitle": "Οι κορυφαίοι 20 παίκτες κατά {currency}",
"tab_credits": "Πιστώσεις",
"tab_diamonds": "Διαμάντια",
"tab_duckets": "Παπιάκια",
"tab_achievement": "Επιτεύγματα",
"tab_respects": "Σεβασμοί",
"tab_onlinetime": "Διαδικτυακός χρόνος",
"emptyState": "Δεν υπάρχουν ακόμη βαθμολογίες προς εμφάνιση.",
"colAvatar": "Avatar",
"colPlayer": "Παίκτης"
},
"friends": {
"title": "Φίλοι",
"emptySubtitle": "Δεν έχετε προσθέσει φίλους ακόμα",
"subtitle": "{count, plural, one {You have # friend} other {You have # friends}}",
"emptyState": "Προσθέστε φίλους στο ξενοδοχείο και θα εμφανιστούν εδώ.",
"noMotto": "Χωρίς σύνθημα",
"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": "Μηνύματα",
"subtitle": "Σας περιμένουν αιτήματα φιλίας και μηνύματα εκτός σύνδεσης",
"requestsTitle": "Αιτήματα φιλίας",
"requestsEmptySubtitle": "Κανείς δεν έχει ζητήσει να γίνει φίλος σου ακόμα",
"requestsSubtitle": "{count, plural, one {# pending request} other {# pending requests}}",
"requestsEmptyState": "Δεν υπάρχουν εκκρεμή αιτήματα φιλίας.",
"wantsToBeFriend": "θέλει να γίνει φίλος σου.",
"accept": "Αποδοχή",
"offlineTitle": "Μηνύματα εκτός σύνδεσης",
"offlineEmptySubtitle": "Τα εισερχόμενά σας είναι άδεια",
"offlineSubtitle": "{count, plural, one {# message received} other {# messages received}}",
"offlineEmptyState": "Δεν έχετε μηνύματα εκτός σύνδεσης.",
"unknownUser": "Χρήστης #{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": "Χωρίς σύνθημα",
"statRank": "Κατάταξη",
"statCredits": "Πιστώσεις",
"statRegistered": "Εγγεγραμμένος",
"badgesTitle": "Σήματα",
"badgesEmpty": "Δεν υπάρχουν ακόμη σήματα.",
"photosTitle": "Φωτογραφίες",
"photosEmpty": "Δεν υπάρχουν ακόμα φωτογραφίες.",
"guestbookTitle": "Βιβλίο επισκεπτών",
"guestbookSubtitle": "Μηνύματα στον τοίχο του χρήστη {username}",
"leaveMessage": "Αφήστε ένα μήνυμα",
"guestbookPlaceholder": "Γράψτε κάτι στο βιβλίο επισκεπτών του χρήστη {username}…",
"post": "Ανάρτηση",
"loginToPost": "Συνδεθείτε για να αφήσετε ένα μήνυμα στο βιβλίο επισκεπτών.",
"guestbookEmpty": "Δεν υπάρχουν ακόμη καταχωρίσεις στο βιβλίο επισκεπτών.",
"unknownUser": "Χρήστης #{id}",
"statDuckets": "Παπιάκια",
"statDiamonds": "Διαμάντια",
"walletTitle": "Πορτοφόλι",
"friendsTitle": "Φίλοι",
"friendsSubtitle": "Άνθρωποι στο ξενοδοχείο με τους οποίους κάνουν παρέα",
"friendsEmpty": "Δεν υπάρχουν φίλοι για εμφάνιση.",
"roomsTitle": "Δωμάτια",
"roomsSubtitle": "Δωμάτια που τους ανήκουν",
"roomsEmpty": "Δεν υπάρχουν δωμάτια για εμφάνιση.",
"roomUntitled": "Δωμάτιο χωρίς τίτλο",
"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": "Κατάταξη",
"subtitle": "Οι κορυφαίοι 12 παίκτες που ταξινομούνται ανά μονάδες",
"emptyState": "Δεν υπάρχουν παίκτες για κατάταξη ακόμα."
},
"home": {
"welcome": "Καλώς ήρθατε στο {hotelName}",
"welcomeSubtitle": "Το ρετρό ξενοδοχείο σας, τώρα με την υποστήριξη του Next.js",
"welcomeBody": "Κάντε παρέα, μαζέψτε έπιπλα και συναντήστε φίλους.",
"enterHotel": "Εισαγάγετε {hotelName}",
"onlineFriends": "Διαδικτυακοί φίλοι",
"noFriendsOnline": "Δεν υπάρχουν φίλοι στο διαδίκτυο",
"register": "ΕΓΓΡΑΦΕΙΤΕ ΤΩΡΑ",
"joinNow": "Εγγραφείτε στο {hotelName} σήμερα!",
"recentUsers": "Πρόσφατοι Χρήστες",
"recentPhotos": "Πρόσφατες Φωτογραφίες",
"latestNews": "Τελευταία νέα",
"newsTitle": "Τελευταία νέα",
"newsSubtitle": "Φρέσκο από το ξενοδοχείο",
"allNews": "Όλα τα νέα →",
"allUsers": "Κοινότητα →",
"noArticles": "Δεν υπάρχουν ακόμη άρθρα.",
"noPhotos": "Δεν υπάρχουν ακόμα φωτογραφίες.",
"noUsers": "Δεν υπάρχουν χρήστες στο διαδίκτυο",
"latestArticle": "Τελευταίο άρθρο",
"latestUsers": "Νεότεροι πολίτες ({count} σύνολο)",
"statsOnline": "Συνδεδεμένοι",
"statsCitizens": "Πολίτες",
"statsRooms": "Δωμάτια",
"statsArticles": "Άρθρα",
"featuresAvatar": "Άβαταρ",
"featuresAvatarDesc": "Δημιούργησε τη μοναδική σου εμφάνιση",
"featuresFurniture": "Έπιπλα",
"featuresFurnitureDesc": "Διακόσμησε δωμάτια με αντικείμενα",
"featuresCommunity": "Κοινότητα",
"featuresCommunityDesc": "Κάνε φίλους και συνομίλησε",
"featuresGames": "Παιχνίδια",
"featuresGamesDesc": "Ανταγωνίσου και διασκέδασε",
"sectionFeaturesLabel": "Features",
"sectionFeaturesTitle": "Everything a great hotel needs",
"sectionStatsLabel": "Live stats",
"sectionStatsTitle": "A community that keeps growing",
"sectionCommunityLabel": "Community",
"sectionCommunityTitle": "Make yourself at home",
"statsPhotos": "Photos",
"onlineNow": "Online now",
"exploreLabel": "Explore the hotel",
"liveUpdates": "Live updates",
"joinCtaTitle": "Ready to make yourself at home?",
"joinCtaBody": "Create your avatar, grab some furni and meet new friends — your hotel adventure starts here.",
"ctaJoin": "Join the hotel",
"browseCommunity": "Browse the community"
},
"news": {
"title": "Νέα",
"subtitle": "Οι τελευταίες ανακοινώσεις, εκδηλώσεις και ενημερώσεις από το ξενοδοχείο",
"noArticles": "Δεν υπάρχουν ακόμη άρθρα.",
"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": "← Ειδήσεις",
"reactionsTitle": "Αντιδράσεις",
"reactionsSubtitle": "Πείτε μας τι πιστεύετε",
"reaction": {
"like": "Όπως",
"love": "Αγάπη",
"wow": "Ουάου"
},
"removeReaction": "Κάντε κλικ για να καταργήσετε την αντίδρασή σας",
"reactWith": "React with {reaction}",
"noReactions": "Καμία αντίδραση ακόμα.",
"logIn": "Συνδεθείτε",
"toReact": "να αντιδράσει.",
"commentsTitle": "Σχόλια",
"commentsSubtitle": "Συμμετάσχετε στη συζήτηση",
"commentsCount": "{count} μέχρι στιγμής",
"noComments": "Δεν υπάρχουν ακόμη σχόλια. Γίνε ο πρώτος που θα σχολιάσει.",
"userNumber": "Χρήστης #{id}",
"addComment": "Προσθέστε ένα σχόλιο",
"commentPlaceholder": "Γράψτε το σχόλιό σας…",
"postComment": "Δημοσίευση σχολίου",
"toComment": "για να αφήσετε ένα σχόλιο.",
"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": "Φωτογραφίες",
"subtitle": "Τα τελευταία στιγμιότυπα που τραβήχτηκαν στο ξενοδοχείο",
"noPhotos": "Δεν υπάρχουν ακόμα φωτογραφίες.",
"photoAlt": "Φωτογραφία από χρήστη #{id}",
"byUser": "από χρήστη #{id}"
},
"badges": {
"title": "Σήματα",
"subtitle": "Τα σήματα που μπορείτε να κερδίσετε και να επιδείξετε σε όλο το ξενοδοχείο",
"noBadges": "Δεν υπάρχουν ακόμη διαθέσιμα σήματα."
},
"community": {
"title": "Κοινότητα",
"subtitle": "Όλα όσα συμβαίνουν γύρω από το ξενοδοχείο σε ένα μέρος",
"open": "Άνοιγμα →",
"links": {
"rankings": {
"title": "Κατάταξη",
"text": "Δείτε τους πλουσιότερους παίκτες του ξενοδοχείου, ταξινομημένους με βάση τις πιστώσεις."
},
"staff": {
"title": "Προσωπικό",
"text": "Γνωρίστε την ομάδα που διατηρεί το ξενοδοχείο σε λειτουργία κάθε μέρα."
},
"news": {
"title": "Νέα",
"text": "Οι τελευταίες ανακοινώσεις, εκδηλώσεις και ενημερώσεις."
},
"photos": {
"title": "Φωτογραφίες",
"text": "Στιγμιότυπα που κοινοποιούνται από την κοινότητα από όλο το ξενοδοχείο."
},
"guilds": {
"title": "Συντεχνίες",
"text": "Περιηγηθείτε στις ομάδες που έχουν δημιουργήσει και έχουν ενταχθεί οι παίκτες."
},
"leaderboards": {
"title": "Πίνακες κατάταξης",
"text": "Ποιος είναι στην κορυφή αυτή τη σεζόν στα στατιστικά του ξενοδοχείου."
}
}
},
"guilds": {
"title": "Συντεχνίες",
"subtitle": "Περιηγηθείτε στις ομάδες που έχουν δημιουργήσει και έχουν ενταχθεί οι παίκτες",
"empty": "Δεν υπάρχουν ακόμη συντεχνίες.",
"unnamedGuild": "Ανώνυμη συντεχνία",
"noDescription": "Καμία περιγραφή"
},
"guild": {
"allGuilds": "← Όλες οι συντεχνίες",
"unnamedGuild": "Ανώνυμη συντεχνία",
"noDescription": "Καμία περιγραφή",
"memberSingular": "Μέλος",
"memberPlural": "Μέλη",
"founded": "Ιδρύθηκε",
"forumLink": "Φόρουμ →",
"discussion": "Συζήτηση",
"membersTitle": "Μέλη",
"memberLowerSingular": "μέλος",
"memberLowerPlural": "μέλη",
"noMembers": "Κανένα μέλος.",
"owner": "Ιδιοκτήτης",
"noMotto": "Χωρίς σύνθημα"
},
"guildForum": {
"backToGuild": "← Επιστροφή στη συντεχνία",
"unnamedGuild": "Ανώνυμη συντεχνία",
"forumTitle": "{guild} — Φόρουμ",
"threadSingular": "νήμα",
"threadPlural": "κλωστές",
"newThread": "+ Νέο νήμα",
"empty": "Δεν υπάρχουν ακόμη θέματα σε αυτό το φόρουμ.",
"colSubject": "Θέμα",
"colAuthor": "Συγγραφέας",
"colPosts": "Αναρτήσεις",
"colDate": "Ημερομηνία",
"noSubject": "(χωρίς θέμα)",
"pinned": "Καρφιτσωμένο",
"locked": "Κλειδωμένο",
"userNumber": "Χρήστης #{id}",
"unknown": "Άγνωστο",
"success": {
"posted": "Thread posted."
}
},
"guildForumNew": {
"backToForum": "← Επιστροφή στο φόρουμ",
"unnamedGuild": "Ανώνυμη συντεχνία",
"title": "Νέο νήμα",
"subtitle": "στο φόρουμ {guild}",
"subjectLabel": "Θέμα",
"subjectPlaceholder": "Θέμα νήματος",
"messageLabel": "Μήνυμα",
"messagePlaceholder": "Γράψτε την αρχική σας ανάρτηση…",
"postThread": "Δημοσίευση νήματος",
"cancel": "Ακύρωση",
"errors": {
"invalid": "Subject and message are required.",
"notFound": "That guild was not found.",
"ratelimit": "You're posting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"shop": {
"title": "Κατάστημα",
"subtitle": "Συμπληρώστε τον λογαριασμό σας και αποκτήστε αποκλειστικά πακέτα, νόμισμα και σήματα.",
"browsingCategory": "Περιήγηση στα πακέτα {category}.",
"all": "Όλα",
"allPackages": "Όλα τα πακέτα",
"packagesAvailable": "{count, plural, one {# package available} other {# packages available}}",
"empty": "Δεν υπάρχουν διαθέσιμα πακέτα αυτήν τη στιγμή.",
"buy": "Αγοράστε",
"loginToBuy": "Log in to buy",
"creditsHint": "Packages are paid with in-game credits. Top up first if you need more.",
"topUpLink": "Top up credits",
"priceCredits": "{credits} credits (≈ {usd})",
"priceCreditsShort": "{credits} cr",
"success": {
"bought": "Package purchased — rewards have been added to your account.",
"boughtNamed": "You purchased \"{name}\" — rewards have been added to your account."
},
"errors": {
"invalid": "That package is no longer available.",
"credits": "You don't have enough credits for this package.",
"ratelimit": "You're purchasing too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"topup": {
"title": "Συμπληρώστε με PayPal",
"subtitle": "Πληρώστε με ασφάλεια με το PayPal και οι πιστώσεις σας προστίθενται τη στιγμή που εκκαθαρίζεται η πληρωμή.",
"cancelled": "Το ταμείο ακυρώθηκε - δεν έγινε πληρωμή.",
"chooseAmount": "Επιλέξτε ένα ποσό",
"notConfiguredPre": "Το PayPal δεν έχει ρυθμιστεί ακόμα. Πρέπει να οριστεί ένας διαχειριστής",
"notConfiguredAnd": "και",
"notConfiguredOptional": "(και προαιρετικά",
"notConfiguredPost": "για sandbox εναντίον live).",
"balanceTitle": "Το υπόλοιπό σας",
"signedInAs": "Συνδεθήκατε ως {username}",
"credits": "Πιστώσεις",
"creditsPerUnit": "Πιστώσεις ανά 1,00 {currency}",
"rateLine": "Λαμβάνετε πιστώσεις <strong>{amount}</strong> ανά 1,00 {currency}. Οι πιστώσεις εμφανίζονται στο παιχνίδι την επόμενη φορά που θα συνδεθείτε."
},
"marketplace": {
"title": "Αγορά",
"subtitle": "Περιηγηθείτε σε έπιπλα και σπάνια που αναφέρονται από παίκτες. Οι καταχωρίσεις τοποθετούνται στο παιχνίδι και ενημερώνονται ζωντανά — κατευθυνθείτε στο ξενοδοχείο για να κάνετε μια προσφορά.",
"activeOffers": "Ενεργές προσφορές",
"sellers": "Πωλητές",
"totalValue": "Συνολική αξία",
"activeListings": "Ενεργές καταχωρίσεις",
"mostRecentFirst": "Η πιο πρόσφατη λίστα πρώτη",
"empty": "Δεν υπάρχουν ενεργές προσφορές αγοράς αυτήν τη στιγμή. Ελέγξτε ξανά αργότερα.",
"colOffer": "Προσφορά",
"colItem": "Στοιχείο",
"colSeller": "Πωλητής",
"colPrice": "Τιμή",
"colListed": "Εισηγμένη",
"itemLabel": "Στοιχείο #{id}",
"userLabel": "Χρήστης #{id}",
"justNow": "μόλις τώρα",
"minutesAgo": "πριν από {count}λ",
"hoursAgo": "{count}h πριν",
"daysAgo": "πριν από {count}d"
},
"rares": {
"title": "Σπάνιες αξίες",
"subtitle": "Πάρτε μια επισκόπηση όλων των σπάνιων στο ξενοδοχείο, ομαδοποιημένα ανά κατηγορία.",
"empty": "Προς το παρόν δεν έχουμε σπάνια που αναφέρονται εδώ.",
"rareCount": "{count, plural, one {# rare} other {# rares}}",
"viewRares": "Προβολή σπάνιων →"
},
"rareCategory": {
"rareCount": "{count, plural, one {# rare in this category} other {# rares in this category}}",
"allRares": "← Όλα σπάνια",
"empty": "Δεν υπάρχουν ακόμα σπάνια είδη σε αυτήν την κατηγορία.",
"colRare": "Σπάνιο",
"colCredits": "Πιστώσεις",
"colCurrency": "Νόμισμα",
"creditsValue": "{value} πιστώσεις",
"duckets": "Παπιάκια",
"diamonds": "Διαμάντια",
"credits": "Πιστώσεις"
},
"redeem": {
"title": "Εξαργυρώστε ένα κουπόνι",
"subtitle": "Έχετε κωδικό κουπονιού; Εισαγάγετε το παρακάτω για να προσθέσετε την ανταμοιβή στον λογαριασμό σας.",
"enterCode": "Εισαγάγετε τον κωδικό σας",
"oncePerAccount": "Κάθε κουπόνι μπορεί να εξαργυρωθεί μόνο μία φορά ανά λογαριασμό.",
"balanceTitle": "Το υπόλοιπό σας",
"signedInAs": "Συνδεθήκατε ως {username}",
"credits": "Πιστώσεις",
"instantCredit": "Οι εξαργυρωμένες ανταμοιβές πιστώνονται αμέσως και εμφανίζονται στο παιχνίδι την επόμενη φορά που θα συνδεθείτε."
},
"help": {
"title": "Κέντρο βοήθειας",
"subtitle": "Βρείτε οδηγούς, θέματα υποστήριξης και τους κανόνες του ξενοδοχείου — όλα όσα χρειάζεστε για να λάβετε βοήθεια.",
"myTickets": "Τα εισιτήριά μου →",
"topicsTitle": "Υποστήριξη θεμάτων",
"topicsSubtitle": "Περιηγηθείτε σε οδηγούς και απαντήσεις σε συνήθεις ερωτήσεις",
"topicsEmpty": "Δεν υπάρχουν ακόμα θέματα βοήθειας.",
"rulesTitle": "Κανόνες ξενοδοχείου",
"rulesSubtitle": "Παρακαλούμε διαβάστε αυτά πριν κάνετε παρέα στο ξενοδοχείο",
"rulesEmpty": "Δεν έχουν δημοσιευθεί ακόμη κανόνες.",
"categoryEmpty": "Δεν υπάρχουν κανόνες σε αυτή την κατηγορία."
},
"helpCategory": {
"back": "← Κέντρο βοήθειας",
"topicSubtitle": "Θέμα Κέντρου βοήθειας",
"moreTitle": "Περισσότερα θέματα βοήθειας",
"moreSubtitle": "Μετάβαση σε άλλο θέμα υποστήριξης"
},
"helpTickets": {
"title": "Εισιτήρια βοήθειας",
"subtitle": "Υποβάλετε ένα εισιτήριο στο προσωπικό και παρακολουθήστε τα ανοιχτά αιτήματά σας.",
"statTotal": "Σύνολο εισιτηρίων",
"statOpen": "Ανοίξτε",
"statClosed": "Κλειστό",
"newTitle": "Νέο εισιτήριο",
"newSubtitle": "Περιγράψτε το πρόβλημά σας και το προσωπικό θα σας δώσει συνέχεια",
"subjectPlaceholder": "Θέμα",
"contentPlaceholder": "Περιγράψτε το πρόβλημά σας…",
"submit": "Υποβολή εισιτηρίου",
"listTitle": "Τα εισιτήριά σας",
"listSubtitle": "Κάθε αίτημα που έχετε στείλει στο προσωπικό",
"listEmpty": "Δεν έχετε εισιτήρια ακόμα.",
"colId": "ID",
"colSubject": "Θέμα",
"colStatus": "Κατάσταση",
"colCreated": "Δημιουργήθηκε",
"statusOpen": "Ανοίξτε",
"statusClosed": "Κλειστό",
"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": "Κάντε αίτηση για προσωπικό {hotel}",
"subtitle": "Ανοίγουμε αιτήσεις προσωπικού κάθε τόσο. Αν συναντήσετε μια θέση που πιστεύετε ότι θα ταιριάζετε τέλεια, μη διστάσετε να κάνετε αίτηση για αυτήν.",
"noPositionsTitle": "Δεν υπάρχουν ανοιχτές θέσεις",
"noPositionsBody": "Αυτήν τη στιγμή δεν υπάρχουν ανοιχτές θέσεις. Επιστρέψτε αργότερα για να ελέγξετε εάν έχουμε ανοίξει μέχρι τότε. Σας ευχαριστούμε για το ενδιαφέρον σας.",
"noDeadline": "Δεν έχει οριστεί προθεσμία",
"deadline": "Προθεσμία υποβολής αιτήσεων: {date}",
"alreadyApplied": "Έχετε ήδη υποβάλει αίτηση για {rank}",
"aboutYou": "Σχετικά με εσάς",
"aboutPlaceholder": "Πείτε μας γιατί θα ήσασταν εξαιρετικός {rank}…",
"applyFor": "Αίτηση για {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": "Κάντε αίτηση για την ομάδα του {hotel}",
"subtitle": "Ανοίγουμε περιοδικά αιτήσεις ομάδας. Αν δείτε μια ομάδα που σας ταιριάζει, μην διστάσετε να κάνετε αίτηση!",
"noPositionsTitle": "Δεν υπάρχουν ανοιχτές θέσεις ομάδας",
"noPositionsBody": "Αυτήν τη στιγμή δεν υπάρχουν ανοιχτές θέσεις ομάδας. Επιστρέψτε αργότερα για να ελέγξετε για νέα ανοίγματα. Σας ευχαριστώ!",
"pending": "Η αίτησή σας είναι σε εκκρεμότητα",
"aboutYou": "Σχετικά με εσάς",
"aboutPlaceholder": "Πείτε μας γιατί θα ήσασταν πολύ κατάλληλοι για το {rank}…",
"applyFor": "Αίτηση για {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": "Ραδιόφωνο",
"subtitle": "Συντονιστείτε στο ραδιόφωνο του ξενοδοχείου — ζωντανά σετ DJ, αιτήματα και φωνές.",
"nowPlaying": "Τώρα παίζει",
"nothingPlaying": "Δεν παίζει τίποτα αυτή τη στιγμή.",
"onAir": "On air: {dj}",
"noDj": "Χωρίς DJ στον αέρα.",
"audioUnsupported": "Το πρόγραμμα περιήγησής σας δεν υποστηρίζει το στοιχείο ήχου.",
"streamOffline": "Η ροή αυτή τη στιγμή είναι εκτός σύνδεσης.",
"exploreTitle": "Εξερευνήστε το ραδιόφωνο",
"exploreSubtitle": "Πρόγραμμα, κραυγές, αιτήματα και πολλά άλλα",
"linkSchedule": "Πρόγραμμα",
"linkScheduleText": "Η εβδομαδιαία μας σύνθεση από DJs και σόου.",
"linkShouts": "Κραυγές",
"linkShoutsText": "Κραυγές και αιτήματα από την κοινότητα.",
"linkRequests": "Αιτήματα",
"linkRequestsText": "Ζητήστε από τον DJ να περιγράψει το αγαπημένο σας κομμάτι.",
"linkApply": "Αίτηση ως DJ",
"linkApplyText": "Γίνετε μέλος της ομάδας και βγείτε στα ερτζιανά.",
"linkLeaderboard": "Leaderboard",
"linkLeaderboardText": "Οι κορυφαίοι ακροατές ταξινομούνται με βάση τους πόντους που έχουν κερδίσει.",
"todayTitle": "Το σημερινό πρόγραμμα",
"todayTitleWithDay": "Το σημερινό πρόγραμμα · {day}",
"todaySubtitle": "Τι κυκλοφορεί σήμερα στα ερτζιανά",
"fullWeek": "Ολόκληρη εβδομάδα →",
"noShowsToday": "Δεν έχουν προγραμματιστεί εμφανίσεις για σήμερα.",
"colTime": "Χρόνος",
"colShow": "Εμφάνιση",
"colDj": "DJ",
"untitledShow": "Παράσταση χωρίς τίτλο",
"userNumber": "Χρήστης #{id}",
"contests": {
"id": {
"page": {
"Backtocontests": "← Back to contests",
"Description": "Description",
"Prize": "Prize",
"Period": "Period",
"Created": "Created",
"Updated": "Updated",
"Backtogiveaways": "← Back to giveaways",
"Prize`": "Prize:",
"Radio": "Radio",
"Amount": "Amount (",
"Youllreceive": "You'll receive",
"credits": "credits.",
"PAYPAL_CLIENT_ID": "PAYPAL_CLIENT_ID",
"PAYPAL_SECRET": "PAYPAL_SECRET",
"PAYPAL_API": "PAYPAL_API",
"RecoveryCodes": "Recovery Codes",
"StoretheseonetimeusecodesinasafeplaceEachcanbeusedonceifyouloseaccesstoyourauthenticatorapp": "Store these one-time use codes in a safe place. Each can be used once if you lose access to your authenticator app.",
"APP_KEY": "APP_KEY",
"SessionManagement": "Session Management",
"Viewactivesessionsandsignouteverywhere": "View active sessions and sign out everywhere",
"Backtothehotel": "← Back to the hotel",
"Ownedby": "Owned by",
"Thisroomhasnodescription": "This room has no description.",
"Enterthehoteltovisit": "Enter the hotel to visit",
"NobadgeshavebeenpublishedyetCheckbacksoon": "No badges have been published yet. Check back soon!"
}
}
}
},
"radioSchedule": {
"title": "Πρόγραμμα ραδιοφώνου",
"subtitle": "Η εβδομαδιαία μας σύνθεση από DJs και σόου",
"empty": "Δεν έχουν προγραμματιστεί ακόμη εμφανίσεις.",
"colDay": "Ημέρα",
"colTime": "Χρόνος",
"colDj": "DJ",
"colShow": "Εμφάνιση",
"noShows": "Δεν υπάρχουν παραστάσεις"
},
"radioShouts": {
"title": "Κραυγές ραδιοφώνου",
"subtitle": "Κραυγές και αιτήματα από την κοινότητα",
"postTitle": "Δημοσιεύστε μια κραυγή",
"postSubtitle": "Στείλτε ένα μήνυμα στον DJ on air",
"messageLabel": "Το μήνυμά σας",
"messagePlaceholder": "Στείλτε μια κραυγή στον DJ…",
"shoutButton": "Φωνάξτε",
"loginToPost": "Συνδεθείτε για να δημοσιεύσετε μια κραυγή.",
"latestTitle": "Τελευταίες κραυγές",
"latestSubtitle": "Τα πιο πρόσφατα μηνύματα από ακροατές",
"empty": "Χωρίς φωνές ακόμα. Γίνε ο πρώτος!",
"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": "Διαγωνισμοί Ραδιοφώνου",
"subtitle": "Συντονιστείτε και λάβετε μέρος στους τελευταίους on-air διαγωνισμούς μας",
"empty": "Δεν υπάρχουν ακόμη διαγωνισμοί.",
"contestLabel": "Διαγωνισμός #{id}",
"dateUnknown": "Ημερομηνία άγνωστη"
},
"radioGiveaways": {
"title": "Ραδιόφωνο Giveaways",
"subtitle": "Ακούστε την ευκαιρία σας να κερδίσετε στα δώρα μας στο ραδιόφωνο",
"empty": "Δεν υπάρχουν ακόμη δώρα.",
"giveawayLabel": "Δώρο #{id}",
"dateUnknown": "Ημερομηνία άγνωστη"
},
"radioLeaderboard": {
"title": "Πίνακας κορυφαίων ακροατών ραδιοφώνου",
"subtitle": "Οι κορυφαίοι 50 ακροατές ανά πόντους που κέρδισαν συντονίζοντας στο ραδιόφωνο",
"empty": "Δεν υπάρχουν σημεία ακροατής για εμφάνιση ακόμα.",
"colRank": "Κατάταξη",
"colAvatar": "Avatar",
"colListener": "Ακροατής",
"colPoints": "Πόντοι"
},
"radioRequests": {
"formTitle": "Υποβάλετε ένα αίτημα",
"formSubtitle": "Ζητήστε από τον DJ να παίξει το αγαπημένο σας κομμάτι",
"songLabel": "Τραγούδι",
"songPlaceholder": "Ο τίτλος του τραγουδιού",
"artistLabel": "Καλλιτέχνης",
"artistPlaceholder": "Όνομα καλλιτέχνη (προαιρετικό)",
"submitButton": "Υποβολή αιτήματος",
"loginToRequest": "Συνδεθείτε για να υποβάλετε αίτημα.",
"latestTitle": "Πρόσφατα αιτήματα",
"latestSubtitle": "Τα πιο πρόσφατα τραγούδια που ζητήθηκαν",
"empty": "Δεν υπάρχουν ακόμη αιτήματα.",
"colSong": "Τραγούδι",
"colArtist": "Καλλιτέχνης",
"colRequester": "Αιτητής",
"colDate": "Ημερομηνία",
"colStatus": "Κατάσταση",
"statusPending": "Σε εκκρεμότητα",
"statusApproved": "Εγκρίθηκε",
"statusPlayed": "Έπαιξε",
"success": {
"posted": "Request submitted."
},
"errors": {
"empty": "Please enter a song title or artist.",
"invalid": "Invalid request.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"radioApply": {
"title": "Κάντε αίτηση για να γίνετε DJ στο ραδιόφωνο",
"subtitle": "Πες μας για σένα και γιατί θα ταίριαζες πολύ στα ερτζιανά",
"latestTitle": "Η τελευταία σας εφαρμογή",
"statusLabel": "Κατάσταση:",
"submittedOn": "· υποβλήθηκε {date}",
"submitAgain": "Μπορείτε να υποβάλετε ξανά παρακάτω εάν τα στοιχεία σας έχουν αλλάξει.",
"formTitle": "Έντυπο αίτησης",
"formSubtitle": "Πρέπει να συμπληρωθούν όλα τα πεδία που επισημαίνονται ως υποχρεωτικά",
"realNameLabel": "Πραγματικό όνομα",
"realNamePlaceholder": "Το πλήρες όνομά σας",
"ageLabel": "Ηλικία",
"availabilityLabel": "Διαθεσιμότητα",
"availabilityPlaceholder": "Ποιες ημέρες και ώρες μπορείτε να μεταδώσετε;",
"musicStyleLabel": "Μουσικό στυλ",
"musicStylePlaceholder": "π.χ. House, Pop, Hip-Hop",
"experienceLabel": "Εμπειρία",
"optional": "(προαιρετικό)",
"experiencePlaceholder": "Κάποια προηγούμενη εμπειρία DJ ή φιλοξενίας;",
"motivationLabel": "Κίνητρο",
"motivationPlaceholder": "Γιατί θέλετε να γίνετε μέλος της ομάδας του ραδιοφώνου;",
"submitButton": "Υποβολή αίτησης",
"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": "Ρυθμίσεις λογαριασμού",
"accountSettingsSubtitle": "Διαχειριστείτε το προφίλ, την ασφάλεια και τους συνδεδεμένους λογαριασμούς σας",
"publicProfile": "Το δημόσιο προφίλ σας",
"noMotto": "Χωρίς σύνθημα",
"noEmail": "Δεν υπάρχει e-mail στο αρχείο",
"changeMotto": "Άλλαξε μότο",
"changeMottoSubtitle": "Ενημερώνεται άμεσα στο παιχνίδι εάν είστε συνδεδεμένοι",
"mottoPlaceholder": "Το μότο σου",
"saveMotto": "Αποθήκευση σύνθημα",
"securityTitle": "Ασφάλεια",
"securitySubtitle": "Έλεγχος ταυτότητας δύο παραγόντων",
"securityDescription": "Προσθέστε ένα δεύτερο επίπεδο προστασίας στον λογαριασμό σας.",
"twoFactorLink": "Έλεγχος ταυτότητας δύο παραγόντων"
},
"settings2fa": {
"backToSettings": "← Ρυθμίσεις",
"title": "Έλεγχος ταυτότητας δύο παραγόντων",
"subtitle": "Προσθέστε ένα δεύτερο επίπεδο ασφάλειας με μια εφαρμογή ελέγχου ταυτότητας",
"nowEnabled": "Το 2FA είναι πλέον ενεργοποιημένο. 🔒",
"disabledNotice": "Το 2FA έχει απενεργοποιηθεί.",
"badCode": "Αυτός ο κωδικός δεν ήταν έγκυρος — δοκιμάστε ξανά.",
"noAppKeyPrefix": "Το 2FA δεν είναι διαθέσιμο μέχρι",
"noAppKeyMiddle": "έχει ρυθμιστεί (το ίδιο Laravel",
"noAppKeySuffix": "καθώς εγκαθιστάτε το AtomCMS, έτσι τα υπάρχοντα μυστικά παραμένουν αναγνώσιμα).",
"isEnabled": "Το 2FA είναι ενεργοποιημένο",
"onYourAccount": "στον λογαριασμό σας.",
"disable": "Απενεργοποιήστε το 2FA",
"scanOrEnter": "Σαρώστε ή εισαγάγετε αυτό το κλειδί",
"scanInstructions": "Προσθέστε το στο Google Authenticator / Authy και, στη συνέχεια, εισαγάγετε τον 6ψήφιο κωδικό για επιβεβαίωση.",
"manualKey": "Χειροκίνητο κλειδί:",
"codePlaceholder": "6ψήφιος κωδικός",
"confirm": "Επιβεβαίωση",
"enableIntro": "Προσθέστε ένα δεύτερο επίπεδο ασφάλειας με μια εφαρμογή ελέγχου ταυτότητας.",
"enable": "Ενεργοποίηση 2FA",
"rateLimit": "Too many attempts. Please wait before trying again."
},
"title": "Συνδεδεμένοι λογαριασμοί",
"subtitle": "Συνδέστε έναν κοινωνικό λογαριασμό για σύνδεση με ένα κλικ",
"connected": "Συνδεδεμένο",
"unavailable": "Μη διαθέσιμο",
"login": {
"title": "Συνδεθείτε",
"subtitle": "Καλώς ήρθατε πίσω — συνδεθείτε για να μπείτε στο ξενοδοχείο.",
"subtitle2fa": "Εισαγάγετε τον 6ψήφιο κωδικό από τον έλεγχο ταυτότητας.",
"usernamePlaceholder": "Όνομα χρήστη",
"passwordPlaceholder": "Κωδικός πρόσβασης",
"codePlaceholder": "Κωδικός 2FA",
"pleaseWait": "Παρακαλώ περιμένετε…",
"verify": "Επαλήθευση",
"signIn": "Συνδεθείτε",
"or": "ή",
"noAccount": "Δεν υπάρχει λογαριασμός;",
"createOne": "Δημιουργήστε ένα",
"forgotPassword": "Ξεχάσατε τον κωδικό πρόσβασης;",
"errorInvalidCredentials": "Μη έγκυρο όνομα χρήστη ή κωδικός πρόσβασης",
"errorInvalid2fa": "Μη έγκυρος κωδικός 2FA",
"welcomeBack": "Καλώς ήρθες πίσω",
"welcomeBackSub": "Συνδέσου για να συνεχίσεις στο {hotelName}",
"errorUnverified": "Επαληθεύστε το email σας πριν συνδεθείτε.",
"errorCaptcha": "Η επαλήθευση captcha απέτυχε. Δοκιμάστε ξανά.",
"whoIsOnline": "Ποιος είναι σε σύνδεση",
"newestCitizens": "Νέοι πολίτες",
"usersOnline": "{count} σε σύνδεση",
"username": "Όνομα χρήστη",
"password": "Κωδικός πρόσβασης",
"showPassword": "Εμφάνιση",
"hidePassword": "Απόκρυψη"
},
"register": {
"title": "Δημιουργία λογαριασμού",
"subtitle": "Εγγραφείτε στο ξενοδοχείο - χρειάζεται μόνο μια στιγμή.",
"username": "Όνομα χρήστη",
"email": "Email",
"password": "Κωδικός πρόσβασης",
"confirmPassword": "Επαναλάβετε τον κωδικό πρόσβασης",
"usernamePlaceholder": "Όνομα χρήστη",
"emailPlaceholder": "Email",
"passwordPlaceholder": "Κωδικός πρόσβασης (ελάχ. 12 χαρακτήρες)",
"confirmPasswordPlaceholder": "Επαναλάβετε τον κωδικό πρόσβασης",
"selectOutfit": "Επιλέξτε το ντύσιμό σας",
"termsAccept": "Είμαι 18+ και αποδέχομαι τους όρους και τους κανόνες του {hotel}.",
"createAccount": "Δημιουργία λογαριασμού",
"creatingAccount": "Δημιουργία λογαριασμού...",
"redirecting": "Ανακατεύθυνση στον λογαριασμό σας...",
"alreadyHaveAccount": "Έχετε ήδη λογαριασμό; Σύνδεση!",
"register": "Εγγραφή",
"termsError": "Πρέπει να αποδεχτείτε τους όρους και τους κανόνες για να εγγραφείτε.",
"usernameError": "Απαιτείται όνομα χρήστη.",
"emailError": "Απαιτείται έγκυρο email.",
"passwordError": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον 12 χαρακτήρες",
"confirmPasswordError": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.",
"termsRequired": "Πρέπει να αποδεχτείτε τους όρους και τους κανόνες.",
"usernameRequired": "Απαιτείται όνομα χρήστη.",
"emailRequired": "Απαιτείται email.",
"passwordRequired": "Απαιτείται κωδικός πρόσβασης.",
"passwordsDontMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.",
"alreadyHaveAccountPre": "Έχεις ήδη λογαριασμό;",
"alreadyHaveAccountLink": "Σύνδεση",
"whoIsOnline": "Ποιος είναι σε σύνδεση",
"usersOnline": "{count} σε σύνδεση",
"accepted": "Αποδεκτό & συμφωνώ",
"showPassword": "Εμφάνιση",
"hidePassword": "Απόκρυψη",
"accountDetails": "Στοιχεία λογαριασμού",
"credentials": "Στοιχεία σύνδεσης & ασφάλεια",
"newestCitizens": "Νέοι πολίτες",
"ageVerified": "Είμαι 18+ και αποδέχομαι την απαίτηση ηλικίας.",
"invitedBy": "Προσκλήθηκε από {username}",
"strengthWeak": "Ασθενές",
"strengthFair": "Μέτριο",
"strengthGood": "Καλό",
"strengthStrong": "Δυνατό",
"passwordMinLength": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον 12 χαρακτήρες",
"passwordUpper": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον ένα κεφαλαίο γράμμα",
"passwordLower": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον ένα πεζό γράμμα",
"passwordDigit": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον ένα ψηφίο",
"passwordSpecial": "Ο κωδικός πρόσβασης πρέπει να περιέχει τουλάχιστον έναν ειδικό χαρακτήρα",
"passwordMaxLength": "Ο κωδικός πρόσβασης είναι πολύ μεγάλος",
"usernameMinLength": "Το όνομα χρήστη πρέπει να έχει τουλάχιστον 3 χαρακτήρες",
"usernameMaxLength": "Το όνομα χρήστη μπορεί να έχει έως 25 χαρακτήρες",
"usernamePattern": "Το όνομα χρήστη μπορεί να περιέχει μόνο γράμματα, ψηφία, κάτω παύλα και παύλα",
"usernameReserved": "Αυτό το όνομα χρήστη είναι δεσμευμένο",
"emailValid": "Εισαγάγετε μια έγκυρη διεύθυνση email",
"emailDisposable": "Τα προσωρινά email domains δεν επιτρέπονται",
"passwordsMatch": "Οι κωδικοί πρόσβασης δεν ταιριάζουν.",
"captchaFailed": "Η επαλήθευση captcha απέτυχε. Δοκιμάστε ξανά.",
"usernameTaken": "Αυτό το όνομα χρήστη χρησιμοποιείται ήδη",
"rateLimited": "Πάρα πολλές προσπάθειες εγγραφής. Περίμενε λίγα λεπτά και δοκίμασε ξανά.",
"vpnBlocked": "Οι εγγραφές μέσω VPN/proxy δεν επιτρέπονται.",
"maxAccountsPerIp": "Έφτασες τον μέγιστο αριθμό λογαριασμών για τη σύνδεσή σου.",
"unavailable": "Η εγγραφή δεν είναι προσωρινά διαθέσιμη.",
"createFailed": "Δεν ήταν δυνατή η δημιουργία του λογαριασμού. Δοκίμασε ξανά ή επικοινώνησε με το προσωπικό.",
"invalidInput": "Ελέγξτε τα επισημασμένα πεδία και δοκιμάστε ξανά."
},
"forgot": {
"title": "Επαναφορά κωδικού πρόσβασης",
"subtitle": "Θα σας στείλουμε με email έναν ασφαλή σύνδεσμο για να ορίσετε νέο κωδικό πρόσβασης.",
"sentNotice": "Εάν αυτό το email είναι καταχωρημένο, έχει σταλεί ένας σύνδεσμος επαναφοράς. Ελέγξτε τα εισερχόμενά σας.",
"emailPlaceholder": "Το email σας",
"sendResetLink": "Αποστολή συνδέσμου επαναφοράς",
"backToLogin": "Επιστροφή στην είσοδο",
"errorCaptcha": "Captcha verification failed. Please try again."
},
"reset": {
"title": "Ορίστε νέο κωδικό πρόσβασης",
"subtitle": "Επιλέξτε έναν ισχυρό κωδικό πρόσβασης που δεν χρησιμοποιείτε αλλού.",
"passwordPlaceholder": "Νέος κωδικός πρόσβασης (ελάχ. 12 χαρακτήρες)",
"resetPassword": "Επαναφορά κωδικού πρόσβασης",
"backToLogin": "Επιστροφή στην είσοδο",
"passwordMinLength": "Ο κωδικός πρόσβασης πρέπει να έχει τουλάχιστον 12 χαρακτήρες",
"tooManyAttempts": "Πάρα πολλές προσπάθειες — δοκιμάστε αργότερα"
},
"verify": {
"verifiedTitle": "Είστε έτοιμοι",
"verifiedSubtitle": "Το email επαληθεύτηκε",
"verifiedBody": "Η διεύθυνση email σας έχει επαληθευτεί. Τώρα μπορείτε να συνδεθείτε και να παίξετε.",
"goToLogin": "Μεταβείτε στη σύνδεση",
"alreadyTitle": "Έχει ήδη επαληθευτεί",
"alreadySubtitle": "Δεν μένει τίποτα να κάνουμε",
"alreadyBody": "Αυτή η διεύθυνση ηλεκτρονικού ταχυδρομείου έχει ήδη επιβεβαιωθεί.",
"unavailableTitle": "Προσπαθήστε ξανά σύντομα",
"unavailableSubtitle": "Ο διακομιστής δεν είναι προσβάσιμος",
"unavailableBody": "Δεν μπορέσαμε να επικοινωνήσουμε με τον διακομιστή για να επαληθεύσουμε το email σας. Δοκιμάστε ξανά τον σύνδεσμο σε λίγο.",
"invalidTitle": "Επαλήθευση μέσω email",
"invalidSubtitle": "Μη έγκυρος ή ληγμένος σύνδεσμος",
"invalidBody": "Αυτός ο σύνδεσμος επαλήθευσης δεν είναι έγκυρος. Βεβαιωθείτε ότι έχετε ανοίξει τον πλήρη σύνδεσμο από το email σας ή ζητήστε νέο.",
"backToLogin": "Επιστροφή στην είσοδο"
},
"banned": {
"title": "Είστε απαγορευμένοι",
"subtitle": "Ο λογαριασμός έχει ανασταλεί",
"body": "Ο λογαριασμός σας έχει τεθεί σε αναστολή από το ξενοδοχείο.",
"reasonLabel": "Λόγος:",
"permanent": "Αυτή η απαγόρευση είναι μόνιμη.",
"expires": "Λήγει στις {date}.",
"contactStaff": "Εάν πιστεύετε ότι πρόκειται για λάθος, επικοινωνήστε με την ομάδα του προσωπικού."
},
"maintenance": {
"title": "Το {hotel} βρίσκεται υπό συντήρηση",
"subtitle": "Θα επιστρέψουμε σύντομα",
"staffCanLogIn": "Το προσωπικό μπορεί ακόμα να συνδεθεί."
},
"admin": {
"nav": {
"overview": "Επισκόπηση",
"dashboard": "Ταμπλό",
"content": "περιεχόμενο",
"articles": "Άρθρα",
"tags": "Ετικέτες",
"navigator": "Πλοηγός",
"helpCenter": "Κέντρο βοήθειας",
"advertisements": "Διαφημίσεις",
"writeableBoxes": "Εγγράψιμα κουτιά",
"photos": "Φωτογραφίες",
"tickets": "Εισιτήρια",
"events": "Events",
"polls": "Polls",
"banners": "Banners",
"prefixes": "Prefixes",
"usersAndAccess": "Χρήστες και πρόσβαση",
"users": "Χρήστες",
"bans": "Απαγορεύσεις",
"ipManagement": "Διαχείριση IP",
"vpn": "VPN",
"applications": "Εφαρμογές",
"teams": "Ομάδες",
"permissions": "Άδειες",
"onlineUsers": "Online users",
"moderation": "Moderation",
"economy": "Οικονομία",
"catalog": "Κατάλογος",
"shop": "Κατάστημα",
"transactions": "Συναλλαγές",
"vouchers": "Κουπόνια",
"subscriptions": "Συνδρομές",
"rareValues": "Σπάνιες αξίες",
"badges": "Σήματα",
"achievements": "Επιτεύγματα",
"calendar": "Ημερολόγιο",
"radio": "Ραδιόφωνο",
"radioHistory": "Ιστορία του ραδιοφώνου",
"radioBanners": "Πανό",
"radioEmbed": "Ενσωμάτωση",
"radioApiKeys": "Κλειδιά API",
"radioModeration": "Μέτρο",
"radioSettings": "Ρυθμίσεις",
"radioMonitoring": "Παρακολούθηση",
"radioPoints": "Πόντοι",
"radioRanks": "Βαθμοί",
"radioAutodj": "Auto DJ",
"system": "Σύστημα",
"commandocentrum": "Commandocentrum",
"emulator": "Εξομοιωτής",
"alerts": "Ειδοποιήσεις",
"logs": "κούτσουρα",
"auditLog": "Audit log",
"analytics": "Analytics",
"devops": "DevOps",
"wordFilter": "Φίλτρο λέξεων",
"maintenance": "Συντήρηση",
"rooms": "Δωμάτια",
"emailTemplates": "Πρότυπα email",
"theme": "Θέμα",
"media": "ΜΜΕ",
"favicon": "Favicon",
"sounds": "Ήχοι",
"translations": "Μεταφράσεις",
"import": "Εισαγωγή",
"settings": "Ρυθμίσεις",
"backToSite": "Επιστροφή στον ιστότοπο",
"housekeeping": "Οικονομία",
"hotelManagementPanel": "Πάνελ διαχείρισης ξενοδοχείου",
"rankLabel": "Κατάταξη {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": "Search menu…",
"clearMenuSearch": "Clear menu search",
"noMenuResults": "No matching pages.",
"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",
"operationsCenter": "Operations center",
"catalogMaintenance": "Catalog maintenance",
"studio": "Studio",
"search": {
"placeholder": "Search…",
"noResults": "No results found",
"users": "Users",
"articles": "Articles",
"rooms": "Rooms",
"guilds": "Guilds",
"shop": "Shop",
"hint": "Start typing to search across users, articles, rooms, guilds and shop items"
},
"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",
"referrals": "Παραπομπές",
"dailyRewards": "Ημερήσιες ανταμοιβές"
},
"dashboard": {
"title": "Ταμπλό",
"subtitle": "Επισκόπηση ξενοδοχείου & ζωντανή κατάσταση",
"playersOnline": "Παίκτες σε απευθείας σύνδεση",
"articles": "Άρθρα",
"activeBans": "Ενεργές απαγορεύσεις",
"database": "Βάση δεδομένων",
"databaseConnected": "Συνδεδεμένος",
"databaseDown": "Κάτω",
"usersByRank": "Χρήστες ανά κατάταξη",
"noAccountsToBreakDown": "Δεν υπάρχουν ακόμη λογαριασμοί για ανάλυση",
"rankLabel": "Κατάταξη {rank}",
"rankWithCount": "Κατάταξη {rank}: {count} λογαριασμοί",
"recentStaffActivity": "Πρόσφατη δραστηριότητα του προσωπικού",
"viewAll": "Προβολή όλων",
"noStaffActivityLogged": "Δεν έχει καταγραφεί ακόμη δραστηριότητα προσωπικού",
"totalAccounts": "{count} total accounts"
},
"articles": {
"title": "Άρθρα",
"subtitle": "Άρθρα ειδήσεων — 50 πιο πρόσφατα",
"newArticle": "+ Νέο άρθρο",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"noArticles": "Δεν υπάρχουν ακόμη άρθρα",
"confirmDelete": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το \"{title}\";",
"colTitle": "Τίτλος",
"colSlug": "γυμνοσάλιαγκας",
"colAuthor": "Συγγραφέας",
"colCreated": "Δημιουργήθηκε",
"colActions": "Δράσεις",
"form": {
"title": "Τίτλος",
"titlePlaceholder": "Τίτλος άρθρου",
"slug": "γυμνοσάλιαγκας",
"slugPlaceholder": "άρθρο-url-slug",
"category": "Κατηγορία",
"categoryPlaceholder": "Επιλέξτε μια κατηγορία",
"body": "Σώμα",
"bodyPlaceholder": "Γράψτε το περιεχόμενο του άρθρου σας…",
"image": "Εικόνα",
"imagePlaceholder": "https://example.com/image.png",
"thumbnail": "Μικρογραφία",
"thumbnailPlaceholder": "https://example.com/thumb.png",
"published": "Δημοσιεύθηκε",
"featured": "Προτεινόμενα",
"save": "Αποθήκευση άρθρου",
"saving": "Αποθήκευση…",
"deleteArticle": "Διαγραφή άρθρου",
"deleteConfirm": "Αυτή η ενέργεια δεν μπορεί να αναιρεθεί. Το άρθρο θα καταργηθεί οριστικά.",
"cancel": "Ακύρωση",
"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": "Ετικέτες",
"subtitle": "Ετικέτες / κατηγορίες άρθρων",
"addTag": "Προσθήκη ετικέτας",
"name": "Όνομα",
"namePlaceholder": "Όνομα ετικέτας",
"backgroundColour": "Χρώμα φόντου",
"createTag": "Δημιουργία ετικέτας",
"editTag": "Επεξεργασία ετικέτας",
"updateTag": "Ενημέρωση ετικέτας",
"deleteTag": "Διαγραφή ετικέτας",
"confirmDelete": "Διαγραφή \"{name}\";",
"noTags": "Δεν υπάρχουν ακόμη ετικέτες",
"colId": "ID",
"colTag": "Ετικέτα",
"colColour": "Χρώμα",
"colUsedBy": "Χρησιμοποιείται από",
"colCreated": "Δημιουργήθηκε",
"colActions": "Δράσεις",
"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": "Πλοηγός",
"flatCategories": "Επίπεδες κατηγορίες",
"publicRooms": "Δημόσια δωμάτια",
"addCategory": "Προσθήκη κατηγορίας",
"editCategory": "Επεξεργασία κατηγορίας",
"deleteCategory": "Διαγραφή κατηγορίας",
"categoryName": "Όνομα κατηγορίας",
"categoryNamePlaceholder": "π.χ. Χαλαρά & Συνομιλία",
"categoryOrder": "Παραγγελία",
"roomName": "Όνομα δωματίου",
"roomNamePlaceholder": "π.χ. Lounge καλωσορίσματος",
"roomId": "ID δωματίου",
"roomIdPlaceholder": "Αριθμητικό αναγνωριστικό δωματίου",
"save": "Αποθήκευση",
"cancel": "Ακύρωση",
"noCategories": "Δεν υπάρχουν ακόμη κατηγορίες",
"noPublicRooms": "Δεν υπάρχουν ακόμη δημόσιοι χώροι",
"colId": "ID",
"colName": "Όνομα",
"colOrder": "Παραγγελία",
"colRooms": "Δωμάτια",
"colActions": "Δράσεις",
"publicFlatcats": "Public room categories",
"markedPublic": "Categories marked as public",
"visibleRooms": "Visible rooms",
"rows": "rows",
"unnamed": "Unnamed room"
},
"helpCenter": {
"title": "Κέντρο βοήθειας",
"subtitle": "Καταχωρίσεις υποστήριξης και διαχείριση συχνών ερωτήσεων",
"entries": "Συμμετοχές",
"newEntry": "+ Νέα καταχώρηση",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"noEntries": "Δεν υπάρχουν ακόμη καταχωρήσεις",
"confirmDelete": "Διαγραφή \"{title}\";",
"colId": "ID",
"colTitle": "Τίτλος",
"colCategory": "Κατηγορία",
"colCreated": "Δημιουργήθηκε",
"colActions": "Δράσεις",
"form": {
"title": "Τίτλος",
"titlePlaceholder": "Τίτλος εισόδου",
"category": "Κατηγορία",
"categoryPlaceholder": "Επιλέξτε κατηγορία",
"body": "Σώμα",
"bodyPlaceholder": "Γράψε την απάντηση…",
"save": "Αποθήκευση καταχώρισης",
"saving": "Αποθήκευση…",
"deleteEntry": "Διαγραφή καταχώρισης",
"cancel": "Ακύρωση"
},
"withButton": "With a button",
"smallBoxes": "Small boxes"
},
"ads": {
"title": "Διαφημίσεις",
"subtitle": "Διαχειριστείτε διαφημίσεις ξενοδοχείων και διαφημιστικά banner",
"newAd": "+ Νέα διαφήμιση",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"noAds": "Δεν υπάρχουν ακόμη διαφημίσεις",
"confirmDelete": "Διαγραφή αυτής της διαφήμισης;",
"colId": "ID",
"colName": "Όνομα",
"colImage": "Εικόνα",
"colUrl": "URL",
"colViews": "Απόψεις",
"colStatus": "Κατάσταση",
"colCreated": "Δημιουργήθηκε",
"colActions": "Δράσεις",
"form": {
"name": "Όνομα",
"namePlaceholder": "Όνομα διαφήμισης",
"image": "Διεύθυνση URL εικόνας",
"imagePlaceholder": "https://example.com/banner.png",
"url": "Διεύθυνση URL στόχου",
"urlPlaceholder": "https://example.com",
"enabled": "Ενεργοποιημένο",
"save": "Αποθήκευση διαφήμισης",
"saving": "Αποθήκευση…",
"deleteAd": "Διαγραφή διαφήμισης",
"cancel": "Ακύρωση"
},
"deleteSuccess": "Advertisement deleted!",
"deleteError": "Failed to delete advertisement.",
"adsCount": "Total ads",
"latest": "Latest",
"mostRecentAd": "Most recent ad",
"allAds": "All advertisements",
"colPreview": "Preview"
},
"writeableBoxes": {
"title": "Εγγράψιμα κουτιά",
"subtitle": "Οι πίνακες περιεχομένου εμφανίζονται σε όλο το ξενοδοχείο και στο CMS",
"newBox": "Καινούργιο κουτί",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"noBoxes": "Δεν υπάρχουν εγγράψιμα κουτιά ακόμα",
"confirmDelete": "Διαγραφή αυτού του πλαισίου;",
"colId": "ID",
"colName": "Όνομα",
"colLocation": "Τοποθεσία",
"colUpdated": "Ενημερώθηκε",
"colActions": "Δράσεις",
"form": {
"name": "Όνομα",
"namePlaceholder": "Όνομα κουτιού",
"location": "Τοποθεσία",
"locationPlaceholder": "π.χ. αρχική σελίδα, πλαϊνή γραμμή",
"content": "περιεχόμενο",
"contentPlaceholder": "Γράψτε το περιεχόμενο του κουτιού…",
"enabled": "Ενεργοποιημένο",
"save": "Πλαίσιο αποθήκευσης",
"saving": "Αποθήκευση…",
"deleteBox": "Διαγραφή πλαισίου",
"cancel": "Ακύρωση",
"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": "Συντονισμός φωτογραφιών",
"subtitle": "Πρόσφατες φωτογραφίες κάμερας στο παιχνίδι",
"delete": "Διαγραφή",
"approve": "Έγκριση",
"noPhotos": "Δεν υπάρχουν φωτογραφίες για εποπτεία",
"confirmDelete": "Να διαγραφεί οριστικά αυτή η φωτογραφία;",
"colId": "ID",
"colPreview": "Προεπισκόπηση",
"colUser": "Χρήστης",
"colRoom": "δωμάτιο",
"colTimestamp": "Χρονική σήμανση",
"colActions": "Δράσεις",
"photoAlt": "Φωτογραφία χρήστη #{id}",
"byUser": "από {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": "Χρήστες",
"subtitle": "Περιηγηθείτε, αναζητήστε και διαχειριστείτε λογαριασμούς ξενοδοχείων",
"search": "Αναζήτηση",
"searchPlaceholder": "Αναζήτηση με όνομα χρήστη, email ή αναγνωριστικό…",
"searchResults": "{count, plural, one {# result} other {# results}} for \"{query}\"",
"noResults": "Δεν βρέθηκαν χρήστες",
"colId": "ID",
"colUsername": "Όνομα χρήστη",
"colEmail": "Email",
"colRank": "Κατάταξη",
"colOnline": "Διαδικτυακά",
"colRegistered": "Εγγεγραμμένος",
"colLastOnline": "Τελευταία σύνδεση",
"colActions": "Δράσεις",
"yes": "Ναι",
"no": "Όχι",
"edit": "Επεξεργασία",
"setRank": "Ορισμός κατάταξης",
"disconnect": "Αποσύνδεση",
"alert": "Συναγερμός",
"ban": "Απαγόρευση",
"detail": {
"title": "Χρήστης: {username}",
"subtitle": "Στοιχεία λογαριασμού και διαχείριση",
"overview": "Επισκόπηση",
"actions": "Δράσεις",
"username": "Όνομα χρήστη",
"email": "Email",
"motto": "Μότο",
"rank": "Κατάταξη",
"credits": "Πιστώσεις",
"duckets": "Παπιάκια",
"diamonds": "Διαμάντια",
"online": "Διαδικτυακά",
"registered": "Εγγεγραμμένος",
"lastOnline": "Τελευταία σύνδεση",
"ipAddress": "διεύθυνση IP",
"machineId": "Ταυτότητα μηχανήματος",
"sendAlert": "Αποστολή ειδοποίησης",
"sendMessage": "Αποστολή μηνύματος",
"disconnectUser": "Αποσύνδεση χρήστη",
"banUser": "Απαγόρευση χρήστη",
"resetPassword": "Επαναφορά κωδικού πρόσβασης",
"deleteUser": "Διαγραφή χρήστη",
"confirmDelete": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το {username}; Αυτό δεν μπορεί να αναιρεθεί.",
"tabInfo": "Account Info",
"tabBadges": "Badges ({count})",
"tabRooms": "Rooms ({count})",
"tabSanctions": "Sanctions ({count})",
"tabActivity": "Activity"
},
"editForm": {
"title": "Επεξεργασία χρήστη: {username}",
"subtitle": "Τροποποίηση στοιχείων λογαριασμού",
"username": "Όνομα χρήστη",
"usernamePlaceholder": "Όνομα χρήστη",
"email": "Email",
"emailPlaceholder": "[email protected]",
"motto": "Μότο",
"mottoPlaceholder": "Σύνθημα χρήστη",
"rank": "Κατάταξη",
"credits": "Πιστώσεις",
"duckets": "Παπιάκια",
"diamonds": "Διαμάντια",
"save": "Αποθήκευση αλλαγών",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"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"
}
},
"usersTable": {
"Online": "Online",
"Offline": "Offline",
"Ban": "Ban",
"users": "users",
"Permanentbanleavedurationat1": "Permanent ban: leave duration at -1.",
"Reason": "Reason",
"Durationseconds1permanent": "Duration (seconds, -1 = permanent)",
"Cancel": "Cancel",
"Adjustcurrencyfor": "Adjust currency for",
"Type": "Type",
"Credits": "Credits",
"PixelsDuckets": "Pixels (Duckets)",
"PointsDiamonds": "Points (Diamonds)",
"Amountpositivegivenegativetake": "Amount (positive = give, negative = take)",
"Apply": "Apply",
"Givebadgeto": "Give badge to",
"Badgecode": "Badge code",
"Give": "Give",
"userstotal": "users total",
"accountssharethisidentifier": "accounts share this identifier",
"staff": "staff",
"and": "… and",
"more": "more",
"EditProfile": "Edit Profile",
"Bans": "Bans",
"Badges": "Badges (",
"Rooms": "Rooms (",
"Activity": "Activity",
"AccountInfo": "Account Info",
"EditUser": "Edit User",
"Username": "Username",
"Email": "Email",
"Rank": "Rank",
"Motto": "Motto",
"Pixels": "Pixels",
"Diamonds": "Diamonds",
"Duckets": "Duckets",
"RecentMessages": "Recent Messages (",
"Norecentmessages": "No recent messages.",
"Room": "Room #",
"RecentCommands": "Recent Commands (",
"Norecentcommands": "No recent commands.",
"Nobadges": "No badges",
"Thisuserdoesntownanyrooms": "This user doesn't own any rooms.",
"Sanctionstimeline": "Sanctions timeline",
"Muteduntil": "Muted until",
"NobansmutesCFHorstaffactionsrecordedforthisuser": "No bans, mutes, CFH, or staff actions recorded for this user."
}
},
"bans": {
"title": "Απαγορεύσεις",
"subtitle": "Διαχειριστείτε τις απαγορεύσεις λογαριασμού, IP και μηχανημάτων",
"newBan": "Νέα απαγόρευση",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"noBans": "Δεν υπάρχουν ακόμη απαγορεύσεις",
"confirmDelete": "Κατάργηση αυτής της απαγόρευσης;",
"colId": "ID",
"colValue": "Αξία",
"colType": "Τύπος",
"colReason": "Λόγος",
"colBannedBy": "Απαγορευμένος από",
"colExpires": "Λήγει",
"colCreated": "Δημιουργήθηκε",
"colActions": "Δράσεις",
"form": {
"value": "Αξία",
"valuePlaceholder": "Όνομα χρήστη, IP ή αναγνωριστικό μηχανής",
"type": "Τύπος",
"typeUser": "Χρήστης",
"typeIp": "IP",
"typeMachine": "Μηχανή",
"reason": "Λόγος",
"reasonPlaceholder": "Λόγος απαγόρευσης",
"expiresAt": "Λήγει στις",
"permanent": "Μόνιμη",
"save": "Αποθήκευση απαγόρευσης",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"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",
"subtitle": "Διαχείριση της λευκής λίστας IP και της μαύρης λίστας",
"whitelist": "Λευκή λίστα",
"blacklist": "Μαύρη λίστα",
"addIp": "Προσθήκη IP",
"ipAddress": "διεύθυνση IP",
"ipAddressPlaceholder": "π.χ. 127.0.0.1",
"reason": "Λόγος",
"reasonPlaceholder": "Λόγος εγγραφής",
"add": "Προσθήκη",
"remove": "Αφαίρεση",
"confirmRemove": "Να καταργηθεί αυτή η IP από τη {list};",
"noWhitelistedIps": "Δεν υπάρχουν IP στη λίστα επιτρεπόμενων",
"noBlacklistedIps": "Δεν υπάρχουν IP στη μαύρη λίστα",
"colIp": "IP",
"colReason": "Λόγος",
"colAdded": "Προστέθηκε",
"colActions": "Δράσεις",
"whitelisted": "Allowed IP addresses",
"blacklisted": "Blocked IP addresses",
"asnPlaceholder": "ASN (optional)",
"colAsn": "ASN"
},
"vpn": {
"title": "VPN / Ανίχνευση διακομιστή μεσολάβησης",
"subtitle": "Διαμορφώστε τις ρυθμίσεις εντοπισμού VPN και διακομιστή μεσολάβησης",
"enabled": "Ενεργοποιημένο",
"apiKey": "Κλειδί API",
"apiKeyPlaceholder": "Το κλειδί API εντοπισμού VPN",
"apiKeyHint": "Αφήστε κενό για απενεργοποίηση",
"blockOnDetect": "Αποκλεισμός ανίχνευσης",
"blockOnDetectHint": "Αυτόματος αποκλεισμός χρηστών που εντοπίστηκαν πίσω από VPN ή διακομιστή μεσολάβησης",
"save": "Αποθήκευση ρυθμίσεων",
"saving": "Αποθήκευση…",
"settingsSaved": "Οι ρυθμίσεις VPN αποθηκεύτηκαν με επιτυχία",
"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": "Αιτήσεις προσωπικού",
"subtitle": "Εκκρεμείς και αναθεωρημένες αιτήσεις προσωπικού",
"pending": "Σε εκκρεμότητα",
"approved": "Εγκρίθηκε",
"rejected": "Απορρίφθηκε",
"noApplications": "Δεν υπάρχουν ακόμη αιτήσεις",
"colId": "ID",
"colApplicant": "αιτών",
"colPosition": "Θέση",
"colStatus": "Κατάσταση",
"colSubmitted": "Υποβλήθηκε",
"colActions": "Δράσεις",
"review": "Επανεξέταση",
"approve": "Έγκριση",
"reject": "Απόρριψη",
"confirmApprove": "Έγκριση {username} για {position};",
"confirmReject": "Να απορριφθεί η αίτηση του χρήστη {username} για {position};",
"detail": {
"title": "Εφαρμογή από {username}",
"subtitle": "Για {position}",
"about": "Σχετικά με τον αιτούντα",
"message": "Μήνυμα εφαρμογής",
"status": "Κατάσταση",
"submitted": "Υποβλήθηκε",
"noMessage": "Δεν παρέχεται μήνυμα"
},
"applicationsTitle": "Applications ({count})",
"userNumber": "User #{id}",
"rankLabel": "Rank {rank}"
},
"teams": {
"title": "Ομάδες",
"subtitle": "Καθορίστε ονόματα και περιγραφές βαθμών προσωπικού",
"addRank": "Προσθήκη κατάταξης",
"editRank": "Επεξεργασία κατάταξης",
"deleteRank": "Διαγραφή κατάταξης",
"noTeams": "Δεν υπάρχουν ακόμη ορισμοί κατάταξης",
"confirmDelete": "Διαγραφή ορισμού κατάταξης {id};",
"colId": "ID",
"colRank": "Κατάταξη",
"colName": "Όνομα",
"colBadge": "Σήμα",
"colColour": "Χρώμα",
"colActions": "Δράσεις",
"form": {
"rankId": "Ταυτότητα κατάταξης",
"rankIdPlaceholder": "Αριθμητικό αναγνωριστικό κατάταξης",
"name": "Όνομα",
"namePlaceholder": "π.χ. Διαχειριστής",
"badge": "Κωδικός σήματος",
"badgePlaceholder": "π.χ. ADM001",
"colour": "Χρώμα",
"colourPlaceholder": "π.χ. #ff0000",
"save": "Αποθήκευση ορισμού ομάδας",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"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": "Άδειες",
"subtitle": "Διαχειριστείτε τα δικαιώματα βάσει κατάταξης για τον πίνακα διαχείρισης",
"addPermission": "Προσθήκη άδειας",
"editPermission": "Άδεια επεξεργασίας",
"deletePermission": "Διαγραφή άδειας",
"noPermissions": "Δεν έχουν διαμορφωθεί ακόμη δικαιώματα",
"confirmDelete": "Διαγραφή αυτής της άδειας;",
"colId": "ID",
"colRank": "Κατάταξη",
"colPermission": "Άδεια",
"colCreated": "Δημιουργήθηκε",
"colActions": "Δράσεις",
"form": {
"rankId": "Ταυτότητα κατάταξης",
"rankIdPlaceholder": "Απαιτείται ελάχιστη κατάταξη",
"permission": "Κλειδί άδειας",
"permissionPlaceholder": "π.χ. admin.articles.manage",
"save": "Αποθήκευση άδειας",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"id": {
"rankEditClient": {
"AllOn": "All On",
"AllOff": "All Off",
"Rank": "Rank #",
"Level": "· Level",
"users": "users",
"General": "General",
"Emulator": "Emulator (",
"CMS": "CMS (",
"Users": "Users (",
"RankSettings": "Rank Settings",
"RankName": "Rank Name",
"Badge": "Badge",
"Prefix": "Prefix",
"PrefixColor": "Prefix Color",
"HiddenRank": "Hidden Rank",
"Hidefrompublic": "Hide from public",
"LogCommands": "Log Commands",
"Recordtoauditlog": "Record to audit log",
"RoomEffectID": "Room Effect ID",
"AutoCredits": "Auto Credits",
"AutoPixels": "Auto Pixels",
"AutoGOTW": "Auto GOTW",
"AutoPoints": "Auto Points",
"Save": "Save",
"Userswiththisrank": "Users with this rank",
"showing": "(showing",
"Nouserswiththisrank": "No users with this rank.",
"permissionsenabled": "permissions enabled",
"EnableAll": "Enable All",
"DisableAll": "Disable All",
"Off": "Off",
"Owner": "Owner",
"SaveRank": "Save Rank",
"CMSpermissionsareavailablefromrank4andabove": "CMS permissions are available from rank 4 and above.",
"assigned": "assigned",
"SelectAll": "Select All",
"DeselectAll": "Deselect All",
"Active": "Active",
"Nopermissionsmatchyoursearch": "No permissions match your search.",
"YouweresentherefromthepermissionarchiveEditrankaccessbelowthisisthelivecontrolpanel": "You were sent here from the permission archive. Edit rank access below — this is the live control panel.",
"Liveaccesscontrol": "Live access control",
"ChangesheredecidewhocanopenadminandmodpagesThepermissionarchiveisonlyforcompareexport": "Changes here decide who can open admin and mod pages. The permission archive is only for compare/export.",
"ranks": "ranks ·",
"userstotal": "users total",
"Repairnavgrants": "Repair nav grants",
"NewRank": "New Rank",
"Level`": "Level",
"Configure": "Configure",
"CreateNewRank": "Create New Rank",
"AddanewpermissionrankYoucanconfigureitspermissionsaftercreation": "Add a new permission rank. You can configure its permissions after creation.",
"Higherlevelmorebasepermissionsintheemulator": "Higher level = more base permissions in the emulator",
"Cancel": "Cancel",
"DeleteRank": "Delete Rank #",
"Thiswillpermanentlydelete": "This will permanently delete \"",
"anditsCMSroleThiscannotbeundone": "\" and its CMS role. This cannot be undone.",
"Permissionpageerror": "Permission page error",
"TherankeditorcouldnotberenderedThetechnicaldetailbelowisvisibleonlyinsidethisprotectedadminroute": "The rank editor could not be rendered. The technical detail below is visible only inside this protected admin route.",
"Reference": "Reference:",
"Tryagain": "Try again",
"rankSaved": "Rank updated",
"failed": "Failed to save rank",
"allOn": "Enabled all permissions",
"allOff": "Disabled all permissions",
"rankFallback": "Rank {id}",
"rankMeta": "ID {id} • {count} users",
"tabGeneral": "General",
"tabEmulator": "Emulator",
"tabCms": "CMS Permissions",
"tabUsers": "Users",
"rankSettings": "Rank Settings",
"rankName": "Rank Name",
"badge": "Badge Code",
"prefix": "Prefix",
"prefixColor": "Prefix Color",
"hiddenRank": "Hidden Rank",
"hideFromPublic": "Hide rank from staff page and team lists",
"logCommands": "Log Commands",
"recordToAuditLog": "Record command usage to audit logs",
"roomEffectId": "Room Effect ID",
"autoCredits": "Auto Credits / cycle",
"autoPixels": "Auto Duckets / cycle",
"autoGotw": "Auto GOTW / cycle",
"autoPoints": "Auto Diamonds / cycle",
"save": "Save Settings",
"usersWithThisRank": "Users with this rank",
"showingUsers": "Showing {count} users",
"noUsersWithThisRank": "No users assigned to this rank.",
"permissionsEnabled": "{active} / {total} permissions enabled",
"enableAll": "Enable All",
"disableAll": "Disable All",
"off": "OFF",
"on": "ON",
"owner": "OWNER",
"searchPermissionsPlaceholder": "Search permissions...",
"commands": "Commands",
"account": "Account",
"other": "Other",
"saveRank": "Save Rank"
}
}
},
"catalog": {
"title": "Κατάλογος",
"subtitle": "Περιηγηθείτε και διαχειριστείτε σελίδες και είδη καταλόγου",
"pages": "Σελίδες",
"items": "Είδη",
"addPage": "Προσθήκη σελίδας",
"editPage": "Επεξεργασία σελίδας",
"deletePage": "Διαγραφή σελίδας",
"addItem": "Προσθήκη στοιχείου",
"editItem": "Επεξεργασία στοιχείου",
"deleteItem": "Διαγραφή στοιχείου",
"noPages": "Δεν υπάρχουν ακόμη σελίδες καταλόγου",
"noItems": "Δεν υπάρχουν στοιχεία σε αυτήν τη σελίδα",
"confirmDeletePage": "Διαγραφή σελίδας καταλόγου \"{name}\";",
"confirmDeleteItem": "Διαγραφή αυτού του στοιχείου;",
"colId": "ID",
"colName": "Όνομα",
"colIcon": "εικονίδιο",
"colOrder": "Παραγγελία",
"colItems": "Είδη",
"colEnabled": "Ενεργοποιημένο",
"colActions": "Δράσεις",
"colItemId": "Αναγνωριστικό στοιχείου",
"colItemName": "Όνομα στοιχείου",
"colCostCredits": "Κόστος (πιστώσεις)",
"colCostPoints": "Κόστος (πόντους)",
"colLimited": "Περιορισμένη",
"pageForm": {
"name": "Όνομα",
"namePlaceholder": "Όνομα σελίδας",
"icon": "Αναγνωριστικό εικονιδίου",
"iconPlaceholder": "Αριθμητικό εικονίδιο ID",
"order": "Παραγγελία",
"enabled": "Ενεργοποιημένο",
"parent": "Γονική σελίδα",
"parentNone": "Κανένα (root)",
"save": "Αποθήκευση σελίδας",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"itemForm": {
"itemId": "Αναγνωριστικό στοιχείου",
"itemName": "Όνομα στοιχείου",
"costCredits": "Κόστος σε πιστώσεις",
"costDuckets": "Κόστος σε παπάκια",
"costDiamonds": "Κόστος σε διαμάντια",
"limitedStack": "Περιορισμένο μέγεθος στοίβας",
"limitedSold": "Περιορισμένη πώληση",
"save": "Αποθήκευση στοιχείου",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"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": "Οργάνωση εισαγωγών",
"itemsBadge": "{count} αντικείμενα",
"loading": "Φόρτωση εισαγόμενων επίπλων…",
"empty": "Δεν βρέθηκαν εισαγόμενα έπιπλα. Εισαγάγετε πρώτα έπιπλα.",
"loadError": "Δεν ήταν δυνατή η φόρτωση των εισαγωγών. Δοκιμάστε ξανά.",
"refresh": "Ανανέωση",
"desc": "Τα εισαγόμενα έπιπλα ομαδοποιούνται σε προτεινόμενες σελίδες. Εξετάστε κάθε ομάδα και κατόπιν δημιουργήστε τις σελίδες που εγκρίνετε.",
"selectAll": "Επιλογή όλων",
"deselectAll": "Αποεπιλογή όλων",
"mode": "Λειτουργία",
"modeCreate": "Δημιουργία νέων σελίδων",
"modeMove": "Μετακίνηση σε υπάρχουσα σελίδα",
"destination": "Σελίδα προορισμού",
"destinationChosen": "επιλέχθηκε",
"destinationSearchPlaceholder": "Αναζήτηση σελίδων με όνομα…",
"noDestResults": "Δεν βρέθηκαν σελίδες",
"destinationHint": "Όλες οι εγκεκριμένες ομάδες μετακινούνται σε αυτή τη σελίδα — δεν δημιουργείται νέα σελίδα.",
"chooseDestination": "Επιλέξτε πρώτα μια σελίδα προορισμού",
"move": "{count, plural, one {Μετακίνηση 1 αντικειμένου} other {Μετακίνηση # αντικειμένων}}",
"name": "Όνομα",
"icon": "Εικονίδιο",
"layout": "Διάταξη",
"resetSuggestion": "Προτεινόμενο",
"suggestedLayout": "Προτεινόμενο: {layout}",
"movedLabel": "{count} μετακινήθηκαν",
"newLabel": "{count} νέα",
"isNew": "νέο",
"price": "Τιμή",
"free": "Δωρεάν",
"setPrice": "Ορισμός τιμής",
"credits": "Μονάδες",
"points": "Πόντοι",
"pointsType": "Τύπος",
"newPriceHint": "Ισχύει μόνο για νέες προσφορές· οι μετακινούμενες προσφορές διατηρούν την τρέχουσα τιμή τους.",
"parent": "Τοποθέτηση σελίδων υπό",
"root": "Ρίζα καταλόγου",
"importedRoot": "Εισαγόμενα έπιπλα",
"cancel": "Άκυρο",
"create": "{count, plural, one {Δημιουργία 1 σελίδας} other {Δημιουργία # σελίδων}}",
"batchLayout": "Ορισμός διάταξης για όλες",
"batchPrefix": "Προσθήκη προθέματος σε όλους τους τίτλους",
"applyBatch": "Εφαρμογή σε όλες",
"searchGroups": "Φίλτρο ομάδων εισαγωγής...",
"visualPreview": "Προεπισκόπηση",
"resetAll": "Επαναφορά αλλαγών",
"onlyUnplaced": "Εμφάνιση μόνο μη τοποθετημένων αντικειμένων",
"errorMaxItems": "Μέγ. 500 αντικείμενα ανά εκτέλεση. Μειώστε την επιλογή.",
"errorMaxGroups": "Μέγ. {count} ομάδες ανά εκτέλεση. Μειώστε την επιλογή.",
"errorNoName": "Κάθε εγκεκριμένη σελίδα χρειάζεται όνομα",
"tipMove": "Συμβουλή: επιλέξτε παρακάτω μια σελίδα προορισμού για να μετακινήσετε έπιπλα.",
"tipCreate": "Συμβουλή: επιλέξτε αυτή τη λειτουργία για να δημιουργήσετε νέες σελίδες.",
"limitHint": "Μέγ. 500 αντικείμενα και 50 ομάδες ανά εκτέλεση.",
"errorFailed": "Δεν ήταν δυνατή η οργάνωση των εισαγωγών",
"successMove": "{moved, plural, one {1 προσφορά} other {# προσφορές}} μετακινήθηκαν στο \"{destination}\"{added, plural, =0 {} other {, {added} νέες προστέθηκαν}}",
"successCreate": "Δημιουργήθηκαν {count, plural, one {1 σελίδα} other {# σελίδες}} με {moved} μετακινούμενα και {added} νέα έπιπλα",
"batchLabel": "Παρτίδα:",
"layoutFallbackDefault3x3": "3x3",
"itemsUnit": "αντικείμενα",
"impPrefix": "Imp ",
"isMoved": "μετακινήθηκε",
"showAll": "Εμφάνιση όλων ({count})",
"showLess": "Εμφάνιση λιγότερων",
"moveItemTo": "Μετακίνηση σε…",
"batchMoveTo": "Μετακίνηση επιλεγμένων σε…",
"selectedCount": "{count} επιλέχθηκαν",
"clearSelection": "Καθαρισμός επιλογής",
"undo": "Αναίρεση",
"daysLabel": "Ημέρες",
"daysValue": "{days} ημέρες",
"dupeSummary": "Ήδη στη σελίδα προορισμού: {count, plural, one {1 αντικείμενο} other {# αντικείμενα}}",
"layoutPreview": "Προεπισκόπηση διάταξης",
"emptyCategory": "Κανένα αντικείμενο σε αυτή την κατηγορία",
"dupeOnDest": "Ήδη υπάρχει στη σελίδα προορισμού",
"dupeOnDestShort": "διπλότυπο",
"errorPartial": "{failed} από {total} εκτελέσεις απέτυχαν. Ελέγξτε και δοκιμάστε ξανά.",
"successCreateRuns": "Δημιουργήθηκαν {count, plural, one {1 σελίδα} other {# σελίδες}} σε {runs, plural, one {1 εκτέλεση} other {# εκτελέσεις}} με {moved} μετακινούμενα και {added} νέα έπιπλα"
}
},
"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",
"club_only_yes": "HC Only",
"club_only_no": "Not HC Only",
"have_offer_yes": "Has Offer",
"have_offer_no": "No Offer"
},
"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",
"clubOnlyFilterLabel": "HC Only Filter",
"haveOfferFilterLabel": "Has Offer Filter"
},
"catalogItemsTable": {
"catalogItemsTable": {
"Items": "Items (",
"Table": "Table",
"Preview": "Preview",
"Move": "Move (",
"Delete": "Delete (",
"BulkPrice": "Bulk Price",
"ResetOrder": "Reset Order",
"SaveOrder": "Save Order",
"Reset": "Reset",
"SaveAll": "Save All (",
"AddItem": "Add Item",
"AddCatalogItem": "Add Catalog Item",
"Youhaveunsavedchanges": "You have unsaved changes (",
"Press": "). Press",
"CtrlS": "Ctrl+S",
"tosave": "to save.",
"Noitemsinthispage": "No items in this page.",
"AddFirstItem": "Add First Item",
"Name": "Name",
"ItemIDs": "Item IDs",
"ItemName": "Item Name",
"Price": "Price",
"Amt": "Amt",
"Status": "Status",
"Actions": "Actions",
"unnamed": "unnamed",
"Free": "Free",
"LTD": "LTD",
"EditItem": "Edit Item #",
"CatalogName": "Catalog Name",
"CatalogSettings": "Catalog Settings",
"FurnitureSettings": "Furniture Settings",
"Credits": "Credits",
"Points": "Points",
"PointsType": "Points Type",
"Amount": "Amount",
"Order": "Order",
"OfferID": "Offer ID",
"LimitedSells": "Limited Sells",
"LimitedStack": "Limited Stack",
"HaveOffer": "Have Offer",
"Yes": "Yes",
"ClubOnly": "Club Only",
"ExtraData": "Extra Data",
"SongDisk": "Song Disk",
"SelectasoundtracktoplaywhenthisitemisusedingameUploadedfrom": "Select a soundtrack to play when this item is used in-game. Uploaded from",
"adminsounds": "/admin/sounds",
"Identity": "Identity",
"BaseID": "Base ID",
"SpriteID": "Sprite ID",
"Type": "Type",
"sFloor": "s (Floor)",
"iWall": "i (Wall)",
"eEffect": "e (Effect)",
"bBadge": "b (Badge)",
"rRobot": "r (Robot)",
"hHabboClub": "h (Habbo Club)",
"pPet": "p (Pet)",
"Dimensions": "Dimensions",
"Width": "Width",
"Length": "Length",
"StackHeight": "Stack Height",
"Interaction": "Interaction",
"InteractionType": "Interaction Type",
"InteractionModes": "Interaction Modes",
"Permissions": "Permissions",
"Extra": "Extra",
"VendingIDs": "Vending IDs",
"CustomParams": "Custom Params",
"EffectIDMale": "Effect ID Male",
"EffectIDFemale": "Effect ID Female",
"ClothingOnWalk": "Clothing On Walk",
"Save": "Save",
"Cancel": "Cancel",
"Move`": "Move",
"itemstoanotherpage": "item(s) to another page",
"TargetPage": "Target Page",
"MoveItems": "Move Items",
"MoveItemtoanotherpage": "Move Item to another page",
"Suggestionsbasedonpreviousmovesforsimilaritems": "Suggestions based on previous moves for similar items.",
"MoveItem": "Move Item",
"BulkPriceUpdate": "Bulk Price Update",
"Field": "Field",
"Operation": "Operation",
"Settovalue": "Set to value",
"Addvalue": "Add value",
"Changebypercentage": "Change by percentage",
"Usenegativevaluestodecreaseeg20for20": "Use negative values to decrease (e.g. -20 for -20%)",
"Usenegativevaluestosubtract": "Use negative values to subtract",
"Apply": "Apply",
"ItemIDssemicolonseparated": "Item IDs (semicolon-separated)",
"itemsCount": "Items ({count})"
}
},
"catalogTranslateTab": {
"TranslateItemNames": "Translate Item Names",
"EditthepublicnameanddescriptionoffurnitureitemsSavingwillupdate": "Edit the public name and description of furniture items. Saving will update:",
"items_basename": "items_base (name)",
"catalogNameauto": "catalogName (auto)",
"FurnitureDatajsonnamedesc": "FurnitureData.json (name + desc)",
"itemsmissingfromFurnitureDatajsonwillbeautoinsertedonsave": "item(s) missing from FurnitureData.json — will be auto-inserted on save",
"Suggest": "Suggest",
"Reset": "Reset",
"SaveAll": "Save All (",
"All": "All (",
"Missing": "Missing (",
"Modified": "Modified (",
"Noitemstotranslateinthispage": "No items to translate in this page.",
"Noitemsmatchthecurrentfilter": "No items match the current filter.",
"Type": "Type",
"ItemName": "Item Name",
"PublicName": "Public Name",
"Description": "Description",
"Status": "Status",
"catalog": "catalog:",
"Modified`": "Modified",
"MissingfromFurnitureDatajson": "Missing from FurnitureData.json",
"Willbeautoinsertedonsave": "Will be auto-inserted on save",
"InFurnitureDatajson": "In FurnitureData.json",
"Catalogmaintenance": "Catalog maintenance",
"Forcethefurnituretablesto100consistencywithFurnitureDatajsonEveryactionrunsinsideadatabasetransactionandrollsbackonerror": "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",
"Fixsprite_id": "Fix sprite_id",
"Fixcatalogoffer_id": "Fix catalog offer_id",
"Removeduplicatesitemscatalog": "Remove duplicates (items + catalog)",
"ReconcileFurnitureDataDB": "Reconcile FurnitureData ↔ DB",
"Fixemulatorconstraints": "Fix emulator constraints",
"Alignitems_baseIDstoFurnitureData": "Align items_base IDs to FurnitureData",
"Moveseveryitems_baseidtotheFurnitureDataspriteidsourceoftruthRewritesallreferencingtablesPreviewfirst": "Moves every items_base.id to the FurnitureData sprite id (source of truth). Rewrites all referencing tables. Preview first.",
"Previewchanges": "Preview changes",
"PlannedIDmoves": "Planned ID moves:",
"Newitemstoinsert": "New items to insert:",
"Skippedidoccupied": "Skipped (id occupied):",
"Applyalignment": "Apply alignment",
"Fixeverything": "Fix everything",
"RunsspritefixofferfixreconcilededupandIDalignmentinorderHeavyoperationmakeabackupfirst": "Runs sprite fix, offer fix, reconcile, dedup and ID alignment in order. Heavy operation — make a backup first.",
"Alsomergeduplicatecatalogpagesdoublelinks": "Also merge duplicate catalog pages (double links)",
"Fixeverythingnow": "Fix everything now",
"BulkImport": "Bulk Import",
"BulkImportItems": "Bulk Import Items",
"Itemlist": "Item list",
"Format": "Format:",
"base_idcreditspointspoints_type": "base_id, credits, points, points_type",
"Only": ". Only",
"base_id": "base_id",
"isrequiredotherfieldsdefaultto0Separatorscommaspaceorsemicolon": "is required; other fields default to 0. Separators: comma, space, or semicolon.",
"valid": "valid",
"invalid": "invalid",
"Line": "Line",
"BaseID": "Base ID",
"Credits": "Credits",
"Points": "Points",
"Cancel": "Cancel",
"Import": "Import",
"item": "item"
}
},
"shop": {
"title": "Κατάστημα",
"subtitle": "Διαχειριστείτε πακέτα και παραγγελίες",
"packages": "Πακέτα",
"orders": "Παραγγελίες",
"newPackage": "+ Νέο πακέτο",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"viewOrder": "Προβολή",
"noPackages": "Δεν υπάρχουν ακόμα πακέτα καταστημάτων",
"noOrders": "Δεν υπάρχουν παραγγελίες ακόμα",
"confirmDelete": "Διαγραφή αυτού του πακέτου;",
"colId": "ID",
"colName": "Όνομα",
"colPrice": "Τιμή",
"colCurrency": "Νόμισμα",
"colType": "Τύπος",
"colSold": "Πουλήθηκε",
"colEnabled": "Ενεργοποιημένο",
"colActions": "Δράσεις",
"colOrderId": "Ταυτότητα παραγγελίας",
"colCustomer": "Πελάτης",
"colPackage": "Πακέτο",
"colAmount": "Ποσό",
"colStatus": "Κατάσταση",
"colDate": "Ημερομηνία",
"statusPending": "Σε εκκρεμότητα",
"statusCompleted": "Ολοκληρώθηκε",
"statusRefunded": "Επιστροφή χρημάτων",
"form": {
"name": "Όνομα",
"namePlaceholder": "Όνομα πακέτου",
"description": "Περιγραφή",
"descriptionPlaceholder": "Περιγραφή πακέτου",
"price": "Τιμή",
"currency": "Νόμισμα",
"currencyPlaceholder": "EUR, USD, GBP…",
"type": "Τύπος",
"typeCredits": "Πιστώσεις",
"typeDuckets": "Παπιάκια",
"typeDiamonds": "Διαμάντια",
"typeBadge": "Σήμα",
"typeFurni": "Έπιπλα",
"typeRank": "Κατάταξη",
"amount": "Ποσό",
"badgeCode": "Κωδικός σήματος",
"badgeCodePlaceholder": "π.χ. VIP001",
"rankId": "Ταυτότητα κατάταξης",
"furniItems": "Είδη επίπλων",
"enabled": "Ενεργοποιημένο",
"save": "Αποθήκευση πακέτου",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση",
"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": "Συναλλαγές",
"subtitle": "αρχείο καταγραφής πληρωμών PayPal",
"noTransactions": "Δεν υπάρχουν ακόμη συναλλαγές",
"colId": "ID",
"colUser": "Χρήστης",
"colAmount": "Ποσό",
"colCurrency": "Νόμισμα",
"colPackage": "Πακέτο",
"colStatus": "Κατάσταση",
"colDate": "Ημερομηνία",
"colActions": "Δράσεις",
"statusCompleted": "Ολοκληρώθηκε",
"statusPending": "Σε εκκρεμότητα",
"statusFailed": "Απέτυχε",
"statusRefunded": "Επιστροφή χρημάτων",
"detail": {
"title": "Συναλλαγή #{id}",
"paypalId": "Αναγνωριστικό PayPal",
"payerEmail": "Email πληρωτή",
"grossAmount": "Μικτό ποσό",
"fee": "Τέλος",
"netAmount": "Καθαρό ποσό"
},
"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": "Κουπόνια καταστημάτων",
"subtitle": "Διαχείριση κωδικών κουπονιών με δυνατότητα εξαργύρωσης",
"newVoucher": "+ Νέο κουπόνι",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"noVouchers": "Δεν υπάρχουν ακόμη κουπόνια",
"confirmDelete": "Διαγραφή κουπονιού \"{code}\";",
"colId": "ID",
"colCode": "Κωδικός",
"colValue": "Αξία",
"colType": "Τύπος",
"colUses": "Χρήσεις / Μέγ",
"colExpires": "Λήγει",
"colCreated": "Δημιουργήθηκε",
"colActions": "Δράσεις",
"form": {
"code": "Κωδικός",
"codePlaceholder": "π.χ. ΚΑΛΟΚΑΙΡΙ2025",
"value": "Αξία",
"type": "Τύπος",
"typeCredits": "Πιστώσεις",
"typeDuckets": "Παπιάκια",
"typeDiamonds": "Διαμάντια",
"typeBadge": "Σήμα",
"typeFurni": "Έπιπλα",
"typeRank": "Κατάταξη",
"badgeCode": "Κωδικός σήματος",
"badgeCodePlaceholder": "π.χ. VIP001",
"rankId": "Ταυτότητα κατάταξης",
"maxUses": "Μέγιστες χρήσεις",
"maxUsesPlaceholder": "0 = απεριόριστο",
"expiresAt": "Λήγει στις",
"enabled": "Ενεργοποιημένο",
"save": "Αποθήκευση κουπονιού",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση",
"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": "Συνδρομές",
"subtitle": "Ενεργές επαναλαμβανόμενες συνδρομές",
"noSubscriptions": "Δεν υπάρχουν ενεργές συνδρομές",
"cancel": "Ακύρωση",
"confirmCancel": "Ακύρωση συνδρομής για {username};",
"colId": "ID",
"colUser": "Χρήστης",
"colPackage": "Πακέτο",
"colAmount": "Ποσό",
"colInterval": "Μεσοδιάστημα",
"colStarted": "Ξεκίνησε",
"colNextBilling": "Επόμενη χρέωση",
"colStatus": "Κατάσταση",
"colActions": "Δράσεις",
"statusActive": "Ενεργός",
"statusCancelled": "Ακυρώθηκε",
"statusExpired": "Λήξη",
"activeSubs": "Active subscriptions",
"types": "Subscription types",
"expiringSoon": "Expiring soon",
"activeSubscriptions": "Active subscriptions",
"colSubId": "Subscription ID",
"colUserId": "User ID",
"colType": "Type",
"colExpires": "Expires"
},
"rareValues": {
"title": "Σπάνιες Αξίες",
"subtitle": "Διαχειριστείτε κατηγορίες σπάνιων τιμών και τιμές αντικειμένων",
"categories": "Κατηγορίες",
"items": "Είδη",
"addCategory": "Προσθήκη κατηγορίας",
"editCategory": "Επεξεργασία κατηγορίας",
"deleteCategory": "Διαγραφή κατηγορίας",
"noCategories": "Δεν υπάρχουν ακόμα σπάνιες κατηγορίες αξίας",
"confirmDeleteCategory": "Διαγραφή κατηγορίας \"{name}\" και όλων των στοιχείων της;",
"colId": "ID",
"colName": "Όνομα",
"colItems": "Είδη",
"colUpdated": "Ενημερώθηκε",
"colActions": "Δράσεις",
"colItemName": "Όνομα στοιχείου",
"colCredits": "Πιστώσεις",
"colPoints": "Πόντοι",
"colPointType": "Τύπος σημείου",
"categoryForm": {
"name": "Όνομα",
"namePlaceholder": "Όνομα κατηγορίας",
"save": "Αποθήκευση κατηγορίας",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"itemForm": {
"itemName": "Όνομα στοιχείου",
"itemNamePlaceholder": "π.χ. Θρόνος",
"credits": "Πιστωτική αξία",
"points": "Αξία πόντων",
"pointType": "Τύπος σημείου",
"pointTypeDuckets": "Παπιάκια",
"pointTypeDiamonds": "Διαμάντια",
"save": "Αποθήκευση στοιχείου",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση",
"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": "Σήματα",
"subtitle": "Ανεβάστε, δώστε και διαχειριστείτε τον κατάλογο σημάτων",
"upload": "Μεταφόρτωση",
"giveBadge": "Δώστε σήμα",
"catalogue": "Κατάλογος",
"uploadTitle": "Ανεβάστε ένα νέο σήμα",
"uploadSubtitle": "Ανεβάστε ένα αρχείο εικόνας σήματος",
"badgeCode": "Κωδικός σήματος",
"badgeCodePlaceholder": "π.χ. VIP001",
"badgeFile": "Αρχείο σήματος",
"badgeFileHint": "PNG ή GIF, συνιστάται 40x40",
"uploadButton": "Μεταφόρτωση",
"uploading": "Μεταφόρτωση…",
"giveTitle": "Δώστε σήμα στον χρήστη",
"giveSubtitle": "Παραχωρήστε ένα σήμα σε έναν συγκεκριμένο χρήστη",
"username": "Όνομα χρήστη",
"usernamePlaceholder": "Όνομα χρήστη στόχευσης",
"giveButton": "Δώστε σήμα",
"giving": "Δίνοντας…",
"catalogueTitle": "Κατάλογος σημάτων",
"catalogueSubtitle": "Όλα τα διαθέσιμα σήματα στο ξενοδοχείο",
"noBadges": "Δεν υπάρχουν σήματα στον κατάλογο",
"search": "Αναζήτηση σημάτων",
"searchPlaceholder": "Αναζήτηση με κωδικό ή όνομα…",
"colCode": "Κωδικός",
"colImage": "Εικόνα",
"colName": "Όνομα",
"colDescription": "Περιγραφή",
"colActions": "Δράσεις",
"uploadedMessage": "Badge {code} uploaded.",
"errorMessage": "Upload failed: {error}",
"userIdPlaceholder": "User ID"
},
"achievements": {
"title": "Επιτεύγματα",
"subtitle": "Λίστα επιτευγμάτων εντός παιχνιδιού μόνο για ανάγνωση",
"noAchievements": "Δεν διαμορφώθηκαν επιτεύγματα",
"colId": "ID",
"colName": "Όνομα",
"colCategory": "Κατηγορία",
"colLevels": "Επίπεδα",
"colReward": "Επιβράβευση",
"colProgress": "Πρόοδος",
"levelLabel": "Επίπεδο {level}",
"rewardCredits": "{count} πιστώσεις",
"rewardPoints": "{count} {points}",
"achievementRows": "Achievement levels",
"distinctAchievements": "Distinct achievements",
"categories": "Categories",
"colLevel": "Level",
"colRewardType": "Reward type",
"colRewardAmount": "Reward amount",
"colPoints": "Points"
},
"calendar": {
"title": "Καμπάνιες ημερολογίου",
"subtitle": "Λίστα μόνο για ανάγνωση με καμπάνιες και συμβάντα ημερολογίου",
"noCampaigns": "Δεν υπάρχουν ακόμη καμπάνιες ημερολογίου",
"colId": "ID",
"colName": "Όνομα",
"colStart": "Έναρξη",
"colEnd": "Τέλος",
"colType": "Τύπος",
"colReward": "Επιβράβευση",
"colActions": "Δράσεις",
"detail": {
"title": "Καμπάνια: {name}",
"subtitle": "Λεπτομέρειες εκδήλωσης ημερολογίου",
"days": "Μέρες",
"dayLabel": "ημέρα {day}",
"reward": "Επιβράβευση",
"noDays": "Δεν έχουν διαμορφωθεί ημέρες για αυτήν την καμπάνια",
"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",
"page": {
"Couldnotloadsomecalendardatadatabaseunavailable": "Could not load some calendar data (database unavailable).",
"Rank": "Rank",
"Discord": "Discord",
"min": "/min",
"Couldnotloadsomeshopdatadatabaseunavailable": "Could not load some shop data (database unavailable).",
"Couldnotloadsubscriptionsdatabaseunavailable": "Could not load subscriptions (database unavailable).",
"Normal": "Normal",
"BuilderClub": "Builder Club",
"Error": "Error",
"Somethingwentwrong": "Something went wrong",
"ThehotelranintoanunexpectederrorPleasetryagainifitkeepshappeningcontactstaff": "The hotel ran into an unexpected error. Please try again — if it keeps happening, contact staff.",
"Tryagain": "Try again",
"Reference": "Reference:",
"Error`": "Error:"
}
},
"radio": {
"title": "Συντονισμός Ραδιοφώνου",
"subtitle": "Τελευταίες κραυγές, εφαρμογές DJ και προγράμματα στον αέρα (25 πιο πρόσφατα από το καθένα).",
"moderation": "Μέτρο",
"shouts": "Κραυγές",
"applications": "Εφαρμογές",
"schedules": "Δρομολόγια",
"settings": "Ρυθμίσεις",
"embed": "Ενσωμάτωση",
"ranks": "Βαθμοί",
"history": "Ιστορία",
"apiKeys": "Κλειδιά API",
"points": "Πόντοι",
"autoDj": "AutoDJ",
"monitoring": {
"title": "Ραδιοπαρακολούθηση",
"subtitle": "Ζωντανή ανίχνευση μόνο για ανάγνωση των διαμορφωμένων τελικών σημείων ραδιοφώνου (radio_now_playing_api_url, radio_listeners_api_url). Κάθε αίτημα αποτυγχάνει με ένα χρονικό όριο {timeout}s — δεν εγγράφονται δεδομένα. Διαμορφώστε τις διευθύνσεις URL στις Ρυθμίσεις.",
"stream": "Ροή",
"online": "Διαδικτυακά",
"offline": "Εκτός σύνδεσης",
"notConfigured": "Δεν έχει ρυθμιστεί",
"nowPlaying": "Τώρα παίζει",
"nowPlayingApi": "API που παίζει τώρα",
"listenersApi": "Listeners API",
"listeners": "Ακροατές",
"currentSong": "Τρέχον τραγούδι",
"bitrate": "Ρυθμός bit",
"status": "Κατάσταση",
"noNowPlayingHint": "δεν υπάρχει σύνολο API που παίζει τώρα",
"noListenersHint": "δεν έχει οριστεί API ακροατών",
"endpointDiagnostics": "Διαγνωστικά τελικού σημείου",
"diagnosticsLegend": "OK: διαθέσιμο · WARN: δεν έχει ρυθμιστεί · ERROR: αποτυχία αιτήματος ή λήξη χρονικού ορίου.",
"streamUrl": "URL ροής",
"unreachable": "απρόσιτος",
"refresh": "Ανανέωση"
},
"user": "Χρήστης",
"message": "Μήνυμα",
"posted": "Δημοσιεύτηκε",
"realName": "Πραγματικό Όνομα",
"age": "Ηλικία",
"style": "Στυλ",
"applied": "Εφαρμόστηκε",
"day": "Ημέρα",
"start": "Έναρξη",
"end": "Τέλος",
"show": "Εμφάνιση",
"status": "Κατάσταση",
"active": "ενεργός",
"inactive": "ανενεργός",
"hidden": "κρυμμένο",
"activeSchedules": "Ενεργά προγράμματα",
"noShouts": "Όχι φωνές για μέτρια",
"noApplications": "Δεν υποβλήθηκαν αιτήσεις.",
"noSchedules": "Δεν έχουν διαμορφωθεί χρονοδιαγράμματα.",
"deleteShout": "Διαγραφή",
"confirmDeleteShout": "Διαγραφή αυτής της κραυγής;",
"pendingApplications": "Εκκρεμείς αιτήσεις",
"settingsForm": {
"title": "Ρυθμίσεις ραδιοφώνου",
"subtitle": "Οι αλλαγές γράφουν στο website_settings (πλήκτρα radio_*) και καταστρέφουν την κρυφή μνήμη ρυθμίσεων χρόνου εκτέλεσης. Οι Booleans χρησιμοποιούν 0/1.",
"enabled": "Ενεργοποιημένο",
"disabled": "ΑμεΑ",
"totalKeys": "Σύνολο κλειδιών",
"configured": "Διαμόρφωση",
"curatedHint": "επιμελημένα κλειδιά με τιμή",
"customKeys": "Προσαρμοσμένα κλειδιά",
"saveAll": "Αποθήκευση όλων",
"singleKey": "Προσθήκη / αντικατάσταση ενός μόνο κλειδιού",
"keyPlaceholder": "radio_custom_key",
"valuePlaceholder": "αξία",
"commentPlaceholder": "σχόλιο (προαιρετικό)",
"saveSingle": "Αποθήκευση",
"otherSettings": "Άλλες ρυθμίσεις ραδιοφώνου",
"dbError": "Δεν ήταν δυνατή η φόρτωση ρυθμίσεων (η βάση δεδομένων δεν είναι διαθέσιμη). Οι προεπιλογές θα δημιουργηθούν κατά την αποθήκευση."
},
"embedPage": {
"title": "Ενσωμάτωση ραδιοφώνου",
"subtitle": "Έτοιμος για αντιγραφή κώδικα ενσωμάτωσης για τη ζωντανή ροή. Μόνο για ανάγνωση — τίποτα εδώ δεν γράφει στη βάση δεδομένων. Διαμορφώστε τη διεύθυνση URL ροής στις Ρυθμίσεις ραδιοφώνου (radio_stream_url).",
"streamUrl": "URL ροής",
"configured": "Διαμόρφωση",
"missing": "Λείπει",
"radioName": "Όνομα ραδιοφώνου",
"nowPlayingApi": "API που παίζει τώρα",
"set": "Σετ",
"notSet": "Δεν έχει οριστεί",
"noStreamUrl": "Δεν έχει διαμορφωθεί URL ροής",
"noStreamUrlText": "Δεν υπάρχει set radio_stream_url, επομένως δεν υπάρχει τίποτα για ενσωμάτωση ακόμα.",
"goToSettings": "Μεταβείτε στις Ρυθμίσεις ραδιοφώνου",
"livePreview": "Ζωντανή προεπισκόπηση",
"livePreviewText": "Αυτό είναι το γυμνό πρόγραμμα αναπαραγωγής audio όπως θα το δουν οι επισκέπτες. Πατήστε το play για να επιβεβαιώσετε ότι η ροή είναι προσβάσιμη.",
"source": "Πηγή",
"audioSnippet": "Απόσπασμα αναπαραγωγής ήχου",
"audioSnippetDesc": "Το αναπτυσσόμενο πρόγραμμα αναπαραγωγής ήχου HTML5 κατευθείαν στη ροή. Λειτουργεί οπουδήποτε επιτρέπεται απλό HTML.",
"iframeSnippet": "Απόσπασμα περιτυλίγματος Iframe",
"iframeSnippetDesc": "Ενσωματώνει τη σελίδα του προγράμματος αναπαραγωγής ραδιοφώνου του ιστότοπου σε ένα iframe — διατηρεί τις πληροφορίες για το στυλ και την αναπαραγωγή τώρα. Προσαρμόστε το πλάτος/ύψος ανάλογα με τη γεύση.",
"audioUnsupported": "Το πρόγραμμα περιήγησής σας δεν υποστηρίζει το στοιχείο ήχου."
},
"banners": {
"title": "Πανό",
"heading": "Πανό ραδιοφώνου",
"description": "Διαφημιστικά banner που εμφανίζονται στη σελίδα του ραδιοφώνου, ταξινομημένα κατά σειρά ταξινόμησης.",
"addBanner": "Προσθήκη banner",
"createBanner": "Δημιουργία banner",
"deleteBanner": "Διαγραφή banner",
"noBanners": "Δεν υπάρχουν ακόμη banner — προσθέστε ένα παραπάνω.",
"existing": "Υπάρχοντα banner ({count})",
"save": "Αποθήκευση",
"delete": "Διαγραφή",
"byUser": "από χρήστη {id}",
"active": "ενεργός",
"hidden": "κρυμμένο",
"bannerAlt": "Πανό ραδιοφώνου",
"statusActive": "Ενεργός",
"statusHidden": "Κρυφό",
"dbError": "Δεν ήταν δυνατή η φόρτωση των banner (μη διαθέσιμη βάση δεδομένων).",
"form": {
"imagePath": "Διαδρομή εικόνας / URL",
"imagePathPlaceholder": "/storage/radio/banner.png",
"title": "Τίτλος",
"description": "Περιγραφή",
"sortOrder": "Σειρά ταξινόμησης",
"active": "Ενεργός"
}
},
"ranksForm": {
"title": "Ραδιοφωνικοί βαθμοί",
"subtitle": "Βαθμοί DJ / προσωπικού με δυνατότητα ανάθεσης σε ραδιοφωνικές εφαρμογές.",
"dbError": "Δεν ήταν δυνατή η φόρτωση των κατατάξεων (η βάση δεδομένων δεν είναι διαθέσιμη).",
"active": "Ενεργός",
"addRank": "Προσθήκη κατάταξης",
"name": "Όνομα",
"badgeCode": "Κωδικός σήματος",
"description": "Περιγραφή",
"createRank": "Δημιουργία κατάταξης",
"existing": "Υπάρχουσες τάξεις ({count})",
"noRanks": "Δεν υπάρχουν ακόμη βαθμολογίες — προσθέστε μία παραπάνω.",
"activeLabel": "ενεργός",
"inactiveLabel": "ανενεργός",
"save": "Αποθήκευση",
"deleteRank": "Διαγραφή κατάταξης #{id}"
},
"historyPage": {
"title": "Ιστορικό αναπαραγωγής ραδιοφώνου",
"subtitle": "Προηγούμενες εκπομπές DJ και χρόνος μετάδοσης (radio_history), πρώτα οι πιο πρόσφατες. Καταγραφή μόνο για ανάγνωση για το ποιος ήταν στον αέρα, πότε και πόσοι ακροατές συντονίστηκαν.",
"dbError": "Δεν ήταν δυνατή η φόρτωση του ιστορικού ραδιοφώνου (η βάση δεδομένων δεν είναι διαθέσιμη).",
"showsLogged": "Εμφανίζει καταγεγραμμένα",
"onAirNow": "Στον αέρα τώρα",
"uniqueDjs": "Μοναδικοί DJs",
"peakListeners": "Κορυφαίοι ακροατές",
"empty": "Δεν έχει καταγραφεί ακόμα ιστορικό ραδιοφώνου.",
"showLog": "Εμφάνιση αρχείου καταγραφής ({count})",
"colDj": "DJ",
"colShow": "Εμφάνιση",
"colStarted": "Ξεκίνησε",
"colEnded": "Τελείωσε",
"colAirtime": "Χρόνος ομιλίας",
"colListeners": "Ακροατές",
"colNotes": "Σημειώσεις",
"onAir": "στον αέρα"
},
"apiKeysForm": {
"title": "Πλήκτρα API ραδιοφώνου",
"subtitle": "Κλειδιά API για εξωτερικές ενσωματώσεις ραδιοφώνου (radio_api_keys). Τα κλειδιά δημιουργούνται από την πλευρά του διακομιστή και εμφανίζονται καλυμμένα — αντιγράψτε την πλήρη τιμή από τη βάση δεδομένων κατά την πρώτη έκδοση.",
"dbError": "Δεν ήταν δυνατή η φόρτωση των κλειδιών API (μη διαθέσιμη βάση δεδομένων).",
"totalKeys": "Σύνολο κλειδιών",
"active": "Ενεργός",
"inactive": "Ανενεργό",
"generateKey": "Δημιουργία κλειδιού",
"generateHint": "Το μυστικό κλειδί δημιουργείται αυτόματα με κρυπτογραφική τυχαιότητα — δεν το εισάγετε.",
"name": "Όνομα",
"namePlaceholder": "Γέφυρα AzureCast",
"rateLimit": "Όριο τιμής (αιτήματα/λεπτό)",
"allowedIps": "Επιτρεπόμενες IP (προαιρετικά)",
"allowedIpsPlaceholder": "χωρισμένο με κόμμα, κενό = οποιοσδήποτε",
"generate": "Δημιουργία κλειδιού",
"existingKeys": "Υπάρχοντα κλειδιά ({count})",
"noKeys": "Δεν υπάρχουν ακόμη κλειδιά API — δημιουργήστε ένα παραπάνω.",
"colName": "Όνομα",
"colKey": "Κλειδί",
"colAllowedIps": "Επιτρεπόμενες IP",
"colRateLimit": "Όριο ποσοστού",
"colLastUsed": "Τελευταία χρήση",
"colExpires": "Λήγει",
"colStatus": "Κατάσταση",
"colActions": "Δράσεις",
"maskedHint": "Εμφανίζονται μόνο οι πρώτοι 8 χαρακτήρες",
"any": "οποιαδήποτε",
"activeLabel": "ενεργός",
"inactiveLabel": "ανενεργός",
"deactivate": "Απενεργοποίηση",
"activate": "Ενεργοποίηση",
"delete": "Διαγραφή"
},
"pointsForm": {
"title": "Σημεία ακροατών ραδιοφώνου",
"subtitle": "Επιβραβεύστε τους ακροατές με νόμισμα για το χρόνο που αφιερώνουν στο ραδιόφωνο. Οι επεξεργασίες γράφουν στο website_settings (πλήκτρα radio_points_*) και καταστρέφουν την κρυφή μνήμη ρυθμίσεων χρόνου εκτέλεσης. Οι Booleans χρησιμοποιούν 0/1.",
"saved": "Αποθηκεύτηκε",
"points": "Πόντοι",
"enabled": "Ενεργοποιημένο",
"disabled": "ΑμεΑ",
"perMinute": "ανά λεπτό",
"paidIn": "πληρώθηκε σε {currency}",
"maxPerDay": "Μέγιστο / ημέρα",
"unlimited": "Απεριόριστο",
"minListeners": "Ελάχιστοι ακροατές",
"settings": "Ρυθμίσεις",
"pointsEnabled": "Οι πόντοι ενεργοποιήθηκαν",
"pointsEnabledHint": "Κύριος διακόπτης για την απονομή πόντων ακροατών.",
"currency": "Νόμισμα",
"currencyHint": "Σε ποιο πορτοφόλι πληρώνονται οι πόντοι.",
"pointsPerMinute": "Πόντοι ανά λεπτό",
"pointsPerMinuteHint": "Ποσό που απονέμεται για κάθε πλήρες λεπτό ακρόασης.",
"maxPerDayHint": "Ημερήσιο ανώτατο όριο ανά χρήστη. Χρησιμοποιήστε το 0 για απεριόριστο.",
"minListenersHint": "Οι πόντοι απονέμονται μόνο όταν είναι συντονισμένοι τουλάχιστον τόσοι πολλοί άνθρωποι.",
"save": "Αποθήκευση ρυθμίσεων πόντων"
},
"autoDjForm": {
"title": "Radio AutoDJ",
"subtitle": "Εναλλακτική λίστα αναπαραγωγής (radio_auto_dj_playlist) το ραδιόφωνο περιστρέφεται όταν δεν υπάρχει ζωντανός DJ σε ροή. Ταξινόμηση κατά σειρά ταξινόμησης και κατόπιν τίτλου.",
"dbError": "Δεν ήταν δυνατή η φόρτωση της λίστας αναπαραγωγής AutoDJ (μη διαθέσιμη βάση δεδομένων).",
"tracks": "Κομμάτια",
"active": "Ενεργός",
"inactive": "Ανενεργό",
"addTrack": "Προσθήκη κομματιού",
"titlePlaceholder": "Τίτλος κομματιού",
"artist": "Καλλιτέχνης",
"album": "Άλμπουμ",
"artworkUrl": "URL έργου τέχνης",
"artworkUrlPlaceholder": "https://…/cover.png",
"duration": "Διάρκεια (δευτερόλεπτα)",
"durationPlaceholder": "π.χ. 215",
"sortOrder": "Σειρά ταξινόμησης",
"playlist": "Λίστα αναπαραγωγής ({count})",
"noTracks": "Δεν υπάρχουν ακόμα κομμάτια AutoDJ — προσθέστε ένα παραπάνω.",
"colOrder": "Παραγγελία",
"colTitle": "Τίτλος",
"colArtist": "Καλλιτέχνης",
"colAlbum": "Άλμπουμ",
"colDuration": "Διάρκεια",
"colPlays": "Παίζει",
"colLastPlayed": "Τελευταίο παιχνίδι",
"colStatus": "Κατάσταση",
"colActions": "Δράσεις",
"activeLabel": "ενεργός",
"inactiveLabel": "ανενεργός",
"deactivate": "Απενεργοποίηση",
"activate": "Ενεργοποίηση",
"delete": "Διαγραφή",
"trackTitle": "Τίτλος"
},
"moderationPage": {
"title": "DJ Moderation",
"subtitle": "Ελέγξτε και αφαιρέστε τις ραδιοφωνικές κραυγές (50 πιο πρόσφατες).",
"recentShouts": "Πρόσφατες κραυγές ({count})"
}
},
"commandocentrum": {
"title": "Commandocentrum",
"subtitle": "Διαγνωστικά, στοιχεία ελέγχου RCON και διαχείριση χρηστών",
"diagnostics": "Διαγνωστικά",
"rcon": "RCON",
"userActions": "Ενέργειες χρήστη",
"diagnosticsTitle": "Διαγνωστικά εξομοιωτών",
"memoryUsage": "Χρήση μνήμης",
"uptime": "Χρόνος λειτουργίας",
"onlineUsers": "Διαδικτυακοί χρήστες",
"roomsLoaded": "Τα δωμάτια είναι φορτωμένα",
"refresh": "Ανανέωση",
"rconTitle": "Εντολές RCON",
"rconPlaceholder": "Εισαγάγετε την εντολή RCON…",
"rconSend": "Αποστολή",
"rconSending": "Αποστολή…",
"rconResponse": "Απάντηση",
"userActionsTitle": "Ενέργειες χρήστη",
"username": "Όνομα χρήστη",
"usernamePlaceholder": "Όνομα χρήστη στόχευσης",
"action": "Δράση",
"execute": "Εκτελέστε",
"actions": {
"disconnect": "Αποσύνδεση",
"alert": "Αποστολή ειδοποίησης",
"giveCredits": "Δώστε πιστώσεις",
"giveBadge": "Δώστε σήμα",
"givePoints": "Δώστε βαθμούς",
"ban": "Απαγόρευση",
"kick": "Κλωτσιά"
},
"messagePlaceholder": "Μήνυμα (για ειδοποιήσεις)…",
"amountPlaceholder": "Ποσό…",
"badgePlaceholder": "Κωδικός σήματος…",
"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": "Διαμόρφωση εξομοιωτή",
"subtitle": "Προβολή και επεξεργασία ρυθμίσεων εξομοιωτή και κειμένων τοπικών ρυθμίσεων",
"settings": "Ρυθμίσεις",
"texts": "Κείμενα",
"search": "Αναζήτηση",
"searchPlaceholder": "Κλειδιά αναζήτησης…",
"noSettings": "Δεν βρέθηκαν ρυθμίσεις",
"noTexts": "Δεν βρέθηκαν κείμενα",
"edit": "Επεξεργασία",
"save": "Αποθήκευση",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση",
"colKey": "Κλειδί",
"colValue": "Αξία",
"colType": "Τύπος",
"colActions": "Δράσεις",
"editDialog": {
"title": "Επεξεργασία: {key}",
"value": "Αξία",
"valuePlaceholder": "Εισαγάγετε τιμή…",
"save": "Αποθήκευση αλλαγών",
"cancel": "Ακύρωση"
},
"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": "Ειδοποιήσεις",
"subtitle": "Στείλτε ειδοποιήσεις σε όλο το ξενοδοχείο και δείτε πρόσφατες ειδοποιήσεις",
"sendAlert": "Αποστολή ειδοποίησης ξενοδοχείου",
"recentAlerts": "Πρόσφατες ειδοποιήσεις ({count})",
"noRecentAlerts": "Δεν υπάρχουν πρόσφατες ειδοποιήσεις",
"form": {
"title": "Τίτλος ειδοποίησης",
"titlePlaceholder": "π.χ. Συντήρηση διακομιστή σε 10 λεπτά",
"message": "Μήνυμα ειδοποίησης",
"messagePlaceholder": "Γράψτε το μήνυμα ειδοποίησης…",
"type": "Τύπος",
"typeHotel": "Ειδοποίηση σε όλο το ξενοδοχείο",
"typeStaff": "Προσωπικό μόνο",
"urgent": "Επείγον",
"send": "Αποστολή ειδοποίησης",
"sending": "Αποστολή…",
"description": "Broadcasts via RCON <code>hotelalert</code> to online users."
},
"colId": "ID",
"colTitle": "Τίτλος",
"colSentBy": "Αποστολή από",
"colType": "Τύπος",
"colDate": "Ημερομηνία",
"colActions": "Δράσεις",
"noAlerts": "No recent alerts",
"alertsShown": "Shown",
"critical": "Critical",
"warnings": "Warnings",
"unread": "Unread",
"markAllRead": "Mark all read",
"colWhen": "When",
"colSeverity": "Severity",
"colMessage": "Message"
},
"logs": {
"title": "Δραστηριότητες Προσωπικού",
"subtitle": "Διαδρομή ελέγχου των ενεργειών του προσωπικού στον πίνακα διαχείρισης",
"noLogs": "Δεν έχει καταγραφεί ακόμη δραστηριότητα προσωπικού",
"colId": "ID",
"colUser": "Χρήστης",
"colAction": "Δράση",
"colTarget": "Στόχος",
"colDescription": "Περιγραφή",
"colIp": "IP",
"colTimestamp": "Χρονική σήμανση",
"filterByUser": "Φιλτράρισμα ανά χρήστη…",
"filterByAction": "Φιλτράρισμα ανά ενέργεια…",
"clearFilters": "Καθαρίστε τα φίλτρα",
"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": "Φίλτρο Word",
"subtitle": "Διαχειριστείτε φιλτραρισμένες λέξεις και φράσεις στο ξενοδοχείο",
"addWord": "Προσθήκη λέξης",
"addWords": "Προσθέστε λέξεις",
"noWords": "Δεν υπάρχουν φιλτραρισμένες λέξεις ακόμα",
"confirmDelete": "Κατάργηση του \"{word}\" από το φίλτρο;",
"colId": "ID",
"colWord": "Λέξη",
"colAddedBy": "Προστέθηκε από",
"colCreated": "Δημιουργήθηκε",
"colActions": "Δράσεις",
"form": {
"word": "Λέξη",
"wordPlaceholder": "π.χ. κακή λέξη",
"addMore": "Προσθέστε πολλές λέξεις (μία ανά γραμμή)",
"save": "Προσθήκη στο φίλτρο",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"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": "Λειτουργία συντήρησης",
"subtitle": "Ενεργοποίηση ή απενεργοποίηση της συντήρησης σε όλο το ξενοδοχείο",
"enabled": "Η λειτουργία συντήρησης είναι ενεργοποιημένη",
"disabled": "Η λειτουργία συντήρησης είναι απενεργοποιημένη",
"enable": "Ενεργοποίηση συντήρησης",
"disable": "Απενεργοποιήστε τη συντήρηση",
"message": "Μήνυμα συντήρησης",
"messagePlaceholder": "Θα επιστρέψουμε σύντομα!",
"staffAccess": "Επιτρέψτε την πρόσβαση του προσωπικού κατά τη συντήρηση",
"save": "Αποθήκευση ρυθμίσεων",
"saving": "Αποθήκευση…",
"confirmEnable": "Η ενεργοποίηση της συντήρησης θα αποτρέψει την πρόσβαση στο ξενοδοχείο από όλους τους χρήστες χωρίς προσωπικό. Συνεχίζω;",
"confirmDisable": "Απενεργοποίηση λειτουργίας συντήρησης και επαναφορά της πρόσβασης για όλους τους χρήστες;",
"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": "Άδειες καθαριότητας",
"subtitle": "Διαμορφώστε ποιες τάξεις μπορούν να έχουν πρόσβαση σε ποιες ενότητες διαχειριστή",
"addPermission": "Προσθήκη άδειας",
"editPermission": "Άδεια επεξεργασίας",
"deletePermission": "Διαγραφή άδειας",
"noPermissions": "Δεν έχουν διαμορφωθεί άδειες καθαριότητας",
"confirmDelete": "Διαγραφή αυτής της άδειας;",
"colId": "ID",
"colRank": "Κατάταξη",
"colSection": "Ενότητα",
"colActions": "Δράσεις",
"form": {
"rankId": "Ταυτότητα κατάταξης",
"rankIdPlaceholder": "Ελάχιστη κατάταξη",
"section": "Κλειδί ενότητας",
"sectionPlaceholder": "π.χ. admin.dashboard",
"save": "Αποθήκευση άδειας",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"saved": "Saved!",
"deleted": "Deleted!",
"errorOccurred": "An error occurred",
"emptyInput": "Empty input",
"invalidJson": "Invalid JSON",
"imported": "Imported!",
"presetApplied": "Preset Εφαρμόστηκε!",
"cleared": "All Άδειες cleared!",
"invalidRank": "Invalid Κατάταξη",
"testDone": "Test done: {count} Άδειες found",
"testing": "Testing...",
"loading": "Loading...",
"prev": "Previous",
"next": "Next",
"confirmClearAll": "Διαγραφή ALL Άδειες? This Δράση cannot be undone!",
"colGroup": "Group",
"colDepends": "Depends on",
"colPermission": "Άδεια",
"colDescription": "Περιγραφή",
"colMinRank": "Min. Κατάταξη",
"permissionKey": "Κλειδί άδειας",
"minRank": "Min. Κατάταξη",
"description": "Περιγραφή",
"permissions": "Άδειες",
"permissionsCount": "{count} Άδειες",
"permission": "Άδεια",
"highestMinRank": "Highest min. Κατάταξη: {rank}",
"totalMinRank": "Total min. Κατάταξη sum: {total}",
"groupCount": "{count} groups",
"rankCount": "{count} Βαθμοί",
"missingDeps": "{count} Λείπει dependencies",
"dependsOn": "depends on",
"notFound": "not found",
"missing": "(Λείπει)",
"rank": "Κατάταξη",
"count": "Count",
"searchPermission": "Αναζήτηση Άδειες…",
"search": "Αναζήτηση",
"manage": "Manage",
"importSelection": "Εισαγωγή selection",
"noGroup": "Όχι group",
"allGroups": "All groups",
"perGroup": "Άδειες per group",
"perRank": "Άδειες per Κατάταξη",
"rankOverviewHint": "All Άδειες grouped by the Κατάταξη they are assigned to.",
"tabOverview": "Επισκόπηση",
"tabManage": "Manage",
"tabImport": "Εισαγωγή / Export",
"tabRanks": "Κατάταξη Επισκόπηση",
"tabPresets": "Προεπιλογές",
"tabTest": "Test",
"tabAudit": "Audit log",
"importPermissions": "Εισαγωγή Άδειες",
"importHint": "Paste a JSON array of Άδεια objects. Format: ['{' \"permission\": \"...\", \"minRank\": 7, \"description\": \"...\", \"groupName\": \"...\", \"dependsOn\": \"...\" '}']",
"importPlaceholder": "Paste JSON here…",
"import": "Εισαγωγή",
"exportTitle": "Export Άδειες",
"exportHint": "Export all Άδειες as JSON for backup or batch editing.",
"export": "Export JSON",
"copy": "Copy",
"copied": "Copied!",
"presets": "Άδεια Προεπιλογές",
"presetsHint": "Εφαρμόστε a predefined Σετ of Άδειες for common staff roles.",
"presetModerator": "Moderator",
"presetModeratorDesc": "Basic Μέτρο tools: Χρήστης lookup, Απαγορεύσεις, CFH handling, chat κούτσουρα.",
"presetAdmin": "Administrator",
"presetAdminDesc": "Full admin access: Χρήστες, Δωμάτια, news, Ρυθμίσεις, Κατάστημα, events, Ραδιόφωνο & more.",
"presetSuperAdmin": "Super Admin",
"presetSuperAdminDesc": "Complete access to every feature including Άδεια management and asset Εισαγωγή.",
"applyPreset": "Εφαρμόστε preset",
"clearAll": "Clear all Άδειες",
"testTitle": "Test Κατάταξη access",
"testHint": "Enter a Κατάταξη number to see which Άδειες would be granted.",
"test": "Test",
"auditTitle": "Άδεια audit log",
"auditHint": "All changes to Οικονομία Άδειες are logged.",
"auditLogsAt": "Audit κούτσουρα are available on the Audit log page.",
"viewAuditLogs": "Προβολή audit κούτσουρα",
"importedWithErrors": "Imported {count} Άδειες with {errors} errors",
"confirmClearAllDesc": "This will Αφαίρεση every Άδεια entry from the Βάση δεδομένων. Are you sure?",
"confirmDeletePermission": "Διαγραφή this Άδεια permanently?",
"confirmBulkDelete": "Διαγραφή {count} selected Άδειες?",
"deleteSelected": "Διαγραφή {count} selected",
"cancel": "Ακύρωση",
"confirm": "Confirm",
"auditTime": "Time",
"auditUser": "Χρήστης",
"auditAction": "Δράση",
"auditTarget": "Στόχος",
"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": "Δωμάτια",
"subtitle": "Αναζήτηση και διαχείριση δωματίων ξενοδοχείων",
"search": "Αναζήτηση",
"searchPlaceholder": "Αναζήτηση κατά όνομα, ιδιοκτήτη ή ταυτότητα…",
"searchResults": "Βρέθηκε {count, plural, one {# room} other {# rooms}} για \"{query}\"",
"noResults": "Δεν βρέθηκαν δωμάτια",
"colId": "ID",
"colName": "Όνομα",
"colOwner": "Ιδιοκτήτης",
"colUsers": "Χρήστες",
"colState": "κράτος",
"colCategory": "Κατηγορία",
"colCreated": "Δημιουργήθηκε",
"colActions": "Δράσεις",
"stateOpen": "Ανοίξτε",
"stateClosed": "Κλειστό",
"stateLocked": "Κλειδωμένο",
"stateInvisible": "Αόρατο",
"detail": {
"title": "Δωμάτιο: {name}",
"subtitle": "Ανήκει σε {owner}",
"overview": "Επισκόπηση",
"actions": "Δράσεις",
"description": "Περιγραφή",
"noDescription": "Καμία περιγραφή",
"owner": "Ιδιοκτήτης",
"users": "Χρήστες στο διαδίκτυο",
"maxUsers": "Μέγιστος αριθμός χρηστών",
"category": "Κατηγορία",
"state": "κράτος",
"tags": "Ετικέτες",
"noTags": "Χωρίς ετικέτες",
"created": "Δημιουργήθηκε",
"deleteRoom": "Διαγραφή δωματίου",
"confirmDelete": "Διαγραφή δωματίου \"{name}\"; Αυτό δεν μπορεί να αναιρεθεί.",
"enterRoom": "Μπείτε στο δωμάτιο",
"changeOwner": "Αλλαγή κατόχου",
"changeOwnerPlaceholder": "Όνομα χρήστη νέου κατόχου"
},
"id": {
"roomEditForm": {
"RoomDetails": "Room Details",
"Name": "Name",
"Description": "Description",
"State": "State",
"Open": "Open",
"Locked": "Locked",
"Password": "Password",
"Invisible": "Invisible",
"MaxUsers": "Max Users",
"SaveChanges": "Save Changes",
"DeleteRoom": "Delete Room",
"QuickActions": "Quick Actions",
"Owner": "Owner",
"CurrentUsers": "Current Users",
"RCONCommands": "RCON Commands",
"KickAll": "Kick All",
"Lock": "Lock",
"Unlock": "Unlock",
"Reload": "Reload",
"users": "users",
"Owner`": "Owner:",
"Furniture": "Furniture",
"Edit": "Edit",
"AccessState": "Access State",
"Score": "Score",
"Category": "Category",
"roomstotal": "rooms total",
"Edit`": "Edit:",
"View": "View",
"Refresh": "Refresh",
"AutorefreshON": "Auto-refresh ON",
"AutorefreshOFF": "Auto-refresh OFF",
"Every": "Every",
"Lastupdated": "Last updated:",
"Search": "Search",
"settings": "settings",
"changed": "changed",
"SaveSync": "Save & Sync",
"clear": "clear",
"Nosettingsfound": "No settings found.",
"Perpage": "Per page"
}
}
},
"emailTemplates": {
"title": "Πρότυπα email",
"subtitle": "Διαχείριση προτύπων email συναλλαγών",
"newTemplate": "+ Νέο πρότυπο",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"noTemplates": "Δεν υπάρχουν ακόμη πρότυπα email",
"confirmDelete": "Διαγραφή προτύπου \"{name}\";",
"colId": "ID",
"colName": "Όνομα",
"colSubject": "Θέμα",
"colKey": "Κλειδί",
"colUpdated": "Ενημερώθηκε",
"colActions": "Δράσεις",
"form": {
"name": "Όνομα",
"namePlaceholder": "π.χ. Email καλωσορίσματος",
"key": "Κλειδί",
"keyPlaceholder": "π.χ. Welcome_email",
"subject": "Θέμα",
"subjectPlaceholder": "Γραμμή θέματος email",
"body": "Σώμα (HTML)",
"bodyPlaceholder": "<p>Αγαπητέ {username},</p>",
"variables": "Διαθέσιμες μεταβλητές",
"variablesHint": "{username}, {email}, {hotel_name}",
"save": "Αποθήκευση προτύπου",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση",
"variablesPlaceholder": "Variables, separated by commas",
"active": "Active"
},
"create": "Create template",
"save": "Save template",
"updated": "Updated: {date}"
},
"theme": {
"title": "Θέμα",
"subtitle": "Προσαρμόστε την εμφάνιση CMS",
"presets": "Προεπιλογές",
"colours": "Χρώματα",
"css": "CSS",
"presetsTitle": "Προεπιλογές θεμάτων",
"presetsSubtitle": "Επιλέξτε έναν προκατασκευασμένο συνδυασμό χρωμάτων",
"applyPreset": "Εφαρμόστε",
"presetApplied": "Εφαρμόστηκε η προεπιλογή: {preset}",
"customiseTitle": "Προσαρμοσμένα χρώματα",
"primary": "Πρωτοβάθμια",
"secondary": "Δευτερεύουσα",
"accent": "Προφορά",
"background": "φόντο",
"surface": "Επιφάνεια",
"text": "Κείμενο",
"saveColours": "Αποθήκευση χρωμάτων",
"savingColours": "Αποθήκευση…",
"cssTitle": "Προσαρμοσμένο CSS",
"cssSubtitle": "Προσθέστε προσαρμοσμένο CSS για να παρακάμψετε τα στυλ θέματος",
"cssPlaceholder": "/* Το προσαρμοσμένο σας CSS εδώ */",
"saveCss": "Αποθήκευση CSS",
"savingCss": "Αποθήκευση…",
"reset": "Επαναφορά στις προεπιλογές",
"confirmReset": "Επαναφορά του θέματος στις προεπιλεγμένες τιμές;",
"saved": "Theme settings saved.",
"typographyLayout": "Typography and layout",
"font": "Font",
"borderRadius": "Corner radius",
"page": {
"Themesavedaspreset": "Theme saved as preset.",
"Appliedtheme": "Applied theme “",
"Themerenamed": "Theme renamed.",
"Themedeleted": "Theme deleted.",
"Yoursavedthemes": "Your saved themes",
"SavethecurrentconfigurationasanamedpresetthenloaditanytimePerfectforkeepingmultiplebrandthemesreadytoswitch": "Save the current configuration as a named preset, then load it anytime. Perfect for keeping multiple brand themes ready to switch.",
"Savecurrenttheme": "Save current theme",
"Nosavedthemesyetsaveoneabove": "No saved themes yet — save one above.",
"Load": "Load",
"Delete": "Delete",
"Lightmode": "☀ Light mode",
"ThesecolorsareusedwhenvisitorsviewyoursiteinlightmodedefaultMakesurebodytextcontrastswellwithboththepagebackgroundandcardsurface": "These colors are used when visitors view your site in light mode (default). Make sure body text contrasts well with both the page background and card surface.",
"Pagetextcolors": "Page & text colors",
"BackgroundssurfacesandtextcolorsTextcolorsmustcontrastwiththeirbackgroundsforreadability": "Backgrounds, surfaces, and text colors. Text colors must contrast with their backgrounds for readability.",
"Buttonslinks": "Buttons & links",
"ButtonbackgroundstextonbuttonsandlinkcolorsButtontextmustcontrastwithitsbuttonbackground": "Button backgrounds, text on buttons, and link colors. Button text must contrast with its button background.",
"Gradients": "Gradients",
"CardheaderandherosectiongradientTheseblendfromstartendacrossheadingsandbanners": "Card header and hero section gradient. These blend from start → end across headings and banners.",
"AdminpanelHK": "🛠 Admin panel (HK)",
"OverridecolorsfortheHousekeepingadminpanelTheseapplyacrossbothlightanddarkmodesLeaveemptytouseautoderiveddefaults": "Override colors for the Housekeeping admin panel. These apply across both light and dark modes. Leave empty to use auto-derived defaults.",
"Darkmode": "🌙 Dark mode",
"ThesecolorsareusedwhenvisitorsswitchtodarkmodeDarkbackgroundsneedlightertextforgoodcontrast": "These colors are used when visitors switch to dark mode. Dark backgrounds need lighter text for good contrast.",
"Duplicate": "Duplicate",
"Editing": "Editing:",
"Light": "☀ Light",
"Dark": "☾ Dark",
"SaveThemeValues": "Save Theme Values",
"Colors": "Colors (",
"mode": "mode)",
"OnlyvaluesyousethereoverridetheparentscopeLeaveemptytoinherit": "Only values you set here override the parent scope. Leave empty to inherit.",
"TogglevisibilityofblocksinthisscopeHiddenblocksuse": "Toggle visibility of blocks in this scope. Hidden blocks use",
"displaynone": "display: none",
"LayoutSettings": "Layout Settings",
"ControlspacingwidthandgridsettingsforthisscopeValuesareappliedasCSScustomproperties": "Control spacing, width, and grid settings for this scope. Values are applied as CSS custom properties.",
"EffectsTransitions": "Effects & Transitions",
"Controlshadowsbordersandanimationtimingforthisscope": "Control shadows, borders, and animation timing for this scope.",
"MediaBackgrounds": "Media & Backgrounds",
"Setcustomlogosbackgroundimagesandbackgroundpropertiesforthisscope": "Set custom logos, background images, and background properties for this scope.",
"CustomCSS": "Custom CSS",
"AddcustomCSSthatapplieswithinthisscopeUse": "Add custom CSS that applies within this scope. Use",
"asaplaceholderforthescopeselectoreg": "as a placeholder for the scope selector (e.g.",
"contentcard": "& .content-card",
"border2pxsolidred": "border: 2px solid red;",
"CustomHTML": "Custom HTML",
"AddcustomHTMLthatinjectsintothepageforthisscopeUseforcustombannersscriptsorcontentblocks": "Add custom HTML that injects into the page for this scope. Use for custom banners, scripts, or content blocks."
}
},
"media": {
"title": "Βιβλιοθήκη πολυμέσων",
"subtitle": "Μεταφόρτωση και διαχείριση αρχείων πολυμέσων",
"upload": "Μεταφόρτωση",
"uploadTitle": "Ανεβάστε ένα αρχείο",
"uploadSubtitle": "Σύρετε και αποθέστε ή κάντε κλικ για μεταφόρτωση",
"uploadButton": "Επιλέξτε αρχείο",
"uploading": "Μεταφόρτωση…",
"noFiles": "Δεν υπάρχουν ακόμα αρχεία πολυμέσων",
"delete": "Διαγραφή",
"confirmDelete": "Διαγραφή αυτού του αρχείου οριστικά;",
"search": "Αναζήτηση",
"searchPlaceholder": "Αναζήτηση κατά όνομα αρχείου…",
"colPreview": "Προεπισκόπηση",
"colName": "Όνομα",
"colSize": "Μέγεθος",
"colType": "Τύπος",
"colUploaded": "Μεταφορτώθηκε",
"colActions": "Δράσεις",
"copyUrl": "Αντιγραφή διεύθυνσης URL",
"urlCopied": "Η διεύθυνση URL αντιγράφηκε στο πρόχειρο"
},
"favicon": {
"title": "Favicon",
"subtitle": "Ανεβάστε και διαχειριστείτε το favicon του ιστότοπου",
"current": "Τρέχον favicon",
"uploadLabel": "Μεταφόρτωση favicon",
"uploadHint": "PNG, JPEG, GIF, WebP or ICO. Max 2 MB.",
"upload": "Μεταφόρτωση",
"uploading": "Μεταφόρτωση…",
"delete": "Αφαίρεση",
"deleting": "Αφαίρεση…",
"saved": "Το Favicon αποθηκεύτηκε με επιτυχία!",
"deleted": "Το Favicon καταργήθηκε με επιτυχία!",
"error": "Κάτι πήγε στραβά",
"confirmDelete": "Κατάργηση του favicon; Ο ιστότοπος δεν θα εμφανίζει πλέον προσαρμοσμένο favicon.",
"generator": {
"title": "Δημιουργία favicon",
"text": "Κείμενο",
"bgColor": "Χρώμα φόντου",
"textColor": "Χρώμα κειμένου",
"rounded": "Στρογγυλεμένες γωνίες",
"save": "Αποθήκευση ως favicon"
},
"cancel": "Cancel"
},
"settings": {
"title": "Ρυθμίσεις CMS",
"subtitle": "Διαχείριση διαμόρφωσης CMS κλειδιού/τιμής",
"addSetting": "Προσθήκη ρύθμισης",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"noSettings": "Δεν βρέθηκαν ρυθμίσεις",
"confirmDelete": "Διαγραφή της ρύθμισης \"{key}\";",
"colKey": "Κλειδί",
"colValue": "Αξία",
"colUpdated": "Ενημερώθηκε",
"colActions": "Δράσεις",
"form": {
"key": "Κλειδί",
"keyPlaceholder": "π.χ. όνομα_ξενοδοχείου",
"value": "Αξία",
"valuePlaceholder": "Ρύθμιση τιμής",
"save": "Αποθήκευση ρύθμισης",
"saving": "Αποθήκευση…",
"cancel": "Ακύρωση"
},
"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."
},
"import": {
"title": "Import",
"subtitle": "Import assets from external sources into your hotel.",
"badges": "Badges",
"badgesDescription": "Import and manage badge assets from external sources.",
"furni": {
"nitroEditorDialog": {
"EditNitro": "Edit Nitro",
"dir": "dir",
"layers": "layers",
"colors": "colors",
"anim": "anim",
"Visual": "Visual",
"JSON": "JSON",
"Dimensions": "Dimensions",
"Xwidth": "X (width)",
"Ydepth": "Y (depth)",
"Zheight": "Z (height)",
"Directions": "Directions",
"8active": "/ 8 active",
"ChoosetheavailablerotationsKeepatleastonedirectionactive": "Choose the available rotations. Keep at least one direction active.",
"Interaction": "Interaction",
"CanStandOn": "Can Stand On",
"CanSitOn": "Can Sit On",
"CanLayOn": "Can Lay On",
"Autodetectfromname": "Auto-detect from name",
"Clicklimit": "Click limit:",
"Modes": "Modes:",
"Types": "Types",
"VisualizationType": "Visualization Type",
"LogicType": "Logic Type",
"Layer": "Layer",
"ZIndex": "Z-Index",
"Alpha": "Alpha",
"Ink": "Ink",
"Colori": "Colori",
"ColorVariant": "Color Variant #",
"Unsavedchanges": "Unsaved changes",
"Reset": "Reset",
"Cancel": "Cancel",
"Save": "Save",
"Editfurniture": "Edit furniture",
"Wallposition": "Wall position",
"Format": "Format:",
"Rotation07": "Rotation (0-7)",
"Extradata": "Extra data",
"Itemstatedataegdicevaluestickynotetextcolor": "Item state/data (e.g. dice value, sticky note text, color)",
"autoDetected": "Auto-detected",
"loadFailed": "Failed to load furniture data",
"networkErrorLoad": "Network error loading furniture data",
"invalidJsonSwitchTabs": "Invalid JSON; please fix errors before switching tabs.",
"resetToOriginal": "Reset to original",
"invalidJson": "Invalid JSON format",
"saveFailed": "Failed to save furniture data"
},
"upload": {
"uploadFurniClient": {
"FurnitureDetails": "Furniture Details",
"Classname": "Classname *",
"Name": "Name *",
"Description": "Description",
"Type": "Type *",
"Floors": "Floor (s)",
"Walli": "Wall (i)",
"Widthx": "Width (x)",
"Lengthy": "Length (y)",
"Interaction": "Interaction",
"Canstandon": "Can stand on",
"Cansiton": "Can sit on",
"Canlayon": "Can lay on",
"GenerateSQL": "Generate SQL",
"Customparams": "Custom params",
"Files": "Files",
"nitrofile": ".nitro file *",
"Thenitrobundlefilemax50MB": "The .nitro bundle file (max 50MB)",
"IconPNG": "Icon (PNG)",
"Optional64x64PNGiconmax2MBLeaveemptytoskip": "Optional 64x64 PNG icon (max 2MB). Leave empty to skip.",
"ImportSuccessful": "Import Successful",
"Classname`": "Classname:",
"ItemID": "Item ID:",
"CatalogID": "Catalog ID:",
"SQLfile": "SQL file:",
"Warnings": "Warnings:",
"ImportAnother": "Import Another",
"Back": "Back",
"Room": "Room #",
"Owner": "· Owner:",
"Reload": "Reload",
"KickAll": "Kick All",
"Alltypes": "All types",
"Flooronly": "Floor only",
"Wallonly": "Wall only",
"Allowners": "All owners",
"Flat": "Flat",
"Grouped": "Grouped",
"selected": "selected",
"Clear": "Clear",
"Deleteselected": "Delete selected",
"Name`": "Name",
"Type`": "Type",
"Position": "Position",
"Rot": "Rot",
"Owner`": "Owner",
"Actions": "Actions",
"Thisroomhasnofurniture": "This room has no furniture.",
"Noitemsmatchyourfilters": "No items match your filters.",
"Showing": "Showing",
"Furniture": "Furniture",
"Count": "Count",
"Action": "Action",
"Noitems": "No items.",
"Deleteall": "Delete all",
"errorClassname": "Classname required",
"errorNitroRequired": ".nitro file required",
"errorNitroSize": ".nitro file must be under 50MB"
}
}
},
"furniDescription": "Import furniture definitions, SWF files, and icons.",
"clothing": {
"importClothingClient": {
"libraries": "libraries",
"onthispage": "on this page",
"missinghere": "missing here",
"Import": "Import",
"selected": "selected",
"Nolibrariesfound": "No libraries found",
"Imported": "Imported",
"Page": "Page",
"Prev": "← Prev",
"Next": "Next →",
"sets": "sets",
"Nosetsfound": "No sets found",
"Libraries": "Libraries",
"Sets": "Sets",
"None": "None",
"Enabledretiredsourcesareexcludedfromcountsandimports": "Enabled (retired sources are excluded from counts and imports)",
"Save": "Save",
"Cancel": "Cancel",
"CloneSources": "Clone Sources",
"AddSource": "Add Source",
"NosourcesyetAddonetostartcloningfurnifromanotherhotel": "No sources yet. Add one to start cloning furni from another hotel.",
"total": "total",
"present": "present",
"clonable": "clonable",
"Clone": "Clone",
"Cloneallclonable": "Clone all clonable (",
"Nofurnifound": "No furni found",
"Rev": "Rev:",
"Present": "Present",
"Loadingsources": "Loading sources…",
"Selectasourceabovetobrowseandclonefurni": "Select a source above to browse and clone furni.",
"effects": "effects",
"imported": "imported",
"available": "available",
"Noeffectsfound": "No effects found",
"pets": "pets",
"missing": "missing",
"Nopetsfound": "No pets found"
}
},
"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": {
"auditClient": {
"Repairmissingicons": "Repair missing icons",
"Repairmissingnitro": "Repair missing .nitro",
"GeneratecatalogSQL": "Generate catalog SQL",
"ApplySQLtodatabase": "Apply SQL to database",
"RepairFurnitureDatajsonaddmissingdedupe": "Repair FurnitureData.json (add missing + dedupe)",
"CheckFurnitureDatajsonforspriteIdconflicts": "Check FurnitureData.json for spriteId conflicts",
"Repairstructuralissuesorphanedrefsduplicates": "Repair structural issues (orphaned refs + duplicates)",
"Cancel": "Cancel",
"items_baseentries": "items_base entries",
"catalog_itemsentries": "catalog_items entries",
"Errors": "Errors",
"Warnings": "Warnings",
"itemswithoutcatalogentry": "items without catalog entry",
"orphanedcatalogreferences": "orphaned catalog references",
"itemswithoutnitro": "items without .nitro",
"itemswithouticon": "items without icon",
"duplicateclassnames": "duplicate classnames",
"itemsmissingfromclonesources": "items missing from clone sources",
"itemscantberepairedlegacybroken": "item(s) can't be repaired (legacy/broken)",
"Iconrepair": "Icon repair:",
"fixed": "fixed",
"failed": "failed",
"skipped": "skipped",
"stillmissing": "still missing",
"Nitrorepair": "Nitro repair:",
"CatalogSQL": "Catalog SQL:",
"statementsgenerated": "statement(s) generated",
"applied": "applied",
"Downloadsql": "Download .sql",
"FurnitureDatarepair": "FurnitureData repair:",
"added": "added",
"duplicatesremoved": "duplicates removed",
"spriteIdconflictsfixed": "spriteId conflicts fixed",
"Structuralrepair": "Structural repair:",
"orphanedrowsremoved": "orphaned rows removed",
"cleaned": "cleaned",
"classnamesmerged": "classname(s) merged",
"duplicaterowsremoved": "duplicate rows removed",
"referencesremapped": "reference(s) remapped",
"Issues": "Issues (",
"Missingfromsources": "Missing from sources (",
"Unrepairablelegacy": "Unrepairable (legacy) (",
"source": "source:",
"missing": "missing",
"Noissuesfound": "No issues found",
"Yourcatalogisclean": "Your catalog is clean!",
"RunAgain": "Run Again",
"Runafullaudittocheckformissingcatalogentriesbrokenreferencesmissingfilesanditemsavailablefromclonesources": "Run a full audit to check for missing catalog entries, broken references, missing files, and items available from clone sources.",
"results": "results",
"imported": "imported",
"available": "available",
"Import": "Import",
"selected": "selected",
"Nobadgesfound": "No badges found",
"Trysearchingbybadgenameorcode": "Try searching by badge name or code",
"Imported": "Imported",
"Page": "Page",
"Prev": "← Prev",
"Next": "Next →",
"EditBadge": "Edit Badge —",
"Name": "Name",
"Description": "Description",
"Save": "Save",
"Processed": "Processed",
"items": "items",
"RepairComplete": "Repair Complete",
"Downloads": "Downloads:",
"Skippedalreadyhadicon": "Skipped (already had icon):",
"Failed": "Failed:",
"ScansallfurnitureinthedatabaseanddownloadsanymissingiconfilesIconsareextractedfromlocalnitrobundlesordownloadedfromconfiguredclonesources": "Scans all furniture in the database and downloads any missing icon files. Icons are extracted from local .nitro bundles or downloaded from configured clone sources."
}
},
"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",
"referrals": "Παραπομπές",
"dailyRewards": "Ημερήσιες ανταμοιβές"
},
"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!",
"id": {
"pollQuestions": {
"Question": "Question",
"Type": "Type",
"SingleChoice": "Single Choice",
"MultipleChoice": "Multiple Choice",
"FreeText": "Free Text",
"SortOrder": "Sort Order",
"Optionsoneperline": "Options (one per line)",
"Cancel": "Cancel",
"votes": "votes (",
"freetextresponses": "free-text responses",
"totalvote": "total vote",
"CtrlEntertosendYourreplywillbemarkedasstaff": "Ctrl+Enter to send. Your reply will be marked as staff.",
"Ticketclosed": "Ticket closed",
"Actions": "Actions",
"Status": "Status",
"Priority": "Priority",
"Assignto": "Assign to",
"Unassigned": "Unassigned",
"Assigntome": "Assign to me",
"Requester": "Requester",
"Rank": "Rank",
"Registered": "Registered",
"Details": "Details",
"Created": "Created",
"Closed": "Closed",
"Messages": "Messages",
"NewTemplate": "New Template",
"Title": "Title",
"Category": "Category",
"Content": "Content",
"Notemplatesyet": "No templates yet."
}
}
},
"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",
"page": {
"Database": "Database",
"Latency": "Latency:",
"Redis": "Redis",
"Cacheratelimitssessions": "Cache / rate limits / sessions",
"Emulator": "Emulator",
"Version": "Version:",
"OnlineUsers": "Online Users",
"LiverosterinCommandoCentrum": "Live roster in CommandoCentrum",
"Errors24h": "Errors (24h)",
"Emulatorerrorstoday": "Emulator errors today",
"RecentEmulatorErrors": "Recent Emulator Errors",
"CMSerrorcenter": "CMS error center",
"totalerrorsshowingpage": "total errors — showing page",
"Previous": "Previous",
"Page": "Page",
"Next": "Next",
"DevOps": "DevOps",
"Server": "Server",
"Browser": "Browser",
"bashcmsinstall": "bash cms install",
"bashcmsupdate": "bash cms update",
"ExportCSV": "Export CSV",
"ExportJSON": "Export JSON",
"Advancedkeyvalue": "Advanced key / value",
"Rawwebsite_settingsrowsPreferthegroupedformaboveforcommonkeys": "Raw website_settings rows. Prefer the grouped form above for common keys.",
"Showkeysalreadyintheform": "Show keys already in the form",
"Addoverwrite": "Add / overwrite",
"Nomatchingsettings": "No matching settings",
"Save": "Save",
"Export": "Export",
"keys": "keys",
"readonly": "read-only",
"commentspreserved": "comments preserved",
"Thisfileisreadonly": "This file is read-only.",
"CommentsarepreservedsavingonlypatcheschangedvaluelinesIfakeyusesanonstandardformatandcannotbepatchedinplacethefileisreserializedcommentslostandyouwillbewarned": "Comments are preserved: saving only patches changed value lines. If a key uses a non-standard format and cannot be patched in-place, the file is reserialized (comments lost) and you will be warned.",
"Parseerror": "Parse error:",
"Noentries": "No entries.",
"Prev": "Prev"
}
},
"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",
"id": {
"page": {
"0Normal": "0 — Normal",
"1Locked": "1 — Locked",
"2Exclusive": "2 — Exclusive",
"0Off": "0 — Off",
"EVERYONE": "EVERYONE",
"OWNER": "OWNER",
"ADMIN": "ADMIN",
"MEMBER": "MEMBER",
"NONE": "NONE",
"ADMINS": "ADMINS",
"Position": "Position",
"Type": "Type",
"Badge": "Badge",
"Credits": "Credits",
"Pixels": "Pixels",
"Points": "Points",
"Item": "Item",
"BadgeCode": "Badge Code",
"Description": "Description",
"Cancel": "Cancel",
"Add": "Add",
"credits": "credits",
"pixels": "pixels",
"points": "points",
"NewType": "New Type",
"Name": "Name",
"Slug": "Slug",
"Color": "Color",
"Rankminimo0tutti": "Rank minimo (0 = tutti)",
"0Tutti3Mod4Staff6Admin": "0=Tutti, 3=Mod+, 4=Staff+, 6=Admin+",
"NoeventtypesyetCreateyourfirstoneabove": "No event types yet. Create your first one above.",
"Rank": "Rank",
"UserID": "User ID"
}
}
},
"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."
}
},
"studio": {
"studioClient": {
"Studio": "Studio",
"furnidata": "furnidata",
"results": "results",
"incatalog": "in catalog",
"missingnitro": "missing nitro",
"total": "total",
"present": "present",
"teimporteren": "te importeren",
"Catalog": "Catalog",
"official": "(official)",
"Alltypes": "All types",
"Flooritems": "Floor items",
"Wallitems": "Wall items",
"Allstatuses": "All statuses",
"Notimported": "Not imported",
"Imported": "Imported",
"Incatalog": "In catalog",
"Missingnitro": "Missing nitro",
"Missingfurnidata": "Missing furnidata",
"Missingcatalogentry": "Missing catalog entry",
"Defaultorder": "Default order",
"NameAZ": "Name A–Z",
"ClassnameAZ": "Classname A–Z",
"Category": "Category",
"Importedfirst": "Imported first",
"Notimportedfirst": "Not imported first",
"Resetfilters": "Reset filters",
"nonitro": "no nitro",
"Importoptions": "Import options",
"Translation": "· Translation",
"Speed": "Speed",
"1gentle": "1 (gentle)",
"4recommended": "4 (recommended)",
"12turbo": "12 (turbo)",
"Translate": "Translate",
"Languages": "Languages",
"All": "All",
"None": "None",
"Translateentirecatalog": "Translate entire catalog",
"Defaultforfutureimports": "Default for future imports",
"selectedinthisview": "selected in this view",
"Clear": "Clear",
"Importselected": "Import selected (",
"RebuildNitro": "Rebuild Nitro (",
"Delete": "Delete (",
"SomeselectedfurnitureishiddenbyyourfiltersActionsapplytothevisibleselection": "Some selected furniture is hidden by your filters. Actions apply to the visible selection.",
"Tryagain": "Try again",
"Nonitro": "No nitro",
"Nofurnidata": "No furnidata",
"Nocatalog": "No catalog",
"New": "New",
"Name": "Name",
"Classname": "Classname",
"Type": "Type",
"Status": "Status",
"Actions": "Actions",
"Loadingmore": "Loading more…",
"Scrollformore": "Scroll for more",
"Endofresults": "End of results",
"Deleteimportedfurni": "Delete imported furni",
"Thispermanentlyremoves": "This permanently removes",
"fromitems_baseandthecatalogplusitsassetfiles": "from items_base and the catalog, plus its asset files.",
"Cancel": "Cancel",
"Delete`": "Delete",
"imported": "imported",
"failed": "failed",
"Retryfailed": "Retry failed (",
"Closesummary": "Close summary",
"Stopimport": "Stop import",
"Viewitemdetails": "View item details (",
"Showing": "Showing",
"items": "items",
"Categories": "Categories",
"Allcategories": "All categories",
"Nomatchingcategories": "No matching categories.",
"Duckets": "Duckets",
"Diamonds": "Diamonds",
"Organizeimports": "Organize imports",
"1Select2Review3Import": "1. Select → 2. Review → 3. Import",
"Source": "Source:",
"Destination": "Destination:",
"localcatalogfurnidatanitroandicons": "local catalog, furnidata, .nitro and icons",
"Translation`": "Translation:",
"Selection": "Selection:",
"furnitureitems": "furniture items",
"Checkingsourcefiles": "Checking source files…",
"checked": "checked",
"Retrysourcecheck": "Retry source check",
"SomesourcescouldnotbeverifiedTheimportwillstilltrytodownloadtheirfiles": "Some sources could not be verified. The import will still try to download their files.",
"Sourcefilesnotfoundbypreliminarycheck": "Source files not found by preliminary check:",
"Checkinglocaldataandassets": "Checking local data and assets…",
"Retryinspection": "Retry inspection",
"InspectionisincompleteCloseandretrybeforeimporting": "Inspection is incomplete. Close and retry before importing.",
"readytoimport": "ready to import ·",
"alreadyinSQLcompletemissingdata": "already in SQL (complete missing data) ·",
"conflicts": "conflicts ·",
"sourcefilewarnings": "source file warnings",
"SomelocalfilescouldnotbeverifiedReviewtheitemdetailsbeforecontinuing": "Some local files could not be verified. Review the item details before continuing.",
"Validatingfile": "Validating file…",
"Onlythe": "Only the",
"eligibleitemsbelowwillbesubmittedExistingfurniturekeepsitslocalIDsSQLsettingsandcatalogoffersMissingassetsandcatalogentriesarecompletedfurnidataisrefreshedConflictsareexcluded": "eligible items below will be submitted. Existing furniture keeps its local IDs, SQL settings and catalog offers. Missing assets and catalog entries are completed; furnidata is refreshed. Conflicts are excluded.",
"AutomaticcategoriesandpricesbelowareestimatesSourcerulesmayoverridethemfinalresultsappearintheimportsummary": "Automatic categories and prices below are estimates. Source rules may override them; final results appear in the import summary.",
"credits": "credits +",
"points": "points",
"Previousitems": "Previous items",
"Page": "Page",
"Nextitems": "Next items"
},
"sync": {
"catalogGitConfiguration": {
"Giteaconnectionsettings": "Gitea connection settings",
"ConnectyourselfhostedGitearepositoryoverHTTPSTheCMSmanagesitsowncheckoutnoGitspecificenvsettingsareneeded": "Connect your self-hosted Gitea repository over HTTPS. The CMS manages its own checkout; no Git-specific .env settings are needed.",
"Provider": "Provider:",
"Giteaselfhosted": "Gitea self-hosted",
"RepositoryURL": "Repository URL",
"Branch": "Branch",
"Giteausername": "Gitea username",
"Giteaaccesstoken": "Gitea access token",
"ThetokenisstoredencryptedandisneverreturnedtothebrowserChangingrepositoryorusernamerequiresenteringthetokenagain": "The token is stored encrypted and is never returned to the browser. Changing repository or username requires entering the token again.",
"Automaticallyexportcatalogchanges": "Automatically export catalog changes",
"Testconnection": "Test connection",
"SyncAllSources": "Sync All Sources",
"Scanconfiguredsourcesandautomaticallyimportanyfurniturethatisnotyetpresentinyourhotel": "Scan configured sources and automatically import any furniture that is not yet present in your hotel.",
"CloneSources": "Clone Sources",
"Scanallconfiguredclonesourcesandautomaticallyimportanyfurniturethatisnotyetpresentinyourhotel": "Scan all configured clone sources and automatically import any furniture that is not yet present in your hotel.",
"OfficialFurnidata": "Official Furnidata",
"ScantheofficialHabbofurnidataandautomaticallyimportanyfurniturethatyourhoteldoesnthaveyet": "Scan the official Habbo furnidata and automatically import any furniture that your hotel doesn't have yet.",
"CatalogAudit": "Catalog Audit",
"Scanyourentirefurniturecatalogformissingentriesbrokenreferencesmissingfilesanditemsavailablefromclonesources": "Scan your entire furniture catalog for missing entries, broken references, missing files, and items available from clone sources.",
"Nitrocleanup": "Nitro cleanup",
"Scanthenitrodirectoriesforfakebundlesnomatchingfurnitureandbrokenbundlesunparseableandremovethem": "Scan the nitro directories for fake bundles (no matching furniture) and broken bundles (unparseable) and remove them.",
"RepairMissingIcons": "Repair Missing Icons",
"ScanallexistingfurnitureanddownloadanymissingiconfilesIconsareextractedfromlocalnitrobundlesorfetchedfromconfiguredclonesources": "Scan all existing furniture and download any missing icon files. Icons are extracted from local .nitro bundles or fetched from configured clone sources.",
"UploadnitroFurniture": "Upload .nitro Furniture",
"UploadanitrobundleandoptionalicontoimportfurnitureintothehotelThedatabaseentrycatalogitemandFurnitureDatajsonwillbeupdatedautomatically": "Upload a .nitro bundle and optional icon to import furniture into the hotel. The database entry, catalog item, and FurnitureData.json will be updated automatically.",
"NewBanner": "New Banner",
"Title": "Title",
"Subtitle": "Subtitle",
"ImageURL": "Image URL",
"LinkURL": "Link URL",
"Color": "Color",
"StartDate": "Start Date",
"EndDate": "End Date",
"Active": "Active",
"Order": "Order",
"Cancel": "Cancel",
"Nobannersyet": "No banners yet.",
"Scheduled": "Scheduled"
}
},
"nitroQualityPanel": {
"Scale": "Scale",
"sprites": "sprites ·",
"animationdefinitionsdirections": "animation definitions · directions",
"ThisbundlecontainsnospritesatthisscaleMissingscale32doesnotbyitselfmeanthefurnitureisunusable": "This bundle contains no sprites at this scale. Missing scale 32 does not by itself mean the furniture is unusable.",
"Sprite": "Sprite",
"Thisspritecouldnotberendered": "This sprite could not be rendered.",
"InspectthesavedbundleatbothscalesPreviewsshowindividualspritesnottheassembledfurnitureoranimationplayback": "Inspect the saved bundle at both scales. Previews show individual sprites, not the assembled furniture or animation playback.",
"Recheck": "Recheck",
"Checkingscalesandtexturereferences": "Checking scales and texture references…",
"Generatescale32from64": "Generate scale 32 from 64",
"AddsderivedartworkusingnearestneighborreductionExistingscale32ispreservedPreviewusesthesavedbundleandshowsonespriteatitsoriginalpixelsize": "Adds derived artwork using nearest-neighbor reduction. Existing scale 32 is preserved. Preview uses the saved bundle and shows one sprite at its original pixel size.",
"Saveorresetyourpendingeditsfirst": "Save or reset your pending edits first.",
"spriteentrieswillbeaddedCheckpositioningandanimationsintheclientaftersaving": "sprite entries will be added. Check positioning and animations in the client after saving.",
"spriteswereskippedbecausethesourcebundlehasnousableartworkforthem": "sprite(s) were skipped because the source bundle has no usable artwork for them.",
"Savewithbackup": "Save with backup",
"Discardpreview": "Discard preview",
"SavedAcopyoftheoriginalbundleispreserved": "Saved. A copy of the original bundle is preserved.",
"Restoreoriginalbundle": "Restore original bundle",
"LocalfurnidatacouldnotbereadItsvaluesarenotverified": "Local furnidata could not be read. Its values are not verified.",
"Field": "Field",
"Localnow": "Local now",
"Source": "Source",
"SourcevaluesarecomparedwithlocaldataImportmayremapIDsandtranslatenamesExistingfurniturekeepsitslocalIDsandSQLsettingsnewfurniturereceivesafreelocalIDwhenthesourceIDisoccupied": "Source values are compared with local data. Import may remap IDs and translate names. Existing furniture keeps its local IDs and SQL settings; new furniture receives a free local ID when the source ID is occupied.",
"SQLrecordsandcatalogoffers": "SQL records and catalog offers",
"Item": "Item #",
"Sprite`": "· Sprite #",
"NolocalSQLitem": "No local SQL item.",
"Offer": "Offer #",
"Page": "· Page #",
"credits": "credits +",
"points": "points",
"Checkinglocaldataandassets": "Checking local data and assets…",
"Retryinspection": "Retry inspection",
"Missing": "Missing:",
"DuplicaterecordsormismatchedIDstypesrequirereviewbeforerepair": "Duplicate records or mismatched IDs/types require review before repair.",
"SomelocaldatacouldnotbecheckedRetryverificationbeforerepair": "Some local data could not be checked. Retry verification before repair.",
"RepairaddsmissingpartsandpreservesexistingIDssettingsfurnidataandcatalogoffersMissingoffersusetheautomaticcategoryandpriceshownbelow": "Repair adds missing parts and preserves existing IDs, settings, furnidata and catalog offers. Missing offers use the automatic category and price shown below.",
"Rechecklocalstate": "Recheck local state",
"Localinspectionunavailable": "Local inspection unavailable.",
"Furnidetail": "Furni detail",
"rev": "rev",
"Autoimportready": "Auto-import ready",
"Automaticplacement": "Automatic placement",
"Category": "Category",
"Price": "Price",
"credits`": "credits",
"Importaddtocatalog": "Import & add to catalog",
"ThisfurniisintheDBbutthenitrofileismissing": "This furni is in the DB but the .nitro file is missing.",
"Regeneratenitro": "Regenerate .nitro",
"Editnitro": "Edit nitro",
"Deleteimportedfurni": "Delete imported furni",
"selected": "selected",
"found": "found",
"copies": "copies",
"days": "days",
"Exportmanifest": "Export manifest",
"Onlyshowfilesolderthan": "Only show files older than",
"Hiderecentfiles": "Hide recent files",
"assetfilesscanned": "asset files scanned",
"Fakenitrosnomatchingitem": "Fake nitros (no matching item)",
"Brokennitrosunparseable": "Broken nitros (unparseable)",
"DeletingabrokennitroleavesitsiteminthedatabasewithoutabundlepreferredownloadingitorletthecatalogauditreobtainitlaterDatabaserowsareneverremovedbythistool": "Deleting a broken .nitro leaves its item in the database without a bundle — prefer re-downloading it, or let the catalog audit re-obtain it later. Database rows are never removed by this tool.",
"OnlyassetfilesaretouchedFurnitureDatajsonanddatabaserowsstayintact": "Only asset files are touched — FurnitureData.json and database rows stay intact.",
"ScaneveryfurniassetdirectorytofindfakeandbrokennitrobundlesplusorphanedSWFsandiconsDeletethemredownloadthebrokenonesorautocleanoldleftovers": "Scan every furni asset directory to find fake and broken nitro bundles plus orphaned SWFs and icons. Delete them, re-download the broken ones, or auto-clean old leftovers."
}
},
"sounds": {
"soundsClient": {
"All": "All (",
"SingleMP3s": "Single MP3s (",
"Composition": "Composition (",
"UploadMP3": "Upload MP3",
"Type": "Type",
"Code": "Code",
"Name": "Name",
"Author": "Author",
"Length": "Length",
"Used": "Used",
"PreviewSamples": "Preview / Samples",
"Actions": "Actions",
"Nosongdisksuploadedyet": "No song disks uploaded yet.",
"ClickUploadMP3togetstarted": "Click “Upload MP3” to get started.",
"Noresultsfortheactivefilters": "No results for the active filters.",
"Trax": "Trax",
"sample": "sample:",
"Play": "▶ Play",
"Delete": "Delete “",
"Thissongdiskiscurrentlyusedby": "This song disk is currently used by",
"catalogitem": "catalog item",
"Deletingitwillresetthosecatalogitemstonosongdisk": ". Deleting it will reset those catalog items to “no song disk”.",
"TheMP3filewillberemovedfromdisk": "The MP3 file will be removed from disk.",
"Thisactioncannotbeundone": "This action cannot be undone.",
"Cancel": "Cancel",
"Delete`": "Delete",
"UploadSongDisk": "Upload Song Disk",
"UploadanMP3fileMaxsize10MBThecodewillbegeneratedautomaticallyas": "Upload an MP3 file. Max size 10 MB. The code will be generated automatically as",
"song_id": "song_{id}",
"MP3file": "MP3 file",
"Upload": "Upload",
"Edit": "Edit",
"compositionof": "— composition of",
"samplesEditthe": "samples. Edit the",
"track": "track",
"fieldonlyifyouknowwhatyouaredoing": "field only if you know what you are doing.",
"theMP3filecannotbereplaceddeleteandreuploadifyouneedtochangetheaudio": "— the MP3 file cannot be replaced: delete and re-upload if you need to change the audio.",
"Lengthseconds": "Length (seconds)",
"TrackTraxcomposition": "Track (Trax composition)",
"Format": "Format:",
"channelsample_idlengthsample_idlength": "channel:sample_id,length;sample_id,length;…",
"silenceDetectedsampleIDs": "= silence. Detected sample IDs:",
"Save": "Save",
"Filesareservedfrom": "Files are served from",
"configurablein": "(configurable in",
"Settings": "Settings",
"Stop": "Stop",
"PlayTrax": "Play Trax",
"deleteSuccess": "Song disk deleted",
"deleteError": "Failed to delete song disk",
"searchPlaceholder": "Search by title or code...",
"filterAll": "All",
"filterSingle": "Single MP3s",
"filterComposition": "Compositions"
}
},
"moderation": {
"cfh": {
"id": {
"cfhDetail": {
"CFH": "CFH #",
"Type": "Type",
"Category": "· Category",
"CallForHelpReport": "Call For Help Report",
"Room": "· Room #",
"ReportMessage": "Report Message",
"Reporter": "Reporter",
"Rank": "Rank",
"Unknownuser": "Unknown user",
"ReportedUser": "Reported User",
"bans": "bans",
"Kick": "Kick",
"Mute": "Mute",
"Alert": "Alert",
"BanHistory": "Ban History (",
"Actions": "Actions",
"Status": "Status",
"Open": "Open",
"Picked": "Picked",
"Closed": "Closed",
"Assigntome": "Assign to me",
"CloseTicket": "Close Ticket",
"AssignedModerator": "Assigned Moderator",
"Unassigned": "Unassigned",
"Details": "Details",
"Created": "Created",
"Room`": "Room",
"Category`": "Category",
"Score": "Score",
"QuickActions": "Quick Actions",
"ResetPassword": "Reset Password",
"Disconnect": "Disconnect",
"Online": "Online",
"SendInGameAlert": "Send In-Game Alert",
"MuteUnmute": "Mute / Unmute",
"Unmute": "Unmute",
"SendCreditsRCON": "Send Credits (RCON)",
"SendCredits": "Send Credits",
"TradelockCMSDB": "Trade lock (CMS DB)",
"Lock7d": "Lock 7d",
"Clearlock": "Clear lock",
"PasswordReset": "Password Reset",
"Newpasswordgeneratedfor": "New password generated for",
"Copyitnowitwontbeshownagain": ". Copy it now — it won't be shown again.",
"Bans": "Bans",
"Unban": "Unban",
"Ban": "Ban",
"ActiveBan": "Active Ban",
"Reason": "Reason",
"Durationhours": "Duration (hours)",
"Account": "Account",
"Machine": "Machine",
"History": "History",
"cfhId": "CFH #{id}",
"typeCategory": "Category: {category}",
"title": "Call for Help #{id}",
"roomMeta": "Room #{id}",
"reportMessage": "Report Message",
"noDescription": "No description provided"
}
}
},
"team": {
"page": {
"OnlineNow": "Online Now",
"TotalStaff": "Total Staff",
"Aboveminrank": "Above min rank",
"Name": "Name",
"Rank": "Rank",
"CFH": "CFH",
"Tickets": "Tickets",
"Actions": "Actions",
"LastSeen": "Last Seen",
"Web": "Web",
"Mod": "Mod",
"UserActions": "User Actions",
"UserID": "User ID",
"KickDisconnect": "Kick / Disconnect",
"Unmute": "Unmute",
"Mute": "Mute",
"RoomActions": "Room Actions",
"RoomID": "Room ID",
"KickAllFromRoom": "Kick All From Room",
"BroadcastAlert": "Broadcast Alert",
"HotelAlert": "Hotel Alert",
"StaffAlert": "Staff Alert",
"RecentCFHTickets": "Recent CFH Tickets",
"Viewall": "View all",
"NoCFHtickets": "No CFH tickets",
"RecentModActions": "Recent Mod Actions",
"Norecentactions": "No recent actions",
"Online": "Online",
"Offline": "Offline",
"Modview": "Mod view",
"Public": "Public",
"Motto": "Motto",
"ReadonlybanlistformoderatorsCreateliftbansrequiresthefulladminpanel": "Read-only ban list for moderators. Create/lift bans requires the full admin panel.",
"rank": "· rank"
}
}
},
"prefixes": {
"prefixesClient": {
"UserPrefixes": "User Prefixes",
"Blacklist": "Blacklist",
"Settings": "Settings",
"Search": "Search",
"Add": "Add",
"User": "User",
"Prefix": "Prefix",
"Color": "Color",
"Icon": "Icon",
"Effect": "Effect",
"Active": "Active",
"Date": "Date",
"Actions": "Actions",
"Noprefixesfound": "No prefixes found",
"Previous": "Previous",
"Page": "Page",
"Next": "Next",
"ForbiddenWords": "Forbidden Words",
"Noblacklistwords": "No blacklist words",
"PrefixSettings": "Prefix Settings",
"MaxLength": "Max Length",
"MinimumRank": "Minimum Rank",
"PriceCredits": "Price (Credits)",
"PricePoints": "Price (Points)",
"PointsType": "Points Type",
"0Duckets5Diamondsetc": "0 = Duckets, 5 = Diamonds, etc.",
"SaveSettings": "Save Settings",
"Closeprefixeditor": "Close prefix editor",
"Username": "Username",
"Text": "Text",
"ColorHEXormultiFF000000FF00": "Color (HEX or multi: #FF0000,#00FF00)",
"Cancel": "Cancel",
"confirmDeleteTitle": "Delete Prefix",
"confirmDeleteDesc": "Are you sure you want to delete this user prefix?",
"confirmDelete": "Delete",
"cancel": "Cancel",
"successPrefixDeleted": "Prefix deleted successfully",
"successPrefixUpdated": "Prefix updated successfully",
"successPrefixCreated": "Prefix created successfully",
"successWordAdded": "Blacklist word added",
"successWordRemoved": "Blacklist word removed",
"successSettingsSaved": "Prefix settings saved",
"tabUserPrefixes": "User Prefixes",
"tabBlacklist": "Blacklist",
"tabSettings": "Settings"
}
},
"catalogTree": {
"CatalogStructure": "Catalog Structure",
"pages": "pages",
"All": "All",
"Showallpages": "Show all pages",
"Showenabledonly": "Show enabled only",
"Off": "Off",
"Showdisabledonly": "Show disabled only",
"Expandall": "Expand all",
"Collapseall": "Collapse all",
"result": "result",
"for": "for \"",
"Createsubpage": "Create subpage",
"OFF": "OFF",
"Layout": "Layout",
"Items": "Items",
"Subpages": "Subpages",
"Icon": "Icon",
"Visible": "Visible",
"Enabled": "Enabled",
"RightclickforactionsDoubleclicktoopen": "Right-click for actions · Double-click to open",
"EditPage": "Edit Page",
"CopyID": "Copy ID",
"CreateSubpage": "Create Subpage",
"Delete": "Delete",
"QuickAdd": "Quick Add",
"CtrlK": "Ctrl+K",
"QuickAddFurni": "Quick Add Furni",
"Typeatleast2characterstosearch": "Type at least 2 characters to search",
"Nofurnifoundfor": "No furni found for \"",
"Add": "Add →",
"SelectCatalogIcon": "Select Catalog Icon",
"icons": "icons",
"None": "None",
"Noiconsfound": "No icons found",
"images": "images",
"Clear": "Clear",
"Noimagesfound": "No images found",
"Noitemsinthispageyet": "No items in this page yet",
"Shoppreview": "Shop preview ·",
"items": "items",
"OFFER": "OFFER",
"LTD": "LTD",
"Free": "Free",
"Loading": "Loading…",
"Nosong": "— No song —",
"Use": "Use \""
},
"catalogManager": {
"inlineEditor": {
"Selectapagefromthetreetoedit": "Select a page from the tree to edit",
"Parent": "· Parent:",
"Save": "Save",
"Settings": "Settings",
"Items": "Items",
"Translate": "Translate",
"Caption": "Caption",
"Layout": "Layout",
"Order": "Order",
"MinRank": "Min Rank",
"Icon": "Icon",
"Headline": "Headline",
"Teaser": "Teaser",
"Textfields": "Text fields",
"hascontent": "has content",
"Text1": "Text 1",
"Text2": "Text 2",
"TextDetails": "Text Details",
"TextTeaser": "Text Teaser",
"Special": "Special",
"Translatetoolsareavailablefortheshopcatalogonly": "Translate tools are available for the shop catalog only.",
"BCItems": "BC Items (",
"AddItem": "Add Item",
"Retry": "Retry",
"Noitemsinthispage": "No items in this page.",
"Name": "Name",
"ItemIDs": "Item IDs",
"ExtraData": "Extra Data",
"Actions": "Actions",
"CatalogName": "Catalog Name",
"ItemIDssemicolonseparated": "Item IDs (semicolon-separated)",
"Cancel": "Cancel",
"Expandall": "Expand all",
"Collapseall": "Collapse all",
"Newsubpage": "New subpage",
"pages": "pages",
"Sortmode": "Sort mode",
"result": "result",
"Nopagesinthiscategory": "No pages in this category",
"Createapagewiththebuttonorswitchtosortmodetoreorderexistingones": "Create a page with the + button, or switch to sort mode to reorder existing ones.",
"NosubpagesClicktocreateone": "No subpages. Click + to create one.",
"selected": "selected",
"Enable": "Enable",
"Disable": "Disable",
"Delete": "Delete",
"Clear": "Clear",
"root": "root",
"enabled": "enabled",
"items": "items",
"CtrlS": "Ctrl+S",
"save": "save",
"search": "search",
"CtrlK": "Ctrl+K",
"quickadd": "quick add",
"OFF": "OFF",
"Edit": "Edit",
"CopyID": "Copy ID",
"Addsubpage": "Add subpage",
"Duplicatepage": "Duplicate page",
"Auto": "Auto",
"Sort": "Sort",
"Use": "Use",
"layout": "layout",
"Duckets": "Duckets",
"Diamonds": "Diamonds",
"Editpage": "Edit page",
"CtrlShiftF": "Ctrl Shift F"
}
},
"helpQuestions": {
"id": {
"page": {
"Edithelpcenterentry": "Edit help-center entry",
"HelpCenter": "← Help Center",
"Error": "Error:",
"Buttoncolor": "Button color",
"Buttonbordercolor": "Button border color",
"Smallbox": "Small box",
"Save": "Save",
"Deleteentry": "Delete entry",
"Newhelpcenterentry": "New help-center entry",
"Create": "Create",
"Pos": "Pos.",
"Button": "Button",
"Newadvertisement": "New advertisement",
"Advertisements": "← Advertisements",
"navigator_flatcats": "navigator_flatcats",
"Caption": "Caption",
"Captionsave": "Caption (save)",
"Minrank": "Min rank",
"Maxusers": "Max users",
"Cantrade": "Can trade",
"Public": "Public",
"Listtype": "List type",
"navigator_publics": "navigator_publics",
"Publiccat": "Public cat",
"Visible": "Visible"
}
}
},
"themeBuilder": {
"scopeForm": {
"AddScope": "+ Add Scope",
"NewScope": "New Scope",
"Cancel": "Cancel",
"Name": "Name",
"Type": "Type",
"Domain": "Domain",
"Module": "Module",
"Selectmodule": "Select module...",
"RoutePath": "Route Path",
"ParentScope": "Parent Scope",
"Noneinheritsfromglobal": "None (inherits from global)",
"CreateScope": "Create Scope",
"ThemeBuilder": "Theme Builder",
"CreateandmanagescopedthemesfordifferentpartsofyoursiteThemesinheritfromparentscopesonlyoverridewhatyouneed": "Create and manage scoped themes for different parts of your site. Themes inherit from parent scopes — only override what you need.",
"Scopecreated": "Scope created.",
"Scopeupdated": "Scope updated.",
"Scopedeleted": "Scope deleted.",
"Themevaluessaved": "Theme values saved.",
"Scopeduplicated": "Scope duplicated.",
"Selectorcreateascopetostartediting": "Select or create a scope to start editing.",
"OFF": "OFF",
"ThemeScopes": "Theme Scopes",
"NoscopescreatedyetAddonebelow": "No scopes created yet. Add one below.",
"Rename": "Rename"
}
},
"referrals": {
"title": "Παραπομπές",
"subtitle": "Σύστημα προσκλήσεων",
"referralsToday": "Παραπομπές σήμερα",
"referralsTotal": "Σύνολο παραπομπών",
"invitedTotal": "Μετρημένες προσκλήσεις",
"claims": "Ανταμοιβές που τράβηξαν",
"settings": "Ρυθμίσεις ανταμοιβής",
"needed": "Απαιτούμενες παραπομπές",
"rewardAmount": "Ποσό ανταμοιβής",
"rewardCurrency": "Νόμισμα ανταμοιβής",
"blockSameIp": "Απόρριψη παραπομπών που μοιράζονται την τρέχουσα IP του προσκαλούντος",
"save": "Αποθήκευση ρυθμίσεων",
"saving": "Αποθήκευση…",
"saved": "Οι ρυθμίσεις παραπομπών αποθηκεύτηκαν.",
"saveError": "Οι ρυθμίσεις παραπομπών δεν μπόρεσαν να αποθηκευτούν.",
"recent": "Πρόσφατες παραπομπές",
"unavailable": "Τα δεδομένα παραπομπών είναι προσωρινά μη διαθέσιμα.",
"empty": "Δεν υπάρχουν παραπομπές ακόμη.",
"inviter": "Προσκαλών",
"invitee": "Προσκληθείς χρήστης",
"ip": "IP",
"date": "Ημερομηνία"
},
"dailyRewards": {
"title": "Ημερήσιες ανταμοιβές σύνδεσης",
"subtitle": "Πρόγραμμα ημερήσιων ανταμοιβών σύνδεσης",
"enabled": "Κατάσταση λειτουργίας",
"yes": "Ενεργοποιημένο",
"no": "Απενεργοποιημένο",
"scheduleDays": "Ημέρες προγράμματος",
"claimsToday": "Τραβήξεις σήμερα",
"claimsTotal": "Σύνολο τραβηγμάτων",
"status": "Κατάσταση λειτουργίας",
"statusHint": "Όταν απενεργοποιηθεί, η κάρτα ανταμοιβής κρύβεται και οι νέες τραβήξεις απορρίπτονται.",
"disable": "Απενεργοποίηση",
"enable": "Ενεργοποίηση",
"schedule": "Πρόγραμμα ανταμοιβών",
"day": "Ημέρα {day}",
"reward": "Ανταμοιβή",
"amount": "Ποσό",
"actions": "Ενέργειες",
"addDay": "Ημέρα",
"add": "Προσθήκη ημέρας",
"save": "Αποθήκευση",
"saving": "Αποθήκευση…",
"saved": "Το πρόγραμμα ανταμοιβών αποθηκεύτηκε.",
"cancel": "Ακύρωση",
"edit": "Επεξεργασία",
"delete": "Διαγραφή",
"created": "Η ημέρα ανταμοιβής προστέθηκε.",
"updated": "Η ημέρα ανταμοιβής ενημερώθηκε.",
"deleted": "Η ημέρα ανταμοιβής αφαιρέθηκε.",
"saveError": "Η ημέρα ανταμοιβής δεν μπόρεσε να αποθηκευτεί.",
"deleteError": "Η ημέρα ανταμοιβής δεν μπόρεσε να αφαιρεθεί.",
"confirmDeleteTitle": "Αφαίρεση ημέρας ανταμοιβής",
"confirmDeleteBody": "Αυτή η ημέρα ανταμοιβής δεν θα δίνεται πια. Οι προηγούμενες τραβήξεις παραμένουν καταγεγραμμένες."
}
},
"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.",
"dailyReward": "Η ημερήσια ανταμοιβή σου είναι έτοιμη για τράβηγμα"
},
"dailyClaimed": "Η ημερήσια ανταμοιβή τράβηξε — τα λέμε αύριο!",
"dailyErrors": {
"already_claimed": "Έχεις ήδη τραβήξει τη σημερινή ημερήσια ανταμοιβή.",
"disabled": "Οι ημερήσιες ανταμοιβές είναι απενεργοποιημένες αυτή τη στιγμή.",
"bad_config": "Το πρόγραμμα ημερήσιας ανταμοιβής δεν είναι σωστά ρυθμισμένο. Επικοινώνησε με το προσωπικό.",
"ratelimit": "Πάρα πολλές προσπάθειες. Περίμενε μια στιγμή και δοκίμασε ξανά.",
"error": "Η ημερήσια ανταμοιβή δεν μπόρεσε να τραβηχτεί. Δοκίμασε ξανά παρακαλώ."
},
"dailyRewardTitle": "Ημερήσιες ανταμοιβές",
"dailyRewardHint": "Συνδέσου κάθε μέρα και τράβα την ανταμοιβή σου — οι σειρές μεγαλώνουν μέχρι τις μεγάλες μέρες.",
"dailyRewardDay": "Ημέρα {day}",
"dailyRewardStreak": "{count, plural, one {Σειρά: # ημέρα} other {Σειρά: # ημέρες}}",
"dailyRewardNextClaim": "Επόμενη τραβήξη: {amount} {currency}",
"dailyRewardTomorrow": "Αύριο: {amount} {currency}",
"dailyRewardClaim": "Τράβα ημερήσια ανταμοιβή",
"dailyRewardClaimedToday": "Τράβηξες σήμερα — γύρνα αύριο για την επόμενη ανταμοιβή.",
"dailyRewardDisabled": "Οι ημερήσιες ανταμοιβές είναι απενεργοποιημένες αυτή τη στιγμή. Μπορείς να εξερευνήσεις το ξενοδοχείο.",
"dailyRewardUnavailable": "Το πρόγραμμα ημερήσιας ανταμοιβής δεν μπόρεσε να φορτωθεί. Δοκίμασε ξανά παρακαλώ."
},
"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",
"routes": {
"themeManager": {
"title": "Theme manager",
"description": "Save, switch, import, export, and publish custom hotel themes (survive updates)",
"currentThemeTitle": "Current theme",
"currentThemeHint": "The palette and background being served to your visitors right now.",
"saveLabel": "Save theme",
"savePlaceholder": "Theme name (e.g. Summer Gold)",
"exportCurrent": "Export",
"savedThemesTitle": "Saved themes",
"savedThemesHint": "Apply any saved theme anytime. Saved themes are stored in the database, so they keep working after CMS updates.",
"noThemes": "No saved themes yet — save one above.",
"active": "Active",
"apply": "Apply",
"export": "Export",
"rename": "Rename",
"renameSave": "OK",
"delete": "Delete",
"deleteConfirm": "Delete theme \"{name}\"?",
"importTitle": "Import a theme",
"importHint": "Upload a `.atom-theme.json` file exported here, or a theme exported from the Theme Builder.",
"importNameLabel": "Name",
"importNamePlaceholder": "Optional override",
"importFileLabel": "Theme file",
"importApplyLabel": "Apply after import",
"importButton": "Import",
"invalidFile": "That file isn't a valid JSON theme.",
"presetsTitle": "Quick start presets",
"backgroundTitle": "Background",
"backgroundHint": "Set a custom background image for the public site using any image URL, or upload one.",
"backgroundPreviewLabel": "Preview",
"backgroundUrlLabel": "Image URL",
"backgroundPositionLabel": "Position",
"backgroundSizeLabel": "Size",
"backgroundRepeatLabel": "Repeat",
"applyBackground": "Apply background",
"uploadButton": "Upload image…",
"clearBackground": "Remove background",
"backgroundEffectLabel": "Effect",
"backgroundEffectHint": "Animate the public background with a gentle, theme-matched layer (aurora uses your primary/accent colors).",
"backgroundEffect_none": "None (plain background)",
"backgroundEffect_aurora": "Aurora glow",
"backgroundEffect_particles": "Floating particles",
"backgroundEffect_aurora-particles": "Aurora + particles",
"backgroundEffectPreview": "Effect: {effect} — shown behind the public site.",
"backgroundOverlayLabel": "Overlay tint",
"backgroundOverlayOpacityLabel": "Overlay strength",
"notice": {
"saved": "Theme saved.",
"applied": "Theme applied.",
"renamed": "Theme renamed.",
"deleted": "Theme deleted.",
"imported": "Theme imported.",
"preset": "Preset applied.",
"background": "Background updated.",
"importError": "That file couldn't be imported. It may be too large or not a theme export.",
"backgroundError": "The image couldn't be uploaded. Use a PNG, JPEG, GIF, or WebP up to 10MB."
}
},
"nitroCleanup": {
"title": "Nitro cleanup",
"description": "Scan and remove fake, broken, and orphaned furni asset files"
}
}
},
"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}"
},
"developers": {
"page": {
"Bearer": "🔒 Bearer",
"Session": "🔒 Session",
"Public": "Public",
"Allendpointsliveunder": "All endpoints live under",
"api": "/api",
"andreturnJSONMostreadendpointsareopenahandfulthattouchyouraccountneedatokenBrowsethegroupsbeloweachrowshowsthemethodpathwhatitdoesandwhetheritneedsauthentication": "and return JSON. Most read endpoints are open; a handful that touch your account need a token. Browse the groups below — each row shows the method, path, what it does and whether it needs authentication.",
"Mostreadsare": "Most reads are",
"open": "open",
"andneednocredentialsEndpointsmarked": "and need no credentials. Endpoints marked",
"requireapersonalaccesstokensentintherequestheader": "require a personal access token sent in the request header:",
"AuthorizationBeareryourtoken": "Authorization: Bearer '<your-token>'",
"Togetatokensignintothewebsiteand": "To get a token, sign in to the website and",
"POST": "POST",
"apitokens": "/api/tokens",
"theplaintexttokenisreturned": "— the plaintext token is returned",
"once": "once",
"andnevershownagainsostoreitsafelyYoucanlistandrevokeyourtokensat": "and never shown again, so store it safely. You can list and revoke your tokens at",
"apimetokens": "/api/me/tokens",
"Thesetokenmanagementendpointsaremarked": ". These token-management endpoints are marked",
"becausetheyuseyoursignedinwebsessionratherthanaBearertoken": "because they use your signed-in web session rather than a Bearer token.",
"TokensaretiedtoyouraccountBearerendpointsonlyeverreturnormodifyyourowndatayourticketsyourshoutsyourDJpoints": "Tokens are tied to your account: Bearer endpoints only ever return or modify your own data (your tickets, your shouts, your DJ points).",
"Enter": "Enter",
"Staff": "Staff",
"Modpanel": "Mod panel",
"Adminpanel": "Admin panel",
"Commandocentrum": "Commandocentrum",
"Logs": "Logs",
"Logogenerator": "Logo generator",
"Mydashboard": "My dashboard",
"Myprofile": "My profile",
"Usersettings": "User settings",
"Twofactor": "Two-factor",
"Loginactivity": "Login activity",
"Friendrequests": "Friend requests (",
"more": "more",
"Logout": "Logout",
"EpicNextInfo": "EpicNext Info",
"CMSinformation": "CMS information",
"EpicNext": "EpicNext",
"ModernNextjsCMS": "Modern Next.js CMS",
"AmodernweblayerforthehotelcommunityfocusedonfastnavigationcleanadministrationandacoherentEpicNextexperience": "A modern web layer for the hotel community, focused on fast navigation, clean administration, and a coherent EpicNext experience."
}
},
"public": {
"logoGenerator": {
"Hotelname": "Hotel name",
"Searchfont": "Search font",
"Font": "Font —",
"DownloadPNG": "⬇️ Download PNG",
"Failedtoloadfontsprite": "Failed to load font sprite.",
"Notethisfontdoesnothavecharacters": "Note: this font does not have characters:",
"Loadingfont": "Loading font…",
"Username": "Username",
"Password": "Password",
"2FACode": "2FA Code",
"Pleasewait": "Please wait...",
"Watching": "Watching",
"Watch": "Watch",
"AaTextpreview": "Aa Text preview",
"Usereadablecolor": "Use readable color →",
"Navbarkleur": "Navbar kleur",
"Search": "Search",
"Atom": "Atom",
"Nolanguagesfound": "No languages found",
"Hotel": "Hotel",
"Browse": "Browse",
"MediaLibrary": "Media Library",
"Close": "Close",
"Loading": "Loading…",
"NoimagesyetUploadoneabove": "No images yet. Upload one above.",
"totalpage": "total · page",
"Previous": "Previous",
"Next": "Next",
"OnlineNow": "Online Now",
"users": "users",
"Nousersonline": "No users online",
"CSV": "CSV",
"CtrlK": "Ctrl/⌘ K",
"Cancel": "Cancel",
"sprite": "· sprite",
"Git": "Git:"
}
}
},
"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": "Αρχική",
"reload": "Επαναφόρτωση",
"fullscreen": "Πλήρης οθόνη",
"logout": "Αποσύνδεση",
"onlineUsers": "Χρήστες συνδεδεμένοι",
"emulatorOnline": "Ο εξομοιωτής είναι online",
"emulatorOffline": "Ο εξομοιωτής είναι offline",
"dragToMove": "Σύρετε για μετακίνηση",
"hide": "Απόκρυψη γραμμής",
"fullscreenExit": "Έξοδος από πλήρη οθόνη",
"show": "Εμφάνιση γραμμής",
"emulatorUnknown": "Άγνωστη κατάσταση εξομοιωτή"
},
"admin": {
"studio": {
"nitroCleanup": {
"alreadyRunning": "Μια σάρωση εκτελείται ήδη — συνδέθηκε σε αυτήν.",
"ageUnknown": "ηλικία άγνωστη",
"ageBelow": "< 1η",
"scanButton": "Σάρωση περιουσιών επίπλων",
"scanningAssets": "Σάρωση περιουσιών…",
"cancelButton": "Ακύρωση",
"deleteSelected": "Διαγραφή επιλεγμένων ({count})",
"deleting": "Διαγραφή…",
"redownloadBroken": "Επαναφόρτωση κατεστραμμένων",
"redownloading": "Επαναφόρτωση…",
"autoClean": "Αυτόματος καθαρισμός παλιών ψευδών",
"cleaning": "Καθαρισμός…",
"exportManifest": "Εξαγωγή μανιφέστου",
"exporting": "Εξαγωγή…",
"phaseStems": "Φόρτωση βλαστών επίπλων…",
"phaseReaddir": "Ανάγνωση καταλόγων περιουσιών…",
"phaseValidate": "Επικύρωση πακέτων .nitro…",
"phaseScanning": "Σάρωση…",
"scanProgressFiles": "{count} αρχεία",
"repairProgress": "ok {ok}, απέτυχαν {failed}",
"attachedNotice": "Η σάρωση συνεχίζεται στο παρασκήνιο — τα αποτελέσματα θα εμφανιστούν όταν ολοκληρωθεί.",
"sessionCancelled": "Η σάρωση ακυρώθηκε.",
"onlyOldLabel": "Εμφάνιση μόνο αρχείων παλαιότερων από",
"onlyOldAgeLabel": "Ελάχιστη ηλικία σε ημέρες για εμφάνιση",
"onlyOldToggle": "Απόκρυψη πρόσφατων αρχείων",
"daysLabel": "ημέρες",
"autoAgeLabel": "Ελάχιστη ηλικία σε ημέρες για αυτόματο καθαρισμό",
"loadingResult": "Φόρτωση αποτελέσματος σάρωσης…",
"scannedStat": "αρχεία περιουσιών σαρώθηκαν",
"cachedNotice": "(σε προσωρινή μνήμη — οι κατάλογοι δεν άλλαξαν)",
"fakeStat": "Ψευδή nitro (χωρίς αντίστοιχο στοιχείο)",
"brokenStat": "Κατεστραμμένα nitro (μη αναγνώσιμα)",
"groupEmpty": "Δεν βρέθηκε τίποτα",
"selectedCount": "επιλέχθηκαν {count}",
"copiesBadge": "{count} αντίγραφα",
"groupFakeLabel": "Ψευδή nitro",
"groupFakeDescription": "Αυτά τα αρχεία δεν ταιριάζουν με κανένα στοιχείο στο items_base — υπολείμματα διαγραμμένων ή μετονομασμένων επίπλων.",
"groupBrokenLabel": "Κατεστραμμένα nitro",
"groupBrokenDescription": "Αυτά τα αρχεία ανήκουν σε ένα στοιχείο αλλά δεν μπορούν να αναγνωστούν ως έγκυρο πακέτο Nitro.",
"groupSwfLabel": "Ορφανά SWF",
"groupSwfDescription": "Αρχεία .swf που δεν ταιριάζουν με κανένα στοιχείο στο items_base.",
"groupIconLabel": "Ορφανά εικονίδια",
"groupIconDescription": "Αρχεία εικονιδίων που δεν ταιριάζουν με κανένα στοιχείο στο items_base.",
"warningText": "Η διαγραφή ενός κατεστραμμένου .nitro αφήνει το στοιχείο του στη βάση δεδομένων χωρίς πακέτο — προτιμήστε επαναφόρτωση ή αφήστε τον έλεγχο καταλόγου να το αποκτήσει αργότερα. Οι γραμμές της βάσης δεν αφαιρούνται ποτέ από αυτό το εργαλείο.",
"onlyAssetsTouched": "Αλλάζουν μόνο τα αρχεία περιουσιών — το FurnitureData.json και οι γραμμές της βάσης παραμένουν ανέπαφες.",
"emptyHint": "Σαρώστε κάθε κατάλογο περιουσιών επίπλων για να βρείτε ψευδή και κατεστραμμένα πακέτο nitro καθώς και ορφανά SWF και εικονίδια. Διαγράψτε τα, επαναφορτώστε τα κατεστραμμένα ή καθαρίστε αυτόματα τα παλιά υπολείμματα.",
"noResult": "Κανένα αποτέλεσμα σάρωσης ακόμη — εκτελέστε πρώτα σάρωση περιουσιών επίπλων.",
"scanFailed": "Η σάρωση απέτυχε.",
"confirmDeleteTitle": "Διαγραφή {count} αρχείου(ων);",
"confirmDeleteDescription": "Τα αρχεία θα αφαιρεθούν από κάθε κατάλογο (public + κατοπτρισμένα gamedata). Οι γραμμές της βάσης δεν αλλάζουν ποτέ.",
"confirmDeleteLabel": "Διαγραφή",
"confirmRepairTitle": "Επαναφόρτωση {count} κατεστραμμένου(ων) πακέτου(ων) .nitro;",
"confirmRepairDescription": "Τα πακέτα θα ανακτηθούν ξανά από τις ρυθμισμένες πηγές nitro και θα επικαλύψουν κάθε κατάλογο (public + κατοπτρισμένα gamedata).",
"confirmRepairLabel": "Επαναφόρτωση",
"confirmAutoCleanTitle": "Αυτόματος καθαρισμός ψευδών nitro παλαιότερων από {days} ημέρα(ες);",
"confirmAutoCleanDescription": "Αφαιρούνται μόνο ψευδή αρχεία .nitro (χωρίς αντίστοιχο στοιχείο) παλαιότερα από το όριο. Τα κατεστραμμένα πακέτα και τα πρόσφατα αρχεία δεν αλλάζουν ποτέ.",
"confirmAutoCleanLabel": "Αυτόματος καθαρισμός",
"toastDeletePartial": "Διαγράφηκαν {copies} αντίγραφα, αλλά ορισμένα αρχεία δεν μπόρεσαν να αφαιρεθούν",
"toastDeleteDone": "Διαγράφηκαν {copies} αντίγραφα αρχείων ({deleted} αρχεία)",
"toastRepairDone": "Επιδιορθώθηκαν {count} πακέτα .nitro",
"toastRepairFailed": "Δεν ήταν δυνατή η απόκτηση πακέτου ({failed} απέτυχαν)",
"toastRepairCancelled": "Η επιδιόρθωση ακυρώθηκε",
"toastAutoCleanDone": "Καθαρίστηκαν {deleted} παλιά ψευδή αρχεία .nitro ({copies} αντίγραφα). Παραλείφθηκαν {recent} πρόσφατα + {broken} κατεστραμμένα.",
"toastAutoCleanNothing": "Τίποτα αρκετά παλιό για αφαίρεση (παραλείφθηκαν {recent} πρόσφατα, {broken} κατεστραμμένα)",
"toastManifestDownload": "Το μανιφέστο σάρωσης λήφθηκε",
"gamedataTitle": "Καθαρισμός δεδομένων παιχνιδιού",
"gamedataHint": "Προεπισκόπηση πρώτα: Αυτό ξαναγράφει τα FurnitureData.json, FigureMap.json και FigureData.json. Σε αντίθεση με τα εργαλεία περιουσιών παραπάνω, αφαιρεί γραμμές που δεν αναφέρουν τίποτα — ελέγξτε τους αριθμούς πριν το εκτελέσετε.",
"gamedataScan": "Προεπισκόπηση δεδομένων παιχνιδιού",
"gamedataScanning": "Σάρωση…",
"gamedataRun": "Εκτέλεση επιλεγμένων",
"gamedataRunning": "Καθαρισμός…",
"gamedataNoResult": "Καμία προεπισκόπηση ακόμη — σαρώστε πρώτα τα αρχεία JSON δεδομένων παιχνιδιού.",
"gamedataCount_duplicates": "Διπλότυπα FurnitureData",
"gamedataCount_orphans": "Ορφανά FurnitureData",
"gamedataCount_figureMap": "Προβλήματα FigureMap",
"gamedataCount_figureData": "Αχρησιμοποιητό FigureData",
"gamedataPass_dedupeFurnitureData": "Απομάκρυνση διπλοτύπων FurnitureData",
"gamedataPassDesc_dedupeFurnitureData": "Αφαιρεί επαναλαμβανόμενα classnames μέσα σε μία ενότητα, διατηρώντας την καταχώρηση με την υψηλότερη αναθεώρηση.",
"gamedataPass_cleanFurnitureData": "Καθαρισμός FurnitureData",
"gamedataPassDesc_cleanFurnitureData": "Αφαιρεί καταχωρήσεις των οποίων το πακέτο .nitro λείπει από κάθε κατάλογο.",
"gamedataPass_cleanFigureMap": "Καθαρισμός FigureMap",
"gamedataPassDesc_cleanFigureMap": "Αφαιρεί μέρη που αναφέρονται σε ανύπαρκτο σύνολο στο FigureData, καθώς και ακριβή διπλότυπα.",
"gamedataPass_cleanFigureData": "Καθαρισμός FigureData",
"gamedataPassDesc_cleanFigureData": "Αφαιρεί σύνολα στα οποία δεν αναφέρεται κανένα μέρος FigureMap, έπειτα παλέτες που δεν χρησιμοποιεί κανένας τύπος συνόλου. Πρέπει να εκτελεστεί μετά τον Καθαρισμό FigureMap.",
"gamedataNothingSelected": "Επιλέξτε τουλάχιστον ένα βήμα καθαρισμού",
"gamedataConfirmTitle": "Επανεγγραφή αρχείων JSON δεδομένων παιχνιδιού;",
"gamedataConfirmDescription": "{passes} βήμα(τα) θα εκτελεστούν σε {duplicates} ομάδες διπλοτύπων, {orphans} ορφανές γραμμές, {figureMap} προβλήματα FigureMap και {figureData} αχρησιμοποιητές καταχωρήσεις FigureData. Οι γραμμές αφαιρούνται χωρίς αντίγραφο ασφαλείας — αυτό δεν μπορεί να αναιρεθεί.",
"gamedataConfirmLabel": "Επανεγγραφή αρχείων",
"gamedataDifferingWarning": "Τουλάχιστον ένα διπλότυπο δεν είναι ακριβές αντίγραφο της καταχώρησης που διατηρείται, οπότε η διαγραμμένη γραμμή κρατούσε δεδομένα που δεν έχει ο επιζών.",
"gamedataCrossSectionNote": "{count} classname(s) υπάρχουν τόσο στο roomitemtypes όσο και στο wallitemtypes. Αυτές αναφέρονται μόνο — η αφαίρεση μιας θα άλλαζε τον τύπο ενός στοιχείου.",
"gamedataToastDone": "Ο καθαρισμός δεδομένων παιχνιδιού αφαίρεσε {removed} γραμμές",
"gamedataToastNothing": "Τα δεδομένα παιχνιδιού ήταν ήδη καθαρά",
"gamedataMaxRemovalsLabel": "Μέγ. γραμμές ανά βήμα",
"gamedataMaxRemovalsHint": "Το 0 χρησιμοποιεί την προεπιλογή 500. Ένα βήμα που θα αφαιρούσε περισσότερες σταματά και ρωτά αντί να γράψει.",
"gamedataLimitTitle": "{pass} θα αφαιρούσε {wouldRemove} γραμμές, πάνω από το όριο των {maxRemovals}.",
"gamedataLimitDescription": "Αυτό το βήμα δεν έγραψε τίποτα, οπότε τα αρχεία είναι αμετάβλητα. Ελέγξτε πρώτα τις διαδρομές περιουσιών — ένας λάθος κατάλογος κάνει κάθε γραμμή να φαίνεται ορφανή. Η αύξηση του ορίου είναι ξεχωριστή, σκόπιμη εκτέλεση.",
"gamedataLimitOverride": "Αφαίρεση {wouldRemove} γραμμών ούτως ή άλλως",
"historyTitle": "Ιστορικό αυτόματου καθαρισμού",
"historyScheduled": "προγραμματισμένο",
"historyManual": "χειροκίνητο",
"historyEntry": "Αφαιρέθηκαν {deleted} ({copies} αντίγραφα); παραλείφθηκαν {recent} πρόσφατα και {broken} κατεστραμμένα",
"historyErrors": "{count} σφάλματα"
},
"importDiagnostics": {
"attempts": "Διαγνωστικός έλεγχος αρχείων",
"preliminary": "Προκαταρκτικός έλεγχος διευθύνσεων· το περιεχόμενο ελέγχεται στην εισαγωγή.",
"http": "HTTP {status}",
"network": "Αποτυχία σύνδεσης",
"timeout": "Η πηγή δεν απάντησε εγκαίρως",
"invalidResponse": "Η πηγή επέστρεψε ιστοσελίδα αντί αρχείου",
"available": "Βρέθηκε αρχείο· εκκρεμεί έλεγχος",
"recover": "Επισύναψη πρωτοτύπου και συνέχεια",
"recoveryHint": "Επιλέξτε {file} (έως 50 MB). Ελέγχεται η ταυτότητά του. Επαναλαμβάνονται οι αποτυχίες· οι ολοκληρωμένες εισαγωγές διατηρούνται.",
"attach": "Επιλέξτε το αρχικό αρχείο .nitro",
"working": "Έλεγχος ή συνέχιση...",
"attached": "Επισυνάφθηκε αντίστοιχο αρχείο",
"resume": "Συνέχιση αποτυχημένων εισαγωγών με το αρχείο",
"invalidFile": "Επιλέξτε αντίστοιχο αρχικό .nitro έως 50 MB και δοκιμάστε ξανά.",
"resumeError": "Ανανεώστε το ιστορικό και χρησιμοποιήστε την τελευταία προσπάθεια· ελέγξτε το αρχείο και ξαναδοκιμάστε.",
"mismatchedFile": "Αυτό το αρχείο ανήκει σε άλλο έπιπλο.",
"alreadyStarted": "Η ανάκτηση ξεκίνησε ήδη. Ανανεώστε το ιστορικό και χρησιμοποιήστε την τελευταία προσπάθεια.",
"notEligible": "Αυτό το στοιχείο δεν επιτρέπει ανάκτηση με συνημμένο."
},
"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"
}
}