{ "common": { "save": "Save", "saving": "Saving…", "saved": "Saved ✓", "cancel": "Cancel", "remove": "Remove", "retry": "Retry", "required": "Required", "confirm": "Confirm", "empty": "—", "saveChanges": "Save changes", "loading": "Loading…", "edit": "Edit", "open": "Open", "delete": "Delete", "done": "Done", "undo": "Undo", "download": "Download", "yes": "Yes", "no": "No" }, "nav": { "garage": "Garage", "charging": "Charging", "settings": "Settings", "users": "Users" }, "login": { "tagline": "Your car, on track.", "email": "Email", "password": "Password", "showPassword": "Show password", "hidePassword": "Hide password", "submit": "Sign in", "submitting": "Signing in…", "or": "or", "signInWithFace": "Sign in with face recognition", "signInWithFingerprint": "Sign in with fingerprint", "signInWithBiometrics": "Sign in with biometrics", "enrollTitle": "Enable biometric sign-in?", "enrollBody": "Next time you can sign in with {method} instead of typing your password.", "enrollNotNow": "Not now", "enrollEnable": "Enable", "methodFace": "face recognition", "methodFingerprint": "your fingerprint", "methodBiometrics": "biometrics", "bioReasonSignInAs": "Sign in as {email}", "bioReasonSignIn": "Sign in to DriverVault", "savedInvalid": "Saved sign-in is no longer valid. Please sign in with your password.", "serverSettings": "Server settings", "apiServerUrl": "API server URL", "leaveBlank": "Leave blank to use the default.", "reset": "Reset", "savedNote": "Saved ✓", "resetNote": "Reset ✓" }, "servers": { "title": "Servers", "home": "Default server", "switchHint": "Switch which server the app reads from", "add": "Add server", "addTitle": "Add a server", "name": "Name", "namePlaceholder": "Home garage", "url": "Address", "urlHint": "The API Server's public address, e.g. https://garage.example.com — /api is added for you if you leave the path off.", "urlHomeHint": "Leave blank to use the address this app ships with.", "connect": "Connect", "connecting": "Connecting…", "connected": "Connected", "notConnected": "Not connected — sign in to switch", "signOut": "Sign out of this server", "removeConfirm": "Remove {name}? The session held for it is forgotten too.", "unknown": "Unknown server" }, "lock": { "title": "DriverVault is locked", "reason": "Unlock DriverVault", "unlock": "Unlock", "unlocking": "Unlocking…", "usePassword": "Use password instead" }, "dashboard": { "eyebrow": "YOUR CARS", "title": "Garage", "addCar": "Add car", "lightMode": "Light mode", "darkMode": "Dark mode", "logOut": "Log out", "empty": "No cars yet.", "shared": "Shared", "sharedReadOnly": "Shared · read-only", "serviceLife": "SERVICE LIFE", "lastService": "Last service", "currentOdometer": "Current odometer", "nextDue": "Next due", "nextDueKm": "Next due km", "serviceRecords": { "one": "{n} service record", "other": "{n} service records" } }, "carApp": { "signIn": "Sign in on your phone to see your garage here.", "expired": "The session has ended. Sign in again on your phone.", "unreachable": "Could not reach the server.", "refresh": "Refresh" }, "charging": { "eyebrow": "CHARGING & MAP", "title": "Nearby chargers", "tabs": { "public": "Public chargers", "home": "Home chargers" }, "liveMap": "Live map", "youAreHere": "You are here", "session": { "chargingNow": "Charging now", "rate": "Rate", "added": "Added", "cost": "Cost", "done": "Done", "stop": "Stop charging", "idle": "Not charging", "idleHint": "Plug in at a station to start a session." }, "control": { "title": "Charger control", "connected": "Connected", "disconnected": "Offline", "serialPlaceholder": "Charger serial (e.g. A5191-XXXXXXXX)", "refresh": "Refresh", "status": "Connector", "meter": "Energy", "start": "Start charging", "stop": "Stop charging", "limit": "Current limit", "applyLimit": "Apply limit", "clearLimit": "Clear limit", "reset": "Reset charger", "resetConfirm": "Reboot this charger now? Any active charging session will be interrupted. Re-enter your password to confirm.", "resetPassword": "Your account password", "connectHint": "Enter your charger's serial and refresh. The charger must be connected to DriverVault's OCPP backend (set up in Settings → Integrations)." }, "stations": { "heading": "Nearby", "homeHeading": "Your chargers", "noControlHint": "Turn on Own or Proxy CSMS in Settings → Integrations to control your home charger here.", "count": { "one": "{n} station", "other": "{n} stations" }, "free": "{avail} of {total} free", "full": "Full", "offPeak": "off-peak", "homeCharger": "Home charger" } }, "settings": { "title": "Settings", "tabs": { "personal": "Personal settings", "integrations": "Integrations" }, "integrations": { "title": "Integrations", "subtitle": "Connect external services to your account.", "toyota": "Toyota Connected (MyToyota)", "toyotaDesc": "Sign in with your MyToyota account to pull vehicle data from Toyota Connected Europe. Europe only.", "enable": "Enable for my account", "enableOrg": "Enable for the organization", "unavailable": "This integration is turned off by the administrator.", "orgDisabled": "This integration is turned off for your organization.", "scopeMy": "My settings", "scopeOrg": "Organization", "scopeHint": "Organization settings apply to everyone in your organization who leaves a field blank.", "readOnly": "You manage this integration's shared settings in the API Server panel; here it is read-only.", "email": "MyToyota email", "password": "MyToyota password", "brand": "Brand", "brandToyota": "Toyota", "brandLexus": "Lexus", "inherited": "Set above your level", "inheritedFrom": "Inherited from {source}", "sourceGlobal": "the administrator", "sourceOrg": "your organization", "sourceUser": "you", "passwordKeep": "Leave blank to keep the saved password.", "test": "Test connection", "testing": "Testing…", "save": "Save", "saved": "Saved ✓", "connected": "Connected", "notConnected": "Not connected", "ankerSolix": "Anker Solix (V1 Smart EV Charger)", "ankerSolixDesc": "Sign in with your Anker account to pull EV charger data from the Anker Solix cloud.", "ankerEmail": "Anker account email", "ankerPassword": "Anker account password", "country": "Country", "countryHint": "Two-letter country code of your Anker account (e.g. DE, GB, US).", "controlMode": "Control mode", "controlModeHint": "How DriverVault controls the charger over OCPP.", "controlOff": "Off (monitoring only)", "controlOwn": "Own CSMS (full control)", "controlProxy": "Proxy CSMS (relay + control)", "controlTitle": "Charger control (OCPP)", "controlOwnHint": "The charger connects directly to DriverVault as its Central System. Point the charger's OCPP backend at the endpoint below.", "controlProxyHint": "DriverVault relays to Anker's cloud and can inject commands. Point the charger's OCPP backend at the endpoint below.", "controlProvisionSteps": "In the Anker app (or the charger's OCPP settings), set the OCPP backend URL to the endpoint and the authorization key to the token above.", "chargerSerial": "Charger serial", "controlCheck": "Check status", "controlGenerate": "Generate token", "controlEndpoint": "OCPP endpoint", "controlToken": "Auth token", "controlTokenOnce": "Copy this token now — it's shown only once and can't be retrieved later.", "controlRevoke": "Revoke token", "controlRevokeConfirm": "Revoke this charger's control token? It will disconnect and can't reconnect until you generate a new one.", "controlConnected": "Connected to control backend", "controlDisconnected": "Not connected" }, "account": { "title": "Account", "name": "Name", "nameSaved": "Name saved.", "email": "Email", "verified": "Verified", "notVerified": "Not verified", "sending": "Sending…", "resendVerification": "Resend verification email", "verificationRequested": "Verification email requested.", "changePassword": "Change password", "currentPassword": "Current password", "newPassword": "New password (min 8)", "confirmNewPassword": "Confirm new password", "tooShort": "New password must be at least 8 characters.", "mismatch": "New password and confirmation don't match.", "passwordUpdated": "Password updated.", "updating": "Updating…", "updatePassword": "Update password" }, "appearance": { "title": "Appearance", "theme": "Theme", "themeLight": "Light", "themeDark": "Dark", "themeSystem": "System", "language": "Language", "languageHint": "App text, and the names of months and days.", "languageFallbackHint": "This language isn't translated yet — the app text stays in English.", "region": "Region", "regionHint": "Number and currency layout.", "currency": "Currency", "currencyHint": "Example: {example}. Amounts are display-only — nothing is converted.", "dateFormat": "Date format", "dateHint": "Example: {example}", "fontSize": "Font size", "fontSmall": "Small", "fontMedium": "Medium", "fontLarge": "Large" }, "profile": { "title": "Profile", "working": "Working…", "uploadPhoto": "Upload photo", "remove": "Remove", "bio": "Bio", "bioHint": "A short note visible to other people in your household.", "bioSaved": "Bio saved.", "saveBio": "Save bio" }, "security": { "title": "Security", "checkingDevice": "Checking device…", "biometricSignIn": "Biometric sign-in", "biometricAvailable": "Sign in with {method} instead of your password.", "biometricUnavailable": "No biometrics are enrolled on this device.", "methodFaceOrFingerprint": "face or fingerprint", "methodFace": "face recognition", "methodFingerprint": "fingerprint", "methodBiometrics": "biometrics", "turnedOff": "Biometric sign-in turned off", "enabled": "Biometric sign-in enabled", "couldNotEnable": "Could not enable: {error}", "confirmPassword": "Confirm your password", "password": "Password" }, "org": { "title": "Organization", "titleAll": "Organizations", "subtitleOwn": "The organization you administer", "subtitleNone": "Create one to manage your own team", "subtitleAll": "Tenants users belong to", "nameLabel": "Organization name", "namePlaceholder": "Acme Fleet", "newOrg": "New organization", "create": "Create organization", "createHint": "You'll become its admin and can then add and manage users.", "rename": "Rename", "delete": "Delete", "deleteTitle": "Delete organization?", "empty": "No organizations yet.", "confirmDelete": "Delete the organization “{name}”? This cannot be undone.", "confirmDeleteOwn": "Delete your organization “{name}”? You'll be removed from it and become a regular user. This cannot be undone." }, "privacy": { "title": "Privacy & security", "body": "Two-factor authentication isn't available yet. Sessions are held as server-issued tokens that expire on their own, so signing out ends this device's session only. To lock out every device, change your password above.", "signOut": "Sign out" }, "danger": { "title": "Danger zone", "body": "Deleting your account removes your login and profile. It does not delete your household's shared cars or service history. There's a 3-day cooldown before deletion is final, and you can cancel any time before then.", "deleteAccount": "Delete my account", "typeToConfirm": "Type {email} to confirm", "typeEmailPrompt": "Type your email to confirm.", "requesting": "Requesting…", "requestDeletion": "Request deletion", "requestedOn": "Account deletion requested on {date}. {tail}", "cooldownPassed": "The cooldown has passed. You can now finalize the deletion.", "canStillCancel": "You can still cancel — it becomes permanent after the 3-day cooldown.", "cancelRequest": "Cancel deletion request", "permanentlyDelete": "Permanently delete", "finalizeTitle": "Delete account?", "finalizeBody": "This permanently deletes your account. This cannot be undone.", "delete": "Delete" }, "advanced": { "title": "Advanced", "exportTitle": "Export your data", "exportBody": "Download your profile and all cars, service records, and parts as JSON.", "preparing": "Preparing…", "exportAction": "Export data", "importTitle": "Import your data", "importBody": "Add cars from a previously exported JSON file. This creates new records — it doesn't merge with or overwrite anything existing.", "importing": "Importing…", "importAction": "Import data", "notJson": "That file isn't valid JSON.", "notExport": "That file doesn't look like a DriverVault export (missing a \"cars\" list).", "confirmImport": "Import {count} car(s) from this file? This adds new records — it does not merge with or overwrite existing cars.", "imported": "Imported {cars} car(s), {services} service record(s), {parts} part(s).", "exported": "Saved {file}", "open": "Open", "openFailed": "Could not open the file." } }, "status": { "noData": "No data", "serviceOverdueDays": "Service Overdue {days}d", "dueInDays": "Due in {days}d", "okDays": "OK · {days}d", "okIn": "OK · {parts}", "noKm": "No km", "serviceOverdueKm": "Service Overdue {km} km", "serviceOverdueBy": "Service Overdue {parts}", "inKm": "In {km} km", "kmLeft": "{km} km left", "expiredAgo": "Expired {days}d ago", "expiresToday": "Expires today", "renewInDays": "Renew in {days}d", "validDays": "Valid · {days}d", "noExpiry": "No expiry", "done": "Done", "noTrigger": "No trigger", "overdue": "Overdue", "overdueBy": "Overdue {parts}", "dueIn": "Due in {parts}", "upcoming": "Upcoming", "today": "today", "days": "{days}d", "km": "{km} km", "warrantyExpiredAgo": "Warranty expired {days}d ago", "warrantyEndsIn": "Warranty ends in {days}d", "underWarranty": "Under warranty · {days}d" }, "car": { "allCars": "← All cars", "share": "Share", "shared": "Shared", "sharedReadOnly": "Shared · read-only", "tabs": { "connected": "Connected service", "info": "Information", "services": "Service history", "technical": "Technical check history", "maintenance": "Maintenance", "fuel": "Fuel cost", "charging": "Charging cost", "documents": "Documents", "parts": "Parts catalog", "reminders": "Reminders", "dragHint": "Drag a tab to rearrange this car's tabs." }, "viewPicker": { "open": "What this car's page shows", "title": "What this car shows", "subtitle": "Pick the sections and details this car's page shows. It applies to everyone the car is shared with.", "tabsHeading": "Tabs", "fieldsHeading": "Information fields", "alwaysOn": "{tab} is always available.", "fieldsOrderHint": "Drag the fields on the Information tab to change the order they appear in.", "serviceColumnsHeading": "Service history columns", "columnAlwaysOn": "{column} is always shown.", "servicePartsHeading": "Changed parts", "servicePartsHint": "A part switched off comes off the service form and out of the history. What is already recorded is kept, and comes back with it.", "reorderHint": "Drag a row by its handle to change the order.", "tabsReorder": "Tabs", "fieldsReorder": "Information fields" }, "provider": { "subtitle": "Live data from your {label} account.", "refresh": "Refresh", "refreshing": "Refreshing…", "updated": "Updated {time}", "vehicle": "Vehicle", "readings": "Current readings", "dragHint": "Drag a reading to rearrange them.", "noData": "{label} returned no data for this car.", "raw": "Raw response", "allFields": "All reported fields", "truncated": "Only the first {n} fields are listed — the raw response below has the rest.", "sectionEmpty": "Nothing reported.", "sectionFailed": "Couldn't be fetched", "own": "Only your own account is used, so credentials are never shared with a car.", "odometerSuggest": "{label} reports {km}, ahead of this car's stored reading.", "updateOdometer": "Update odometer", "updatingOdometer": "Updating…", "unlink": "Disconnect", "unlinkConfirm": "Disconnect this car from {label}? Nothing already saved is deleted.", "connectTitle": "Connect this car to a service", "connectHint": "Pick the vehicle on your account that matches this car. Its data then appears here.", "connectSubmit": "Connect vehicle", "connecting": "Connecting…", "noProviders": "No manufacturer account is connected. Add one in Settings › Integrations.", "settingsLink": "Open Settings", "sections": { "telemetry": "Odometer & range", "electric": "Battery & charging", "status": "Doors, windows & lights", "climate": "Climate", "climateSettings": "Climate presets", "health": "Vehicle health", "location": "Last known location", "serviceHistory": "Dealer service history", "notifications": "Notifications" }, "metrics": { "odometer": "Odometer", "fuelLevel": "Fuel level", "fuelRange": "Range", "batteryLevel": "Battery", "evRange": "Electric range (A/C off)", "evRangeWithAc": "Electric range (A/C on)", "cabinTemperature": "Cabin temperature", "targetTemperature": "Target temperature", "chargingStatus": "Charging", "location": "Position" } }, "info": { "allHidden": "Every field is switched off for this car.", "dragHint": "Drag a field to rearrange this car's information.", "oilSpec": "Engine oil spec", "transmissionOil": "Transmission oil", "differentialOil": "Differential oil", "brakeFluid": "Brake fluid", "coolant": "Coolant", "odometer": "Odometer", "serviceInterval": "Service interval", "nextDue": "Next due", "registrationPlate": "Registration plate", "registrationCountry": "Registration country", "vin": "VIN", "fuelType": "Fuel type", "buildDate": "Build date", "firstRegistration": "First registration", "technicalCheckInterval": "Technical check interval", "daysValue": { "one": "{n} day", "other": "{n} days" } }, "services": { "title": "Service history", "add": "Add service", "empty": "No service records yet.", "colDate": "Date", "colKm": "Km", "colNextDate": "Next date", "colNextKm": "Next km", "colOil": "Oil & Oil filter", "colEngineFilter": "Engine air filter", "colCabinFilter": "Cabin air filter", "colNotes": "Notes", "colFile": "File", "confirmDelete": "Delete this service record?", "chipOil": "Oil & filter", "chipEngineFilter": "Engine air", "chipCabinFilter": "Cabin air" }, "technical": { "title": "Technical check history", "subtitle": "Mandatory roadworthiness inspections. Recurs on time alone, whatever the odometer reads.", "add": "Add check", "empty": "No technical checks yet.", "colDate": "Date", "colResult": "Result", "colNextCheck": "Next check", "colStatus": "Status", "colStation": "Station", "colCost": "Cost", "colNotes": "Notes", "colFile": "File", "passed": "Passed", "failed": "Failed", "confirmDelete": "Delete this technical check?", "next": "Next: {date}" }, "maintenance": { "title": "Maintenance", "subtitle": "Workshop visits and repairs. Routine servicing lives under Service history.", "add": "Log visit", "empty": "No workshop visits logged yet.", "colDate": "Date", "colKm": "Km", "colType": "Type", "colWork": "Work done", "colWorkshop": "Workshop", "colStatus": "Status", "colCost": "Cost", "colFile": "File", "underWarranty": "Under warranty · {days}d left", "confirmDelete": "Delete this workshop visit?", "partsUsed": "Parts: {parts}" }, "fuel": { "title": "Fuel cost", "subtitle": "Consumption is measured between full tanks.", "add": "Log refill", "empty": "No refills logged yet.", "average": "Average", "best": "Best", "worst": "Worst", "costPerKm": "Cost per km", "refills": "Refills", "totalLiters": "Total litres", "totalSpent": "Total spent", "trackedDistance": "Tracked distance", "avgPrice": "Avg. price {price}/L", "needTwoTanks": "Log at least two full tanks to see consumption figures.", "colDate": "Date", "colKm": "Km", "colLiters": "Litres", "colCost": "Cost", "colPerLiter": "Per litre", "colDistance": "Distance", "colConsumption": "Consumption", "colStation": "Station", "colFile": "File", "partial": "partial", "gap": "gap", "confirmDelete": "Delete this refill?", "fullTank": "Full tank", "partialFill": "Partial fill", "missedBefore": "Missed fill before", "overDistance": "{consumption} · {rate} over {distance}" }, "charging": { "title": "Charging cost", "subtitle": "Consumption is measured between full charges.", "add": "Log charge", "empty": "No charges logged yet.", "average": "Average", "best": "Best", "worst": "Worst", "costPerKm": "Cost per km", "sessions": "Charges", "totalKwh": "Total energy", "totalSpent": "Total spent", "trackedDistance": "Tracked distance", "avgPrice": "Avg. price {price}/kWh", "needTwoCharges": "Log at least two full charges to see consumption figures.", "colDate": "Date", "colKm": "Km", "colKwh": "kWh", "colCost": "Cost", "colPerKwh": "Per kWh", "colDistance": "Distance", "colConsumption": "Consumption", "colLocation": "Charge point", "colFile": "File", "partial": "partial", "gap": "gap", "confirmDelete": "Delete this charge?", "fullCharge": "Full charge", "partialCharge": "Partial charge", "missedBefore": "Missed charge before", "overDistance": "{consumption} · {rate} over {distance}" }, "documents": { "title": "Documents", "subtitle": "Insurance, pollution certificates and other paperwork with renewal dates.", "add": "Add document", "empty": "No documents yet.", "colType": "Type", "colTitle": "Title", "colProvider": "Provider", "colIssued": "Issued", "colRenewal": "Renewal", "colStatus": "Status", "colFile": "File", "confirmDelete": "Delete this document?", "issuedRenews": "Issued {issued} · Renews {renews}" }, "reminders": { "title": "Reminders", "subtitle": "Renewal and service reminders are added automatically from your documents and service history.", "add": "Add reminder", "empty": "Nothing to be reminded about yet.", "automatic": "Automatic", "repeats": "Repeats", "at": "at {km}", "doneRollForward": "Done · roll forward", "markDone": "Mark done", "reopen": "Reopen", "confirmDelete": "Delete this reminder?", "on": "on {date}", "repeatsEvery": "Repeats every {every}", "autoHint": "Added automatically — edit the record it came from to change it." }, "parts": { "title": "Parts catalog", "add": "Add part", "empty": "No parts yet.", "colPart": "Part", "colPartNumber": "Part number", "colNotes": "Notes", "colFile": "File", "confirmDelete": "Delete this part?" }, "delete": { "title": "Delete this car?", "body": "This permanently deletes {name} and everything logged against it — {services}, {maintenance}, {fuel}, {charging}, {documents} and {parts}. This cannot be undone.", "services": { "one": "{n} service record", "other": "{n} service records" }, "maintenance": { "one": "{n} workshop visit", "other": "{n} workshop visits" }, "fuel": { "one": "{n} refill", "other": "{n} refills" }, "charging": { "one": "{n} charge", "other": "{n} charges" }, "documents": { "one": "{n} document", "other": "{n} documents" }, "parts": { "one": "{n} part", "other": "{n} parts" }, "typeToConfirm": "Type {name} to confirm", "deleting": "Deleting…", "confirm": "Delete permanently" }, "actions": { "share": "Share car", "edit": "Edit car", "odometer": "Update odometer", "delete": "Delete car" }, "readOnlyNotice": "Shared with you (read-only). You can't make changes." }, "forms": { "charging": { "addTitle": "Log charge", "editTitle": "Edit charge", "date": "Date", "odometer": "Odometer (km)", "kwh": "Energy (kWh)", "cost": "Cost", "pricePerKwh": "That is {price} per kWh.", "battery": "Battery", "fullCharge": "Charged to full", "missedSession": "A charge before this one was not logged", "batteryHint": "Consumption is measured between full charges. Partial charges still count towards the cost, and roll into the next full one.", "location": "Charge point", "locationPlaceholder": "Home", "notes": "Notes", "attachmentLegend": "Receipt", "submit": "Save charge" }, "import": { "title": "Import a car", "subtitle": "Create a car from a vehicle on your manufacturer account. Everything it can read is filled in for you.", "service": "Service", "loadingVehicles": "Loading your vehicles…", "noVehicles": "No vehicles on this account.", "notConnected": "Not connected", "noProviders": "No manufacturer account is connected. Add one in Settings › Integrations.", "alreadyInGarage": "Already in your garage", "selectVehicle": "Vehicle", "dataTitle": "What to import", "dataHint": "Uncheck anything you would rather fill in yourself.", "includeIdentity": "Make, model, year, registration and VIN", "includeFuelType": "Fuel type", "includeDates": "Build and first-registration dates", "includeOdometer": "Current odometer", "name": "Car name", "submit": "Import car", "importing": "Importing…", "warningOdometer": "The service did not report an odometer reading — enter it yourself on the car.", "moreData": "The rest of what this service reports stays available on the car's {label} tab." }, "car": { "addTitle": "Add a car", "editTitle": "Edit car", "name": "Name *", "make": "Make", "model": "Model", "year": "Year", "registration": "Registration", "registrationCountry": "Registration country", "registrationCountryPlaceholder": "Poland", "vin": "VIN", "vinPlaceholder": "Vehicle Identification Number", "fuelType": "Fuel type", "buildDate": "Build date", "firstRegistration": "First registration", "oilSpec": "Engine oil spec", "currentKm": "Current odometer (km)", "transmissionOilSpec": "Transmission oil spec", "differentialOilSpec": "Differential oil spec", "brakeFluidSpec": "Brake fluid spec", "coolantSpec": "Coolant spec", "serviceIntervalDays": "Service interval (days)", "serviceIntervalKm": "Service interval (km)", "technicalCheckIntervalDays": "Technical check interval (days)", "technicalCheckHint": "Prefills each check's next-due date. Any check can override it with the date printed on its certificate.", "submit": "Add car" }, "service": { "addTitle": "Add service record", "editTitle": "Edit service record", "date": "Date *", "odometer": "Odometer (km)", "changedParts": "Changed parts", "oil": "Oil & Oil filter", "engineFilter": "Engine air filter", "cabinFilter": "Cabin air filter", "attachmentLegend": "Receipt or service-book page", "notes": "Notes", "autoHint": "Next service date (+{days}d) and km (+{km}) are computed automatically.", "submit": "Add service" }, "technical": { "addTitle": "Add technical check", "editTitle": "Edit technical check", "date": "Check date *", "result": "Result *", "passed": "Passed", "failed": "Failed", "validUntil": "Valid until", "failedHint": "A failed check certifies nothing, so no next date is derived from it.", "derivedHint": "Leave blank to use the car's interval (+{days}d → {date}). Enter the date on the certificate when it differs.", "cost": "Cost", "station": "Station", "stationPlaceholder": "Stacja Kontroli Pojazdów", "attachmentLegend": "Inspection certificate", "notes": "Notes", "submit": "Add check" }, "part": { "addTitle": "Add part", "editTitle": "Edit part", "name": "Part name *", "namePlaceholder": "Oil Filter", "partNumber": "Part number", "notes": "Notes", "notesPlaceholder": "Fits 2015–2020 · buy in pairs", "attachmentLegend": "Photo or spec sheet", "submit": "Add part" }, "fuel": { "addTitle": "Log refill", "editTitle": "Edit refill", "date": "Date *", "odometer": "Odometer (km) *", "liters": "Litres *", "cost": "Total cost", "pricePerLiter": "Price per litre: {price}", "tank": "Tank", "fullTank": "Filled to full", "missedFill": "I missed logging a refill before this one", "tankHint": "Consumption is measured between full tanks, so partial fills count towards the next full one. Flagging a missed refill leaves that stretch out of the figures instead of reporting it as unrealistically economical.", "station": "Station", "notes": "Notes", "attachmentLegend": "Receipt", "submit": "Log refill", "stationPlaceholder": "Orlen" }, "maintenance": { "addTitle": "Log workshop visit", "editTitle": "Edit workshop visit", "date": "Date *", "odometer": "Odometer (km)", "type": "Type", "status": "Status", "description": "What was done *", "descriptionPlaceholder": "Replaced alternator and drive belt", "workshop": "Workshop", "location": "Location", "partsUsed": "Parts replaced", "partsUsedPlaceholder": "Alternator 27060-0T010, belt 90916-02660", "laborCost": "Labour cost", "partsCost": "Parts cost", "total": "Total: {total}", "invoiceNumber": "Invoice number", "warrantyUntil": "Warranty until", "attachmentLegend": "Invoice", "notes": "Notes", "submit": "Log visit", "workshopPlaceholder": "Kowalski Auto Service", "locationPlaceholder": "Kraków" }, "document": { "addTitle": "Add document", "editTitle": "Edit document", "type": "Type", "title": "Title *", "titlePlaceholder": "Third-party liability 2026", "provider": "Provider", "reference": "Policy / certificate no.", "issued": "Issued", "renewalDate": "Renewal date", "renewalHint": "Leave the renewal date blank for a document that never expires. Setting it adds a reminder automatically.", "cost": "Cost", "attachmentLegend": "Scan or photo", "notes": "Notes", "submit": "Add document", "providerPlaceholder": "PZU" }, "reminder": { "addTitle": "Add reminder", "editTitle": "Edit reminder", "title": "Title *", "titlePlaceholder": "Swap to winter tyres", "type": "Type", "remindMe": "Remind me", "onDate": "On date", "atOdometer": "At odometer (km)", "triggerHint": "Set either or both — with both, whichever comes first wins.", "currentKm": "The car is at {km} now.", "repeat": "Repeat (optional)", "everyDays": "Every … days", "everyKm": "Every … km", "recurringHint": "Marking this done will roll it forward instead of closing it.", "oneOffHint": "Leave blank for a one-off reminder that closes when you mark it done.", "notes": "Notes", "noTrigger": "Set a due date, a due odometer reading, or both.", "submit": "Add reminder" }, "share": { "title": "Share {name}", "body": "Give another user access to this car. Read-only lets them view; read & write also lets them edit the car and its service records and parts.", "userEmail": "User email", "read": "Read-only", "write": "Read & write", "submit": "Share", "peopleWithAccess": "People with access", "notShared": "Not shared with anyone yet.", "submitting": "Sharing…" }, "validation": { "odometer": "Odometer is required.", "liters": "Litres are required.", "kwh": "Energy (kWh) is required.", "name": "Name is required.", "partName": "Part name is required.", "description": "Describe what was done.", "title": "Title is required." } }, "enums": { "fuelType": { "petrol": "Petrol (gasoline)", "petrol_lpg": "Petrol (gasoline) + LPG", "diesel": "Diesel", "diesel_lpg": "Diesel + LPG", "hybrid": "Hybrid", "electric": "Electric", "hydrogen": "Hydrogen" }, "maintenanceType": { "repair": "Repair", "inspection": "Inspection", "bodywork": "Bodywork", "tyres": "Tyres", "diagnostics": "Diagnostics", "recall": "Recall", "warranty": "Warranty work", "other": "Other" }, "maintenanceStatus": { "scheduled": "Scheduled", "in_progress": "In progress", "completed": "Completed" }, "documentType": { "insurance": "Insurance", "pollution": "Pollution certificate", "registration": "Registration", "inspection": "Inspection", "roadTax": "Road tax", "warranty": "Warranty", "other": "Other" }, "reminderTypeShort": { "maintenance": "Maintenance", "document": "Document", "service": "Service", "inspection": "Inspection", "other": "Other" }, "reminderType": { "maintenance": "Maintenance", "document": "Document renewal", "service": "Service", "inspection": "Inspection", "other": "Other" } }, "attachment": { "legend": "Attachment", "hint": "PDF or image, up to 10MB.", "attached": "Attached: {name}", "willBeRemoved": "Attachment will be removed on save.", "choose": "Choose file", "replace": "Replace", "view": "View", "clear": "Clear" }, "errors": { "sessionExpired": "Session expired — please log in again.", "deleteFailed": "Delete failed: {error}", "completeFailed": "Could not complete: {error}", "attachmentFailed": "Saved, but the file did not upload: {error}", "openFailed": "Could not open the file: {error}", "noFile": "No file attached." }, "admin": { "title": "Users", "subtitleAll": "Accounts across every organization.", "subtitleOrg": "Accounts in your organization.", "addUser": "Add user", "colEmail": "Email", "colName": "Name", "colOrganization": "Organization", "noOrganization": "— No organization —", "organizationHint": "Leave unset to create an account that belongs to no organization.", "colRole": "Role", "colCreated": "Created", "you": "(you)", "resetPassword": "Reset password", "confirmDelete": "Delete {name}? This cannot be undone.", "cantDeleteSelf": "You can't delete your own account.", "onlySuperadminDeletes": "Only a superadmin can delete a superadmin.", "cantChangeOwnRole": "You can't change your own role.", "onlySuperadminEdits": "Only a superadmin can edit a superadmin.", "createTitle": "Add a user", "emailRequired": "Email *", "passwordRequired": "Password *", "minChars": "(min 8)", "creating": "Creating…", "createUser": "Create user", "resetTitle": "Reset password — {email}", "newPassword": "New password", "setPassword": "Set password", "roles": { "user": "user", "admin": "admin", "superadmin": "superadmin" }, "deleteTitle": "Delete user?", "passwordUpdated": "Password updated." } }