{ "profile": { "tabs": { "profile": "Perfil", "security": "Seguridad", "sso": "Inicio de sesión único", "apiKeys": "Claves API", "notifications": "Notificaciones", "calendar": "Calendario", "keyboardShortcuts": "Keyboard Shortcuts" }, "basicInfo": { "title": "Información básica" }, "fields": { "firstName": { "label": "Nombre *" }, "lastName": { "label": "Apellido *" }, "email": { "label": "Correo electrónico *" }, "phoneNumber": { "label": "Número de teléfono" }, "timeZone": { "label": "Zona horaria" } }, "actions": { "saveChanges": "Guardar cambios" }, "notifications": { "title": "Preferencias de notificaciones", "viewSwitcher": { "email": "Correo electrónico", "internal": "Internas" } }, "loading": "Cargando perfil...", "messages": { "success": { "profileUpdated": "Perfil actualizado correctamente" }, "error": { "userNotFound": "Usuario no encontrado", "fillRequiredFields": "Complete todos los campos obligatorios", "loadFailed": "No se pudo cargar el perfil", "saveFailed": "No se pudo guardar el perfil", "errorPrefix": "Error: {{error}}" } }, "validation": { "firstNameRequired": "El nombre es obligatorio", "lastNameRequired": "El apellido es obligatorio" }, "pageTitle": "Su perfil", "changePassword": { "title": "Cambiar contraseña", "current": "Contraseña actual", "new": "Nueva contraseña", "confirm": "Confirmar nueva contraseña", "requirements": "La contraseña debe tener al menos 8 caracteres", "submit": "Cambiar contraseña", "success": "Contraseña cambiada correctamente", "error": "No se pudo cambiar la contraseña", "passwordMismatch": "Las nuevas contraseñas no coinciden", "unknownError": "Se produjo un error al cambiar la contraseña", "validationFailed": "La contraseña no cumple todos los requisitos" }, "loadingStates": { "sso": { "title": "Inicio de sesión único", "description": "Cargando configuración de SSO..." }, "calendar": { "title": "Calendario", "description": "Cargando configuración del calendario..." } } }, "security": { "title": "Configuración de seguridad", "tabs": { "roles": "Roles", "sessions": "Sesiones", "sso": "Inicio de sesión único", "permissions": "Permisos", "userRoles": "Roles de usuario", "policies": "Políticas", "apiKeys": "Claves API", "webhooks": "Webhooks" }, "loading": { "roles": "Cargando configuración de roles...", "permissions": "Cargando configuración de permisos...", "userRoles": "Cargando configuración de roles de usuario...", "policies": "Cargando configuración de políticas...", "apiKeys": "Cargando configuración de claves API...", "webhooks": "Cargando configuración de webhooks...", "sso": "Cargando herramientas de gestión de SSO...", "sessions": "Cargando sesiones activas..." }, "userRoles": { "title": "Asignar roles a usuarios", "description": { "msp": "Administrar asignaciones de roles de usuario para usuarios de MSP", "client": "Administrar asignaciones de roles de usuario para usuarios del portal del cliente" }, "viewSwitcher": { "msp": "MSP", "clientPortal": "Portal de clientes" }, "showInactive": "Mostrar usuarios inactivos", "fields": { "selectUser": "Seleccionar usuario", "selectRole": "Seleccionar rol" }, "actions": { "assignRole": "Asignar rol" }, "table": { "user": "Usuario", "email": "Correo electrónico", "roles": "Roles", "actions": "Acciones" }, "noRolesAssigned": "No hay roles asignados", "removeRole": "Eliminar {{role}}", "emptyState": { "noUsers": "No se encontraron usuarios de tipo {{type}}", "inactiveHidden": "(usuarios inactivos ocultos)" }, "inactiveTag": "(Inactivo)", "unnamedUser": "Usuario sin nombre", "messages": { "success": { "roleAssigned": "Rol asignado correctamente", "roleRemoved": "Rol eliminado correctamente" }, "error": { "assignFailed": "No se pudo asignar el rol. Inténtalo de nuevo.", "removeFailed": "No se pudo eliminar el rol. Inténtalo de nuevo.", "permissionDenied": "No tienes permiso para cambiar los roles de usuario." } } }, "sessions": { "title": "Todas las sesiones de usuarios", "filters": { "search": "Buscar", "searchPlaceholder": "Buscar por nombre, correo electrónico, dispositivo o IP...", "user": "Usuario", "allUsers": "Todos los usuarios", "loginMethod": "Método de inicio de sesión", "allMethods": "Todos los métodos", "userType": "Tipo de usuario", "allTypes": "Todos los tipos", "from": "Desde", "to": "Hasta", "selectDate": "Seleccionar fecha", "reset": "Restablecer" }, "loginMethods": { "password": "Contraseña", "google": "OAuth de Google", "microsoft": "OAuth de Microsoft", "keycloak": "Keycloak" }, "userTypes": { "internal": "Interno", "client": "Cliente" }, "session": { "yourSession": "Su sesión", "unknownDevice": "Dispositivo desconocido", "lastActive": "Última actividad {{time}}", "logout": "Cerrar sesión", "revoke": "Revocar", "revoking": "Revocando..." }, "oauthWarning": "Revocar esta sesión no revocará el acceso de OAuth de {{provider}}. Revoque el acceso desde la configuración de su cuenta de {{provider}}.", "confirmLogout": "¿Está seguro de que desea cerrar sesión en este dispositivo?", "messages": { "loggingOut": "Cerrando sesión...", "revoked": "Sesión revocada correctamente", "loadFailed": "No se pudieron cargar las sesiones", "revokeFailed": "No se pudo revocar la sesión" }, "emptyState": { "loading": "Cargando sesiones...", "noMatch": "Ninguna sesión coincide con su búsqueda", "noSessions": "No se encontraron sesiones activas" }, "subtitle_one": "{{sessionCount}} sesión activa en {{userCount}} usuario", "subtitle_other": "{{sessionCount}} sesiones activas en {{userCount}} usuarios" }, "webhooks": { "title": "Webhooks salientes", "description": "Cree suscripciones firmadas al ciclo de vida de tickets, fíltrelas por IDs de ticket específicos, inspeccione el historial de entregas y rote secretos sin salir de la configuración.", "newWebhook": "Nuevo webhook", "tabs": { "configuration": "Configuración", "deliveries": "Entregas", "inbound": "Entrantes", "outbound": "Salientes" }, "inbound": { "title": "Webhooks entrantes", "description": "Acepta solicitudes autenticadas de sistemas externos y despáchalas a acciones directas o flujos de trabajo.", "placeholder": "Configura endpoints de webhooks entrantes que verifican solicitudes, deduplican entregas y despachan a acciones o flujos.", "newWebhook": "Nuevo webhook", "list": { "title": "Webhooks entrantes configurados", "loading": "Cargando…", "configuredCount": "{{count}} configurados", "empty": "Aún no hay webhooks entrantes configurados.", "columns": { "name": "Nombre", "handler": "Manejador", "lastDelivery": "Última entrega", "active": "Activo", "actions": "Acciones" } }, "handlers": { "directAction": "Acción directa", "workflow": "Flujo de trabajo" }, "status": { "active": "Activo", "inactive": "Inactivo" }, "messages": { "loadFailed": "Error al cargar los webhooks entrantes.", "nameRequired": "El nombre es obligatorio.", "slugRequired": "El slug es obligatorio.", "actionRequired": "Selecciona una acción antes de guardar.", "workflowRequired": "Selecciona un flujo antes de guardar.", "missingRequiredFields": "Asigna un valor para los campos obligatorios: {{fields}}" }, "dialog": { "createTitle": "Crear webhook entrante", "editTitle": "Editar webhook entrante", "cancel": "Cancelar", "create": "Crear webhook", "save": "Guardar cambios", "saveUnavailable": "Continuar" }, "identity": { "title": "Identidad", "help": "Nombra el webhook y elige el slug seguro para URL usado en su endpoint receptor.", "name": "Nombre", "namePlaceholder": "Alertas críticas de RMM", "slug": "Slug", "slugPlaceholder": "alertas-criticas-rmm", "description": "Descripción", "descriptionPlaceholder": "Notas opcionales sobre el sistema de origen y el payload." }, "auth": { "title": "Autenticación", "help": "Elige cómo las solicitudes entrantes demuestran que están autorizadas a usar este endpoint.", "method": "Método de autenticación", "types": { "hmacSha256": "HMAC-SHA256", "bearer": "Token Bearer", "ipAllowlist": "Lista blanca de IPs", "pathToken": "Secreto compartido en ruta" }, "signatureHeader": "Cabecera de firma", "signatureHeaderPlaceholder": "X-Alga-Signature", "bearerToken": "Token Bearer", "bearerTokenPlaceholder": "Pega el token o deja vacío para generar uno", "secretUnchangedPlaceholder": "Deja vacío para mantener el secreto actual", "ipCidrs": "IPs / CIDRs permitidos", "ipCidrsPlaceholder": "203.0.113.10\n198.51.100.0/24", "queryParam": "Parámetro de consulta", "queryParamPlaceholder": "token", "pathToken": "Token de ruta", "pathTokenPlaceholder": "Pega el token o deja vacío para generar uno" }, "secret": { "label": "Secreto del webhook", "warning": "Este valor se muestra solo ahora. Guárdalo en el sistema de origen antes de cerrar este diálogo.", "copy": "Copiar", "download": "Descargar como .txt", "close": "Cerrar" }, "idempotency": { "title": "Idempotencia", "help": "Usa una clave estable para detectar entregas duplicadas dentro de la ventana configurada.", "source": "Origen de la clave", "types": { "header": "Cabecera HTTP", "jsonata": "Expresión JSONata" }, "headerName": "Nombre de la cabecera", "headerNamePlaceholder": "X-Idempotency-Key", "jsonataExpression": "Expresión JSONata", "jsonataExpressionPlaceholder": "alert.id", "windowSeconds": "Ventana de duplicados (segundos)" }, "active": { "title": "Estado activo", "help": "Pausa el endpoint sin eliminar su URL, mapeos o historial de entregas.", "toggle": "El webhook está activo", "autoDisabled": "Deshabilitado automáticamente el {{date}} tras fallos repetidos.", "updateFailed": "Error al actualizar el estado del webhook entrante." }, "handler": { "title": "Manejador", "help": "Elige qué debe hacer Alga después de que la solicitud sea verificada y deduplicada.", "type": "Tipo de manejador", "types": { "directAction": "Acción directa", "workflow": "Flujo de trabajo" }, "directActionTitle": "Acción directa", "directActionHelp": "Selecciona una acción entrante y mapea los campos del payload a sus campos de destino.", "action": "Acción", "actionPlaceholder": "Selecciona una acción", "actionEmpty": "No hay acciones entrantes registradas. Asegúrate de que el servidor haya inicializado el registro de acciones antes de guardar.", "targetFields": "Campos de destino", "required": "Requerido", "optional": "Opcional", "mappingPlaceholder": "Escribe una expresión JSONata, p. ej. payload.field", "workflowTitle": "Flujo de trabajo", "workflowHelp": "Selecciona un flujo para iniciar con el envelope normalizado del webhook.", "workflow": "Flujo de trabajo", "workflowPlaceholder": "Selecciona un flujo", "workflowEmpty": "No hay flujos visibles en este inquilino. Publica o muestra un flujo para usar el manejador de flujos.", "envelopeTitle": "Envelope de entrada del flujo", "fieldTypes": { "string": "cadena", "int": "entero", "number": "número", "boolean": "booleano", "enum": "enum", "json": "json", "ref": "referencia" } }, "sample": { "title": "Payload de ejemplo", "help": "Captura la próxima solicitud verificada para la autocompletado de mapeo.", "createFirst": "Guarda el webhook antes de capturar una solicitud de ejemplo.", "captureButton": "Capturar solicitud de ejemplo", "captureActive": "Ventana de captura activa hasta {{expiresAt}}.", "sampleAvailable": "Payload de ejemplo capturado.", "noSample": "Aún no se ha capturado ningún ejemplo.", "captureFailed": "Error al habilitar la captura de ejemplos." }, "sampleTree": { "title": "Rutas de ejemplo", "help": "Haz clic en una ruta para insertarla en {{field}}.", "focusHelp": "Enfoca un campo de mapeo, luego haz clic en una ruta para insertarla.", "empty": "Captura un payload de ejemplo para explorar campos." }, "mapping": { "modeStatic": "Valor estático", "modeExpression": "Mapear desde la carga útil", "unknownReference": "referencia desconocida", "loading": "Cargando…", "errors": { "INVALID_INT": "El valor \"{{value}}\" debe ser un entero.", "INVALID_NUMBER": "El valor \"{{value}}\" debe ser un número.", "INVALID_BOOLEAN": "El valor debe ser \"true\" o \"false\".", "INVALID_JSON": "El valor debe ser JSON válido." } }, "deliveryLog": { "title": "Registro de entregas", "help": "Entregas verificadas recientes para este webhook entrante.", "empty": "Aún no se han registrado entregas.", "loadFailed": "Error al cargar las entregas.", "pageSummary": "Página {{page}} de {{total}}", "durationMs": "{{duration}} ms", "allStatuses": "Todos los estados", "columns": { "received": "Recibido", "status": "Estado", "response": "Respuesta", "duration": "Duración", "actions": "Acciones" }, "view": "Ver", "status": { "pending": "pendiente", "dispatched": "entregado", "duplicate": "duplicado", "failed": "fallido" } }, "deliveryDetail": { "title": "Detalle de entrega", "close": "Cerrar", "replay": "Reenviar", "replayConfirm": "¿Reenviar esta entrega a través de la configuración actual del webhook? Cualquier efecto secundario (creación de tickets, cambios de estado, etc.) volverá a ejecutarse.", "replayFailed": "Error al reenviar la entrega.", "received": "Recibido", "status": "Estado", "responseStatus": "Estado de respuesta", "duration": "Duración", "sections": { "headers": "Cabeceras de la solicitud", "requestBody": "Cuerpo de la solicitud", "responseBody": "Cuerpo de la respuesta", "handlerOutcome": "Resultado del manejador" } }, "test": { "openButton": "Enviar prueba", "title": "Enviar solicitud de prueba", "body": "Cuerpo JSON de la solicitud", "headers": "Cabeceras", "cancel": "Cancelar", "send": "Enviar prueba", "sendFailed": "Error al enviar la solicitud de prueba del webhook." } }, "stats": { "total": "Webhooks totales", "active": "Activos", "autoDisabled": "Deshabilitados automáticamente" }, "secret": { "label": "Secreto de firma", "warning": "Este valor solo se muestra ahora. Guárdelo en el receptor antes de salir de la página.", "copy": "Copiar", "copied": "Secreto de firma copiado al portapapeles", "copyFailed": "No se pudo copiar el secreto de firma al portapapeles", "close": "Cerrar", "download": "Descargar como .txt" }, "form": { "createTitle": "Crear webhook", "editTitle": "Editar webhook", "helper": "La configuración de reintentos se guarda como JSON; la cadencia de entrega sigue usando el plan de backoff estándar de la plataforma en v1.", "name": "Nombre", "namePlaceholder": "Feed de asignación de tickets", "url": "URL", "urlPlaceholder": "https://example.com/hooks/alga", "events": "Eventos", "customHeaders": "Encabezados personalizados", "customHeadersPlaceholder": "Authorization: Bearer abc123\nX-Source: alga-psa", "ticketFilter": "Filtro de tickets", "ticketFilterPlaceholder": "Un UUID de ticket por línea. Deje en blanco para recibir todos los eventos de ticket coincidentes.", "retryConfig": "Configuración de reintentos (JSON)", "verifySsl": "Verificar certificados SSL", "webhookActive": "El webhook está activo", "save": "Guardar cambios", "saving": "Guardando…", "create": "Crear webhook", "clear": "Limpiar", "delete": "Eliminar", "payloadFields": "Campos enviados", "payloadFieldsHelp": "Todos los campos se envían de forma predeterminada. Desmarque para excluir un campo del envío. La clave de correlación de la entidad (p. ej., ticket_id) siempre se incluye.", "payloadFieldsSelectAll": "Seleccionar todo", "payloadFieldsClear": "Limpiar" }, "list": { "title": "Webhooks configurados", "loading": "Cargando…", "configuredCount": "{{count}} configurados", "empty": "Aún no hay webhooks configurados.", "columns": { "name": "Nombre", "status": "Estado", "lastDelivery": "Última entrega", "success": "Éxito", "actions": "Acciones" }, "actions": { "selected": "Seleccionado", "manage": "Gestionar", "pause": "Pausar", "resume": "Reanudar", "view": "Ver", "edit": "Editar" } }, "detail": { "summary": "{{total}} entregas, {{successful}} exitosas, {{failed}} fallidas.", "sendTest": "Enviar prueba", "sending": "Enviando…", "rotateSecret": "Rotar secreto", "rotating": "Rotando…", "back": "Volver a webhooks" }, "deliveries": { "title": "Historial de entregas", "page": "Página {{page}} de {{total}}", "empty": "Aún no hay entregas registradas.", "columns": { "event": "Evento", "status": "Estado", "attempted": "Intentado", "response": "Respuesta", "action": "Acción" }, "testBadge": "Entrega de prueba", "attempt": "Intento {{number}}", "noResponseCode": "n/d", "noResponseBody": "No se capturó cuerpo de respuesta.", "retry": "Reintentar", "previous": "Anterior", "next": "Siguiente" }, "messages": { "loadFailed": "No se pudieron cargar los ajustes de webhook.", "loadDeliveriesFailed": "No se pudieron cargar las entregas del webhook.", "saveFailed": "No se pudo guardar el webhook.", "createSuccess": "Webhook creado.", "updateSuccess": "Webhook actualizado.", "deleteConfirm": "¿Eliminar webhook \"{{name}}\"?", "deleteSuccess": "Webhook eliminado.", "deleteFailed": "No se pudo eliminar el webhook.", "testSuccess": "Prueba enviada con éxito ({{statusCode}}).", "testFailed": "La prueba falló: {{message}}", "testRunFailed": "No se pudo enviar la prueba del webhook.", "unknownError": "Error desconocido", "secretRotated": "Secreto de firma rotado.", "rotateFailed": "No se pudo rotar el secreto del webhook.", "resumed": "Webhook reanudado.", "paused": "Webhook pausado.", "stateChangeFailed": "No se pudo actualizar el estado del webhook.", "retryQueued": "Reintento en cola para el evento {{eventId}}.", "retryFailed": "No se pudo reintentar la entrega.", "invalidHeaderLine": "Línea de encabezado no válida: \"{{line}}\"", "invalidRetryConfig": "La configuración de reintentos debe ser un objeto JSON" }, "common": { "never": "Nunca" }, "health": { "healthy": "saludable", "failing": "con errores", "disabled": "deshabilitado" }, "deliveryStatus": { "delivered": "entregado", "retrying": "reintentando", "abandoned": "abandonado", "pending": "pendiente" } }, "apiKeys": { "rateLimit": { "columnTitle": "Límite de tasa", "loading": "Cargando…", "summary": "{{maxTokens}} ráfaga / {{refillPerMin}} por min", "source": "Origen: {{label}}", "sourceLabels": { "key": "Anulación", "tenant": "Predeterminado del tenant", "default": "Predeterminado del sistema" }, "remaining": " • Restante: {{remaining}}/{{maxTokens}}", "remainingUnavailable": " • Restante: no disponible", "actions": { "edit": "Editar", "override": "Anular", "save": "Guardar", "cancel": "Cancelar", "reset": "Restablecer" }, "errors": { "saveFailed": "No se pudo guardar la anulación del límite de tasa de la API.", "clearFailed": "No se pudo borrar la anulación del límite de tasa de la API." } }, "generate": { "title": "Generar clave API", "description": "Descripción", "descriptionPlaceholder": "p. ej., Clave API de desarrollo", "expiration": "Fecha de expiración (opcional)", "submit": "Generar nueva clave API" }, "list": { "title": "Sus claves API", "searchPlaceholder": "Buscar por descripción", "filters": { "allStatuses": "Todos los estados", "active": "Activa", "inactive": "Inactiva", "lastUsedAfter": "Usada por última vez después de", "expiresBefore": "Expira antes de", "reset": "Restablecer" }, "columns": { "description": "Descripción", "created": "Creada", "lastUsed": "Último uso", "expires": "Expira", "status": "Estado", "actions": "Acciones" }, "never": "Nunca", "status": { "active": "Activa", "inactive": "Inactiva" }, "deactivate": "Desactivar" }, "newKeyDialog": { "title": "Clave API generada", "warning": "Copie su clave API ahora. Por motivos de seguridad, no se mostrará de nuevo.", "copy": "Copiar al portapapeles", "download": "Descargar como .txt", "copySuccess": "¡Clave API copiada al portapapeles!", "copyFailed": "Error al copiar la clave API al portapapeles", "downloadFailed": "Error al descargar la clave API" } } }, "platformUpdates": { "detail": { "back": "Volver", "labels": { "info": "Información", "warning": "Advertencia", "destructive": "Crítico", "success": "Correcto", "default": "Aviso" } } }, "connectSso": { "verify": { "title": "Asegure su cuenta con SSO", "description": "Vincule Azure AD o Google Workspace para reutilizar las políticas organizacionales y omitir las solicitudes locales de doble factor.", "signedInAs": "Sesión iniciada como", "currentPassword": "Contraseña actual", "twoFactorCode": "Código de doble factor", "twoFactorPlaceholder": "123456", "verifyCredentials": "Verificar credenciales", "verifying": "Verificando...", "reset": "Restablecer", "linkedSuccess": "Proveedor vinculado correctamente.", "credentialsVerified": "Credenciales verificadas. Elija un proveedor a continuación para terminar de vincular su cuenta.", "verifyFailed": "No se pudieron verificar las credenciales.", "verifyBeforeProvider": "Verifique su contraseña (y el código de doble factor si es necesario) antes de conectar un proveedor." }, "providers": { "title": "Conectar un proveedor", "description": "Elija un proveedor para finalizar el enlace SSO. Será redirigido a través del flujo de inicio de sesión del proveedor.", "noneConfigured": "No hay proveedores SSO configurados para este entorno. Solicite a su administrador que configure las credenciales de Google o Microsoft.", "notConfigured": "No configurado", "branding": { "google": "Continuar con Google", "microsoft": "Continuar con Microsoft", "default": "Continuar" } }, "linked": { "title": "Cuentas vinculadas", "description": "Actualizaremos el enlace la próxima vez que inicie sesión a través de un proveedor conectado.", "empty": "Aún no hay proveedores SSO vinculados. Complete los pasos anteriores para conectar uno.", "linkedAt": "Vinculado el {{date}}", "lastUsed": "Último uso el {{date}}", "notUsedYet": "Aún no utilizado" } } }