quotes.json 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265
  1. {
  2. "list": {
  3. "statusAll": "All",
  4. "statusAttention": "Needs attention",
  5. "statusDraft": "Draft",
  6. "statusSent": "Sent",
  7. "statusAccepted": "Accepted",
  8. "statusRejected": "Rejected",
  9. "statusConverted": "Converted",
  10. "searchPlaceholder": "Search quotes...",
  11. "newQuote": "New Quote",
  12. "columnQuoteNumber": "Quote #",
  13. "columnTitle": "Title",
  14. "columnCustomer": "Customer",
  15. "columnVehicle": "Vehicle",
  16. "columnStatus": "Status",
  17. "columnDate": "Date",
  18. "columnTotal": "Total",
  19. "noQuotes": "No quotes found."
  20. },
  21. "page": {
  22. "quote": "Quote",
  23. "save": "Save",
  24. "pdf": "PDF",
  25. "email": "Email",
  26. "share": "Share",
  27. "delete": "Delete",
  28. "deleteTitle": "Delete Quote",
  29. "deleteDescription": "This will permanently delete this quote.",
  30. "saved": "Quote saved",
  31. "unsavedChanges": "Unsaved changes",
  32. "saveFirst": "Please save your changes first",
  33. "failedSave": "Failed to save quote",
  34. "failedDelete": "Failed to delete",
  35. "failedPdf": "Failed to generate PDF",
  36. "selectVehicle": "Please select a vehicle",
  37. "convertTitle": "Convert Quote to Work Order",
  38. "convertDescription": "This will create a new service record (work order) from this quote. Select a vehicle for the work order.",
  39. "convertChoiceDescription": "Select a vehicle, then create a new work order from this quote or add it to one that is already open.",
  40. "convertNew": "Create a new work order",
  41. "convertExisting": "Add to an existing work order",
  42. "convertExistingHint": "The quote's parts, labor and files are added to the work order. What is already on it stays as it is.",
  43. "convertNoOpenWorkOrders": "This vehicle has no open work orders.",
  44. "convertSelectWorkOrder": "Select a work order",
  45. "convertAdd": "Add to work order",
  46. "convertConflicts": {
  47. "heading": "Before adding, decide what the work order keeps",
  48. "checking": "Checking the quote against the work order...",
  49. "unanswered": "Choose what the work order keeps before adding the quote.",
  50. "discount": {
  51. "title": "Discount",
  52. "summary": "The work order has a {percent}% discount, {jobAmount} as it stands. The quote carries a discount of {quoteAmount}.",
  53. "keepJob": "Keep the {percent}% discount and drop the quote's {quoteAmount}",
  54. "combine": "Turn the {percent}% into {jobAmount} and add the quote's {quoteAmount}, {total} in all"
  55. },
  56. "tax": {
  57. "title": "Tax",
  58. "summary": "The work order is priced with {job}. The quote was priced with {quote}.",
  59. "keepJob": "Keep the work order's tax. The quote's lines come across at the amounts quoted.",
  60. "useQuote": "Switch the work order to the quote's tax. Everything on it is re-totalled.",
  61. "inclusive": "{rate}% tax included in the lines",
  62. "exclusive": "{rate}% tax added on top",
  63. "components": "{rate}% tax ({names})"
  64. },
  65. "warranty": {
  66. "title": "Warranty",
  67. "summary": "The work order says {job}. The quote the customer accepted says {quote}.",
  68. "keepJob": "Keep the work order's warranty",
  69. "useQuote": "Use the quote's warranty, as the customer accepted it",
  70. "none": "nothing about warranty",
  71. "notIncluded": "no workshop warranty",
  72. "included": "warranty included",
  73. "includedWithTerms": "warranty included, {terms}",
  74. "months": "{count, plural, one {# month} other {# months}}",
  75. "mileage": "{count} {unit}"
  76. }
  77. },
  78. "convert": "Convert",
  79. "convertToWorkOrder": "Convert to Work Order",
  80. "cancel": "Cancel",
  81. "failedConvert": "Failed to convert",
  82. "changesRequested": "Changes Requested",
  83. "quoteAccepted": "Quote Accepted",
  84. "markResolved": "Mark as Resolved",
  85. "responseResolved": "Customer response resolved",
  86. "entityLabel": "Quote",
  87. "tabs": {
  88. "details": "Details",
  89. "images": "Images",
  90. "documents": "Documents"
  91. },
  92. "customFieldsInvalid": "Please fill in all required custom fields",
  93. "customFieldsSaveFailed": "Failed to save custom fields"
  94. },
  95. "form": {
  96. "newQuote": "New Quote",
  97. "editQuote": "Edit Quote",
  98. "cancel": "Cancel",
  99. "createQuote": "Create Quote",
  100. "updateQuote": "Update Quote",
  101. "created": "Quote created",
  102. "updated": "Quote updated",
  103. "failedCreate": "Failed to create quote",
  104. "failedUpdate": "Failed to update quote"
  105. },
  106. "parts": {
  107. "title": "Parts",
  108. "addPart": "Add Part",
  109. "partNumber": "Part #",
  110. "category": "Category",
  111. "name": "Name",
  112. "namePlaceholder": "Name *",
  113. "qty": "Qty",
  114. "unitPrice": "Unit Price",
  115. "total": "Total",
  116. "subtotal": "Parts Subtotal: {amount}",
  117. "deleteRow": "Delete row",
  118. "excludeFromTotal": "Exclude from total",
  119. "addFromInventory": "From stock",
  120. "unitCost": "Cost",
  121. "markupPercent": "Markup %",
  122. "nameMissingHint": "Rows without a part name are not saved."
  123. },
  124. "labor": {
  125. "title": "Labor & Services",
  126. "addLabor": "Add Labor",
  127. "addService": "Add Service",
  128. "fromPresets": "From Presets",
  129. "description": "Description",
  130. "descriptionPlaceholder": "Description *",
  131. "hours": "Hours",
  132. "qty": "Qty",
  133. "qtyOrHours": "Unit / Hours",
  134. "rate": "Rate ({currency}/hr)",
  135. "total": "Total",
  136. "subtotal": "Labor Subtotal: {amount}",
  137. "hourlyTag": "HR",
  138. "serviceTag": "SVC",
  139. "hourlyHint": "Hourly: priced by hours worked (hours × rate/hr). Click to switch.",
  140. "serviceHint": "Service: priced as a flat fee per unit. Click to switch.",
  141. "deleteRow": "Delete row",
  142. "excludeFromTotal": "Exclude from total"
  143. },
  144. "notes": {
  145. "title": "Notes",
  146. "public": "Public",
  147. "internal": "Internal",
  148. "publicPlaceholder": "Quote description shown to the customer...",
  149. "internalPlaceholder": "Internal notes (not shown to customer)...",
  150. "publicHelper": "Shown on the quote document",
  151. "internalHelper": "Only visible to your team"
  152. },
  153. "sidebar": {
  154. "sharedLink": {
  155. "title": "Shared Link",
  156. "sharedOn": "Shared on {date}",
  157. "notViewed": "Not viewed yet",
  158. "viewedTimes": "Viewed {count, plural, one {# time} other {# times}}",
  159. "lastViewed": "Last {date}",
  160. "copyLink": "Copy link",
  161. "linkCopied": "Link copied"
  162. }
  163. },
  164. "details": {
  165. "title": "Quote Details",
  166. "titleLabel": "Title *",
  167. "titlePlaceholder": "Vehicle repair estimate",
  168. "status": "Status",
  169. "statusDraft": "Draft",
  170. "statusSent": "Sent",
  171. "statusAccepted": "Accepted",
  172. "statusRejected": "Rejected",
  173. "validUntil": "Valid Until",
  174. "viewInspection": "View linked inspection",
  175. "vehicle": "Vehicle",
  176. "customer": "Customer",
  177. "selectVehicle": "Select vehicle...",
  178. "selectCustomer": "Select customer...",
  179. "none": "None",
  180. "clearVehicle": "Clear vehicle",
  181. "clearCustomer": "Clear customer"
  182. },
  183. "totals": {
  184. "title": "Totals",
  185. "parts": "Parts",
  186. "labor": "Labor",
  187. "subtotal": "Subtotal",
  188. "subtotalInclTax": "Subtotal (incl. tax)",
  189. "discount": "Discount",
  190. "discountNone": "None",
  191. "discountPercentage": "Percentage",
  192. "discountFixed": "Fixed",
  193. "tax": "Tax",
  194. "taxIncluded": "Tax (incl.)",
  195. "taxableAmount": "Taxable amount",
  196. "total": "Total",
  197. "inclusiveModeHint": "Line item prices are entered with tax included. Totals show the net + tax breakdown."
  198. },
  199. "shareDialog": {
  200. "title": "Share Quote",
  201. "description": "Generate a public link that allows anyone to view and download this quote without signing in.",
  202. "notifyTitle": "Notify {name}",
  203. "email": "Email",
  204. "noEmail": "(no email on file)",
  205. "sms": "SMS",
  206. "noPhone": "(no phone on file)",
  207. "sendNotification": "Send Notification",
  208. "revokeLink": "Revoke Link",
  209. "generateLink": "Generate Public Link",
  210. "emailSent": "Email sent",
  211. "failedEmail": "Failed to send email",
  212. "smsSent": "SMS sent",
  213. "failedSms": "Failed to send SMS",
  214. "copyLink": "Copy link"
  215. },
  216. "images": {
  217. "title": "Quote Images",
  218. "dropzone": "Drop images here or click to browse",
  219. "uploading": "Uploading...",
  220. "formats": "JPG, PNG, WebP — max 10MB each",
  221. "uploadingImages": "Uploading images...",
  222. "limitReached": "Image limit reached ({count}/{max})",
  223. "upgradePrompt": "Upgrade your plan to upload more images.",
  224. "onlyAllowed": "Only JPG, PNG, and WebP images are allowed. {names} skipped.",
  225. "onlyUploading": "Only uploading {count} image(s) to stay within limit.",
  226. "uploadingCount": "Uploading {count} image(s)...",
  227. "uploadedCount": "{count} image(s) uploaded",
  228. "uploadFailed": "Upload failed",
  229. "failedUploadFile": "Failed to upload {name}",
  230. "failedSaveFile": "Failed to save {name}",
  231. "deleted": "Image deleted",
  232. "failedDelete": "Failed to delete image",
  233. "failedUpdate": "Failed to update",
  234. "description": "Description...",
  235. "pdf": "PDF"
  236. },
  237. "documents": {
  238. "title": "Documents",
  239. "dropzone": "Drop files here or click to browse",
  240. "uploading": "Uploading...",
  241. "formats": "PDF, CSV, TXT — max 10MB each",
  242. "uploadingDocuments": "Uploading documents...",
  243. "limitReached": "Document limit reached ({count}/{max})",
  244. "upgradePrompt": "Upgrade your plan to upload more.",
  245. "onlyUploading": "Only uploading {count} file(s) to stay within limit.",
  246. "uploadingCount": "Uploading {count} file(s)...",
  247. "uploadedCount": "{count} file(s) uploaded",
  248. "uploadFailed": "Upload failed",
  249. "failedUploadFile": "Failed to upload {name}",
  250. "failedSaveFile": "Failed to save {name}",
  251. "deleted": "File deleted",
  252. "failedDelete": "Failed to delete file",
  253. "failedUpdate": "Failed to update",
  254. "pdf": "PDF"
  255. },
  256. "statusLabels": {
  257. "draft": "Draft",
  258. "sent": "Sent",
  259. "accepted": "Accepted",
  260. "rejected": "Rejected",
  261. "expired": "Expired",
  262. "converted": "Converted",
  263. "changes_requested": "Changes Requested"
  264. }
  265. }