{ "page": { "title": "Cronograma", "actions": { "configureAvailability": "Configurar disponibilidad", "appointmentRequests": "Solicitudes de cita" } }, "sidebar": { "actions": { "compareAll": "Comparar todo", "clearAll": "Borrar todo", "viewWeek": "Ver semana", "compare": "Comparar", "stopComparing": "Deja de comparar" }, "labels": { "inactive": "(Inactivo)" }, "aria": { "viewWeek": "Ver semana para {{name}}", "compare": "Comparar {{name}}" } }, "agentView": { "loading": "Cargando...", "errors": { "loadPermissions": "No se pudieron cargar los permisos de usuario", "forbidden": "No tienes permiso para ver este programa." } }, "calendar": { "legend": { "types": { "ticket": "Ticket", "projectTask": "Tarea del proyecto", "nonBillableCategory": "Categoría no facturable", "adHoc": "Entrada ad hoc", "interaction": "Interacción", "appointmentRequest": "Solicitud de cita" }, "showInactiveUsers": "Mostrar usuarios inactivos" }, "loading": { "initial": "Cargando agenda...", "overlay": "Cargando..." }, "errors": { "validateDeletion": "No se pudo validar la eliminación. Por favor inténtalo de nuevo.", "loadPermissions": "No se pudieron cargar los permisos.", "loadCurrentUser": "No se pudo cargar el usuario actual.", "unknown": "Se produjo un error desconocido", "deleteFailed": "No se pudo eliminar la entrada del programa", "deleteUnexpected": "Se produjo un error al eliminar la entrada del programa.", "updateFailed": "No se pudo actualizar la entrada del cronograma: {{error}}", "createFailed": "No se pudo agregar la entrada de programación: {{error}}", "saveUnexpected": "Se produjo un error al guardar la entrada del programa." }, "toolbar": { "previousAria": "Anterior {{view}}", "previous": "< Anterior", "today": "Hoy", "nextAria": "Siguiente {{view}}", "next": "Siguiente >", "views": { "month": "Mes", "week": "Semana", "day": "Día" } }, "event": { "fallbacks": { "unknownTechnician": "Desconocido", "unassigned": "No asignado", "untitled": "Intitulado" }, "tooltip": { "scheduledFor": "Programado para: {{technicians}}", "start": "Inicio: {{dateTime}}", "end": "Fin: {{dateTime}}", "multiDay": "(varios días)" } }, "deleteDialog": { "title": "Eliminar entrada de programación", "messageRecurring": "Seleccione qué eventos eliminar:", "messageSingle": "¿Está seguro de que desea eliminar esta entrada del programa? Esta acción no se puede deshacer.", "confirm": "Eliminar", "entityFallback": "esta entrada de horario", "options": { "single": "Sólo este evento", "future": "Este y futuros eventos.", "all": "Todos los eventos" }, "messageWithTeamsWarning": "¿Está seguro de que desea eliminar esta entrada del programa? Esta acción no se puede deshacer. Esto también eliminará la reunión de Microsoft Teams." }, "print": { "title": "Agenda del calendario", "subtitle": "{{count}} entradas programadas", "noEntries": "No hay entradas programadas para imprimir", "emptyValue": "-", "columns": { "title": "Título", "type": "Tipo", "start": "Inicio", "end": "Fin", "assigned": "Asignado", "status": "Estado" }, "optionsDialog": { "title": "Opciones de impresión", "description": "Elige qué columnas incluir al imprimir el calendario." } } }, "weeklyEvent": { "actions": { "delete": "Eliminar entrada" }, "continuation": { "previousWeek": "Continúa de la semana anterior." } }, "requests": { "errors": { "load": "No se pudieron cargar las solicitudes de citas", "ticketNotFound": "Ticket no encontrado", "loadTicket": "No se pudo cargar el ticket", "assignTechnicianRequired": "Por favor asigne un técnico", "approve": "No se pudo aprobar la solicitud", "declineReasonRequired": "Por favor proporcione una razón para rechazar", "decline": "No se pudo rechazar la solicitud" }, "feedback": { "approved": "Solicitud de cita aprobada", "declined": "Solicitud de cita rechazada" }, "filters": { "statusLabel": "Filtrar por estado", "statusOptions": { "all": "Todo", "pending": "Pendiente", "approved": "Aprobado", "declined": "Rechazado", "cancelled": "Cancelado" } }, "fallbacks": { "invalidDateTime": "Fecha/hora no válida" }, "list": { "title": "Solicitudes de cita", "badgeTotal": "Total", "loading": "Cargando solicitudes...", "empty": "No se encontraron {{status}} solicitudes", "duration": "{{count}} minutos", "ticketFallback": "Ticket #{{ticket}}", "fallbacks": { "publicRequest": "Solicitud pública" } }, "detail": { "back": "← Volver a la lista", "title": "Detalles de la solicitud", "section": { "requestInformation": "Solicitar información" }, "labels": { "reference": "Referencia", "client": "Cliente", "requester": "Solicitante", "contact": "Contacto", "email": "Correo electrónico", "phone": "Teléfono", "service": "Servicio", "requestedTime": "Hora solicitada", "duration": "Duración", "status": "Estado", "linkedTicket": "Ticket vinculado", "description": "Descripción", "teamsMeeting": "Reunión de Teams" }, "actions": { "joinTeamsMeeting": "Unirse a la reunión de Teams" } }, "approval": { "title": "Detalles de aprobación", "fields": { "assignedTechnician": "Asignar técnico *", "finalDateTime": "Fecha y hora finales", "internalNotes": "Notas internas (opcional)", "linkedTicket": "Enlace al ticket (opcional)", "generateTeamsMeeting": "Generar enlace de reunión de Microsoft Teams" }, "placeholders": { "assignedTechnician": "Seleccionar técnico", "internalNotes": "Agregue cualquier nota interna...", "linkedTicket": "Ingrese el ID del ticket para vincular..." }, "actions": { "approve": "Aprobar", "decline": "Rechazar" } }, "decline": { "title": "Rechazar solicitud", "fields": { "reason": "Motivo del rechazo *" }, "placeholders": { "reason": "Proporcione una razón para rechazar esta solicitud..." }, "actions": { "confirm": "Confirmar rechazo", "cancel": "Cancelar" } } }, "availabilitySettings": { "dialog": { "title": "Configuración de disponibilidad" }, "loading": "Cargando configuración...", "tabs": { "general": "Configuraciones generales", "userHours": "Horas de usuario", "serviceRules": "Reglas de servicio", "exceptions": "Excepciones", "teamsMeetings": "Reuniones de Teams" }, "days": { "sunday": "Domingo", "monday": "Lunes", "tuesday": "Martes", "wednesday": "Miércoles", "thursday": "Jueves", "friday": "Viernes", "saturday": "Sábado" }, "common": { "yes": "Sí", "no": "No", "columns": { "action": "Acción" }, "actions": { "edit": "Editar", "delete": "Eliminar", "deleting": "Eliminando..." }, "defaultApprover": { "placeholder": "Seleccione aprobadores" }, "teamSelect": { "label": "Seleccionar equipo", "placeholder": "Selecciona un equipo" } }, "feedback": { "loadError": "No se pudo cargar la configuración" }, "general": { "autoApproval": { "title": "Habilitar aprobación automática", "description": "Aprobar automáticamente las citas que cumplan con los criterios configurados a continuación", "criteriaTitle": "Criterios de aprobación automática:", "criteria": { "requireAvailability": "El técnico debe tener la disponibilidad configurada para el tiempo solicitado.", "requireContract": "El cliente debe tener contrato activo (si el servicio lo requiere)", "checkConflicts": "No hay conflictos de programación con las citas existentes.", "respectBuffers": "Respetar los tiempos de amortiguación antes/después de las citas." } }, "defaultApprover": { "label": "Aprobadores", "help": "Aprobadores en toda la empresa para solicitudes de citas que requieren aprobación manual. Agregue varios usuarios y/o equipos: todas las personas seleccionadas reciben una notificación y pueden aprobar. Esto se puede anular por técnico en la configuración de Horas de usuario." }, "advanceBookingDays": { "label": "Reserva anticipada predeterminada (días)" }, "minimumNoticeHours": { "label": "Aviso Mínimo (Horas)" }, "actions": { "save": "Guardar configuración general" }, "feedback": { "saveSuccess": "Configuración general guardada", "saveError": "No se pudo guardar la configuración" } }, "userHours": { "roleManager": { "label": "Gerente de equipo:", "description": "Puede configurar los ajustes de disponibilidad para los miembros de su(s) equipo(s). La siguiente tabla \"Usuarios configurados\" muestra todos los usuarios con configuraciones de disponibilidad en todo el sistema." }, "roleAdmin": { "label": "Administrador:", "description": "Puede configurar los ajustes de disponibilidad para cualquier usuario del sistema. La siguiente tabla \"Usuarios configurados\" muestra todos los usuarios con configuraciones de disponibilidad." }, "userSelect": { "label": "Seleccionar usuario para configurar", "placeholderSelectTeamFirst": "Seleccione un equipo primero", "placeholder": "Seleccione un usuario para configurar" }, "appointmentSettings": { "title": "Configuración de citas", "defaultDuration": { "label": "Duración predeterminada de la cita (minutos)", "help": "Anulación de duración específica del técnico. Déjelo vacío para usar la duración específica del servicio de las Reglas de servicio.", "placeholder": "Déjelo vacío para usar el servicio predeterminado" }, "bufferAfter": { "label": "Tiempo de reserva entre citas (minutos)", "placeholder": "15" }, "defaultApprover": { "label": "Aprobadores", "help": "¿Quién debe revisar y aprobar las solicitudes de citas para este técnico que requieren aprobación manual? Agregue varios usuarios y/o equipos. Déjelo vacío para usar los aprobadores de toda la empresa." }, "allowClientPreference": { "label": "Permitir preferencia del cliente", "help": "Permitir que los clientes soliciten este técnico específicamente" } }, "schedule": { "timezoneNotice": "Los horarios están en su zona horaria local ({{timeZone}})", "columns": { "day": "Día", "available": "Disponible", "startTime": "Hora de inicio", "endTime": "Hora de finalización" } }, "configuredUsers": { "title": "Usuarios configurados", "description": "Usuarios con configuración de disponibilidad configurada", "empty": "Aún no hay usuarios configurados", "columns": { "userName": "Nombre de usuario", "status": "Estado" }, "status": { "configured": "Configurado" } }, "actions": { "save": "Guardar horas de usuario" }, "feedback": { "selectUserError": "Por favor seleccione un usuario", "saveSuccess": "Horas de usuario guardadas", "saveError": "No se pudieron guardar las horas del usuario", "deleteSuccess": "Disponibilidad del usuario eliminada", "deleteError": "No se pudo eliminar la disponibilidad del usuario" }, "deleteDialog": { "title": "Eliminar disponibilidad del usuario", "message": "¿Está seguro de que desea eliminar la configuración de disponibilidad de {{userName}}? Esto eliminará todas sus horas de trabajo configuradas. Esta acción no se puede deshacer." } }, "serviceRules": { "serviceSelect": { "label": "Seleccione el servicio para configurar", "placeholder": "Seleccione un servicio para configurar" }, "editor": { "title": "Editar reglas: {{serviceName}}", "allowWithoutContract": { "label": "Permitir reserva sin contrato" }, "maxAppointmentsPerDay": { "label": "Citas máximas por día" }, "defaultDuration": { "label": "Duración predeterminada de la cita (minutos)", "help": "Duración predeterminada para citas de este tipo de servicio. Puede ser anulado por configuraciones específicas del técnico en Horas de usuario.", "placeholder": "por ejemplo, 60 (minutos)" } }, "configuredServices": { "title": "Servicios configurados", "description": "Servicios con reglas de citas configuradas", "empty": "Aún no hay servicios configurados", "columns": { "serviceName": "Nombre del servicio", "duration": "Duración (min)", "withoutContract": "Sin contrato", "maxPerDay": "Máximo por día" } }, "common": { "noLimit": "Sin límite" }, "actions": { "save": "Guardar reglas de servicio" }, "feedback": { "selectServiceError": "Por favor seleccione un servicio", "saveSuccess": "Reglas de servicio guardadas", "saveError": "No se pudieron guardar las reglas del servicio", "deleteSuccess": "Reglas de servicio eliminadas", "deleteError": "No se pudieron eliminar las reglas del servicio" }, "deleteDialog": { "title": "Eliminar reglas del servicio", "message": "¿Está seguro de que desea eliminar las reglas de {{serviceName}}? Esta acción no se puede deshacer." } }, "exceptions": { "form": { "title": "Agregar excepción", "date": { "label": "Seleccionar fecha" }, "user": { "label": "Usuario (opcional: dejar vacío para toda la empresa)", "placeholder": "Seleccionar usuario" }, "isAvailable": { "label": "Disponible en este día" }, "reason": { "label": "Razón", "placeholder": "Vacaciones, tiempo libre, etc." } }, "common": { "companyWide": "En toda la empresa" }, "actions": { "add": "Agregar excepción" }, "list": { "title": "Excepciones existentes", "empty": "No hay excepciones configuradas", "status": { "available": "Disponible", "unavailable": "Indisponible" } }, "feedback": { "selectDateError": "Por favor seleccione una fecha", "addSuccess": "Excepción agregada", "addError": "No se pudo agregar la excepción", "deleteSuccess": "Excepción eliminada", "deleteError": "No se pudo eliminar la excepción" } }, "teamsMeetings": { "prerequisites": { "title": "Requisitos previos de Azure", "description": "Antes de activarlo, concede a la aplicación el permiso OnlineMeetings.ReadWrite.All y crea una Application Access Policy para la cuenta organizadora.", "steps": { "toggle": "Mostrar pasos de configuración de Azure", "step1": { "title": "1. Otorgar permiso de aplicación de Graph", "item1": "Abre el centro de administración de Entra → Registros de aplicaciones.", "item2": "Selecciona la aplicación utilizada por la integración de Teams de este inquilino.", "item3": "Permisos de API → Agregar → Microsoft Graph → Permisos de aplicación.", "item4": "Añade OnlineMeetings.ReadWrite.All y concede el consentimiento de administrador." }, "step2": { "title": "2. Crear una Application Access Policy", "intro": "La creación de reuniones solo por aplicación debe permitirse explícitamente para la cuenta organizadora.", "note": "Espera hasta 30 minutos a que se propague la directiva antes de hacer clic en Verificar." } } }, "organizer": { "title": "Organizador de la reunión", "label": "ID de objeto de usuario de Microsoft del organizador de reunión predeterminado", "help": "Las citas aprobadas crean reuniones de Teams como este usuario de Microsoft. Usa el ID de objeto de Entra; los UPN pueden devolver 404 desde Microsoft Graph onlineMeetings.", "placeholder": "00000000-0000-0000-0000-000000000000" }, "actions": { "save": "Guardar", "saving": "Guardando...", "verify": "Verificar", "verifying": "Verificando...", "openRunbook": "Abrir runbook de configuración" }, "feedback": { "saveSuccess": "Organizador de reunión de Teams guardado", "saveError": "No se pudo guardar el organizador de reunión de Teams", "verifySuccess": "Organizador de reunión de Teams verificado", "verifyError": "No se pudo verificar el organizador de reunión de Teams" }, "verify": { "valid": "Organizador de Microsoft verificado correctamente.", "validWithName": "Usuario de Microsoft verificado: {{displayName}}.", "reasons": { "eeDisabled": "La verificación de reuniones de Teams solo está disponible en la Enterprise Edition.", "notConfigured": "La integración de Teams debe estar activa antes de poder verificar un organizador.", "userNotFound": "Microsoft no pudo encontrar un usuario para ese organizador.", "policyMissing": "El usuario de Microsoft existe, pero la Application Access Policy aún no permite crear reuniones.", "graphError": "Microsoft Graph no pudo verificar este organizador ahora mismo." } } } }, "entryPopup": { "title": { "appointmentRequest": "Solicitud de cita", "view": "Ver entrada", "edit": "Editar entrada", "new": "Nueva entrada" }, "alerts": { "privateEntryOnlyCreator": "Esta es una entrada privada. Sólo el creador puede ver o editar detalles." }, "validation": { "summaryTitle": "Por favor complete los campos requeridos:", "titleRequiredForAdHoc": "El título es obligatorio para las entradas ad-hoc.", "startRequired": "Fecha/hora de inicio", "endRequired": "Fecha/hora de finalización", "assigneeRequired": "Al menos un usuario asignado", "startInvalid": "La fecha de inicio no es válida", "endInvalid": "La fecha de finalización no es válida", "endAfterStart": "La fecha de finalización debe ser posterior a la fecha de inicio.", "recurrenceIntervalPositive": "El intervalo de recurrencia debe ser un número entero positivo.", "recurrenceCountPositive": "El número de ocurrencias debe ser un número entero positivo.", "recurrenceEndInvalid": "La fecha de finalización de la recurrencia no es válida", "recurrenceEndAfterStart": "La fecha de finalización de la recurrencia debe ser posterior a la fecha de inicio." }, "fields": { "title": "Título", "assignedUsers": "Usuarios asignados *", "privateEntry": "Entrada privada (no visible para otros usuarios)", "start": "Comenzar *", "end": "Fin *", "notes": "Notas" }, "actions": { "cancel": "Cancelar", "close": "Cerrar", "save": "Guardar", "delete": "Eliminar entrada" }, "workItem": { "adHocFallback": "Entrada ad hoc (sin elemento de trabajo)", "openDetails": "Detalles" }, "appointmentRequest": { "approved": { "title": "Cita aprobada", "descriptionWithDate": "Esta cita se originó a partir de una solicitud de un cliente y fue aprobada el {{date}}.", "description": "Esta cita se originó a partir de una solicitud de un cliente.", "joinTeamsMeeting": "Unirse a la reunión de Teams", "downloadRecording": "Descargar grabación", "viewTranscript": "Ver transcripción" }, "pending": { "title": "Solicitud de cita pendiente", "description": "Esta es una solicitud de cita de un cliente. Puede aprobarlo o rechazarlo a continuación." }, "declined": { "title": "Solicitud de cita rechazada", "descriptionWithReason": "Esta solicitud de cita fue rechazada: {{reason}}", "description": "Esta solicitud de cita fue rechazada." }, "cancelled": { "title": "Solicitud de cita cancelada", "description": "Esta solicitud de cita fue cancelada por el cliente." }, "requesterInfo": { "title": "Información del solicitante", "company": "Empresa", "name": "Nombre", "email": "Correo electrónico", "phone": "Teléfono" }, "requestedDateTimeLabel": "Fecha y hora solicitadas", "assignTechnicianLabel": "Asignar técnico *", "assignTechnicianPlaceholder": "Seleccionar técnico", "scheduledDateTimeLabel": "Fecha y hora programadas", "noNotes": "No se proporcionaron notas", "declineReasonLabel": "Motivo del rechazo *", "declineReasonPlaceholder": "Proporcione una razón para rechazar esta solicitud...", "actions": { "approve": "Aprobar", "decline": "Rechazar", "confirmDecline": "Confirmar rechazo" }, "toasts": { "assignTechnicianRequired": "Por favor asigne un técnico", "approved": "Solicitud de cita aprobada", "approveFailed": "No se pudo aprobar la solicitud", "declineReasonRequired": "Por favor proporcione una razón para rechazar", "declined": "Solicitud de cita rechazada", "declineFailed": "No se pudo rechazar la solicitud" }, "generateTeamsMeeting": "Generar enlace de reunión de Microsoft Teams" }, "recurrence": { "label": "Reaparición", "intervalLabel": "Intervalo", "endLabel": "Fin", "endDateLabel": "Fecha de finalización", "occurrencesLabel": "Ocurrencias", "workdaysOnly": "Solo días laborables (lunes a viernes, excepto festivos)", "options": { "none": "Ninguno", "daily": "A diario", "weekly": "Semanalmente", "monthly": "Mensual", "yearly": "Anual" }, "endOptions": { "never": "Nunca", "date": "En la fecha", "count": "Después" }, "applyDialog": { "title": "Aplicar cambios a", "message": "Seleccione qué eventos actualizar:" } }, "delete": { "validationFailed": "No se pudo validar la eliminación. Por favor inténtalo de nuevo.", "entityFallback": "esta entrada de horario", "scopeDialog": { "title": "Eliminar entrada de programación", "message": "Seleccione qué eventos eliminar:", "confirm": "Continuar" }, "confirm": "¿Seguro que quieres eliminar esta entrada del calendario? Esta acción no se puede deshacer.", "confirmWithTeamsWarning": "¿Seguro que quieres eliminar esta entrada del calendario? Esta acción no se puede deshacer. También se eliminará la reunión de Microsoft Teams." }, "scopeOptions": { "single": "Sólo este evento", "future": "Este y futuros eventos.", "all": "Todos los eventos" } }, "actions": { "print": "Imprimir", "printOptions": "Opciones de impresión" }, "interactionDetails": { "fields": { "client": "Cliente", "contact": "Contacto", "duration": "Duración", "endTime": "Hora de finalización", "notes": "Notas", "startTime": "Hora de inicio", "status": "Estado", "title": "Título", "user": "Usuario" }, "noClient": "Ningún cliente asociado", "noContact": "Ningún contacto asociado", "noTitle": "Sin título", "notAvailable": "N/D", "title": "Detalles de la interacción", "unknownUser": "Desconocido" } }