const es = { nav: { dashboard: 'Dashboard', clients: 'Clientes OAuth', tokens: 'Personal Access Tokens', authorizedApps: 'Apps autorizadas', users: 'Usuarios', analytics: 'Analíticas', apiDocs: 'API Docs', logout: 'Salir', }, common: { loading: 'Cargando…', creating: 'Creando…', create: 'Crear', save: 'Guardar', cancel: 'Cancelar', close: 'Cerrar', edit: 'Editar', delete: 'Borrar', none: '(ninguno)', }, login: { title: 'Ingresar', subtitle: 'Servidor OAuth2 — panel de administración.', email: 'Email', password: 'Contraseña', submit: 'Ingresar', submitting: 'Ingresando…', noAccount: '¿No tenés cuenta?', signUp: 'Registrate', invalidCredentials: 'Credenciales inválidas.', }, register: { title: 'Crear cuenta', name: 'Nombre', email: 'Email', password: 'Contraseña', passwordConfirm: 'Confirmar contraseña', submit: 'Crear cuenta', submitFirstUser: 'Crear cuenta de administrador', submitting: 'Creando…', haveAccount: '¿Ya tenés cuenta?', signIn: 'Ingresá', firstUserBanner: 'Todavía no hay ningún usuario. Esta cuenta va a quedar como administradora, con acceso inmediato (sin aprobación).', pendingTitle: 'Cuenta creada', pendingBody: 'Un administrador tiene que aprobar tu cuenta antes de que puedas ingresar. Te va a poder avisar por fuera de la app cuando esté lista.', backToLogin: 'Volver a ingresar', }, dashboard: { greeting: 'Hola, {name}', subtitle: 'Este es el panel de administración del servidor OAuth2.', clientsTitle: 'Clientes OAuth', clientsDesc: 'Registrá apps (Authorization Code+PKCE, Client Credentials o Password Grant).', tokensTitle: 'Personal Access Tokens', tokensDesc: 'Generá tokens de acceso directo a la API, como API keys.', appsTitle: 'Apps autorizadas', appsDesc: 'Apps de terceros a las que le diste acceso a tu cuenta.', usersTitle: 'Usuarios', usersDesc: 'Alta, edición de rol/estado y baja de cuentas (solo admins).', analyticsTitle: 'Analíticas', analyticsDesc: 'Sesiones activas, logins por app y usuarios más activos (solo admins).', apiTitle: 'API REST', apiDesc: 'Este servidor expone el recurso {resource} (scopes {read}/{write}) para que aplicaciones de terceros gestionen usuarios vía OAuth2. Requiere un access token de Passport. Documentación interactiva en {link}.', }, clients: { title: 'Clientes OAuth', subtitle: 'Apps registradas que pueden pedir tokens a este servidor.', secretWarning: 'Guardá este client secret ahora, no se puede volver a ver:', clientIdLabel: 'client_id:', clientSecretLabel: 'client_secret:', newClient: 'Nuevo cliente', name: 'Nombre', grantType: 'Grant type', grantAuthCode: 'Authorization Code + PKCE', grantClientCredentials: 'Client Credentials', grantPassword: 'Password Grant', redirectUris: 'Redirect URIs (separadas por coma)', confidentialLabel: 'Cliente confidencial (con secret). Desmarcá para un cliente público que solo use PKCE.', create: 'Crear cliente', empty: 'Todavía no creaste ningún cliente.', revoke: 'Revocar', revokeConfirm: '¿Revocar el cliente "{name}"? Sus tokens dejarán de funcionar.', clientIdShort: 'client_id', redirectLabel: 'redirect', }, tokens: { title: 'Personal Access Tokens', subtitle: 'Tokens de acceso directo a la API, sin pasar por el flujo de authorize (tipo API key).', tokenWarning: 'Guardá este token ahora, no se puede volver a ver:', newToken: 'Nuevo token', name: 'Nombre', namePlaceholder: 'Mi script', scopes: 'Scopes', create: 'Crear token', empty: 'Todavía no creaste ningún token.', revoke: 'Revocar', revokeConfirm: '¿Revocar el token "{name}"?', scopesLabel: 'scopes', }, authorizedApps: { title: 'Apps autorizadas', subtitle: 'Aplicaciones de terceros a las que le diste acceso a tu cuenta.', empty: 'No autorizaste ninguna app todavía.', revoke: 'Revocar acceso', revokeConfirm: '¿Revocar el acceso de "{name}"?', scopesLabel: 'scopes', }, authorize: { title: 'Autorizar aplicación', wantsAccess: '{client} quiere acceder a tu cuenta ({email}) con los siguientes permisos:', noScopes: 'No solicita permisos adicionales (acceso básico).', approve: 'Autorizar', cancel: 'Cancelar', notFoundTitle: 'Solicitud no encontrada', notFoundBody: 'Esta pantalla solo funciona cuando llegás acá redirigido por una aplicación cliente vía {path}. Volvé a intentar desde esa app.', goDashboard: 'Ir al dashboard', }, adminUsers: { title: 'Usuarios', subtitle: 'Alta, edición de rol/estado y baja de cuentas.', newUser: 'Nuevo usuario', name: 'Nombre', email: 'Email', password: 'Contraseña', role: 'Rol', roleUser: 'Usuario', roleAdmin: 'Admin', create: 'Crear usuario', colName: 'Nombre', colEmail: 'Email', colRole: 'Rol', colStatus: 'Estado', active: 'Activo', inactive: 'Desactivado', noRole: '(sin rol)', edit: 'Editar', delete: 'Borrar', deleteConfirm: '¿Borrar al usuario "{name}"? Va a la papelera y se puede restaurar.', deleteFailed: 'No se pudo borrar el usuario.', newPassword: 'Nueva contraseña', noChange: '(sin cambios)', save: 'Guardar', cancel: 'Cancelar', appRolesTitle: 'Roles por app', appRolesDesc: 'El rol global de arriba manda en este panel. Acá se define qué rol tiene {name} dentro de cada app cuando esa app pide su usuario por API.', noAppRoles: 'Sin roles asignados en ninguna app todavía.', chooseApp: 'Elegir app…', assign: 'Asignar', assignFailed: 'No se pudo asignar el rol.', trashTitle: 'Papelera', viewTrash: 'Ver papelera', viewActive: 'Ver activos', trashEmpty: 'No hay usuarios borrados.', deletedAt: 'Borrado el {date}', restore: 'Restaurar', restoreFailed: 'No se pudo restaurar el usuario.', forceDelete: 'Borrar definitivamente', forceDeleteConfirm: '¿Borrar definitivamente a "{name}"? Esta acción no se puede deshacer.', forceDeleteFailed: 'No se pudo borrar definitivamente.', pendingTitle: 'Pendientes', viewPending: 'Pendientes', pendingEmpty: 'No hay registros pendientes de aprobación.', registeredAt: 'Se registró el {date}', approve: 'Aprobar', approveFailed: 'No se pudo aprobar el usuario.', reject: 'Rechazar', rejectConfirm: '¿Rechazar el registro de "{name}"? Va a la papelera y se puede restaurar después.', rejectFailed: 'No se pudo rechazar el registro.', }, analytics: { title: 'Analíticas', subtitle: 'Sesiones, logins por app y actividad de usuarios.', last7: 'Últimos 7 días', last30: 'Últimos 30 días', last90: 'Últimos 90 días', totalUsers: 'Usuarios totales', activeSessions: 'Sesiones activas', activeSessionsHint: 'tokens OAuth vigentes', loginsToday: 'Logins hoy', logins7d: 'Logins últimos 7 días', loginsByDay: 'Logins por día', appsOAuth: 'Apps (OAuth)', panelAdmin: 'Panel admin', loginsByApp: 'Logins por app', topUsers: 'Usuarios más activos', noAppLogins: 'Todavía no hay logins de apps en este período.', noUserActivity: 'Todavía no hay actividad en este período.', recentActivity: 'Actividad reciente', hide: 'Ocultar', viewAll: 'Ver todo', colUser: 'Usuario', colApp: 'App', colType: 'Tipo', colIp: 'IP', colWhen: 'Cuándo', serviceNoUser: '(servicio, sin usuario)', deletedApp: '(app borrada)', recentCount: '{count} eventos recientes — click en "Ver todo" para la tabla completa.', chartAriaLabel: 'Logins por día, apilado por tipo', tooltipAppLabel: 'Apps (OAuth):', tooltipSessionLabel: 'Panel admin:', barAriaLabel: '{date}: {oauth} logins de apps, {session} al panel admin', }, }; export default es; export type MessageSchema = typeof es;