feat: public events/polls, friends graph, captcha, SSE hardening, and admin UX
Ship product gaps: register/vote pages, friend add/accept/decline/remove, email verify TTL, captcha on login/forgot, soft-fail user actions, SSE abort/shared client, Commando Centrum error toasts, admin delete for events/polls, and IT/NL i18n fills. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
1 parent
2ff08e5127
commit
ed7db6e048
76 files changed
+4834
-1376
No files matched your search
+153
-10
@@ -7,6 +7,8 @@
|
||||
"staff": "Staff",
|
||||
"rankings": "Rankings",
|
||||
"guilds": "Guilds",
|
||||
"events": "Events",
|
||||
"polls": "Polls",
|
||||
"leaderboards": "Leaderboards",
|
||||
"rareValues": "Rare values",
|
||||
"shop": "Shop",
|
||||
@@ -39,6 +41,15 @@
|
||||
"lightMode": "Light mode",
|
||||
"darkMode": "Dark mode"
|
||||
},
|
||||
"emails": {
|
||||
"verify": {
|
||||
"subject": "Verify your email · {hotel}",
|
||||
"heading": "Verify your email",
|
||||
"body": "Welcome to {hotel}! Confirm this email address to finish setting up your account.",
|
||||
"button": "Verify email",
|
||||
"fallback": "If the button doesn't work, paste this link into your browser:"
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"error": {
|
||||
"code": "Error",
|
||||
@@ -88,7 +99,16 @@
|
||||
"emptySubtitle": "You have no friends added yet",
|
||||
"subtitle": "{count, plural, one {You have # friend} other {You have # friends}}",
|
||||
"emptyState": "Add friends in the hotel and they will show up here.",
|
||||
"noMotto": "No motto"
|
||||
"noMotto": "No motto",
|
||||
"remove": "Remove",
|
||||
"success": {
|
||||
"removed": "Friend removed."
|
||||
},
|
||||
"errors": {
|
||||
"notFound": "That friendship was not found.",
|
||||
"invalid": "Invalid friend.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"title": "Messages",
|
||||
@@ -99,11 +119,22 @@
|
||||
"requestsEmptyState": "No pending friend requests.",
|
||||
"wantsToBeFriend": "wants to be your friend.",
|
||||
"accept": "Accept",
|
||||
"decline": "Decline",
|
||||
"offlineTitle": "Offline messages",
|
||||
"offlineEmptySubtitle": "Your inbox is empty",
|
||||
"offlineSubtitle": "{count, plural, one {# message received} other {# messages received}}",
|
||||
"offlineEmptyState": "You have no offline messages.",
|
||||
"unknownUser": "User #{id}"
|
||||
"unknownUser": "User #{id}",
|
||||
"success": {
|
||||
"accepted": "Friend request accepted.",
|
||||
"declined": "Friend request declined."
|
||||
},
|
||||
"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."
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"noMotto": "No motto",
|
||||
@@ -131,7 +162,26 @@
|
||||
"roomsTitle": "Rooms",
|
||||
"roomsSubtitle": "Rooms they own",
|
||||
"roomsEmpty": "No rooms to show.",
|
||||
"roomUntitled": "Untitled room"
|
||||
"roomUntitled": "Untitled room",
|
||||
"addFriend": "Add friend",
|
||||
"alreadyFriends": "You're friends",
|
||||
"requestPending": "Request pending",
|
||||
"respondInMessages": "Respond in Messages",
|
||||
"success": {
|
||||
"sent": "Friend request sent.",
|
||||
"guestbook": "Guestbook message posted."
|
||||
},
|
||||
"errors": {
|
||||
"self": "You can't send a friend request to yourself.",
|
||||
"alreadyFriends": "You're already friends with this user.",
|
||||
"alreadyPending": "You already sent a friend request to this user.",
|
||||
"incomingPending": "This user already sent you a request — accept or decline it in Messages.",
|
||||
"empty": "Please write a message before posting.",
|
||||
"moderated": "That message was blocked by moderation.",
|
||||
"ratelimit": "You're posting too fast. Please wait a moment and try again.",
|
||||
"invalid": "That request was invalid.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"rankings": {
|
||||
"title": "Rankings",
|
||||
@@ -185,7 +235,18 @@
|
||||
"addComment": "Add a comment",
|
||||
"commentPlaceholder": "Write your comment…",
|
||||
"postComment": "Post comment",
|
||||
"toComment": "to leave a comment."
|
||||
"toComment": "to leave a comment.",
|
||||
"success": {
|
||||
"posted": "Comment posted."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Please write a comment before posting.",
|
||||
"moderated": "That comment was blocked by moderation.",
|
||||
"ratelimit": "You're commenting too fast. Please wait a moment and try again.",
|
||||
"invalid": "Invalid comment.",
|
||||
"notFound": "That article was not found.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"photos": {
|
||||
"title": "Photos",
|
||||
@@ -269,7 +330,10 @@
|
||||
"pinned": "Pinned",
|
||||
"locked": "Locked",
|
||||
"userNumber": "User #{id}",
|
||||
"unknown": "Unknown"
|
||||
"unknown": "Unknown",
|
||||
"success": {
|
||||
"posted": "Thread posted."
|
||||
}
|
||||
},
|
||||
"guildForumNew": {
|
||||
"backToForum": "← Back to forum",
|
||||
@@ -281,7 +345,13 @@
|
||||
"messageLabel": "Message",
|
||||
"messagePlaceholder": "Write your opening post…",
|
||||
"postThread": "Post thread",
|
||||
"cancel": "Cancel"
|
||||
"cancel": "Cancel",
|
||||
"errors": {
|
||||
"invalid": "Subject and message are required.",
|
||||
"notFound": "That guild was not found.",
|
||||
"ratelimit": "You're posting too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"shop": {
|
||||
"title": "Shop",
|
||||
@@ -395,7 +465,16 @@
|
||||
"colStatus": "Status",
|
||||
"colCreated": "Created",
|
||||
"statusOpen": "Open",
|
||||
"statusClosed": "Closed"
|
||||
"statusClosed": "Closed",
|
||||
"success": {
|
||||
"created": "Ticket submitted."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Please fill in a subject and description.",
|
||||
"moderated": "That ticket was blocked by moderation.",
|
||||
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"applyStaff": {
|
||||
"title": "Apply for {hotel} staff",
|
||||
@@ -472,7 +551,68 @@
|
||||
"loginToPost": "Log in to post a shout.",
|
||||
"latestTitle": "Latest shouts",
|
||||
"latestSubtitle": "The most recent messages from listeners",
|
||||
"empty": "No shouts yet. Be the first!"
|
||||
"empty": "No shouts yet. Be the first!",
|
||||
"success": {
|
||||
"posted": "Shout posted."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Please write a message before shouting.",
|
||||
"moderated": "That shout was blocked by moderation.",
|
||||
"ratelimit": "You're shouting too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"events": {
|
||||
"title": "Events",
|
||||
"subtitle": "Upcoming and recent hotel events you can join",
|
||||
"empty": "No events yet.",
|
||||
"back": "← Events",
|
||||
"when": "When",
|
||||
"status": "Status",
|
||||
"statusPublished": "Open",
|
||||
"statusCompleted": "Completed",
|
||||
"registrations": "Registrations",
|
||||
"registered": "{count} registered",
|
||||
"spots": "{count} / {max} spots",
|
||||
"registerTitle": "Register",
|
||||
"registerSubtitle": "Save your spot for this event",
|
||||
"register": "Register for event",
|
||||
"registering": "Registering…",
|
||||
"registerSuccess": "You are registered!",
|
||||
"registerError": "Could not register for this event.",
|
||||
"loginToRegister": "Log in to register for this event.",
|
||||
"alreadyRegistered": "You are already registered.",
|
||||
"eventEnded": "This event has ended.",
|
||||
"eventFull": "This event is full.",
|
||||
"cannotRegister": "Registration is not available.",
|
||||
"prizesTitle": "Prizes",
|
||||
"winnersTitle": "Winners",
|
||||
"unknownUser": "User #{id}"
|
||||
},
|
||||
"polls": {
|
||||
"title": "Polls",
|
||||
"subtitle": "Share your opinion in community polls",
|
||||
"empty": "No polls yet.",
|
||||
"back": "← Polls",
|
||||
"statusActive": "Open",
|
||||
"statusClosed": "Closed",
|
||||
"questionsCount": "{count} questions",
|
||||
"ends": "Ends {date}",
|
||||
"voteTitle": "Cast your vote",
|
||||
"voteSubtitle": "Answer each question below",
|
||||
"submitVote": "Submit vote",
|
||||
"voting": "Submitting…",
|
||||
"voteSuccess": "Thanks for voting!",
|
||||
"voteError": "Could not submit your vote.",
|
||||
"loginToVote": "Log in to vote in this poll.",
|
||||
"alreadyVoted": "You have already voted.",
|
||||
"pollClosed": "This poll is closed.",
|
||||
"cannotVote": "Voting is not available.",
|
||||
"textPlaceholder": "Your answer…",
|
||||
"resultsTitle": "Results",
|
||||
"voteCount": "{count} ({pct}%)",
|
||||
"totalVotes": "{count} total votes",
|
||||
"textResponses": "{count} free-text responses"
|
||||
},
|
||||
"radioContests": {
|
||||
"title": "Radio Contests",
|
||||
@@ -627,7 +767,9 @@
|
||||
"createOne": "Create one",
|
||||
"forgotPassword": "Forgot password?",
|
||||
"errorInvalidCredentials": "Invalid username or password",
|
||||
"errorInvalid2fa": "Invalid 2FA code"
|
||||
"errorInvalid2fa": "Invalid 2FA code",
|
||||
"errorUnverified": "Please verify your email before signing in.",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again."
|
||||
},
|
||||
"register": {
|
||||
"title": "Create account",
|
||||
@@ -663,7 +805,8 @@
|
||||
"sentNotice": "If that email is registered, a reset link has been sent. Check your inbox.",
|
||||
"emailPlaceholder": "Your email",
|
||||
"sendResetLink": "Send reset link",
|
||||
"backToLogin": "Back to login"
|
||||
"backToLogin": "Back to login",
|
||||
"errorCaptcha": "Captcha verification failed. Please try again."
|
||||
},
|
||||
"reset": {
|
||||
"title": "Set a new password",
|
||||
|
||||
+174
-23
@@ -7,6 +7,8 @@
|
||||
"staff": "Staff",
|
||||
"rankings": "Classifiche",
|
||||
"guilds": "Gruppi",
|
||||
"events": "Eventi",
|
||||
"polls": "Sondaggi",
|
||||
"leaderboards": "Classifiche",
|
||||
"rareValues": "Valori rari",
|
||||
"shop": "Negozio",
|
||||
@@ -39,6 +41,15 @@
|
||||
"lightMode": "Tema chiaro",
|
||||
"darkMode": "Tema scuro"
|
||||
},
|
||||
"emails": {
|
||||
"verify": {
|
||||
"subject": "Verifica la tua email · {hotel}",
|
||||
"heading": "Verifica la tua email",
|
||||
"body": "Benvenuto su {hotel}! Conferma questo indirizzo email per completare la creazione del tuo account.",
|
||||
"button": "Verifica email",
|
||||
"fallback": "Se il pulsante non funziona, incolla questo link nel browser:"
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"error": {
|
||||
"code": "Errore",
|
||||
@@ -88,7 +99,16 @@
|
||||
"emptySubtitle": "Non hai ancora aggiunto nessun amico",
|
||||
"subtitle": "{count, plural, one {Hai # amico} other {Hai # amici}}",
|
||||
"emptyState": "Aggiungi amici nell'hotel e compariranno qui.",
|
||||
"noMotto": "Nessun motto"
|
||||
"noMotto": "Nessun motto",
|
||||
"remove": "Rimuovi",
|
||||
"success": {
|
||||
"removed": "Amico rimosso."
|
||||
},
|
||||
"errors": {
|
||||
"notFound": "Quell'amicizia non è stata trovata.",
|
||||
"invalid": "Amico non valido.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"title": "Messaggi",
|
||||
@@ -99,11 +119,22 @@
|
||||
"requestsEmptyState": "Nessuna richiesta di amicizia in sospeso.",
|
||||
"wantsToBeFriend": "vuole essere tuo amico.",
|
||||
"accept": "Accetta",
|
||||
"decline": "Rifiuta",
|
||||
"offlineTitle": "Messaggi offline",
|
||||
"offlineEmptySubtitle": "La tua casella è vuota",
|
||||
"offlineSubtitle": "{count, plural, one {# messaggio ricevuto} other {# messaggi ricevuti}}",
|
||||
"offlineEmptyState": "Non hai messaggi offline.",
|
||||
"unknownUser": "Utente #{id}"
|
||||
"unknownUser": "Utente #{id}",
|
||||
"success": {
|
||||
"accepted": "Richiesta di amicizia accettata.",
|
||||
"declined": "Richiesta di amicizia rifiutata."
|
||||
},
|
||||
"errors": {
|
||||
"notFound": "Quella richiesta di amicizia non è stata trovata.",
|
||||
"unauthorized": "Non puoi gestire questa richiesta di amicizia.",
|
||||
"invalid": "Richiesta di amicizia non valida.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"noMotto": "Nessun motto",
|
||||
@@ -131,7 +162,26 @@
|
||||
"roomsTitle": "Stanze",
|
||||
"roomsSubtitle": "Le stanze che possiede",
|
||||
"roomsEmpty": "Nessuna stanza da mostrare.",
|
||||
"roomUntitled": "Stanza senza nome"
|
||||
"roomUntitled": "Stanza senza nome",
|
||||
"addFriend": "Aggiungi amico",
|
||||
"alreadyFriends": "Siete amici",
|
||||
"requestPending": "Richiesta in sospeso",
|
||||
"respondInMessages": "Rispondi nei Messaggi",
|
||||
"success": {
|
||||
"sent": "Richiesta di amicizia inviata.",
|
||||
"guestbook": "Messaggio in bacheca pubblicato."
|
||||
},
|
||||
"errors": {
|
||||
"self": "Non puoi inviarti una richiesta di amicizia.",
|
||||
"alreadyFriends": "Siete già amici.",
|
||||
"alreadyPending": "Hai già inviato una richiesta a questo utente.",
|
||||
"incomingPending": "Questo utente ti ha già inviato una richiesta — accettala o rifiutala nei Messaggi.",
|
||||
"empty": "Scrivi un messaggio prima di pubblicare.",
|
||||
"moderated": "Quel messaggio è stato bloccato dalla moderazione.",
|
||||
"ratelimit": "Stai pubblicando troppo in fretta. Attendi un momento e riprova.",
|
||||
"invalid": "Richiesta non valida.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"rankings": {
|
||||
"title": "Classifica",
|
||||
@@ -185,7 +235,18 @@
|
||||
"addComment": "Aggiungi un commento",
|
||||
"commentPlaceholder": "Scrivi il tuo commento…",
|
||||
"postComment": "Pubblica commento",
|
||||
"toComment": "per lasciare un commento."
|
||||
"toComment": "per lasciare un commento.",
|
||||
"success": {
|
||||
"posted": "Commento pubblicato."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Scrivi un commento prima di pubblicare.",
|
||||
"moderated": "Quel commento è stato bloccato dalla moderazione.",
|
||||
"ratelimit": "Stai commentando troppo in fretta. Attendi un momento e riprova.",
|
||||
"invalid": "Commento non valido.",
|
||||
"notFound": "Articolo non trovato.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"photos": {
|
||||
"title": "Foto",
|
||||
@@ -269,7 +330,10 @@
|
||||
"pinned": "In evidenza",
|
||||
"locked": "Bloccata",
|
||||
"userNumber": "Utente #{id}",
|
||||
"unknown": "Sconosciuto"
|
||||
"unknown": "Sconosciuto",
|
||||
"success": {
|
||||
"posted": "Discussione pubblicata."
|
||||
}
|
||||
},
|
||||
"guildForumNew": {
|
||||
"backToForum": "← Torna al forum",
|
||||
@@ -281,7 +345,13 @@
|
||||
"messageLabel": "Messaggio",
|
||||
"messagePlaceholder": "Scrivi il tuo primo messaggio…",
|
||||
"postThread": "Pubblica discussione",
|
||||
"cancel": "Annulla"
|
||||
"cancel": "Annulla",
|
||||
"errors": {
|
||||
"invalid": "Oggetto e messaggio sono obbligatori.",
|
||||
"notFound": "Gilda non trovata.",
|
||||
"ratelimit": "Stai pubblicando troppo in fretta. Attendi un momento e riprova.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"shop": {
|
||||
"title": "Negozio",
|
||||
@@ -395,7 +465,16 @@
|
||||
"colStatus": "Stato",
|
||||
"colCreated": "Creato",
|
||||
"statusOpen": "Aperto",
|
||||
"statusClosed": "Chiuso"
|
||||
"statusClosed": "Chiuso",
|
||||
"success": {
|
||||
"created": "Ticket inviato."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Compila oggetto e descrizione.",
|
||||
"moderated": "Quel ticket è stato bloccato dalla moderazione.",
|
||||
"ratelimit": "Stai inviando troppo in fretta. Attendi un momento e riprova.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"applyStaff": {
|
||||
"title": "Candidati per lo staff di {hotel}",
|
||||
@@ -472,7 +551,68 @@
|
||||
"loginToPost": "Accedi per pubblicare un saluto.",
|
||||
"latestTitle": "Ultimi saluti",
|
||||
"latestSubtitle": "I messaggi più recenti degli ascoltatori",
|
||||
"empty": "Ancora nessun saluto. Sii il primo!"
|
||||
"empty": "Ancora nessun saluto. Sii il primo!",
|
||||
"success": {
|
||||
"posted": "Saluto pubblicato."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Scrivi un messaggio prima di inviare.",
|
||||
"moderated": "Quel saluto è stato bloccato dalla moderazione.",
|
||||
"ratelimit": "Stai inviando troppo in fretta. Attendi un momento e riprova.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"events": {
|
||||
"title": "Eventi",
|
||||
"subtitle": "Eventi dell'hotel in arrivo e recenti a cui puoi partecipare",
|
||||
"empty": "Ancora nessun evento.",
|
||||
"back": "← Eventi",
|
||||
"when": "Quando",
|
||||
"status": "Stato",
|
||||
"statusPublished": "Aperto",
|
||||
"statusCompleted": "Completato",
|
||||
"registrations": "Iscrizioni",
|
||||
"registered": "{count} iscritti",
|
||||
"spots": "{count} / {max} posti",
|
||||
"registerTitle": "Iscriviti",
|
||||
"registerSubtitle": "Prenota il tuo posto per questo evento",
|
||||
"register": "Iscriviti all'evento",
|
||||
"registering": "Iscrizione in corso…",
|
||||
"registerSuccess": "Sei iscritto!",
|
||||
"registerError": "Impossibile iscriversi a questo evento.",
|
||||
"loginToRegister": "Accedi per iscriverti a questo evento.",
|
||||
"alreadyRegistered": "Sei già iscritto.",
|
||||
"eventEnded": "Questo evento è terminato.",
|
||||
"eventFull": "Questo evento è al completo.",
|
||||
"cannotRegister": "Le iscrizioni non sono disponibili.",
|
||||
"prizesTitle": "Premi",
|
||||
"winnersTitle": "Vincitori",
|
||||
"unknownUser": "Utente #{id}"
|
||||
},
|
||||
"polls": {
|
||||
"title": "Sondaggi",
|
||||
"subtitle": "Condividi la tua opinione nei sondaggi della community",
|
||||
"empty": "Ancora nessun sondaggio.",
|
||||
"back": "← Sondaggi",
|
||||
"statusActive": "Aperto",
|
||||
"statusClosed": "Chiuso",
|
||||
"questionsCount": "{count} domande",
|
||||
"ends": "Termina {date}",
|
||||
"voteTitle": "Esprimi il voto",
|
||||
"voteSubtitle": "Rispondi a ogni domanda qui sotto",
|
||||
"submitVote": "Invia voto",
|
||||
"voting": "Invio in corso…",
|
||||
"voteSuccess": "Grazie per aver votato!",
|
||||
"voteError": "Impossibile inviare il voto.",
|
||||
"loginToVote": "Accedi per votare in questo sondaggio.",
|
||||
"alreadyVoted": "Hai già votato.",
|
||||
"pollClosed": "Questo sondaggio è chiuso.",
|
||||
"cannotVote": "Il voto non è disponibile.",
|
||||
"textPlaceholder": "La tua risposta…",
|
||||
"resultsTitle": "Risultati",
|
||||
"voteCount": "{count} ({pct}%)",
|
||||
"totalVotes": "{count} voti totali",
|
||||
"textResponses": "{count} risposte libere"
|
||||
},
|
||||
"radioContests": {
|
||||
"title": "Concorsi radio",
|
||||
@@ -591,7 +731,9 @@
|
||||
"createOne": "Creane uno",
|
||||
"forgotPassword": "Password dimenticata?",
|
||||
"errorInvalidCredentials": "Nome utente o password non validi",
|
||||
"errorInvalid2fa": "Codice 2FA non valido"
|
||||
"errorInvalid2fa": "Codice 2FA non valido",
|
||||
"errorUnverified": "Verifica la tua email prima di accedere.",
|
||||
"errorCaptcha": "Verifica captcha non riuscita. Riprova."
|
||||
},
|
||||
"register": {
|
||||
"title": "Crea un account",
|
||||
@@ -627,7 +769,8 @@
|
||||
"sentNotice": "Se l'indirizzo è registrato, ti abbiamo inviato un link per il reset. Controlla la posta in arrivo.",
|
||||
"emailPlaceholder": "La tua email",
|
||||
"sendResetLink": "Invia link di reset",
|
||||
"backToLogin": "Torna all'accesso"
|
||||
"backToLogin": "Torna all'accesso",
|
||||
"errorCaptcha": "Verifica captcha non riuscita. Riprova."
|
||||
},
|
||||
"reset": {
|
||||
"title": "Imposta una nuova password",
|
||||
@@ -2471,19 +2614,27 @@
|
||||
},
|
||||
"import": {
|
||||
"title": "Import",
|
||||
"subtitle": "Import assets from external sources into your hotel.",
|
||||
"badges": "Badges",
|
||||
"badgesDescription": "Import and manage badge assets from external sources.",
|
||||
"furni": "Furni",
|
||||
"furniDescription": "Import furniture definitions, SWF files, and icons.",
|
||||
"clothing": "Clothing",
|
||||
"clothingDescription": "Import clothing and wearables for avatars.",
|
||||
"effects": "Effects",
|
||||
"effectsDescription": "Import avatar effects and animations.",
|
||||
"pets": "Pets",
|
||||
"petsDescription": "Import pet data and icons.",
|
||||
"clone": "Clone",
|
||||
"cloneDescription": "Clone existing items from one source to another."
|
||||
"subtitle": "Importa asset da fonti esterne nel tuo hotel.",
|
||||
"badges": "Distintivi",
|
||||
"badgesDescription": "Importa e gestisci asset dei distintivi da fonti esterne.",
|
||||
"furni": "Mobili",
|
||||
"furniDescription": "Importa definizioni mobili, file SWF e icone.",
|
||||
"clothing": "Abbigliamento",
|
||||
"clothingDescription": "Importa abiti e indossabili per gli avatar.",
|
||||
"effects": "Effetti",
|
||||
"effectsDescription": "Importa effetti e animazioni avatar.",
|
||||
"pets": "Animali",
|
||||
"petsDescription": "Importa dati e icone degli animali.",
|
||||
"clone": "Clona",
|
||||
"cloneDescription": "Clona elementi esistenti da una fonte all'altra.",
|
||||
"upload": "Carica .nitro",
|
||||
"uploadDescription": "Carica bundle .nitro e icone direttamente, senza conversione SWF.",
|
||||
"sync": "Sincronizzazione automatica",
|
||||
"syncDescription": "Importa automaticamente i mobili mancanti da tutte le fonti configurate.",
|
||||
"repairIcons": "Ripara icone",
|
||||
"repairIconsDescription": "Scarica le icone mancanti per i mobili già presenti nel database.",
|
||||
"audit": "Audit catalogo",
|
||||
"auditDescription": "Scansiona il catalogo per voci mancanti, riferimenti rotti ed elementi assenti dalle fonti clone."
|
||||
},
|
||||
"translations": {
|
||||
"title": "Translations",
|
||||
|
||||
+210
-22
@@ -7,6 +7,8 @@
|
||||
"staff": "Team",
|
||||
"rankings": "Rankings",
|
||||
"guilds": "Gildes",
|
||||
"events": "Evenementen",
|
||||
"polls": "Peilingen",
|
||||
"leaderboards": "Klassementen",
|
||||
"rareValues": "Zeldzame waarden",
|
||||
"shop": "Winkel",
|
||||
@@ -39,6 +41,15 @@
|
||||
"lightMode": "Lichte modus",
|
||||
"darkMode": "Donkere modus"
|
||||
},
|
||||
"emails": {
|
||||
"verify": {
|
||||
"subject": "Verifieer je e-mail · {hotel}",
|
||||
"heading": "Verifieer je e-mail",
|
||||
"body": "Welkom bij {hotel}! Bevestig dit e-mailadres om je account af te ronden.",
|
||||
"button": "E-mail verifiëren",
|
||||
"fallback": "Werkt de knop niet? Plak dan deze link in je browser:"
|
||||
}
|
||||
},
|
||||
"pages": {
|
||||
"error": {
|
||||
"code": "Fout",
|
||||
@@ -88,7 +99,16 @@
|
||||
"emptySubtitle": "Je hebt nog geen vrienden toegevoegd",
|
||||
"subtitle": "{count, plural, one {Je hebt # vriend} other {Je hebt # vrienden}}",
|
||||
"emptyState": "Voeg vrienden toe in het hotel en ze verschijnen hier.",
|
||||
"noMotto": "Geen motto"
|
||||
"noMotto": "Geen motto",
|
||||
"remove": "Verwijderen",
|
||||
"success": {
|
||||
"removed": "Vriend verwijderd."
|
||||
},
|
||||
"errors": {
|
||||
"notFound": "Die vriendschap is niet gevonden.",
|
||||
"invalid": "Ongeldige vriend.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"title": "Berichten",
|
||||
@@ -99,11 +119,22 @@
|
||||
"requestsEmptyState": "Geen openstaande vriendschapsverzoeken.",
|
||||
"wantsToBeFriend": "wil je vriend zijn.",
|
||||
"accept": "Accepteren",
|
||||
"decline": "Weigeren",
|
||||
"offlineTitle": "Offline berichten",
|
||||
"offlineEmptySubtitle": "Je inbox is leeg",
|
||||
"offlineSubtitle": "{count, plural, one {# bericht ontvangen} other {# berichten ontvangen}}",
|
||||
"offlineEmptyState": "Je hebt geen offline berichten.",
|
||||
"unknownUser": "Gebruiker #{id}"
|
||||
"unknownUser": "Gebruiker #{id}",
|
||||
"success": {
|
||||
"accepted": "Vriendschapsverzoek geaccepteerd.",
|
||||
"declined": "Vriendschapsverzoek geweigerd."
|
||||
},
|
||||
"errors": {
|
||||
"notFound": "Dat vriendschapsverzoek is niet gevonden.",
|
||||
"unauthorized": "Je kunt dit vriendschapsverzoek niet behandelen.",
|
||||
"invalid": "Ongeldig vriendschapsverzoek.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"profile": {
|
||||
"noMotto": "Geen motto",
|
||||
@@ -131,7 +162,26 @@
|
||||
"roomsTitle": "Kamers",
|
||||
"roomsSubtitle": "Kamers die ze bezitten",
|
||||
"roomsEmpty": "Geen kamers om te tonen.",
|
||||
"roomUntitled": "Naamloze kamer"
|
||||
"roomUntitled": "Naamloze kamer",
|
||||
"addFriend": "Vriend toevoegen",
|
||||
"alreadyFriends": "Jullie zijn vrienden",
|
||||
"requestPending": "Verzoek in behandeling",
|
||||
"respondInMessages": "Reageer in Berichten",
|
||||
"success": {
|
||||
"sent": "Vriendschapsverzoek verzonden.",
|
||||
"guestbook": "Gastenboekbericht geplaatst."
|
||||
},
|
||||
"errors": {
|
||||
"self": "Je kunt jezelf geen vriendschapsverzoek sturen.",
|
||||
"alreadyFriends": "Jullie zijn al vrienden.",
|
||||
"alreadyPending": "Je hebt deze gebruiker al een verzoek gestuurd.",
|
||||
"incomingPending": "Deze gebruiker heeft jou al een verzoek gestuurd — accepteer of weiger het in Berichten.",
|
||||
"empty": "Schrijf een bericht voordat je plaatst.",
|
||||
"moderated": "Dat bericht is geblokkeerd door moderatie.",
|
||||
"ratelimit": "Je plaatst te snel. Wacht even en probeer opnieuw.",
|
||||
"invalid": "Ongeldig verzoek.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"rankings": {
|
||||
"title": "Rankings",
|
||||
@@ -185,7 +235,18 @@
|
||||
"addComment": "Reactie toevoegen",
|
||||
"commentPlaceholder": "Schrijf je reactie…",
|
||||
"postComment": "Reactie plaatsen",
|
||||
"toComment": "om een reactie achter te laten."
|
||||
"toComment": "om een reactie achter te laten.",
|
||||
"success": {
|
||||
"posted": "Reactie geplaatst."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Schrijf een reactie voordat je plaatst.",
|
||||
"moderated": "Die reactie is geblokkeerd door moderatie.",
|
||||
"ratelimit": "Je reageert te snel. Wacht even en probeer opnieuw.",
|
||||
"invalid": "Ongeldige reactie.",
|
||||
"notFound": "Dat artikel is niet gevonden.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"photos": {
|
||||
"title": "Foto's",
|
||||
@@ -269,7 +330,10 @@
|
||||
"pinned": "Vastgepind",
|
||||
"locked": "Gesloten",
|
||||
"userNumber": "Gebruiker #{id}",
|
||||
"unknown": "Onbekend"
|
||||
"unknown": "Onbekend",
|
||||
"success": {
|
||||
"posted": "Discussie geplaatst."
|
||||
}
|
||||
},
|
||||
"guildForumNew": {
|
||||
"backToForum": "← Terug naar forum",
|
||||
@@ -281,7 +345,13 @@
|
||||
"messageLabel": "Bericht",
|
||||
"messagePlaceholder": "Schrijf je openingsbericht…",
|
||||
"postThread": "Discussie plaatsen",
|
||||
"cancel": "Annuleren"
|
||||
"cancel": "Annuleren",
|
||||
"errors": {
|
||||
"invalid": "Onderwerp en bericht zijn verplicht.",
|
||||
"notFound": "Dat gilde is niet gevonden.",
|
||||
"ratelimit": "Je plaatst te snel. Wacht even en probeer opnieuw.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"shop": {
|
||||
"title": "Winkel",
|
||||
@@ -395,7 +465,16 @@
|
||||
"colStatus": "Status",
|
||||
"colCreated": "Aangemaakt",
|
||||
"statusOpen": "Open",
|
||||
"statusClosed": "Gesloten"
|
||||
"statusClosed": "Gesloten",
|
||||
"success": {
|
||||
"created": "Ticket ingediend."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Vul een onderwerp en beschrijving in.",
|
||||
"moderated": "Dat ticket is geblokkeerd door moderatie.",
|
||||
"ratelimit": "Je dient te snel in. Wacht even en probeer opnieuw.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"applyStaff": {
|
||||
"title": "Solliciteer voor {hotel} team",
|
||||
@@ -472,7 +551,68 @@
|
||||
"loginToPost": "Log in om een shout te plaatsen.",
|
||||
"latestTitle": "Laatste shouts",
|
||||
"latestSubtitle": "De meest recente berichten van luisteraars",
|
||||
"empty": "Nog geen shouts. Wees de eerste!"
|
||||
"empty": "Nog geen shouts. Wees de eerste!",
|
||||
"success": {
|
||||
"posted": "Shout geplaatst."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Schrijf een bericht voordat je shouwt.",
|
||||
"moderated": "Die shout is geblokkeerd door moderatie.",
|
||||
"ratelimit": "Je shout te snel. Wacht even en probeer opnieuw.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"events": {
|
||||
"title": "Evenementen",
|
||||
"subtitle": "Aankomende en recente hotelevenementen waaraan je kunt meedoen",
|
||||
"empty": "Nog geen evenementen.",
|
||||
"back": "← Evenementen",
|
||||
"when": "Wanneer",
|
||||
"status": "Status",
|
||||
"statusPublished": "Open",
|
||||
"statusCompleted": "Afgerond",
|
||||
"registrations": "Inschrijvingen",
|
||||
"registered": "{count} ingeschreven",
|
||||
"spots": "{count} / {max} plaatsen",
|
||||
"registerTitle": "Inschrijven",
|
||||
"registerSubtitle": "Reserveer je plek voor dit evenement",
|
||||
"register": "Inschrijven voor evenement",
|
||||
"registering": "Bezig met inschrijven…",
|
||||
"registerSuccess": "Je bent ingeschreven!",
|
||||
"registerError": "Inschrijven voor dit evenement is mislukt.",
|
||||
"loginToRegister": "Log in om je in te schrijven voor dit evenement.",
|
||||
"alreadyRegistered": "Je bent al ingeschreven.",
|
||||
"eventEnded": "Dit evenement is afgelopen.",
|
||||
"eventFull": "Dit evenement is vol.",
|
||||
"cannotRegister": "Inschrijven is niet beschikbaar.",
|
||||
"prizesTitle": "Prijzen",
|
||||
"winnersTitle": "Winnaars",
|
||||
"unknownUser": "Gebruiker #{id}"
|
||||
},
|
||||
"polls": {
|
||||
"title": "Peilingen",
|
||||
"subtitle": "Deel je mening in community-peilingen",
|
||||
"empty": "Nog geen peilingen.",
|
||||
"back": "← Peilingen",
|
||||
"statusActive": "Open",
|
||||
"statusClosed": "Gesloten",
|
||||
"questionsCount": "{count} vragen",
|
||||
"ends": "Eindigt {date}",
|
||||
"voteTitle": "Breng je stem uit",
|
||||
"voteSubtitle": "Beantwoord elke vraag hieronder",
|
||||
"submitVote": "Stem indienen",
|
||||
"voting": "Bezig met indienen…",
|
||||
"voteSuccess": "Bedankt voor je stem!",
|
||||
"voteError": "Je stem kon niet worden ingediend.",
|
||||
"loginToVote": "Log in om te stemmen in deze peiling.",
|
||||
"alreadyVoted": "Je hebt al gestemd.",
|
||||
"pollClosed": "Deze peiling is gesloten.",
|
||||
"cannotVote": "Stemmen is niet beschikbaar.",
|
||||
"textPlaceholder": "Jouw antwoord…",
|
||||
"resultsTitle": "Resultaten",
|
||||
"voteCount": "{count} ({pct}%)",
|
||||
"totalVotes": "{count} stemmen in totaal",
|
||||
"textResponses": "{count} vrije antwoorden"
|
||||
},
|
||||
"radioContests": {
|
||||
"title": "Radiowedstrijden",
|
||||
@@ -627,7 +767,9 @@
|
||||
"createOne": "Account aanmaken",
|
||||
"forgotPassword": "Wachtwoord vergeten?",
|
||||
"errorInvalidCredentials": "Ongeldige gebruikersnaam of wachtwoord",
|
||||
"errorInvalid2fa": "Ongeldige 2FA-code"
|
||||
"errorInvalid2fa": "Ongeldige 2FA-code",
|
||||
"errorUnverified": "Verifieer je e-mail voordat je inlogt.",
|
||||
"errorCaptcha": "Captcha-verificatie mislukt. Probeer het opnieuw."
|
||||
},
|
||||
"register": {
|
||||
"title": "Account aanmaken",
|
||||
@@ -663,7 +805,8 @@
|
||||
"sentNotice": "Als dat e-mailadres geregistreerd is, is er een resetlink verzonden. Controleer je inbox.",
|
||||
"emailPlaceholder": "Je e-mailadres",
|
||||
"sendResetLink": "Resetlink verzenden",
|
||||
"backToLogin": "Terug naar inloggen"
|
||||
"backToLogin": "Terug naar inloggen",
|
||||
"errorCaptcha": "Captcha-verificatie mislukt. Probeer het opnieuw."
|
||||
},
|
||||
"reset": {
|
||||
"title": "Nieuw wachtwoord instellen",
|
||||
@@ -1972,16 +2115,35 @@
|
||||
"title": "Teamactiviteiten",
|
||||
"subtitle": "Audittrail van teamacties in het beheerderspaneel",
|
||||
"noLogs": "Nog geen teamactiviteit geregistreerd",
|
||||
"noResults": "Geen overeenkomende activiteiten",
|
||||
"colId": "ID",
|
||||
"colUser": "Gebruiker",
|
||||
"colStaff": "Team",
|
||||
"colAction": "Actie",
|
||||
"colTarget": "Doelwit",
|
||||
"colDescription": "Beschrijving",
|
||||
"colIp": "IP",
|
||||
"colWhen": "Wanneer",
|
||||
"colTimestamp": "Tijdstempel",
|
||||
"filterByUser": "Filteren op gebruiker…",
|
||||
"filterByAction": "Filteren op actie…",
|
||||
"clearFilters": "Filters wissen",
|
||||
"searchPlaceholder": "Zoek op actie, beschrijving of IP…",
|
||||
"totalActivities": "Totaal activiteiten",
|
||||
"onThisPage": "Op deze pagina",
|
||||
"recent": "Laatste minuut",
|
||||
"authorizationErrors": "Autorisatiefouten",
|
||||
"authorizationOnly": "Alleen auth-fouten",
|
||||
"allActivities": "Alle activiteiten",
|
||||
"staffId": "Team-ID",
|
||||
"actionType": "Actietype",
|
||||
"filter": "Filter",
|
||||
"activities": "{count} activiteiten",
|
||||
"staffWithId": "#{id} {name}",
|
||||
"userPrefix": "gebruiker",
|
||||
"pagination": "Pagina {page} van {pages} · {total} totaal",
|
||||
"next": "Volgende",
|
||||
"prev": "Vorige",
|
||||
"unknownUser": "onbekend",
|
||||
"emptyValue": "-",
|
||||
"colTime": "Tijd",
|
||||
@@ -2014,10 +2176,18 @@
|
||||
"wordfilter": {
|
||||
"title": "Woordfilter",
|
||||
"subtitle": "Beheer gefilterde woorden en zinnen in het hotel",
|
||||
"filteredWords": "Gefilterde woorden",
|
||||
"addWord": "Woord toevoegen",
|
||||
"addWords": "Woorden toevoegen",
|
||||
"words": "Woorden",
|
||||
"noWords": "Nog geen gefilterde woorden",
|
||||
"delete": "Verwijderen",
|
||||
"confirmDeleteTitle": "Woord verwijderen",
|
||||
"confirmDelete": "\"{word}\" verwijderen uit het filter?",
|
||||
"added": "Woord toegevoegd aan filter",
|
||||
"deleted": "Woord verwijderd uit filter",
|
||||
"addError": "Kon woord niet toevoegen (bestaat mogelijk al)",
|
||||
"deleteError": "Kon woord niet verwijderen",
|
||||
"colId": "ID",
|
||||
"colWord": "Woord",
|
||||
"colAddedBy": "Toegevoegd door",
|
||||
@@ -2290,6 +2460,9 @@
|
||||
"uploading": "Bezig met uploaden…",
|
||||
"delete": "Verwijderen",
|
||||
"deleting": "Bezig met verwijderen…",
|
||||
"cancel": "Annuleren",
|
||||
"saved": "Favicon succesvol opgeslagen!",
|
||||
"deleted": "Favicon succesvol verwijderd!",
|
||||
"error": "Er is iets misgegaan",
|
||||
"confirmDelete": "Favicon verwijderen? De site zal geen aangepaste favicon meer tonen.",
|
||||
"generator": {
|
||||
@@ -2309,6 +2482,13 @@
|
||||
"delete": "Verwijderen",
|
||||
"noSettings": "Geen instellingen gevonden",
|
||||
"confirmDelete": "Instelling \"{key}\" verwijderen?",
|
||||
"keysInDatabase": "{count} sleutels in de database",
|
||||
"managedInForm": "{count} beheerd in het formulier",
|
||||
"documented": "{count} gedocumenteerd",
|
||||
"saved": "Instellingen opgeslagen.",
|
||||
"saveFailed": "Instellingen opslaan mislukt.",
|
||||
"saveSettings": "Instellingen opslaan",
|
||||
"viewOnly": "Je kunt instellingen bekijken, maar hebt bewerkingsrechten nodig.",
|
||||
"colKey": "Sleutel",
|
||||
"colValue": "Waarde",
|
||||
"colUpdated": "Bijgewerkt",
|
||||
@@ -2325,19 +2505,27 @@
|
||||
},
|
||||
"import": {
|
||||
"title": "Import",
|
||||
"subtitle": "Import assets from external sources into your hotel.",
|
||||
"subtitle": "Importeer assets van externe bronnen naar je hotel.",
|
||||
"badges": "Badges",
|
||||
"badgesDescription": "Import and manage badge assets from external sources.",
|
||||
"furni": "Furni",
|
||||
"furniDescription": "Import furniture definitions, SWF files, and icons.",
|
||||
"clothing": "Clothing",
|
||||
"clothingDescription": "Import clothing and wearables for avatars.",
|
||||
"effects": "Effects",
|
||||
"effectsDescription": "Import avatar effects and animations.",
|
||||
"pets": "Pets",
|
||||
"petsDescription": "Import pet data and icons.",
|
||||
"clone": "Clone",
|
||||
"cloneDescription": "Clone existing items from one source to another."
|
||||
"badgesDescription": "Importeer en beheer badge-assets van externe bronnen.",
|
||||
"furni": "Meubels",
|
||||
"furniDescription": "Importeer meubeldefinities, SWF-bestanden en iconen.",
|
||||
"clothing": "Kleding",
|
||||
"clothingDescription": "Importeer kleding en wearables voor avatars.",
|
||||
"effects": "Effecten",
|
||||
"effectsDescription": "Importeer avatar-effecten en animaties.",
|
||||
"pets": "Huisdieren",
|
||||
"petsDescription": "Importeer huisdiergegevens en iconen.",
|
||||
"clone": "Klonen",
|
||||
"cloneDescription": "Kloon bestaande items van de ene bron naar de andere.",
|
||||
"upload": "Upload .nitro",
|
||||
"uploadDescription": "Upload .nitro-bundles en iconen direct zonder SWF-conversie.",
|
||||
"sync": "Auto-sync",
|
||||
"syncDescription": "Importeer automatisch ontbrekende meubels van alle geconfigureerde bronnen.",
|
||||
"repairIcons": "Iconen repareren",
|
||||
"repairIconsDescription": "Download ontbrekende icoonbestanden voor meubels die al in de database staan.",
|
||||
"audit": "Cataloguscontrole",
|
||||
"auditDescription": "Scan je catalogus op ontbrekende items, kapotte verwijzingen en items die ontbreken in kloonbronnen."
|
||||
},
|
||||
"translations": {
|
||||
"title": "Translations",
|
||||
|
||||
Reference in new issue
Block a user