inventory.json 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. {
  2. "searchPlaceholder": "Search parts...",
  3. "categoryPlaceholder": "Category",
  4. "allCategories": "All Categories",
  5. "applyMarkup": "Apply Markup",
  6. "addPart": "Add Part",
  7. "table": {
  8. "partNumber": "Part #",
  9. "name": "Name",
  10. "category": "Category",
  11. "inStock": "In Stock",
  12. "unitCost": "Unit Cost",
  13. "sellPrice": "Sell Price",
  14. "supplier": "Supplier",
  15. "location": "Location",
  16. "low": "Low",
  17. "barcode": "Barcode"
  18. },
  19. "empty": {
  20. "noMatch": "No parts match your search.",
  21. "noParts": "No parts in inventory yet.",
  22. "noLowStock": "Nothing is below its reorder point right now.",
  23. "noReorderPoints": "No reorder points are set, so no part can count as low.",
  24. "configureReorderPoints": "Set a default reorder point"
  25. },
  26. "actions": {
  27. "edit": "Edit",
  28. "delete": "Delete",
  29. "details": "Details & history"
  30. },
  31. "deletePart": {
  32. "title": "Delete Part",
  33. "description": "Delete \"{name}\" from inventory? This cannot be undone.",
  34. "confirm": "Delete"
  35. },
  36. "bulkDelete": {
  37. "title": "Delete Selected Parts",
  38. "description": "Delete {count, plural, one {# part} other {# parts}} from inventory? This cannot be undone.",
  39. "confirm": "Delete",
  40. "selected": "{count, plural, one {# part} other {# parts}} selected",
  41. "clearSelection": "Clear",
  42. "deleteSelected": "Delete ({count})",
  43. "success": "Deleted {count, plural, one {# part} other {# parts}}"
  44. },
  45. "markup": {
  46. "title": "Apply Markup to All Parts",
  47. "multiplierLabel": "Markup Multiplier",
  48. "description": "This will set sell price = cost x {multiplier} for all {count} parts.",
  49. "percentage": "({percent}% markup)",
  50. "cancel": "Cancel",
  51. "apply": "Apply",
  52. "overrideExisting": "Override existing sell prices",
  53. "overrideExistingHint": "All parts will be updated, including those with an existing sell price.",
  54. "skipExistingHint": "Only parts without a sell price will be updated."
  55. },
  56. "errors": {
  57. "multiplierPositive": "Multiplier must be greater than 0",
  58. "deleteFailed": "Failed to delete part",
  59. "applyFailed": "Failed to apply markup",
  60. "saveFailed": "Failed to save part",
  61. "error": "Error"
  62. },
  63. "scanBarcode": "Scan",
  64. "barcodeScan": {
  65. "title": "Scanned Part",
  66. "notFound": "No part found for barcode \"{barcode}\"",
  67. "createNew": "Create New Part",
  68. "addStock": "Add to Stock",
  69. "editPart": "Edit Part",
  70. "currentStock": "Current stock: {quantity}",
  71. "addedStock": "Added {amount} to stock",
  72. "customAmount": "Qty...",
  73. "scanParts": "Scan Parts"
  74. },
  75. "form": {
  76. "editPart": "Edit Part",
  77. "addNewPart": "Add New Part",
  78. "supplierLink": "Supplier Link",
  79. "supplierLinkPlaceholder": "https://supplier.com/product/...",
  80. "fetch": "Fetch",
  81. "fetchFailed": "Fetch Failed",
  82. "fetchError": "Could not fetch metadata from URL",
  83. "image": "Image",
  84. "dropOrClick": "Drop image or click",
  85. "replace": "Replace",
  86. "upload": "Upload",
  87. "camera": "Camera",
  88. "aiAnalyze": "AI Auto-fill",
  89. "aiAnalyzing": "Analyzing image...",
  90. "aiAnalyzeSuccess": "Fields auto-filled from image",
  91. "aiAnalyzeFailed": "Could not analyze image",
  92. "imageUploading": "Uploading image...",
  93. "imageUploaded": "Image uploaded",
  94. "imageUploadFailed": "Could not upload image",
  95. "imageTypeError": "Only JPEG, PNG, WebP, and AVIF images are allowed",
  96. "imageSizeError": "Image must be under 5MB",
  97. "partNumber": "Part Number",
  98. "partNumberPlaceholder": "BRK-001",
  99. "barcode": "Barcode",
  100. "barcodePlaceholder": "123456789012",
  101. "nameLabel": "Name *",
  102. "namePlaceholder": "Brake Pad Set",
  103. "category": "Category",
  104. "categoryPlaceholder": "Select category...",
  105. "categorySearch": "Search or create...",
  106. "categoryCreate": "Create \"{name}\"",
  107. "categoryNone": "No categories yet",
  108. "location": "Location",
  109. "locationPlaceholder": "Shelf A-3",
  110. "quantity": "Quantity",
  111. "minQty": "Min Qty",
  112. "unit": "Unit",
  113. "unitPlaceholder": "pcs, l, kg...",
  114. "unitSuggestions": "pcs,set",
  115. "unitSearch": "Search or type...",
  116. "unitCreate": "Use \"{name}\"",
  117. "unitGroupCount": "Count",
  118. "unitGroupMetric": "Metric",
  119. "unitGroupImperial": "Imperial",
  120. "unitCost": "Unit Cost",
  121. "sellPrice": "Sell Price",
  122. "supplier": "Supplier",
  123. "supplierPlaceholder": "AutoParts Inc.",
  124. "supplierPhone": "Supplier Phone",
  125. "supplierPhonePlaceholder": "(555) 123-4567",
  126. "supplierEmail": "Supplier Email",
  127. "supplierEmailPlaceholder": "orders@autoparts.com",
  128. "description": "Description",
  129. "descriptionPlaceholder": "Part description...",
  130. "cancel": "Cancel",
  131. "saveChanges": "Save Changes",
  132. "addPart": "Add Part"
  133. },
  134. "openMenu": "Open menu",
  135. "history": {
  136. "title": "Stock history",
  137. "description": "Every recorded change to {name}, newest first.",
  138. "empty": "No stock movements recorded yet.",
  139. "when": "Date",
  140. "change": "Change",
  141. "balance": "Balance",
  142. "usedOn": "Used on",
  143. "by": "By",
  144. "reasons": {
  145. "service_record": "Work order",
  146. "service_record_deleted": "Work order deleted",
  147. "quote_conversion": "Quote converted",
  148. "manual_adjustment": "Manual adjustment",
  149. "bulk_markup": "Bulk markup"
  150. },
  151. "backToInventory": "Inventory",
  152. "reason": "Reason",
  153. "allReasons": "All reasons"
  154. },
  155. "suggestions": {
  156. "title": "From your inventory",
  157. "inStock": "{quantity} in stock",
  158. "outOfStock": "Out of stock",
  159. "onBackorder": "On backorder ({count})"
  160. }
  161. }