| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735 |
- {
- "page": {
- "notFound": "Registro de servicio no encontrado",
- "updated": "Registro de servicio actualizado",
- "failedUpdate": "Error al actualizar registro de servicio",
- "deleteTitle": "Eliminar Registro de Servicio",
- "deleteDescription": "Esto eliminará permanentemente este registro de servicio y todos los datos asociados. Esto no se puede deshacer.",
- "deleted": "Registro de servicio eliminado",
- "failedDelete": "Error al eliminar",
- "datesExpiredTitle": "Fechas de factura expiradas",
- "datesExpiredDescription": "La fecha de la factura o la fecha de vencimiento ha pasado. ¿Desea actualizarlas antes de continuar?",
- "datesExpiredUpdate": "Actualizar fechas y continuar",
- "datesExpiredProceed": "Continuar sin cambios",
- "datesExpiredUseToday": "Actualizar a la fecha de hoy",
- "datesExpiredCustomize": "Elegir fechas manualmente",
- "datesExpiredBack": "Atrás",
- "datesExpiredSetToday": "Establecer a hoy",
- "customFieldsInvalid": "Por favor complete todos los campos personalizados obligatorios",
- "customFieldsSaveFailed": "Error al guardar los campos personalizados",
- "problems": {
- "title": "El trabajo necesita un título antes de poder guardarse.",
- "negative": "Las cantidades, horas, precios y costes no pueden ser negativos.",
- "partName": "Toda pieza con precio necesita un nombre.",
- "laborDescription": "Toda línea de mano de obra con horas o tarifa necesita una descripción.",
- "concernCondition": "Un motivo con causa, corrección o confirmación necesita que se rellene su condición."
- }
- },
- "header": {
- "tabs": {
- "details": "Detalles",
- "images": "Imágenes",
- "video": "Vídeo",
- "documents": "Documentos",
- "statusReports": "Informes de estado"
- },
- "save": "Guardar",
- "pdf": "PDF",
- "email": "Correo Electrónico",
- "share": "Compartir",
- "notify": "Notificar",
- "delete": "Eliminar",
- "unpaid": "Sin Pagar",
- "unsavedChanges": "Cambios sin guardar",
- "saved": "Guardado",
- "joinCall": "Unirse a la videollamada",
- "moreActions": "Más acciones",
- "designMenu": "Diseño de la factura",
- "designMenuLoading": "Comprobando con qué diseño se imprime esta factura...",
- "designMenuExplain": "Se envió al cliente el {date}, así que sigue imprimiéndose con el diseño del envío. Elegir otro solo cambia el aspecto. Lo que dice la factura se mantiene tal como se envió, y el aspecto anterior no se conserva.",
- "designSentWith": "El diseño con el que se envió",
- "designFollow": "Seguir el diseño predeterminado",
- "designFollowNamed": "Seguir el diseño predeterminado ({name})",
- "designDefaultName": "el diseño predeterminado",
- "designPickConfirmTitle": "¿Cambiar esta factura a {name}?",
- "designPickConfirmBody": "Solo cambia el aspecto. Los datos del taller, el cliente, las condiciones de pago y los importes se mantienen tal como se enviaron. El diseño actual no se conserva, así que esto no se puede deshacer.",
- "designPickConfirm": "Cambiar el diseño",
- "designPickDone": "La factura ya se imprime con {name}",
- "designPickFailed": "No se pudo cambiar el diseño"
- },
- "basicInfo": {
- "title": "Información Básica",
- "invoiceDetails": "Detalles de factura",
- "customerInfo": "Cliente y vehículo",
- "paid": "Pagado",
- "markPaid": "Marcar como pagado",
- "markUnpaid": "Marcar como no pagado",
- "vehicle": "Vehículo",
- "open": "Abierto",
- "customer": "Cliente",
- "titleLabel": "Título *",
- "titlePlaceholder": "Cambio de Aceite",
- "date": "Fecha",
- "type": "Tipo",
- "mileage": "Millaje",
- "mileageMarine": "Horas de Motor",
- "status": "Estado",
- "technician": "Técnico",
- "invoiceNumber": "Número de Factura",
- "invoiceDate": "Fecha de factura",
- "invoiceDueDate": "Fecha de vencimiento",
- "typeOptions": {
- "maintenance": "Mantenimiento",
- "repair": "Reparación",
- "upgrade": "Mejora",
- "inspection": "Inspección"
- },
- "statusOptions": {
- "pending": "Pendiente",
- "in_progress": "En Progreso",
- "waiting_parts": "Esperando Piezas",
- "completed": "Completado"
- },
- "searchVehicles": "Buscar vehículos...",
- "noVehicleFound": "Vehículo no encontrado.",
- "techPicker": {
- "placeholder": "Seleccionar o escribir un nombre...",
- "searchPlaceholder": "Buscar o escribir nombre...",
- "useCustom": "Usar \"{search}\"",
- "typePrompt": "Escriba un nombre...",
- "boardTechnicians": "Técnicos del Tablero",
- "teamMembers": "Miembros del Equipo"
- },
- "design": "Diseño de factura",
- "designDefault": "Predeterminado del taller",
- "designFollowing": "Predeterminado ({name})",
- "designSaved": "Diseño de factura actualizado",
- "designFollowingRule": "Predeterminado ({name}, {rule})",
- "designRule": {
- "parts_sale": "Venta solo de piezas"
- },
- "designSaveFailed": "No se pudo cambiar el diseño de la factura"
- },
- "parts": {
- "title": "Piezas",
- "fromInventory": "Del Inventario",
- "addPart": "Agregar Pieza",
- "partNumber": "N° de Pieza",
- "name": "Nombre",
- "qty": "Cantidad",
- "unitCost": "Costo",
- "unitCostHint": "Costo del proveedor (interno — no se muestra al cliente)",
- "markupPercent": "Margen %",
- "markupPercentHint": "Margen aplicado al costo (interno — no se muestra al cliente)",
- "applyMarkup": "Aplicar {percent}%",
- "applyMarkupHint": "Volver a aplicar {percent}% de margen al costo en cada fila",
- "unitPrice": "Precio Unitario",
- "total": "Total",
- "namePlaceholder": "Nombre *",
- "subtotal": "Subtotal de Piezas: {amount}",
- "inventoryTitle": "Seleccionar Pieza del Inventario",
- "searchInventory": "Buscar en inventario...",
- "inStock": "{quantity} en stock",
- "noInventory": "No se encontraron piezas de inventario.",
- "scanBarcode": "Escanear",
- "scanTitle": "Escanear código de barras",
- "partFound": "\"{name}\" añadido del inventario",
- "partNotFound": "No se encontró pieza para el código de barras \"{barcode}\"",
- "deleteRow": "Eliminar fila",
- "outOfStock": "Agotado",
- "onBackorder": "En pedido pendiente ({count})",
- "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",
- "hours": "Horas",
- "rate": "Tarifa ({currency}/hr)",
- "total": "Total",
- "descriptionPlaceholder": "Descripción *",
- "subtotal": "Subtotal de Mano de Obra: {amount}",
- "addService": "Agregar Servicio",
- "addFinding": "Observación",
- "newObservation": "Nueva observación",
- "addExisting": "Ver existentes ({count})",
- "qty": "Cantidad",
- "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",
- "descriptionMissingHint": "Las filas sin descripción no se guardan."
- },
- "liveLabor": {
- "title": "{count, plural, one {Un técnico añadió mano de obra a este trabajo} other {Un técnico añadió # líneas de mano de obra a este trabajo}}",
- "body": "Se mantiene fuera de la lista mientras editas. Se guardará de todos modos al guardar.",
- "show": "Mostrar"
- },
- "totals": {
- "title": "Totales",
- "parts": "Piezas",
- "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.",
- "partsCost": "Costo de repuestos (interno)"
- },
- "notes": {
- "title": "Notas",
- "public": "Público",
- "internal": "Interno",
- "publicPlaceholder": "Notas visibles en la factura...",
- "internalPlaceholder": "Notas internas (no mostradas en la factura)...",
- "publicHelper": "Se muestra en la factura y documentos compartidos",
- "internalHelper": "Solo visible para su equipo",
- "aiWrite": "AI Escribir",
- "aiGenerated": "Notas AI generadas exitosamente",
- "aiGenerateFailed": "Error al generar notas AI",
- "aiDialogTitle": "IA Escribir",
- "aiDialogDescription": "La IA analizará las piezas y la mano de obra en este registro de servicio y generará una descripción profesional. El resultado se escribirá en el tipo de nota seleccionado.",
- "aiGenerate": "Generar",
- "aiOverwriteDescription": "Esta nota ya tiene contenido. Puede reemplazarlo o agregar el texto generado por IA debajo.",
- "aiOverwriteReplace": "Reemplazar",
- "aiOverwriteAppend": "Agregar",
- "aiOverwriteCancel": "Cancelar",
- "aiDontShowAgain": "No mostrar de nuevo",
- "internalTitle": "Notas internas",
- "publicTitle": "Notas para el cliente"
- },
- "invoice": {
- "title": "Resumen de Factura",
- "parts": "Piezas",
- "labor": "Mano de Obra",
- "subtotal": "Subtotal",
- "subtotalInclTax": "Subtotal (con impuesto)",
- "discount": "Descuento",
- "tax": "Impuesto ({rate}%)",
- "taxIncluded": "Impuesto (incl., {rate}%)",
- "total": "Total",
- "paid": "Pagado",
- "balanceDue": "Saldo Pendiente",
- "paidBadge": "PAGADO",
- "entityLabel": "Factura",
- "emailSubject": "Confirmación de Pago",
- "statusEmailSubject": "Actualización del estado del servicio",
- "markCompletedTitle": "¿Marcar esta factura como completada?",
- "markCompletedDescription": "Ya se ha enviado al cliente, pero sigue marcada como no terminada, así que continuará apareciendo en el tablero.",
- "markCompletedConfirm": "Marcar como completada",
- "lockedFieldsetLabel": "Factura bloqueada, edición desactivada"
- },
- "payments": {
- "title": "Pagos",
- "markUnpaid": "Marcar como Sin Pagar",
- "markPaid": "Marcar como Pagado",
- "recordPayment": "Registrar Pago",
- "totalPaid": "Total Pagado",
- "amount": "Cantidad",
- "date": "Fecha",
- "method": "Método",
- "note": "Nota",
- "notePlaceholder": "Nota opcional",
- "savePayment": "Guardar Pago",
- "methodOptions": {
- "cash": "Efectivo",
- "card": "Tarjeta",
- "transfer": "Transferencia",
- "other": "Otro"
- },
- "recorded": "Pago registrado",
- "markedPaid": "Marcado como pagado",
- "markedUnpaid": "Marcado como sin pagar",
- "deleted": "Pago eliminado",
- "failedRecord": "Error al registrar pago",
- "failedStatus": "Error al actualizar estado del pago",
- "failedDelete": "Error al eliminar pago",
- "deleteTitle": "Eliminar Pago",
- "deleteDescription": "Esto eliminará este registro de pago.",
- "failedPdf": "Error al generar factura en PDF",
- "received": "Pagos recibidos",
- "noneYet": "Todavía no se ha pagado nada.",
- "balanceDue": "Saldo pendiente"
- },
- "attachments": {
- "deleteTitle": "Eliminar Archivo",
- "deleteDescription": "Esto eliminará permanentemente este archivo. Esto no se puede deshacer.",
- "deleted": "Archivo eliminado",
- "failedDelete": "Error al eliminar",
- "images": "Imágenes ({count})",
- "videos": "Vídeos ({count})",
- "diagnostics": "Reportes de Diagnóstico ({count})",
- "documents": "Documentos ({count})",
- "download": "Descargar",
- "close": "Cerrar"
- },
- "share": {
- "title": "Compartir Factura",
- "description": "Genere un enlace público que permita a cualquiera ver y descargar esta factura sin iniciar sesión.",
- "notifyTitle": "Notificar a {name}",
- "email": "Correo Electrónico",
- "noEmail": "(sin correo electrónico registrado)",
- "sms": "SMS",
- "noPhone": "(sin teléfono registrado)",
- "sendNotification": "Enviar Notificación",
- "revokeLink": "Revocar Enlace",
- "generateLink": "Generar Enlace Público",
- "emailSent": "Correo electrónico enviado",
- "failedEmail": "Error al enviar correo electrónico",
- "smsSent": "SMS enviado",
- "failedSms": "Error al enviar SMS",
- "copyLink": "Copiar enlace"
- },
- "sidebar": {
- "vehicle": "Vehículo",
- "customer": "Cliente",
- "vin": "VIN: {vin}",
- "mileageAtService": "Millaje en el servicio: {mileage} {unit}",
- "engineHoursAtService": "Horas de motor en servicio: {mileage} {unit}",
- "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"
- }
- },
- "images": {
- "title": "Imágenes del Servicio",
- "dropzone": "Arrastra imágenes aquí o haz clic para explorar",
- "uploading": "Subiendo...",
- "formats": "JPG, PNG, WebP — máx. 10MB cada una",
- "uploadingImages": "Subiendo imágenes...",
- "limitReached": "Límite de imágenes alcanzado ({count}/{max})",
- "upgradePrompt": "Actualiza tu 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",
- "deleted": "Imagen eliminada",
- "failedDelete": "Error al eliminar imagen",
- "failedUpdate": "Error al actualizar",
- "description": "Descripción...",
- "invoice": "Factura"
- },
- "videos": {
- "title": "Videos del Servicio",
- "dropzone": "Arrastra videos aquí o haz clic para explorar",
- "uploading": "Subiendo...",
- "formats": "MP4, WebM, MOV — máx. 10MB cada uno",
- "uploadingVideos": "Subiendo videos...",
- "uploadingCount": "Subiendo {count} video(s)...",
- "uploadedCount": "{count} video(s) subido(s)",
- "uploadFailed": "Error al subir",
- "deleted": "Video eliminado",
- "failedDelete": "Error al eliminar video",
- "failedUpdate": "Error al actualizar",
- "invoice": "Factura"
- },
- "documents": {
- "diagnosticTitle": "Reportes de Diagnóstico",
- "documentsTitle": "Documentos",
- "dropzone": "Arrastra archivos aquí o haz clic para explorar",
- "uploading": "Subiendo...",
- "diagnosticFormats": "PDF, CSV, TXT — máx. 10MB cada uno",
- "documentFormats": "PDF, DOCX, XLSX, CSV, TXT — máx. 10MB cada uno",
- "uploadingReports": "Subiendo reportes...",
- "uploadingDocuments": "Subiendo documentos...",
- "diagnosticLimitReached": "Límite de reportes de diagnóstico alcanzado ({count}/{max})",
- "documentLimitReached": "Límite de documentos alcanzado ({count}/{max})",
- "upgradePrompt": "Actualiza tu plan para subir más.",
- "diagnosticLabel": "Reporte de diagnóstico",
- "documentLabel": "Documento",
- "limitReachedToast": "Límite de {label} alcanzado ({count}/{max}). Actualiza tu plan para 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",
- "deleted": "Archivo eliminado",
- "failedDelete": "Error al eliminar archivo",
- "failedUpdate": "Error al actualizar",
- "invoice": "Factura"
- },
- "schedule": {
- "title": "Horario",
- "date": "Fecha",
- "startTime": "Hora de inicio",
- "endTime": "Hora de fin",
- "durationPresets": "Duración",
- "technician": "Técnico",
- "selectTechnician": "Seleccionar técnico...",
- "searchOrCreate": "Buscar o crear técnico...",
- "createTechnician": "Crear \"{name}\"",
- "creating": "Creando...",
- "failedCreate": "Error al crear técnico",
- "addNew": "+ Agregar nuevo",
- "add": "Agregar",
- "newTechPlaceholder": "Nombre del técnico...",
- "assign": "Asignar al tablero",
- "assigned": "Asignado al tablero de trabajo",
- "failedAssign": "Error al asignar",
- "assignNotAllowed": "No tienes permiso para asignar técnicos. Pide a un propietario o administrador que permita a tu rol modificar el tablero de trabajo.",
- "endBeforeStart": "La hora de fin debe ser posterior a la hora de inicio",
- "failedUpdate": "Error al actualizar el horario",
- "splitCreated": "El trabajo abarca varios días — continuación creada para el día siguiente",
- "customTechnicians": "Personalizados",
- "readMore": "Leer más",
- "setDefaults": "Configurar valores",
- "workBay": "Puesto de trabajo",
- "selectWorkBay": "Seleccionar puesto…",
- "noWorkBay": "Sin puesto",
- "noTechnician": "Sin técnico",
- "technicians": "Técnicos",
- "otherTeamMembers": "Otros miembros del equipo",
- "makeTechnician": "Lo convierte en técnico",
- "addSomeoneNew": "Añadir a alguien nuevo",
- "notOnBoard": "Aún no está en el tablero",
- "putOnBoard": "Poner en el tablero",
- "slotTaken": "{count, plural, one {Esta franja ya está reservada} other {Esta franja tiene # conflictos}}",
- "anotherJob": "otro trabajo",
- "clashTechnician": "el técnico está ocupado",
- "clashBay": "la bahía está ocupada",
- "clashBoth": "ambos están ocupados",
- "bookedAnyway": "Guardado igualmente. Cambia la hora o elige la siguiente franja libre.",
- "pickNextAvailable": "Elegir la siguiente franja libre",
- "findingSlot": "Buscando una franja…",
- "slotPicked": "Reservado en la siguiente franja libre",
- "noSlotFound": "No se encontró ninguna franja libre en las próximas semanas",
- "assignedTitle": "Técnico asignado",
- "boardLink": "Tablero de trabajo",
- "someoneElse": "Otra persona",
- "loadOf": "{booked} / {capacity} h",
- "loadFree": "{hours} h libres",
- "loadFull": "Completo",
- "loadOn": "Horas reservadas el {date}",
- "promisedAt": "Prometido al cliente",
- "promisedPlaceholder": "Sin prometer todavía",
- "promisedClear": "Borrar"
- },
- "notifications": {
- "title": "Notificaciones al cliente",
- "viaSms": "por SMS",
- "viaEmail": "por correo",
- "justNow": "Ahora mismo",
- "minutesAgo": "hace {count}m",
- "hoursAgo": "hace {count}h",
- "daysAgo": "hace {count}d"
- },
- "table": {
- "warranty": "Garantía"
- },
- "warranty": {
- "title": "Garantía",
- "months": "Duración (meses)",
- "notes": "Términos de garantía",
- "notesPlaceholder": "ej. Garantía de 12 meses en todas las piezas y mano de obra...",
- "expiresAt": "Vence",
- "presets": {
- "3months": "3 m",
- "6months": "6 m",
- "12months": "12 m",
- "24months": "24 m"
- },
- "status": {
- "active": "Activa",
- "expiring": "Por vencer",
- "expired": "Vencida",
- "none": "N/A"
- },
- "statementLabel": "Lo que se le dice al cliente sobre la garantía",
- "statement": {
- "none": "Sin indicar",
- "included": "Incluida",
- "not_included": "No incluida"
- },
- "noneHint": "En este documento no se imprime nada sobre la garantía.",
- "mileageWithUnit": "Límite de distancia ({unit})",
- "notIncludedNotes": "Declaración al cliente",
- "notIncludedPlaceholder": "p. ej. El taller no ofrece garantía sobre piezas aportadas por el cliente.",
- "printedHint": "Se imprime bajo la garantía en el documento.",
- "notIncludedHint": "Si lo deja vacío, el documento dice que los derechos legales no se ven afectados.",
- "summaryMonths": "{count} m."
- },
- "concerns": {
- "title": "Motivos del cliente",
- "hint": "Por qué vino el cliente, con sus propias palabras. Una fila por cada cosa que mencionó.",
- "add": "Añadir otro",
- "placeholder": "Hace un ruido detrás cuando freno",
- "remove": "Quitar este punto",
- "notAnswered": "Todavía no se ha encontrado nada",
- "answered": "{count} hallazgo(s) sobre esto",
- "storyTitle": "Descripción del trabajo",
- "storyHint": "Condición, causa, corrección, confirmación. Haz clic en un paso para abrirlo; una fila por cada cosa que mencionó el cliente o que observaste.",
- "steps": {
- "condition": "Condición",
- "cause": "Causa",
- "correction": "Corrección",
- "confirm": "Confirmación"
- },
- "conditionPlaceholder": "Lo que informó el cliente o lo que observaste",
- "causePlaceholder": "Qué causa raíz mostraron las pruebas",
- "correctionPlaceholder": "Qué se hizo para repararlo",
- "confirmPlaceholder": "Cómo se comprobó la reparación: prueba de conducción, nuevo escaneo, síntoma desaparecido",
- "markConfirmed": "Confirmado",
- "confirmedBy": "Confirmado por {name}, {date}",
- "confirmedAt": "Confirmado el {date}",
- "confirmedOnSave": "Se firma con tu nombre al guardar",
- "confirmedCount": "{confirmed} de {total} confirmados",
- "findingsCount": "{count, plural, one {# observación} other {# observaciones}}",
- "addFinding": "Añadir observación",
- "unconfirmedTitle": "¿Completar con motivos sin confirmar?",
- "unconfirmedBody": "{count, plural, one {Un motivo no se ha confirmado como reparado:} other {# motivos no se han confirmado como reparados:}}",
- "unconfirmedProceed": "Completar igualmente",
- "addMedia": "Añadir fotos o vídeo",
- "mediaUploading": "Subiendo…",
- "mediaAdded": "{count, plural, one {# archivo añadido} other {# archivos añadidos}}",
- "mediaFailed": "No se pudo subir {name}",
- "mediaTypes": "Elige una foto (JPG, PNG, WebP) o un vídeo.",
- "dictate": {
- "start": "Dictar",
- "listening": "Escuchando",
- "startHint": "Habla y se escribe aquí. No se graba nada.",
- "stopHint": "Dejar de escuchar",
- "notAllowed": "El navegador no tiene permiso para usar el micrófono. Permítelo para este sitio e inténtalo de nuevo.",
- "noMicrophone": "No se encontró ningún micrófono.",
- "failed": "El dictado se detuvo. Inténtalo de nuevo.",
- "startHintServer": "Habla y se escribe mientras hablas. El audio va a tu modelo de voz para transcribirlo y no se guarda.",
- "transcribing": "Terminando…",
- "language": "Idioma hablado",
- "auto": "Auto",
- "nothingHeard": "No se oyó nada.",
- "fellBack": "Usando por ahora el dictado del propio navegador.",
- "autoLong": "Auto (detectar el idioma)",
- "engine": "Transcrito por",
- "engineAi": "Modelo de voz (más preciso)",
- "engineBrowser": "Navegador (escribe mientras hablas)",
- "liveFellBack": "Escribiendo en tramos de unos segundos en lugar de palabra por palabra."
- },
- "stepEmpty": "Sin escribir todavía",
- "removeTitle": "¿Quitar este motivo?",
- "removeBody": "Su condición, causa, corrección y confirmación se eliminan con él al guardar la orden de trabajo.",
- "removeAttached": "Sus observaciones y archivos siguen en el trabajo, ya no archivados bajo un motivo.",
- "removeConfirm": "Quitar motivo",
- "saveFirst": "Guarda primero la orden de trabajo"
- },
- "videoCall": {
- "title": "Videollamada",
- "none": "Esta orden de trabajo no tiene videollamada.",
- "needsSchedule": "Defina primero una hora de inicio. La reunión sigue la programación.",
- "add": "Añadir reunión de {provider}",
- "addedHere": "añadida desde esta orden de trabajo",
- "fromCalendar": "del evento del calendario",
- "join": "Unirse",
- "copy": "Copiar enlace",
- "copied": "Enlace copiado",
- "remove": "Eliminar",
- "removeTitle": "¿Eliminar la videollamada?",
- "removeDescription": "La reunión se elimina en el proveedor. Quien ya tenga el enlace no podrá unirse.",
- "created": "Reunión creada. El enlace está en la orden de trabajo.",
- "removed": "Reunión eliminada",
- "failed": "Algo salió mal",
- "shareHint": "El cliente solo recibe este enlace cuando lo envías.",
- "shareHintNoChannel": "El cliente solo recibe este enlace cuando lo envías. No hay ningún canal de mensajes configurado, así que cópialo tú en un mensaje.",
- "send": {
- "button": "Enviar al cliente",
- "title": "Enviar el enlace de la videollamada",
- "description": "Enviar el enlace para unirse a {name}.",
- "messageLabel": "Nota (opcional)",
- "messagePlaceholder": "Lo que el cliente deba saber antes de la llamada...",
- "linkAlwaysIncluded": "El enlace para unirse se añade siempre debajo de tu nota.",
- "sms": "SMS",
- "email": "Correo",
- "telegram": "Telegram",
- "noPhone": "(sin teléfono)",
- "noEmail": "(sin correo)",
- "noTelegram": "(sin chat vinculado)",
- "notAvailable": "(no configurado)",
- "cancel": "Cancelar",
- "send": "Enviar",
- "sent": "Enlace de la videollamada enviado",
- "partlySent": "Enviado por {sent}; no por {failed}",
- "failed": "No se pudo enviar el enlace"
- },
- "notify": {
- "invitation": "Hola {name}, tu videollamada sobre el {vehicle} es el {when}. Únete aquí: {url}",
- "invitationNoTime": "Hola {name}, aquí tienes el enlace de la videollamada sobre el {vehicle}: {url}",
- "joinLine": "Únete a la videollamada aquí: {url}",
- "emailSubject": "Videollamada sobre tu {vehicle}"
- }
- },
- "modern": {
- "statusLabel": "Estado de la orden de trabajo",
- "back": "Atrás",
- "backToClassic": "Volver al diseño clásico",
- "openCustomer": "Abrir cliente",
- "serviceHistory": "Historial de servicio",
- "changeVehicle": "Cambiar vehículo",
- "vehicleChangesOnSave": "La orden de trabajo pasa a este vehículo al guardar.",
- "phone": "Teléfono",
- "email": "Correo electrónico",
- "notSet": "Sin definir",
- "noCustomer": "No hay cliente en esta orden de trabajo.",
- "invoiceTitle": "Factura y pago",
- "filesTitle": "Archivos y multimedia",
- "activity": {
- "title": "Actividad",
- "messageSent": "Mensaje enviado al cliente",
- "linkShared": "Enlace de la factura compartido",
- "linkViewed": "{count, plural, one {El cliente abrió el enlace} other {El cliente abrió el enlace # veces}}",
- "paymentTaken": "Pago de {amount} registrado",
- "statusSet": "Estado cambiado a {status}"
- },
- "invite": {
- "title": "La página de la orden de trabajo se ha renovado.",
- "body": "Un diseño más claro con los mismos campos. Puedes volver al anterior cuando quieras.",
- "try": "Probar ahora",
- "dismiss": "Ahora no",
- "menu": "Probar el nuevo diseño"
- },
- "promised": "Prometido el {date}",
- "promisedOverdue": "Prometido el {date}, con retraso",
- "opened": "Abierta el {date}",
- "openedBy": "Abierta el {date} por {name}",
- "editTitle": "Editar título",
- "titleField": "Título",
- "media": {
- "tabs": {
- "photos": "Fotos",
- "diagnostics": "Diagnóstico",
- "dropoff": "Recepción"
- },
- "summary": "{count, plural, one {# archivo} other {# archivos}} · se comparten con el cliente solo si se marcan",
- "customerCanSee": "Visible para el cliente",
- "showToCustomer": "Mostrar al cliente",
- "hideFromCustomer": "Ocultar al cliente",
- "add": {
- "image": "Añadir fotos",
- "document": "Añadir documentos",
- "diagnostic": "Añadir informe de diagnóstico",
- "video": "Añadir vídeo",
- "dropoff": "Añadir fotos de recepción"
- },
- "dropHint": "Suelta archivos aquí o haz clic para explorar",
- "added": "{count, plural, one {# archivo añadido} other {# archivos añadidos}}",
- "failed": "No se pudo subir {name}",
- "wrongType": "No es el tipo de archivo adecuado para esta pestaña: {names}",
- "limit": "Límite alcanzado ({count}/{max})",
- "dropoffHint": "El coche tal como llegó, con la hora de cada foto. Se guarda para el taller y no se muestra al cliente salvo que usted lo decida."
- },
- "moneyBar": {
- "total": "Total",
- "paid": "Pagado",
- "balance": "Saldo pendiente",
- "settled": "Pagado por completo",
- "takePayment": "Cobrar",
- "preview": "Vista previa de la factura",
- "previewShort": "Vista previa",
- "send": "Enviar al cliente",
- "sendShort": "Enviar"
- },
- "vehicleInfo": {
- "more": "Más información",
- "less": "Menos información",
- "copy": "Copiar {label}",
- "copied": "Copiado",
- "lastInspection": "Última inspección periódica",
- "purchaseDate": "Fecha de compra",
- "purchasePrice": "Precio de compra",
- "overdue": "vencida",
- "customerSince": "Cliente desde"
- },
- "moreStatuses": "Más estados"
- },
- "photoHandoff": {
- "button": "Añadir desde el móvil",
- "dialogTitle": "Añadir fotos y documentos desde un móvil",
- "dialogBody": "Haz o elige fotos, o comparte un PDF, con cualquier móvil. Todo llega directamente a esta orden de trabajo.",
- "expires": "El código funciona hasta las {time}.",
- "waiting": "Esperando fotos y documentos…",
- "received": "{count, plural, one {# archivo recibido} other {# archivos recibidos}}",
- "copyLink": "Copiar enlace",
- "linkCopied": "Enlace copiado",
- "failed": "No se pudo crear un código. Inténtalo de nuevo.",
- "done": "Hecho",
- "pageTitle": "Añadir fotos y documentos",
- "forJob": "Orden de trabajo {number}",
- "takePhoto": "Hacer foto",
- "choosePhotos": "Elegir fotos",
- "hint": "Todo llega directamente a la orden de trabajo. Haz todas las fotos que necesites.",
- "uploading": "Subiendo…",
- "added": "Añadida",
- "notAdded": "No añadida",
- "retry": "Inténtalo de nuevo",
- "addedCount": "{count, plural, one {# archivo añadido} other {# archivos añadidos}}",
- "expiredTitle": "Este código ha caducado",
- "invalidTitle": "Este enlace no funciona",
- "errors": {
- "expired": "Pide un código nuevo en el mostrador. Cada uno funciona durante 30 minutos.",
- "invalid": "Vuelve a escanear el código de la orden de trabajo.",
- "limit": "Esta orden de trabajo ya tiene todas las fotos que admite.",
- "type": "Aquí solo se pueden añadir fotos y documentos PDF.",
- "tooLarge": "Ese archivo es demasiado grande.",
- "failed": "La foto no se añadió. Comprueba la conexión e inténtalo de nuevo.",
- "codeLimit": "Este código ya ha añadido todas las fotos que permite un código. Escanea un código nuevo en el mostrador."
- },
- "concernHeading": "Las fotos van a este motivo",
- "howTitle": "Cómo funciona",
- "step1": "Apunta la cámara del móvil al código y abre el enlace.",
- "step2": "Haz fotos o elige fotos o documentos PDF que ya estén en el móvil.",
- "step3": "Aparecen en esta orden de trabajo en cuanto llegan.",
- "noSignIn": "No hace falta iniciar sesión en el móvil.",
- "customerToo": "Lo puede usar el personal, y también el cliente: deja que escanee el código o envíale el enlace.",
- "scope": "El enlace solo añade fotos y documentos a esta orden de trabajo y deja de funcionar a los 30 minutos.",
- "scanHint": "Escanea con la cámara del móvil",
- "chooseDocument": "Subir un documento",
- "privacy": "Solo el taller ve lo que añades aquí.",
- "dropoff": {
- "button": "Fotos de recepción",
- "dialogTitle": "Fotografiar el coche a su llegada",
- "dialogBody": "Una vuelta al coche antes de empezar: los cuatro lados, el cuentakilómetros y los daños que ya tenga. Es su prueba si algún día se discute un arañazo.",
- "step2": "Siga la lista en el móvil: una foto de cada lado, el cuentakilómetros y los daños.",
- "scope": "El enlace solo añade fotos de recepción a esta orden de trabajo y deja de funcionar a los 30 minutos.",
- "pageTitle": "El coche a su llegada",
- "pageBody": "Haga cada foto por orden. Añada un primer plano de los daños que ya existan.",
- "retake": "Repetir",
- "slots": {
- "front": "Frontal",
- "right": "Lado derecho",
- "rear": "Trasera",
- "left": "Lado izquierdo",
- "odometer": "Cuentakilómetros",
- "other": "Daño u otro"
- }
- }
- },
- "payCode": {
- "button": "Código de pago",
- "title": "Pagar escaneando",
- "body": "El cliente lo escanea con la cámara del móvil, se abre la factura y paga allí.",
- "sharesInvoice": "Mostrar el código comparte la factura con el cliente, igual que enviarla. Desde ese momento la factura conserva los datos que tiene ahora.",
- "show": "Mostrar el código",
- "failed": "No se pudo crear el código. Inténtalo de nuevo.",
- "toPay": "A pagar",
- "scanHint": "Escanear con la cámara del móvil",
- "copyLink": "Copiar enlace",
- "linkCopied": "Enlace copiado",
- "waiting": "Esperando el pago. Se actualiza solo.",
- "paid": "Pago recibido",
- "paidBody": "El pago ya está en la orden de trabajo.",
- "done": "Listo"
- },
- "customStatus": {
- "defaultMessage": "Hola {customer_name}, novedades sobre su {vehicle}: {status}. {company_name}"
- }
- }
|