| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571 |
- {
- "list": {
- "active": "Active",
- "archived": "Archived",
- "searchPlaceholder": "Search by plate, make, model, VIN...",
- "addVehicle": "Add Vehicle",
- "importVehicles": "Import",
- "emptySearch": "No vehicles match your search.",
- "emptyArchived": "No archived vehicles.",
- "empty": "No vehicles yet.",
- "table": {
- "plate": "Plate",
- "vehicle": "Vehicle",
- "customer": "Customer",
- "mileage": "Mileage",
- "mileageMarine": "Engine Hours",
- "services": "Services"
- },
- "edit": "Edit",
- "archive": "Archive",
- "unarchive": "Unarchive",
- "delete": "Delete",
- "deleteTitle": "Delete Vehicle",
- "deleteDescription": "Delete {name}? This will remove all associated service records and notes.",
- "unarchiveTitle": "Unarchive Vehicle",
- "unarchiveDescription": "Restore {name} to the active vehicles list?",
- "vehicleUnarchived": "Vehicle unarchived",
- "unarchiveError": "Failed to unarchive vehicle",
- "deleteError": "Failed to delete vehicle",
- "error": "Failed to load vehicles",
- "viewTable": "Table view",
- "viewGrid": "Grid view",
- "viewLargeGrid": "Large grid view",
- "openMenu": "Open menu",
- "inspectionOverdue": "Inspection overdue",
- "inspectionDue30": "Due in 30 days",
- "inspectionDue90": "Due in 90 days",
- "inspectionDue": "Inspection {date}",
- "remindCustomers": "Remind these customers"
- },
- "detail": {
- "vehicleArchived": "This vehicle is archived",
- "backToVehicles": "Back to vehicles",
- "newWorkOrder": "New Work Order",
- "editVehicle": "Edit Vehicle",
- "unarchive": "Unarchive",
- "archive": "Archive",
- "delete": "Delete",
- "notFound": "Vehicle not found",
- "predictedKm": "Predicted Km",
- "predictedMileage": "Predicted Mileage",
- "predictedHours": "Predicted Hours",
- "predictedTooltip": "Estimated current mileage based on service history trends. The percentage indicates prediction confidence.",
- "dismissed": "Dismissed",
- "undo": "Undo",
- "serviceOverdue": "Service Overdue",
- "serviceSoon": "Service Soon",
- "services": "services",
- "purchased": "Purchased {date}",
- "tabs": {
- "services": "Services",
- "quotes": "Quotes",
- "inspections": "Inspections",
- "notes": "Notes",
- "reminders": "Reminders",
- "findings": "Observations"
- },
- "noteDeleted": "Note deleted",
- "noteDeleteError": "Failed to delete",
- "reminderDeleted": "Reminder deleted",
- "reminderDeleteError": "Failed to delete",
- "vehicleUnarchived": "Vehicle unarchived",
- "unarchiveError": "Failed to unarchive",
- "vehicleDeleted": "Vehicle deleted",
- "vehicleDeleteError": "Failed to delete vehicle",
- "deleteTitle": "Delete vehicle?",
- "deleteDescription": "This will permanently delete {name} and all associated service records, notes, and reminders. This action cannot be undone.",
- "edit": "Edit",
- "aiSummary": "AI Summary",
- "aiSummaryTitle": "Service History Summary",
- "aiSummaryGenerate": "Generate",
- "aiSummaryRegenerate": "Regenerate",
- "aiSummaryGenerated": "AI summary generated",
- "aiSummaryUpdated": "Updated {date}",
- "aiSummaryEmpty": "Click Generate to create an AI-powered summary of this vehicle's service history.",
- "aiSummaryError": "Failed to generate summary",
- "summaryMajorWork": "Major Work",
- "summaryRecurringIssues": "Recurring Issues",
- "summaryUpcoming": "Upcoming Maintenance",
- "commonIssues": "Common Issues",
- "commonIssuesEmpty": "Click Generate to look up common critical issues for this vehicle.",
- "commonIssuesTitle": "Common Critical Issues — {make} {model}",
- "severityVeryCommon": "Very common — reported by a large number of owners",
- "severityCommon": "Common — frequently reported issue",
- "severityModerate": "Moderate — reported by some owners",
- "severityUncommon": "Uncommon — reported by few owners",
- "severityRare": "Rare — isolated reports but critical when it occurs",
- "openMenu": "Open menu",
- "dismissMaintenance": "Dismiss",
- "inspectionDue": "Inspection due {date}",
- "inspectionCheckedAt": "Checked against the registry {date}",
- "notRegistered": "Not registered",
- "soldReported": "Customer reported sold {date}"
- },
- "quotes": {
- "newQuote": "New Quote",
- "empty": "No quotes yet",
- "columnNumber": "Quote #",
- "columnTitle": "Title",
- "columnStatus": "Status",
- "columnDate": "Date",
- "columnTotal": "Total"
- },
- "inspections": {
- "newInspection": "New Inspection",
- "empty": "No inspections yet",
- "template": "Template",
- "progress": "Progress",
- "status": "Status",
- "date": "Date",
- "completed": "Completed",
- "inProgress": "In Progress"
- },
- "reminders": {
- "active": "Active",
- "completed": "Completed",
- "all": "All",
- "addReminder": "Add Reminder",
- "emptyActive": "No active reminders",
- "emptyCompleted": "No completed reminders",
- "empty": "No reminders yet",
- "overdue": "Overdue",
- "dueSoon": "Due Soon",
- "due": "Due {date}",
- "dueAt": "Due at {mileage} {unit}",
- "editTitle": "Edit Reminder",
- "addTitle": "Add Reminder",
- "titleLabel": "Title *",
- "titlePlaceholder": "e.g. Oil Change",
- "descriptionLabel": "Description",
- "descriptionPlaceholder": "Optional details...",
- "dueDateLabel": "Due Date",
- "dueTimeLabel": "Time (optional)",
- "dueMileageLabel": "Due Mileage",
- "dueMileagePlaceholder": "e.g. 50000",
- "reminderUpdated": "Reminder updated",
- "reminderCreated": "Reminder created",
- "saveError": "Failed to save reminder",
- "notifyLabel": "Notify me when due",
- "notifyInApp": "In-app notification",
- "notifyEmail": "Email"
- },
- "services": {
- "searchPlaceholder": "Search records...",
- "allTypes": "All types",
- "maintenance": "Maintenance",
- "repair": "Repair",
- "upgrade": "Upgrade",
- "inspection": "Inspection",
- "newWorkOrder": "New Work Order",
- "exportServiceHistory": "Export History",
- "table": {
- "date": "Date",
- "title": "Title",
- "type": "Type",
- "status": "Status",
- "mileage": "Mileage",
- "mileageMarine": "Engine Hours",
- "technician": "Technician",
- "files": "Files",
- "total": "Total",
- "warranty": "Warranty"
- },
- "warranty": {
- "status": {
- "active": "Active",
- "expiring": "Expiring",
- "expired": "Expired",
- "none": "N/A"
- }
- },
- "emptyFiltered": "No service records match your filters.",
- "empty": "No service records yet.",
- "showing": "Showing {start}-{end} of {total}",
- "perPage": "per page",
- "page": "Page {page} of {totalPages}",
- "firstPage": "First page",
- "previousPage": "Previous page",
- "nextPage": "Next page",
- "lastPage": "Last page"
- },
- "notes": {
- "addNote": "Add Note",
- "table": {
- "title": "Title",
- "content": "Content",
- "date": "Date"
- },
- "empty": "No notes yet.",
- "pin": "Pin",
- "unpin": "Unpin",
- "delete": "Delete",
- "showing": "Showing {start}-{end} of {total}",
- "perPage": "per page",
- "page": "Page {page} of {totalPages}",
- "editTitle": "Edit Note",
- "addTitle": "Add Note",
- "titleLabel": "Title *",
- "titlePlaceholder": "Note title",
- "contentLabel": "Content *",
- "contentPlaceholder": "Write your note...",
- "noteUpdated": "Note updated",
- "noteCreated": "Note created",
- "titleRequired": "Title and content are required",
- "saveError": "Failed to save note",
- "openMenu": "Open menu",
- "firstPage": "First page",
- "previousPage": "Previous page",
- "nextPage": "Next page",
- "lastPage": "Last page"
- },
- "findings": {
- "sectionTitle": "Observations",
- "addFinding": "Add Observation",
- "editTitle": "Edit Observation",
- "addTitle": "Add Observation",
- "empty": "No observations yet.",
- "descriptionLabel": "Description *",
- "descriptionPlaceholder": "e.g. Brake pads front at minimum",
- "severityLabel": "Severity",
- "notesLabel": "Additional Notes",
- "notesPlaceholder": "Optional details...",
- "table": {
- "severity": "Severity",
- "description": "Description",
- "status": "Status",
- "date": "Date"
- },
- "severity": {
- "urgent": "High",
- "needs_work": "Medium",
- "monitor": "Low"
- },
- "status": {
- "open": "Open",
- "quoted": "Quoted",
- "resolved": "Resolved"
- },
- "edit": "Edit",
- "resolve": "Mark Resolved",
- "discoveredIn": "Discovered in",
- "resolvedIn": "Resolved in",
- "createWorkOrder": "Create Work Order ({count})",
- "vehicleHasObservations": "This vehicle has {count} open observations",
- "addToWorkOrder": "Add to Work Order ({count})",
- "dismiss": "Dismiss",
- "observationsAdded": "{count} observations added to work order",
- "delete": "Delete",
- "findingCreated": "Observation added",
- "findingUpdated": "Observation updated",
- "findingResolved": "Observation resolved",
- "findingDeleted": "Observation deleted",
- "saveError": "Failed to save observation",
- "deleteError": "Failed to delete observation",
- "resolveError": "Failed to resolve observation",
- "showing": "Showing {start}-{end} of {total}",
- "perPage": "per page",
- "page": "Page {page} of {totalPages}",
- "firstPage": "First page",
- "previousPage": "Previous page",
- "nextPage": "Next page",
- "lastPage": "Last page",
- "openMenu": "Open menu",
- "concernLabel": "Answers which concern?",
- "concernNone": "Not something the customer asked about"
- },
- "observationsPage": {
- "searchPlaceholder": "Search description, notes, or vehicle...",
- "allStatuses": "All Statuses",
- "allSeverities": "All Severities",
- "empty": "No observations found.",
- "columns": {
- "severity": "Severity",
- "status": "Status",
- "vehicle": "Vehicle",
- "description": "Description",
- "notes": "Notes",
- "created": "Created"
- }
- },
- "form": {
- "editTitle": "Edit Vehicle",
- "addTitle": "Add New Vehicle",
- "photo": "Photo",
- "clickToUpload": "Click to upload a photo",
- "imageFormats": "JPEG, PNG, WebP up to 5MB",
- "imageTooLarge": "Image too large",
- "maxFileSize": "Max file size is 5MB",
- "uploadingImage": "Uploading image...",
- "uploadFailed": "Upload failed",
- "imageUploaded": "Image uploaded",
- "customer": "Customer",
- "searchCustomers": "Search customers...",
- "noCustomerFound": "No customer found.",
- "noCustomer": "No customer",
- "addCustomer": "Add Customer",
- "make": "Make *",
- "model": "Model *",
- "year": "Year *",
- "mileage": "Mileage",
- "vin": "VIN",
- "licensePlate": "License Plate",
- "color": "Color",
- "fuelType": "Fuel Type",
- "gasoline": "Gasoline",
- "diesel": "Diesel",
- "electric": "Electric",
- "hybrid": "Hybrid",
- "other": "Other",
- "transmission": "Transmission",
- "automatic": "Automatic",
- "manual": "Manual",
- "cvt": "CVT",
- "engineSize": "Engine Size",
- "engineCode": "Engine Code",
- "makeMarine": "Manufacturer *",
- "mileageMarine": "Engine Hours",
- "transmissionMarine": "Engine Type",
- "outboard": "Outboard",
- "inboard": "Inboard",
- "engineSizeMarine": "Engine",
- "twoStroke": "Two-Stroke",
- "vinMarine": "HIN",
- "licensePlateMarine": "Registration Number",
- "vehicleUpdated": "Vehicle updated",
- "vehicleAdded": "Vehicle added",
- "saveError": "Failed to save vehicle",
- "scanDocument": "Scan registration document",
- "scanDocumentHint": "Photograph the vehicle papers and the fields fill in automatically.",
- "scanningDocument": "Reading document...",
- "scanSuccess": "Fields filled from the document",
- "scanFailed": "Could not read the document",
- "ownerMatchTitle": "Assign this vehicle",
- "ownerMatchDescription": "The document lists {name}. Use one of these customers or create a new one.",
- "ownerMatchScore": "{percent}% match",
- "ownerMatchCreateNew": "Create new customer",
- "ownerMatchChoose": "Choose customer",
- "scanUnavailable": "Enable AI in settings",
- "sectionAssignment": "Photo and owner",
- "sectionDetails": "Details",
- "addScannedOwner": "Add customer {name}",
- "ownerSaveFailed": "Could not create the customer",
- "lookupPlate": "Look up plate",
- "lookingUp": "Asking the vehicle registry...",
- "lookupSuccess": "Fields filled from {source}",
- "lookupNotFound": "The registry has no vehicle with that plate",
- "lookupFailed": "Could not look up the plate",
- "lookupUnavailable": "Connect a vehicle registry under Settings → Integrations",
- "lookupEnterPlate": "Type a plate first",
- "lookupInspectionDue": "{source}: next periodic inspection due {date}",
- "lookupSource": "Filled from {source}",
- "inspectionDue": "Next periodic inspection",
- "inspectionDueHint": "Type the date if no registry supplies it. Reminders and the dashboard use it.",
- "inspectionDueFromRegistry": "Filled from the vehicle registry. Change it here to override until the next sync.",
- "lookupEnterPlateOrVin": "Type a plate or VIN first"
- },
- "archiveDialog": {
- "title": "Archive Vehicle",
- "description": "Archive <span>{name}</span>? It will be hidden from the main list but all service history will be preserved.",
- "reasonLabel": "Reason (optional)",
- "reasonPlaceholder": "e.g. Sold, totaled, decommissioned...",
- "archived": "{name} archived",
- "archiveError": "Failed to archive vehicle"
- },
- "serviceRecords": {
- "firstPage": "First page",
- "previousPage": "Previous page",
- "nextPage": "Next page",
- "lastPage": "Last page"
- },
- "inspectionReminders": {
- "title": "Inspection reminders",
- "description": "Tell customers whose periodic inspection is coming up, with a link to book a time. Nothing is sent until you confirm the list.",
- "window": "Deadline within",
- "window30": "Next 30 days",
- "window60": "Next 60 days",
- "window90": "Next 90 days",
- "channel": "Send by",
- "channels": {
- "sms": "SMS",
- "whatsapp": "WhatsApp",
- "email": "Email",
- "telegram": "Telegram"
- },
- "willReceive": "will receive a message",
- "excludedCount": "{count} excluded",
- "nobodyToRemind": "Nobody to remind in this window. Every vehicle with a deadline has either been reminded, booked, or has no way to be reached.",
- "overdueOn": "Overdue since {date}",
- "excludedTitle": "Not included",
- "excludedDescription": "Each of these has a reason. Fix the reason on the customer or vehicle and they will appear in the list.",
- "reasons": {
- "noCustomer": "No customer",
- "optedOut": "Opted out of reminders",
- "noRecipient": "No contact for this channel",
- "alreadyReminded": "Already reminded for this deadline",
- "cooldown": "Messaged recently",
- "soldReported": "Customer reported sold",
- "notRegistered": "Not registered",
- "booked": "Already booked"
- },
- "message": "Message",
- "subject": "Subject",
- "body": "Text",
- "placeholders": "Placeholders: {customerName} {vehicle} {plate} {dueDate} {workshopName} {bookingLink} {phone}",
- "unknownPlaceholders": "Unknown placeholders: {list}",
- "sample": "Example for the first recipient",
- "segments": "{count, plural, one {# SMS segment} other {# SMS segments}}",
- "bookingModeDirectNote": "The link books a {minutes}-minute slot straight onto the work board.",
- "bookingModeRequestNote": "The link sends a request with the chosen time for the office to confirm.",
- "linkValidNote": "Links stay open at least {days} days and past the deadline.",
- "sendTest": "Send a test to me",
- "testSent": "Test queued to {to}",
- "testFailed": "Could not send the test",
- "sendButton": "Send to {count}",
- "confirmTitle": "Send the reminders?",
- "confirmDescription": "{count} messages go out by {channel}, one per vehicle, once. A vehicle is never reminded twice for the same deadline.",
- "confirmInput": "Type {count} to confirm",
- "cancel": "Cancel",
- "sendNow": "Send",
- "created": "{count} reminders queued",
- "sendFailed": "Could not create the campaign",
- "loadFailed": "Could not load the list",
- "campaign": {
- "title": "Campaign from {date}",
- "summary": "{channel}, deadlines within {window} days",
- "recipients": "Recipients",
- "sent": "Sent",
- "failed": "Failed",
- "booked": "Booked",
- "retryFailedButton": "Retry {count} failed",
- "retried": "{count} put back in the queue",
- "retryFailed": "Could not retry",
- "rows": "Recipients",
- "status": {
- "scheduled": "Queued",
- "sent": "Sent",
- "failed": "Failed",
- "cancelled": "Cancelled"
- },
- "bookedOn": "Booked {date}",
- "requestedOn": "Requested {date}",
- "cancelledOn": "Cancelled {date}",
- "none": "No reminder campaigns yet.",
- "start": "Send inspection reminders",
- "recipientsCount": "{count} recipients",
- "failedCount": "{count} failed",
- "bookedCount": "{count} booked"
- },
- "defaults": {
- "smsBody": "Hi {customerName}, the periodic inspection for your {vehicle} ({plate}) is due {dueDate}. Book a time: {bookingLink} or call us on {phone}. {workshopName}",
- "emailSubject": "Inspection due {dueDate} for {vehicle}",
- "emailBody": "Hi {customerName},\n\nThe periodic inspection for your {vehicle} ({plate}) is due on {dueDate}.\n\nBook a time that suits you here: {bookingLink}\n\nOr call us on {phone}.\n\nKind regards,\n{workshopName}"
- },
- "refresh": "Refresh list",
- "timeZoneRequired": "The workshop timezone is on automatic, so booking times would follow whichever browser saved settings last (currently {zone}). Reminders cannot be sent until a zone is chosen.",
- "timeZoneRequiredLink": "Choose it under Localization"
- },
- "plateLookup": {
- "open": "Plate lookup",
- "shortcut": "Ctrl+Shift+L",
- "title": "Plate lookup",
- "description": "Type a registration number to see what your workshop and the vehicle registry know about it",
- "placeholder": "Type a plate",
- "search": "Look up",
- "hintEnter": "Enter to look up",
- "hintClose": "Esc to close",
- "recent": "Recent",
- "clearRecent": "Clear",
- "looking": "Asking {source}…",
- "lookingWorkshop": "Checking your workshop…",
- "invalid": "That does not look like a plate",
- "inWorkshop": "In your workshop",
- "inWorkshopArchived": "In your workshop, archived",
- "notInWorkshop": "Not in your workshop yet",
- "notInWorkshopHint": "The registry knows this vehicle. Add it and the fields below come along.",
- "notInWorkshopNoRegistry": "Add it by hand, or check the plate.",
- "openVehicle": "Open vehicle",
- "addVehicle": "Add vehicle",
- "noOwner": "No customer linked",
- "mileage": "{km} km",
- "services": "{count, plural, =0 {No service records} one {# service record} other {# service records}}",
- "lastService": "Last service {date}",
- "registryNotFound": "{source} has no vehicle with that plate",
- "registryFailed": "{source} could not be asked",
- "registryFailedGeneric": "The registry could not be asked",
- "fromSource": "From {source}",
- "registered": "Registered",
- "notRegistered": "Not registered",
- "vin": "VIN",
- "copyVin": "Copy VIN",
- "copied": "Copied",
- "fuel": "Fuel",
- "transmission": "Gearbox",
- "engine": "Engine",
- "engineCode": "Engine code",
- "color": "Colour",
- "vehicleClass": "Class",
- "firstRegistered": "First registered",
- "inspectionDue": "Inspection due",
- "lastInspected": "Last inspected",
- "weights": "Weights",
- "weightsValue": "{kerb} kg kerb, {gross} kg max",
- "kerbOnly": "{kerb} kg kerb",
- "grossOnly": "{gross} kg max",
- "tyres": "Tyres",
- "axle": "Axle {n}",
- "tyreSize": "Tyre",
- "rimSize": "Rim",
- "loadSpeed": "Load / speed",
- "overdue": "Overdue",
- "dueSoon": "Due soon",
- "emptyTitle": "Look up any plate",
- "emptyBody": "See the vehicle, who owns it here, and what {source} has on file. Not yours yet? Add it in one step.",
- "registryWord": "the registry"
- },
- "safety": {
- "title": "Safety and known issues",
- "summaryRecalls": "{count, plural, one {# recall} other {# recalls}}",
- "summaryComplaints": "{count, plural, one {# owner complaint} other {# owner complaints}}",
- "expand": "Show details",
- "collapse": "Hide details",
- "loading": "Asking the safety authority...",
- "from": "From {source} for {model}, updated {date}",
- "stale": "{source} could not be reached; showing the report from {date}",
- "notKnown": "{source} has no record of a {model}.",
- "notKnownHint": "Check the make, model and year, or add the VIN so the model can be matched exactly.",
- "recalls": "Recalls",
- "recallsNone": "No recall campaigns",
- "complaints": "Owner complaints",
- "complaintsNone": "None filed",
- "crashes": "{count, plural, one {# crash} other {# crashes}}",
- "fires": "{count, plural, one {# fire} other {# fires}}",
- "rating": "Crash rating",
- "notRated": "Not rated",
- "stars": "{count} of 5 stars",
- "frontal": "Frontal",
- "side": "Side",
- "rollover": "Rollover",
- "ownersReport": "What owners report",
- "ofComplaints": "of {total} complaints filed",
- "crash": "Crash",
- "fire": "Fire",
- "noExamples": "Complaint texts are not in this report yet. Refresh from the source to fetch them.",
- "readAll": "Read all {count} on {source}",
- "showRecalls": "{count, plural, one {Show # recall} other {Show # recalls}}",
- "hideRecalls": "Hide recalls",
- "more": "More",
- "less": "Less",
- "consequence": "Risk",
- "remedy": "Remedy",
- "parkIt": "Do not drive",
- "parkOutside": "Park outdoors",
- "addFinding": "Add to observations",
- "findingAdded": "In observations",
- "findingDescription": "Recall {campaign}: {component}",
- "refresh": "Refresh from the source",
- "refreshed": "Safety data refreshed",
- "openSite": "Open on {source}",
- "errorLoad": "Could not load safety data"
- }
- }
|