Files
DriverVault/Phone App/assets/i18n/da.json
T
tajniak81andClaude Opus 5 a2d9efec7e Phone App: take the car screen off hardcoded English
The previous commit left the car screen half translated: its tab labels went
through t(), and everything underneath them did not. A Polish user opening a
car got translated tabs over English tiles, English forms and English
dialogs, which is worse than either extreme because it reads as a bug rather
than as a missing translation.

So the whole screen and everything it opens now reads from the language
files: the record tiles, the share and delete-car dialogs, the service and
part sheets it hosts, record_form_sheets.dart, car_form_sheet.dart, and the
attachment field whose buttons surface inside all of them.

Almost none of these strings are new. The Web App has said all of this in
three languages since b6bb6b1, so forms.*, enums.*, attachment.* and errors.*
are copied out of its language files the same way car.* was, and Polish and
Danish arrive complete. What is written here is only what the phone alone
needs, and the categories are worth naming because they are the reason the
two apps' files are not identical: tooltips, because the web labels its
buttons; the tiles' running prose, because the web lays the same data out as
table columns; client-side validation, because the web leans on the browser's
`required`; and the snackbars.

Three things changed shape rather than just wording.

The per-record delete prompts were one template with a noun slotted in -
"Delete this $what?" - which does not survive translation into a language
that inflects the noun. Each collection now names its own confirmation
string, which is what the web already had.

The delete-car dialog counted with a hand-rolled `"$n $noun${n == 1 ? '' :
's'}"`. Polish has three plural forms, so that could not be translated at
all; it now goes through the CLDR plurals in car.delete.*. It also only ever
named service records and parts, while the cascade takes maintenance, fuel,
charges and documents too - the translated body names all six, so it is now
passed the whole data set rather than two counts.

The enum labels (fuel types, maintenance type/status, document and reminder
types) were four const maps duplicated between the tiles and the pickers.
They are one lookup against enums.* now, with an unknown value falling back
to the raw key rather than a blank - the server owns that enum, and a value
added there should stay legible in an app that has not caught up.

Found and fixed while testing: the view picker rendered the literal string
"car.tabs.provider" as a row label on an unlinked car. That key does not
exist by design - a linked car's tab is named after the service, an unlinked
one falls back to car.tabs.connected - and the picker was the one caller that
did not know it.

Verified by flutter analyze (clean), flutter test - 19 pass, 7 of them new -
and flutter build apk --debug. The new tests cover what the analyzer cannot
see: the lookups built from a key at render time (car.tabs.$key,
enums.fuelType.$v, the delete dialog's plural counts, the connected service's
readings) are checked to have a real label in all three languages, so a
catalogue entry with no translation fails a test instead of reaching a screen
as a raw key path. That is the check that caught the bug above. A one-off
script also confirmed all 550 static t() keys resolve in en.json.

Not verified: still nothing run against a live API Server or on a device.

Known gaps, deliberately left: admin_users_screen.dart is still English, and
settings.integrations.* / charging.control.* exist in en.json only. The
second one is not the phone's alone - the Web App has exactly the same gap,
so translating that OCPP and connector vocabulary belongs to both apps in one
pass rather than letting the phone run ahead of the app the strings are
copied from. Both are now recorded in TRANSLATIONS.md, which had claimed the
car screen as untranslated and the web app as complete.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-21 21:49:48 +02:00

