Add a language-switch system with per-language files
Introduce a hand-rolled i18n layer across all three UIs, each reading its
text from per-language JSON files (English base + Polish + Danish). Nothing
in the converted screens hardcodes English any more.
- Web App (Vue): src/i18n/{en,pl,da}.json + index.js exposing t()/tSplit(),
reactive to the signed-in profile locale. Every view, component, form and
the status labels in lib/format.js go through t().
- API Server panel (Vue): src/i18n/ with its own localStorage-persisted
language (the panel has no user profile) and a header language picker.
Chrome, cards, login and API section titles translated; endpoint reference
descriptions intentionally kept in English. Rebuilt embedded dist.
- Phone App (Flutter): assets/i18n/ + lib/i18n.dart loaded at startup,
driven by AppSettings.locale. Nav, login, lock, dashboard, the full
Settings panel (incl. language picker) and format.dart status labels
translated; remaining detail screens fall back to English.
Language = the language half of the existing BCP-47 locale; the region half
still drives date/number/currency formatting. Missing keys fall back to
English, and plurals use Intl.PluralRules / Intl.plural so Polish gets the
correct one/few/many forms. Settings flags languages without a translation.
Tests updated to assert the localized (Polish) status wording; all pass.
See TRANSLATIONS.md for the format and how to add a language.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
1 parent
ee28b522c7
commit
b6bb6b1df0
54 files changed
+4191
-979
No files matched your search
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"errors": {
|
||||
"sessionExpired": "Sessionen er udløbet — log ind igen."
|
||||
},
|
||||
|
||||
"common": {
|
||||
"cancel": "Annuller",
|
||||
"save": "Gem",
|
||||
"saveChanges": "Gem ændringer",
|
||||
"saving": "Gemmer…",
|
||||
"saved": "Gemt ✓",
|
||||
"loading": "Indlæser…",
|
||||
"edit": "Rediger",
|
||||
"remove": "Fjern",
|
||||
"delete": "Slet",
|
||||
"done": "Færdig",
|
||||
"undo": "Fortryd",
|
||||
"download": "Download",
|
||||
"empty": "—",
|
||||
"yes": "Ja",
|
||||
"no": "Nej"
|
||||
},
|
||||
|
||||
"nav": {
|
||||
"garage": "Garage",
|
||||
"settings": "Indstillinger",
|
||||
"users": "Brugere",
|
||||
"lightMode": "Lys tilstand",
|
||||
"darkMode": "Mørk tilstand",
|
||||
"signedIn": "Logget ind",
|
||||
"logOut": "Log ud"
|
||||
},
|
||||
|
||||
"login": {
|
||||
"title": "Log ind",
|
||||
"tagline": "Styr på din bil.",
|
||||
"email": "E-mail",
|
||||
"password": "Adgangskode",
|
||||
"showPassword": "Vis adgangskode",
|
||||
"hidePassword": "Skjul adgangskode",
|
||||
"submit": "Log ind",
|
||||
"submitting": "Logger ind…",
|
||||
"failed": "Login mislykkedes",
|
||||
"serverSettings": "Serverindstillinger",
|
||||
"apiServerUrl": "API-serverens adresse",
|
||||
"leaveBlank": "Lad feltet stå tomt for at bruge standarden ({url}).",
|
||||
"resetToDefault": "Nulstil til standard"
|
||||
},
|
||||
|
||||
"dashboard": {
|
||||
"eyebrow": "Garage",
|
||||
"title": "Dine biler",
|
||||
"subtitle": "Serviceoverblik og servicehistorik.",
|
||||
"addCar": "Tilføj bil",
|
||||
"empty": "Ingen biler endnu. Klik på {action} for at komme i gang.",
|
||||
"shared": "Delt",
|
||||
"sharedReadOnly": "Delt · skrivebeskyttet",
|
||||
"serviceLife": "Serviceinterval brugt",
|
||||
"lastService": "Seneste service",
|
||||
"odometer": "Kilometerstand",
|
||||
"nextDue": "Næste service",
|
||||
"nextDueKm": "Næste service (km)",
|
||||
"serviceRecords": {
|
||||
"one": "{n} servicepost",
|
||||
"other": "{n} serviceposter"
|
||||
}
|
||||
},
|
||||
|
||||
"admin": {
|
||||
"eyebrow": "Administration",
|
||||
"title": "Brugere",
|
||||
"subtitleAll": "Konti på tværs af alle organisationer.",
|
||||
"subtitleOrg": "Konti i din organisation.",
|
||||
"subtitleOrgsNote": "Organisationer tildeles i API-panelet.",
|
||||
"addUser": "Tilføj bruger",
|
||||
"colEmail": "E-mail",
|
||||
"colName": "Navn",
|
||||
"colOrganization": "Organisation",
|
||||
"colRole": "Rolle",
|
||||
"colCreated": "Oprettet",
|
||||
"you": "(dig)",
|
||||
"resetPassword": "Nulstil adgangskode",
|
||||
"confirmDelete": "Slet {name}? Dette kan ikke fortrydes.",
|
||||
"cantDeleteSelf": "Du kan ikke slette din egen konto.",
|
||||
"onlySuperadminDeletes": "Kun en superadministrator kan slette en superadministrator.",
|
||||
"cantChangeOwnRole": "Du kan ikke ændre din egen rolle.",
|
||||
"onlySuperadminEdits": "Kun en superadministrator kan redigere en superadministrator.",
|
||||
"createTitle": "Tilføj en bruger",
|
||||
"emailRequired": "E-mail *",
|
||||
"passwordRequired": "Adgangskode *",
|
||||
"minChars": "(mindst 8)",
|
||||
"creating": "Opretter…",
|
||||
"createUser": "Opret bruger",
|
||||
"resetTitle": "Nulstil adgangskode — {email}",
|
||||
"newPassword": "Ny adgangskode",
|
||||
"setPassword": "Angiv adgangskode",
|
||||
"roles": {
|
||||
"user": "bruger",
|
||||
"admin": "administrator",
|
||||
"superadmin": "superadministrator"
|
||||
}
|
||||
},
|
||||
|
||||
"settings": {
|
||||
"eyebrow": "Konto",
|
||||
"title": "Indstillinger",
|
||||
"subtitle": "Administrer din konto, udseende og dine data.",
|
||||
|
||||
"account": {
|
||||
"title": "Konto",
|
||||
"name": "Navn",
|
||||
"email": "E-mail",
|
||||
"verified": "Bekræftet",
|
||||
"notVerified": "Ikke bekræftet",
|
||||
"resendVerification": "Send bekræftelsesmail igen",
|
||||
"sending": "Sender…",
|
||||
"verificationRequested": "Bekræftelsesmail anmodet.",
|
||||
"changePassword": "Skift adgangskode",
|
||||
"currentPassword": "Nuværende adgangskode",
|
||||
"newPassword": "Ny adgangskode",
|
||||
"confirmNewPassword": "Bekræft ny adgangskode",
|
||||
"mismatchYet": "Adgangskoderne stemmer ikke overens endnu.",
|
||||
"tooShort": "Den nye adgangskode skal være på mindst 8 tegn.",
|
||||
"mismatch": "Den nye adgangskode og bekræftelsen stemmer ikke overens.",
|
||||
"updating": "Opdaterer…",
|
||||
"passwordUpdated": "Adgangskode opdateret ✓",
|
||||
"updatePassword": "Opdater adgangskode"
|
||||
},
|
||||
|
||||
"appearance": {
|
||||
"title": "Udseende",
|
||||
"theme": "Tema",
|
||||
"themeLight": "lyst",
|
||||
"themeDark": "mørkt",
|
||||
"themeSystem": "system",
|
||||
"language": "Sprog",
|
||||
"languageHint": "Appens tekst samt navne på måneder og dage.",
|
||||
"languageFallbackHint": "Dette sprog er endnu ikke oversat — appens tekst forbliver på engelsk.",
|
||||
"region": "Region",
|
||||
"regionHint": "Tal- og valutaformat.",
|
||||
"dateFormat": "Datoformat",
|
||||
"dateExample": "Eksempel: {example}",
|
||||
"currency": "Valuta",
|
||||
"currencyExample": "Eksempel: {example} — kun visning, ingen beløb omregnes.",
|
||||
"fontSize": "Skriftstørrelse",
|
||||
"fontSmall": "lille",
|
||||
"fontMedium": "mellem",
|
||||
"fontLarge": "stor"
|
||||
},
|
||||
|
||||
"profile": {
|
||||
"title": "Profil",
|
||||
"avatarAlt": "Profilbillede",
|
||||
"uploading": "Uploader…",
|
||||
"uploadPhoto": "Upload billede",
|
||||
"bio": "Om mig",
|
||||
"bioPlaceholder": "En kort note, som andre i din husstand kan se.",
|
||||
"saveBio": "Gem beskrivelse"
|
||||
},
|
||||
|
||||
"privacy": {
|
||||
"title": "Privatliv og sikkerhed",
|
||||
"signOut": "Log ud",
|
||||
"body": "Tofaktorgodkendelse er ikke tilgængelig endnu. Sessioner bygger på tokens udstedt af serveren, som udløber af sig selv, så at logge ud her afslutter kun sessionen på denne enhed — der er ingen liste over enheder at tilbagekalde fra. For at logge alle enheder ud skal du skifte din adgangskode ovenfor."
|
||||
},
|
||||
|
||||
"advanced": {
|
||||
"title": "Avanceret",
|
||||
"exportTitle": "Eksportér dine data",
|
||||
"exportBody": "Download din profil samt alle biler, serviceposter og reservedele som JSON.",
|
||||
"preparing": "Forbereder…",
|
||||
"exportAction": "Eksportér data",
|
||||
"importTitle": "Importér dine data",
|
||||
"importBody": "Tilføj biler fra en tidligere eksporteret JSON-fil. Dette opretter nye poster — intet flettes eller overskrives.",
|
||||
"importing": "Importerer…",
|
||||
"importAction": "Importér data",
|
||||
"notJson": "Filen er ikke gyldig JSON.",
|
||||
"notExport": "Filen ligner ikke en DriverVault-eksport (der mangler en \"cars\"-liste).",
|
||||
"confirmImport": "Importér {count} bil(er) fra denne fil? Dette tilføjer nye poster — eksisterende biler flettes eller overskrives ikke.",
|
||||
"imported": "Importerede {cars} bil(er), {services} servicepost(er), {parts} reservedel(e)."
|
||||
},
|
||||
|
||||
"danger": {
|
||||
"title": "Farezone",
|
||||
"body": "Sletning af din konto fjerner dit login og din profil. Det sletter ikke husstandens delte biler eller servicehistorik. Der er 3 dages betænkningstid, før sletningen er endelig, og du kan annullere når som helst inden da.",
|
||||
"deleteAccount": "Slet min konto",
|
||||
"typeToConfirm": "Skriv {email} for at bekræfte",
|
||||
"requesting": "Anmoder…",
|
||||
"requestDeletion": "Anmod om sletning",
|
||||
"requestedOn": "Sletning af konto anmodet den {date}.",
|
||||
"canStillCancel": "Du kan stadig annullere — det bliver permanent efter 3 dages betænkningstid.",
|
||||
"cooldownPassed": "Betænkningstiden er udløbet. Du kan nu gennemføre sletningen.",
|
||||
"cancelRequest": "Annuller anmodning om sletning",
|
||||
"finalize": "Slet min konto permanent",
|
||||
"confirmFinalize": "Dette sletter din konto permanent. Det kan ikke fortrydes. Fortsæt?"
|
||||
}
|
||||
},
|
||||
|
||||
"car": {
|
||||
"allCars": "← Alle biler",
|
||||
"share": "Del",
|
||||
"shared": "Delt",
|
||||
"sharedReadOnly": "Delt · skrivebeskyttet",
|
||||
|
||||
"tabs": {
|
||||
"info": "Oplysninger",
|
||||
"services": "Servicehistorik",
|
||||
"technical": "Synshistorik",
|
||||
"maintenance": "Værksted",
|
||||
"fuel": "Brændstof",
|
||||
"documents": "Dokumenter",
|
||||
"parts": "Reservedelskatalog",
|
||||
"reminders": "Påmindelser"
|
||||
},
|
||||
|
||||
"info": {
|
||||
"oilSpec": "Motorolie-specifikation",
|
||||
"transmissionOil": "Gearolie",
|
||||
"differentialOil": "Differentialeolie",
|
||||
"brakeFluid": "Bremsevæske",
|
||||
"coolant": "Kølervæske",
|
||||
"odometer": "Kilometerstand",
|
||||
"serviceInterval": "Serviceinterval",
|
||||
"nextDue": "Næste service",
|
||||
"registrationPlate": "Nummerplade",
|
||||
"registrationCountry": "Registreringsland",
|
||||
"vin": "Stelnummer",
|
||||
"fuelType": "Brændstoftype",
|
||||
"buildDate": "Produktionsdato",
|
||||
"firstRegistration": "Første registrering"
|
||||
},
|
||||
|
||||
"services": {
|
||||
"title": "Servicehistorik",
|
||||
"add": "Tilføj service",
|
||||
"empty": "Ingen serviceposter endnu.",
|
||||
"colDate": "Dato",
|
||||
"colKm": "Km",
|
||||
"colNextDate": "Næste dato",
|
||||
"colNextKm": "Næste km",
|
||||
"colOil": "Olie og oliefilter",
|
||||
"colEngineFilter": "Luftfilter",
|
||||
"colCabinFilter": "Kabinefilter",
|
||||
"colNotes": "Noter",
|
||||
"colFile": "Fil",
|
||||
"confirmDelete": "Slet denne servicepost?"
|
||||
},
|
||||
|
||||
"technical": {
|
||||
"title": "Synshistorik",
|
||||
"subtitle": "Lovpligtige syn. Gentages alene efter tid, uanset hvad kilometerstanden viser.",
|
||||
"add": "Tilføj syn",
|
||||
"empty": "Ingen syn endnu.",
|
||||
"colDate": "Dato",
|
||||
"colResult": "Resultat",
|
||||
"colNextCheck": "Næste syn",
|
||||
"colStatus": "Status",
|
||||
"colStation": "Synssted",
|
||||
"colCost": "Pris",
|
||||
"colNotes": "Noter",
|
||||
"colFile": "Fil",
|
||||
"passed": "Godkendt",
|
||||
"failed": "Ikke godkendt",
|
||||
"confirmDelete": "Slet dette syn?"
|
||||
},
|
||||
|
||||
"maintenance": {
|
||||
"title": "Værksted",
|
||||
"subtitle": "Værkstedsbesøg og reparationer. Almindelig service hører under Servicehistorik.",
|
||||
"add": "Registrér besøg",
|
||||
"empty": "Ingen værkstedsbesøg registreret endnu.",
|
||||
"colDate": "Dato",
|
||||
"colKm": "Km",
|
||||
"colType": "Type",
|
||||
"colWork": "Udført arbejde",
|
||||
"colWorkshop": "Værksted",
|
||||
"colStatus": "Status",
|
||||
"colCost": "Pris",
|
||||
"colFile": "Fil",
|
||||
"underWarranty": "Under garanti · {days} dage tilbage",
|
||||
"confirmDelete": "Slet dette værkstedsbesøg?"
|
||||
},
|
||||
|
||||
"fuel": {
|
||||
"title": "Brændstof",
|
||||
"subtitle": "Forbruget måles mellem fulde tanke.",
|
||||
"add": "Registrér tankning",
|
||||
"empty": "Ingen tankninger registreret endnu.",
|
||||
"average": "Gennemsnit",
|
||||
"best": "Bedste",
|
||||
"worst": "Værste",
|
||||
"costPerKm": "Pris pr. km",
|
||||
"refills": "Tankninger",
|
||||
"totalLiters": "Liter i alt",
|
||||
"totalSpent": "Brugt i alt",
|
||||
"trackedDistance": "Målt distance",
|
||||
"avgPrice": "Gns. pris {price}/L",
|
||||
"needTwoTanks": "Registrér mindst to fulde tanke for at se forbrugstal.",
|
||||
"colDate": "Dato",
|
||||
"colKm": "Km",
|
||||
"colLiters": "Liter",
|
||||
"colCost": "Pris",
|
||||
"colPerLiter": "Pr. liter",
|
||||
"colDistance": "Distance",
|
||||
"colConsumption": "Forbrug",
|
||||
"colStation": "Tankstation",
|
||||
"colFile": "Fil",
|
||||
"partial": "delvis",
|
||||
"gap": "hul",
|
||||
"confirmDelete": "Slet denne tankning?"
|
||||
},
|
||||
|
||||
"documents": {
|
||||
"title": "Dokumenter",
|
||||
"subtitle": "Forsikring, miljøattester og andre papirer med fornyelsesdatoer.",
|
||||
"add": "Tilføj dokument",
|
||||
"empty": "Ingen dokumenter endnu.",
|
||||
"colType": "Type",
|
||||
"colTitle": "Titel",
|
||||
"colProvider": "Udbyder",
|
||||
"colIssued": "Udstedt",
|
||||
"colRenewal": "Fornyelse",
|
||||
"colStatus": "Status",
|
||||
"colFile": "Fil",
|
||||
"confirmDelete": "Slet dette dokument?"
|
||||
},
|
||||
|
||||
"reminders": {
|
||||
"title": "Påmindelser",
|
||||
"subtitle": "Påmindelser om fornyelse og service tilføjes automatisk ud fra dine dokumenter og din servicehistorik.",
|
||||
"add": "Tilføj påmindelse",
|
||||
"empty": "Intet at blive mindet om endnu.",
|
||||
"automatic": "Automatisk",
|
||||
"repeats": "Gentages",
|
||||
"at": "ved {km}",
|
||||
"doneRollForward": "Færdig · flyt frem",
|
||||
"markDone": "Markér som færdig",
|
||||
"reopen": "Genåbn",
|
||||
"confirmDelete": "Slet denne påmindelse?"
|
||||
},
|
||||
|
||||
"parts": {
|
||||
"title": "Reservedelskatalog",
|
||||
"add": "Tilføj reservedel",
|
||||
"empty": "Ingen reservedele endnu.",
|
||||
"colPart": "Reservedel",
|
||||
"colPartNumber": "Varenummer",
|
||||
"colNotes": "Noter",
|
||||
"colFile": "Fil",
|
||||
"confirmDelete": "Slet denne reservedel?"
|
||||
},
|
||||
|
||||
"delete": {
|
||||
"title": "Slet denne bil?",
|
||||
"body": "Dette sletter {name} permanent sammen med alt, der er registreret på den — {services}, {maintenance}, {fuel}, {documents} og {parts}. Det kan ikke fortrydes.",
|
||||
"services": {
|
||||
"one": "{n} servicepost",
|
||||
"other": "{n} serviceposter"
|
||||
},
|
||||
"maintenance": {
|
||||
"one": "{n} værkstedsbesøg",
|
||||
"other": "{n} værkstedsbesøg"
|
||||
},
|
||||
"fuel": {
|
||||
"one": "{n} tankning",
|
||||
"other": "{n} tankninger"
|
||||
},
|
||||
"documents": {
|
||||
"one": "{n} dokument",
|
||||
"other": "{n} dokumenter"
|
||||
},
|
||||
"parts": {
|
||||
"one": "{n} reservedel",
|
||||
"other": "{n} reservedele"
|
||||
},
|
||||
"typeToConfirm": "Skriv {name} for at bekræfte",
|
||||
"deleting": "Sletter…",
|
||||
"confirm": "Slet permanent"
|
||||
}
|
||||
},
|
||||
|
||||
"attachment": {
|
||||
"legend": "Vedhæftet fil",
|
||||
"hint": "PDF eller billede, op til 10 MB.",
|
||||
"attached": "Vedhæftet: {name}",
|
||||
"willBeRemoved": "Den vedhæftede fil fjernes, når der gemmes."
|
||||
},
|
||||
|
||||
"forms": {
|
||||
"car": {
|
||||
"addTitle": "Tilføj en bil",
|
||||
"editTitle": "Rediger bil",
|
||||
"name": "Navn *",
|
||||
"make": "Mærke",
|
||||
"model": "Model",
|
||||
"year": "Årgang",
|
||||
"registration": "Nummerplade",
|
||||
"registrationCountry": "Registreringsland",
|
||||
"registrationCountryPlaceholder": "Danmark",
|
||||
"vin": "Stelnummer",
|
||||
"vinPlaceholder": "Køretøjets stelnummer",
|
||||
"fuelType": "Brændstoftype",
|
||||
"buildDate": "Produktionsdato",
|
||||
"firstRegistration": "Første registrering",
|
||||
"oilSpec": "Motorolie-specifikation",
|
||||
"currentKm": "Nuværende kilometerstand (km)",
|
||||
"transmissionOilSpec": "Gearolie-specifikation",
|
||||
"differentialOilSpec": "Differentialeolie-specifikation",
|
||||
"brakeFluidSpec": "Bremsevæske-specifikation",
|
||||
"coolantSpec": "Kølervæske-specifikation",
|
||||
"serviceIntervalDays": "Serviceinterval (dage)",
|
||||
"serviceIntervalKm": "Serviceinterval (km)",
|
||||
"technicalCheckIntervalDays": "Synsinterval (dage)",
|
||||
"technicalCheckHint": "Udfylder på forhånd hvert syns næste forfaldsdato. Ethvert syn kan tilsidesætte den med datoen på attesten.",
|
||||
"submit": "Tilføj bil"
|
||||
},
|
||||
|
||||
"service": {
|
||||
"addTitle": "Tilføj servicepost",
|
||||
"editTitle": "Rediger servicepost",
|
||||
"date": "Dato *",
|
||||
"odometer": "Kilometerstand (km)",
|
||||
"changedParts": "Udskiftede dele",
|
||||
"oil": "Olie og oliefilter",
|
||||
"engineFilter": "Luftfilter",
|
||||
"cabinFilter": "Kabinefilter",
|
||||
"attachmentLegend": "Kvittering eller side fra servicebogen",
|
||||
"notes": "Noter",
|
||||
"autoHint": "Næste servicedato (+{days} dage) og km (+{km}) beregnes automatisk.",
|
||||
"submit": "Tilføj service"
|
||||
},
|
||||
|
||||
"technical": {
|
||||
"addTitle": "Tilføj syn",
|
||||
"editTitle": "Rediger syn",
|
||||
"date": "Synsdato *",
|
||||
"result": "Resultat *",
|
||||
"passed": "Godkendt",
|
||||
"failed": "Ikke godkendt",
|
||||
"validUntil": "Gyldig til",
|
||||
"failedHint": "Et ikke-godkendt syn attesterer ingenting, så der udledes ingen næste dato af det.",
|
||||
"derivedHint": "Lad feltet stå tomt for at bruge bilens interval (+{days} dage → {date}). Indtast datoen på attesten, hvis den afviger.",
|
||||
"cost": "Pris",
|
||||
"station": "Synssted",
|
||||
"stationPlaceholder": "Synshal",
|
||||
"attachmentLegend": "Synsattest",
|
||||
"notes": "Noter",
|
||||
"submit": "Tilføj syn"
|
||||
},
|
||||
|
||||
"part": {
|
||||
"addTitle": "Tilføj reservedel",
|
||||
"editTitle": "Rediger reservedel",
|
||||
"name": "Reservedelens navn *",
|
||||
"namePlaceholder": "Oliefilter",
|
||||
"partNumber": "Varenummer",
|
||||
"notes": "Noter",
|
||||
"notesPlaceholder": "Passer til 2015–2020 · køb parvis",
|
||||
"attachmentLegend": "Billede eller datablad",
|
||||
"submit": "Tilføj reservedel"
|
||||
},
|
||||
|
||||
"fuel": {
|
||||
"addTitle": "Registrér tankning",
|
||||
"editTitle": "Rediger tankning",
|
||||
"date": "Dato *",
|
||||
"odometer": "Kilometerstand (km) *",
|
||||
"liters": "Liter *",
|
||||
"cost": "Samlet pris",
|
||||
"pricePerLiter": "Pris pr. liter: {price}",
|
||||
"tank": "Tank",
|
||||
"fullTank": "Fyldt helt op",
|
||||
"missedFill": "Jeg glemte at registrere en tankning før denne",
|
||||
"tankHint": "Forbruget måles mellem fulde tanke, så delvise tankninger tæller med i den næste fulde. At markere en glemt tankning holder den strækning ude af tallene i stedet for at vise et urealistisk lavt forbrug.",
|
||||
"station": "Tankstation",
|
||||
"notes": "Noter",
|
||||
"attachmentLegend": "Kvittering",
|
||||
"submit": "Registrér tankning"
|
||||
},
|
||||
|
||||
"maintenance": {
|
||||
"addTitle": "Registrér værkstedsbesøg",
|
||||
"editTitle": "Rediger værkstedsbesøg",
|
||||
"date": "Dato *",
|
||||
"odometer": "Kilometerstand (km)",
|
||||
"type": "Type",
|
||||
"status": "Status",
|
||||
"description": "Hvad blev der lavet *",
|
||||
"descriptionPlaceholder": "Udskiftede generator og drivrem",
|
||||
"workshop": "Værksted",
|
||||
"location": "Sted",
|
||||
"partsUsed": "Udskiftede dele",
|
||||
"partsUsedPlaceholder": "Generator 27060-0T010, rem 90916-02660",
|
||||
"laborCost": "Arbejdsløn",
|
||||
"partsCost": "Pris for dele",
|
||||
"total": "I alt: {total}",
|
||||
"invoiceNumber": "Fakturanummer",
|
||||
"warrantyUntil": "Garanti til",
|
||||
"attachmentLegend": "Faktura",
|
||||
"notes": "Noter",
|
||||
"submit": "Registrér besøg"
|
||||
},
|
||||
|
||||
"document": {
|
||||
"addTitle": "Tilføj dokument",
|
||||
"editTitle": "Rediger dokument",
|
||||
"type": "Type",
|
||||
"title": "Titel *",
|
||||
"titlePlaceholder": "Ansvarsforsikring 2026",
|
||||
"provider": "Udbyder",
|
||||
"reference": "Police- / attestnummer",
|
||||
"issued": "Udstedt",
|
||||
"renewalDate": "Fornyelsesdato",
|
||||
"renewalHint": "Lad fornyelsesdatoen stå tom for et dokument, der aldrig udløber. Angives den, tilføjes der automatisk en påmindelse.",
|
||||
"cost": "Pris",
|
||||
"attachmentLegend": "Scan eller billede",
|
||||
"notes": "Noter",
|
||||
"submit": "Tilføj dokument"
|
||||
},
|
||||
|
||||
"reminder": {
|
||||
"addTitle": "Tilføj påmindelse",
|
||||
"editTitle": "Rediger påmindelse",
|
||||
"title": "Titel *",
|
||||
"titlePlaceholder": "Skift til vinterdæk",
|
||||
"type": "Type",
|
||||
"remindMe": "Mind mig om",
|
||||
"onDate": "På dato",
|
||||
"atOdometer": "Ved kilometerstand (km)",
|
||||
"triggerHint": "Angiv det ene eller begge — med begge gælder det, der indtræffer først.",
|
||||
"currentKm": "Bilen står på {km} nu.",
|
||||
"repeat": "Gentagelse (valgfrit)",
|
||||
"everyDays": "Hver … dage",
|
||||
"everyKm": "Hver … km",
|
||||
"recurringHint": "Markeres den som færdig, flyttes den frem i stedet for at blive lukket.",
|
||||
"oneOffHint": "Lad feltet stå tomt for en engangspåmindelse, der lukkes, når du markerer den som færdig.",
|
||||
"notes": "Noter",
|
||||
"noTrigger": "Angiv en forfaldsdato, en kilometerstand eller begge.",
|
||||
"submit": "Tilføj påmindelse"
|
||||
},
|
||||
|
||||
"share": {
|
||||
"title": "Del {name}",
|
||||
"body": "Giv en anden bruger adgang til denne bil. Skrivebeskyttet giver adgang til at se; læs og skriv giver også adgang til at redigere bilen samt dens serviceposter og reservedele.",
|
||||
"userEmail": "Brugerens e-mail",
|
||||
"read": "Skrivebeskyttet",
|
||||
"write": "Læs og skriv",
|
||||
"submit": "Del",
|
||||
"peopleWithAccess": "Personer med adgang",
|
||||
"notShared": "Endnu ikke delt med nogen."
|
||||
}
|
||||
},
|
||||
|
||||
"enums": {
|
||||
"fuelType": {
|
||||
"petrol": "Benzin",
|
||||
"petrol_lpg": "Benzin + LPG",
|
||||
"diesel": "Diesel",
|
||||
"diesel_lpg": "Diesel + LPG",
|
||||
"hybrid": "Hybrid",
|
||||
"electric": "El",
|
||||
"hydrogen": "Brint"
|
||||
},
|
||||
"maintenanceType": {
|
||||
"repair": "Reparation",
|
||||
"inspection": "Eftersyn",
|
||||
"bodywork": "Karrosseri",
|
||||
"tyres": "Dæk",
|
||||
"diagnostics": "Fejlsøgning",
|
||||
"recall": "Tilbagekaldelse",
|
||||
"warranty": "Garantiarbejde",
|
||||
"other": "Andet"
|
||||
},
|
||||
"maintenanceStatus": {
|
||||
"scheduled": "Planlagt",
|
||||
"in_progress": "I gang",
|
||||
"completed": "Fuldført"
|
||||
},
|
||||
"documentType": {
|
||||
"insurance": "Forsikring",
|
||||
"pollution": "Miljøattest",
|
||||
"registration": "Registreringsattest",
|
||||
"inspection": "Eftersyn",
|
||||
"roadTax": "Vægtafgift",
|
||||
"warranty": "Garanti",
|
||||
"other": "Andet"
|
||||
},
|
||||
"reminderTypeShort": {
|
||||
"maintenance": "Vedligehold",
|
||||
"document": "Dokument",
|
||||
"service": "Service",
|
||||
"inspection": "Eftersyn",
|
||||
"other": "Andet"
|
||||
},
|
||||
"reminderType": {
|
||||
"maintenance": "Vedligehold",
|
||||
"document": "Fornyelse af dokument",
|
||||
"service": "Service",
|
||||
"inspection": "Eftersyn",
|
||||
"other": "Andet"
|
||||
}
|
||||
},
|
||||
|
||||
"status": {
|
||||
"noData": "Ingen data",
|
||||
"serviceOverdueDays": "Service overskredet med {days} d",
|
||||
"dueInDays": "Forfalder om {days} d",
|
||||
"okDays": "OK · {days} d",
|
||||
"noKm": "Ingen km",
|
||||
"serviceOverdueKm": "Service overskredet med {km} km",
|
||||
"inKm": "Om {km} km",
|
||||
"kmLeft": "{km} km tilbage",
|
||||
"expiredAgo": "Udløb for {days} d siden",
|
||||
"expiresToday": "Udløber i dag",
|
||||
"renewInDays": "Forny om {days} d",
|
||||
"validDays": "Gyldig · {days} d",
|
||||
"noExpiry": "Udløber ikke",
|
||||
"done": "Færdig",
|
||||
"noTrigger": "Ingen udløser",
|
||||
"overdue": "Overskredet",
|
||||
"overdueBy": "Overskredet {parts}",
|
||||
"dueIn": "Forfalder om {parts}",
|
||||
"upcoming": "Kommende",
|
||||
"today": "i dag",
|
||||
"days": "{days} d",
|
||||
"km": "{km} km"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,628 @@
|
||||
{
|
||||
"errors": {
|
||||
"sessionExpired": "Session expired — please log in again."
|
||||
},
|
||||
|
||||
"common": {
|
||||
"cancel": "Cancel",
|
||||
"save": "Save",
|
||||
"saveChanges": "Save changes",
|
||||
"saving": "Saving…",
|
||||
"saved": "Saved ✓",
|
||||
"loading": "Loading…",
|
||||
"edit": "Edit",
|
||||
"remove": "Remove",
|
||||
"delete": "Delete",
|
||||
"done": "Done",
|
||||
"undo": "Undo",
|
||||
"download": "Download",
|
||||
"empty": "—",
|
||||
"yes": "Yes",
|
||||
"no": "No"
|
||||
},
|
||||
|
||||
"nav": {
|
||||
"garage": "Garage",
|
||||
"settings": "Settings",
|
||||
"users": "Users",
|
||||
"lightMode": "Light mode",
|
||||
"darkMode": "Dark mode",
|
||||
"signedIn": "Signed in",
|
||||
"logOut": "Log out"
|
||||
},
|
||||
|
||||
"login": {
|
||||
"title": "Sign in",
|
||||
"tagline": "Your car, on track.",
|
||||
"email": "Email",
|
||||
"password": "Password",
|
||||
"showPassword": "Show password",
|
||||
"hidePassword": "Hide password",
|
||||
"submit": "Sign in",
|
||||
"submitting": "Signing in…",
|
||||
"failed": "Login failed",
|
||||
"serverSettings": "Server settings",
|
||||
"apiServerUrl": "API server URL",
|
||||
"leaveBlank": "Leave blank to use the default ({url}).",
|
||||
"resetToDefault": "Reset to default"
|
||||
},
|
||||
|
||||
"dashboard": {
|
||||
"eyebrow": "Garage",
|
||||
"title": "Your cars",
|
||||
"subtitle": "Maintenance overview and service history.",
|
||||
"addCar": "Add car",
|
||||
"empty": "No cars yet. Click {action} to get started.",
|
||||
"shared": "Shared",
|
||||
"sharedReadOnly": "Shared · read-only",
|
||||
"serviceLife": "Service life",
|
||||
"lastService": "Last service",
|
||||
"odometer": "Odometer",
|
||||
"nextDue": "Next due",
|
||||
"nextDueKm": "Next due km",
|
||||
"serviceRecords": {
|
||||
"one": "{n} service record",
|
||||
"other": "{n} service records"
|
||||
}
|
||||
},
|
||||
|
||||
"admin": {
|
||||
"eyebrow": "Admin",
|
||||
"title": "Users",
|
||||
"subtitleAll": "Accounts across every organization.",
|
||||
"subtitleOrg": "Accounts in your organization.",
|
||||
"subtitleOrgsNote": "Organizations are assigned in the API panel.",
|
||||
"addUser": "Add user",
|
||||
"colEmail": "Email",
|
||||
"colName": "Name",
|
||||
"colOrganization": "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"
|
||||
}
|
||||
},
|
||||
|
||||
"settings": {
|
||||
"eyebrow": "Account",
|
||||
"title": "Settings",
|
||||
"subtitle": "Manage your account, appearance, and data.",
|
||||
|
||||
"account": {
|
||||
"title": "Account",
|
||||
"name": "Name",
|
||||
"email": "Email",
|
||||
"verified": "Verified",
|
||||
"notVerified": "Not verified",
|
||||
"resendVerification": "Resend verification email",
|
||||
"sending": "Sending…",
|
||||
"verificationRequested": "Verification email requested.",
|
||||
"changePassword": "Change password",
|
||||
"currentPassword": "Current password",
|
||||
"newPassword": "New password",
|
||||
"confirmNewPassword": "Confirm new password",
|
||||
"mismatchYet": "Passwords don't match yet.",
|
||||
"tooShort": "New password must be at least 8 characters.",
|
||||
"mismatch": "New password and confirmation don't match.",
|
||||
"updating": "Updating…",
|
||||
"passwordUpdated": "Password updated ✓",
|
||||
"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.",
|
||||
"dateFormat": "Date format",
|
||||
"dateExample": "Example: {example}",
|
||||
"currency": "Currency",
|
||||
"currencyExample": "Example: {example} — display only, no amounts are converted.",
|
||||
"fontSize": "Font size",
|
||||
"fontSmall": "small",
|
||||
"fontMedium": "medium",
|
||||
"fontLarge": "large"
|
||||
},
|
||||
|
||||
"profile": {
|
||||
"title": "Profile",
|
||||
"avatarAlt": "Avatar",
|
||||
"uploading": "Uploading…",
|
||||
"uploadPhoto": "Upload photo",
|
||||
"bio": "Bio",
|
||||
"bioPlaceholder": "A short note visible to other people in your household.",
|
||||
"saveBio": "Save bio"
|
||||
},
|
||||
|
||||
"privacy": {
|
||||
"title": "Privacy & security",
|
||||
"signOut": "Sign out",
|
||||
"body": "Two-factor authentication isn't available yet. Sessions are held as server-issued tokens that expire on their own, so signing out here ends this device's session only — there's no per-device list to revoke from. To lock out every device, change your password above."
|
||||
},
|
||||
|
||||
"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)."
|
||||
},
|
||||
|
||||
"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 the deletion is final, and you can cancel any time before then.",
|
||||
"deleteAccount": "Delete my account",
|
||||
"typeToConfirm": "Type {email} to confirm",
|
||||
"requesting": "Requesting…",
|
||||
"requestDeletion": "Request deletion",
|
||||
"requestedOn": "Account deletion requested on {date}.",
|
||||
"canStillCancel": "You can still cancel — it becomes permanent after the 3-day cooldown.",
|
||||
"cooldownPassed": "The cooldown has passed. You can now finalize the deletion.",
|
||||
"cancelRequest": "Cancel deletion request",
|
||||
"finalize": "Permanently delete my account",
|
||||
"confirmFinalize": "This permanently deletes your account. This cannot be undone. Continue?"
|
||||
}
|
||||
},
|
||||
|
||||
"car": {
|
||||
"allCars": "← All cars",
|
||||
"share": "Share",
|
||||
"shared": "Shared",
|
||||
"sharedReadOnly": "Shared · read-only",
|
||||
|
||||
"tabs": {
|
||||
"info": "Information",
|
||||
"services": "Service history",
|
||||
"technical": "Technical check history",
|
||||
"maintenance": "Maintenance",
|
||||
"fuel": "Fuel",
|
||||
"documents": "Documents",
|
||||
"parts": "Parts catalog",
|
||||
"reminders": "Reminders"
|
||||
},
|
||||
|
||||
"info": {
|
||||
"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"
|
||||
},
|
||||
|
||||
"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?"
|
||||
},
|
||||
|
||||
"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?"
|
||||
},
|
||||
|
||||
"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?"
|
||||
},
|
||||
|
||||
"fuel": {
|
||||
"title": "Fuel",
|
||||
"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?"
|
||||
},
|
||||
|
||||
"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?"
|
||||
},
|
||||
|
||||
"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?"
|
||||
},
|
||||
|
||||
"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}, {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"
|
||||
},
|
||||
"documents": {
|
||||
"one": "{n} document",
|
||||
"other": "{n} documents"
|
||||
},
|
||||
"parts": {
|
||||
"one": "{n} part",
|
||||
"other": "{n} parts"
|
||||
},
|
||||
"typeToConfirm": "Type {name} to confirm",
|
||||
"deleting": "Deleting…",
|
||||
"confirm": "Delete permanently"
|
||||
}
|
||||
},
|
||||
|
||||
"attachment": {
|
||||
"legend": "Attachment",
|
||||
"hint": "PDF or image, up to 10MB.",
|
||||
"attached": "Attached: {name}",
|
||||
"willBeRemoved": "Attachment will be removed on save."
|
||||
},
|
||||
|
||||
"forms": {
|
||||
"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"
|
||||
},
|
||||
|
||||
"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"
|
||||
},
|
||||
|
||||
"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"
|
||||
},
|
||||
|
||||
"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."
|
||||
}
|
||||
},
|
||||
|
||||
"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"
|
||||
}
|
||||
},
|
||||
|
||||
"status": {
|
||||
"noData": "No data",
|
||||
"serviceOverdueDays": "Service Overdue {days}d",
|
||||
"dueInDays": "Due in {days}d",
|
||||
"okDays": "OK · {days}d",
|
||||
"noKm": "No km",
|
||||
"serviceOverdueKm": "Service Overdue {km} km",
|
||||
"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"
|
||||
}
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,640 @@
|
||||
{
|
||||
"errors": {
|
||||
"sessionExpired": "Sesja wygasła — zaloguj się ponownie."
|
||||
},
|
||||
|
||||
"common": {
|
||||
"cancel": "Anuluj",
|
||||
"save": "Zapisz",
|
||||
"saveChanges": "Zapisz zmiany",
|
||||
"saving": "Zapisywanie…",
|
||||
"saved": "Zapisano ✓",
|
||||
"loading": "Ładowanie…",
|
||||
"edit": "Edytuj",
|
||||
"remove": "Usuń",
|
||||
"delete": "Usuń",
|
||||
"done": "Gotowe",
|
||||
"undo": "Cofnij",
|
||||
"download": "Pobierz",
|
||||
"empty": "—",
|
||||
"yes": "Tak",
|
||||
"no": "Nie"
|
||||
},
|
||||
|
||||
"nav": {
|
||||
"garage": "Garaż",
|
||||
"settings": "Ustawienia",
|
||||
"users": "Użytkownicy",
|
||||
"lightMode": "Tryb jasny",
|
||||
"darkMode": "Tryb ciemny",
|
||||
"signedIn": "Zalogowano",
|
||||
"logOut": "Wyloguj się"
|
||||
},
|
||||
|
||||
"login": {
|
||||
"title": "Zaloguj się",
|
||||
"tagline": "Twój samochód pod kontrolą.",
|
||||
"email": "E-mail",
|
||||
"password": "Hasło",
|
||||
"showPassword": "Pokaż hasło",
|
||||
"hidePassword": "Ukryj hasło",
|
||||
"submit": "Zaloguj się",
|
||||
"submitting": "Logowanie…",
|
||||
"failed": "Logowanie nie powiodło się",
|
||||
"serverSettings": "Ustawienia serwera",
|
||||
"apiServerUrl": "Adres serwera API",
|
||||
"leaveBlank": "Pozostaw puste, aby użyć domyślnego ({url}).",
|
||||
"resetToDefault": "Przywróć domyślny"
|
||||
},
|
||||
|
||||
"dashboard": {
|
||||
"eyebrow": "Garaż",
|
||||
"title": "Twoje samochody",
|
||||
"subtitle": "Przegląd serwisowy i historia napraw.",
|
||||
"addCar": "Dodaj samochód",
|
||||
"empty": "Nie masz jeszcze samochodów. Kliknij {action}, aby zacząć.",
|
||||
"shared": "Udostępniony",
|
||||
"sharedReadOnly": "Udostępniony · tylko do odczytu",
|
||||
"serviceLife": "Zużycie okresu serwisowego",
|
||||
"lastService": "Ostatni serwis",
|
||||
"odometer": "Przebieg",
|
||||
"nextDue": "Następny termin",
|
||||
"nextDueKm": "Następny przebieg",
|
||||
"serviceRecords": {
|
||||
"one": "{n} wpis serwisowy",
|
||||
"few": "{n} wpisy serwisowe",
|
||||
"many": "{n} wpisów serwisowych",
|
||||
"other": "{n} wpisu serwisowego"
|
||||
}
|
||||
},
|
||||
|
||||
"admin": {
|
||||
"eyebrow": "Administracja",
|
||||
"title": "Użytkownicy",
|
||||
"subtitleAll": "Konta ze wszystkich organizacji.",
|
||||
"subtitleOrg": "Konta w Twojej organizacji.",
|
||||
"subtitleOrgsNote": "Organizacje przypisuje się w panelu API.",
|
||||
"addUser": "Dodaj użytkownika",
|
||||
"colEmail": "E-mail",
|
||||
"colName": "Imię i nazwisko",
|
||||
"colOrganization": "Organizacja",
|
||||
"colRole": "Rola",
|
||||
"colCreated": "Utworzono",
|
||||
"you": "(Ty)",
|
||||
"resetPassword": "Zresetuj hasło",
|
||||
"confirmDelete": "Usunąć użytkownika {name}? Tej operacji nie można cofnąć.",
|
||||
"cantDeleteSelf": "Nie możesz usunąć własnego konta.",
|
||||
"onlySuperadminDeletes": "Tylko superadministrator może usunąć superadministratora.",
|
||||
"cantChangeOwnRole": "Nie możesz zmienić własnej roli.",
|
||||
"onlySuperadminEdits": "Tylko superadministrator może edytować superadministratora.",
|
||||
"createTitle": "Dodaj użytkownika",
|
||||
"emailRequired": "E-mail *",
|
||||
"passwordRequired": "Hasło *",
|
||||
"minChars": "(min. 8)",
|
||||
"creating": "Tworzenie…",
|
||||
"createUser": "Utwórz użytkownika",
|
||||
"resetTitle": "Reset hasła — {email}",
|
||||
"newPassword": "Nowe hasło",
|
||||
"setPassword": "Ustaw hasło",
|
||||
"roles": {
|
||||
"user": "użytkownik",
|
||||
"admin": "administrator",
|
||||
"superadmin": "superadministrator"
|
||||
}
|
||||
},
|
||||
|
||||
"settings": {
|
||||
"eyebrow": "Konto",
|
||||
"title": "Ustawienia",
|
||||
"subtitle": "Zarządzaj kontem, wyglądem i danymi.",
|
||||
|
||||
"account": {
|
||||
"title": "Konto",
|
||||
"name": "Imię i nazwisko",
|
||||
"email": "E-mail",
|
||||
"verified": "Zweryfikowany",
|
||||
"notVerified": "Niezweryfikowany",
|
||||
"resendVerification": "Wyślij ponownie e-mail weryfikacyjny",
|
||||
"sending": "Wysyłanie…",
|
||||
"verificationRequested": "Zamówiono e-mail weryfikacyjny.",
|
||||
"changePassword": "Zmień hasło",
|
||||
"currentPassword": "Obecne hasło",
|
||||
"newPassword": "Nowe hasło",
|
||||
"confirmNewPassword": "Potwierdź nowe hasło",
|
||||
"mismatchYet": "Hasła jeszcze się nie zgadzają.",
|
||||
"tooShort": "Nowe hasło musi mieć co najmniej 8 znaków.",
|
||||
"mismatch": "Nowe hasło i potwierdzenie nie są takie same.",
|
||||
"updating": "Aktualizowanie…",
|
||||
"passwordUpdated": "Hasło zaktualizowane ✓",
|
||||
"updatePassword": "Zaktualizuj hasło"
|
||||
},
|
||||
|
||||
"appearance": {
|
||||
"title": "Wygląd",
|
||||
"theme": "Motyw",
|
||||
"themeLight": "jasny",
|
||||
"themeDark": "ciemny",
|
||||
"themeSystem": "systemowy",
|
||||
"language": "Język",
|
||||
"languageHint": "Tekst aplikacji oraz nazwy miesięcy i dni.",
|
||||
"languageFallbackHint": "Ten język nie jest jeszcze przetłumaczony — tekst aplikacji pozostanie po angielsku.",
|
||||
"region": "Region",
|
||||
"regionHint": "Format liczb i waluty.",
|
||||
"dateFormat": "Format daty",
|
||||
"dateExample": "Przykład: {example}",
|
||||
"currency": "Waluta",
|
||||
"currencyExample": "Przykład: {example} — tylko wyświetlanie, kwoty nie są przeliczane.",
|
||||
"fontSize": "Rozmiar czcionki",
|
||||
"fontSmall": "mała",
|
||||
"fontMedium": "średnia",
|
||||
"fontLarge": "duża"
|
||||
},
|
||||
|
||||
"profile": {
|
||||
"title": "Profil",
|
||||
"avatarAlt": "Awatar",
|
||||
"uploading": "Przesyłanie…",
|
||||
"uploadPhoto": "Prześlij zdjęcie",
|
||||
"bio": "O mnie",
|
||||
"bioPlaceholder": "Krótka notatka widoczna dla innych osób w Twoim gospodarstwie domowym.",
|
||||
"saveBio": "Zapisz opis"
|
||||
},
|
||||
|
||||
"privacy": {
|
||||
"title": "Prywatność i bezpieczeństwo",
|
||||
"signOut": "Wyloguj się",
|
||||
"body": "Uwierzytelnianie dwuskładnikowe nie jest jeszcze dostępne. Sesje opierają się na tokenach wydawanych przez serwer, które wygasają samoczynnie, więc wylogowanie tutaj kończy tylko sesję na tym urządzeniu — nie ma listy urządzeń do unieważnienia. Aby wylogować wszystkie urządzenia, zmień hasło powyżej."
|
||||
},
|
||||
|
||||
"advanced": {
|
||||
"title": "Zaawansowane",
|
||||
"exportTitle": "Eksportuj swoje dane",
|
||||
"exportBody": "Pobierz swój profil oraz wszystkie samochody, wpisy serwisowe i części w formacie JSON.",
|
||||
"preparing": "Przygotowywanie…",
|
||||
"exportAction": "Eksportuj dane",
|
||||
"importTitle": "Importuj swoje dane",
|
||||
"importBody": "Dodaj samochody z wcześniej wyeksportowanego pliku JSON. Tworzy to nowe wpisy — nic nie jest scalane ani nadpisywane.",
|
||||
"importing": "Importowanie…",
|
||||
"importAction": "Importuj dane",
|
||||
"notJson": "Ten plik nie jest poprawnym plikiem JSON.",
|
||||
"notExport": "Ten plik nie wygląda na eksport z DriverVault (brak listy \"cars\").",
|
||||
"confirmImport": "Zaimportować samochody z tego pliku ({count})? Zostaną dodane nowe wpisy — istniejące samochody nie zostaną scalone ani nadpisane.",
|
||||
"imported": "Zaimportowano: samochody ({cars}), wpisy serwisowe ({services}), części ({parts})."
|
||||
},
|
||||
|
||||
"danger": {
|
||||
"title": "Strefa niebezpieczna",
|
||||
"body": "Usunięcie konta usuwa Twój login i profil. Nie usuwa samochodów ani historii serwisowej współdzielonych w gospodarstwie domowym. Obowiązuje 3-dniowy okres karencji, zanim usunięcie stanie się ostateczne — do tego czasu możesz je anulować.",
|
||||
"deleteAccount": "Usuń moje konto",
|
||||
"typeToConfirm": "Wpisz {email}, aby potwierdzić",
|
||||
"requesting": "Wysyłanie żądania…",
|
||||
"requestDeletion": "Zażądaj usunięcia",
|
||||
"requestedOn": "Żądanie usunięcia konta złożono {date}.",
|
||||
"canStillCancel": "Nadal możesz je anulować — stanie się ostateczne po 3-dniowym okresie karencji.",
|
||||
"cooldownPassed": "Okres karencji minął. Możesz teraz dokończyć usuwanie.",
|
||||
"cancelRequest": "Anuluj żądanie usunięcia",
|
||||
"finalize": "Trwale usuń moje konto",
|
||||
"confirmFinalize": "To trwale usunie Twoje konto. Tej operacji nie można cofnąć. Kontynuować?"
|
||||
}
|
||||
},
|
||||
|
||||
"car": {
|
||||
"allCars": "← Wszystkie samochody",
|
||||
"share": "Udostępnij",
|
||||
"shared": "Udostępniony",
|
||||
"sharedReadOnly": "Udostępniony · tylko do odczytu",
|
||||
|
||||
"tabs": {
|
||||
"info": "Informacje",
|
||||
"services": "Historia serwisowa",
|
||||
"technical": "Historia przeglądów",
|
||||
"maintenance": "Naprawy",
|
||||
"fuel": "Paliwo",
|
||||
"documents": "Dokumenty",
|
||||
"parts": "Katalog części",
|
||||
"reminders": "Przypomnienia"
|
||||
},
|
||||
|
||||
"info": {
|
||||
"oilSpec": "Specyfikacja oleju silnikowego",
|
||||
"transmissionOil": "Olej przekładniowy",
|
||||
"differentialOil": "Olej mostu napędowego",
|
||||
"brakeFluid": "Płyn hamulcowy",
|
||||
"coolant": "Płyn chłodniczy",
|
||||
"odometer": "Przebieg",
|
||||
"serviceInterval": "Interwał serwisowy",
|
||||
"nextDue": "Następny termin",
|
||||
"registrationPlate": "Numer rejestracyjny",
|
||||
"registrationCountry": "Kraj rejestracji",
|
||||
"vin": "VIN",
|
||||
"fuelType": "Rodzaj paliwa",
|
||||
"buildDate": "Data produkcji",
|
||||
"firstRegistration": "Pierwsza rejestracja"
|
||||
},
|
||||
|
||||
"services": {
|
||||
"title": "Historia serwisowa",
|
||||
"add": "Dodaj serwis",
|
||||
"empty": "Brak wpisów serwisowych.",
|
||||
"colDate": "Data",
|
||||
"colKm": "Km",
|
||||
"colNextDate": "Następna data",
|
||||
"colNextKm": "Następny przebieg",
|
||||
"colOil": "Olej i filtr oleju",
|
||||
"colEngineFilter": "Filtr powietrza silnika",
|
||||
"colCabinFilter": "Filtr kabinowy",
|
||||
"colNotes": "Notatki",
|
||||
"colFile": "Plik",
|
||||
"confirmDelete": "Usunąć ten wpis serwisowy?"
|
||||
},
|
||||
|
||||
"technical": {
|
||||
"title": "Historia przeglądów technicznych",
|
||||
"subtitle": "Obowiązkowe badania techniczne. Powtarzają się wyłącznie w oparciu o czas, niezależnie od przebiegu.",
|
||||
"add": "Dodaj przegląd",
|
||||
"empty": "Brak przeglądów technicznych.",
|
||||
"colDate": "Data",
|
||||
"colResult": "Wynik",
|
||||
"colNextCheck": "Następny przegląd",
|
||||
"colStatus": "Status",
|
||||
"colStation": "Stacja",
|
||||
"colCost": "Koszt",
|
||||
"colNotes": "Notatki",
|
||||
"colFile": "Plik",
|
||||
"passed": "Pozytywny",
|
||||
"failed": "Negatywny",
|
||||
"confirmDelete": "Usunąć ten przegląd techniczny?"
|
||||
},
|
||||
|
||||
"maintenance": {
|
||||
"title": "Naprawy",
|
||||
"subtitle": "Wizyty w warsztacie i naprawy. Rutynowa obsługa znajduje się w Historii serwisowej.",
|
||||
"add": "Zapisz wizytę",
|
||||
"empty": "Brak zapisanych wizyt w warsztacie.",
|
||||
"colDate": "Data",
|
||||
"colKm": "Km",
|
||||
"colType": "Rodzaj",
|
||||
"colWork": "Wykonane prace",
|
||||
"colWorkshop": "Warsztat",
|
||||
"colStatus": "Status",
|
||||
"colCost": "Koszt",
|
||||
"colFile": "Plik",
|
||||
"underWarranty": "Na gwarancji · pozostało {days} dni",
|
||||
"confirmDelete": "Usunąć tę wizytę w warsztacie?"
|
||||
},
|
||||
|
||||
"fuel": {
|
||||
"title": "Paliwo",
|
||||
"subtitle": "Zużycie liczone jest między pełnymi bakami.",
|
||||
"add": "Zapisz tankowanie",
|
||||
"empty": "Brak zapisanych tankowań.",
|
||||
"average": "Średnie",
|
||||
"best": "Najlepsze",
|
||||
"worst": "Najgorsze",
|
||||
"costPerKm": "Koszt na km",
|
||||
"refills": "Tankowania",
|
||||
"totalLiters": "Łącznie litrów",
|
||||
"totalSpent": "Łącznie wydano",
|
||||
"trackedDistance": "Zmierzony dystans",
|
||||
"avgPrice": "Śr. cena {price}/l",
|
||||
"needTwoTanks": "Zapisz co najmniej dwa pełne baki, aby zobaczyć zużycie.",
|
||||
"colDate": "Data",
|
||||
"colKm": "Km",
|
||||
"colLiters": "Litry",
|
||||
"colCost": "Koszt",
|
||||
"colPerLiter": "Za litr",
|
||||
"colDistance": "Dystans",
|
||||
"colConsumption": "Zużycie",
|
||||
"colStation": "Stacja",
|
||||
"colFile": "Plik",
|
||||
"partial": "częściowe",
|
||||
"gap": "luka",
|
||||
"confirmDelete": "Usunąć to tankowanie?"
|
||||
},
|
||||
|
||||
"documents": {
|
||||
"title": "Dokumenty",
|
||||
"subtitle": "Ubezpieczenie, zaświadczenia i inne dokumenty z terminami odnowienia.",
|
||||
"add": "Dodaj dokument",
|
||||
"empty": "Brak dokumentów.",
|
||||
"colType": "Rodzaj",
|
||||
"colTitle": "Nazwa",
|
||||
"colProvider": "Wystawca",
|
||||
"colIssued": "Wystawiono",
|
||||
"colRenewal": "Odnowienie",
|
||||
"colStatus": "Status",
|
||||
"colFile": "Plik",
|
||||
"confirmDelete": "Usunąć ten dokument?"
|
||||
},
|
||||
|
||||
"reminders": {
|
||||
"title": "Przypomnienia",
|
||||
"subtitle": "Przypomnienia o odnowieniach i serwisach dodawane są automatycznie na podstawie dokumentów i historii serwisowej.",
|
||||
"add": "Dodaj przypomnienie",
|
||||
"empty": "Nie ma jeszcze o czym przypominać.",
|
||||
"automatic": "Automatyczne",
|
||||
"repeats": "Powtarza się",
|
||||
"at": "przy {km}",
|
||||
"doneRollForward": "Gotowe · przenieś dalej",
|
||||
"markDone": "Oznacz jako gotowe",
|
||||
"reopen": "Otwórz ponownie",
|
||||
"confirmDelete": "Usunąć to przypomnienie?"
|
||||
},
|
||||
|
||||
"parts": {
|
||||
"title": "Katalog części",
|
||||
"add": "Dodaj część",
|
||||
"empty": "Brak części.",
|
||||
"colPart": "Część",
|
||||
"colPartNumber": "Numer części",
|
||||
"colNotes": "Notatki",
|
||||
"colFile": "Plik",
|
||||
"confirmDelete": "Usunąć tę część?"
|
||||
},
|
||||
|
||||
"delete": {
|
||||
"title": "Usunąć ten samochód?",
|
||||
"body": "To trwale usunie {name} i wszystko, co zostało w nim zapisane — {services}, {maintenance}, {fuel}, {documents} i {parts}. Tej operacji nie można cofnąć.",
|
||||
"services": {
|
||||
"one": "{n} wpis serwisowy",
|
||||
"few": "{n} wpisy serwisowe",
|
||||
"many": "{n} wpisów serwisowych",
|
||||
"other": "{n} wpisu serwisowego"
|
||||
},
|
||||
"maintenance": {
|
||||
"one": "{n} wizyta w warsztacie",
|
||||
"few": "{n} wizyty w warsztacie",
|
||||
"many": "{n} wizyt w warsztacie",
|
||||
"other": "{n} wizyty w warsztacie"
|
||||
},
|
||||
"fuel": {
|
||||
"one": "{n} tankowanie",
|
||||
"few": "{n} tankowania",
|
||||
"many": "{n} tankowań",
|
||||
"other": "{n} tankowania"
|
||||
},
|
||||
"documents": {
|
||||
"one": "{n} dokument",
|
||||
"few": "{n} dokumenty",
|
||||
"many": "{n} dokumentów",
|
||||
"other": "{n} dokumentu"
|
||||
},
|
||||
"parts": {
|
||||
"one": "{n} część",
|
||||
"few": "{n} części",
|
||||
"many": "{n} części",
|
||||
"other": "{n} części"
|
||||
},
|
||||
"typeToConfirm": "Wpisz {name}, aby potwierdzić",
|
||||
"deleting": "Usuwanie…",
|
||||
"confirm": "Usuń trwale"
|
||||
}
|
||||
},
|
||||
|
||||
"attachment": {
|
||||
"legend": "Załącznik",
|
||||
"hint": "PDF lub obraz, do 10 MB.",
|
||||
"attached": "Załączono: {name}",
|
||||
"willBeRemoved": "Załącznik zostanie usunięty przy zapisie."
|
||||
},
|
||||
|
||||
"forms": {
|
||||
"car": {
|
||||
"addTitle": "Dodaj samochód",
|
||||
"editTitle": "Edytuj samochód",
|
||||
"name": "Nazwa *",
|
||||
"make": "Marka",
|
||||
"model": "Model",
|
||||
"year": "Rok",
|
||||
"registration": "Numer rejestracyjny",
|
||||
"registrationCountry": "Kraj rejestracji",
|
||||
"registrationCountryPlaceholder": "Polska",
|
||||
"vin": "VIN",
|
||||
"vinPlaceholder": "Numer identyfikacyjny pojazdu",
|
||||
"fuelType": "Rodzaj paliwa",
|
||||
"buildDate": "Data produkcji",
|
||||
"firstRegistration": "Pierwsza rejestracja",
|
||||
"oilSpec": "Specyfikacja oleju silnikowego",
|
||||
"currentKm": "Aktualny przebieg (km)",
|
||||
"transmissionOilSpec": "Specyfikacja oleju przekładniowego",
|
||||
"differentialOilSpec": "Specyfikacja oleju mostu napędowego",
|
||||
"brakeFluidSpec": "Specyfikacja płynu hamulcowego",
|
||||
"coolantSpec": "Specyfikacja płynu chłodniczego",
|
||||
"serviceIntervalDays": "Interwał serwisowy (dni)",
|
||||
"serviceIntervalKm": "Interwał serwisowy (km)",
|
||||
"technicalCheckIntervalDays": "Interwał przeglądu technicznego (dni)",
|
||||
"technicalCheckHint": "Wstępnie wypełnia termin następnego przeglądu. Każdy przegląd może go nadpisać datą z zaświadczenia.",
|
||||
"submit": "Dodaj samochód"
|
||||
},
|
||||
|
||||
"service": {
|
||||
"addTitle": "Dodaj wpis serwisowy",
|
||||
"editTitle": "Edytuj wpis serwisowy",
|
||||
"date": "Data *",
|
||||
"odometer": "Przebieg (km)",
|
||||
"changedParts": "Wymienione części",
|
||||
"oil": "Olej i filtr oleju",
|
||||
"engineFilter": "Filtr powietrza silnika",
|
||||
"cabinFilter": "Filtr kabinowy",
|
||||
"attachmentLegend": "Paragon lub strona książki serwisowej",
|
||||
"notes": "Notatki",
|
||||
"autoHint": "Data (+{days} dni) i przebieg (+{km}) następnego serwisu są obliczane automatycznie.",
|
||||
"submit": "Dodaj serwis"
|
||||
},
|
||||
|
||||
"technical": {
|
||||
"addTitle": "Dodaj przegląd techniczny",
|
||||
"editTitle": "Edytuj przegląd techniczny",
|
||||
"date": "Data przeglądu *",
|
||||
"result": "Wynik *",
|
||||
"passed": "Pozytywny",
|
||||
"failed": "Negatywny",
|
||||
"validUntil": "Ważny do",
|
||||
"failedHint": "Negatywny przegląd niczego nie potwierdza, więc nie wyznacza następnego terminu.",
|
||||
"derivedHint": "Pozostaw puste, aby użyć interwału samochodu (+{days} dni → {date}). Wpisz datę z zaświadczenia, jeśli jest inna.",
|
||||
"cost": "Koszt",
|
||||
"station": "Stacja",
|
||||
"stationPlaceholder": "Stacja Kontroli Pojazdów",
|
||||
"attachmentLegend": "Zaświadczenie o przeglądzie",
|
||||
"notes": "Notatki",
|
||||
"submit": "Dodaj przegląd"
|
||||
},
|
||||
|
||||
"part": {
|
||||
"addTitle": "Dodaj część",
|
||||
"editTitle": "Edytuj część",
|
||||
"name": "Nazwa części *",
|
||||
"namePlaceholder": "Filtr oleju",
|
||||
"partNumber": "Numer części",
|
||||
"notes": "Notatki",
|
||||
"notesPlaceholder": "Pasuje do 2015–2020 · kupować parami",
|
||||
"attachmentLegend": "Zdjęcie lub karta katalogowa",
|
||||
"submit": "Dodaj część"
|
||||
},
|
||||
|
||||
"fuel": {
|
||||
"addTitle": "Zapisz tankowanie",
|
||||
"editTitle": "Edytuj tankowanie",
|
||||
"date": "Data *",
|
||||
"odometer": "Przebieg (km) *",
|
||||
"liters": "Litry *",
|
||||
"cost": "Koszt całkowity",
|
||||
"pricePerLiter": "Cena za litr: {price}",
|
||||
"tank": "Bak",
|
||||
"fullTank": "Zatankowano do pełna",
|
||||
"missedFill": "Nie zapisałem tankowania przed tym",
|
||||
"tankHint": "Zużycie liczone jest między pełnymi bakami, więc tankowania częściowe wliczają się do następnego pełnego. Oznaczenie pominiętego tankowania wyklucza ten odcinek z obliczeń, zamiast pokazywać nierealnie niskie spalanie.",
|
||||
"station": "Stacja",
|
||||
"notes": "Notatki",
|
||||
"attachmentLegend": "Paragon",
|
||||
"submit": "Zapisz tankowanie"
|
||||
},
|
||||
|
||||
"maintenance": {
|
||||
"addTitle": "Zapisz wizytę w warsztacie",
|
||||
"editTitle": "Edytuj wizytę w warsztacie",
|
||||
"date": "Data *",
|
||||
"odometer": "Przebieg (km)",
|
||||
"type": "Rodzaj",
|
||||
"status": "Status",
|
||||
"description": "Co zostało zrobione *",
|
||||
"descriptionPlaceholder": "Wymiana alternatora i paska napędowego",
|
||||
"workshop": "Warsztat",
|
||||
"location": "Lokalizacja",
|
||||
"partsUsed": "Wymienione części",
|
||||
"partsUsedPlaceholder": "Alternator 27060-0T010, pasek 90916-02660",
|
||||
"laborCost": "Koszt robocizny",
|
||||
"partsCost": "Koszt części",
|
||||
"total": "Razem: {total}",
|
||||
"invoiceNumber": "Numer faktury",
|
||||
"warrantyUntil": "Gwarancja do",
|
||||
"attachmentLegend": "Faktura",
|
||||
"notes": "Notatki",
|
||||
"submit": "Zapisz wizytę"
|
||||
},
|
||||
|
||||
"document": {
|
||||
"addTitle": "Dodaj dokument",
|
||||
"editTitle": "Edytuj dokument",
|
||||
"type": "Rodzaj",
|
||||
"title": "Nazwa *",
|
||||
"titlePlaceholder": "OC 2026",
|
||||
"provider": "Wystawca",
|
||||
"reference": "Nr polisy / zaświadczenia",
|
||||
"issued": "Wystawiono",
|
||||
"renewalDate": "Data odnowienia",
|
||||
"renewalHint": "Pozostaw datę odnowienia pustą dla dokumentu bezterminowego. Ustawienie jej automatycznie doda przypomnienie.",
|
||||
"cost": "Koszt",
|
||||
"attachmentLegend": "Skan lub zdjęcie",
|
||||
"notes": "Notatki",
|
||||
"submit": "Dodaj dokument"
|
||||
},
|
||||
|
||||
"reminder": {
|
||||
"addTitle": "Dodaj przypomnienie",
|
||||
"editTitle": "Edytuj przypomnienie",
|
||||
"title": "Nazwa *",
|
||||
"titlePlaceholder": "Zmiana na opony zimowe",
|
||||
"type": "Rodzaj",
|
||||
"remindMe": "Przypomnij mi",
|
||||
"onDate": "W dniu",
|
||||
"atOdometer": "Przy przebiegu (km)",
|
||||
"triggerHint": "Ustaw jedno lub oba — przy obu liczy się to, co nastąpi wcześniej.",
|
||||
"currentKm": "Samochód ma teraz {km}.",
|
||||
"repeat": "Powtarzanie (opcjonalnie)",
|
||||
"everyDays": "Co … dni",
|
||||
"everyKm": "Co … km",
|
||||
"recurringHint": "Oznaczenie jako gotowe przeniesie je dalej, zamiast zamknąć.",
|
||||
"oneOffHint": "Pozostaw puste dla jednorazowego przypomnienia, które zamknie się po oznaczeniu jako gotowe.",
|
||||
"notes": "Notatki",
|
||||
"noTrigger": "Ustaw datę, przebieg lub oba.",
|
||||
"submit": "Dodaj przypomnienie"
|
||||
},
|
||||
|
||||
"share": {
|
||||
"title": "Udostępnij {name}",
|
||||
"body": "Daj innemu użytkownikowi dostęp do tego samochodu. Tylko do odczytu pozwala na podgląd; odczyt i zapis pozwala też edytować samochód oraz jego wpisy serwisowe i części.",
|
||||
"userEmail": "E-mail użytkownika",
|
||||
"read": "Tylko do odczytu",
|
||||
"write": "Odczyt i zapis",
|
||||
"submit": "Udostępnij",
|
||||
"peopleWithAccess": "Osoby z dostępem",
|
||||
"notShared": "Jeszcze nikomu nie udostępniono."
|
||||
}
|
||||
},
|
||||
|
||||
"enums": {
|
||||
"fuelType": {
|
||||
"petrol": "Benzyna",
|
||||
"petrol_lpg": "Benzyna + LPG",
|
||||
"diesel": "Diesel",
|
||||
"diesel_lpg": "Diesel + LPG",
|
||||
"hybrid": "Hybryda",
|
||||
"electric": "Elektryczny",
|
||||
"hydrogen": "Wodór"
|
||||
},
|
||||
"maintenanceType": {
|
||||
"repair": "Naprawa",
|
||||
"inspection": "Przegląd",
|
||||
"bodywork": "Blacharka",
|
||||
"tyres": "Opony",
|
||||
"diagnostics": "Diagnostyka",
|
||||
"recall": "Akcja serwisowa",
|
||||
"warranty": "Naprawa gwarancyjna",
|
||||
"other": "Inne"
|
||||
},
|
||||
"maintenanceStatus": {
|
||||
"scheduled": "Zaplanowana",
|
||||
"in_progress": "W trakcie",
|
||||
"completed": "Zakończona"
|
||||
},
|
||||
"documentType": {
|
||||
"insurance": "Ubezpieczenie",
|
||||
"pollution": "Zaświadczenie o emisji spalin",
|
||||
"registration": "Dowód rejestracyjny",
|
||||
"inspection": "Przegląd",
|
||||
"roadTax": "Podatek drogowy",
|
||||
"warranty": "Gwarancja",
|
||||
"other": "Inne"
|
||||
},
|
||||
"reminderTypeShort": {
|
||||
"maintenance": "Naprawa",
|
||||
"document": "Dokument",
|
||||
"service": "Serwis",
|
||||
"inspection": "Przegląd",
|
||||
"other": "Inne"
|
||||
},
|
||||
"reminderType": {
|
||||
"maintenance": "Naprawa",
|
||||
"document": "Odnowienie dokumentu",
|
||||
"service": "Serwis",
|
||||
"inspection": "Przegląd",
|
||||
"other": "Inne"
|
||||
}
|
||||
},
|
||||
|
||||
"status": {
|
||||
"noData": "Brak danych",
|
||||
"serviceOverdueDays": "Serwis zaległy {days} dni",
|
||||
"dueInDays": "Termin za {days} dni",
|
||||
"okDays": "OK · {days} dni",
|
||||
"noKm": "Brak przebiegu",
|
||||
"serviceOverdueKm": "Serwis zaległy {km} km",
|
||||
"inKm": "Za {km} km",
|
||||
"kmLeft": "Pozostało {km} km",
|
||||
"expiredAgo": "Wygasło {days} dni temu",
|
||||
"expiresToday": "Wygasa dzisiaj",
|
||||
"renewInDays": "Odnowienie za {days} dni",
|
||||
"validDays": "Ważne · {days} dni",
|
||||
"noExpiry": "Bezterminowe",
|
||||
"done": "Gotowe",
|
||||
"noTrigger": "Brak wyzwalacza",
|
||||
"overdue": "Zaległe",
|
||||
"overdueBy": "Zaległe {parts}",
|
||||
"dueIn": "Termin za {parts}",
|
||||
"upcoming": "Nadchodzące",
|
||||
"today": "dzisiaj",
|
||||
"days": "{days} dni",
|
||||
"km": "{km} km"
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user