reminders.json 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. {
  2. "error": "Failed to load reminders",
  3. "showing": "Showing {count} of {total}",
  4. "deleted": "Reminder deleted",
  5. "deleteError": "Failed to delete reminder",
  6. "vehicle": "Vehicle",
  7. "selectVehicle": "Select vehicle...",
  8. "searchVehicle": "Search vehicles...",
  9. "noVehicle": "No vehicles found.",
  10. "pickDate": "Pick a date",
  11. "openMenu": "Open menu",
  12. "relatesTo": "Relates to (optional)",
  13. "selectCustomer": "Customer (optional)",
  14. "noneOption": "None",
  15. "workshopHint": "No customer or vehicle selected: this is a general workshop reminder.",
  16. "workshopReminder": "Workshop",
  17. "import": {
  18. "button": "Import",
  19. "title": "Import reminders",
  20. "description": "Upload a CSV or Excel file with one reminder per row. You will see every row before anything is saved.",
  21. "drop": "Drop a CSV or Excel file here",
  22. "formats": "CSV or Excel (.xlsx), up to {rows} rows",
  23. "browse": "Choose file",
  24. "reading": "Reading the file...",
  25. "templateHint": "Start from the template to get the columns right.",
  26. "templateXlsx": "Excel template",
  27. "templateCsv": "CSV template",
  28. "columnsTitle": "Columns in the file",
  29. "required": {
  30. "yes": "Required",
  31. "dateOrMileage": "Date or mileage",
  32. "no": "Optional"
  33. },
  34. "columns": {
  35. "title": "What needs doing, for example \"Oil change\".",
  36. "dueDate": "The day it is due. 2026-10-15 always works, and formats like 15.10.2026 or 10/15/2026 are detected.",
  37. "dueTime": "Time of day, for example 14:30, in the workshop's time zone. Leave it empty for any time that day.",
  38. "dueMileage": "The odometer reading it is due at, in {unit}.",
  39. "description": "Any extra detail.",
  40. "licensePlate": "Links the reminder to a vehicle. Spaces and dashes are ignored.",
  41. "vin": "Links the reminder to a vehicle, useful when there is no plate.",
  42. "customer": "Email, customer number or exact name. Used only when the row has no vehicle.",
  43. "emailNotification": "Yes or no. Sends an email when the reminder is due. In-app notifications are always on."
  44. },
  45. "targetRule": "A row with no vehicle and no customer becomes a workshop reminder. Rows that match an open reminder are skipped, so uploading the same file twice adds nothing.",
  46. "summary": {
  47. "ready": "{count} ready",
  48. "duplicates": "{count} already exist",
  49. "errors": "{count} need fixing"
  50. },
  51. "ignoredColumns": "Columns not read: {columns}",
  52. "rowLabel": "Row {line}",
  53. "untitled": "(no title)",
  54. "issues": {
  55. "missingTitle": "The title is empty.",
  56. "missingDue": "Needs a due date or a due mileage.",
  57. "badDate": "Could not read the date \"{value}\".",
  58. "badTime": "Could not read the time \"{value}\".",
  59. "timeWithoutDate": "A time needs a due date.",
  60. "badMileage": "Could not read the mileage \"{value}\".",
  61. "badEmailNotification": "Email notification should be yes or no, not \"{value}\".",
  62. "vehicleNotFound": "No vehicle matches \"{value}\".",
  63. "vehicleAmbiguous": "More than one vehicle matches \"{value}\".",
  64. "vehicleMismatch": "The plate and the VIN belong to different vehicles ({value}).",
  65. "customerNotFound": "No customer matches \"{value}\".",
  66. "customerAmbiguous": "More than one customer matches \"{value}\". Use their email or customer number.",
  67. "duplicateExisting": "Skipped: this reminder already exists.",
  68. "duplicateInFile": "Skipped: repeats an earlier row in the file."
  69. },
  70. "fileErrors": {
  71. "demo": "Importing is turned off on the demo.",
  72. "noFile": "Choose a file to upload.",
  73. "tooLarge": "The file is larger than 900 KB. Split it and import it in parts.",
  74. "unsupported": "Upload a .csv or .xlsx file.",
  75. "legacyXls": "Old Excel .xls files can't be read. Save the file as .xlsx or .csv and try again.",
  76. "empty": "The file has no rows.",
  77. "unreadable": "The file could not be read.",
  78. "tooManyRows": "The file has more than {limit} rows. Split it and import it in parts.",
  79. "noTitleColumn": "The file has no Title column. Download the template to see the headers it expects."
  80. },
  81. "chooseAnother": "Choose another file",
  82. "downloadSkipped": "Download skipped rows",
  83. "problemColumn": "Problem",
  84. "submit": "Import {count, plural, one {# reminder} other {# reminders}}",
  85. "nothingToImport": "Nothing to import",
  86. "done": "{count, plural, one {# reminder imported} other {# reminders imported}}",
  87. "doneSkipped": "{count, plural, one {# row skipped} other {# rows skipped}}",
  88. "close": "Close"
  89. }
  90. }