851 lines
32 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"common": {
"save": "Gem",
"saving": "Gemmer…",
"saved": "Gemt ✓",
"cancel": "Annuller",
"remove": "Fjern",
"retry": "Prøv igen",
"required": "Påkrævet",
"confirm": "Bekræft",
"empty": "—",
"saveChanges": "Gem ændringer",
"loading": "Indlæser…",
"edit": "Rediger",
"open": "Åbn",
"delete": "Slet",
"done": "Færdig",
"undo": "Fortryd",
"download": "Download",
"yes": "Ja",
"no": "Nej"
},
"nav": {
"garage": "Garage",
"charging": "Opladning",
"settings": "Indstillinger",
"users": "Brugere"
},
"login": {
"tagline": "Styr på din bil.",
"email": "E-mail",
"password": "Adgangskode",
"showPassword": "Vis adgangskode",
"hidePassword": "Skjul adgangskode",
"submit": "Log ind",
"submitting": "Logger ind…",
"or": "eller",
"signInWithFace": "Log ind med ansigtsgenkendelse",
"signInWithFingerprint": "Log ind med fingeraftryk",
"signInWithBiometrics": "Log ind med biometri",
"enrollTitle": "Aktivér biometrisk login?",
"enrollBody": "Næste gang kan du logge ind med {method} i stedet for at skrive din adgangskode.",
"enrollNotNow": "Ikke nu",
"enrollEnable": "Aktivér",
"methodFace": "ansigtsgenkendelse",
"methodFingerprint": "dit fingeraftryk",
"methodBiometrics": "biometri",
"bioReasonSignInAs": "Log ind som {email}",
"bioReasonSignIn": "Log ind på DriverVault",
"savedInvalid": "Det gemte login er ikke længere gyldigt. Log ind med din adgangskode.",
"serverSettings": "Serverindstillinger",
"apiServerUrl": "API-serverens adresse",
"leaveBlank": "Lad feltet stå tomt for at bruge standarden.",
"reset": "Nulstil",
"savedNote": "Gemt ✓",
"resetNote": "Nulstillet ✓"
},
"lock": {
"title": "DriverVault er låst",
"reason": "Lås DriverVault op",
"unlock": "Lås op",
"unlocking": "Låser op…",
"usePassword": "Brug adgangskode i stedet"
},
"dashboard": {
"eyebrow": "DINE BILER",
"title": "Garage",
"addCar": "Tilføj bil",
"lightMode": "Lys tilstand",
"darkMode": "Mørk tilstand",
"logOut": "Log ud",
"empty": "Ingen biler endnu.",
"shared": "Delt",
"sharedReadOnly": "Delt · skrivebeskyttet",
"serviceLife": "SERVICEINTERVAL BRUGT",
"lastService": "Seneste service",
"currentOdometer": "Nuværende kilometerstand",
"nextDue": "Næste service",
"nextDueKm": "Næste service (km)",
"serviceRecords": {
"one": "{n} servicepost",
"other": "{n} serviceposter"
}
},
"charging": {
"eyebrow": "OPLADNING OG KORT",
"title": "Ladere i nærheden",
"tabs": {
"public": "Offentlige ladere",
"home": "Hjemmeladere"
},
"liveMap": "Live-kort",
"youAreHere": "Du er her",
"session": {
"chargingNow": "Oplader nu",
"rate": "Effekt",
"added": "Tilføjet",
"cost": "Pris",
"done": "Færdig",
"stop": "Stop opladning",
"idle": "Oplader ikke",
"idleHint": "Tilslut ved en station for at starte en session."
},
"stations": {
"heading": "I nærheden",
"homeHeading": "Dine ladere",
"noControlHint": "Aktivér Own eller Proxy CSMS under Indstillinger → Integrationer for at styre din hjemmelader her.",
"count": {
"one": "{n} station",
"other": "{n} stationer"
},
"free": "{avail} af {total} ledige",
"full": "Optaget",
"offPeak": "uden for spidsbelastning",
"homeCharger": "Hjemmelader"
}
},
"settings": {
"tabs": {
"personal": "Personlige indstillinger",
"integrations": "Integrationer"
},
"title": "Indstillinger",
"account": {
"title": "Konto",
"name": "Navn",
"nameSaved": "Navn gemt.",
"email": "E-mail",
"verified": "Bekræftet",
"notVerified": "Ikke bekræftet",
"sending": "Sender…",
"resendVerification": "Send bekræftelsesmail igen",
"verificationRequested": "Bekræftelsesmail anmodet.",
"changePassword": "Skift adgangskode",
"currentPassword": "Nuværende adgangskode",
"newPassword": "Ny adgangskode (mindst 8)",
"confirmNewPassword": "Bekræft ny adgangskode",
"tooShort": "Den nye adgangskode skal være på mindst 8 tegn.",
"mismatch": "Den nye adgangskode og bekræftelsen stemmer ikke overens.",
"passwordUpdated": "Adgangskode opdateret.",
"updating": "Opdaterer…",
"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.",
"currency": "Valuta",
"currencyHint": "Eksempel: {example}. Beløb er kun til visning — intet omregnes.",
"dateFormat": "Datoformat",
"dateHint": "Eksempel: {example}",
"fontSize": "Skriftstørrelse",
"fontSmall": "Lille",
"fontMedium": "Mellem",
"fontLarge": "Stor"
},
"profile": {
"title": "Profil",
"working": "Arbejder…",
"uploadPhoto": "Upload billede",
"remove": "Fjern",
"bio": "Om mig",
"bioHint": "En kort note, som andre i din husstand kan se.",
"bioSaved": "Beskrivelse gemt.",
"saveBio": "Gem beskrivelse"
},
"security": {
"title": "Sikkerhed",
"checkingDevice": "Tjekker enhed…",
"biometricSignIn": "Biometrisk login",
"biometricAvailable": "Log ind med {method} i stedet for din adgangskode.",
"biometricUnavailable": "Der er ikke registreret biometri på denne enhed.",
"methodFaceOrFingerprint": "ansigt eller fingeraftryk",
"methodFace": "ansigtsgenkendelse",
"methodFingerprint": "fingeraftryk",
"methodBiometrics": "biometri",
"turnedOff": "Biometrisk login slået fra",
"enabled": "Biometrisk login aktiveret",
"couldNotEnable": "Kunne ikke aktivere: {error}",
"confirmPassword": "Bekræft din adgangskode",
"password": "Adgangskode"
},
"org": {
"title": "Organisation",
"titleAll": "Organisationer",
"subtitleOwn": "Den organisation du administrerer",
"subtitleNone": "Opret en for at administrere dit eget team",
"subtitleAll": "Enheder, som brugere tilhører",
"nameLabel": "Organisationsnavn",
"namePlaceholder": "Acme Fleet",
"newOrg": "Ny organisation",
"create": "Opret organisation",
"createHint": "Du bliver dens administrator og kan derefter tilføje og administrere brugere.",
"rename": "Omdøb",
"delete": "Slet",
"deleteTitle": "Slet organisation?",
"empty": "Ingen organisationer endnu.",
"confirmDelete": "Slet organisationen „{name}“? Dette kan ikke fortrydes.",
"confirmDeleteOwn": "Slet din organisation „{name}“? Du fjernes fra den og bliver en almindelig bruger. Dette kan ikke fortrydes."
},
"privacy": {
"title": "Privatliv og sikkerhed",
"body": "Tofaktorgodkendelse er ikke tilgængelig endnu. Sessioner bygger på tokens udstedt af serveren, som udløber af sig selv, så at logge ud afslutter kun sessionen på denne enhed. For at logge alle enheder ud skal du skifte din adgangskode ovenfor.",
"signOut": "Log ud"
},
"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",
"typeEmailPrompt": "Skriv din e-mail for at bekræfte.",
"requesting": "Anmoder…",
"requestDeletion": "Anmod om sletning",
"requestedOn": "Sletning af konto anmodet den {date}. {tail}",
"cooldownPassed": "Betænkningstiden er udløbet. Du kan nu gennemføre sletningen.",
"canStillCancel": "Du kan stadig annullere — det bliver permanent efter 3 dages betænkningstid.",
"cancelRequest": "Annuller anmodning om sletning",
"permanentlyDelete": "Slet permanent",
"finalizeTitle": "Slet konto?",
"finalizeBody": "Dette sletter din konto permanent. Det kan ikke fortrydes.",
"delete": "Slet"
},
"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).",
"exported": "Gemte {file}",
"open": "Åbn",
"openFailed": "Filen kunne ikke åbnes."
}
},
"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",
"warrantyExpiredAgo": "Garanti udløb for {days} d siden",
"warrantyEndsIn": "Garanti slutter om {days} d",
"underWarranty": "Under garanti · {days} d"
},
"car": {
"allCars": "← Alle biler",
"share": "Del",
"shared": "Delt",
"sharedReadOnly": "Delt · skrivebeskyttet",
"tabs": {
"connected": "Tilsluttet tjeneste",
"info": "Oplysninger",
"services": "Servicehistorik",
"technical": "Synshistorik",
"maintenance": "Værksted",
"fuel": "Brændstofudgifter",
"charging": "Opladningsudgifter",
"documents": "Dokumenter",
"parts": "Reservedelskatalog",
"reminders": "Påmindelser",
"dragHint": "Træk en fane for at ændre rækkefølgen af bilens faner."
},
"viewPicker": {
"open": "Hvad denne bils side viser",
"title": "Hvad denne bil viser",
"subtitle": "Vælg hvilke afsnit og oplysninger denne bils side viser. Det gælder alle, bilen er delt med.",
"tabsHeading": "Faner",
"fieldsHeading": "Oplysninger",
"alwaysOn": "{tab} er altid tilgængelig.",
"fieldsOrderHint": "Træk felterne på fanen Oplysninger for at ændre deres rækkefølge.",
"reorderHint": "Træk en række i håndtaget for at ændre rækkefølgen.",
"tabsReorder": "Faneblade",
"fieldsReorder": "Informationsfelter"
},
"provider": {
"subtitle": "Live-data fra din {label}-konto.",
"refresh": "Opdater",
"refreshing": "Opdaterer…",
"updated": "Opdateret {time}",
"vehicle": "Køretøj",
"readings": "Aktuelle målinger",
"dragHint": "Træk en aflæsning for at ændre rækkefølgen.",
"noData": "{label} returnerede ingen data for denne bil.",
"raw": "Rå svar",
"allFields": "Alle oplyste felter",
"truncated": "Kun de første {n} felter er vist — resten findes i det rå svar nedenfor.",
"sectionEmpty": "Intet oplyst.",
"sectionFailed": "Kunne ikke hentes",
"own": "Kun din egen konto bruges, så loginoplysninger deles aldrig sammen med en bil.",
"odometerSuggest": "{label} oplyser {km}, altså mere end bilens gemte kilometerstand.",
"updateOdometer": "Opdater kilometerstand",
"updatingOdometer": "Opdaterer…",
"unlink": "Afbryd",
"unlinkConfirm": "Afbryd denne bil fra {label}? Intet gemt slettes.",
"connectTitle": "Forbind denne bil til en tjeneste",
"connectHint": "Vælg det køretøj på din konto, der svarer til denne bil. Dens data vises så her.",
"connectSubmit": "Forbind køretøj",
"connecting": "Forbinder…",
"noProviders": "Ingen producentkonto er tilsluttet. Tilføj en under Indstillinger › Integrationer.",
"settingsLink": "Åbn Indstillinger",
"sections": {
"telemetry": "Kilometerstand og rækkevidde",
"electric": "Batteri og opladning",
"status": "Døre, ruder og lys",
"health": "Køretøjets tilstand",
"location": "Sidst kendte position",
"serviceHistory": "Servicehistorik hos forhandler",
"notifications": "Notifikationer"
},
"metrics": {
"odometer": "Kilometerstand",
"fuelLevel": "Brændstofniveau",
"fuelRange": "Rækkevidde",
"batteryLevel": "Batteri",
"evRange": "Elektrisk rækkevidde (uden aircon)",
"evRangeWithAc": "Elektrisk rækkevidde (med aircon)",
"chargingStatus": "Opladning",
"location": "Position"
}
},
"info": {
"allHidden": "Alle felter er slået fra for denne bil.",
"dragHint": "Træk et felt for at ændre rækkefølgen af bilens oplysninger.",
"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",
"technicalCheckInterval": "Synsinterval",
"daysValue": {
"one": "{n} dag",
"other": "{n} dage"
}
},
"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?",
"next": "Næste: {date} · {km}",
"chipOil": "Olie og filter",
"chipEngineFilter": "Motorluft",
"chipCabinFilter": "Kabineluft"
},
"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?",
"next": "Næste: {date}"
},
"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?",
"partsUsed": "Dele: {parts}"
},
"fuel": {
"title": "Brændstofudgifter",
"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?",
"fullTank": "Fuld tank",
"partialFill": "Delvis tankning",
"missedBefore": "Manglende tankning før",
"overDistance": "{consumption} · {rate} over {distance}"
},
"charging": {
"title": "Opladningsudgifter",
"subtitle": "Forbruget måles mellem fulde opladninger.",
"add": "Registrér opladning",
"empty": "Ingen opladninger registreret endnu.",
"average": "Gennemsnit",
"best": "Bedste",
"worst": "Værste",
"costPerKm": "Pris pr. km",
"sessions": "Opladninger",
"totalKwh": "Energi i alt",
"totalSpent": "Brugt i alt",
"trackedDistance": "Målt distance",
"avgPrice": "Gns. pris {price}/kWh",
"needTwoCharges": "Registrér mindst to fulde opladninger for at se forbrugstal.",
"colDate": "Dato",
"colKm": "Km",
"colKwh": "kWh",
"colCost": "Pris",
"colPerKwh": "Pr. kWh",
"colDistance": "Distance",
"colConsumption": "Forbrug",
"colLocation": "Ladepunkt",
"colFile": "Fil",
"partial": "delvis",
"gap": "hul",
"confirmDelete": "Slet denne opladning?",
"fullCharge": "Fuld opladning",
"partialCharge": "Delvis opladning",
"missedBefore": "Manglende opladning før",
"overDistance": "{consumption} · {rate} over {distance}"
},
"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?",
"issuedRenews": "Udstedt {issued} · Fornyes {renews}"
},
"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?",
"on": "den {date}",
"repeatsEvery": "Gentages hver {every}",
"autoHint": "Tilføjet automatisk — rediger den post, den stammer fra, for at ændre den."
},
"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}, {charging}, {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"
},
"charging": {
"one": "{n} opladning",
"other": "{n} opladninger"
},
"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"
},
"actions": {
"share": "Del bil",
"edit": "Rediger bil",
"odometer": "Opdater kilometerstand",
"delete": "Slet bil"
},
"readOnlyNotice": "Delt med dig (skrivebeskyttet). Du kan ikke ændre noget."
},
"forms": {
"charging": {
"addTitle": "Registrér opladning",
"editTitle": "Redigér opladning",
"date": "Dato",
"odometer": "Kilometerstand (km)",
"kwh": "Energi (kWh)",
"cost": "Pris",
"pricePerKwh": "Det er {price} pr. kWh.",
"battery": "Batteri",
"fullCharge": "Ladet helt op",
"missedSession": "En opladning før denne blev ikke registreret",
"batteryHint": "Forbruget måles mellem fulde opladninger. Delvise opladninger tæller stadig med i prisen og indgår i den næste fulde.",
"location": "Ladepunkt",
"locationPlaceholder": "Hjemme",
"notes": "Noter",
"attachmentLegend": "Kvittering",
"submit": "Gem opladning"
},
"import": {
"title": "Importér en bil",
"subtitle": "Opret en bil ud fra et køretøj på din producentkonto. Alt, hvad der kan læses, udfyldes for dig.",
"service": "Tjeneste",
"loadingVehicles": "Indlæser dine køretøjer…",
"noVehicles": "Ingen køretøjer på denne konto.",
"notConnected": "Ikke tilsluttet",
"noProviders": "Ingen producentkonto er tilsluttet. Tilføj en under Indstillinger › Integrationer.",
"alreadyInGarage": "Allerede i din garage",
"selectVehicle": "Køretøj",
"dataTitle": "Hvad skal importeres",
"dataHint": "Fjern fluebenet ved det, du helst selv vil udfylde.",
"includeIdentity": "Mærke, model, årgang, nummerplade og VIN",
"includeFuelType": "Brændstoftype",
"includeDates": "Produktions- og første registreringsdato",
"includeOdometer": "Aktuel kilometerstand",
"name": "Bilens navn",
"submit": "Importér bil",
"importing": "Importerer…",
"warningOdometer": "Tjenesten oplyste ingen kilometerstand — indtast den selv på bilen.",
"moreData": "Resten af det, tjenesten oplyser, er fortsat tilgængeligt på bilens {label}-fane."
},
"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",
"stationPlaceholder": "Orlen"
},
"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",
"workshopPlaceholder": "Kowalski Auto Service",
"locationPlaceholder": "Kraków"
},
"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",
"providerPlaceholder": "PZU"
},
"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.",
"submitting": "Deler…"
},
"validation": {
"odometer": "Kilometerstand er påkrævet.",
"liters": "Antal liter er påkrævet.",
"kwh": "Energi (kWh) er påkrævet.",
"name": "Navn er påkrævet.",
"partName": "Delnavn er påkrævet.",
"description": "Beskriv, hvad der blev udført.",
"title": "Titel er påkrævet."
}
},
"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"
}
},
"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.",
"choose": "Vælg fil",
"replace": "Erstat",
"view": "Vis",
"clear": "Ryd"
},
"errors": {
"sessionExpired": "Sessionen er udløbet — log ind igen.",
"deleteFailed": "Sletning mislykkedes: {error}",
"completeFailed": "Kunne ikke fuldføres: {error}",
"attachmentFailed": "Gemt, men filen blev ikke uploadet: {error}",
"openFailed": "Filen kunne ikke åbnes: {error}",
"noFile": "Ingen fil vedhæftet."
}
}