Files
Epicnabbo-Catalogus-Updated…/src/messages/es.json
T
openhands f25a26a93e Register: auto sign-in to /me and speed/cleanup improvements
- Send the verification email after the response via after() so it
  never blocks sign-up
- Invalidate the cached login lookup right after account creation so
  the automatic sign-in always finds the fresh row
- Auto sign in with the submitted credentials and go straight to /me,
  with a fallback to /login?registered=1 if sign-in is refused (e.g.
  email verification required)
- Cache the register page's online/latest user queries to cut DB load
  under traffic
- Fix terms checkbox label double-toggle cancelling the selection
- Add pages.register.redirecting translation to all locales
2026-08-26 14:57:51 +02:00

3267 lines
118 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.
{
"nav": {
"home": "Inicio",
"community": "Comunidad",
"articles": "Artículos",
"photos": "Fotos",
"staff": "Equipo",
"rankings": "Clasificaciones",
"guilds": "Grupos",
"leaderboards": "Tablas de clasificación",
"rareValues": "Valores raros",
"shop": "Tienda",
"market": "Mercado",
"assistance": "Asistencia",
"helpCenter": "Centro de ayuda",
"myTickets": "Mis tickets",
"badges": "Insignias",
"radio": "Radio",
"friends": "Amigos",
"messages": "Mensajes",
"admin": "Admin",
"openMenu": "Open menu",
"closeMenu": "Close menu",
"drawBadge": "Diseñar insignia",
"events": "Events",
"polls": "Polls",
"mod": "Mod"
},
"header": {
"online": "{count} {hotel} en línea",
"nitroClient": "Cliente Nitro",
"tagline": "¡Un mundo virtual en línea donde puedes crear tu propio avatar, hacer amigos, chatear, crear salas y mucho más!",
"login": "Iniciar sesión",
"or": "O",
"createAccount": "Crear una cuenta"
},
"footer": {
"copyright": "© {year} - {hotel} es un proyecto educativo sin fines de lucro"
},
"pages": {
"staff": {
"title": "Equipo",
"subtitle": "El equipo detrás del hotel",
"ranksTitle": "Rangos",
"ranksSubtitle": "De qué se encarga cada parte del equipo",
"membersTitle": "Miembros del equipo",
"membersEmptySubtitle": "Nadie que mostrar ahora mismo",
"membersSubtitle": "{count, plural, one {# miembro manteniendo todo en marcha} other {# miembros manteniendo todo en marcha}}",
"emptyState": "No hay miembros del equipo que mostrar.",
"colUsername": "Usuario",
"colRank": "Rango",
"colMotto": "Lema"
},
"leaderboard": {
"title": "Tabla de clasificación",
"subtitle": "Top 20 jugadores por {currency}",
"tab_credits": "Créditos",
"tab_diamonds": "Diamantes",
"tab_duckets": "Duckets",
"tab_achievement": "Logros",
"tab_respects": "Respetos",
"tab_onlinetime": "Tiempo en línea",
"emptyState": "Aún no hay clasificaciones que mostrar.",
"colAvatar": "Avatar",
"colPlayer": "Jugador"
},
"friends": {
"title": "Amigos",
"emptySubtitle": "Aún no has añadido amigos",
"subtitle": "{count, plural, one {Tienes # amigo} other {Tienes # amigos}}",
"emptyState": "Añade amigos en el hotel y aparecerán aquí.",
"noMotto": "Sin lema",
"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": "Mensajes",
"subtitle": "Solicitudes de amistad y mensajes fuera de línea esperándote",
"requestsTitle": "Solicitudes de amistad",
"requestsEmptySubtitle": "Nadie te ha enviado una solicitud de amistad aún",
"requestsSubtitle": "{count, plural, one {# solicitud pendiente} other {# solicitudes pendientes}}",
"requestsEmptyState": "No hay solicitudes de amistad pendientes.",
"wantsToBeFriend": "quiere ser tu amigo.",
"accept": "Aceptar",
"offlineTitle": "Mensajes fuera de línea",
"offlineEmptySubtitle": "Tu bandeja de entrada está vacía",
"offlineSubtitle": "{count, plural, one {# mensaje recibido} other {# mensajes recibidos}}",
"offlineEmptyState": "No tienes mensajes fuera de línea.",
"unknownUser": "Usuario #{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": "Sin lema",
"statRank": "Rango",
"statCredits": "Créditos",
"statRegistered": "Registrado",
"badgesTitle": "Insignias",
"badgesEmpty": "Aún no hay insignias.",
"photosTitle": "Fotos",
"photosEmpty": "Aún no hay fotos.",
"guestbookTitle": "Libro de visitas",
"guestbookSubtitle": "Mensajes en el muro de {username}",
"leaveMessage": "Dejar un mensaje",
"guestbookPlaceholder": "Escribe algo en el libro de visitas de {username}…",
"post": "Publicar",
"loginToPost": "Inicia sesión para dejar un mensaje en el libro de visitas.",
"guestbookEmpty": "Aún no hay entradas en el libro de visitas.",
"unknownUser": "Usuario #{id}",
"statDuckets": "Duckets",
"statDiamonds": "Diamantes",
"walletTitle": "Billetera",
"friendsTitle": "Amigos",
"friendsSubtitle": "Personas del hotel con las que pasan el tiempo",
"friendsEmpty": "No hay amigos que mostrar.",
"roomsTitle": "Salas",
"roomsSubtitle": "Salas que poseen",
"roomsEmpty": "No hay salas que mostrar.",
"roomUntitled": "Sala sin título",
"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": "Clasificaciones",
"subtitle": "Los 12 mejores jugadores clasificados por créditos",
"emptyState": "Aún no hay jugadores que clasificar."
},
"home": {
"welcome": "Bienvenido a {hotelName}",
"welcomeSubtitle": "Tu hotel retro, ahora impulsado por Next.js",
"welcomeBody": "Pasa el rato, colecciona furni y conoce amigos.",
"enterHotel": "Entrar a {hotelName}",
"onlineFriends": "Amigos en línea",
"noFriendsOnline": "No hay amigos en línea",
"register": "REGÍSTRATE AHORA",
"joinNow": "¡Únete a {hotelName} hoy!",
"recentUsers": "Usuarios recientes",
"recentPhotos": "Fotos recientes",
"latestNews": "Últimas noticias",
"newsTitle": "Últimas noticias",
"newsSubtitle": "Lo último del hotel",
"allNews": "Todas las noticias →",
"allUsers": "Comunidad →",
"noArticles": "Aún no hay artículos.",
"noPhotos": "Aún no hay fotos.",
"noUsers": "No hay usuarios en línea",
"latestArticle": "Último artículo",
"latestUsers": "Nuevos ciudadanos ({count} total)",
"statsOnline": "En línea",
"statsCitizens": "Ciudadanos",
"statsRooms": "Salas",
"featuresAvatar": "Avatar",
"featuresAvatarDesc": "Crea tu look único",
"featuresFurniture": "Muebles",
"featuresFurnitureDesc": "Decora salas con objetos",
"featuresCommunity": "Comunidad",
"featuresCommunityDesc": "Haz amigos y chatea",
"featuresGames": "Juegos",
"featuresGamesDesc": "Compite y diviértete"
},
"news": {
"title": "Noticias",
"subtitle": "Los últimos anuncios, eventos y actualizaciones del hotel",
"noArticles": "Aún no hay artículos."
},
"article": {
"backToNews": "← Noticias",
"reactionsTitle": "Reacciones",
"reactionsSubtitle": "Dinos lo que piensas",
"reaction": {
"like": "Me gusta",
"love": "Me encanta",
"wow": "Vaya"
},
"removeReaction": "Haz clic para eliminar tu reacción",
"reactWith": "Reaccionar con {reaction}",
"noReactions": "Aún no hay reacciones.",
"logIn": "Inicia sesión",
"toReact": "para reaccionar.",
"commentsTitle": "Comentarios",
"commentsSubtitle": "Únete a la conversación",
"commentsCount": "{count} hasta ahora",
"noComments": "Aún no hay comentarios. Sé el primero en comentar.",
"userNumber": "Usuario #{id}",
"addComment": "Añadir un comentario",
"commentPlaceholder": "Escribe tu comentario…",
"postComment": "Publicar comentario",
"toComment": "para dejar un comentario.",
"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."
}
},
"photos": {
"title": "Fotos",
"subtitle": "Las últimas instantáneas tomadas en el hotel",
"noPhotos": "Aún no hay fotos.",
"photoAlt": "Foto del usuario #{id}",
"byUser": "por el usuario #{id}"
},
"badges": {
"title": "Insignias",
"subtitle": "Las insignias que puedes ganar y lucir en el hotel",
"noBadges": "Aún no hay insignias disponibles."
},
"community": {
"title": "Comunidad",
"subtitle": "Todo lo que sucede en el hotel en un solo lugar",
"open": "Abrir →",
"links": {
"rankings": {
"title": "Clasificaciones",
"text": "Ve los jugadores más ricos del hotel, clasificados por créditos."
},
"staff": {
"title": "Equipo",
"text": "Conoce al equipo que mantiene el hotel en funcionamiento cada día."
},
"news": {
"title": "Noticias",
"text": "Los últimos anuncios, eventos y actualizaciones."
},
"photos": {
"title": "Fotos",
"text": "Instantáneas compartidas por la comunidad de todo el hotel."
},
"guilds": {
"title": "Grupos",
"text": "Explora los grupos que los jugadores han creado y a los que se han unido."
},
"leaderboards": {
"title": "Tablas de clasificación",
"text": "Quién está en la cima esta temporada en las estadísticas del hotel."
}
}
},
"guilds": {
"title": "Grupos",
"subtitle": "Explora los grupos que los jugadores han creado y a los que se han unido",
"empty": "Aún no hay grupos.",
"unnamedGuild": "Grupo sin nombre",
"noDescription": "Sin descripción"
},
"guild": {
"allGuilds": "← Todos los grupos",
"unnamedGuild": "Grupo sin nombre",
"noDescription": "Sin descripción",
"memberSingular": "Miembro",
"memberPlural": "Miembros",
"founded": "Fundado",
"forumLink": "Foro →",
"discussion": "Discusión",
"membersTitle": "Miembros",
"memberLowerSingular": "miembro",
"memberLowerPlural": "miembros",
"noMembers": "No hay miembros.",
"owner": "Dueño",
"noMotto": "Sin lema"
},
"guildForum": {
"backToGuild": "← Volver al grupo",
"unnamedGuild": "Grupo sin nombre",
"forumTitle": "{guild} — Foro",
"threadSingular": "hilo",
"threadPlural": "hilos",
"newThread": "+ Nuevo hilo",
"empty": "Aún no hay hilos en este foro.",
"colSubject": "Asunto",
"colAuthor": "Autor",
"colPosts": "Mensajes",
"colDate": "Fecha",
"noSubject": "(sin asunto)",
"pinned": "Fijado",
"locked": "Bloqueado",
"userNumber": "Usuario #{id}",
"unknown": "Desconocido",
"success": {
"posted": "Thread posted."
}
},
"guildForumNew": {
"backToForum": "← Volver al foro",
"unnamedGuild": "Grupo sin nombre",
"title": "Nuevo hilo",
"subtitle": "en el foro de {guild}",
"subjectLabel": "Asunto",
"subjectPlaceholder": "Asunto del hilo",
"messageLabel": "Mensaje",
"messagePlaceholder": "Escribe tu mensaje inicial…",
"postThread": "Publicar hilo",
"cancel": "Cancelar",
"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": "Tienda",
"subtitle": "Recarga tu cuenta y obtén paquetes exclusivos, moneda e insignias.",
"browsingCategory": "Explorando los paquetes de {category}.",
"all": "Todos",
"allPackages": "Todos los paquetes",
"packagesAvailable": "{count, plural, one {# paquete disponible} other {# paquetes disponibles}}",
"empty": "No hay paquetes disponibles ahora mismo.",
"buy": "Comprar",
"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": "Recargar con PayPal",
"subtitle": "Paga de forma segura con PayPal y tus créditos se añaden en cuanto se procesa el pago.",
"cancelled": "El pago fue cancelado — no se realizó ningún cobro.",
"chooseAmount": "Elige un monto",
"notConfiguredPre": "PayPal aún no está configurado. Un administrador debe configurar",
"notConfiguredAnd": "y",
"notConfiguredOptional": "(y opcionalmente",
"notConfiguredPost": "para sandbox vs. producción).",
"balanceTitle": "Tu saldo",
"signedInAs": "Conectado como {username}",
"credits": "Créditos",
"creditsPerUnit": "Créditos por 1.00 {currency}",
"rateLine": "Recibes <strong>{amount}</strong> créditos por 1.00 {currency}. Los créditos aparecen en el juego la próxima vez que inicies sesión."
},
"marketplace": {
"title": "Mercado",
"subtitle": "Explora muebles y rarezas listados por jugadores. Los listados se colocan en el juego y se actualizan en vivo — entra al hotel para hacer una oferta.",
"activeOffers": "Ofertas activas",
"sellers": "Vendedores",
"totalValue": "Valor total",
"activeListings": "Listados activos",
"mostRecentFirst": "Más recientes primero",
"empty": "No hay ofertas activas en el mercado ahora mismo. Vuelve más tarde.",
"colOffer": "Oferta",
"colItem": "Artículo",
"colSeller": "Vendedor",
"colPrice": "Precio",
"colListed": "Publicado",
"itemLabel": "Artículo #{id}",
"userLabel": "Usuario #{id}",
"justNow": "ahora mismo",
"minutesAgo": "hace {count}m",
"hoursAgo": "hace {count}h",
"daysAgo": "hace {count}d"
},
"rares": {
"title": "Valores raros",
"subtitle": "Obtén una visión general de todas las rarezas del hotel, agrupadas por categoría.",
"empty": "Actualmente no tenemos rarezas listadas aquí.",
"rareCount": "{count, plural, one {# rareza} other {# rarezas}}",
"viewRares": "Ver rarezas →"
},
"rareCategory": {
"rareCount": "{count, plural, one {# rareza en esta categoría} other {# rarezas en esta categoría}}",
"allRares": "← Todas las rarezas",
"empty": "Aún no hay rarezas listadas en esta categoría.",
"colRare": "Rareza",
"colCredits": "Créditos",
"colCurrency": "Moneda",
"creditsValue": "{value} créditos",
"duckets": "Duckets",
"diamonds": "Diamantes",
"credits": "Créditos"
},
"redeem": {
"title": "Canjear un vale",
"subtitle": "¿Tienes un código de vale? Introdúcelo abajo para añadir la recompensa a tu cuenta.",
"enterCode": "Ingresa tu código",
"oncePerAccount": "Cada vale solo puede canjearse una vez por cuenta.",
"balanceTitle": "Tu saldo",
"signedInAs": "Conectado como {username}",
"credits": "Créditos",
"instantCredit": "Las recompensas canjeadas se acreditan al instante y aparecen en el juego la próxima vez que inicies sesión."
},
"help": {
"title": "Centro de ayuda",
"subtitle": "Encuentra guías, temas de soporte y las reglas del hotel — todo lo que necesitas para obtener ayuda.",
"myTickets": "Mis tickets →",
"topicsTitle": "Temas de soporte",
"topicsSubtitle": "Explora guías y respuestas a preguntas frecuentes",
"topicsEmpty": "Aún no hay temas de ayuda.",
"rulesTitle": "Reglas del hotel",
"rulesSubtitle": "Por favor, léelas antes de pasar el rato en el hotel",
"rulesEmpty": "Aún no hay reglas publicadas.",
"categoryEmpty": "No hay reglas en esta categoría."
},
"helpCategory": {
"back": "← Centro de ayuda",
"topicSubtitle": "Tema del centro de ayuda",
"moreTitle": "Más temas de ayuda",
"moreSubtitle": "Ir a otro tema de soporte"
},
"helpTickets": {
"title": "Tickets de ayuda",
"subtitle": "Envía un ticket al equipo y sigue tus solicitudes abiertas.",
"statTotal": "Total de tickets",
"statOpen": "Abiertos",
"statClosed": "Cerrados",
"newTitle": "Nuevo ticket",
"newSubtitle": "Describe tu problema y el equipo hará seguimiento",
"subjectPlaceholder": "Asunto",
"contentPlaceholder": "Describe tu problema…",
"submit": "Enviar ticket",
"listTitle": "Tus tickets",
"listSubtitle": "Todas las solicitudes que has enviado al equipo",
"listEmpty": "Aún no tienes tickets.",
"colId": "ID",
"colSubject": "Asunto",
"colStatus": "Estado",
"colCreated": "Creado",
"statusOpen": "Abierto",
"statusClosed": "Cerrado",
"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": "Solicitar unirte al equipo de {hotel}",
"subtitle": "Abrimos solicitudes de personal de vez en cuando. Si encuentras un puesto en el que crees que encajarías perfectamente, no dudes en solicitarlo.",
"noPositionsTitle": "No hay puestos abiertos",
"noPositionsBody": "Actualmente no hay puestos abiertos. Vuelve más tarde para comprobar si tenemos alguna vacante. Gracias por tu interés.",
"noDeadline": "Sin fecha límite",
"deadline": "Fecha límite de solicitud: {date}",
"alreadyApplied": "Ya has solicitado {rank}",
"aboutYou": "Sobre ti",
"aboutPlaceholder": "Cuéntanos por qué serías un gran {rank}…",
"applyFor": "Solicitar {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": "Solicitar unirte al equipo de {hotel}",
"subtitle": "Abrimos solicitudes de equipo periódicamente. ¡Si ves un equipo al que encajas, no dudes en solicitarlo!",
"noPositionsTitle": "No hay puestos de equipo abiertos",
"noPositionsBody": "Actualmente no hay puestos de equipo abiertos. Vuelve más tarde para comprobar si hay nuevas vacantes. ¡Gracias!",
"pending": "Tu solicitud está pendiente",
"aboutYou": "Sobre ti",
"aboutPlaceholder": "Cuéntanos por qué serías ideal para {rank}…",
"applyFor": "Solicitar {rank}",
"success": {
"submitted": "Application submitted — staff will review it soon."
},
"errors": {
"empty": "Please write at least 10 characters about yourself.",
"invalid": "Invalid application.",
"duplicate": "You have already applied for this team.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"radio": {
"title": "Radio",
"subtitle": "Sintoniza la radio del hotel — sesiones de DJ en vivo, solicitudes y saludos.",
"nowPlaying": "Reproduciendo ahora",
"nothingPlaying": "No se está reproduciendo nada ahora mismo.",
"onAir": "Al aire: {dj}",
"noDj": "No hay DJ al aire.",
"audioUnsupported": "Tu navegador no soporta el elemento de audio.",
"streamOffline": "La transmisión está actualmente fuera de línea.",
"exploreTitle": "Explora la radio",
"exploreSubtitle": "Horario, saludos, solicitudes y más",
"linkSchedule": "Horario",
"linkScheduleText": "Nuestra programación semanal de DJs y programas.",
"linkShouts": "Saludos",
"linkShoutsText": "Saludos y solicitudes de la comunidad.",
"linkRequests": "Solicitudes",
"linkRequestsText": "Pídele al DJ que ponga tu canción favorita.",
"linkApply": "Solicitar ser DJ",
"linkApplyText": "Únete al equipo y sal al aire.",
"linkLeaderboard": "Tabla de clasificación",
"linkLeaderboardText": "Los mejores oyentes clasificados por puntos obtenidos.",
"todayTitle": "Horario de hoy",
"todayTitleWithDay": "Horario de hoy · {day}",
"todaySubtitle": "Lo que hay al aire hoy",
"fullWeek": "Semana completa →",
"noShowsToday": "No hay programas programados para hoy.",
"colTime": "Hora",
"colShow": "Programa",
"colDj": "DJ",
"untitledShow": "Programa sin título",
"userNumber": "Usuario #{id}"
},
"radioSchedule": {
"title": "Horario de radio",
"subtitle": "Nuestra programación semanal de DJs y programas",
"empty": "Aún no hay programas programados.",
"colDay": "Día",
"colTime": "Hora",
"colDj": "DJ",
"colShow": "Programa",
"noShows": "Sin programas"
},
"radioShouts": {
"title": "Saludos de radio",
"subtitle": "Saludos y solicitudes de la comunidad",
"postTitle": "Publicar un saludo",
"postSubtitle": "Envía un mensaje al DJ al aire",
"messageLabel": "Tu mensaje",
"messagePlaceholder": "Envía un saludo al DJ…",
"shoutButton": "Saludar",
"loginToPost": "Inicia sesión para publicar un saludo.",
"latestTitle": "Últimos saludos",
"latestSubtitle": "Los mensajes más recientes de los oyentes",
"empty": "Aún no hay saludos. ¡Sé el primero!",
"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": "Concursos de radio",
"subtitle": "Sintoniza y participa en nuestros últimos concursos al aire",
"empty": "Aún no hay concursos.",
"contestLabel": "Concurso #{id}",
"dateUnknown": "Fecha desconocida"
},
"radioGiveaways": {
"title": "Sorteos de radio",
"subtitle": "Escucha para tener la oportunidad de ganar en nuestros sorteos de radio",
"empty": "Aún no hay sorteos.",
"giveawayLabel": "Sorteo #{id}",
"dateUnknown": "Fecha desconocida"
},
"radioLeaderboard": {
"title": "Tabla de clasificación de oyentes",
"subtitle": "Top 50 oyentes por puntos obtenidos sintonizando la radio",
"empty": "Aún no hay puntos de oyente que mostrar.",
"colRank": "Rango",
"colAvatar": "Avatar",
"colListener": "Oyente",
"colPoints": "Puntos"
},
"radioApply": {
"title": "Solicitar ser DJ de radio",
"subtitle": "Cuéntanos sobre ti y por qué serías ideal para la radio",
"latestTitle": "Tu última solicitud",
"statusLabel": "Estado:",
"submittedOn": "· enviada el {date}",
"submitAgain": "Puedes enviarla de nuevo abajo si tus datos han cambiado.",
"formTitle": "Formulario de solicitud",
"formSubtitle": "Todos los campos marcados como obligatorios deben completarse",
"realNameLabel": "Nombre real",
"realNamePlaceholder": "Tu nombre completo",
"ageLabel": "Edad",
"availabilityLabel": "Disponibilidad",
"availabilityPlaceholder": "¿Qué días y horarios puedes transmitir?",
"musicStyleLabel": "Estilo musical",
"musicStylePlaceholder": "ej. House, Pop, Hip-Hop",
"experienceLabel": "Experiencia",
"optional": "(opcional)",
"experiencePlaceholder": "¿Tienes experiencia previa como DJ o presentador?",
"motivationLabel": "Motivación",
"motivationPlaceholder": "¿Por qué quieres unirte al equipo de radio?",
"submitButton": "Enviar solicitud",
"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": "Configuración de la cuenta",
"accountSettingsSubtitle": "Gestiona tu perfil, seguridad y cuentas conectadas",
"publicProfile": "Tu perfil público",
"noMotto": "Sin lema",
"noEmail": "Sin correo electrónico registrado",
"changeMotto": "Cambiar lema",
"changeMottoSubtitle": "Se actualiza al instante en el juego si estás en línea",
"mottoPlaceholder": "Tu lema",
"saveMotto": "Guardar lema",
"securityTitle": "Seguridad",
"securitySubtitle": "Autenticación de dos factores",
"securityDescription": "Añade una segunda capa de protección a tu cuenta.",
"twoFactorLink": "Autenticación de dos factores"
},
"settings2fa": {
"backToSettings": "← Configuración",
"title": "Autenticación de dos factores",
"subtitle": "Añade una segunda capa de seguridad con una aplicación de autenticación",
"nowEnabled": "2FA está ahora activado. 🔒",
"disabledNotice": "2FA ha sido desactivado.",
"badCode": "Ese código no era válido — inténtalo de nuevo.",
"noAppKeyPrefix": "2FA no está disponible hasta que",
"noAppKeyMiddle": "esté configurada (la misma",
"noAppKeySuffix": "que en tu instalación de AtomCMS, para que los secretos existentes sigan siendo legibles).",
"isEnabled": "2FA está activado",
"onYourAccount": "en tu cuenta.",
"disable": "Desactivar 2FA",
"scanOrEnter": "Escanea o ingresa esta clave",
"scanInstructions": "Añade esto a Google Authenticator / Authy, luego ingresa el código de 6 dígitos para confirmar.",
"manualKey": "Clave manual:",
"codePlaceholder": "Código de 6 dígitos",
"confirm": "Confirmar",
"enableIntro": "Añade una segunda capa de seguridad con una aplicación de autenticación.",
"enable": "Activar 2FA"
},
"title": "Cuentas conectadas",
"subtitle": "Vincula una cuenta social para iniciar sesión con un clic",
"connected": "Conectado",
"unavailable": "No disponible",
"login": {
"title": "Iniciar sesión",
"subtitle": "Bienvenido de nuevo — inicia sesión para entrar al hotel.",
"subtitle2fa": "Ingresa el código de 6 dígitos de tu autenticador.",
"usernamePlaceholder": "Usuario",
"passwordPlaceholder": "Contraseña",
"codePlaceholder": "Código 2FA",
"pleaseWait": "Por favor espera…",
"verify": "Verificar",
"signIn": "Iniciar sesión",
"or": "o",
"noAccount": "¿No tienes cuenta?",
"createOne": "Crea una",
"forgotPassword": "¿Olvidaste tu contraseña?",
"errorInvalidCredentials": "Usuario o contraseña inválidos",
"errorInvalid2fa": "Código 2FA inválido",
"welcomeBack": "Bienvenido de nuevo",
"welcomeBackSub": "Inicia sesión para continuar en {hotelName}",
"errorUnverified": "Please verify your email before signing in.",
"errorCaptcha": "Captcha verification failed. Please try again."
},
"register": {
"title": "Crear cuenta",
"subtitle": "Únete al hotel — solo toma un momento.",
"username": "Usuario",
"email": "Correo electrónico",
"password": "Contraseña",
"confirmPassword": "Repetir contraseña",
"usernamePlaceholder": "Usuario",
"emailPlaceholder": "Correo electrónico",
"passwordPlaceholder": "Contraseña (mín. 6 caracteres)",
"confirmPasswordPlaceholder": "Repetir contraseña",
"selectOutfit": "Selecciona tu atuendo",
"termsAccept": "Soy mayor de 18 años y acepto los términos y reglas de {hotel}.",
"createAccount": "Crear cuenta",
"creatingAccount": "Creando cuenta...",
"redirecting": "Redirigiendo a tu cuenta...",
"alreadyHaveAccount": "¿Ya tienes una cuenta? ¡Inicia sesión!",
"register": "Registrarse",
"termsError": "Debes aceptar los términos y reglas para registrarte.",
"usernameError": "El usuario es obligatorio.",
"emailError": "Se requiere un correo electrónico válido.",
"passwordError": "La contraseña debe tener al menos 6 caracteres.",
"confirmPasswordError": "Las contraseñas no coinciden.",
"termsRequired": "Debes aceptar los términos y reglas.",
"usernameRequired": "El usuario es obligatorio.",
"emailRequired": "El correo electrónico es obligatorio.",
"passwordRequired": "La contraseña es obligatoria.",
"passwordsDontMatch": "Las contraseñas no coinciden.",
"alreadyHaveAccountPre": "¿Ya tienes una cuenta?",
"alreadyHaveAccountLink": "Iniciar sesión",
"whoIsOnline": "Quién está en línea",
"usersOnline": "{count} en línea"
},
"forgot": {
"title": "Restablecer contraseña",
"subtitle": "Te enviaremos por correo electrónico un enlace seguro para establecer una nueva contraseña.",
"sentNotice": "Si ese correo está registrado, se ha enviado un enlace de restablecimiento. Revisa tu bandeja de entrada.",
"emailPlaceholder": "Tu correo electrónico",
"sendResetLink": "Enviar enlace de restablecimiento",
"backToLogin": "Volver al inicio de sesión",
"errorCaptcha": "Captcha verification failed. Please try again."
},
"reset": {
"title": "Establecer una nueva contraseña",
"subtitle": "Elige una contraseña segura que no uses en otros sitios.",
"passwordPlaceholder": "Nueva contraseña (mín. 6 caracteres)",
"resetPassword": "Restablecer contraseña",
"backToLogin": "Volver al inicio de sesión"
},
"verify": {
"verifiedTitle": "Todo está listo",
"verifiedSubtitle": "Correo electrónico verificado",
"verifiedBody": "Tu dirección de correo electrónico ha sido verificada. Ya puedes iniciar sesión y jugar.",
"goToLogin": "Ir al inicio de sesión",
"alreadyTitle": "Ya verificado",
"alreadySubtitle": "Nada más que hacer",
"alreadyBody": "Esta dirección de correo electrónico ya ha sido confirmada.",
"unavailableTitle": "Inténtalo de nuevo en breve",
"unavailableSubtitle": "Servidor inaccesible",
"unavailableBody": "No pudimos contactar al servidor para verificar tu correo. Por favor, intenta el enlace de nuevo en un momento.",
"invalidTitle": "Verificación de correo electrónico",
"invalidSubtitle": "Enlace inválido o expirado",
"invalidBody": "Este enlace de verificación no es válido. Asegúrate de haber abierto el enlace completo de tu correo, o solicita uno nuevo.",
"backToLogin": "Volver al inicio de sesión"
},
"banned": {
"title": "Has sido baneado",
"subtitle": "Cuenta suspendida",
"body": "Tu cuenta ha sido suspendida del hotel.",
"reasonLabel": "Motivo:",
"permanent": "Este baneo es permanente.",
"expires": "Expira el {date}.",
"contactStaff": "Si crees que esto es un error, contacta al equipo."
},
"maintenance": {
"title": "{hotel} está en mantenimiento",
"subtitle": "Volveremos en breve",
"staffCanLogIn": "El equipo aún puede iniciar sesión."
},
"admin": {
"nav": {
"overview": "Resumen",
"dashboard": "Panel",
"content": "Contenido",
"articles": "Artículos",
"tags": "Etiquetas",
"navigator": "Navegador",
"helpCenter": "Centro de ayuda",
"advertisements": "Anuncios",
"writeableBoxes": "Cajas editables",
"photos": "Fotos",
"tickets": "Tickets",
"events": "Events",
"polls": "Polls",
"banners": "Banners",
"prefixes": "Prefixes",
"usersAndAccess": "Usuarios y acceso",
"users": "Usuarios",
"bans": "Sanciones",
"ipManagement": "Gestión de IP",
"vpn": "VPN",
"applications": "Solicitudes",
"teams": "Equipos",
"permissions": "Permisos",
"onlineUsers": "Online users",
"moderation": "Moderation",
"economy": "Economía",
"catalog": "Catálogo",
"shop": "Tienda",
"transactions": "Transacciones",
"vouchers": "Vales",
"subscriptions": "Suscripciones",
"rareValues": "Valores raros",
"badges": "Insignias",
"achievements": "Logros",
"calendar": "Calendario",
"radio": "Radio",
"radioHistory": "Historial de radio",
"radioBanners": "Banners",
"radioEmbed": "Incrustar",
"radioApiKeys": "Claves API",
"radioModeration": "Moderación",
"radioSettings": "Ajustes",
"radioMonitoring": "Monitoreo",
"radioPoints": "Puntos",
"radioRanks": "Rangos",
"radioAutodj": "Auto DJ",
"system": "Sistema",
"commandocentrum": "Centro de comandos",
"emulator": "Emulador",
"alerts": "Alertas",
"logs": "Registros",
"auditLog": "Audit log",
"analytics": "Analytics",
"devops": "DevOps",
"wordFilter": "Filtro de palabras",
"maintenance": "Mantenimiento",
"rooms": "Salas",
"emailTemplates": "Plantillas de correo",
"theme": "Tema",
"media": "Multimedia",
"favicon": "Favicon",
"sounds": "Sonidos",
"translations": "Traducciones",
"import": "Importar",
"settings": "Ajustes",
"backToSite": "Volver al sitio",
"housekeeping": "Housekeeping",
"hotelManagementPanel": "Panel de gestión del hotel",
"rankLabel": "Rango {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",
"community": "Community",
"monitoring": "Monitoring",
"staffAccess": "Ranks & permissions",
"multiAccounts": "Multi-accounts",
"chatLog": "Chat log",
"commandLog": "Command log",
"tradeLog": "Trade log",
"tools": "Tools",
"guilds": "Guilds",
"itemsBase": "Items base",
"adminMenu": "Admin menu",
"studio": "Studio"
},
"dashboard": {
"title": "Panel",
"subtitle": "Resumen del hotel y estado en vivo",
"playersOnline": "Jugadores en línea",
"articles": "Artículos",
"activeBans": "Sanciones activas",
"database": "Base de datos",
"databaseConnected": "Conectada",
"databaseDown": "Caída",
"usersByRank": "Usuarios por rango",
"noAccountsToBreakDown": "Aún no hay cuentas que desglosar",
"rankLabel": "Rango {rank}",
"rankWithCount": "Rango {rank}: {count} cuentas",
"recentStaffActivity": "Actividad reciente del equipo",
"viewAll": "Ver todo",
"noStaffActivityLogged": "Aún no se ha registrado actividad del equipo"
},
"articles": {
"title": "Artículos",
"subtitle": "Artículos de noticias — 50 más recientes",
"newArticle": "+ Nuevo artículo",
"edit": "Editar",
"delete": "Eliminar",
"noArticles": "Aún no hay artículos",
"confirmDelete": "¿Estás seguro de que quieres eliminar \"{title}\"?",
"colTitle": "Título",
"colSlug": "Slug",
"colAuthor": "Autor",
"colCreated": "Creado",
"colActions": "Acciones",
"form": {
"title": "Título",
"titlePlaceholder": "Título del artículo",
"slug": "Slug",
"slugPlaceholder": "slug-url-del-artículo",
"category": "Categoría",
"categoryPlaceholder": "Selecciona una categoría",
"body": "Contenido",
"bodyPlaceholder": "Escribe el contenido del artículo…",
"image": "Imagen",
"imagePlaceholder": "https://example.com/imagen.png",
"thumbnail": "Miniatura",
"thumbnailPlaceholder": "https://example.com/miniatura.png",
"published": "Publicado",
"featured": "Destacado",
"save": "Guardar artículo",
"saving": "Guardando…",
"deleteArticle": "Eliminar artículo",
"deleteConfirm": "Esta acción no se puede deshacer. El artículo se eliminará permanentemente.",
"cancel": "Cancelar"
}
},
"tags": {
"title": "Etiquetas",
"subtitle": "Etiquetas / categorías de artículos",
"addTag": "Añadir etiqueta",
"name": "Nombre",
"namePlaceholder": "Nombre de la etiqueta",
"backgroundColour": "Color de fondo",
"createTag": "Crear etiqueta",
"editTag": "Editar etiqueta",
"updateTag": "Actualizar etiqueta",
"deleteTag": "Eliminar etiqueta",
"confirmDelete": "¿Eliminar \"{name}\"?",
"noTags": "Aún no hay etiquetas",
"colId": "ID",
"colTag": "Etiqueta",
"colColour": "Color",
"colUsedBy": "Usada por",
"colCreated": "Creada",
"colActions": "Acciones"
},
"navigation": {
"title": "Navegador",
"flatCategories": "Categorías planas",
"publicRooms": "Salas públicas",
"addCategory": "Añadir categoría",
"editCategory": "Editar categoría",
"deleteCategory": "Eliminar categoría",
"categoryName": "Nombre de categoría",
"categoryNamePlaceholder": "ej. Relax y Charla",
"categoryOrder": "Orden",
"roomName": "Nombre de sala",
"roomNamePlaceholder": "ej. Sala de Bienvenida",
"roomId": "ID de sala",
"roomIdPlaceholder": "ID numérico de la sala",
"save": "Guardar",
"cancel": "Cancelar",
"noCategories": "Aún no hay categorías",
"noPublicRooms": "Aún no hay salas públicas",
"colId": "ID",
"colName": "Nombre",
"colOrder": "Orden",
"colRooms": "Salas",
"colActions": "Acciones"
},
"helpCenter": {
"title": "Centro de ayuda",
"subtitle": "Gestión de entradas de soporte y FAQ",
"entries": "Entradas",
"newEntry": "+ Nueva entrada",
"edit": "Editar",
"delete": "Eliminar",
"noEntries": "Aún no hay entradas",
"confirmDelete": "¿Eliminar \"{title}\"?",
"colId": "ID",
"colTitle": "Título",
"colCategory": "Categoría",
"colCreated": "Creada",
"colActions": "Acciones",
"form": {
"title": "Título",
"titlePlaceholder": "Título de la entrada",
"category": "Categoría",
"categoryPlaceholder": "Seleccionar categoría",
"body": "Contenido",
"bodyPlaceholder": "Escribe la respuesta…",
"save": "Guardar entrada",
"saving": "Guardando…",
"deleteEntry": "Eliminar entrada",
"cancel": "Cancelar"
}
},
"ads": {
"title": "Anuncios",
"subtitle": "Gestionar anuncios del hotel y banners promocionales",
"newAd": "+ Nuevo anuncio",
"edit": "Editar",
"delete": "Eliminar",
"noAds": "Aún no hay anuncios",
"confirmDelete": "¿Eliminar este anuncio?",
"colId": "ID",
"colName": "Nombre",
"colImage": "Imagen",
"colUrl": "URL",
"colViews": "Vistas",
"colStatus": "Estado",
"colCreated": "Creado",
"colActions": "Acciones",
"form": {
"name": "Nombre",
"namePlaceholder": "Nombre del anuncio",
"image": "URL de imagen",
"imagePlaceholder": "https://example.com/banner.png",
"url": "URL de destino",
"urlPlaceholder": "https://example.com",
"enabled": "Activado",
"save": "Guardar anuncio",
"saving": "Guardando…",
"deleteAd": "Eliminar anuncio",
"cancel": "Cancelar"
},
"deleteSuccess": "Advertisement deleted!",
"deleteError": "Failed to delete advertisement.",
"adsCount": "Total ads",
"latest": "Latest",
"mostRecentAd": "Most recent ad",
"allAds": "All advertisements",
"colPreview": "Preview"
},
"writeableBoxes": {
"title": "Cajas editables",
"subtitle": "Paneles de contenido mostrados en el hotel y CMS",
"newBox": "Nueva caja",
"edit": "Editar",
"delete": "Eliminar",
"noBoxes": "Aún no hay cajas editables",
"confirmDelete": "¿Eliminar esta caja?",
"colId": "ID",
"colName": "Nombre",
"colLocation": "Ubicación",
"colUpdated": "Actualizada",
"colActions": "Acciones",
"form": {
"name": "Nombre",
"namePlaceholder": "Nombre de la caja",
"location": "Ubicación",
"locationPlaceholder": "ej. portada, barra lateral",
"content": "Contenido",
"contentPlaceholder": "Escribe el contenido de la caja…",
"enabled": "Activado",
"save": "Guardar caja",
"saving": "Guardando…",
"deleteBox": "Eliminar caja",
"cancel": "Cancelar"
}
},
"photos": {
"title": "Moderación de fotos",
"subtitle": "Fotos recientes de la cámara del juego",
"delete": "Eliminar",
"approve": "Aprobar",
"noPhotos": "No hay fotos que moderar",
"confirmDelete": "¿Eliminar esta foto permanentemente?",
"colId": "ID",
"colPreview": "Vista previa",
"colUser": "Usuario",
"colRoom": "Sala",
"colTimestamp": "Fecha",
"colActions": "Acciones",
"photoAlt": "Foto de usuario #{id}",
"byUser": "por {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": "Usuarios",
"subtitle": "Explorar, buscar y gestionar cuentas del hotel",
"search": "Buscar",
"searchPlaceholder": "Buscar por usuario, correo o ID…",
"searchResults": "{count, plural, one {# resultado} other {# resultados}} para \"{query}\"",
"noResults": "No se encontraron usuarios",
"colId": "ID",
"colUsername": "Usuario",
"colEmail": "Correo",
"colRank": "Rango",
"colOnline": "En línea",
"colRegistered": "Registrado",
"colLastOnline": "Última conexión",
"colActions": "Acciones",
"yes": "Sí",
"no": "No",
"edit": "Editar",
"setRank": "Asignar rango",
"disconnect": "Desconectar",
"alert": "Alerta",
"ban": "Sancionar",
"detail": {
"title": "Usuario: {username}",
"subtitle": "Detalles de la cuenta y gestión",
"overview": "Resumen",
"actions": "Acciones",
"username": "Usuario",
"email": "Correo",
"motto": "Lema",
"rank": "Rango",
"credits": "Créditos",
"duckets": "Duckets",
"diamonds": "Diamantes",
"online": "En línea",
"registered": "Registrado",
"lastOnline": "Última conexión",
"ipAddress": "Dirección IP",
"machineId": "ID de máquina",
"sendAlert": "Enviar alerta",
"sendMessage": "Enviar mensaje",
"disconnectUser": "Desconectar usuario",
"banUser": "Sancionar usuario",
"resetPassword": "Restablecer contraseña",
"deleteUser": "Eliminar usuario",
"confirmDelete": "¿Estás seguro de que quieres eliminar a {username}? Esto no se puede deshacer.",
"tabInfo": "Account Info",
"tabBadges": "Badges ({count})",
"tabRooms": "Rooms ({count})",
"tabSanctions": "Sanctions ({count})",
"tabActivity": "Activity"
},
"editForm": {
"title": "Editar usuario: {username}",
"subtitle": "Modificar detalles de la cuenta",
"username": "Usuario",
"usernamePlaceholder": "Usuario",
"email": "Correo",
"emailPlaceholder": "[email protected]",
"motto": "Lema",
"mottoPlaceholder": "Lema del usuario",
"rank": "Rango",
"credits": "Créditos",
"duckets": "Duckets",
"diamonds": "Diamantes",
"save": "Guardar cambios",
"saving": "Guardando…",
"cancel": "Cancelar"
}
},
"bans": {
"title": "Sanciones",
"subtitle": "Gestionar sanciones de cuenta, IP y máquina",
"newBan": "Nueva sanción",
"edit": "Editar",
"delete": "Eliminar",
"noBans": "Aún no hay sanciones",
"confirmDelete": "¿Eliminar esta sanción?",
"colId": "ID",
"colValue": "Valor",
"colType": "Tipo",
"colReason": "Motivo",
"colBannedBy": "Sancionado por",
"colExpires": "Expira",
"colCreated": "Creada",
"colActions": "Acciones",
"form": {
"value": "Valor",
"valuePlaceholder": "Usuario, IP o ID de máquina",
"type": "Tipo",
"typeUser": "Usuario",
"typeIp": "IP",
"typeMachine": "Máquina",
"reason": "Motivo",
"reasonPlaceholder": "Motivo de la sanción",
"expiresAt": "Expira el",
"permanent": "Permanente",
"save": "Guardar sanción",
"saving": "Guardando…",
"cancel": "Cancelar"
}
},
"ip": {
"title": "Gestión de IP",
"subtitle": "Gestionar lista blanca y negra de IP",
"whitelist": "Lista blanca",
"blacklist": "Lista negra",
"addIp": "Añadir IP",
"ipAddress": "Dirección IP",
"ipAddressPlaceholder": "ej. 127.0.0.1",
"reason": "Motivo",
"reasonPlaceholder": "Motivo del listado",
"add": "Añadir",
"remove": "Eliminar",
"confirmRemove": "¿Eliminar esta IP de la {list}?",
"noWhitelistedIps": "No hay IP en lista blanca",
"noBlacklistedIps": "No hay IP en lista negra",
"colIp": "IP",
"colReason": "Motivo",
"colAdded": "Añadida",
"colActions": "Acciones"
},
"vpn": {
"title": "Detección de VPN / Proxy",
"subtitle": "Configurar ajustes de detección de VPN y proxy",
"enabled": "Activado",
"apiKey": "Clave de API",
"apiKeyPlaceholder": "Tu clave de API de detección de VPN",
"apiKeyHint": "Déjalo vacío para desactivar",
"blockOnDetect": "Bloquear al detectar",
"blockOnDetectHint": "Bloquear automáticamente a usuarios detectados detrás de una VPN o proxy",
"save": "Guardar ajustes",
"saving": "Guardando…",
"settingsSaved": "Ajustes de VPN guardados correctamente"
},
"applications": {
"title": "Solicitudes de personal",
"subtitle": "Solicitudes de personal pendientes y revisadas",
"pending": "Pendientes",
"approved": "Aprobadas",
"rejected": "Rechazadas",
"noApplications": "Aún no hay solicitudes",
"colId": "ID",
"colApplicant": "Solicitante",
"colPosition": "Puesto",
"colStatus": "Estado",
"colSubmitted": "Enviada",
"colActions": "Acciones",
"review": "Revisar",
"approve": "Aprobar",
"reject": "Rechazar",
"confirmApprove": "¿Aprobar a {username} para {position}?",
"confirmReject": "¿Rechazar la solicitud de {username} para {position}?",
"detail": {
"title": "Solicitud de {username}",
"subtitle": "Para {position}",
"about": "Sobre el solicitante",
"message": "Mensaje de solicitud",
"status": "Estado",
"submitted": "Enviada",
"noMessage": "No se proporcionó mensaje"
}
},
"teams": {
"title": "Equipos",
"subtitle": "Definir nombres y descripciones de rangos del equipo",
"addRank": "Añadir rango",
"editRank": "Editar rango",
"deleteRank": "Eliminar rango",
"noTeams": "Aún no hay definiciones de rango",
"confirmDelete": "¿Eliminar la definición del rango {id}?",
"colId": "ID",
"colRank": "Rango",
"colName": "Nombre",
"colBadge": "Insignia",
"colColour": "Color",
"colActions": "Acciones",
"form": {
"rankId": "ID de rango",
"rankIdPlaceholder": "ID numérico del rango",
"name": "Nombre",
"namePlaceholder": "ej. Administrador",
"badge": "Código de insignia",
"badgePlaceholder": "ej. ADM001",
"colour": "Color",
"colourPlaceholder": "ej. #ff0000",
"save": "Guardar definición de equipo",
"saving": "Guardando…",
"cancel": "Cancelar"
}
},
"permissions": {
"title": "Permisos",
"subtitle": "Gestionar permisos basados en rangos para el panel de administración",
"addPermission": "Añadir permiso",
"editPermission": "Editar permiso",
"deletePermission": "Eliminar permiso",
"noPermissions": "Aún no hay permisos configurados",
"confirmDelete": "¿Eliminar este permiso?",
"colId": "ID",
"colRank": "Rango",
"colPermission": "Permiso",
"colCreated": "Creado",
"colActions": "Acciones",
"form": {
"rankId": "ID de rango",
"rankIdPlaceholder": "Rango mínimo requerido",
"permission": "Clave de permiso",
"permissionPlaceholder": "ej. admin.articles.manage",
"save": "Guardar permiso",
"saving": "Guardando…",
"cancel": "Cancelar"
}
},
"catalog": {
"title": "Catálogo",
"subtitle": "Explorar y gestionar páginas y artículos del catálogo",
"pages": "Páginas",
"items": "Artículos",
"addPage": "Añadir página",
"editPage": "Editar página",
"deletePage": "Eliminar página",
"addItem": "Añadir artículo",
"editItem": "Editar artículo",
"deleteItem": "Eliminar artículo",
"noPages": "Aún no hay páginas de catálogo",
"noItems": "No hay artículos en esta página",
"confirmDeletePage": "¿Eliminar la página de catálogo \"{name}\"?",
"confirmDeleteItem": "¿Eliminar este artículo?",
"colId": "ID",
"colName": "Nombre",
"colIcon": "Icono",
"colOrder": "Orden",
"colItems": "Artículos",
"colEnabled": "Activado",
"colActions": "Acciones",
"colItemId": "ID del artículo",
"colItemName": "Nombre del artículo",
"colCostCredits": "Coste (créditos)",
"colCostPoints": "Coste (puntos)",
"colLimited": "Limitado",
"pageForm": {
"name": "Nombre",
"namePlaceholder": "Nombre de la página",
"icon": "ID del icono",
"iconPlaceholder": "ID numérico del icono",
"order": "Orden",
"enabled": "Activado",
"parent": "Página padre",
"parentNone": "Ninguna (raíz)",
"save": "Guardar página",
"saving": "Guardando…",
"cancel": "Cancelar"
},
"itemForm": {
"itemId": "ID del artículo",
"itemName": "Nombre del artículo",
"costCredits": "Coste en créditos",
"costDuckets": "Coste en duckets",
"costDiamonds": "Coste en diamantes",
"limitedStack": "Tamaño de lote limitado",
"limitedSold": "Limitados vendidos",
"save": "Guardar artículo",
"saving": "Guardando…",
"cancel": "Cancelar"
}
},
"shop": {
"title": "Tienda",
"subtitle": "Gestionar paquetes y pedidos",
"packages": "Paquetes",
"orders": "Pedidos",
"newPackage": "+ Nuevo paquete",
"edit": "Editar",
"delete": "Eliminar",
"viewOrder": "Ver",
"noPackages": "Aún no hay paquetes en la tienda",
"noOrders": "Aún no hay pedidos",
"confirmDelete": "¿Eliminar este paquete?",
"colId": "ID",
"colName": "Nombre",
"colPrice": "Precio",
"colCurrency": "Moneda",
"colType": "Tipo",
"colSold": "Vendidos",
"colEnabled": "Activado",
"colActions": "Acciones",
"colOrderId": "ID de pedido",
"colCustomer": "Cliente",
"colPackage": "Paquete",
"colAmount": "Cantidad",
"colStatus": "Estado",
"colDate": "Fecha",
"statusPending": "Pendiente",
"statusCompleted": "Completado",
"statusRefunded": "Reembolsado",
"form": {
"name": "Nombre",
"namePlaceholder": "Nombre del paquete",
"description": "Descripción",
"descriptionPlaceholder": "Descripción del paquete",
"price": "Precio",
"currency": "Moneda",
"currencyPlaceholder": "EUR, USD, GBP…",
"type": "Tipo",
"typeCredits": "Créditos",
"typeDuckets": "Duckets",
"typeDiamonds": "Diamantes",
"typeBadge": "Insignia",
"typeFurni": "Mueble",
"typeRank": "Rango",
"amount": "Cantidad",
"badgeCode": "Código de insignia",
"badgeCodePlaceholder": "ej. VIP001",
"rankId": "ID de rango",
"furniItems": "Muebles",
"enabled": "Activado",
"save": "Guardar paquete",
"saving": "Guardando…",
"cancel": "Cancelar"
},
"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"
},
"transactions": {
"title": "Transacciones",
"subtitle": "Registro de pagos de PayPal",
"noTransactions": "Aún no hay transacciones",
"colId": "ID",
"colUser": "Usuario",
"colAmount": "Cantidad",
"colCurrency": "Moneda",
"colPackage": "Paquete",
"colStatus": "Estado",
"colDate": "Fecha",
"colActions": "Acciones",
"statusCompleted": "Completado",
"statusPending": "Pendiente",
"statusFailed": "Fallido",
"statusRefunded": "Reembolsado",
"detail": {
"title": "Transacción #{id}",
"paypalId": "ID de PayPal",
"payerEmail": "Correo del pagador",
"grossAmount": "Importe bruto",
"fee": "Comisión",
"netAmount": "Importe neto"
},
"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": "Vales de tienda",
"subtitle": "Gestionar códigos de vale canjeables",
"newVoucher": "+ Nuevo vale",
"edit": "Editar",
"delete": "Eliminar",
"noVouchers": "Aún no hay vales",
"confirmDelete": "¿Eliminar el vale \"{code}\"?",
"colId": "ID",
"colCode": "Código",
"colValue": "Valor",
"colType": "Tipo",
"colUses": "Usos / Máx",
"colExpires": "Expira",
"colCreated": "Creado",
"colActions": "Acciones",
"form": {
"code": "Código",
"codePlaceholder": "ej. VERANO2025",
"value": "Valor",
"type": "Tipo",
"typeCredits": "Créditos",
"typeDuckets": "Duckets",
"typeDiamonds": "Diamantes",
"typeBadge": "Insignia",
"typeFurni": "Mueble",
"typeRank": "Rango",
"badgeCode": "Código de insignia",
"badgeCodePlaceholder": "ej. VIP001",
"rankId": "ID de rango",
"maxUses": "Usos máximos",
"maxUsesPlaceholder": "0 = ilimitado",
"expiresAt": "Expira el",
"enabled": "Activado",
"save": "Guardar vale",
"saving": "Guardando…",
"cancel": "Cancelar",
"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"
},
"subscriptions": {
"title": "Suscripciones",
"subtitle": "Suscripciones recurrentes activas",
"noSubscriptions": "No hay suscripciones activas",
"cancel": "Cancelar",
"confirmCancel": "¿Cancelar la suscripción de {username}?",
"colId": "ID",
"colUser": "Usuario",
"colPackage": "Paquete",
"colAmount": "Cantidad",
"colInterval": "Intervalo",
"colStarted": "Iniciada",
"colNextBilling": "Próximo cobro",
"colStatus": "Estado",
"colActions": "Acciones",
"statusActive": "Activa",
"statusCancelled": "Cancelada",
"statusExpired": "Expirada"
},
"rareValues": {
"title": "Valores raros",
"subtitle": "Gestionar categorías de valores raros y precios de artículos",
"categories": "Categorías",
"items": "Artículos",
"addCategory": "Añadir categoría",
"editCategory": "Editar categoría",
"deleteCategory": "Eliminar categoría",
"noCategories": "Aún no hay categorías de valores raros",
"confirmDeleteCategory": "¿Eliminar la categoría \"{name}\" y todos sus artículos?",
"colId": "ID",
"colName": "Nombre",
"colItems": "Artículos",
"colUpdated": "Actualizada",
"colActions": "Acciones",
"colItemName": "Nombre del artículo",
"colCredits": "Créditos",
"colPoints": "Puntos",
"colPointType": "Tipo de punto",
"categoryForm": {
"name": "Nombre",
"namePlaceholder": "Nombre de la categoría",
"save": "Guardar categoría",
"saving": "Guardando…",
"cancel": "Cancelar"
},
"itemForm": {
"itemName": "Nombre del artículo",
"itemNamePlaceholder": "ej. Trono",
"credits": "Valor en créditos",
"points": "Valor en puntos",
"pointType": "Tipo de punto",
"pointTypeDuckets": "Duckets",
"pointTypeDiamonds": "Diamantes",
"save": "Guardar artículo",
"saving": "Guardando…",
"cancel": "Cancelar"
}
},
"badges": {
"title": "Insignias",
"subtitle": "Subir, entregar y gestionar el catálogo de insignias",
"upload": "Subir",
"giveBadge": "Dar insignia",
"catalogue": "Catálogo",
"uploadTitle": "Subir una nueva insignia",
"uploadSubtitle": "Subir un archivo de imagen de insignia",
"badgeCode": "Código de insignia",
"badgeCodePlaceholder": "ej. VIP001",
"badgeFile": "Archivo de insignia",
"badgeFileHint": "PNG o GIF, recomendado 40x40",
"uploadButton": "Subir",
"uploading": "Subiendo…",
"giveTitle": "Dar insignia a usuario",
"giveSubtitle": "Conceder una insignia a un usuario específico",
"username": "Usuario",
"usernamePlaceholder": "Usuario objetivo",
"giveButton": "Dar insignia",
"giving": "Dando…",
"catalogueTitle": "Catálogo de insignias",
"catalogueSubtitle": "Todas las insignias disponibles en el hotel",
"noBadges": "No hay insignias en el catálogo",
"search": "Buscar insignias",
"searchPlaceholder": "Buscar por código o nombre…",
"colCode": "Código",
"colImage": "Imagen",
"colName": "Nombre",
"colDescription": "Descripción",
"colActions": "Acciones"
},
"achievements": {
"title": "Logros",
"subtitle": "Lista de solo lectura de logros del juego",
"noAchievements": "No hay logros configurados",
"colId": "ID",
"colName": "Nombre",
"colCategory": "Categoría",
"colLevels": "Niveles",
"colReward": "Recompensa",
"colProgress": "Progreso",
"levelLabel": "Nivel {level}",
"rewardCredits": "{count} créditos",
"rewardPoints": "{count} {points}"
},
"calendar": {
"title": "Campañas de calendario",
"subtitle": "Lista de solo lectura de campañas y eventos del calendario",
"noCampaigns": "Aún no hay campañas de calendario",
"colId": "ID",
"colName": "Nombre",
"colStart": "Inicio",
"colEnd": "Fin",
"colType": "Tipo",
"colReward": "Recompensa",
"colActions": "Acciones",
"detail": {
"title": "Campaña: {name}",
"subtitle": "Detalles del evento de calendario",
"days": "Días",
"dayLabel": "Día {day}",
"reward": "Recompensa",
"noDays": "No hay días configurados para esta campaña"
}
},
"radio": {
"title": "Moderación de radio",
"subtitle": "Latest shouts, DJ applications and on-air schedules (25 most recent of each).",
"moderation": "Moderation",
"shouts": "Saludos",
"applications": "Solicitudes",
"schedules": "Horarios",
"settings": "Ajustes",
"embed": "Incrustar",
"ranks": "Rangos",
"history": "Historial",
"apiKeys": "Claves de API",
"points": "Puntos",
"autoDj": "AutoDJ",
"monitoring": {
"title": "Monitorización de radio",
"subtitle": "Read-only live probe of the configured radio endpoints (radio_now_playing_api_url, radio_listeners_api_url). Each request fails soft with a {timeout}s timeout — no data is written. Configure URLs under Settings.",
"stream": "Stream",
"online": "En línea",
"offline": "Fuera de línea",
"notConfigured": "Not configured",
"nowPlaying": "Now playing",
"nowPlayingApi": "Now-playing API",
"listenersApi": "Listeners API",
"listeners": "Oyentes",
"currentSong": "Canción actual",
"bitrate": "Bitrate",
"status": "Estado",
"noNowPlayingHint": "no now-playing API set",
"noListenersHint": "no listeners API set",
"endpointDiagnostics": "Endpoint diagnostics",
"diagnosticsLegend": "<span class=\"inline-block text-[0.72rem] font-bold px-2 py-0.5 rounded-full bg-green-600/20 text-[var(--color-text)]\">OK</span> reachable · <span class=\"inline-block text-[0.72rem] font-bold px-2 py-0.5 rounded-full bg-[var(--color-primary)]/18 text-[var(--color-text)]\">WARN</span> not configured · <span class=\"inline-block text-[0.72rem] font-bold px-2 py-0.5 rounded-full bg-red-500/22 text-[var(--color-text)]\">ERROR</span> fetch failed / timed out.",
"streamUrl": "Stream URL",
"unreachable": "unreachable",
"refresh": "Actualizar"
},
"user": "User",
"message": "Message",
"posted": "Posted",
"realName": "Real Name",
"age": "Age",
"style": "Style",
"applied": "Applied",
"day": "Day",
"start": "Start",
"end": "End",
"show": "Show",
"status": "Estado",
"active": "active",
"inactive": "inactive",
"hidden": "hidden",
"activeSchedules": "Active schedules",
"noShouts": "No hay saludos que moderar",
"noApplications": "No applications submitted.",
"noSchedules": "No schedules configured.",
"deleteShout": "Eliminar",
"confirmDeleteShout": "¿Eliminar este saludo?",
"pendingApplications": "Solicitudes pendientes",
"settingsForm": {
"title": "Radio Settings",
"subtitle": "Edits write to website_settings (radio_* keys) and bust the runtime settings cache. Booleans use 0 / 1.",
"enabled": "Enabled",
"disabled": "Disabled",
"totalKeys": "Total keys",
"configured": "Configured",
"curatedHint": "curated keys with a value",
"customKeys": "Custom keys",
"saveAll": "Save all",
"singleKey": "Add / overwrite a single key",
"keyPlaceholder": "radio_custom_key",
"valuePlaceholder": "value",
"commentPlaceholder": "comment (optional)",
"saveSingle": "Save",
"otherSettings": "Other radio settings",
"dbError": "Could not load settings (database unavailable). Defaults will be created on save."
},
"embedPage": {
"title": "Radio Embed",
"subtitle": "Copy-ready embed code for the live stream. Read-only — nothing here writes to the database. Configure the stream URL in Radio Settings (radio_stream_url).",
"streamUrl": "Stream URL",
"configured": "Configured",
"missing": "Missing",
"radioName": "Radio name",
"nowPlayingApi": "Now-playing API",
"set": "Set",
"notSet": "Not set",
"noStreamUrl": "No stream URL configured",
"noStreamUrlText": "There is no radio_stream_url set, so there is nothing to embed yet.",
"goToSettings": "Go to Radio Settings",
"livePreview": "Live preview",
"livePreviewText": "This is the bare <audio> player as visitors will see it. Press play to confirm the stream is reachable.",
"source": "Source",
"audioSnippet": "Audio player snippet",
"audioSnippetDesc": "Drop-in HTML5 audio player pointed straight at the stream. Works anywhere plain HTML is allowed.",
"iframeSnippet": "Iframe wrapper snippet",
"iframeSnippetDesc": "Embeds the site’s own radio player page in an iframe — keeps your styling and now-playing info. Adjust width/height to taste.",
"audioUnsupported": "Your browser does not support the audio element."
},
"banners": {
"title": "Banners",
"heading": "Radio Banners",
"description": "Promotional banners shown on the radio page, ordered by sort order.",
"addBanner": "Añadir banner",
"createBanner": "Create banner",
"deleteBanner": "Eliminar banner",
"noBanners": "No banners yet — add one above.",
"existing": "Existing banners ({count})",
"save": "Save",
"delete": "Delete",
"byUser": "by user {id}",
"active": "active",
"hidden": "hidden",
"bannerAlt": "Radio banner",
"statusActive": "Active",
"statusHidden": "Hidden",
"dbError": "Could not load banners (database unavailable).",
"form": {
"imagePath": "Image path / URL",
"imagePathPlaceholder": "/storage/radio/banner.png",
"title": "Title",
"description": "Description",
"sortOrder": "Sort order",
"active": "Active"
}
},
"ranksForm": {
"title": "Rangos de radio",
"subtitle": "DJ / staff ranks assignable on radio applications.",
"dbError": "Could not load ranks (database unavailable).",
"active": "Active",
"addRank": "Add rank",
"name": "Name",
"badgeCode": "Badge code",
"description": "Description",
"createRank": "Create rank",
"existing": "Existing ranks ({count})",
"noRanks": "No ranks yet — add one above.",
"activeLabel": "active",
"inactiveLabel": "inactive",
"save": "Save",
"deleteRank": "Delete rank #{id}"
},
"historyPage": {
"title": "Radio Play History",
"subtitle": "Past DJ shows and airtime (radio_history), most recent first. Read-only log of who was on air, when, and how many listeners tuned in.",
"dbError": "Could not load radio history (database unavailable).",
"showsLogged": "Shows logged",
"onAirNow": "On air now",
"uniqueDjs": "Unique DJs",
"peakListeners": "Peak listeners",
"empty": "No radio history recorded yet.",
"showLog": "Show log ({count})",
"colDj": "DJ",
"colShow": "Show",
"colStarted": "Started",
"colEnded": "Ended",
"colAirtime": "Airtime",
"colListeners": "Listeners",
"colNotes": "Notes",
"onAir": "on air"
},
"apiKeysForm": {
"title": "Claves de API",
"subtitle": "API keys for external radio integrations (radio_api_keys). Keys are generated server-side and shown masked — copy the full value from the database when first issued.",
"dbError": "Could not load API keys (database unavailable).",
"totalKeys": "Total keys",
"active": "Active",
"inactive": "Inactive",
"generateKey": "Generar nueva clave",
"generateHint": "The secret key is generated automatically with cryptographic randomness — you do not enter it.",
"name": "Name",
"namePlaceholder": "AzureCast bridge",
"rateLimit": "Rate limit (requests/min)",
"allowedIps": "Allowed IPs (optional)",
"allowedIpsPlaceholder": "comma-separated, blank = any",
"generate": "Generar",
"existingKeys": "Existing keys ({count})",
"noKeys": "No API keys yet — generate one above.",
"colName": "Name",
"colKey": "Clave",
"colAllowedIps": "Allowed IPs",
"colRateLimit": "Rate limit",
"colLastUsed": "Last used",
"colExpires": "Expires",
"colStatus": "Status",
"colActions": "Acciones",
"maskedHint": "Only the first 8 characters are shown",
"any": "any",
"activeLabel": "active",
"inactiveLabel": "inactive",
"deactivate": "Deactivate",
"activate": "Activate",
"delete": "Delete"
},
"pointsForm": {
"title": "Configuración de puntos de oyente",
"subtitle": "Reward listeners with currency for time spent on the radio. Edits write to website_settings (radio_points_* keys) and bust the runtime settings cache. Booleans use 0 / 1.",
"saved": "Saved",
"points": "Points",
"enabled": "Enabled",
"disabled": "Disabled",
"perMinute": "Per minute",
"paidIn": "paid in {currency}",
"maxPerDay": "Max / day",
"unlimited": "Unlimited",
"minListeners": "Min listeners",
"settings": "Settings",
"pointsEnabled": "Points enabled",
"pointsEnabledHint": "Master switch for awarding listener points.",
"currency": "Currency",
"currencyHint": "Which wallet the points are paid into.",
"pointsPerMinute": "Points per minute",
"pointsPerMinuteHint": "Amount awarded for each full minute of listening.",
"maxPerDayHint": "Daily cap per user. Use 0 for unlimited.",
"minListenersHint": "Points are only awarded when at least this many people are tuned in.",
"save": "Guardar configuración de puntos"
},
"autoDjForm": {
"title": "Radio AutoDJ",
"subtitle": "Fallback playlist (radio_auto_dj_playlist) the radio rotates through when no live DJ is streaming. Ordered by sort order then title.",
"dbError": "Could not load the AutoDJ playlist (database unavailable).",
"tracks": "Tracks",
"active": "Active",
"inactive": "Inactive",
"addTrack": "Add track",
"titlePlaceholder": "Track title",
"artist": "Artist",
"album": "Album",
"artworkUrl": "Artwork URL",
"artworkUrlPlaceholder": "https://…/cover.png",
"duration": "Duration (seconds)",
"durationPlaceholder": "e.g. 215",
"sortOrder": "Sort order",
"playlist": "Playlist ({count})",
"noTracks": "No AutoDJ tracks yet — add one above.",
"colOrder": "Order",
"colTitle": "Title",
"colArtist": "Artist",
"colAlbum": "Album",
"colDuration": "Duration",
"colPlays": "Plays",
"colLastPlayed": "Last played",
"colStatus": "Status",
"colActions": "Actions",
"activeLabel": "active",
"inactiveLabel": "inactive",
"deactivate": "Deactivate",
"activate": "Activate",
"delete": "Delete",
"trackTitle": "Title"
},
"moderationPage": {
"title": "DJ Moderation",
"subtitle": "Review and remove radio shouts (50 most recent).",
"recentShouts": "Recent Shouts ({count})"
}
},
"commandocentrum": {
"title": "Centro de comandos",
"subtitle": "Diagnósticos, controles RCON y gestión de usuarios",
"diagnostics": "Diagnósticos",
"rcon": "RCON",
"userActions": "Acciones de usuario",
"diagnosticsTitle": "Diagnósticos del emulador",
"memoryUsage": "Uso de memoria",
"uptime": "Tiempo activo",
"onlineUsers": "Usuarios en línea",
"roomsLoaded": "Salas cargadas",
"refresh": "Actualizar",
"rconTitle": "Comandos RCON",
"rconPlaceholder": "Introduce un comando RCON…",
"rconSend": "Enviar",
"rconSending": "Enviando…",
"rconResponse": "Respuesta",
"userActionsTitle": "Acciones de usuario",
"username": "Usuario",
"usernamePlaceholder": "Usuario objetivo",
"action": "Acción",
"execute": "Ejecutar",
"actions": {
"disconnect": "Desconectar",
"alert": "Enviar alerta",
"giveCredits": "Dar créditos",
"giveBadge": "Dar insignia",
"givePoints": "Dar puntos",
"ban": "Sancionar",
"kick": "Expulsar"
},
"messagePlaceholder": "Mensaje (para alertas)…",
"amountPlaceholder": "Cantidad…",
"badgePlaceholder": "Código de insignia…"
},
"emulator": {
"title": "Configuración del emulador",
"subtitle": "Ver y editar ajustes del emulador y textos de localización",
"settings": "Ajustes",
"texts": "Textos",
"search": "Buscar",
"searchPlaceholder": "Buscar claves…",
"noSettings": "No se encontraron ajustes",
"noTexts": "No se encontraron textos",
"edit": "Editar",
"save": "Guardar",
"saving": "Guardando…",
"cancel": "Cancelar",
"colKey": "Clave",
"colValue": "Valor",
"colType": "Tipo",
"colActions": "Acciones",
"editDialog": {
"title": "Editar: {key}",
"value": "Valor",
"valuePlaceholder": "Introduce el valor…",
"save": "Guardar cambios",
"cancel": "Cancelar"
}
},
"alerts": {
"title": "Alertas",
"subtitle": "Enviar alertas a todo el hotel y ver alertas recientes",
"sendAlert": "Enviar alerta al hotel",
"recentAlerts": "Alertas recientes",
"noRecentAlerts": "No hay alertas recientes",
"form": {
"title": "Título de la alerta",
"titlePlaceholder": "ej. Mantenimiento del servidor en 10 minutos",
"message": "Mensaje de alerta",
"messagePlaceholder": "Escribe el mensaje de alerta…",
"type": "Tipo",
"typeHotel": "Alerta a todo el hotel",
"typeStaff": "Solo equipo",
"urgent": "Urgente",
"send": "Enviar alerta",
"sending": "Enviando…",
"description": "Broadcasts via RCON <code>hotelalert</code> to online users."
},
"colId": "ID",
"colTitle": "Título",
"colSentBy": "Enviada por",
"colType": "Tipo",
"colDate": "Fecha",
"colActions": "Acciones",
"noAlerts": "No recent alerts",
"alertsShown": "Shown",
"critical": "Critical",
"warnings": "Warnings",
"unread": "Unread",
"markAllRead": "Mark all read",
"colWhen": "When",
"colSeverity": "Severity",
"colMessage": "Message"
},
"logs": {
"title": "Actividades del equipo",
"subtitle": "Registro de auditoría de acciones del equipo en el panel de administración",
"noLogs": "Aún no se ha registrado actividad del equipo",
"colId": "ID",
"colUser": "Usuario",
"colAction": "Acción",
"colTarget": "Objetivo",
"colDescription": "Descripción",
"colIp": "IP",
"colTimestamp": "Fecha",
"filterByUser": "Filtrar por usuario…",
"filterByAction": "Filtrar por acción…",
"clearFilters": "Limpiar filtros",
"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"
},
"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…"
}
},
"wordfilter": {
"title": "Filtro de palabras",
"subtitle": "Gestionar palabras y frases filtradas en el hotel",
"addWord": "Añadir palabra",
"addWords": "Añadir palabras",
"noWords": "Aún no hay palabras filtradas",
"confirmDelete": "¿Eliminar \"{word}\" del filtro?",
"colId": "ID",
"colWord": "Palabra",
"colAddedBy": "Añadida por",
"colCreated": "Creada",
"colActions": "Acciones",
"form": {
"word": "Palabra",
"wordPlaceholder": "ej. palabrota",
"addMore": "Añadir varias palabras (una por línea)",
"save": "Añadir al filtro",
"saving": "Guardando…",
"cancel": "Cancelar"
},
"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": "Modo de mantenimiento",
"subtitle": "Activar o desactivar el mantenimiento del hotel",
"enabled": "El modo de mantenimiento está activado",
"disabled": "El modo de mantenimiento está desactivado",
"enable": "Activar mantenimiento",
"disable": "Desactivar mantenimiento",
"message": "Mensaje de mantenimiento",
"messagePlaceholder": "¡Volveremos en breve!",
"staffAccess": "Permitir acceso del equipo durante el mantenimiento",
"save": "Guardar ajustes",
"saving": "Guardando…",
"confirmEnable": "Activar el mantenimiento impedirá que todos los usuarios no pertenecientes al equipo accedan al hotel. ¿Continuar?",
"confirmDisable": "¿Desactivar el modo de mantenimiento y restaurar el acceso para todos los usuarios?"
},
"housekeeping": {
"title": "Permisos de Housekeeping",
"subtitle": "Configurar qué rangos pueden acceder a qué secciones de administración",
"addPermission": "Añadir permiso",
"editPermission": "Editar permiso",
"deletePermission": "Eliminar permiso",
"noPermissions": "No hay permisos de housekeeping configurados",
"confirmDelete": "¿Eliminar este permiso?",
"colId": "ID",
"colRank": "Rango",
"colSection": "Sección",
"colActions": "Acciones",
"form": {
"rankId": "ID de rango",
"rankIdPlaceholder": "Rango mínimo",
"section": "Clave de sección",
"sectionPlaceholder": "ej. admin.dashboard",
"save": "Guardar permiso",
"saving": "Guardando…",
"cancel": "Cancelar"
},
"saved": "Saved!",
"deleted": "Deleted!",
"errorOccurred": "An error occurred",
"emptyInput": "Empty input",
"invalidJson": "Invalid JSON",
"imported": "Imported!",
"presetApplied": "Preset applied!",
"cleared": "All Permisos cleared!",
"invalidRank": "Invalid Rango",
"testDone": "Test done: {count} Permisos found",
"testing": "Testing...",
"loading": "Loading...",
"prev": "Previous",
"next": "Next",
"confirmClearAll": "Eliminar ALL Permisos? This Acción cannot be undone!",
"colGroup": "Group",
"colDepends": "Depends on",
"colPermission": "Permiso",
"colDescription": "Descripción",
"colMinRank": "Min. Rango",
"permissionKey": "Clave de permiso",
"minRank": "Min. Rango",
"description": "Descripción",
"permissions": "Permisos",
"permissionsCount": "{count} Permisos",
"permission": "Permiso",
"highestMinRank": "Highest min. Rango: {rank}",
"totalMinRank": "Total min. Rango sum: {total}",
"groupCount": "{count} groups",
"rankCount": "{count} Rangos",
"missingDeps": "{count} missing dependencies",
"dependsOn": "depends on",
"notFound": "not found",
"missing": "(missing)",
"rank": "Rango",
"count": "Count",
"searchPermission": "Buscar Permisos…",
"search": "Buscar",
"manage": "Manage",
"importSelection": "Importar selection",
"noGroup": "No group",
"allGroups": "All groups",
"perGroup": "Permisos per group",
"perRank": "Permisos per Rango",
"rankOverviewHint": "All Permisos grouped by the Rango they are assigned to.",
"tabOverview": "Resumen",
"tabManage": "Manage",
"tabImport": "Importar / Export",
"tabRanks": "Rango Resumen",
"tabPresets": "Preajustes",
"tabTest": "Test",
"tabAudit": "Audit log",
"importPermissions": "Importar Permisos",
"importHint": "Paste a JSON array of Permiso objects. Format: [{ \"permission\": \"...\", \"minRank\": 7, \"description\": \"...\", \"groupName\": \"...\", \"dependsOn\": \"...\" }]",
"importPlaceholder": "Paste JSON here…",
"import": "Importar",
"exportTitle": "Export Permisos",
"exportHint": "Export all Permisos as JSON for backup or batch editing.",
"export": "Export JSON",
"copy": "Copy",
"copied": "Copied!",
"presets": "Permiso Preajustes",
"presetsHint": "Aplicar a predefined set of Permisos for common staff roles.",
"presetModerator": "Moderator",
"presetModeratorDesc": "Basic Moderación tools: Usuario lookup, Sanciones, CFH handling, chat Registros.",
"presetAdmin": "Administrator",
"presetAdminDesc": "Full admin access: Usuarios, Salas, news, Ajustes, Tienda, events, radio & more.",
"presetSuperAdmin": "Super Admin",
"presetSuperAdminDesc": "Complete access to every feature including Permiso management and asset Importar.",
"applyPreset": "Aplicar preset",
"clearAll": "Clear all Permisos",
"testTitle": "Test Rango access",
"testHint": "Enter a Rango number to see which Permisos would be granted.",
"test": "Test",
"auditTitle": "Permiso audit log",
"auditHint": "All changes to housekeeping Permisos are logged.",
"auditLogsAt": "Audit Registros are available on the Audit log page.",
"viewAuditLogs": "Ver audit Registros",
"importedWithErrors": "Imported {count} Permisos with {errors} errors",
"confirmClearAllDesc": "This will Eliminar every Permiso entry from the Base de datos. Are you sure?",
"confirmDeletePermission": "Eliminar this Permiso permanently?",
"confirmBulkDelete": "Eliminar {count} selected Permisos?",
"deleteSelected": "Eliminar {count} selected",
"cancel": "Cancelar",
"confirm": "Confirm",
"auditTime": "Time",
"auditUser": "Usuario",
"auditAction": "Acción",
"auditTarget": "Objetivo",
"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": "Salas",
"subtitle": "Buscar y gestionar salas del hotel",
"search": "Buscar",
"searchPlaceholder": "Buscar por nombre, dueño o ID…",
"searchResults": "{count, plural, one {# sala} other {# salas}} encontradas para \"{query}\"",
"noResults": "No se encontraron salas",
"colId": "ID",
"colName": "Nombre",
"colOwner": "Dueño",
"colUsers": "Usuarios",
"colState": "Estado",
"colCategory": "Categoría",
"colCreated": "Creada",
"colActions": "Acciones",
"stateOpen": "Abierta",
"stateClosed": "Cerrada",
"stateLocked": "Bloqueada",
"stateInvisible": "Invisible",
"detail": {
"title": "Sala: {name}",
"subtitle": "Propiedad de {owner}",
"overview": "Resumen",
"actions": "Acciones",
"description": "Descripción",
"noDescription": "Sin descripción",
"owner": "Dueño",
"users": "Usuarios en línea",
"maxUsers": "Usuarios máximos",
"category": "Categoría",
"state": "Estado",
"tags": "Etiquetas",
"noTags": "Sin etiquetas",
"created": "Creada",
"deleteRoom": "Eliminar sala",
"confirmDelete": "¿Eliminar la sala \"{name}\"? Esto no se puede deshacer.",
"enterRoom": "Entrar a la sala",
"changeOwner": "Cambiar dueño",
"changeOwnerPlaceholder": "Usuario del nuevo dueño"
}
},
"emailTemplates": {
"title": "Plantillas de correo",
"subtitle": "Gestionar plantillas de correo transaccional",
"newTemplate": "+ Nueva plantilla",
"edit": "Editar",
"delete": "Eliminar",
"noTemplates": "Aún no hay plantillas de correo",
"confirmDelete": "¿Eliminar la plantilla \"{name}\"?",
"colId": "ID",
"colName": "Nombre",
"colSubject": "Asunto",
"colKey": "Clave",
"colUpdated": "Actualizada",
"colActions": "Acciones",
"form": {
"name": "Nombre",
"namePlaceholder": "ej. Correo de bienvenida",
"key": "Clave",
"keyPlaceholder": "ej. welcome_email",
"subject": "Asunto",
"subjectPlaceholder": "Línea de asunto del correo",
"body": "Contenido (HTML)",
"bodyPlaceholder": "<p>Estimado {username},</p>",
"variables": "Variables disponibles",
"variablesHint": "{username}, {email}, {hotel_name}",
"save": "Guardar plantilla",
"saving": "Guardando…",
"cancel": "Cancelar"
}
},
"theme": {
"title": "Tema",
"subtitle": "Personalizar la apariencia del CMS",
"presets": "Preajustes",
"colours": "Colores",
"css": "CSS",
"presetsTitle": "Preajustes de tema",
"presetsSubtitle": "Elige un esquema de color predefinido",
"applyPreset": "Aplicar",
"presetApplied": "Preajuste aplicado",
"customiseTitle": "Colores personalizados",
"primary": "Primario",
"secondary": "Secundario",
"accent": "Acento",
"background": "Fondo",
"surface": "Superficie",
"text": "Texto",
"saveColours": "Guardar colores",
"savingColours": "Guardando…",
"cssTitle": "CSS personalizado",
"cssSubtitle": "Añadir CSS personalizado para sobrescribir los estilos del tema",
"cssPlaceholder": "/* Tu CSS personalizado aquí */",
"saveCss": "Guardar CSS",
"savingCss": "Guardando…",
"reset": "Restablecer valores por defecto",
"confirmReset": "¿Restablecer el tema a los valores por defecto?"
},
"media": {
"title": "Biblioteca multimedia",
"subtitle": "Subir y gestionar archivos multimedia",
"upload": "Subir",
"uploadTitle": "Subir un archivo",
"uploadSubtitle": "Arrastra y suelta o haz clic para subir",
"uploadButton": "Elegir archivo",
"uploading": "Subiendo…",
"noFiles": "Aún no hay archivos multimedia",
"delete": "Eliminar",
"confirmDelete": "¿Eliminar este archivo permanentemente?",
"search": "Buscar",
"searchPlaceholder": "Buscar por nombre de archivo…",
"colPreview": "Vista previa",
"colName": "Nombre",
"colSize": "Tamaño",
"colType": "Tipo",
"colUploaded": "Subido",
"colActions": "Acciones",
"copyUrl": "Copiar URL",
"urlCopied": "URL copiada al portapapeles"
},
"settings": {
"title": "Ajustes del CMS",
"subtitle": "Gestionar configuración clave/valor del CMS",
"addSetting": "Añadir ajuste",
"edit": "Editar",
"delete": "Eliminar",
"noSettings": "No se encontraron ajustes",
"confirmDelete": "¿Eliminar el ajuste \"{key}\"?",
"colKey": "Clave",
"colValue": "Valor",
"colUpdated": "Actualizado",
"colActions": "Acciones",
"form": {
"key": "Clave",
"keyPlaceholder": "ej. hotel_name",
"value": "Valor",
"valuePlaceholder": "Valor del ajuste",
"save": "Guardar ajuste",
"saving": "Guardando…",
"cancel": "Cancelar"
},
"keysInDatabase": "{count} keys in database",
"managedInForm": "{count} managed in form",
"documented": "{count} documented",
"saved": "Settings saved.",
"saveFailed": "Could not save settings.",
"saveSettings": "Save settings",
"viewOnly": "You can view settings but need edit permission to change them."
},
"favicon": {
"title": "Favicon",
"subtitle": "Upload and manage the site favicon",
"current": "Current favicon",
"uploadLabel": "Upload favicon",
"uploadHint": "PNG, JPEG, GIF, WebP, ICO or SVG. Max 2MB.",
"upload": "Upload",
"uploading": "Uploading…",
"delete": "Remove",
"deleting": "Removing…",
"saved": "Favicon saved successfully!",
"deleted": "Favicon removed successfully!",
"error": "Something went wrong",
"confirmDelete": "Remove the favicon? The site will no longer show a custom favicon.",
"generator": {
"title": "Generate favicon",
"text": "Text",
"bgColor": "Background color",
"textColor": "Text color",
"rounded": "Rounded corners",
"save": "Save as favicon"
},
"cancel": "Cancel"
},
"import": {
"title": "Import",
"subtitle": "Import assets from external sources into your hotel.",
"badges": "Badges",
"badgesDescription": "Import and manage badge assets from external sources.",
"furni": "Furni",
"furniDescription": "Import furniture definitions, SWF files, and icons.",
"clothing": "Clothing",
"clothingDescription": "Import clothing and wearables for avatars.",
"effects": "Effects",
"effectsDescription": "Import avatar effects and animations.",
"pets": "Pets",
"petsDescription": "Import pet data and icons.",
"clone": "Clone",
"cloneDescription": "Clone existing items from one source to another.",
"upload": "Upload .nitro",
"uploadDescription": "Upload .nitro bundles and icons directly without SWF conversion.",
"sync": "Auto Sync",
"syncDescription": "Automatically import missing furniture from all configured sources.",
"repairIcons": "Repair Icons",
"repairIconsDescription": "Download any missing icon files for furniture already in the database.",
"audit": "Catalog Audit",
"auditDescription": "Scan your catalog for missing entries, broken references, and items missing from clone sources."
},
"translations": {
"title": "Translations",
"subtitle": "Translate your hotel into multiple languages.",
"tabs": {
"cms": "CMS",
"client": "Client (Nitro)",
"emulator": "Emulator"
},
"emulator": {
"title": "Emulator",
"subtitle": "User-facing strings from emulator_settings (commands, wordfilter, pet/matchmaking messages).",
"infoBox": "Configuration settings (ports, timeouts, IDs) do not appear here — use the full settings link. Saved changes are synced to the emulator via RCON.",
"fullSettings": "Full settings"
}
},
"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}"
},
"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"
},
"events": "Events",
"eventsSubtitle": "Hotel events and event types",
"tickets": "Support desk",
"ticketsSubtitle": "CMS tickets, help-center tickets, and reply templates",
"staffAccess": "Ranks & permissions",
"staffAccessSubtitle": "Staff ranks, ACL permissions and housekeeping access",
"analytics": "Analytics",
"analyticsSubtitle": "Hotel activity, retention and economy",
"devops": "DevOps",
"devopsSubtitle": "Service health and emulator errors",
"import": "Import",
"importSubtitle": "Furni, badges, clothing and asset tools"
},
"events": {
"newEvent": "+ New event",
"createTitle": "Create event",
"createSubtitle": "Schedule a new hotel event",
"searchPlaceholder": "Search events…",
"colId": "ID",
"colTitle": "Title",
"colType": "Type",
"colStarts": "Starts",
"colStatus": "Status",
"colActions": "Actions",
"statusPublished": "Published",
"statusDraft": "Draft",
"statusCancelled": "Cancelled",
"statusCompleted": "Completed",
"statRegistrations": "Registrations",
"statPrizes": "Prizes",
"statWinners": "Winners",
"statTime": "Time",
"maxPlayers": "Max: {count}",
"timeUpcoming": "Upcoming",
"timePast": "Past",
"endsAt": "Ends: {date}",
"userFallback": "User #{id}",
"registrationsTitle": "Registrations ({count})",
"noRegistrations": "No registrations yet.",
"noPrizes": "No prizes configured yet.",
"noWinners": "No winners yet.",
"addPrize": "Add prize",
"addWinner": "Add winner",
"formEditTitle": "Edit event",
"formDetailsTitle": "Event details",
"formTitle": "Title",
"formEventType": "Event type",
"formSelectType": "Select type",
"formDescription": "Description",
"formStartsAt": "Starts at",
"formEndsAt": "Ends at",
"formSelectStart": "Select start date",
"formSelectEnd": "Select end date",
"formMaxPlayers": "Max players",
"formUnlimited": "Unlimited",
"formRoomId": "Room ID",
"formOptional": "Optional",
"formImageUrl": "Image URL",
"formSaving": "Saving…",
"formUpdate": "Update event",
"formCreate": "Create event",
"toastUpdated": "Event updated!",
"toastCreated": "Event created!"
},
"polls": {
"newPoll": "+ New poll",
"createTitle": "Create poll",
"createSubtitle": "Create a new community poll or survey",
"searchPlaceholder": "Search polls…",
"colId": "ID",
"colTitle": "Title",
"colStatus": "Status",
"colType": "Type",
"colCreated": "Created",
"colActions": "Actions",
"statusActive": "Active",
"statusDraft": "Draft",
"statusClosed": "Closed",
"typeMultiple": "Multiple choice",
"typeSingle": "Single choice",
"statVoters": "Total voters",
"statQuestions": "Questions",
"statVotes": "Total votes",
"questionsTitle": "Questions ({count})",
"addQuestion": "Add question",
"noQuestions": "No questions yet. Add your first question above.",
"resultsTitle": "Results",
"formEditTitle": "Edit poll",
"formDetailsTitle": "Poll details",
"formTitle": "Title",
"formDescription": "Description",
"formStartsAt": "Starts at",
"formEndsAt": "Ends at",
"formSelectStart": "Select start date",
"formSelectEnd": "Select end date",
"formShowResults": "Show results to voters",
"formAllowMultiple": "Allow multiple answers",
"formSaving": "Saving…",
"formUpdate": "Update poll",
"formCreate": "Create poll",
"toastUpdated": "Poll updated!",
"toastCreated": "Poll created!"
},
"multiAccounts": {
"minAccounts": "Min accounts per cluster",
"resultLimit": "Result limit",
"refresh": "Refresh",
"noClusters": "No clusters found at the current thresholds."
},
"devops": {
"noEmulatorErrors": "No emulator errors found",
"noRecentErrors": "No recent errors"
},
"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})"
},
"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"
}
},
"radioRequests": {
"formTitle": "Submit a request",
"formSubtitle": "Ask the DJ to play your favourite track",
"songLabel": "Song",
"songPlaceholder": "Title of the song",
"artistLabel": "Artist",
"artistPlaceholder": "Name of the artist (optional)",
"submitButton": "Submit request",
"loginToRequest": "Log in to submit a request.",
"latestTitle": "Recent requests",
"latestSubtitle": "The most recently requested songs",
"empty": "No requests yet.",
"colSong": "Song",
"colArtist": "Artist",
"colRequester": "Requester",
"colDate": "Date",
"colStatus": "Status",
"statusPending": "Pending",
"statusApproved": "Approved",
"statusPlayed": "Played",
"success": {
"posted": "Request submitted."
},
"errors": {
"empty": "Please enter a song title or artist.",
"invalid": "Invalid request.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"error": {
"code": "Error",
"title": "Something went wrong",
"subtitle": "The hotel hit an unexpected snag.",
"body": "Try again in a moment. If it keeps happening, contact staff with the reference below.",
"tryAgain": "Try again",
"backHome": "Back home",
"reference": "Reference: {digest}"
},
"notFound": {
"code": "404",
"title": "Page not found",
"subtitle": "This room doesn’t exist — or the furniture was moved.",
"body": "Check the link, or head back to the lobby.",
"backHome": "Back home",
"latestNews": "Latest news"
},
"sessions": {
"title": "Login activity",
"subtitle": "Recent sign-ins and failed attempts on your account",
"recentTitle": "Recent sign-ins",
"recentEmpty": "No sign-ins recorded yet.",
"colWhen": "When",
"colIp": "IP",
"colDevice": "Device",
"failedTitle": "Failed attempts",
"failedSubtitle": "Wrong password on your username",
"unknownDevice": "Unknown device",
"signOutEverywhereTitle": "Sign out everywhere",
"signOutEverywhereDescription": "Ends all website sessions on every device. You will need to sign in again here too.",
"signOutEverywhereButton": "Sign out all sessions",
"successSignedOutAll": "All sessions have been signed out."
},
"guildForumThread": {
"backToForum": "← Back to forum",
"unnamedGuild": "Unnamed guild",
"noSubject": "(no subject)",
"inGuildForum": "{guild} forum",
"pinned": "Pinned",
"locked": "Locked",
"postsTitle": "Posts",
"postsSubtitle": "{count, plural, one {# post} other {# posts}}",
"postsEmpty": "No posts in this thread.",
"userNumber": "User #{id}",
"replyTitle": "Reply",
"replySubtitle": "Add your message to this thread",
"replyPlaceholder": "Write your reply…",
"replySubmit": "Post reply",
"lockedHint": "This thread is locked — new replies are disabled.",
"loginToReply": "Sign in to reply.",
"loginLink": "Log in",
"success": {
"replied": "Reply posted."
},
"errors": {
"invalid": "Please enter a message.",
"notFound": "That thread was not found.",
"locked": "This thread is locked.",
"ratelimit": "You're posting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"helpTicketDetail": {
"backToList": "← Your tickets",
"ticketId": "Ticket #{id}",
"statusOpen": "Open",
"statusClosed": "Closed",
"messagesTitle": "Conversation",
"messagesSubtitle": "{count, plural, one {# message} other {# messages}}",
"you": "You",
"userNumber": "User #{id}",
"replyTitle": "Reply",
"replySubtitle": "Send a follow-up to staff",
"replyPlaceholder": "Write your message…",
"replySubmit": "Send reply",
"closeTitle": "Close ticket",
"closeSubtitle": "Mark this request as resolved when you no longer need help",
"closeSubmit": "Close ticket",
"closedHint": "This ticket is closed. Open a new ticket if you need more help.",
"success": {
"replied": "Reply sent.",
"closed": "Ticket closed."
},
"errors": {
"invalid": "Please enter a message.",
"notFound": "That ticket was not found.",
"closedTicket": "This ticket is closed.",
"moderated": "That message was blocked by moderation.",
"ratelimit": "You're submitting too fast. Please wait a moment and try again.",
"error": "Something went wrong. Please try again."
}
},
"events": {
"title": "Events",
"subtitle": "Upcoming and recent hotel events you can join",
"empty": "No events yet.",
"back": "← Events",
"when": "When",
"status": "Status",
"statusPublished": "Open",
"statusCompleted": "Completed",
"registrations": "Registrations",
"registered": "{count} registered",
"spots": "{count} / {max} spots",
"registerTitle": "Register",
"registerSubtitle": "Save your spot for this event",
"register": "Register for event",
"registering": "Registering…",
"registerSuccess": "You are registered!",
"registerError": "Could not register for this event.",
"loginToRegister": "Log in to register for this event.",
"alreadyRegistered": "You are already registered.",
"eventEnded": "This event has ended.",
"eventFull": "This event is full.",
"cannotRegister": "Registration is not available.",
"prizesTitle": "Prizes",
"winnersTitle": "Winners",
"unknownUser": "User #{id}"
},
"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"
}
}
}
},
"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:"
}
}
}