{ "list": { "statusAll": "Todos", "statusAttention": "Requiere atención", "statusDraft": "Borrador", "statusSent": "Enviado", "statusAccepted": "Aceptado", "statusRejected": "Rechazado", "statusConverted": "Convertido", "searchPlaceholder": "Buscar presupuestos...", "newQuote": "Nuevo presupuesto", "columnQuoteNumber": "Presupuesto N.º", "columnTitle": "Título", "columnCustomer": "Cliente", "columnVehicle": "Vehículo", "columnStatus": "Estado", "columnDate": "Fecha", "columnTotal": "Total", "noQuotes": "No se encontraron presupuestos." }, "page": { "quote": "Presupuesto", "save": "Guardar", "pdf": "PDF", "email": "Correo electrónico", "share": "Compartir", "delete": "Eliminar", "deleteTitle": "Eliminar presupuesto", "deleteDescription": "Este presupuesto se eliminará permanentemente.", "saved": "Presupuesto guardado", "unsavedChanges": "Cambios sin guardar", "saveFirst": "Por favor, guarde sus cambios primero", "failedSave": "Error al guardar el presupuesto", "failedDelete": "Error al eliminar", "failedPdf": "Error al generar el PDF", "selectVehicle": "Por favor seleccione un vehículo", "convertTitle": "Convertir presupuesto en orden de trabajo", "convertDescription": "Se creará un nuevo registro de servicio (orden de trabajo) a partir de este presupuesto. Seleccione un vehículo para la orden de trabajo.", "convert": "Convertir", "convertToWorkOrder": "Convertir en orden de trabajo", "cancel": "Cancelar", "failedConvert": "Error al convertir", "changesRequested": "Cambios solicitados", "quoteAccepted": "Presupuesto aceptado", "markResolved": "Marcar como resuelto", "responseResolved": "Respuesta del cliente resuelta", "entityLabel": "Presupuesto", "tabs": { "details": "Detalles", "images": "Imágenes", "documents": "Documentos" }, "customFieldsInvalid": "Completa todos los campos personalizados obligatorios", "customFieldsSaveFailed": "No se pudieron guardar los campos personalizados" }, "form": { "newQuote": "Nuevo presupuesto", "editQuote": "Editar presupuesto", "cancel": "Cancelar", "createQuote": "Crear presupuesto", "updateQuote": "Actualizar presupuesto", "created": "Presupuesto creado", "updated": "Presupuesto actualizado", "failedCreate": "Error al crear el presupuesto", "failedUpdate": "Error al actualizar el presupuesto" }, "parts": { "title": "Repuestos", "addPart": "Agregar repuesto", "partNumber": "N.º de repuesto", "name": "Nombre", "namePlaceholder": "Nombre *", "qty": "Cant.", "unitPrice": "Precio unitario", "total": "Total", "subtotal": "Subtotal de repuestos: {amount}", "deleteRow": "Eliminar fila", "excludeFromTotal": "Excluir del total", "addFromInventory": "Del inventario", "unitCost": "Costo", "markupPercent": "Margen %", "nameMissingHint": "Las filas sin nombre de pieza no se guardan." }, "labor": { "title": "Mano de obra", "addLabor": "Agregar mano de obra", "fromPresets": "Desde plantillas", "description": "Descripción", "descriptionPlaceholder": "Descripción *", "hours": "Horas", "rate": "Tarifa ({currency}/hr)", "total": "Total", "subtotal": "Subtotal de mano de obra: {amount}", "addService": "Agregar servicio", "qty": "Cant.", "qtyOrHours": "Unidad / Horas", "hourlyTag": "HR", "serviceTag": "SVC", "hourlyHint": "Por horas: se calcula por las horas trabajadas (horas × tarifa/h). Haz clic para cambiar.", "serviceHint": "Servicio: se cobra como tarifa fija por unidad. Haz clic para cambiar.", "deleteRow": "Eliminar fila", "excludeFromTotal": "Excluir del total" }, "notes": { "title": "Notas", "public": "Pública", "internal": "Interna", "publicPlaceholder": "Descripción del presupuesto visible para el cliente...", "internalPlaceholder": "Notas internas (no visibles para el cliente)...", "publicHelper": "Se muestra en el documento del presupuesto", "internalHelper": "Solo visible para su equipo" }, "sidebar": { "sharedLink": { "title": "Enlace compartido", "sharedOn": "Compartido el {date}", "notViewed": "Aún no visto", "viewedTimes": "Visto {count, plural, one {# vez} other {# veces}}", "lastViewed": "Último {date}", "copyLink": "Copiar enlace", "linkCopied": "Enlace copiado" } }, "details": { "title": "Detalles del presupuesto", "titleLabel": "Título *", "titlePlaceholder": "Estimación de reparación de vehículo", "status": "Estado", "statusDraft": "Borrador", "statusSent": "Enviado", "statusAccepted": "Aceptado", "statusRejected": "Rechazado", "validUntil": "Válido hasta", "viewInspection": "Ver inspección vinculada", "vehicle": "Vehículo", "customer": "Cliente", "selectVehicle": "Seleccionar vehículo...", "selectCustomer": "Seleccionar cliente...", "none": "Ninguno", "clearVehicle": "Quitar vehículo", "clearCustomer": "Quitar cliente" }, "totals": { "title": "Totales", "parts": "Repuestos", "labor": "Mano de obra", "subtotal": "Subtotal", "subtotalInclTax": "Subtotal (con impuesto)", "discount": "Descuento", "discountNone": "Ninguno", "discountPercentage": "Porcentaje", "discountFixed": "Fijo", "tax": "Impuesto", "taxIncluded": "Impuesto (incl.)", "total": "Total", "inclusiveModeHint": "Los precios por línea se introducen con impuesto incluido. Los totales muestran el desglose neto + impuesto." }, "shareDialog": { "title": "Compartir presupuesto", "description": "Genere un enlace público que permita a cualquier persona ver y descargar este presupuesto sin iniciar sesión.", "notifyTitle": "Notificar a {name}", "email": "Correo electrónico", "noEmail": "(sin correo registrado)", "sms": "SMS", "noPhone": "(sin teléfono registrado)", "sendNotification": "Enviar notificación", "revokeLink": "Revocar enlace", "generateLink": "Generar enlace público", "emailSent": "Correo enviado", "failedEmail": "Error al enviar el correo", "smsSent": "SMS enviado", "failedSms": "Error al enviar el SMS", "copyLink": "Copiar enlace" }, "images": { "title": "Imágenes del presupuesto", "dropzone": "Arrastre imágenes aquí o haga clic para explorar", "uploading": "Subiendo...", "formats": "JPG, PNG, WebP — máx. 10 MB cada una", "uploadingImages": "Subiendo imágenes...", "limitReached": "Límite de imágenes alcanzado ({count}/{max})", "upgradePrompt": "Actualice su plan para subir más imágenes.", "onlyAllowed": "Solo se permiten imágenes JPG, PNG y WebP. {names} omitidas.", "onlyUploading": "Solo se subirán {count} imagen(es) para no exceder el límite.", "uploadingCount": "Subiendo {count} imagen(es)...", "uploadedCount": "{count} imagen(es) subida(s)", "uploadFailed": "Error al subir", "failedUploadFile": "No se pudo subir {name}", "failedSaveFile": "No se pudo guardar {name}", "deleted": "Imagen eliminada", "failedDelete": "Error al eliminar la imagen", "failedUpdate": "Error al actualizar", "description": "Descripción...", "pdf": "PDF" }, "documents": { "title": "Documentos", "dropzone": "Arrastre archivos aquí o haga clic para explorar", "uploading": "Subiendo...", "formats": "PDF, CSV, TXT — máx. 10 MB cada uno", "uploadingDocuments": "Subiendo documentos...", "limitReached": "Límite de documentos alcanzado ({count}/{max})", "upgradePrompt": "Actualice su plan para subir más.", "onlyUploading": "Solo se subirán {count} archivo(s) para no exceder el límite.", "uploadingCount": "Subiendo {count} archivo(s)...", "uploadedCount": "{count} archivo(s) subido(s)", "uploadFailed": "Error al subir", "failedUploadFile": "No se pudo subir {name}", "failedSaveFile": "No se pudo guardar {name}", "deleted": "Archivo eliminado", "failedDelete": "Error al eliminar el archivo", "failedUpdate": "Error al actualizar", "pdf": "PDF" }, "statusLabels": { "draft": "Borrador", "sent": "Enviado", "accepted": "Aceptado", "rejected": "Rechazado", "expired": "Caducado", "converted": "Convertido", "changes_requested": "Cambios solicitados" } }