PlanTempusApp/PlanTempus.Application/Features/Localization/Translations/da.json
Janus C. H. Knudsen 51f3b92d69 Enhances application menu and adds calendar feature
Adds new calendar page and module with comprehensive initialization

Introduces quick actions group in side menu with create booking and sale options
Updates menu service to include new menu groups and rearrange sort order
Configures custom npm registry and esbuild configuration
Adds localization for new menu items and calendar section

Implements calendar controller with dependency injection and settings seeding
2026-02-02 22:42:18 +01:00

773 lines
24 KiB
JSON
Raw Permalink 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.

{
"menu": {
"home": "Dashboard",
"calendar": "Kalender",
"pos": "Kasse",
"createBooking": "Opret booking",
"createSale": "Opret salg",
"products": "Produkter & Lager",
"suppliers": "Leverandører",
"customers": "Kunder",
"employees": "Medarbejdere",
"services": "Services",
"booking": "Booking",
"website": "Website",
"reports": "Statistik & Rapporter",
"settings": "Indstillinger",
"account": "Abonnement & Konto"
},
"groups": {
"overview": "Overblik",
"quickActions": "Hurtigvalg",
"data": "Data",
"online": "Online",
"analytics": "Analyse",
"system": "System"
},
"common": {
"save": "Gem",
"cancel": "Annuller",
"search": "Søg",
"close": "Luk",
"delete": "Slet",
"edit": "Rediger",
"add": "Tilføj",
"from": "Fra",
"to": "Til",
"all": "Alle",
"reset": "Nulstil",
"status": "Status",
"yes": "Ja",
"no": "Nej"
},
"sidebar": {
"lockScreen": "Lås skærm",
"appName": "Salon OS"
},
"dashboard": {
"title": "Dashboard",
"subtitle": "Overblik over dagens aktivitet",
"stats": {
"bookingsToday": "Bookinger i dag",
"bookingsTrend": "4 gennemført, 2 i gang",
"expectedRevenue": "Forventet omsætning",
"revenueTrend": "+12% vs. gennemsnit",
"occupancyRate": "Belægningsgrad",
"occupancyTrend": "God kapacitet",
"needsAttention": "Kræver handling"
},
"ai": {
"header": "AI Analyse"
},
"bookings": {
"title": "Dagens bookinger",
"viewAll": "Se alle",
"currentTime": "Nu:",
"status": {
"confirmed": "Bekræftet",
"pending": "Afventer",
"inProgress": "I gang",
"completed": "Gennemført"
}
},
"notifications": {
"title": "Notifikationer",
"viewAll": "Se alle",
"markAllRead": "Marker alle som læst"
},
"attentions": {
"title": "Kræver opmærksomhed",
"viewAll": "Se alle"
},
"quickStats": {
"title": "Denne uge",
"bookings": "Bookinger",
"revenue": "Omsætning",
"newCustomers": "Nye kunder",
"cancellations": "Aflysninger",
"avgOccupancy": "Gns. belægning"
},
"quickActions": {
"title": "Hurtige handlinger",
"newBooking": "Ny booking",
"newCustomer": "Ny kunde"
},
"waitlist": {
"title": "Venteliste",
"count": "{count} venter"
}
},
"cash": {
"title": "Kasse",
"tabs": {
"overview": "Oversigt",
"reconciliation": "Kasseafstemning"
},
"stats": {
"reconciliationsInPeriod": "Afstemninger i periode",
"totalRevenue": "Total omsætning",
"cashSales": "Kontantsalg",
"totalDifference": "Samlet difference",
"transactionsToday": "Transaktioner i dag",
"revenueToday": "Omsætning i dag",
"lastReconciliation": "Sidste afstemning",
"openedRegister": "Åbnede kassen"
},
"filter": {
"register": "Kassepunkt",
"approved": "Godkendt",
"draft": "Kladde"
},
"table": {
"date": "Dato",
"id": "ID",
"period": "Periode",
"register": "Kassepunkt",
"closedBy": "Afsluttet af",
"revenue": "Omsætning",
"difference": "Difference",
"selected": "{count} valgt",
"noneSelected": "0 valgt",
"showingCount": "Viser {count} afstemninger",
"exportSaft": "Eksporter SAF-T",
"downloadCsv": "Download CSV",
"downloadPdf": "Download Z-Rapport",
"viewTransactions": "Se transaktioner"
},
"revenue": {
"title": "Periodens omsætning",
"subtitle": "Systemtal vs. kontrol",
"cardPayments": "Kortbetalinger",
"mobilePay": "MobilePay / Online",
"cashSales": "Kontantsalg",
"hint": "Kort og MobilePay afstemmes mod bank/indløser. Kontanter tælles op nedenfor."
},
"balance": {
"title": "Kontanter i kassen",
"startBalance": "Startbeholdning",
"startHint": "Overført fra sidste afstemning",
"payouts": "Udbetalinger / Bilag",
"payoutsHint": "Sammentæl bilag betalt kontant",
"toBank": "Udtaget til bank",
"toBankHint": "Kontanter lagt til side",
"expected": "Forventet kontantbeholdning",
"counted": "Optalt kontantbeholdning",
"countedHint": "Hvad ligger der faktisk i kassen?"
},
"difference": {
"title": "Kassedifference",
"match": "Kassen stemmer",
"over": "Overskud",
"under": "Underskud"
},
"period": {
"title": "Periodeoplysninger",
"dateRange": "Periode",
"register": "Kassepunkt",
"employee": "Medarbejder"
},
"note": {
"title": "Note til afstemning",
"placeholder": "Beskriv evt. årsag til difference..."
},
"approval": {
"title": "Afslut dagen",
"approvedBy": "Godkendt af (valgfrit)",
"selectPlaceholder": "Vælg...",
"confirmation": "Jeg bekræfter, at kassen er talt op, og at tallene er indtastet efter bedste evne.",
"saveDraft": "Gem som kladde",
"approve": "Godkend & lås"
},
"status": {
"draft": "Kladde",
"approved": "Godkendt"
},
"systemNote": "Systemet gemmer hvornår og af hvem der er godkendt enkelt kontrolspor."
},
"profile": {
"title": "Profil",
"myProfile": "Min profil",
"settings": "Indstillinger",
"darkMode": "Mørk tilstand",
"logout": "Log ud"
},
"account": {
"title": "Abonnement & Konto",
"subtitle": "Administrer dit abonnement og betalingsinfo",
"subscription": {
"title": "Dit abonnement",
"currentPlan": "Nuværende plan",
"switchTo": "Skift til {plan}",
"contactSales": "Kontakt salg",
"contactUs": "Kontakt os",
"pricePerMonth": "kr/md"
},
"billing": {
"title": "Betaling & Fakturaer"
},
"payment": {
"frequency": "Betalingsfrekvens",
"monthly": "Månedlig",
"yearly": "Årlig",
"nextPayment": "Næste betaling",
"amount": "Beløb",
"cardExpiry": "Kortudløb",
"change": "Skift",
"switchToYearly": "Skift til årlig betaling (spar 15%)"
},
"invoices": {
"title": "Faktura-historik",
"date": "Dato",
"invoiceNumber": "Fakturanr.",
"amount": "Beløb",
"download": "PDF",
"paid": "Betalt",
"pending": "Afventer",
"overdue": "Forfalden"
}
},
"services": {
"title": "Services",
"subtitle": "Administrer services og priser",
"tabs": {
"services": "Services",
"categories": "Kategorier"
},
"stats": {
"totalServices": "Services i alt",
"activeCategories": "Aktive kategorier",
"averagePrice": "Gns. pris"
},
"searchPlaceholder": "Søg efter service...",
"createService": "Opret service",
"createCategory": "Opret kategori",
"table": {
"service": "Service",
"category": "Kategori",
"duration": "Varighed",
"price": "Pris",
"serviceCount": "Antal services"
},
"detail": {
"back": "Tilbage til services",
"save": "Gem ændringer",
"tabs": {
"general": "Generelt",
"prices": "Priser",
"duration": "Varighed",
"employees": "Medarbejdere",
"addons": "Tilvalg",
"rules": "Regler"
},
"general": {
"basic": "Grundlæggende",
"serviceName": "Servicenavn",
"category": "Kategori",
"calendarColor": "Farve i kalenderen",
"isActive": "Service aktiv",
"internalNotes": "Interne noter",
"bookingType": "Bookingtype",
"canBookAsMain": "Kan bookes som hovedservice",
"canBookAsMainDesc": "Vises i servicelisten og kan bookes selvstændigt",
"canBookAsAddon": "Kan bookes som tilvalg",
"canBookAsAddonDesc": "Kan tilføjes som ekstra ydelse til andre services",
"onlineBooking": "Online booking",
"showInOnlineBooking": "Vis i online booking",
"showInOnlineBookingDesc": "Synlig for kunder i online booking",
"isFeatured": "Fremhævet service",
"isFeaturedDesc": "Vises øverst med fremhævet styling",
"description": "Beskrivelse",
"image": "Billede",
"uploadImage": "+ Upload billede"
},
"prices": {
"priceStructure": "Prisstruktur",
"simplePrice": "Simpel pris",
"matrixPrice": "Matrix-pris",
"price": "Pris",
"level": "Niveau",
"shortHair": "Kort hår",
"mediumHair": "Mellem hår",
"longHair": "Langt hår",
"extraLongHair": "Ekstra langt",
"addLevel": "Tilføj niveau eller hårlængde",
"economy": "Økonomi",
"vatRate": "Momssats",
"productCost": "Produktomkostning",
"commission": "Provision",
"discounts": "Rabatter & Loyalitet",
"memberDiscount": "Medlemsrabat (10%)",
"giftCardPayment": "Kan betales med gavekort",
"loyaltyPoints": "Optjen loyalitetspoint"
},
"duration": {
"durationVariants": "Varighedsvarianter",
"addVariant": "Tilføj variant",
"bufferTimes": "Buffer-tider",
"bufferBefore": "Buffer før aftale",
"bufferAfter": "Buffer efter aftale",
"cleanupTime": "Oprydningstid",
"minutes": "min"
},
"rules": {
"bookingRules": "Booking-regler",
"minNotice": "Minimum varsel",
"maxAdvanceBooking": "Maks. forudbooking",
"cancellationDeadline": "Afbestillingsfrist",
"noShowFee": "No-show gebyr",
"requirements": "Krav & Forberedelse",
"requiresConsultation": "Konsultation påkrævet",
"requiresConsultationDesc": "Kunde skal have konsultation før første booking",
"requiresPatchTest": "Patch test påkrævet",
"requiresPatchTestDesc": "Allergitest 48 timer før farvebehandling (nye kunder)",
"ageRestriction": "Aldersbegrænsning",
"ageRestrictionDesc": "Minimum alder for booking af denne service",
"onlineBookingSettings": "Online booking indstillinger",
"showInOnlineBooking": "Vis i online booking",
"allowEmployeeSelection": "Tillad valg af medarbejder",
"showPrice": "Vis pris",
"showDuration": "Vis varighed"
},
"employees": {
"employeesForService": "Medarbejdere der udfører denne service",
"selectAll": "Vælg alle / Fravælg alle",
"availability": "Tilgængelighed",
"duration": "Varighed"
},
"addons": {
"addonsForService": "Tilvalg til denne service",
"addExistingAddon": "Tilføj eksisterende tilvalg"
},
"header": {
"duration": "min varighed",
"fromPrice": "fra pris",
"employees": "medarbejdere",
"bookingsThisYear": "bookinger i år",
"active": "Aktiv",
"inactive": "Inaktiv"
},
"categoryDrawer": {
"title": "Opret kategori",
"name": "Kategorinavn",
"description": "Beskrivelse",
"visibilitySection": "Synlighed",
"showInBooking": "Kategorien skal vises i online booking",
"showInBookingDescription": "Kategorien vil stadig være synlig her i systemet",
"timePeriod": "Skal kun være synlig i følgende tidsperiode",
"timePeriodHint": "Efterlad felterne blanke for ingen tidsbegrænsning",
"save": "Gem kategori"
}
}
},
"employees": {
"title": "Medarbejdere",
"subtitle": "Administrer brugere, roller og rettigheder",
"stats": {
"activeEmployees": "Aktive medarbejdere",
"pendingInvitations": "Afventer invitation",
"rolesDefined": "Roller defineret"
},
"tabs": {
"users": "Brugere",
"roles": "Roller"
},
"users": {
"count": "brugere",
"inviteUser": "Inviter bruger",
"columns": {
"user": "Bruger",
"role": "Rolle",
"status": "Status",
"lastActive": "Sidst aktiv"
}
},
"roles": {
"owner": "Ejer",
"admin": "Admin",
"leader": "Leder",
"employee": "Medarbejder"
},
"status": {
"active": "Aktiv",
"invited": "Invitation sendt"
},
"permissions": {
"title": "Rettighed",
"calendar": "Kalender",
"employees": "Medarbejdere",
"customers": "Kunder",
"reports": "Rapporter & Økonomi"
},
"actions": {
"edit": "Rediger",
"remove": "Fjern bruger",
"resend": "Send invitation igen",
"cancel": "Annuller invitation"
},
"detail": {
"title": "Medarbejderdetaljer",
"back": "Tilbage til medarbejdere",
"save": "Gem ændringer",
"tabs": {
"general": "Generelt",
"hours": "Arbejdstid",
"schedule": "Vagtplan",
"services": "Services",
"salary": "Løn",
"hr": "HR",
"stats": "Statistik"
},
"schedule": {
"week": "Uge",
"hours": "timer",
"editShift": "Redigér vagt",
"status": "Status",
"work": "Arbejde",
"off": "Fri",
"vacation": "Ferie",
"sick": "Syg",
"timeRange": "Tidsrum",
"note": "Note",
"type": "Type",
"single": "Enkelt",
"repeat": "Gentagelse",
"repeatInterval": "Gentag",
"repeatEnd": "Slutdato",
"weekday": "Ugedag",
"buttonEdit": "Rediger",
"buttonDone": "Færdig"
},
"contact": "Kontaktoplysninger",
"personal": "Personlige oplysninger",
"employment": "Ansættelse",
"fullname": "Fulde navn",
"email": "E-mail",
"phone": "Telefon",
"address": "Adresse",
"postalcity": "Postnr. & By",
"birthdate": "Fødselsdato",
"emergencycontact": "Nødkontakt",
"emergencyphone": "Nødkontakt tlf.",
"employmentdate": "Ansættelsesdato",
"position": "Stilling",
"employmenttype": "Ansættelsestype",
"hoursperweek": "Timer/uge",
"bookings": "bookinger i år",
"revenue": "omsætning i år",
"rating": "rating",
"employedsince": "ansat siden",
"hours": {
"label": "timer",
"weekly": "Ugentlig arbejdstid",
"monday": "Mandag",
"tuesday": "Tirsdag",
"wednesday": "Onsdag",
"thursday": "Torsdag",
"friday": "Fredag",
"saturday": "Lørdag",
"sunday": "Søndag"
},
"services": {
"assigned": "Tildelte services"
},
"salary": {
"rates": "Satser",
"normalrate": "Normal (timeløn)",
"overtimerate": "Overarbejde (100%)",
"vacationrate": "Ferie m. løn",
"provision": "Provision",
"minimumperhour": "Minimum pr. time",
"servicecommission": "På services",
"productcommission": "På produktsalg",
"supplements": "Tillæg",
"weekdaysupplement": "8-21 Hverdage",
"saturdaysupplement": "8-21 Lørdage",
"sundaysupplement": "Søndag",
"history": "Lønspecifikationer",
"period": "Periode",
"grosssalary": "Bruttoløn",
"view": "Vis",
"ratesdrawertitle": "Lønsatser",
"baserates": "Grundsatser",
"courserate": "Kursus/skole",
"timeoffrate": "Afspadsering",
"paidleaverate": "Fri m. løn",
"officerate": "Kontor",
"childsickrate": "Barns 1. sygedag",
"childhospitalrate": "Barns hospitalsindlæggelse",
"maternityrate": "Barsel",
"weekdaysupplementfull": "8-21 Hverdage (udenfor arbejdstid)",
"saturdaysupplementfull": "8-21 Lørdage (udenfor arbejdstid)",
"commission": "Provisionsberegning",
"productcommissionfull": "Provision på produktsalg",
"servicecommissionfull": "Provision på servicesalg",
"specifications": "Lønspecifikationer",
"week": "Uge",
"normalhours": "Normtimer",
"overtimehours": "Overtid",
"vacationdays": "Feriedage",
"servicerevenue": "Services",
"productrevenue": "Produkter",
"minimumthreshold": "Minimum",
"total": "I alt",
"weeklynorm": "Normtid",
"overtimemultiplier": "Overtid",
"minimum": "Minimum"
},
"hr": {
"contractdocuments": "Kontrakt & Dokumenter",
"contracttype": "Kontrakttype",
"terminationnotice": "Opsigelsesvarsel",
"contractexpiry": "Kontraktudløb",
"uploaddocument": "Upload dokument",
"certifications": "Certificeringer",
"addcertification": "Tilføj certificering",
"courses": "Kurser",
"completedcourses": "Gennemførte kurser",
"plannedcourses": "Planlagte kurser",
"addcourse": "Tilføj kursus",
"vacationbalance": "Ferie-saldo",
"vacationearned": "Optjente feriedage",
"vacationused": "Brugte feriedage",
"vacationremaining": "Resterende",
"absencesickness": "Fravær & Sygdom",
"sickdays2025": "Sygefravær 2025",
"sickdays2024": "Sygefravær 2024",
"childsickdays2025": "Børns sygdom 2025",
"maternityleave": "Barsel",
"plannedabsence": "Planlagt fravær",
"addabsence": "Tilføj fravær"
},
"stats": {
"performance": "Performance",
"bookingsyear": "Bookinger i år",
"revenueyear": "Omsætning i år",
"avgrating": "Gns. rating",
"occupancy": "Belægningsgrad",
"completedbookings": "Afsluttede bookinger",
"date": "Dato",
"time": "Tid",
"customer": "Kunde",
"services": "Services",
"duration": "Varighed",
"amount": "Beløb",
"status": "Status",
"paid": "Betalt",
"pending": "Afventer"
},
"settings": {
"label": "Indstillinger",
"showinbooking": {
"label": "Vis i online booking",
"desc": "Kunder kan vælge denne medarbejder"
},
"smsreminders": {
"label": "Få notifikation via App'en om nye bookinger",
"desc": ""
},
"editcalendar": {
"label": "Kan redigere egen kalender",
"desc": "Tillad ændringer i egne bookinger"
}
},
"notifications": {
"label": "Notifikationer",
"intro": "Vælg hvilke notifikationer der skal sendes.",
"onlinebooking": "Email ved online booking",
"manualbooking": "Email ved manuel booking",
"cancellation": "Email ved aflysning",
"waitlist": "Email ved opskrivning til venteliste",
"dailysummary": "Email med daglig oversigt"
}
}
},
"suppliers": {
"title": "Leverandører",
"subtitle": "Administrer leverandører og indkøb",
"searchPlaceholder": "Søg leverandør, kontaktperson...",
"export": "Eksporter",
"create": "Ny leverandør",
"emptySearch": "Ingen leverandører matcher din søgning",
"stats": {
"total": "Leverandører i alt",
"active": "Aktive",
"purchasesThisMonth": "Indkøb denne måned",
"pendingOrders": "Afventende ordrer"
},
"column": {
"supplier": "Leverandør",
"contact": "Kontakt",
"products": "Produkter",
"lastOrder": "Sidste ordre",
"status": "Status"
},
"status": {
"active": "Aktiv",
"inactive": "Inaktiv"
}
},
"customers": {
"title": "Kunder",
"subtitle": "Administrer kunder og kundekort",
"searchPlaceholder": "Søg kunde (navn, telefon, email...)",
"export": "Eksporter",
"create": "Ny kunde",
"createDrawer": {
"title": "Opret ny kunde",
"name": "Navn *",
"note": "Note",
"notePlaceholder": "Skriv en note om kunden...",
"save": "Opret kunde"
},
"emptySearch": "Ingen kunder matcher din søgning",
"column": {
"name": "Navn",
"phone": "Telefon",
"email": "Email",
"visits": "Besøg",
"lastVisit": "Sidste",
"hairdresser": "Frisør",
"created": "Oprettet",
"tags": "Tags"
},
"stats": {
"total": "Total kunder",
"newThisMonth": "Nye denne måned",
"avgVisits": "Gns. besøg"
},
"drawer": {
"title": "Kundekort",
"visits": "Besøg",
"avgInterval": "Gns. interval",
"preferredHairdresser": "Foretrukken frisør",
"contactInfo": "Kontaktoplysninger",
"phone": "Telefon",
"email": "Email",
"address": "Adresse",
"zipCity": "Postnr + By",
"marketing": "Marketing",
"emailMarketing": "Email marketing",
"smsMarketing": "SMS marketing",
"profile": "Profil",
"hairType": "Hårtype",
"porosity": "Porøsitet",
"preference": "Præference",
"warnings": "Advarsler",
"revenueChart": "Omsætning (sidste 6 mdr)",
"services": "Services",
"products": "Produkter",
"recentNotes": "Seneste noter",
"noteType": "Note",
"colorFormula": "Farveformel",
"seeAllNotes": "Se alle noter →"
},
"detail": {
"back": "Tilbage til kunder",
"delete": "Slet kunde",
"save": "Gem",
"tabs": {
"overview": "Oversigt",
"economy": "Økonomi",
"statistics": "Statistik",
"journal": "Journal",
"appointments": "Aftaler",
"giftcards": "Gavekort",
"activitylog": "Aktivitetslog"
},
"visits": "besøg",
"interval": "dage interval",
"preferredHairdresser": "foretrukken frisør",
"totalRevenue": "total omsætning",
"bookingAllowed": "Booking tilladt",
"bookingBlocked": "Booking blokeret",
"contactInfo": "Kontaktoplysninger",
"phone": "Telefon",
"email": "Email",
"address": "Adresse",
"zipCity": "Postnr + By",
"profile": "Profil",
"marketing": "Marketing",
"emailMarketing": "Email marketing",
"smsMarketing": "SMS marketing",
"paymentSettings": "Betalingsindstillinger",
"requirePrepayment": "Kræv forudbetaling",
"allowPartialPayment": "Tillad delvis betaling",
"preferences": "Præferencer",
"preferredDay": "Foretrukken dag",
"specialRequests": "Specielle ønsker",
"warnings": "Advarsler",
"groupAndRelations": "Kundegruppe & Relationer",
"economy": {
"thisYear": "I år ({0})",
"lastYear": "Sidste år",
"avgPerVisit": "Gns. pr. besøg",
"avgPerMonth": "Gns. pr. måned",
"revenueOverTime": "Omsætning over tid",
"services": "Services",
"products": "Produkter",
"purchaseHistory": "Købshistorik",
"seeAll": "Se alle transaktioner",
"noData": "Ingen økonomiske data tilgængelige"
}
}
},
"onlineBooking": {
"title": "Online Booking",
"subtitle": "Konfigurer og preview din booking-side",
"status": {
"active": "Aktiv",
"inactive": "Inaktiv"
},
"url": {
"title": "Booking URL",
"copy": "Kopiér",
"open": "Åbn i ny fane"
},
"settings": {
"title": "Booking-indstillinger",
"enableBooking": "Aktivér online booking",
"enableBookingDesc": "Tillad kunder at booke tider online",
"bookAhead": "Book frem i tiden",
"minNotice": "Minimum varsel",
"cancelDeadline": "Aflysningsfrist"
},
"company": {
"title": "Virksomhedsoplysninger",
"edit": "Rediger",
"name": "Navn",
"address": "Adresse",
"zipCity": "Postnr + By",
"phone": "Telefon",
"email": "Email"
},
"hours": {
"title": "Åbningstider",
"edit": "Rediger",
"closed": "Lukket"
},
"preview": {
"title": "Preview",
"desktop": "Desktop",
"tablet": "Tablet",
"mobile": "Mobil"
},
"allSettings": "Alle indstillinger"
},
"settings": {
"title": "Indstillinger",
"tabs": {
"company": "Virksomhed",
"calendar": "Kalender",
"booking": "Online Booking",
"billing": "Faktura & Kvittering",
"reminders": "Påmindelser",
"payments": "Betalinger",
"modules": "Moduler",
"tracking": "Tracking"
}
},
"calendar": {
"title": "Kalender",
"subtitle": "Se og administrer bookinger"
}
}