quotes.json 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. {
  2. "list": {
  3. "statusAll": "Todos",
  4. "statusAttention": "Requiere atención",
  5. "statusDraft": "Borrador",
  6. "statusSent": "Enviado",
  7. "statusAccepted": "Aceptado",
  8. "statusRejected": "Rechazado",
  9. "statusConverted": "Convertido",
  10. "searchPlaceholder": "Buscar presupuestos...",
  11. "newQuote": "Nuevo presupuesto",
  12. "columnQuoteNumber": "Presupuesto N.º",
  13. "columnTitle": "Título",
  14. "columnCustomer": "Cliente",
  15. "columnVehicle": "Vehículo",
  16. "columnStatus": "Estado",
  17. "columnDate": "Fecha",
  18. "columnTotal": "Total",
  19. "noQuotes": "No se encontraron presupuestos."
  20. },
  21. "page": {
  22. "quote": "Presupuesto",
  23. "save": "Guardar",
  24. "pdf": "PDF",
  25. "email": "Correo electrónico",
  26. "share": "Compartir",
  27. "delete": "Eliminar",
  28. "deleteTitle": "Eliminar presupuesto",
  29. "deleteDescription": "Este presupuesto se eliminará permanentemente.",
  30. "saved": "Presupuesto guardado",
  31. "unsavedChanges": "Cambios sin guardar",
  32. "saveFirst": "Por favor, guarde sus cambios primero",
  33. "failedSave": "Error al guardar el presupuesto",
  34. "failedDelete": "Error al eliminar",
  35. "failedPdf": "Error al generar el PDF",
  36. "selectVehicle": "Por favor seleccione un vehículo",
  37. "convertTitle": "Convertir presupuesto en orden de trabajo",
  38. "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.",
  39. "convertChoiceDescription": "Seleccione un vehículo y cree una nueva orden de trabajo a partir de este presupuesto o añádalo a una que ya esté abierta.",
  40. "convertNew": "Crear una nueva orden de trabajo",
  41. "convertExisting": "Añadir a una orden de trabajo existente",
  42. "convertExistingHint": "Las piezas, la mano de obra y los archivos del presupuesto se añaden a la orden de trabajo. Lo que ya contiene se queda como está.",
  43. "convertNoOpenWorkOrders": "Este vehículo no tiene órdenes de trabajo abiertas.",
  44. "convertSelectWorkOrder": "Seleccione una orden de trabajo",
  45. "convertAdd": "Añadir a la orden de trabajo",
  46. "convertConflicts": {
  47. "heading": "Antes de añadir, decida qué conserva la orden de trabajo",
  48. "checking": "Comparando el presupuesto con la orden de trabajo...",
  49. "unanswered": "Elija qué conserva la orden de trabajo antes de añadir el presupuesto.",
  50. "discount": {
  51. "title": "Descuento",
  52. "summary": "La orden de trabajo tiene un descuento del {percent}%, {jobAmount} a día de hoy. El presupuesto incluye un descuento de {quoteAmount}.",
  53. "keepJob": "Mantener el {percent}% de descuento y descartar los {quoteAmount} del presupuesto",
  54. "combine": "Convertir el {percent}% en {jobAmount} y añadir los {quoteAmount} del presupuesto, {total} en total"
  55. },
  56. "tax": {
  57. "title": "Impuestos",
  58. "summary": "La orden de trabajo está valorada con {job}. El presupuesto se valoró con {quote}.",
  59. "keepJob": "Mantener los impuestos de la orden de trabajo. Las líneas del presupuesto pasan por los importes presupuestados.",
  60. "useQuote": "Cambiar la orden de trabajo a los impuestos del presupuesto. Se recalcula todo su contenido.",
  61. "inclusive": "{rate}% de impuestos incluido en las líneas",
  62. "exclusive": "{rate}% de impuestos añadido aparte",
  63. "components": "{rate}% de impuestos ({names})"
  64. },
  65. "warranty": {
  66. "title": "Garantía",
  67. "summary": "La orden de trabajo indica {job}. El presupuesto que aceptó el cliente indica {quote}.",
  68. "keepJob": "Mantener la garantía de la orden de trabajo",
  69. "useQuote": "Usar la garantía del presupuesto, tal como la aceptó el cliente",
  70. "none": "nada sobre la garantía",
  71. "notIncluded": "sin garantía del taller",
  72. "included": "garantía incluida",
  73. "includedWithTerms": "garantía incluida, {terms}",
  74. "months": "{count, plural, one {# mes} other {# meses}}",
  75. "mileage": "{count} {unit}"
  76. }
  77. },
  78. "convert": "Convertir",
  79. "convertToWorkOrder": "Convertir en orden de trabajo",
  80. "cancel": "Cancelar",
  81. "failedConvert": "Error al convertir",
  82. "changesRequested": "Cambios solicitados",
  83. "quoteAccepted": "Presupuesto aceptado",
  84. "markResolved": "Marcar como resuelto",
  85. "responseResolved": "Respuesta del cliente resuelta",
  86. "entityLabel": "Presupuesto",
  87. "tabs": {
  88. "details": "Detalles",
  89. "images": "Imágenes",
  90. "documents": "Documentos"
  91. },
  92. "customFieldsInvalid": "Completa todos los campos personalizados obligatorios",
  93. "customFieldsSaveFailed": "No se pudieron guardar los campos personalizados"
  94. },
  95. "form": {
  96. "newQuote": "Nuevo presupuesto",
  97. "editQuote": "Editar presupuesto",
  98. "cancel": "Cancelar",
  99. "createQuote": "Crear presupuesto",
  100. "updateQuote": "Actualizar presupuesto",
  101. "created": "Presupuesto creado",
  102. "updated": "Presupuesto actualizado",
  103. "failedCreate": "Error al crear el presupuesto",
  104. "failedUpdate": "Error al actualizar el presupuesto"
  105. },
  106. "parts": {
  107. "title": "Repuestos",
  108. "addPart": "Agregar repuesto",
  109. "partNumber": "N.º de repuesto",
  110. "category": "Categoría",
  111. "name": "Nombre",
  112. "namePlaceholder": "Nombre *",
  113. "qty": "Cant.",
  114. "unitPrice": "Precio unitario",
  115. "total": "Total",
  116. "subtotal": "Subtotal de repuestos: {amount}",
  117. "deleteRow": "Eliminar fila",
  118. "excludeFromTotal": "Excluir del total",
  119. "addFromInventory": "Del inventario",
  120. "unitCost": "Costo",
  121. "markupPercent": "Margen %",
  122. "nameMissingHint": "Las filas sin nombre de pieza no se guardan."
  123. },
  124. "labor": {
  125. "title": "Mano de obra",
  126. "addLabor": "Agregar mano de obra",
  127. "fromPresets": "Desde plantillas",
  128. "description": "Descripción",
  129. "descriptionPlaceholder": "Descripción *",
  130. "hours": "Horas",
  131. "rate": "Tarifa ({currency}/hr)",
  132. "total": "Total",
  133. "subtotal": "Subtotal de mano de obra: {amount}",
  134. "addService": "Agregar servicio",
  135. "qty": "Cant.",
  136. "qtyOrHours": "Unidad / Horas",
  137. "hourlyTag": "HR",
  138. "serviceTag": "SVC",
  139. "hourlyHint": "Por horas: se calcula por las horas trabajadas (horas × tarifa/h). Haz clic para cambiar.",
  140. "serviceHint": "Servicio: se cobra como tarifa fija por unidad. Haz clic para cambiar.",
  141. "deleteRow": "Eliminar fila",
  142. "excludeFromTotal": "Excluir del total"
  143. },
  144. "notes": {
  145. "title": "Notas",
  146. "public": "Pública",
  147. "internal": "Interna",
  148. "publicPlaceholder": "Descripción del presupuesto visible para el cliente...",
  149. "internalPlaceholder": "Notas internas (no visibles para el cliente)...",
  150. "publicHelper": "Se muestra en el documento del presupuesto",
  151. "internalHelper": "Solo visible para su equipo"
  152. },
  153. "sidebar": {
  154. "sharedLink": {
  155. "title": "Enlace compartido",
  156. "sharedOn": "Compartido el {date}",
  157. "notViewed": "Aún no visto",
  158. "viewedTimes": "Visto {count, plural, one {# vez} other {# veces}}",
  159. "lastViewed": "Último {date}",
  160. "copyLink": "Copiar enlace",
  161. "linkCopied": "Enlace copiado"
  162. }
  163. },
  164. "details": {
  165. "title": "Detalles del presupuesto",
  166. "titleLabel": "Título *",
  167. "titlePlaceholder": "Estimación de reparación de vehículo",
  168. "status": "Estado",
  169. "statusDraft": "Borrador",
  170. "statusSent": "Enviado",
  171. "statusAccepted": "Aceptado",
  172. "statusRejected": "Rechazado",
  173. "validUntil": "Válido hasta",
  174. "viewInspection": "Ver inspección vinculada",
  175. "vehicle": "Vehículo",
  176. "customer": "Cliente",
  177. "selectVehicle": "Seleccionar vehículo...",
  178. "selectCustomer": "Seleccionar cliente...",
  179. "none": "Ninguno",
  180. "clearVehicle": "Quitar vehículo",
  181. "clearCustomer": "Quitar cliente"
  182. },
  183. "totals": {
  184. "title": "Totales",
  185. "parts": "Repuestos",
  186. "labor": "Mano de obra",
  187. "subtotal": "Subtotal",
  188. "subtotalInclTax": "Subtotal (con impuesto)",
  189. "discount": "Descuento",
  190. "discountNone": "Ninguno",
  191. "discountPercentage": "Porcentaje",
  192. "discountFixed": "Fijo",
  193. "tax": "Impuesto",
  194. "taxIncluded": "Impuesto (incl.)",
  195. "taxableAmount": "Base imponible",
  196. "total": "Total",
  197. "inclusiveModeHint": "Los precios por línea se introducen con impuesto incluido. Los totales muestran el desglose neto + impuesto."
  198. },
  199. "shareDialog": {
  200. "title": "Compartir presupuesto",
  201. "description": "Genere un enlace público que permita a cualquier persona ver y descargar este presupuesto sin iniciar sesión.",
  202. "notifyTitle": "Notificar a {name}",
  203. "email": "Correo electrónico",
  204. "noEmail": "(sin correo registrado)",
  205. "sms": "SMS",
  206. "noPhone": "(sin teléfono registrado)",
  207. "sendNotification": "Enviar notificación",
  208. "revokeLink": "Revocar enlace",
  209. "generateLink": "Generar enlace público",
  210. "emailSent": "Correo enviado",
  211. "failedEmail": "Error al enviar el correo",
  212. "smsSent": "SMS enviado",
  213. "failedSms": "Error al enviar el SMS",
  214. "copyLink": "Copiar enlace"
  215. },
  216. "images": {
  217. "title": "Imágenes del presupuesto",
  218. "dropzone": "Arrastre imágenes aquí o haga clic para explorar",
  219. "uploading": "Subiendo...",
  220. "formats": "JPG, PNG, WebP — máx. 10 MB cada una",
  221. "uploadingImages": "Subiendo imágenes...",
  222. "limitReached": "Límite de imágenes alcanzado ({count}/{max})",
  223. "upgradePrompt": "Actualice su plan para subir más imágenes.",
  224. "onlyAllowed": "Solo se permiten imágenes JPG, PNG y WebP. {names} omitidas.",
  225. "onlyUploading": "Solo se subirán {count} imagen(es) para no exceder el límite.",
  226. "uploadingCount": "Subiendo {count} imagen(es)...",
  227. "uploadedCount": "{count} imagen(es) subida(s)",
  228. "uploadFailed": "Error al subir",
  229. "failedUploadFile": "No se pudo subir {name}",
  230. "failedSaveFile": "No se pudo guardar {name}",
  231. "deleted": "Imagen eliminada",
  232. "failedDelete": "Error al eliminar la imagen",
  233. "failedUpdate": "Error al actualizar",
  234. "description": "Descripción...",
  235. "pdf": "PDF"
  236. },
  237. "documents": {
  238. "title": "Documentos",
  239. "dropzone": "Arrastre archivos aquí o haga clic para explorar",
  240. "uploading": "Subiendo...",
  241. "formats": "PDF, CSV, TXT — máx. 10 MB cada uno",
  242. "uploadingDocuments": "Subiendo documentos...",
  243. "limitReached": "Límite de documentos alcanzado ({count}/{max})",
  244. "upgradePrompt": "Actualice su plan para subir más.",
  245. "onlyUploading": "Solo se subirán {count} archivo(s) para no exceder el límite.",
  246. "uploadingCount": "Subiendo {count} archivo(s)...",
  247. "uploadedCount": "{count} archivo(s) subido(s)",
  248. "uploadFailed": "Error al subir",
  249. "failedUploadFile": "No se pudo subir {name}",
  250. "failedSaveFile": "No se pudo guardar {name}",
  251. "deleted": "Archivo eliminado",
  252. "failedDelete": "Error al eliminar el archivo",
  253. "failedUpdate": "Error al actualizar",
  254. "pdf": "PDF"
  255. },
  256. "statusLabels": {
  257. "draft": "Borrador",
  258. "sent": "Enviado",
  259. "accepted": "Aceptado",
  260. "rejected": "Rechazado",
  261. "expired": "Caducado",
  262. "converted": "Convertido",
  263. "changes_requested": "Cambios solicitados"
  264. }
  265. }