{ "title": "Proyectos", "subtitle": "Resumen de tus proyectos actuales y anteriores", "searchPlaceholder": "Buscar proyectos...", "allStatuses": "Todos los estados", "resetFilters": "Reiniciar", "active": "Proyectos activos", "completed": "Proyectos completados", "onHold": "En espera", "timeline": "Cronograma", "milestones": "Hitos", "phasesAndTasks": "Fases y Tareas", "kanbanView": "Kanban", "listView": "Lista", "task": "tarea", "tasks": { "title": "Tareas", "noTasks": "No hay tareas para mostrar", "taskName": "Nombre", "dueDate": "Fecha de vencimiento", "status": "Estado", "assignedTo": "Asignado a", "assignee": "Responsable", "estimatedHours": "Horas estimadas", "estHours": "Horas est.", "hoursLogged": "Horas registradas", "checklist": "Lista de verificación", "dependencies": "Dep.", "priority": "Prioridad", "services": "Servicios", "attachments": "Archivos adjuntos", "actualHours": "Horas reales", "createdAt": "Creado el", "updatedAt": "Actualizado el", "assignedTeam": "Equipo asignado", "phase": "Fase", "priorityLevel": "Nivel de prioridad", "seeLess": "Ver menos", "seeMore": "Ver más", "checklistItems": "Elementos de la lista", "of": "de", "complete": "completado", "additionalAgents": "Agentes adicionales", "unassigned": "Sin asignar" }, "phases": { "title": "Fases del proyecto", "completion": "Completado", "noPhases": "No hay fases para mostrar", "statusColumns": "Columnas de estado", "statusColumnsProjectDefaults": "Valores predeterminados del proyecto", "statusColumnsCustom": "Personalizado ({{count}} estados)", "configureStatuses": "Configurar", "phaseName": "Nombre de fase", "phaseDescription": "Descripción de fase", "descriptionPlaceholder": "Descripción", "startDate": "Fecha de inicio", "startDatePlaceholder": "Fecha de inicio", "endDate": "Fecha de fin", "endDatePlaceholder": "Fecha de fin", "cancelEditing": "Cancelar edición", "saveChanges": "Guardar cambios", "editPhase": "Editar fase", "deletePhase": "Eliminar fase", "cancel": "Cancelar", "save": "Guardar", "taskCount_other": "{{count}} tareas", "startLabel": "Inicio", "dueLabel": "Vencimiento", "notSet": "No establecido", "taskCount_one": "{{count}} tarea" }, "projectList": { "addProject": "Agregar proyecto", "createFromTemplate": "Crear desde plantilla", "openMenu": "Abrir menú", "searchPlaceholder": "Buscar proyectos, tareas y comentarios", "statusPlaceholder": "Seleccionar estado", "contactPlaceholder": "Filtrar por contacto", "managerPlaceholder": "Todos los responsables", "deadlinePlaceholder": "Filtrar por vencimiento", "deletedSuccess": "Proyecto eliminado correctamente", "deleteValidationFailed": "Error al validar la eliminación. Inténtelo de nuevo.", "deleteFailed": "Error al eliminar el proyecto.", "statusUnknown": "Desconocido", "notAvailable": "N/D", "noClient": "Sin cliente", "noContact": "Sin contacto", "unassigned": "Sin asignar", "thisProject": "este proyecto", "statusOptions": { "all": "Todos los proyectos", "active": "Proyectos activos", "inactive": "Proyectos inactivos" }, "columns": { "number": "Número", "projectName": "Nombre del proyecto", "client": "Cliente", "contact": "Contacto", "status": "Estado", "deadline": "Fecha límite", "created": "Creado", "projectManager": "Gestor del proyecto", "tags": "Etiquetas", "priority": "Prioridad", "taskType": "Tipo", "actions": "Acciones" }, "unknownUser": "Desconocido" }, "quickAdd": { "title": "Agregar nuevo proyecto", "projectNamePlaceholder": "Nombre del proyecto *", "descriptionPlaceholder": "Descripción", "statusLabel": "Estado *", "statusPlaceholder": "Seleccionar estado", "clientLabel": "Cliente *", "contactLabel": "Contacto", "contactPlaceholder": "Seleccionar contacto", "projectManagerLabel": "Responsable del proyecto", "projectManagerPlaceholder": "Seleccionar responsable", "budgetedHoursLabel": "Horas presupuestadas", "budgetedHoursPlaceholder": "Ingresar horas presupuestadas", "startDateLabel": "Fecha de inicio", "startDatePlaceholder": "Seleccionar fecha de inicio", "endDateLabel": "Fecha de fin", "endDatePlaceholder": "Seleccionar fecha de fin", "clientPortalVisibility": "Visibilidad en el portal del cliente", "validationTitle": "Corrige los siguientes errores:", "projectNameRequired": "El nombre del proyecto es obligatorio", "clientRequired": "El cliente es obligatorio", "projectStatusRequired": "El estado del proyecto es obligatorio", "taskStatusRequired": "Debe seleccionarse al menos un estado de tarea", "creating": "Creando...", "create": "Crear proyecto", "createdSuccess": "Proyecto creado correctamente", "tagCreatePartialError": "No se pudieron crear {{count}} etiqueta(s)", "createError": "No se pudo crear el proyecto. Inténtalo de nuevo." }, "projectEdit": { "projectNameLabel": "Nombre del proyecto *", "projectNamePlaceholder": "Ingresa el nombre del proyecto...", "descriptionPlaceholder": "Ingresa la descripción del proyecto...", "statusLabel": "Estado *", "statusPlaceholder": "Seleccionar estado", "contactLabel": "Contacto", "contactPlaceholder": "Seleccionar contacto", "budgetedHoursLabel": "Horas presupuestadas", "budgetedHoursPlaceholder": "Ingresar horas presupuestadas", "tagsLabel": "Etiquetas", "startDatePlaceholder": "Seleccionar fecha de inicio", "endDatePlaceholder": "Seleccionar fecha de fin", "clientPortalVisibility": "Visibilidad en el portal del cliente", "validationTitle": "Completa los campos obligatorios:", "updatedSuccess": "Proyecto actualizado correctamente", "updateError": "Error al actualizar el proyecto", "unsavedTitle": "Cambios sin guardar", "unsavedMessage": "Tienes cambios sin guardar. ¿Seguro que quieres cancelar?", "saveTitle": "Guardar cambios", "saveMessage": "¿Seguro que quieres guardar los cambios y cerrar el panel?", "continueEditing": "Seguir editando", "discardChanges": "Descartar cambios", "saveAndClose": "Guardar y cerrar", "saving": "Guardando..." }, "projectDetail": { "allAgents": "Todos los agentes", "primaryAssigneeOnly": "Mostrar solo las tareas donde el agente seleccionado es el asignado principal", "taskType": "Tipo de tarea", "priority": "Prioridad", "searchTasksPlaceholder": "Buscar tareas...", "caseSensitive": "Distinguir mayúsculas", "wholeWord": "Palabra completa", "wholeWordShort": "Word", "clearSearch": "Limpiar búsqueda", "taskList": "Lista de tareas", "kanbanBoard": "Tablero Kanban", "kanbanBoardWithPhase": "Tablero Kanban: {{phaseName}}", "selectPhaseToViewKanban": "Selecciona o crea una fase para ver el tablero Kanban.", "selectPhaseToAddCard": "Selecciona una fase antes de agregar una tarjeta.", "selectPhaseToAddTask": "Selecciona una fase antes de agregar una tarea.", "showPhasesPanel": "Mostrar panel de fases", "hidePhasesPanel": "Ocultar panel de fases", "phaseHelp": "Una fase es una etapa distintiva o un hito dentro del cronograma del proyecto. Cada fase puede contener varias tareas y ayuda a organizar el trabajo en secciones manejables.", "phaseNameRequired": "El nombre de la fase no puede estar vacío", "phaseAddedSuccess": "¡Nueva fase agregada correctamente!", "phaseUpdatedSuccess": "¡Fase actualizada correctamente!", "phaseDeletedSuccess": "¡Fase eliminada correctamente!", "phaseReorderedSuccess": "Fase reordenada correctamente", "taskAddedSuccess": "¡Nueva tarea agregada correctamente!", "taskPhaseMismatch": "Error al añadir nueva tarea: desajuste de fase", "taskDeletedGeneric": "¡Tarea eliminada con éxito!", "taskDeletedSuccess": "¡La tarea \"{{taskName}}\" se eliminó correctamente!", "taskMovedSuccess": "¡La tarea \"{{taskName}}\" se movió correctamente!", "taskMovedCrossPhaseSuccess": "¡La tarea \"{{taskName}}\" se movió a otra fase correctamente! Cambia a la fase de destino para verla.", "taskMovedToPhase": "Tarea movida a {{phaseName}}", "taskStatusUpdated": "Estado de la tarea actualizado", "taskMovedToNewPhase": "Tarea movida a una nueva fase", "taskMovedToNewStatus": "Tarea movida a un nuevo estado", "taskReordered": "Tarea reordenada", "tasksReorderedSuccess": "Tareas reordenadas correctamente", "commentCountsLoadError": "Error al cargar el recuento de comentarios", "taskAssigneeUpdatedSuccess": "¡Responsable de la tarea actualizado correctamente!", "teamAssignedSuccess": "Equipo asignado correctamente", "assignTeamFailed": "No se pudo asignar el equipo", "taskDuplicatedSuccess": "¡La tarea \"{{taskName}}\" se duplicó correctamente!", "duplicateNoTargetPhase": "No se encontró una fase de destino para duplicar.", "taskNotFound": "Tarea no encontrada", "taskPhaseNotFound": "No se encontró la fase de la tarea", "allTypes": "Todos los tipos", "primaryShort": "Principal", "deletePhaseTitle": "Eliminar fase", "deletePhaseMessage": "¿Seguro que desea eliminar la fase «{{phaseName}}»? También se eliminarán todas las tareas y sus listas de verificación en esta fase.", "deleteTaskTitle": "Eliminar tarea", "deleteTaskMessage": "¿Seguro que desea eliminar la tarea «{{taskName}}»? Esta acción no se puede deshacer.", "moveTaskTitle": "Mover tarea", "confirmMoveTaskMessage": "¿Seguro que desea mover la tarea «{{taskName}}» de la fase «{{sourcePhase}}» a «{{targetPhase}}»?", "moveTaskFailed": "Error al mover la tarea. Inténtelo de nuevo.", "loading": "Cargando...", "loadingListView": "Cargando vista de lista...", "importSuccess": "Se importaron {{phases}} fases y {{tasks}} tareas", "importFailed": "Error de importación: {{error}}", "completionSummary": "{{completed}} / {{total}} completadas", "selectedPhaseCompletionHelp": "Muestra el porcentaje de tareas completadas solo de la fase seleccionada «{{phaseName}}»", "showStickyStatusNames": "Mostrar nombres de estado fijos", "hideStickyStatusNames": "Ocultar nombres de estado fijos", "pinHeader": "Fijar encabezado arriba", "unpinHeader": "Desfijar encabezado", "showHideColumns": "Mostrar/ocultar columnas", "columns": "Columnas", "showAll": "Mostrar todo", "noColumns": "No hay columnas disponibles", "allColumnsHidden": "Todas las columnas están ocultas", "allColumnsHiddenHint": "Muestra una o más columnas para ver tus tareas.", "showAllColumns": "Mostrar todas las columnas", "hideColumn": "Ocultar columna", "showColumn": "Mostrar columna", "addTask": "Agregar tarea", "taskUpdatedSuccess": "¡Tarea actualizada correctamente!", "hiddenColumnsAlert": "{{count}} columnas ocultas por falta de espacio. Cambie el tamaño del navegador para ver más.", "listViewEmptyMessage": "Cree fases y añada tareas para verlas aquí", "seeMore": "Ver más", "seeLess": "Ver menos", "checklistItems": "Elementos de la lista:", "checklistSummary": "{{completed}} de {{total}} completados", "unknownUser": "Desconocido", "blocksLabel": "Bloques:", "taskCardAria": "Tarea: {{taskName}}. Arrastre para reordenar o use el menú para acciones.", "taskActions": "Acciones de tarea", "priorityLevel": "Nivel de prioridad: {{priority}}", "dueLabel": "Vencimiento", "noDueDate": "Sin fecha de vencimiento", "hideTags": "Ocultar etiquetas", "criticalPath": "Ruta crítica", "selectTaskAria": "Seleccionar tarea {{taskName}}", "bulkMoveSuccess": "¡{{count}} tarea(s) movida(s) correctamente!", "bulkMovePartial": "{{moved}} tarea(s) movida(s), {{failed}} con errores.", "bulkDeleteSuccess": "¡{{count}} tarea(s) eliminada(s) correctamente!", "bulkDeletePartial": "{{deleted}} tarea(s) eliminada(s), {{failed}} con errores.", "bulkAssignSuccess": "¡{{count}} tarea(s) asignada(s) correctamente!", "bulkAssignPartial": "{{success}} tarea(s) asignada(s), {{failed}} con errores.", "bulkAssignTeamSuccess": "¡{{count}} tarea(s) asignada(s) al equipo correctamente!", "bulkAssignTeamPartial": "{{success}} tarea(s) asignada(s) al equipo, {{failed}} con errores.", "bulkDeleteTitle": "Eliminar tareas", "bulkDeleteMessage": "¿Seguro que quieres eliminar {{count}} tarea(s) seleccionada(s)? Esta acción no se puede deshacer.", "bulkTasksMovedSuccess": "{{count}} tareas movidas", "bulkTasksMovedToPhase": "{{count}} tareas movidas a {{phaseName}}", "moveTasksTitle": "Mover tareas", "confirmMoveTasksMessage": "¿Seguro que quieres mover {{count}} tareas seleccionadas a la fase \"{{targetPhase}}\"?", "bulkTagsSuccess_one": "Etiquetas añadidas a {{count}} tarea", "bulkTagsSuccess_other": "Etiquetas añadidas a {{count}} tareas", "bulkTagsPartial": "No se pudieron añadir etiquetas a algunas tareas", "bulkTagsFailure": "No se pudieron añadir etiquetas a las tareas seleccionadas" }, "taskForm": { "addTitle": "Agregar tarea", "editTitle": "Editar tarea", "taskNameLabel": "Nombre de la tarea *", "taskNameRequired": "Nombre de la tarea", "taskNamePlaceholder": "Ingresa el nombre de la tarea...", "descriptionLabel": "Descripción", "descriptionPlaceholder": "Agregar descripción de la tarea...", "dueDateLabel": "Fecha de vencimiento", "taskDueDateLabel": "Fecha de vencimiento de la tarea", "dueDatePlaceholder": "Seleccionar fecha de vencimiento", "serviceLabel": "Servicio (para partes de tiempo)", "noService": "Sin servicio", "servicePlaceholder": "Seleccionar servicio para autocompletar tiempo...", "serviceHelp": "Si se configura, este servicio se seleccionará automáticamente al crear partes de tiempo desde esta tarea.", "taskTypeLabel": "Tipo de tarea", "priorityLabel": "Prioridad", "selectPriorityPlaceholder": "Seleccionar prioridad", "estimatedHoursLabel": "Horas estimadas", "actualHoursLabel": "Horas reales", "assignedToLabel": "Asignado a", "additionalAgentsLabel": "Agentes adicionales", "addTeamMembers": "Añadir miembros del equipo", "additionalAgentsPlaceholder": "Seleccionar agentes adicionales...", "createdAtLabel": "Creado el", "moveToLabel": "Mover a", "moveToPlaceholder": "Seleccionar destino...", "duplicateToLabel": "Duplicar en", "duplicateToPlaceholder": "Seleccionar destino de duplicado...", "loading": "Cargando…", "noValidProjects": "No hay proyectos disponibles con fases y estados válidos", "loadProjectDataFailed": "Error al cargar los datos del proyecto. Inténtelo de nuevo.", "validationTitle": "Completa los campos obligatorios:", "agentAddedSuccess": "Agente agregado correctamente", "agentPendingSave": "El agente se agregará al guardar la tarea", "teamAssignedSuccess": "Equipo asignado correctamente", "assignTeamFailed": "No se pudo asignar el equipo", "teamRemovedSuccess": "Equipo eliminado correctamente", "teamRemoveFailed": "Error al eliminar la asignación del equipo", "removeTeamAssignment": "Eliminar asignación de equipo", "switchTeamAssignment": "Cambiar asignación de equipo", "removeTeamMode": { "removeAll": "Eliminar todos los miembros del equipo", "keepAll": "Mantener a todos los miembros del equipo como agentes individuales", "selective": "Seleccionar miembros individuales para conservar/eliminar", "selectiveHint": "Marca a los miembros que quieras conservar en la tarea como agentes individuales. Los miembros no marcados se eliminarán." }, "noTeamMembersFound": "No se encontraron miembros del equipo en esta tarea.", "unnamedUser": "Usuario sin nombre", "linkingPartialFailure": "Tarea creada pero no se pudieron vincular algunos elementos", "tagCreationPartialFailure": "No se pudieron crear {{count}} etiqueta(s)", "saveFailed": "Error al guardar la tarea", "deleteFailed": "Error al eliminar la tarea", "moveFailed": "Error al mover la tarea", "prepareTimeEntryFailed": "Error al preparar la entrada de tiempo. Inténtelo de nuevo.", "addAgentFailed": "Error al añadir agente", "removeAgentFailed": "Error al eliminar el agente", "duplicateFailed": "Error al duplicar la tarea.", "saveBeforeTimeEntry": "Guarda la tarea antes de agregar partes de tiempo", "addTimeEntry": "Agregar parte de tiempo", "primaryAgentRequired": "Se requiere un agente principal cuando se asignan agentes adicionales", "keepCreatedTicketsTitle": "¿Conservar tickets creados?", "keepCreatedTicketsMessage": "¿Quieres conservar estos tickets o eliminarlos?", "createdTicketsIntro_one": "Has creado {{count}} ticket durante esta sesión:", "createdTicketsIntro_other": "Has creado {{count}} tickets durante esta sesión:", "keepUploadedDocumentsTitle": "¿Conservar documentos subidos?", "keepUploadedDocumentsMessage": "¿Quieres conservar estos documentos en la sección Documentos o eliminarlos?", "documentsCleanupIntro_one": "Tiene {{count}} documento que fue {{cleanupType}}:", "documentsCleanupIntro_other": "Tiene {{count}} documentos que fueron {{cleanupType}}:", "uploadedOrCreated": "subido(s) o creado(s)", "createdOnly": "creado(s)", "uploadedOnly": "subido(s)", "createdDocumentTag": "creado", "uploadedDocumentTag": "subido", "andMore": "…y {{count}} más", "documentCleanupFailure_one": "No se pudo eliminar {{count}} documento y permanecerá en Documentos", "documentCleanupFailure_other": "No se pudieron eliminar {{count}} documentos y permanecerán en Documentos", "ticketCleanupFailure_one": "No se pudo eliminar {{count}} ticket", "ticketCleanupFailure_other": "No se pudieron eliminar {{count}} tickets", "checklistItemPlaceholder": "Elemento de lista", "reorderChecklistItem": "Arrastrar para reordenar", "insertChecklistItem": "Insertar elemento aquí", "editChecklistItem": "Editar elemento de la lista", "removeChecklistItem": "Eliminar elemento de la lista", "tagsTitle": "Etiquetas", "checklistTitle": "Lista de verificación", "createFromTicket": "Crear desde ticket", "deletingTitle": "Eliminar tarea", "deleteMessage": "¿Seguro que desea eliminar la tarea «{{taskName}}»? Esta acción no se puede deshacer.", "movingTitle": "Mover tarea", "move": "Mover", "moveMessage": "¿Seguro que desea mover la tarea «{{taskName}}» a la fase «{{phaseName}}»?", "cancelCreateTitle": "Cancelar creación de tarea", "cancelEditTitle": "Cancelar edición", "cancelMessage": "¿Está seguro de cancelar? Se perderán los cambios no guardados.", "unsavedTitle": "Cambios sin guardar", "dependencyUnsavedMessage": "Ha seleccionado una dependencia pero aún no la ha añadido. Haga clic en el botón morado + para añadirla o descarte la selección y guarde.", "discardChanges": "Descartar cambios", "continueEditing": "Continuar editando", "deleteDocumentsLabel": "Eliminar documentos", "keepDocumentsLabel": "Conservar documentos", "deleteTicketsLabel": "Eliminar tickets", "keepTicketsLabel": "Conservar tickets", "deleting": "Eliminando…", "save": "Guardar", "update": "Actualizar", "adding": "Agregando...", "updating": "Actualizando...", "deletedSuccess": "Tarea eliminada correctamente", "movedSuccess": "Tarea movida correctamente", "duplicatedSuccess": "¡La tarea \"{{taskName}}\" se duplicó correctamente!", "willBeSetOnCreate": "Se establecerá al crearla", "unknownPhase": "Fase desconocida" }, "taskDependencies": { "title": "Dependencias", "dependsOn": "Depende de:", "blocks": "Bloquea", "blockedBy": "Bloqueada por", "relatedTo": "Relacionada con", "unknownTask": "Tarea desconocida", "noOtherTasks": "No hay otras tareas disponibles para dependencias", "selectTaskPlaceholder": "Seleccionar tarea...", "selectNewTaskPlaceholder": "Seleccionar nueva tarea...", "cancelEdit": "Cancelar edición", "editDependency": "Editar dependencia", "removeDependency": "Eliminar dependencia", "addError": "No se pudo agregar la dependencia", "removeError": "No se pudo eliminar la dependencia", "updateError": "Error al actualizar la dependencia" }, "taskDocuments": { "attachmentsTitle": "Adjuntos", "createNew": "Crear nuevo documento", "linkExisting": "Vincular documento existente", "newButton": "Nuevo", "uploadButton": "Subir", "linkButton": "Enlace", "remove": "Eliminar", "unsavedTitle": "Cambios sin guardar", "unsavedMessage": "¿Está seguro de cancelar? Se perderán los cambios no guardados.", "discardChanges": "Descartar cambios", "continueEditing": "Continuar editando", "uploadFile": "Subir archivo", "documentNamePlaceholder": "Nombre del documento", "fileAttachment": "Este es un archivo adjunto", "noDocumentsAttached": "Sin documentos adjuntos", "loginToCreateError": "Inicia sesión para crear documentos", "documentNameRequired": "El nombre del documento es obligatorio", "loginToSaveError": "Inicia sesión para guardar documentos", "createdSuccess": "Documento creado correctamente", "updatedSuccess": "Documento actualizado correctamente", "loginToUploadError": "Inicia sesión para subir documentos", "uploadedSuccess": "Documento subido correctamente", "removedSuccess": "Documento eliminado", "removedFromTaskSuccess": "Documento quitado de la tarea", "loadFailed": "Error al cargar los documentos", "loadContentFailed": "Error al cargar el contenido del documento", "createFailed": "Error al crear el documento", "saveFailed": "Error al guardar el documento", "removeFailed": "Error al eliminar el documento", "downloadFailed": "Error al descargar el documento", "downloadFailedGeneric": "Descarga fallida", "exportPdfFailed": "Error al exportar el PDF", "documentFallbackName": "documento", "downloadFallbackName": "descargar", "newDocumentTitle": "Nuevo documento", "editDocumentTitle": "Editar documento", "viewDocumentTitle": "Ver documento", "pdfLabel": "PDF", "save": "Guardar", "saving": "Guardando...", "downloadFile": "Descargar archivo", "selectFolderTitle": "Seleccionar carpeta para el nuevo documento", "selectFolderDescription": "Elija dónde guardar este nuevo documento" }, "taskTicketLinks": { "restrictedTooltip": "Detalles limitados — no estás asignado a este ticket", "title": "Tickets asociados", "linkExistingTitle": "Vincular ticket existente", "createTicket": "Crear ticket", "linkTicket": "Vincular ticket", "selectTicket": "Seleccionar ticket", "selectTicketPlaceholder": "Seleccionar un ticket", "searchTicketsPlaceholder": "Buscar tickets...", "categoryPlaceholder": "Categoría", "assignedToLabel": "Asignado a", "boardLabel": "Tablero", "statusLabel": "Estado", "priorityLabel": "Prioridad", "allStatuses": "Todos los estados", "allPriorities": "Todas las prioridades", "allPhases": "Todas las fases", "searchFilterLabel": "Búsqueda: {{value}}", "categoriesFilterLabel": "Categorías: {{count}}", "assignedFilterLabel": "Asignado: {{name}}", "boardFilterLabel": "Tablero: {{name}}", "priorityFilterLabel": "Prioridad: {{label}}", "statusFilterLabel": "Estado: {{label}}", "linkToTaskLabel": "Vincular este ticket a la tarea", "duplicateError": "Este ticket ya está vinculado a esta tarea", "linkedSuccess": "Ticket vinculado correctamente", "linkFailed": "Error al vincular el ticket", "removedSuccess": "Vínculo del ticket eliminado", "removeFailed": "Error al eliminar el vínculo del ticket", "invalidTicketId": "ID de ticket no válido", "createdAndLinkedSuccess": "Ticket creado y vinculado correctamente", "createdSuccess": "Ticket creado correctamente", "linkNewFailed": "Error al vincular el nuevo ticket", "linkedToTaskSuccess": "Ticket vinculado a la tarea correctamente", "failedLoadTask": "No se pudo cargar la tarea", "clientFallback": "Cliente", "defaultNewStatus": "Nuevo" }, "materials": { "title": "Materiales del proyecto", "product": "Producto", "selectProductPlaceholder": "Seleccionar un producto...", "searchProductsPlaceholder": "Buscar productos…", "noProductsFound": "No se encontraron productos", "price": "Precio", "selectCurrencyPlaceholder": "Seleccionar moneda...", "quantity": "Cantidad", "total": "Total", "descriptionOptional": "Descripción (opcional)", "notesPlaceholder": "Notas adicionales...", "noClientAssigned": "Debe asignarse un cliente a este proyecto antes de agregar materiales.", "loadingMaterials": "Cargando materiales...", "loadingPrices": "Cargando precios...", "noMaterials": "No se agregaron materiales a este proyecto.", "noPricesConfigured": "No hay precios configurados para este producto", "selectProductError": "Selecciona un producto", "selectCurrencyError": "Selecciona una moneda", "quantityMinError": "La cantidad debe ser al menos 1", "loadFailed": "Error al cargar los materiales", "addFailed": "Error al añadir material", "removeFailed": "Error al eliminar el material", "adding": "Añadiendo…", "addMaterial": "Añadir material", "addedSuccess": "Material agregado", "removedSuccess": "Material eliminado", "productColumn": "Producto", "qtyColumn": "Cant.", "rateColumn": "Tarifa", "totalColumn": "Total", "statusColumn": "Estado", "unknownProduct": "Producto desconocido", "billed": "Facturado", "pending": "Pendiente", "unbilledTotal": "No facturado ({{currency}}): " }, "export": { "title": "Exportar tareas del proyecto", "phasesToExport": "Fases a exportar", "fieldsToExport": "Campos a exportar", "selectAll": "Seleccionar todo", "deselectAll": "Deseleccionar todo", "phasesSelected_one": "{{selected}} de {{total}} fase seleccionada", "phasesSelected_other": "{{selected}} de {{total}} fases seleccionadas", "fieldsSelected": "{{selected}} de {{total}} campos seleccionados", "exportTasks": "Exportar tareas", "exporting": "Exportando tareas...", "completeTitle": "Exportación completa", "success_one": "Se exportó {{count}} tarea correctamente a CSV.", "success_other": "Se exportaron {{count}} tareas correctamente a CSV.", "failed": "No se pudieron exportar las tareas", "done": "Hecho", "fields": { "taskName": "Nombre de la tarea", "description": "Descripción", "phase": "Fase", "status": "Estado", "isClosed": "Está cerrada", "taskType": "Tipo de tarea", "priority": "Prioridad", "assignedTo": "Asignado a", "assignedTeam": "Equipo asignado", "dueDate": "Fecha de vencimiento", "estimatedHours": "Horas estimadas", "actualHours": "Horas reales", "checklistProgress": "Progreso de la lista", "tags": "Etiquetas", "createdAt": "Creado el", "updatedAt": "Actualizado el" }, "exportSelected": "Exportar {{count}} seleccionada(s)", "selectedTasksNotice_one": "Exportando {{count}} tarea seleccionada.", "selectedTasksNotice_other": "Exportando {{count}} tareas seleccionadas." }, "import": { "title": "Importar fases y tareas", "uploadIntro": "Sube un archivo CSV con datos de fases y tareas", "requiredFields": "Obligatorio:", "requiredFieldsList": "task_name", "optionalFields": "Opcional:", "optionalFieldsList": "phase_name, task_description, assigned_to, estimated_hours, actual_hours, due_date, priority, service, task_type, status, tags", "noteLabel": "Nota:", "defaultPhaseNote": "Las tareas sin phase_name se agruparán en \"{{phaseName}}\"", "downloadTemplate": "Descargar plantilla CSV", "mapFieldsTitle": "Asignar campos de tarea a columnas CSV", "fieldColumn": "Campo", "selectCsvColumn": "Seleccionar columna CSV", "fieldInstructions": "Selecciona qué columna CSV contiene los datos de cada campo. Los campos marcados con * son obligatorios.", "notMapped": "No asignado", "rowLimitExceeded": "Se superó el límite de filas:", "rowLimitDescription": "Su CSV tiene {{original}} filas, pero solo se importarán las primeras {{kept}} filas. Divida el archivo en lotes más pequeños para las filas restantes.", "previewTitle": "Vista previa de la importación", "totalRows": "Filas totales:", "validRows": "Válidas:", "invalidRows": "Inválidas:", "phasesCount": "Fases:", "tasksCount": "Tareas:", "skipInvalidRows": "Omitir filas inválidas", "skipInvalidRowsHelp": "Continuar la importación incluso si algunas filas tienen errores de validación", "yes": "Sí", "no": "No", "structureTitle": "Estructura de la importación", "phaseTaskCount": "({{count}} tareas)", "estimatedHoursSummary": "({{hours}} h)", "validReadyTooltip": "Válido - Listo para importar", "invalidReadyTooltip": "No válido - Tiene errores", "noIssues": "-", "unmatchedAgentsCount": "{{count}} agente(s)", "unmatchedAgentsWarning": "de su CSV no coinciden con los usuarios existentes. Se le pedirá que los asigne en el siguiente paso.", "unmatchedStatusesCount": "{{count}} estado(s)", "unmatchedStatusesWarning": "de su CSV no coinciden con los estados de proyecto existentes. Se le pedirá que los resuelva {{timing}}.", "afterMappingAgents": "tras mapear agentes", "inTheNextStep": "en el siguiente paso", "invalidRowsCount": "{{count}} fila(s)", "invalidRowsBlockingError": "tienen errores de validación. Active «Omitir filas no válidas» para continuar solo con las filas válidas, o vuelva atrás y corrija su CSV.", "largeImportConfirmHelp": "Entiendo que esto creará {{phases}} fase(s) y {{tasks}} tarea(s). Esta acción puede tardar un rato.", "processingPreview": "Procesando…", "preview": "Vista previa", "nextMapAgents": "Siguiente: Asignar agentes", "nextResolveStatuses": "Siguiente: Resolver estados", "importTasksButton": "Importar {{tasks}} tareas", "mapUnmatchedAgentsTitle": "Asignar agentes no encontrados", "agentResolutionIntro": "Los siguientes nombres de agentes de su CSV no coinciden con ningún usuario existente. Elija cómo gestionar cada uno. El primer agente en una lista separada por comas se convierte en el responsable principal, y los agentes adicionales se convierten en recursos de la tarea.", "taskCountLabel_one": "({{count}} tarea)", "taskCountLabel_other": "({{count}} tareas)", "tasksList": "Tareas: {{tasks}}", "andMore": " y {{count}} más…", "mapToExistingUser": "Asignar a usuario existente:", "selectUserPlaceholder": "Seleccionar usuario...", "skipAgent": "Omitir este agente", "skipPrimaryAgentHelp": "Las tareas donde este sea el agente principal se importarán sin asignado.", "skipAdditionalAgentHelp": "Este agente adicional no se añadirá a las tareas afectadas.", "resolveStatusesTitle": "Resolver estados no encontrados", "statusResolutionIntro": "Los siguientes estados de su CSV no coinciden con ningún estado de proyecto existente. Elija cómo gestionar cada uno:", "mapToExistingStatus": "Asignar a existente:", "noStatusSpecified": "Usar la columna \"Sin estado especificado\" (se creará si es necesario)", "createNewStatus": "Crear nueva columna de estado \"{{statusName}}\"", "mapAgentRequiredError": "Selecciona un usuario de destino para todas las resoluciones \"Asignar a usuario existente\" antes de continuar.", "mapStatusRequiredError": "Selecciona un estado de destino para todas las resoluciones \"Asignar a existente\" antes de importar.", "largeImportConfirm": "Confirmar importación grande ({{tasks}} tareas)", "largeImportHelp": "Estás importando {{tasks}} tareas. El procesamiento puede tardar un momento.", "primaryAgent": "Agente principal", "processing": "Importando fases y tareas...", "importingButton": "Importando…", "completeTitle": "Importación completa", "completeWithIssuesTitle": "Importación completada con incidencias", "createdSummary": "Se crearon {{phases}} fases y {{tasks}} tareas", "successSummary": "Se crearon {{phases}} fases y {{tasks}} tareas correctamente", "errorsLabel": "Errores:", "emptyCsvError": "El archivo CSV está vacío o no tiene filas de datos", "readCsvError": "Error al leer el archivo CSV", "requiredFieldNotMapped": "El campo obligatorio «{{fieldLabel}}» no está asignado", "processCsvError": "Error al procesar los datos CSV", "importDataError": "Error al importar datos", "table": { "status": "Estado", "row": "Fila", "phase": "Fase", "task": "Tarea", "issues": "Incidencias", "valid": "Válido" }, "fields": { "task_name": "Nombre de la tarea *", "phase_name": "Nombre de la fase", "task_description": "Descripción de la tarea", "assigned_to": "Asignado a", "estimated_hours": "Horas estimadas", "actual_hours": "Horas reales", "due_date": "Fecha de vencimiento", "priority": "Prioridad", "service": "Servicio", "task_type": "Tipo de tarea", "status": "Estado", "tags": "Etiquetas" }, "fallbackPhaseLabel": "Fase predeterminada para tareas sin phase_name", "fallbackPhaseHelp": "{{count}} fila(s) no tienen fase. Elija una fase existente o mantenga el valor predeterminado para crear una.", "fallbackPhaseCreateDefault": "Crear nueva fase: \"{{name}}\"", "fallbackStatusLabel": "Estado predeterminado para tareas sin estado", "fallbackStatusHelp": "{{count}} fila(s) no tienen estado. El estado seleccionado se asignará a esas tareas.", "rowResultsTitle": "Resultados de filas", "rowFilterLabel": "Mostrar:", "rowFilterAll": "Todas las filas ({{count}})", "rowFilterImported": "Se importarán ({{count}})", "rowFilterSkipped": "Se omitirán ({{count}})", "rowsToBeSkippedCount": "{{count}} fila(s) se omitirán", "rowsToBeSkippedHelp": "porque no superaron la validación. Use el filtro de arriba para revisarlas.", "statusUnmatchedSuffix": "Sin coincidencia", "statusUnmatchedTooltip": "El estado no coincide con ningún estado existente para esta fase. Resuélvalo en los pasos de mapeo antes de importar.", "statusFallbackSuffix": "Predeterminado", "statusFallbackTooltip": "Usando el estado predeterminado de respaldo para esta fase.", "inPhaseBadge": "en {{phase}}" }, "dialogs": { "moveTask": { "title": "Mover tarea", "selectTargetError": "Selecciona una fase de destino.", "selectDifferentTargetError": "Selecciona una fase o estado diferente para mover la tarea.", "message": "Mover la tarea \"{{taskName}}\" a una nueva fase/estado:", "placeholder": "Seleccionar proyecto/fase/estado de destino...", "moving": "Moviendo…", "confirm": "Confirmar movimiento" }, "duplicateTask": { "title": "Duplicar tarea", "selectTargetError": "Selecciona una fase de destino.", "message": "Duplicar la tarea \"{{taskName}}\" en:", "placeholder": "Seleccionar proyecto/fase/estado de destino...", "withChecklist": "Duplicar tarea con elementos de lista de verificación", "withoutChecklist": "Duplicar tarea sin elementos de lista de verificación", "withPrimaryAssignee": "Duplicar tarea con asignado principal", "withoutPrimaryAssignee": "Duplicar tarea sin asignado principal", "withAdditionalAssignees": "Duplicar tarea con asignados adicionales ({{count}})", "withoutAdditionalAssignees": "Duplicar tarea sin asignados adicionales", "withTicketLinks": "Duplicar tarea con enlaces de tickets ({{count}})", "withoutTicketLinks": "Duplicar tarea sin enlaces de tickets", "duplicating": "Duplicando...", "confirm": "Confirmar duplicación" }, "createTaskFromTicket": { "title": "Crear tarea desde ticket", "button": "Crear tarea", "projectLabel": "Proyecto", "projectPlaceholder": "Seleccionar un proyecto", "phaseLabel": "Fase", "phasePlaceholder": "Seleccionar una fase", "statusLabel": "Estado", "statusPlaceholder": "Seleccionar un estado", "linkTicketLabel": "Vincular el ticket a la tarea creada" }, "linkTicketToTask": { "title": "Vincular ticket a tarea", "button": "Vincular a tarea", "projectLabel": "Proyecto", "projectPlaceholder": "Seleccionar un proyecto", "phaseLabel": "Fase (filtro opcional)", "phasePlaceholder": "Todas las fases", "taskLabel": "Tarea", "taskPlaceholder": "Seleccionar una tarea", "linkedSuccess": "Ticket vinculado a la tarea correctamente", "linking": "Vinculando…", "confirm": "Enlace", "linkTicketError": "No se pudo vincular el ticket" }, "prefillFromTicket": { "title": "Rellenar desde ticket", "searchTicketsPlaceholder": "Buscar tickets...", "selectTicket": "Seleccionar ticket", "linkTicketLabel": "Vincular este ticket a la tarea", "confirm": "Rellenar previamente", "allStatuses": "Todos los estados", "allPriorities": "Todas las prioridades" }, "ticketLinkedTasks": { "restrictedTooltip": "Detalles limitados — no estás asignado a esta tarea", "title": "Tareas de proyecto vinculadas", "loadFailed": "No se pudo cargar la tarea", "phaseNotFound": "No se encontró la fase de la tarea", "openFailed": "Error al abrir la tarea", "task": "Tarea", "tasks": "Tareas", "badgeCount_other": "{{count}} Tareas", "badgeCount_one": "{{count}} Tarea" }, "bulkMoveTask": { "title": "Mover tareas", "message": "Mover {{count}} tarea(s) seleccionada(s) a una nueva fase/estado:", "confirm": "Mover tareas" }, "bulkAssign": { "title": "Asignar tareas", "message": "Asignar {{count}} tarea(s) seleccionada(s) a:", "unassigned": "Sin asignar", "assigning": "Asignando...", "confirm": "Asignar tareas", "teamReplaceNotice": "Las tareas ya asignadas a otro equipo se reasignarán al equipo seleccionado." }, "convertAdHocToTask": { "title": "Convertir en tarea de proyecto" } }, "filters": { "deadline": { "placeholder": "Filtrar por vencimiento", "filterTypeLabel": "Tipo de filtro", "selectFilterType": "Seleccionar tipo de filtro", "before": "Antes de", "after": "Después de", "on": "El", "between": "Entre", "date": "Fecha", "startDate": "Fecha de inicio", "endDate": "Fecha de fin", "clear": "Limpiar", "apply": "Aplicar filtro", "beforeDate": "Antes de {{date}}", "afterDate": "Después de {{date}}", "onDate": "El {{date}}", "betweenDates": "Entre {{start}} y {{end}}", "fromDate": "Desde {{date}}" } }, "settings": { "page": { "title": "Configuración del proyecto", "tabs": { "projectNumbering": "Numeración del proyecto", "projectStatuses": "Estados del proyecto", "taskStatuses": "Estados de tarea", "taskPriorities": "Prioridades de tarea" } }, "statuses": { "project": { "title": "Columnas de estado de tareas", "description": "Configure qué columnas de estado están disponibles para las tareas", "add_from_library": "Agregar estado" }, "closed": "Cerrado", "open": "Abrir", "confirm_delete_title": "Eliminar estado", "confirm_delete": "¿Eliminar \"{{statusName}}\"?", "delete_error": "Error al eliminar el estado", "delete_validation_failed": "Error al validar la eliminación. Inténtelo de nuevo.", "scope_label": "Alcance del estado", "scope_placeholder": "Seleccionar un alcance de estado", "scope_project_defaults": "Valores predeterminados del proyecto", "use_project_defaults": "Usar valores predeterminados del proyecto", "custom_statuses": "Estados personalizados", "phase_uses_defaults": "Esta fase utiliza las columnas de estado predeterminadas del proyecto.", "copy_from_defaults": "Copiar de valores predeterminados del proyecto", "add_custom_status": "Agregar estado personalizado", "revert_title": "Volver a valores predeterminados del proyecto", "revert_message": "¿Eliminar los estados personalizados de esta fase y volver a los valores predeterminados del proyecto?", "revert_confirm": "Revertir", "copy_failed": "No se pudieron copiar los valores predeterminados del proyecto a esta fase.", "revert_failed": "No se pudo revertir esta fase a los valores predeterminados del proyecto.", "delete_has_tasks": "\"{{statusName}}\" tiene {{count}} tarea(s). Mover a:", "delete_and_move": "Mover y eliminar", "already_added": "El estado ya fue agregado", "added_success": "Estado agregado correctamente", "removed_success": "Estado eliminado correctamente", "move_up": "Mover arriba", "move_down": "Mover abajo", "remove": "Eliminar estado", "add_existing": "Añadir existente", "create_new": "Crear nuevo", "task_statuses_label": "Estados de tarea", "phase_task_statuses_label": "Estados de tareas de fase", "customize": "Personalizar", "customize_phase": "Personalizar estados de tarea para esta fase", "customize_project": "Personalizar estados de tarea para este proyecto", "available_statuses_click_add": "Estados disponibles (haga clic para añadir):", "load_task_statuses_failed": "Error al cargar los estados de tarea", "add_task_status_failed": "Error al añadir estado", "remove_task_status_failed": "Error al eliminar el estado", "reorder_failed": "Error al reordenar los estados", "arrange_hint": "Ordene los estados en el orden en que las tareas fluirán a través de ellos.", "none_selected": "No hay estados seleccionados", "none_selected_hint": "Haz clic en \"Agregar estado\" para añadir estados al proyecto.", "selector_none_selected_hint": "Haz clic en \"Agregar existente\" para seleccionar estados disponibles o en \"Crear nuevo\" para agregar uno.", "add_from_library_title": "Agregar estado desde la biblioteca", "add_phase_from_library_title": "Agregar estado de fase desde la biblioteca", "choose_status": "Elegir un estado", "no_statuses_available": "No hay estados disponibles", "no_statuses_available_hint": "Primero crea estados en Configuración → Proyectos → Estados.", "task_status_library_title": "Biblioteca de estados de tareas del proyecto", "task_status_library_description": "Administre los estados de las tareas de los proyectos de su organización. Estos estados se pueden usar en todos los proyectos.", "task_status_library_empty": "No se encontraron estados de tareas del proyecto", "task_status_library_empty_hint": "Crea tu primer estado para comenzar", "edit_status_title": "Editar estado", "create_status_title": "Crear estado", "import_from_standard": "Importar desde estándar", "loading": "Cargando…", "status_name": "Nombre del estado", "status_name_placeholder": "p. ej., En progreso, Bloqueado, etc.", "preview": "Vista previa", "color": "Color", "icon": "Icono", "sample_task": "Tarea de ejemplo", "sample_task_hint": "Así es como se verán las tareas en la columna", "selected_color": "Color seleccionado", "selected_icon": "Icono seleccionado", "choose_icon": "Elegir icono", "mark_closed": "Marcar como estado cerrado", "mark_closed_help": "Las tareas con este estado se considerarán completadas", "status_updated_success": "Estado actualizado correctamente", "status_created_success": "Estado creado correctamente", "status_deleted_success": "Estado \"{{statusName}}\" eliminado correctamente", "status_imported_success": "Se importaron {{count}} estados correctamente", "status_import_skipped": "Se omitieron {{count}} estados ({{reason}})", "import_skipped_names": "Omitidos: {{names}}", "save_failed": "Error al guardar el estado. Inténtelo de nuevo.", "delete_confirm_message": "¿Seguro que desea eliminar el estado «{{statusName}}»? Esto no se puede deshacer.", "delete_in_use": "Error al eliminar el estado. Puede estar en uso en proyectos.", "import_failed": "Error al importar los estados", "update_status": "Actualizar estado", "project_statuses_title": "Estados del proyecto", "project_statuses_description": "Defina las etapas del flujo de trabajo de sus proyectos. Marque los estados como «cerrado» para indicar la finalización del proyecto.", "project_closed_hint": "Los proyectos con este estado se marcarán como cerrados", "project_open_hint": "Los proyectos con este estado permanecerán abiertos", "order": "Orden", "this_status": "este estado", "last_closed_error": "Al menos un estado debe permanecer marcado como cerrado", "last_closed_delete_error": "No se puede eliminar el último estado cerrado para este tipo.", "addStatus": "Agregar nuevo estado", "add_from_library": "Agregar estado" } }, "templates": { "statuses": { "manage_title": "Gestionar columnas de estado", "manage_description": "Defina las columnas de estado para las tareas en esta plantilla. Arrastre para reordenar.", "template_defaults": "Valores predeterminados de la plantilla", "added": "Columna de estado agregada", "removed": "Columna de estado eliminada", "copied_to_phase": "Valores predeterminados de la plantilla copiados a la fase", "reverted": "Fase revertida a valores predeterminados de la plantilla", "revert_message": "¿Eliminar las columnas de estado personalizadas de esta fase y volver a los valores predeterminados de la plantilla?", "remove_title": "Eliminar columna de estado", "remove_message": "¿Eliminar esta columna de estado? Las tareas en esta columna se moverán a la primera columna.", "remove_confirm": "Eliminar", "empty": "Aún no hay columnas de estado", "empty_hint": "Agregue columnas de estado para organizar las tareas", "add_title": "Agregar columna de estado", "select_placeholder": "Seleccionar un estado...", "all_in_use": "Todos los estados disponibles están en uso", "create_new": "Crear nuevo" }, "list": { "title": "Plantillas de proyecto", "searchPlaceholder": "Buscar plantillas...", "categoryPlaceholder": "Filtrar por categoría", "loading": "Cargando...", "loadFailed": "Error al cargar las plantillas", "deletedSuccess": "Plantilla eliminada correctamente", "deleteFailed": "Error al eliminar la plantilla", "deleteTitle": "Eliminar plantilla", "deleteMessage": "¿Seguro que quieres eliminar la plantilla \"{{templateName}}\"? Esta acción no se puede deshacer.", "columns": { "name": "Nombre", "description": "Descripción", "category": "Categoría", "timesUsed": "Veces usada", "lastUsed": "Último uso", "actions": "Acciones" }, "neverUsed": "Nunca", "edit": "Editar", "applyTemplate": "Aplicar plantilla", "addTemplate": "Agregar plantilla", "createFromProject": "Crear desde proyecto", "allCategories": "Todas las categorías" }, "create": { "title": "Crear plantilla desde proyecto", "sourceProjectLabel": "Proyecto origen *", "sourceProjectPlaceholder": "Seleccionar un proyecto", "templateNameLabel": "Nombre de la plantilla *", "templateNamePlaceholder": "Ingresar nombre de la plantilla", "descriptionLabel": "Descripción", "descriptionPlaceholder": "Ingresar descripción de la plantilla", "categoryLabel": "Categoría", "categoryPlaceholder": "p. ej., Desarrollo de software, Implementación de red", "whatToInclude": "Qué incluir del proyecto:", "copyPhases": "Copiar fases del proyecto", "copyStatuses": "Copiar columnas/estados del proyecto", "copyTasks": "Copiar tareas del proyecto", "copyChecklists": "Copiar listas de tareas", "copyServices": "Copiar servicios de tareas", "copyAssignments": "Copiar asignaciones de tareas", "creating": "Creando...", "create": "Crear plantilla", "createdSuccess": "Plantilla creada correctamente", "createFailed": "Error al crear la plantilla", "loadFailed": "Error al cargar proyectos y categorías", "projectRequired": "El proyecto y el nombre de la plantilla son obligatorios" }, "apply": { "title": "Crear proyecto desde plantilla", "templateLabel": "Plantilla *", "templatePlaceholder": "Seleccionar una plantilla", "projectNameLabel": "Nombre del proyecto *", "projectNamePlaceholder": "Ingresar nombre del proyecto", "clientLabel": "Cliente *", "clientPlaceholder": "Seleccionar un cliente", "statusLabel": "Estado *", "statusPlaceholder": "Seleccionar estado", "startDateLabel": "Fecha de inicio", "startDatePlaceholder": "Seleccionar fecha de inicio", "customizationOptions": "Opciones de personalización", "elementsToCopy": "Elementos de la plantilla a copiar", "copyPhases": "Copiar fases", "copyStatuses": "Copiar estados", "copyTasks": "Copiar tareas", "copyChecklists": "Copiar listas", "copyTaskServices": "Copiar servicios de tareas", "taskAssignments": "Asignaciones de tareas", "creating": "Creando…", "create": "Crear proyecto", "createdSuccess": "Proyecto creado desde la plantilla correctamente", "createFailed": "Error al crear el proyecto desde la plantilla", "loadErrorTitle": "Error", "loadErrorDescription": "No se pudieron cargar los datos", "templateRequired": "La plantilla es obligatoria", "projectRequired": "El nombre del proyecto es obligatorio", "clientRequired": "El cliente es obligatorio", "statusRequired": "El estado es obligatorio", "assignmentOptions": { "none": "No copiar asignaciones", "primary": "Copiar solo la asignación principal", "all": "Copiar todas las asignaciones" }, "fixErrors": "Corrige los siguientes errores:", "addStatus": "Agregar nuevo estado" }, "detail": { "description": "Descripción:", "used": "Usada:", "times": "veces", "projectPhases": "Fases del proyecto", "noPhasesDefined": "No hay fases definidas", "phasePrefix": "Fase:", "selectPhase": "Seleccione una fase para ver los detalles de la plantilla.", "deleteTitle": "Eliminar plantilla", "deletedSuccess": "Plantilla eliminada correctamente", "usedCount": "Usada: {{count}} veces" }, "editor": { "deletedSuccess": "Plantilla eliminada correctamente", "deleteFailed": "Error al eliminar la plantilla", "clientPortalSaved": "Configuración del portal del cliente guardada", "clientPortalSaveFailed": "Error al guardar la configuración del portal del cliente", "addPhaseFailed": "Error al añadir fase", "phaseUpdated": "Fase actualizada", "updatePhaseFailed": "Error al actualizar la fase", "phaseDeleted": "Fase eliminada", "deletePhaseFailed": "Error al eliminar la fase", "taskMovedToPhase": "Tarea movida a \"{{phaseName}}\"", "moveTaskFailed": "Error al mover la tarea", "reorderPhaseFailed": "Error al reordenar la fase", "selectPhaseFirst": "Primero selecciona una fase", "taskUpdated": "Tarea actualizada", "newTaskFallback": "Nueva tarea", "taskCreated": "Tarea creada", "taskSaveFailed": "Error al guardar la tarea", "taskDeleted": "Tarea eliminada", "deleteTaskFailed": "Error al eliminar la tarea", "updateAssigneeFailed": "Error al actualizar el asignado", "deleteTemplateTitle": "Eliminar plantilla", "deleteTemplateMessage": "¿Seguro que desea eliminar la plantilla «{{templateName}}»? Esta acción no se puede deshacer.", "deletePhaseTitle": "Eliminar fase", "deletePhaseMessage": "¿Seguro que desea eliminar la fase «{{phaseName}}»? También se eliminarán todas las tareas en esta fase.", "deleteTaskTitle": "Eliminar tarea", "deleteTaskMessage": "¿Seguro que desea eliminar la tarea «{{taskName}}»?", "templateBadge": "Plantilla", "useTemplate": "Usar plantilla", "statusColumnsLabel": "Columnas de estado", "clientPortalVisibility": "Visibilidad en el portal del cliente", "done": "Hecho", "projectPhases": "Fases del proyecto", "noPhasesYet": "Aún no hay fases.", "addFirstPhase": "Añada su primera fase", "phaseName": "Nombre de la fase", "phaseNamePlaceholder": "Nombre de la fase", "phaseDescription": "Descripción de la fase", "phaseDescriptionPlaceholder": "Descripción (opcional)", "duration": "Duración", "daysPlaceholder": "Días", "startOffset": "Desplazamiento de inicio", "statusColumnsTooltip": "Columnas de estado: {{value}}", "customStatusesCount": "Personalizado ({{count}} estados)", "templateDefaults": "Valores por defecto de la plantilla", "notSet": "No establecido", "durationSummary": "Duración: {{value}}", "startOffsetSummary": "Desplazamiento inicial: {{value}}", "phaseDurationDays": "Duración: {{days}} días", "phaseStartDays": "Inicio: +{{days}} días", "searchTasksPlaceholder": "Buscar tareas...", "searchTasks": "Buscar tareas", "showStickyStatusNames": "Mostrar nombres de estado fijos", "hideStickyStatusNames": "Ocultar nombres de estado fijos", "pinHeader": "Fijar encabezado arriba", "unpinHeader": "Desfijar encabezado", "statusFallback": "Estado", "addPhaseToGetStarted": "Añada una fase para empezar", "selectPhaseToViewTasks": "Seleccione una fase para ver las tareas", "noStatusColumns": "No hay columnas de estado definidas", "addStatusColumns": "Añadir columnas de estado", "taskActions": "Acciones de tarea", "editTask": "Editar tarea", "deleteTask": "Eliminar tarea", "priorityLevel": "Nivel de prioridad: {{priority}}", "additionalAgents": "Agentes adicionales:", "dependsOn": "Depende de:", "blocks": "Bloquea:", "seeMore": "Ver más", "seeLess": "Ver menos", "noPhasesFound": "No se encontraron fases", "untitledPhase": "Fase sin título", "taskCount_one": "1 tarea", "taskCount_other": "{{count}} tareas", "unknownUser": "Desconocido", "unknownTask": "Tarea desconocida", "checklistCountTitle": "{{count}} elemento de lista" }, "taskForm": { "addTitle": "Agregar tarea", "editTitle": "Editar tarea", "addAction": "Añadir tarea", "updateAction": "Actualizar tarea", "saving": "Guardando…", "saveFailed": "Error al guardar la tarea", "taskNameRequired": "Se requiere el nombre de la tarea", "taskNamePlaceholder": "Ingresar nombre de la tarea", "descriptionPlaceholder": "Descripción de la tarea (opcional)", "primaryAgentRequired": "Se requiere un agente principal cuando se asignan agentes adicionales", "primaryAgentPlaceholder": "Seleccionar agente principal (opcional)", "checklist": "Lista", "doneEditing": "Terminar edición", "editChecklist": "Editar lista", "addChecklistItem": "Añadir un elemento", "checklistItemPlaceholder": "Elemento de lista", "emptyChecklistItem": "Elemento vacío", "reorderChecklistItem": "Arrastrar para reordenar", "insertChecklistItem": "Insertar elemento aquí", "dependencies": "Dependencias", "dependenciesHelp": "Defina dependencias de tareas para controlar el orden de ejecución al crear el proyecto", "removeDependency": "Eliminar dependencia", "selectTaskPlaceholder": "Seleccionar tarea...", "cancelEditTitle": "Cancelar edición", "cancelEditMessage": "¿Está seguro de cancelar? Se perderán los cambios no guardados.", "discardChanges": "Descartar cambios", "continueEditing": "Continuar editando", "serviceLabel": "Servicio (para entradas de tiempo)", "noService": "Sin servicio", "serviceHint": "Cuando se configura, este servicio se seleccionará automáticamente al crear entradas de tiempo a partir de tareas creadas con esta plantilla.", "statusColumnLabel": "Columna de estado", "estimatedHoursLabel": "Horas estimadas", "durationLabel": "Duración (días)", "taskTypeLabel": "Tipo de tarea", "priorityLabel": "Prioridad", "primaryAgentLabel": "Agente principal", "additionalAgentsLabel": "Agentes adicionales", "additionalAgentsHelp": "Miembros adicionales del equipo asignados a esta tarea", "assignedWhenApplied": "Este usuario se asignará cuando se aplique la plantilla", "dependenciesLabel": "Dependencias" }, "wizard": { "next": "Siguiente", "back": "Atrás", "create": "Crear plantilla", "title": "Crear nueva plantilla de proyecto", "basics": { "nameLabel": "Nombre de la plantilla *", "namePlaceholder": "p. ej., Desarrollo web, Migración de red", "nameHelp": "Ponga a la plantilla un nombre descriptivo que refleje el tipo de proyecto", "descriptionLabel": "Descripción", "descriptionPlaceholder": "Describe para qué se usa esta plantilla y cualquier detalle importante...", "descriptionHelp": "Proporcione contexto para ayudar a los usuarios a saber cuándo usar esta plantilla", "categoryLabel": "Categoría", "categoryPlaceholder": "p. ej., Desarrollo, Infraestructura, Consultoría", "categoryHelp": "Organice las plantillas por categoría para filtrar más fácilmente", "nextHintTitle": "¿Qué sigue?", "nextHintDescription": "Tras definir los conceptos básicos, configurará las columnas de estado, añadirá fases, creará tareas, configurará la visibilidad del portal del cliente y revisará la plantilla antes de guardarla." }, "phases": { "title": "Fases del proyecto", "intro": "Divida su proyecto en fases. Cada fase puede tener sus propias tareas y cronograma.", "empty": "Aún no se agregaron fases", "addFirstPhase": "Añadir primera fase", "phaseName": "Nombre de la fase *", "phaseNamePlaceholder": "p. ej., Planificación, Desarrollo, Pruebas", "phaseNameRequired": "Se requiere el nombre de la fase", "descriptionLabel": "Descripción", "description": "Descripción", "descriptionPlaceholder": "Describe qué sucede en esta fase...", "duration": "Duración (días)", "optionalPlaceholder": "Opcional", "startOffset": "Desplazamiento de inicio (días)", "daysAfterProjectStart": "Días tras el inicio del proyecto", "durationSummary": "Duración: {{days}} días", "startSummary": "Comienza: +{{days}} días", "tasksCount": "Tareas: {{count}}", "reorderedHint": "Fases reordenadas. ¿Desea recalcular los desplazamientos según el orden y la duración de las fases?", "recalculate": "Recalcular", "recalculateOffsets": "Recalcular desplazamientos", "aboutTimingTitle": "Sobre la temporización de fases", "startOffsetLabel": "Desplazamiento inicial", "durationLabel": "Duración", "tipLabel": "Consejo", "aboutTimingStartOffset": "Días tras la fecha de inicio del proyecto en los que comienza esta fase. Las nuevas fases calculan automáticamente su desplazamiento según las fases anteriores.", "aboutTimingDuration": "Cuánto suele durar esta fase. Se usa para calcular el desplazamiento de la siguiente fase.", "aboutTimingTip": "Tras reordenar las fases, use «Recalcular desplazamientos» para actualizar los tiempos según el nuevo orden." }, "tasks": { "empty": "No hay fases disponibles", "title": "Tareas", "selectPhase": "Seleccionar fase", "noTasksInPhase": "Sin tareas en {{phaseName}}", "thisPhase": "esta fase", "taskName": "Nombre de la tarea *", "taskNamePlaceholder": "p. ej., Diseñar el esquema de base de datos", "description": "Agrega tareas a cada fase. También puedes añadir elementos de lista para desglosar mejor las tareas.", "descriptionPlaceholder": "Describe lo que debe hacerse...", "service": "Servicio (para partes de tiempo)", "estimatedHours": "Horas estimadas", "duration": "Duración (días)", "durationSummaryShort": "{{days}} días", "taskType": "Tipo de tarea", "priority": "Prioridad", "noPriority": "Sin prioridad", "assignedTo": "Asignado a", "notAssigned": "Sin asignar", "additionalAgents": "Agentes adicionales", "statusColumn": "Columna de estado", "statusPlaceholder": "Seleccionar columna de estado", "checklist": "Lista", "checklistItemPlaceholder": "Elemento de lista", "checklistItemsSummary": "{{count}} elementos de lista", "tipTitle": "Consejo", "tipDescription": "Añada elementos de lista de verificación para desglosar tareas complejas en pasos más pequeños. Esto ayudará a los miembros del equipo a seguir el progreso de cada tarea.", "emptyDescription": "Agrega al menos una fase en el paso anterior antes de añadir tareas.", "addFirstTask": "Agregar primera tarea", "serviceHint": "Autocompleta el servicio al crear entradas de tiempo desde tareas.", "done": "Hecho", "addTaskToPhase": "Añadir tarea a {{phaseName}}" }, "review": { "title": "Revisa tu plantilla", "templateInformation": "Información de la plantilla", "name": "Nombre:", "descriptionLabel": "Descripción:", "description": "Revisa los detalles de tu plantilla antes de crearla. Puedes editar cualquier sección volviendo atrás.", "category": "Categoría:", "statusColumns": "Columnas de estado ({{count}})", "tasksSummary": "Resumen de tareas", "totalTasks": "Total de tareas", "checklistItems": "Elementos de la lista", "estimatedHours": "Horas est.", "taskDetailsByPhase": "Detalles de tareas por fase", "readyToCreate": "Listo para crear", "readyDescription": "Una vez que cree esta plantilla, podrá usarla para iniciar rápidamente nuevos proyectos con esta estructura. Haga clic en «{{action}}» para finalizar." }, "clientPortal": { "title": "Visibilidad en el portal del cliente", "description": "Configure qué información pueden ver los clientes al visualizar proyectos creados con esta plantilla en el portal del cliente.", "aboutTitle": "Sobre la visibilidad en el portal del cliente", "aboutDescription": "Estos ajustes controlan qué información del proyecto es visible para los clientes cuando acceden al portal del cliente. Puede elegir mostrar fases, progreso de finalización de tareas y detalles específicos de las tareas. Estos ajustes se aplicarán a todos los proyectos creados a partir de esta plantilla, pero pueden personalizarse por proyecto." }, "steps": { "basics": "Datos básicos de la plantilla", "statusColumns": "Columnas de estado de tareas", "phases": "Fases", "tasks": "Tareas", "clientPortal": "Portal del cliente", "reviewCreate": "Revisar y crear" }, "errors": { "loadRequiredData": "No se pudieron cargar los datos necesarios", "templateNameRequired": "El nombre de la plantilla es obligatorio", "createFailed": "Error al crear la plantilla" }, "skip": "Omitir", "creating": "Creando..." } }, "documents": { "title": "Anexos", "upload": "Subir", "noDocuments": "No hay documentos adjuntos", "uploadSuccess": "Documento subido correctamente", "uploadError": "Error al subir el documento", "downloadError": "Error al descargar el documento", "dragDrop": "Arrastra y suelta un archivo aquí, o haz clic para seleccionar", "maxSize": "Tamaño máximo de archivo: {{size}}MB", "file": "archivo", "files": "archivos", "uploadHint": "Sube archivos para compartir con esta tarea", "download": "Descargar", "view": "Ver" }, "team": "Miembros del equipo", "budget": "Presupuesto", "fields": { "projectNumber": "Proyecto #", "projectName": "Nombre del proyecto", "reference": "Referencia", "name": "Nombre del proyecto", "description": "Descripción", "status": "Estado", "startDate": "Fecha de inicio", "endDate": "Fecha de finalización", "projectManager": "Director del proyecto", "progress": "Progreso", "hoursLogged": "Horas registradas", "budgetUsed": "Presupuesto usado" }, "status": { "notStarted": "No iniciado", "inProgress": "En progreso", "completed": "Completado", "onHold": "En espera", "cancelled": "Cancelado", "active": "Activo", "inactive": "Inactivo" }, "messages": { "noProjects": "No se encontraron proyectos", "loadingProjects": "Cargando proyectos...", "noDescription": "No se proporcionó descripción", "noPhasesOrTasks": "No hay fases o tareas para mostrar", "loadError": "Error al cargar los detalles del proyecto" }, "backToProjects": "Volver a Proyectos", "invalidProjectData": "Datos del proyecto inválidos", "viewDetails": "Ver detalles →", "details": "Detalles", "startDate": "Fecha de inicio", "endDate": "Fecha de finalización", "lastUpdated": "Última actualización", "taskCompletion": "Finalización de tareas", "percentComplete": "{{percent}}% completado", "tasksCompleted": "{{completed}} de {{total}} tareas completadas", "budgetHours": "Horas presupuestadas", "budgetUsed": "{{percent}}% del presupuesto usado", "hoursUsed": "{{spent}} de {{budgeted}} horas", "hoursUsage": "Uso de horas", "hoursUsedDetail": "{{spent}} de {{budgeted}} horas utilizadas", "hoursRemaining": "{{remaining}} horas restantes", "projectInfo": { "client": "Cliente:", "contact": "Contacto:", "budget": "Presupuesto:", "hoursUsageDescription": "Muestra el uso de las horas presupuestadas para todo el proyecto", "templateCreatedSuccess": "Plantilla creada correctamente", "notAvailable": "N/D", "saveAsTemplate": "Guardar como plantilla", "materials": "Materiales", "shareTooltip": "Imprimir, importar y exportar" }, "projectPhases": { "addTask": "Agregar tarea", "addPhase": "Añadir fase", "phaseNamePlaceholder": "Nombre de la fase… *", "descriptionPlaceholder": "Descripción", "adding": "Añadiendo…", "addError": "Error al añadir la fase. Inténtelo de nuevo.", "title": "Fases del proyecto", "import": "Importar" }, "addStatusDialog": { "phaseTitle": "Agregar estado de fase desde la biblioteca", "projectTitle": "Agregar estado desde la biblioteca", "selectLabel": "Seleccionar de la biblioteca de estados", "placeholder": "Elegir un estado", "helpText": "Selecciona un estado de la biblioteca de tu inquilino para agregar a este proyecto.", "noStatusesTitle": "No hay estados disponibles", "noStatusesDescription": "Crea estados en Configuración → Proyectos → Estados.", "adding": "Agregando...", "addStatus": "Agregar estado", "addFailed": "Error al agregar el estado. Inténtalo de nuevo." }, "taskStatusSelect": { "ariaLabel": "Estado de la tarea", "selectStatus": "Seleccionar estado" }, "ticketSelect": { "placeholder": "Seleccionar un ticket...", "searchPlaceholder": "Buscar tickets...", "noTickets": "No se encontraron tickets" }, "taskTypeSelect": { "placeholder": "Seleccionar tipo de tarea" }, "comments": { "title": "Comentarios", "internalOnly": "Solo interno", "newestFirst": "Más recientes primero", "oldestFirst": "Más antiguos primero", "addComment": "Agregar comentario", "submitting": "Enviando...", "loading": "Cargando...", "empty": "Aún no hay comentarios. ¡Sé el primero en comentar!" }, "clientPortal": { "clientsWillSee": "Los clientes verán:", "showBudgetHours": "Mostrar horas presupuestadas", "showBudgetHoursDescription": "Los clientes verán la tarjeta de Horas presupuestadas del proyecto con horas utilizadas vs. presupuestadas y % del presupuesto consumido.", "showPhases": "Mostrar fases", "showPhasesDescription": "Los clientes verán tarjetas de fase con nombres, descripciones y rangos de fechas. Pueden seleccionar fases para ver las tareas asociadas.", "showCompletion": "Mostrar % de completado", "showCompletionDescription": "Mostrar una barra de progreso y porcentaje que indica cuántas tareas están completadas en cada fase.", "showTasks": "Mostrar tareas", "showTasksDescription": "Los clientes pueden ver tareas individuales dentro de cada fase. Las tareas se muestran en un tablero Kanban o vista de lista agrupada por estado.", "visibleTaskFields": "Campos de tarea visibles", "visibleTaskFieldsDescription": "Selecciona qué detalles de tarea son visibles para los clientes. Los campos no marcados se ocultarán de las tarjetas de tarea.", "required": "(obligatorio)", "summary": { "projectInfo": "Nombre del proyecto, descripción, fechas y progreso general", "budgetHours": "Horas presupuestadas: totales utilizados vs. presupuestados y % consumido", "phaseInfo": "Nombres de fase, descripciones y rangos de fechas", "phaseCompletion": "Porcentaje de completado para cada fase", "taskDetails": "Detalles de tareas: {{fields}}", "fields": { "taskNames": "nombres de tareas", "descriptions": "descripciones", "dueDates": "fechas de vencimiento", "status": "estado", "assignees": "asignados", "estimatedHours": "horas estimadas", "actualHours": "horas reales", "priority": "prioridad", "checklist": "nombres y completado de elementos de lista", "dependencies": "dependencias de tareas", "documentUploads": "cargas de documentos" } }, "fieldLabels": { "task_name": "Nombre de tarea", "description": "Descripción", "due_date": "Fecha de vencimiento", "status": "Estado", "assigned_to": "Asignado a", "estimated_hours": "Horas estimadas", "actual_hours": "Horas reales", "priority": "Prioridad", "checklist_progress": "Lista de verificación", "services": "Servicios", "dependencies": "Dependencias", "document_uploads": "Cargas de documentos" } }, "quickAddStatus": { "title": "Crear nuevo estado", "statusName": "Nombre del estado", "namePlaceholder": "ej. En progreso, Revisión, Completado", "statusColor": "Color del estado", "changeColor": "Cambiar color", "markClosed": "Marcar como estado cerrado", "markClosedDescription": "Las tareas en estados cerrados se consideran completadas", "creating": "Creando...", "createButton": "Crear estado", "nameRequired": "El nombre del estado es obligatorio", "duplicateName": "Ya existe un estado con este nombre", "createdSuccess": "Estado \"{{name}}\" creado correctamente", "createFailed": "Error al crear el estado" }, "dependencies": { "dependsOn": "Depende de", "unknownTask": "Tarea desconocida", "blocks": "Bloquea" }, "columnsHidden": "columna(s) ocultas por espacio limitado. Cambia el tamaño del navegador para ver más.", "projectPrint": { "tasks": { "title": "Tareas del proyecto", "subtitle": "{{count}} tareas", "noTasks": "No hay tareas del proyecto para imprimir", "emptyValue": "-", "hoursValue": "{{actual}} / {{estimated}}", "columns": { "task": "Tarea", "phase": "Fase", "status": "Estado", "assignee": "Asignado a", "dueDate": "Fecha límite", "hours": "Horas" }, "optionsDialog": { "title": "Opciones de impresión", "description": "Elige qué columnas incluir al imprimir las tareas del proyecto." }, "fields": { "phase": "Fase", "status": "Estado", "assignee": "Asignado a", "dueDate": "Fecha de vencimiento", "estimatedHours": "Horas estimadas", "wbsCode": "Código WBS", "description": "Descripción" }, "subtitleSelected": "{{count}} tareas seleccionadas" } }, "bulkActions": { "selectedCount": "{{count}} seleccionada(s)", "move": "Mover", "assign": "Asignar", "delete": "Eliminar", "clear": "Borrar", "tags": "Etiquetas" }, "bulk": { "tags": { "dialogTitle": "Añadir etiquetas a las tareas seleccionadas", "message": "Añade una o más etiquetas a {{count}} tarea(s) seleccionada(s). Las etiquetas que ya están en una tarea se omiten.", "placeholder": "Escribe una etiqueta y pulsa Enter", "submitting": "Añadiendo etiquetas...", "confirm_one": "Añadir etiquetas a {{count}} tarea", "confirm_other": "Añadir etiquetas a {{count}} tareas", "failedHeading": "No se pudieron añadir etiquetas a las siguientes tareas:" } }, "common:actions": { "back": "Atrás", "cancel": "Cancelar", "delete": "Eliminar", "done": "Listo", "edit": "Editar", "save": "Guardar" } }