The web app can be pointed at two DriverVault stacks and switch between them in a click. The phone had one address and one session: reaching a second garage meant retyping the API base in Server settings and signing in again, losing the first server's token on the way — the same act, undone, every time you switched back. So lib/servers.dart is the web's servers.js ported rather than reinvented, down to the storage keys: cc_servers holds the list, cc_active_server the one being read, cc_session_<id> the token minted by that server and no other. The two apps describe the same thing the same way, and the upgrade path falls out of it — cc_token, cc_user and cc_server_url are read once at boot and folded onto the home entry, so the build carrying this signs nobody out. Home is the address the build ships with (kDefaultApiBase, still overridable per device from the login screen) and cannot be removed: it is what a dropped session falls back to. Any other server is added by address, with /api appended if the path is left off, because a server a phone can reach is internet-facing already. The part worth reading twice is which session a rejection ends. ApiClient no longer holds a base or a token — it pins the active server's id, base and token at the moment a request goes out, so a 401 arriving after a switch clears the session of the server that actually refused it rather than whichever one is active by then. The fallback is the web's: a remote server timing out drops its own token, the app returns to home while home is still signed in, and only when nothing is left to fall back to does the login screen come back. Log out still clears every server at once, since leaving the app means leaving all of them. Switching rebuilds the shell, keyed on the active id, because record ids belong to the server that issued them — a garage, a charging page and a settings panel still holding the other server's rows would each have to be told to forget them separately. The appearance prefs come across with the profile of whoever owns the account on the server now active. Where the picker lives is the one place the phone cannot copy the web. There is no app rail here, so it became the first button in the Garage header, beside the theme toggle and log out, which is that same cluster. It names the active server once there is a choice and goes straight to adding the second when there isn't; the eyebrow reads GARAGE · Work for the reason the rail names it — two garages otherwise look identical. The login screen gets its own way in, because a remote session can expire and land you there with that server still active, and a picker reachable only from inside the app would leave nowhere to go. One judgment call inside the sheet: saving a connected server at a new address saves and stops, rather than falling through to the sign-in it now needs. The token was minted by the PocketBase behind the old address and is dropped with it, but the credentials to replace it were never asked for, so treating the save as a login would report an empty password as the error. The strings are copied out of Web App/web/src/i18n/ like the rest of the shared wording. Two are not the web's: home reads "the address this app ships with" rather than "served with this app", since the phone has no origin to be served from, and sameOrigin has no meaning here at all and was dropped. Biometric sign-in stays global. It was never per-server and replays its stored credentials against whichever server is active; making it per-server is a change of its own, and the login screen now names the server it is about to sign into. Nothing changes on the API Server. On Android there is no origin to allow, so the CORS list the web app has to satisfy to reach a second server doesn't enter into it. Verified: flutter analyze is clean and flutter test passes, 35 tests to 46. The new ones cover the registry — a bare origin gaining its /api, a fresh install knowing one unnamed server on the built-in address, the legacy keys landing on home and being cleared, two servers holding their tokens apart, a rename keeping a session where a move drops it, removing the active server falling back to a home that is still signed in, home refusing to be removed, and a restart reading the list, the active id and every session back. Not verified: none of it has been run. There is no device or emulator on this machine and no API Server to answer, so the picker, the add sheet, a real connect, the 401 fallback and the shell rebuild on a switch exist only as code the analyzer is happy with — the tests reach the registry, not a screen. No APK was built. The legacy migration was exercised against mocked SharedPreferences, which is not a phone that had the old build on it: that is the first thing to check on a device, since the failure mode is a silent sign-out. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
985 lines
38 KiB
JSON
985 lines
38 KiB
JSON
{
|
||
"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 ✓"
|
||
},
|
||
"servers": {
|
||
"title": "Servere",
|
||
"home": "Standardserver",
|
||
"switchHint": "Skift hvilken server appen læser fra",
|
||
"add": "Tilføj server",
|
||
"addTitle": "Tilføj en server",
|
||
"name": "Navn",
|
||
"namePlaceholder": "Hjemmegarage",
|
||
"url": "Adresse",
|
||
"urlHint": "API-serverens offentlige adresse, f.eks. https://garage.example.com — /api tilføjes automatisk, hvis du udelader stien.",
|
||
"urlHomeHint": "Lad feltet stå tomt for at bruge den adresse, appen leveres med.",
|
||
"connect": "Forbind",
|
||
"connecting": "Forbinder…",
|
||
"connected": "Forbundet",
|
||
"notConnected": "Ikke forbundet — log ind for at skifte",
|
||
"signOut": "Log ud af denne server",
|
||
"removeConfirm": "Fjern {name}? Den gemte session glemmes også.",
|
||
"unknown": "Ukendt server"
|
||
},
|
||
"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"
|
||
},
|
||
"control": {
|
||
"title": "Laderstyring",
|
||
"connected": "Forbundet",
|
||
"disconnected": "Offline",
|
||
"serialPlaceholder": "Laderens serienummer (f.eks. A5191-XXXXXXXX)",
|
||
"refresh": "Opdater",
|
||
"status": "Stik",
|
||
"meter": "Energi",
|
||
"start": "Start opladning",
|
||
"stop": "Stop opladning",
|
||
"limit": "Strømgrænse",
|
||
"applyLimit": "Anvend grænse",
|
||
"clearLimit": "Ryd grænse",
|
||
"reset": "Genstart laderen",
|
||
"resetConfirm": "Genstart denne lader nu? En igangværende opladning bliver afbrudt. Indtast din adgangskode igen for at bekræfte.",
|
||
"resetPassword": "Din kontoadgangskode",
|
||
"connectHint": "Indtast laderens serienummer og opdater. Laderen skal være forbundet til DriverVaults OCPP-backend (opsættes under Indstillinger → Integrationer)."
|
||
}
|
||
},
|
||
"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."
|
||
},
|
||
"integrations": {
|
||
"title": "Integrationer",
|
||
"subtitle": "Forbind eksterne tjenester til din konto.",
|
||
"toyotaDesc": "Log ind med din MyToyota-konto for at hente køretøjsdata fra Toyota Connected Europe. Kun Europa.",
|
||
"enable": "Aktivér for min konto",
|
||
"enableOrg": "Aktivér for organisationen",
|
||
"unavailable": "Denne integration er slået fra af administratoren.",
|
||
"orgDisabled": "Denne integration er slået fra for din organisation.",
|
||
"scopeMy": "Mine indstillinger",
|
||
"scopeOrg": "Organisation",
|
||
"scopeHint": "Organisationens indstillinger gælder for alle i din organisation, der lader et felt stå tomt.",
|
||
"readOnly": "Denne integrations fælles indstillinger administreres i API-serverens panel; her er de skrivebeskyttede.",
|
||
"email": "MyToyota-e-mail",
|
||
"password": "MyToyota-adgangskode",
|
||
"brand": "Mærke",
|
||
"inherited": "Sat på et højere niveau",
|
||
"inheritedFrom": "Nedarvet fra {source}",
|
||
"sourceGlobal": "administratoren",
|
||
"sourceOrg": "din organisation",
|
||
"sourceUser": "dig",
|
||
"passwordKeep": "Lad feltet stå tomt for at beholde den gemte adgangskode.",
|
||
"test": "Test forbindelsen",
|
||
"testing": "Tester…",
|
||
"save": "Gem",
|
||
"saved": "Gemt ✓",
|
||
"connected": "Forbundet",
|
||
"notConnected": "Ikke forbundet",
|
||
"ankerSolixDesc": "Log ind med din Anker-konto for at hente laderdata fra Anker Solix-skyen.",
|
||
"ankerEmail": "E-mail til Anker-konto",
|
||
"ankerPassword": "Adgangskode til Anker-konto",
|
||
"country": "Land",
|
||
"countryHint": "Landekode på to bogstaver for din Anker-konto (f.eks. DE, GB, US).",
|
||
"controlMode": "Styringstilstand",
|
||
"controlModeHint": "Hvordan DriverVault styrer laderen over OCPP.",
|
||
"controlOff": "Fra (kun overvågning)",
|
||
"controlOwn": "Eget CSMS (fuld styring)",
|
||
"controlProxy": "Proxy-CSMS (videresendelse + styring)",
|
||
"controlTitle": "Laderstyring (OCPP)",
|
||
"controlOwnHint": "Laderen forbinder direkte til DriverVault som sit centralsystem. Peg laderens OCPP-backend på endepunktet nedenfor.",
|
||
"controlProxyHint": "DriverVault videresender til Ankers sky og kan indsætte kommandoer. Peg laderens OCPP-backend på endepunktet nedenfor.",
|
||
"controlProvisionSteps": "I Anker-appen (eller laderens OCPP-indstillinger) sættes OCPP-backend-URL'en til endepunktet og autorisationsnøglen til tokenet ovenfor.",
|
||
"chargerSerial": "Laderens serienummer",
|
||
"controlCheck": "Tjek status",
|
||
"controlGenerate": "Generér token",
|
||
"controlEndpoint": "OCPP-endepunkt",
|
||
"controlToken": "Autorisationstoken",
|
||
"controlTokenOnce": "Kopiér dette token nu — det vises kun én gang og kan ikke hentes frem igen.",
|
||
"controlRevoke": "Tilbagekald token",
|
||
"controlRevokeConfirm": "Tilbagekald denne laders styringstoken? Den bliver afbrudt og kan ikke forbinde igen, før du genererer et nyt.",
|
||
"controlConnected": "Forbundet til styrings-backend",
|
||
"controlDisconnected": "Ikke forbundet",
|
||
"toyota": "Toyota Connected (MyToyota)",
|
||
"brandToyota": "Toyota",
|
||
"brandLexus": "Lexus",
|
||
"ankerSolix": "Anker Solix (V1 Smart EV Charger)"
|
||
}
|
||
},
|
||
"status": {
|
||
"noData": "Ingen data",
|
||
"serviceOverdueDays": "Service overskredet med {days} d",
|
||
"dueInDays": "Forfalder om {days} d",
|
||
"okDays": "OK · {days} d",
|
||
"okIn": "OK · {parts}",
|
||
"noKm": "Ingen km",
|
||
"serviceOverdueKm": "Service overskredet med {km} km",
|
||
"serviceOverdueBy": "Service overskredet med {parts}",
|
||
"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.",
|
||
"serviceColumnsHeading": "Kolonner i servicehistorik",
|
||
"columnAlwaysOn": "{column} vises altid.",
|
||
"servicePartsHeading": "Udskiftede dele",
|
||
"servicePartsHint": "En fravalgt del forsvinder fra serviceformularen og fra historikken. Det, der allerede er registreret, bevares og kommer tilbage med den.",
|
||
"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?",
|
||
"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."
|
||
},
|
||
"admin": {
|
||
"title": "Brugere",
|
||
"subtitleAll": "Konti på tværs af alle organisationer.",
|
||
"subtitleOrg": "Konti i din organisation.",
|
||
"addUser": "Tilføj bruger",
|
||
"colEmail": "E-mail",
|
||
"colName": "Navn",
|
||
"colOrganization": "Organisation",
|
||
"noOrganization": "— Ingen organisation —",
|
||
"organizationHint": "Lad feltet stå tomt for at oprette en konto uden 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"
|
||
},
|
||
"deleteTitle": "Slet bruger?",
|
||
"passwordUpdated": "Adgangskoden er opdateret."
|
||
}
|
||
}
|