feat: shop buy, forum replies, tickets, messages, sessions, and UX hardening
Complete remaining product gaps: credit-based shop purchases, guild thread replies, help ticket detail/reply/close, offline message compose, sign-out-everywhere via JWT version, ads delete confirm, soft-fail feedback, rate limits, loading states, and single auth() in site layout. Co-authored-by: Cursor <[email protected]>
This commit is contained in:
1 parent
ed7db6e048
commit
803e8f36c1
47 files changed
+2793
-358
No files matched your search
+156
-10
@@ -112,7 +112,7 @@
|
||||
},
|
||||
"messages": {
|
||||
"title": "Messages",
|
||||
"subtitle": "Friend requests and offline messages waiting for you",
|
||||
"subtitle": "Friend requests, offline inbox, and messages to friends",
|
||||
"requestsTitle": "Friend requests",
|
||||
"requestsEmptySubtitle": "Nobody's asked to be your friend yet",
|
||||
"requestsSubtitle": "{count, plural, one {# pending request} other {# pending requests}}",
|
||||
@@ -124,18 +124,46 @@
|
||||
"offlineEmptySubtitle": "Your inbox is empty",
|
||||
"offlineSubtitle": "{count, plural, one {# message received} other {# messages received}}",
|
||||
"offlineEmptyState": "You have no offline messages.",
|
||||
"composeTitle": "Send offline message",
|
||||
"composeSubtitle": "Delivered in the hotel messenger when your friend is offline",
|
||||
"composeEmptyFriends": "Add friends in the hotel to send offline messages.",
|
||||
"composeFriendLabel": "Friend",
|
||||
"composeFriendPlaceholder": "Choose a friend",
|
||||
"composeMessageLabel": "Message",
|
||||
"composeMessagePlaceholder": "Write your message (max 500 characters)…",
|
||||
"composeSend": "Send message",
|
||||
"unknownUser": "User #{id}",
|
||||
"success": {
|
||||
"accepted": "Friend request accepted.",
|
||||
"declined": "Friend request declined."
|
||||
"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."
|
||||
"error": "Something went wrong. Please try again.",
|
||||
"notFriend": "You can only message friends.",
|
||||
"emptyMessage": "Please write a message.",
|
||||
"rateLimited": "Too many messages. Wait a moment and try again."
|
||||
}
|
||||
},
|
||||
"sessions": {
|
||||
"title": "Login activity",
|
||||
"subtitle": "Recent sign-ins and failed attempts on your account",
|
||||
"recentTitle": "Recent sign-ins",
|
||||
"recentEmpty": "No sign-ins recorded yet.",
|
||||
"colWhen": "When",
|
||||
"colIp": "IP",
|
||||
"colDevice": "Device",
|
||||
"failedTitle": "Failed attempts",
|
||||
"failedSubtitle": "Wrong password on your username",
|
||||
"unknownDevice": "Unknown device",
|
||||
"signOutEverywhereTitle": "Sign out everywhere",
|
||||
"signOutEverywhereDescription": "Ends all website sessions on every device. You will need to sign in again here too.",
|
||||
"signOutEverywhereButton": "Sign out all sessions",
|
||||
"successSignedOutAll": "All sessions have been signed out."
|
||||
},
|
||||
"profile": {
|
||||
"noMotto": "No motto",
|
||||
"statRank": "Rank",
|
||||
@@ -237,7 +265,8 @@
|
||||
"postComment": "Post comment",
|
||||
"toComment": "to leave a comment.",
|
||||
"success": {
|
||||
"posted": "Comment posted."
|
||||
"posted": "Comment posted.",
|
||||
"reaction": "Reaction updated."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Please write a comment before posting.",
|
||||
@@ -353,6 +382,35 @@
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"guildForumThread": {
|
||||
"backToForum": "← Back to forum",
|
||||
"unnamedGuild": "Unnamed guild",
|
||||
"noSubject": "(no subject)",
|
||||
"inGuildForum": "{guild} forum",
|
||||
"pinned": "Pinned",
|
||||
"locked": "Locked",
|
||||
"postsTitle": "Posts",
|
||||
"postsSubtitle": "{count, plural, one {# post} other {# posts}}",
|
||||
"postsEmpty": "No posts in this thread.",
|
||||
"userNumber": "User #{id}",
|
||||
"replyTitle": "Reply",
|
||||
"replySubtitle": "Add your message to this thread",
|
||||
"replyPlaceholder": "Write your reply…",
|
||||
"replySubmit": "Post reply",
|
||||
"lockedHint": "This thread is locked — new replies are disabled.",
|
||||
"loginToReply": "Sign in to reply.",
|
||||
"loginLink": "Log in",
|
||||
"success": {
|
||||
"replied": "Reply posted."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Please enter a message.",
|
||||
"notFound": "That thread was not found.",
|
||||
"locked": "This thread is locked.",
|
||||
"ratelimit": "You're posting too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"shop": {
|
||||
"title": "Shop",
|
||||
"subtitle": "Top up your account and grab exclusive packages, currency and badges.",
|
||||
@@ -361,7 +419,22 @@
|
||||
"allPackages": "All packages",
|
||||
"packagesAvailable": "{count, plural, one {# package available} other {# packages available}}",
|
||||
"empty": "No packages available right now.",
|
||||
"buy": "Buy"
|
||||
"buy": "Buy",
|
||||
"loginToBuy": "Log in to buy",
|
||||
"creditsHint": "Packages are paid with in-game credits. Top up first if you need more.",
|
||||
"topUpLink": "Top up credits",
|
||||
"priceCredits": "{credits} credits (≈ {usd})",
|
||||
"priceCreditsShort": "{credits} cr",
|
||||
"success": {
|
||||
"bought": "Package purchased — rewards have been added to your account.",
|
||||
"boughtNamed": "You purchased \"{name}\" — rewards have been added to your account."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "That package is no longer available.",
|
||||
"credits": "You don't have enough credits for this package.",
|
||||
"ratelimit": "You're purchasing too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"topup": {
|
||||
"title": "Top up with PayPal",
|
||||
@@ -476,6 +549,36 @@
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"helpTicketDetail": {
|
||||
"backToList": "← Your tickets",
|
||||
"ticketId": "Ticket #{id}",
|
||||
"statusOpen": "Open",
|
||||
"statusClosed": "Closed",
|
||||
"messagesTitle": "Conversation",
|
||||
"messagesSubtitle": "{count, plural, one {# message} other {# messages}}",
|
||||
"you": "You",
|
||||
"userNumber": "User #{id}",
|
||||
"replyTitle": "Reply",
|
||||
"replySubtitle": "Send a follow-up to staff",
|
||||
"replyPlaceholder": "Write your message…",
|
||||
"replySubmit": "Send reply",
|
||||
"closeTitle": "Close ticket",
|
||||
"closeSubtitle": "Mark this request as resolved when you no longer need help",
|
||||
"closeSubmit": "Close ticket",
|
||||
"closedHint": "This ticket is closed. Open a new ticket if you need more help.",
|
||||
"success": {
|
||||
"replied": "Reply sent.",
|
||||
"closed": "Ticket closed."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Please enter a message.",
|
||||
"notFound": "That ticket was not found.",
|
||||
"closedTicket": "This ticket is closed.",
|
||||
"moderated": "That message was blocked by moderation.",
|
||||
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"applyStaff": {
|
||||
"title": "Apply for {hotel} staff",
|
||||
"subtitle": "We open staff applications every now and then. If you come across a position you feel you would fit perfectly into, do not hesitate to apply for it.",
|
||||
@@ -486,7 +589,17 @@
|
||||
"alreadyApplied": "You have already applied for {rank}",
|
||||
"aboutYou": "About you",
|
||||
"aboutPlaceholder": "Tell us why you'd be a great {rank}…",
|
||||
"applyFor": "Apply for {rank}"
|
||||
"applyFor": "Apply for {rank}",
|
||||
"success": {
|
||||
"submitted": "Application submitted — staff will review it soon."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Please write at least 10 characters about yourself.",
|
||||
"invalid": "Invalid application.",
|
||||
"duplicate": "You have already applied for this position.",
|
||||
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"applyTeam": {
|
||||
"title": "Apply for the {hotel} team",
|
||||
@@ -496,7 +609,17 @@
|
||||
"pending": "Your application is pending",
|
||||
"aboutYou": "About you",
|
||||
"aboutPlaceholder": "Tell us why you'd be a great fit for {rank}…",
|
||||
"applyFor": "Apply for {rank}"
|
||||
"applyFor": "Apply for {rank}",
|
||||
"success": {
|
||||
"submitted": "Application submitted — staff will review it soon."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Please write at least 10 characters about yourself.",
|
||||
"invalid": "Invalid application.",
|
||||
"duplicate": "You have already applied for this team.",
|
||||
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"radio": {
|
||||
"title": "Radio",
|
||||
@@ -656,7 +779,16 @@
|
||||
"colStatus": "Status",
|
||||
"statusPending": "Pending",
|
||||
"statusApproved": "Approved",
|
||||
"statusPlayed": "Played"
|
||||
"statusPlayed": "Played",
|
||||
"success": {
|
||||
"posted": "Request submitted."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Please enter a song title or artist.",
|
||||
"invalid": "Invalid request.",
|
||||
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"client": {
|
||||
"title": "Nitro client",
|
||||
@@ -694,7 +826,15 @@
|
||||
"experiencePlaceholder": "Any prior DJ or hosting experience?",
|
||||
"motivationLabel": "Motivation",
|
||||
"motivationPlaceholder": "Why do you want to join the radio team?",
|
||||
"submitButton": "Submit application"
|
||||
"submitButton": "Submit application",
|
||||
"success": {
|
||||
"submitted": "Application submitted — we will get back to you soon."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Please fill in all required fields.",
|
||||
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
|
||||
"error": "Something went wrong. Please try again."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"accountSettings": "Account settings",
|
||||
@@ -1165,7 +1305,13 @@
|
||||
"delete": "Delete",
|
||||
"noAds": "No advertisements yet",
|
||||
"confirmDelete": "Delete this ad?",
|
||||
"colId": "ID",
|
||||
"deleteSuccess": "Advertisement deleted!",
|
||||
"deleteError": "Failed to delete advertisement.",
|
||||
"adsCount": "Total ads",
|
||||
"latest": "Latest",
|
||||
"mostRecentAd": "Most recent ad",
|
||||
"allAds": "All advertisements",
|
||||
"colPreview": "Preview",
|
||||
"colName": "Name",
|
||||
"colImage": "Image",
|
||||
"colUrl": "URL",
|
||||
|
||||
+174
-27
@@ -112,7 +112,7 @@
|
||||
},
|
||||
"messages": {
|
||||
"title": "Messaggi",
|
||||
"subtitle": "Richieste di amicizia e messaggi offline in attesa per te",
|
||||
"subtitle": "Richieste di amicizia, inbox offline e messaggi agli amici",
|
||||
"requestsTitle": "Richieste di amicizia",
|
||||
"requestsEmptySubtitle": "Nessuno ti ha ancora chiesto l'amicizia",
|
||||
"requestsSubtitle": "{count, plural, one {# richiesta in sospeso} other {# richieste in sospeso}}",
|
||||
@@ -124,18 +124,46 @@
|
||||
"offlineEmptySubtitle": "La tua casella è vuota",
|
||||
"offlineSubtitle": "{count, plural, one {# messaggio ricevuto} other {# messaggi ricevuti}}",
|
||||
"offlineEmptyState": "Non hai messaggi offline.",
|
||||
"composeTitle": "Invia messaggio offline",
|
||||
"composeSubtitle": "Consegnato nel messenger dell'hotel quando l'amico è offline",
|
||||
"composeEmptyFriends": "Aggiungi amici in hotel per inviare messaggi offline.",
|
||||
"composeFriendLabel": "Amico",
|
||||
"composeFriendPlaceholder": "Scegli un amico",
|
||||
"composeMessageLabel": "Messaggio",
|
||||
"composeMessagePlaceholder": "Scrivi il messaggio (max 500 caratteri)…",
|
||||
"composeSend": "Invia messaggio",
|
||||
"unknownUser": "Utente #{id}",
|
||||
"success": {
|
||||
"accepted": "Richiesta di amicizia accettata.",
|
||||
"declined": "Richiesta di amicizia rifiutata."
|
||||
"declined": "Richiesta di amicizia rifiutata.",
|
||||
"sent": "Messaggio offline inviato."
|
||||
},
|
||||
"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."
|
||||
"error": "Qualcosa è andato storto. Riprova.",
|
||||
"notFriend": "Puoi scrivere solo agli amici.",
|
||||
"emptyMessage": "Scrivi un messaggio.",
|
||||
"rateLimited": "Troppi messaggi. Attendi un momento e riprova."
|
||||
}
|
||||
},
|
||||
"sessions": {
|
||||
"title": "Attività di accesso",
|
||||
"subtitle": "Accessi recenti e tentativi falliti sul tuo account",
|
||||
"recentTitle": "Accessi recenti",
|
||||
"recentEmpty": "Nessun accesso registrato.",
|
||||
"colWhen": "Quando",
|
||||
"colIp": "IP",
|
||||
"colDevice": "Dispositivo",
|
||||
"failedTitle": "Tentativi falliti",
|
||||
"failedSubtitle": "Password errata per il tuo username",
|
||||
"unknownDevice": "Dispositivo sconosciuto",
|
||||
"signOutEverywhereTitle": "Esci ovunque",
|
||||
"signOutEverywhereDescription": "Termina tutte le sessioni del sito su ogni dispositivo. Dovrai accedere di nuovo anche qui.",
|
||||
"signOutEverywhereButton": "Esci da tutte le sessioni",
|
||||
"successSignedOutAll": "Tutte le sessioni sono state terminate."
|
||||
},
|
||||
"profile": {
|
||||
"noMotto": "Nessun motto",
|
||||
"statRank": "Ruolo",
|
||||
@@ -237,7 +265,8 @@
|
||||
"postComment": "Pubblica commento",
|
||||
"toComment": "per lasciare un commento.",
|
||||
"success": {
|
||||
"posted": "Commento pubblicato."
|
||||
"posted": "Commento pubblicato.",
|
||||
"reaction": "Reazione aggiornata."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Scrivi un commento prima di pubblicare.",
|
||||
@@ -353,6 +382,35 @@
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"guildForumThread": {
|
||||
"backToForum": "← Torna al forum",
|
||||
"unnamedGuild": "Gilda senza nome",
|
||||
"noSubject": "(senza oggetto)",
|
||||
"inGuildForum": "Forum di {guild}",
|
||||
"pinned": "In evidenza",
|
||||
"locked": "Bloccata",
|
||||
"postsTitle": "Messaggi",
|
||||
"postsSubtitle": "{count, plural, one {# messaggio} other {# messaggi}}",
|
||||
"postsEmpty": "Nessun messaggio in questa discussione.",
|
||||
"userNumber": "Utente #{id}",
|
||||
"replyTitle": "Rispondi",
|
||||
"replySubtitle": "Aggiungi un messaggio a questa discussione",
|
||||
"replyPlaceholder": "Scrivi la tua risposta…",
|
||||
"replySubmit": "Pubblica risposta",
|
||||
"lockedHint": "Questa discussione è bloccata: non è possibile rispondere.",
|
||||
"loginToReply": "Accedi per rispondere.",
|
||||
"loginLink": "Accedi",
|
||||
"success": {
|
||||
"replied": "Risposta pubblicata."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Inserisci un messaggio.",
|
||||
"notFound": "Discussione non trovata.",
|
||||
"locked": "Questa discussione è bloccata.",
|
||||
"ratelimit": "Stai pubblicando troppo in fretta. Attendi un momento e riprova.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"shop": {
|
||||
"title": "Negozio",
|
||||
"subtitle": "Ricarica il tuo account e accaparrati pacchetti esclusivi, valute e distintivi.",
|
||||
@@ -361,7 +419,22 @@
|
||||
"allPackages": "Tutti i pacchetti",
|
||||
"packagesAvailable": "{count, plural, one {# pacchetto disponibile} other {# pacchetti disponibili}}",
|
||||
"empty": "Al momento non ci sono pacchetti disponibili.",
|
||||
"buy": "Acquista"
|
||||
"buy": "Acquista",
|
||||
"loginToBuy": "Accedi per acquistare",
|
||||
"creditsHint": "I pacchetti si pagano con crediti di gioco. Ricarica prima se ti servono altri crediti.",
|
||||
"topUpLink": "Ricarica crediti",
|
||||
"priceCredits": "{credits} crediti (≈ {usd})",
|
||||
"priceCreditsShort": "{credits} cr",
|
||||
"success": {
|
||||
"bought": "Pacchetto acquistato — le ricompense sono state aggiunte al tuo account.",
|
||||
"boughtNamed": "Hai acquistato \"{name}\" — le ricompense sono state aggiunte al tuo account."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Questo pacchetto non è più disponibile.",
|
||||
"credits": "Non hai abbastanza crediti per questo pacchetto.",
|
||||
"ratelimit": "Stai acquistando troppo velocemente. Attendi un momento e riprova.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"topup": {
|
||||
"title": "Ricarica con PayPal",
|
||||
@@ -476,6 +549,36 @@
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"helpTicketDetail": {
|
||||
"backToList": "← I tuoi ticket",
|
||||
"ticketId": "Ticket #{id}",
|
||||
"statusOpen": "Aperto",
|
||||
"statusClosed": "Chiuso",
|
||||
"messagesTitle": "Conversazione",
|
||||
"messagesSubtitle": "{count, plural, one {# messaggio} other {# messaggi}}",
|
||||
"you": "Tu",
|
||||
"userNumber": "Utente #{id}",
|
||||
"replyTitle": "Rispondi",
|
||||
"replySubtitle": "Invia un aggiornamento allo staff",
|
||||
"replyPlaceholder": "Scrivi il tuo messaggio…",
|
||||
"replySubmit": "Invia risposta",
|
||||
"closeTitle": "Chiudi ticket",
|
||||
"closeSubtitle": "Segna la richiesta come risolta se non ti serve più aiuto",
|
||||
"closeSubmit": "Chiudi ticket",
|
||||
"closedHint": "Questo ticket è chiuso. Apri un nuovo ticket se hai bisogno di altro aiuto.",
|
||||
"success": {
|
||||
"replied": "Risposta inviata.",
|
||||
"closed": "Ticket chiuso."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Inserisci un messaggio.",
|
||||
"notFound": "Ticket non trovato.",
|
||||
"closedTicket": "Questo ticket è chiuso.",
|
||||
"moderated": "Quel messaggio è 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}",
|
||||
"subtitle": "Apriamo le candidature per lo staff di tanto in tanto. Se trovi una posizione che senti perfetta per te, non esitare a candidarti.",
|
||||
@@ -486,7 +589,17 @@
|
||||
"alreadyApplied": "Ti sei già candidato per {rank}",
|
||||
"aboutYou": "Parlaci di te",
|
||||
"aboutPlaceholder": "Raccontaci perché saresti un ottimo {rank}…",
|
||||
"applyFor": "Candidati per {rank}"
|
||||
"applyFor": "Candidati per {rank}",
|
||||
"success": {
|
||||
"submitted": "Candidatura inviata — lo staff la esaminerà a breve."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Scrivi almeno 10 caratteri su di te.",
|
||||
"invalid": "Candidatura non valida.",
|
||||
"duplicate": "Ti sei già candidato per questa posizione.",
|
||||
"ratelimit": "Stai inviando troppo in fretta. Attendi un momento e riprova.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"applyTeam": {
|
||||
"title": "Candidati per il team di {hotel}",
|
||||
@@ -496,7 +609,17 @@
|
||||
"pending": "La tua candidatura è in attesa",
|
||||
"aboutYou": "Parlaci di te",
|
||||
"aboutPlaceholder": "Raccontaci perché saresti perfetto per {rank}…",
|
||||
"applyFor": "Candidati per {rank}"
|
||||
"applyFor": "Candidati per {rank}",
|
||||
"success": {
|
||||
"submitted": "Candidatura inviata — lo staff la esaminerà a breve."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Scrivi almeno 10 caratteri su di te.",
|
||||
"invalid": "Candidatura non valida.",
|
||||
"duplicate": "Ti sei già candidato per questo team.",
|
||||
"ratelimit": "Stai inviando troppo in fretta. Attendi un momento e riprova.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"radio": {
|
||||
"title": "Radio",
|
||||
@@ -658,7 +781,15 @@
|
||||
"experiencePlaceholder": "Hai esperienze precedenti come DJ o conduttore?",
|
||||
"motivationLabel": "Motivazione",
|
||||
"motivationPlaceholder": "Perché vuoi entrare nel team della radio?",
|
||||
"submitButton": "Invia candidatura"
|
||||
"submitButton": "Invia candidatura",
|
||||
"success": {
|
||||
"submitted": "Candidatura inviata — ti ricontatteremo presto."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Compila tutti i campi obbligatori.",
|
||||
"ratelimit": "Stai inviando troppo in fretta. Attendi un momento e riprova.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"accountSettings": "Impostazioni account",
|
||||
@@ -1129,6 +1260,13 @@
|
||||
"delete": "Elimina",
|
||||
"noAds": "Ancora nessun annuncio",
|
||||
"confirmDelete": "Eliminare questo annuncio?",
|
||||
"deleteSuccess": "Annuncio eliminato!",
|
||||
"deleteError": "Eliminazione annuncio non riuscita.",
|
||||
"adsCount": "Annunci totali",
|
||||
"latest": "Ultimo",
|
||||
"mostRecentAd": "Annuncio più recente",
|
||||
"allAds": "Tutti gli annunci",
|
||||
"colPreview": "Anteprima",
|
||||
"colId": "ID",
|
||||
"colName": "Nome",
|
||||
"colImage": "Immagine",
|
||||
@@ -2743,25 +2881,34 @@
|
||||
}
|
||||
},
|
||||
"radioRequests": {
|
||||
"formTitle": "Submit a request",
|
||||
"formSubtitle": "Ask the DJ to play your favourite track",
|
||||
"songLabel": "Song",
|
||||
"songPlaceholder": "Title of the song",
|
||||
"artistLabel": "Artist",
|
||||
"artistPlaceholder": "Name of the artist (optional)",
|
||||
"submitButton": "Submit request",
|
||||
"loginToRequest": "Log in to submit a request.",
|
||||
"latestTitle": "Recent requests",
|
||||
"latestSubtitle": "The most recently requested songs",
|
||||
"empty": "No requests yet.",
|
||||
"colSong": "Song",
|
||||
"colArtist": "Artist",
|
||||
"colRequester": "Requester",
|
||||
"colDate": "Date",
|
||||
"colStatus": "Status",
|
||||
"statusPending": "Pending",
|
||||
"statusApproved": "Approved",
|
||||
"statusPlayed": "Played"
|
||||
"formTitle": "Invia una richiesta",
|
||||
"formSubtitle": "Chiedi al DJ di passare la tua traccia preferita",
|
||||
"songLabel": "Brano",
|
||||
"songPlaceholder": "Titolo del brano",
|
||||
"artistLabel": "Artista",
|
||||
"artistPlaceholder": "Nome dell'artista (facoltativo)",
|
||||
"submitButton": "Invia richiesta",
|
||||
"loginToRequest": "Accedi per inviare una richiesta.",
|
||||
"latestTitle": "Richieste recenti",
|
||||
"latestSubtitle": "I brani richiesti più di recente",
|
||||
"empty": "Ancora nessuna richiesta.",
|
||||
"colSong": "Brano",
|
||||
"colArtist": "Artista",
|
||||
"colRequester": "Richiedente",
|
||||
"colDate": "Data",
|
||||
"colStatus": "Stato",
|
||||
"statusPending": "In attesa",
|
||||
"statusApproved": "Approvata",
|
||||
"statusPlayed": "Passata",
|
||||
"success": {
|
||||
"posted": "Richiesta inviata."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Inserisci il titolo del brano o l'artista.",
|
||||
"invalid": "Richiesta non valida.",
|
||||
"ratelimit": "Stai inviando troppo in fretta. Attendi un momento e riprova.",
|
||||
"error": "Qualcosa è andato storto. Riprova."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
+156
-9
@@ -112,7 +112,7 @@
|
||||
},
|
||||
"messages": {
|
||||
"title": "Berichten",
|
||||
"subtitle": "Vriendschapsverzoeken en offline berichten die op je wachten",
|
||||
"subtitle": "Vriendschapsverzoeken, offline inbox en berichten naar vrienden",
|
||||
"requestsTitle": "Vriendschapsverzoeken",
|
||||
"requestsEmptySubtitle": "Niemand heeft nog gevraagd om je vriend te zijn",
|
||||
"requestsSubtitle": "{count, plural, one {# openstaand verzoek} other {# openstaande verzoeken}}",
|
||||
@@ -124,18 +124,46 @@
|
||||
"offlineEmptySubtitle": "Je inbox is leeg",
|
||||
"offlineSubtitle": "{count, plural, one {# bericht ontvangen} other {# berichten ontvangen}}",
|
||||
"offlineEmptyState": "Je hebt geen offline berichten.",
|
||||
"composeTitle": "Offline bericht sturen",
|
||||
"composeSubtitle": "Afgeleverd in de hotel messenger wanneer je vriend offline is",
|
||||
"composeEmptyFriends": "Voeg vrienden toe in het hotel om offline berichten te sturen.",
|
||||
"composeFriendLabel": "Vriend",
|
||||
"composeFriendPlaceholder": "Kies een vriend",
|
||||
"composeMessageLabel": "Bericht",
|
||||
"composeMessagePlaceholder": "Schrijf je bericht (max. 500 tekens)…",
|
||||
"composeSend": "Bericht versturen",
|
||||
"unknownUser": "Gebruiker #{id}",
|
||||
"success": {
|
||||
"accepted": "Vriendschapsverzoek geaccepteerd.",
|
||||
"declined": "Vriendschapsverzoek geweigerd."
|
||||
"declined": "Vriendschapsverzoek geweigerd.",
|
||||
"sent": "Offline bericht verstuurd."
|
||||
},
|
||||
"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."
|
||||
"error": "Er ging iets mis. Probeer het opnieuw.",
|
||||
"notFriend": "Je kunt alleen vrienden berichten.",
|
||||
"emptyMessage": "Schrijf een bericht.",
|
||||
"rateLimited": "Te veel berichten. Wacht even en probeer opnieuw."
|
||||
}
|
||||
},
|
||||
"sessions": {
|
||||
"title": "Loginactiviteit",
|
||||
"subtitle": "Recente aanmeldingen en mislukte pogingen op je account",
|
||||
"recentTitle": "Recente aanmeldingen",
|
||||
"recentEmpty": "Nog geen aanmeldingen geregistreerd.",
|
||||
"colWhen": "Wanneer",
|
||||
"colIp": "IP",
|
||||
"colDevice": "Apparaat",
|
||||
"failedTitle": "Mislukte pogingen",
|
||||
"failedSubtitle": "Verkeerd wachtwoord voor je gebruikersnaam",
|
||||
"unknownDevice": "Onbekend apparaat",
|
||||
"signOutEverywhereTitle": "Overal uitloggen",
|
||||
"signOutEverywhereDescription": "Beëindigt alle websitesessies op elk apparaat. Je moet hier ook opnieuw inloggen.",
|
||||
"signOutEverywhereButton": "Alle sessies beëindigen",
|
||||
"successSignedOutAll": "Alle sessies zijn beëindigd."
|
||||
},
|
||||
"profile": {
|
||||
"noMotto": "Geen motto",
|
||||
"statRank": "Rang",
|
||||
@@ -237,7 +265,8 @@
|
||||
"postComment": "Reactie plaatsen",
|
||||
"toComment": "om een reactie achter te laten.",
|
||||
"success": {
|
||||
"posted": "Reactie geplaatst."
|
||||
"posted": "Reactie geplaatst.",
|
||||
"reaction": "Reactie bijgewerkt."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Schrijf een reactie voordat je plaatst.",
|
||||
@@ -353,6 +382,35 @@
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"guildForumThread": {
|
||||
"backToForum": "← Terug naar forum",
|
||||
"unnamedGuild": "Naamloos gilde",
|
||||
"noSubject": "(geen onderwerp)",
|
||||
"inGuildForum": "{guild} forum",
|
||||
"pinned": "Vastgezet",
|
||||
"locked": "Vergrendeld",
|
||||
"postsTitle": "Berichten",
|
||||
"postsSubtitle": "{count, plural, one {# bericht} other {# berichten}}",
|
||||
"postsEmpty": "Geen berichten in deze discussie.",
|
||||
"userNumber": "Gebruiker #{id}",
|
||||
"replyTitle": "Reageren",
|
||||
"replySubtitle": "Voeg je bericht toe aan deze discussie",
|
||||
"replyPlaceholder": "Schrijf je reactie…",
|
||||
"replySubmit": "Reactie plaatsen",
|
||||
"lockedHint": "Deze discussie is vergrendeld — nieuwe reacties zijn uitgeschakeld.",
|
||||
"loginToReply": "Log in om te reageren.",
|
||||
"loginLink": "Inloggen",
|
||||
"success": {
|
||||
"replied": "Reactie geplaatst."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Voer een bericht in.",
|
||||
"notFound": "Die discussie is niet gevonden.",
|
||||
"locked": "Deze discussie is vergrendeld.",
|
||||
"ratelimit": "Je plaatst te snel. Wacht even en probeer opnieuw.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"shop": {
|
||||
"title": "Winkel",
|
||||
"subtitle": "Vul je account op en pak exclusieve pakketten, valuta en badges.",
|
||||
@@ -361,7 +419,22 @@
|
||||
"allPackages": "Alle pakketten",
|
||||
"packagesAvailable": "{count, plural, one {# pakket beschikbaar} other {# pakketten beschikbaar}}",
|
||||
"empty": "Momenteel geen pakketten beschikbaar.",
|
||||
"buy": "Kopen"
|
||||
"buy": "Kopen",
|
||||
"loginToBuy": "Log in om te kopen",
|
||||
"creditsHint": "Pakketten betaal je met in-game credits. Waardeer eerst op als je meer credits nodig hebt.",
|
||||
"topUpLink": "Credits opwaarderen",
|
||||
"priceCredits": "{credits} credits (≈ {usd})",
|
||||
"priceCreditsShort": "{credits} cr",
|
||||
"success": {
|
||||
"bought": "Pakket gekocht — beloningen zijn aan je account toegevoegd.",
|
||||
"boughtNamed": "Je hebt \"{name}\" gekocht — beloningen zijn aan je account toegevoegd."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Dit pakket is niet meer beschikbaar.",
|
||||
"credits": "Je hebt niet genoeg credits voor dit pakket.",
|
||||
"ratelimit": "Je koopt te snel achter elkaar. Wacht even en probeer het opnieuw.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"topup": {
|
||||
"title": "Opwaarderen met PayPal",
|
||||
@@ -476,6 +549,36 @@
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"helpTicketDetail": {
|
||||
"backToList": "← Jouw tickets",
|
||||
"ticketId": "Ticket #{id}",
|
||||
"statusOpen": "Open",
|
||||
"statusClosed": "Gesloten",
|
||||
"messagesTitle": "Gesprek",
|
||||
"messagesSubtitle": "{count, plural, one {# bericht} other {# berichten}}",
|
||||
"you": "Jij",
|
||||
"userNumber": "Gebruiker #{id}",
|
||||
"replyTitle": "Reageren",
|
||||
"replySubtitle": "Stuur een vervolg naar het team",
|
||||
"replyPlaceholder": "Schrijf je bericht…",
|
||||
"replySubmit": "Antwoord versturen",
|
||||
"closeTitle": "Ticket sluiten",
|
||||
"closeSubtitle": "Markeer dit verzoek als opgelost als je geen hulp meer nodig hebt",
|
||||
"closeSubmit": "Ticket sluiten",
|
||||
"closedHint": "Dit ticket is gesloten. Open een nieuw ticket als je meer hulp nodig hebt.",
|
||||
"success": {
|
||||
"replied": "Antwoord verstuurd.",
|
||||
"closed": "Ticket gesloten."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Voer een bericht in.",
|
||||
"notFound": "Dat ticket is niet gevonden.",
|
||||
"closedTicket": "Dit ticket is gesloten.",
|
||||
"moderated": "Dat bericht 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",
|
||||
"subtitle": "We openen af en toe sollicitaties. Als je een positie ziet die perfect bij je past, aarzel dan niet om te solliciteren.",
|
||||
@@ -486,7 +589,17 @@
|
||||
"alreadyApplied": "Je hebt al gesolliciteerd voor {rank}",
|
||||
"aboutYou": "Over jou",
|
||||
"aboutPlaceholder": "Vertel ons waarom jij een geweldige {rank} zou zijn…",
|
||||
"applyFor": "Solliciteer voor {rank}"
|
||||
"applyFor": "Solliciteer voor {rank}",
|
||||
"success": {
|
||||
"submitted": "Sollicitatie ingediend — staff bekijkt deze binnenkort."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Schrijf minstens 10 tekens over jezelf.",
|
||||
"invalid": "Ongeldige sollicitatie.",
|
||||
"duplicate": "Je hebt al gesolliciteerd voor deze positie.",
|
||||
"ratelimit": "Je dient te snel in. Wacht even en probeer opnieuw.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"applyTeam": {
|
||||
"title": "Solliciteer voor het {hotel} team",
|
||||
@@ -496,7 +609,17 @@
|
||||
"pending": "Je sollicitatie is in behandeling",
|
||||
"aboutYou": "Over jou",
|
||||
"aboutPlaceholder": "Vertel ons waarom jij een geweldige aanwinst zou zijn voor {rank}…",
|
||||
"applyFor": "Solliciteer voor {rank}"
|
||||
"applyFor": "Solliciteer voor {rank}",
|
||||
"success": {
|
||||
"submitted": "Sollicitatie ingediend — staff bekijkt deze binnenkort."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Schrijf minstens 10 tekens over jezelf.",
|
||||
"invalid": "Ongeldige sollicitatie.",
|
||||
"duplicate": "Je hebt al gesolliciteerd voor dit team.",
|
||||
"ratelimit": "Je dient te snel in. Wacht even en probeer opnieuw.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"radio": {
|
||||
"title": "Radio",
|
||||
@@ -656,7 +779,16 @@
|
||||
"colStatus": "Status",
|
||||
"statusPending": "In afwachting",
|
||||
"statusApproved": "Goedgekeurd",
|
||||
"statusPlayed": "Gedraaid"
|
||||
"statusPlayed": "Gedraaid",
|
||||
"success": {
|
||||
"posted": "Verzoek ingediend."
|
||||
},
|
||||
"errors": {
|
||||
"empty": "Vul een nummer of artiest in.",
|
||||
"invalid": "Ongeldig verzoek.",
|
||||
"ratelimit": "Je dient te snel in. Wacht even en probeer opnieuw.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"client": {
|
||||
"title": "Nitro client",
|
||||
@@ -694,7 +826,15 @@
|
||||
"experiencePlaceholder": "Eerdere DJ- of presentatie-ervaring?",
|
||||
"motivationLabel": "Motivatie",
|
||||
"motivationPlaceholder": "Waarom wil je lid worden van het radioteam?",
|
||||
"submitButton": "Sollicitatie indienen"
|
||||
"submitButton": "Sollicitatie indienen",
|
||||
"success": {
|
||||
"submitted": "Sollicitatie ingediend — we nemen contact met je op."
|
||||
},
|
||||
"errors": {
|
||||
"invalid": "Vul alle verplichte velden in.",
|
||||
"ratelimit": "Je dient te snel in. Wacht even en probeer opnieuw.",
|
||||
"error": "Er ging iets mis. Probeer het opnieuw."
|
||||
}
|
||||
},
|
||||
"settings": {
|
||||
"accountSettings": "Accountinstellingen",
|
||||
@@ -1165,6 +1305,13 @@
|
||||
"delete": "Verwijderen",
|
||||
"noAds": "Nog geen advertenties",
|
||||
"confirmDelete": "Deze advertentie verwijderen?",
|
||||
"deleteSuccess": "Advertentie verwijderd!",
|
||||
"deleteError": "Advertentie verwijderen mislukt.",
|
||||
"adsCount": "Totaal advertenties",
|
||||
"latest": "Laatste",
|
||||
"mostRecentAd": "Meest recente advertentie",
|
||||
"allAds": "Alle advertenties",
|
||||
"colPreview": "Voorbeeld",
|
||||
"colId": "ID",
|
||||
"colName": "Naam",
|
||||
"colImage": "Afbeelding",
|
||||
|
||||
Reference in new issue
Block a user