Implements new drawer for creating customers with form inputs for contact details and notes Enhances customer management by providing a streamlined way to add new customer records directly from the customers index page
664 lines
20 KiB
JSON
664 lines
20 KiB
JSON
{
|
||
"menu": {
|
||
"home": "Dashboard",
|
||
"calendar": "Calendar",
|
||
"pos": "Point of Sale",
|
||
"products": "Products & Inventory",
|
||
"suppliers": "Suppliers",
|
||
"customers": "Customers",
|
||
"employees": "Employees",
|
||
"services": "Services",
|
||
"reports": "Statistics & Reports",
|
||
"settings": "Settings",
|
||
"account": "Subscription & Account"
|
||
},
|
||
"groups": {
|
||
"overview": "Overview",
|
||
"data": "Data",
|
||
"analytics": "Analytics",
|
||
"system": "System"
|
||
},
|
||
"common": {
|
||
"save": "Save",
|
||
"cancel": "Cancel",
|
||
"search": "Search",
|
||
"close": "Close",
|
||
"delete": "Delete",
|
||
"edit": "Edit",
|
||
"add": "Add",
|
||
"from": "From",
|
||
"to": "To",
|
||
"all": "All",
|
||
"reset": "Reset",
|
||
"status": "Status",
|
||
"yes": "Yes",
|
||
"no": "No"
|
||
},
|
||
"sidebar": {
|
||
"lockScreen": "Lock screen",
|
||
"appName": "Salon OS"
|
||
},
|
||
"dashboard": {
|
||
"title": "Dashboard",
|
||
"subtitle": "Overview of today's activity",
|
||
"stats": {
|
||
"bookingsToday": "Bookings today",
|
||
"bookingsTrend": "4 completed, 2 in progress",
|
||
"expectedRevenue": "Expected revenue",
|
||
"revenueTrend": "+12% vs. average",
|
||
"occupancyRate": "Occupancy rate",
|
||
"occupancyTrend": "Good capacity",
|
||
"needsAttention": "Needs attention"
|
||
},
|
||
"ai": {
|
||
"header": "AI Analysis"
|
||
},
|
||
"bookings": {
|
||
"title": "Today's bookings",
|
||
"viewAll": "View all",
|
||
"currentTime": "Now:",
|
||
"status": {
|
||
"confirmed": "Confirmed",
|
||
"pending": "Pending",
|
||
"inProgress": "In progress",
|
||
"completed": "Completed"
|
||
}
|
||
},
|
||
"notifications": {
|
||
"title": "Notifications",
|
||
"viewAll": "View all",
|
||
"markAllRead": "Mark all as read"
|
||
},
|
||
"attentions": {
|
||
"title": "Needs attention",
|
||
"viewAll": "View all"
|
||
},
|
||
"quickStats": {
|
||
"title": "This week",
|
||
"bookings": "Bookings",
|
||
"revenue": "Revenue",
|
||
"newCustomers": "New customers",
|
||
"cancellations": "Cancellations",
|
||
"avgOccupancy": "Avg. occupancy"
|
||
},
|
||
"quickActions": {
|
||
"title": "Quick actions",
|
||
"newBooking": "New booking",
|
||
"newCustomer": "New customer"
|
||
},
|
||
"waitlist": {
|
||
"title": "Waitlist",
|
||
"count": "{count} waiting"
|
||
}
|
||
},
|
||
"cash": {
|
||
"title": "Cash Register",
|
||
"tabs": {
|
||
"overview": "Overview",
|
||
"reconciliation": "Reconciliation"
|
||
},
|
||
"stats": {
|
||
"reconciliationsInPeriod": "Reconciliations in period",
|
||
"totalRevenue": "Total revenue",
|
||
"cashSales": "Cash sales",
|
||
"totalDifference": "Total difference",
|
||
"transactionsToday": "Transactions today",
|
||
"revenueToday": "Revenue today",
|
||
"lastReconciliation": "Last reconciliation",
|
||
"openedRegister": "Opened register"
|
||
},
|
||
"filter": {
|
||
"register": "Register",
|
||
"approved": "Approved",
|
||
"draft": "Draft"
|
||
},
|
||
"table": {
|
||
"date": "Date",
|
||
"id": "ID",
|
||
"period": "Period",
|
||
"register": "Register",
|
||
"closedBy": "Closed by",
|
||
"revenue": "Revenue",
|
||
"difference": "Difference",
|
||
"selected": "{count} selected",
|
||
"noneSelected": "0 selected",
|
||
"showingCount": "Showing {count} reconciliations",
|
||
"exportSaft": "Export SAF-T",
|
||
"downloadCsv": "Download CSV",
|
||
"downloadPdf": "Download Z-Report",
|
||
"viewTransactions": "View transactions"
|
||
},
|
||
"revenue": {
|
||
"title": "Period revenue",
|
||
"subtitle": "System vs. control",
|
||
"cardPayments": "Card payments",
|
||
"mobilePay": "MobilePay / Online",
|
||
"cashSales": "Cash sales",
|
||
"hint": "Card and MobilePay are reconciled against bank/acquirer. Cash is counted below."
|
||
},
|
||
"balance": {
|
||
"title": "Cash in register",
|
||
"startBalance": "Starting balance",
|
||
"startHint": "Carried over from last reconciliation",
|
||
"payouts": "Payouts / Receipts",
|
||
"payoutsHint": "Total receipts paid in cash",
|
||
"toBank": "Withdrawn to bank",
|
||
"toBankHint": "Cash set aside",
|
||
"expected": "Expected cash balance",
|
||
"counted": "Counted cash balance",
|
||
"countedHint": "What is actually in the register?"
|
||
},
|
||
"difference": {
|
||
"title": "Cash difference",
|
||
"match": "Register balanced",
|
||
"over": "Overage",
|
||
"under": "Shortage"
|
||
},
|
||
"period": {
|
||
"title": "Period information",
|
||
"dateRange": "Period",
|
||
"register": "Register",
|
||
"employee": "Employee"
|
||
},
|
||
"note": {
|
||
"title": "Reconciliation note",
|
||
"placeholder": "Describe reason for difference..."
|
||
},
|
||
"approval": {
|
||
"title": "Close the day",
|
||
"approvedBy": "Approved by (optional)",
|
||
"selectPlaceholder": "Select...",
|
||
"confirmation": "I confirm that the register has been counted and the figures have been entered to the best of my ability.",
|
||
"saveDraft": "Save as draft",
|
||
"approve": "Approve & lock"
|
||
},
|
||
"status": {
|
||
"draft": "Draft",
|
||
"approved": "Approved"
|
||
},
|
||
"systemNote": "The system records when and by whom approval was made – simple audit trail."
|
||
},
|
||
"profile": {
|
||
"title": "Profile",
|
||
"myProfile": "My profile",
|
||
"settings": "Settings",
|
||
"darkMode": "Dark mode",
|
||
"logout": "Log out"
|
||
},
|
||
"account": {
|
||
"title": "Subscription & Account",
|
||
"subtitle": "Manage your subscription and payment info",
|
||
"subscription": {
|
||
"title": "Your subscription",
|
||
"currentPlan": "Current plan",
|
||
"switchTo": "Switch to {plan}",
|
||
"contactSales": "Contact sales",
|
||
"contactUs": "Contact us",
|
||
"pricePerMonth": "/mo"
|
||
},
|
||
"billing": {
|
||
"title": "Payment & Invoices"
|
||
},
|
||
"payment": {
|
||
"frequency": "Payment frequency",
|
||
"monthly": "Monthly",
|
||
"yearly": "Yearly",
|
||
"nextPayment": "Next payment",
|
||
"amount": "Amount",
|
||
"cardExpiry": "Card expiry",
|
||
"change": "Change",
|
||
"switchToYearly": "Switch to yearly billing (save 15%)"
|
||
},
|
||
"invoices": {
|
||
"title": "Invoice history",
|
||
"date": "Date",
|
||
"invoiceNumber": "Invoice no.",
|
||
"amount": "Amount",
|
||
"download": "PDF",
|
||
"paid": "Paid",
|
||
"pending": "Pending",
|
||
"overdue": "Overdue"
|
||
}
|
||
},
|
||
"services": {
|
||
"title": "Services",
|
||
"subtitle": "Manage services and pricing",
|
||
"tabs": {
|
||
"services": "Services",
|
||
"categories": "Categories"
|
||
},
|
||
"stats": {
|
||
"totalServices": "Total services",
|
||
"activeCategories": "Active categories",
|
||
"averagePrice": "Avg. price"
|
||
},
|
||
"searchPlaceholder": "Search for service...",
|
||
"createService": "Create service",
|
||
"createCategory": "Create category",
|
||
"table": {
|
||
"service": "Service",
|
||
"category": "Category",
|
||
"duration": "Duration",
|
||
"price": "Price",
|
||
"serviceCount": "Service count"
|
||
},
|
||
"detail": {
|
||
"back": "Back to services",
|
||
"save": "Save changes",
|
||
"tabs": {
|
||
"general": "General",
|
||
"prices": "Prices",
|
||
"duration": "Duration",
|
||
"employees": "Employees",
|
||
"addons": "Add-ons",
|
||
"rules": "Rules"
|
||
},
|
||
"general": {
|
||
"basic": "Basic",
|
||
"serviceName": "Service name",
|
||
"category": "Category",
|
||
"calendarColor": "Calendar color",
|
||
"isActive": "Service active",
|
||
"internalNotes": "Internal notes",
|
||
"bookingType": "Booking type",
|
||
"canBookAsMain": "Can be booked as main service",
|
||
"canBookAsMainDesc": "Shown in service list and can be booked independently",
|
||
"canBookAsAddon": "Can be booked as add-on",
|
||
"canBookAsAddonDesc": "Can be added as extra service to other services",
|
||
"onlineBooking": "Online booking",
|
||
"showInOnlineBooking": "Show in online booking",
|
||
"showInOnlineBookingDesc": "Visible to customers in online booking",
|
||
"isFeatured": "Featured service",
|
||
"isFeaturedDesc": "Shown at top with featured styling",
|
||
"description": "Description",
|
||
"image": "Image",
|
||
"uploadImage": "+ Upload image"
|
||
},
|
||
"prices": {
|
||
"priceStructure": "Price structure",
|
||
"simplePrice": "Simple price",
|
||
"matrixPrice": "Matrix price",
|
||
"price": "Price",
|
||
"level": "Level",
|
||
"shortHair": "Short hair",
|
||
"mediumHair": "Medium hair",
|
||
"longHair": "Long hair",
|
||
"extraLongHair": "Extra long",
|
||
"addLevel": "Add level or hair length",
|
||
"economy": "Economy",
|
||
"vatRate": "VAT rate",
|
||
"productCost": "Product cost",
|
||
"commission": "Commission",
|
||
"discounts": "Discounts & Loyalty",
|
||
"memberDiscount": "Member discount (10%)",
|
||
"giftCardPayment": "Can be paid with gift card",
|
||
"loyaltyPoints": "Earn loyalty points"
|
||
},
|
||
"duration": {
|
||
"durationVariants": "Duration variants",
|
||
"addVariant": "Add variant",
|
||
"bufferTimes": "Buffer times",
|
||
"bufferBefore": "Buffer before appointment",
|
||
"bufferAfter": "Buffer after appointment",
|
||
"cleanupTime": "Cleanup time",
|
||
"minutes": "min"
|
||
},
|
||
"rules": {
|
||
"bookingRules": "Booking rules",
|
||
"minNotice": "Minimum notice",
|
||
"maxAdvanceBooking": "Max. advance booking",
|
||
"cancellationDeadline": "Cancellation deadline",
|
||
"noShowFee": "No-show fee",
|
||
"requirements": "Requirements & Preparation",
|
||
"requiresConsultation": "Consultation required",
|
||
"requiresConsultationDesc": "Customer must have consultation before first booking",
|
||
"requiresPatchTest": "Patch test required",
|
||
"requiresPatchTestDesc": "Allergy test 48 hours before color treatment (new customers)",
|
||
"ageRestriction": "Age restriction",
|
||
"ageRestrictionDesc": "Minimum age for booking this service",
|
||
"onlineBookingSettings": "Online booking settings",
|
||
"showInOnlineBooking": "Show in online booking",
|
||
"allowEmployeeSelection": "Allow employee selection",
|
||
"showPrice": "Show price",
|
||
"showDuration": "Show duration"
|
||
},
|
||
"employees": {
|
||
"employeesForService": "Employees performing this service",
|
||
"selectAll": "Select all / Deselect all",
|
||
"availability": "Availability",
|
||
"duration": "Duration"
|
||
},
|
||
"addons": {
|
||
"addonsForService": "Add-ons for this service",
|
||
"addExistingAddon": "Add existing add-on"
|
||
},
|
||
"header": {
|
||
"duration": "min duration",
|
||
"fromPrice": "from price",
|
||
"employees": "employees",
|
||
"bookingsThisYear": "bookings this year",
|
||
"active": "Active",
|
||
"inactive": "Inactive"
|
||
},
|
||
"categoryDrawer": {
|
||
"title": "Create category",
|
||
"name": "Category name",
|
||
"description": "Description",
|
||
"visibilitySection": "Visibility",
|
||
"showInBooking": "Category should be shown in online booking",
|
||
"showInBookingDescription": "Category will still be visible here in the system",
|
||
"timePeriod": "Should only be visible in the following time period",
|
||
"timePeriodHint": "Leave fields blank for no time restriction",
|
||
"save": "Save category"
|
||
}
|
||
}
|
||
},
|
||
"employees": {
|
||
"title": "Employees",
|
||
"subtitle": "Manage users, roles and permissions",
|
||
"stats": {
|
||
"activeEmployees": "Active employees",
|
||
"pendingInvitations": "Pending invitations",
|
||
"rolesDefined": "Roles defined"
|
||
},
|
||
"tabs": {
|
||
"users": "Users",
|
||
"roles": "Roles"
|
||
},
|
||
"users": {
|
||
"count": "users",
|
||
"inviteUser": "Invite user",
|
||
"columns": {
|
||
"user": "User",
|
||
"role": "Role",
|
||
"status": "Status",
|
||
"lastActive": "Last active"
|
||
}
|
||
},
|
||
"roles": {
|
||
"owner": "Owner",
|
||
"admin": "Admin",
|
||
"leader": "Manager",
|
||
"employee": "Employee"
|
||
},
|
||
"status": {
|
||
"active": "Active",
|
||
"invited": "Invitation sent"
|
||
},
|
||
"permissions": {
|
||
"title": "Permission",
|
||
"calendar": "Calendar",
|
||
"employees": "Employees",
|
||
"customers": "Customers",
|
||
"reports": "Reports & Finance"
|
||
},
|
||
"actions": {
|
||
"edit": "Edit",
|
||
"remove": "Remove user",
|
||
"resend": "Resend invitation",
|
||
"cancel": "Cancel invitation"
|
||
},
|
||
"detail": {
|
||
"title": "Employee details",
|
||
"back": "Back to employees",
|
||
"save": "Save changes",
|
||
"tabs": {
|
||
"general": "General",
|
||
"hours": "Working hours",
|
||
"schedule": "Schedule",
|
||
"services": "Services",
|
||
"salary": "Salary",
|
||
"hr": "HR",
|
||
"stats": "Statistics"
|
||
},
|
||
"schedule": {
|
||
"week": "Week",
|
||
"hours": "hours",
|
||
"editShift": "Edit shift",
|
||
"status": "Status",
|
||
"work": "Work",
|
||
"off": "Off",
|
||
"vacation": "Vacation",
|
||
"sick": "Sick",
|
||
"timeRange": "Time range",
|
||
"note": "Note",
|
||
"type": "Type",
|
||
"single": "Single",
|
||
"repeat": "Repeat",
|
||
"repeatInterval": "Repeat",
|
||
"repeatEnd": "End date",
|
||
"weekday": "Weekday",
|
||
"buttonEdit": "Edit",
|
||
"buttonDone": "Done"
|
||
},
|
||
"contact": "Contact information",
|
||
"personal": "Personal information",
|
||
"employment": "Employment",
|
||
"fullname": "Full name",
|
||
"email": "Email",
|
||
"phone": "Phone",
|
||
"address": "Address",
|
||
"postalcity": "Postal code & City",
|
||
"birthdate": "Date of birth",
|
||
"emergencycontact": "Emergency contact",
|
||
"emergencyphone": "Emergency phone",
|
||
"employmentdate": "Employment date",
|
||
"position": "Position",
|
||
"employmenttype": "Employment type",
|
||
"hoursperweek": "Hours/week",
|
||
"bookings": "bookings this year",
|
||
"revenue": "revenue this year",
|
||
"rating": "rating",
|
||
"employedsince": "employed since",
|
||
"hours": {
|
||
"label": "hours",
|
||
"weekly": "Weekly working hours",
|
||
"monday": "Monday",
|
||
"tuesday": "Tuesday",
|
||
"wednesday": "Wednesday",
|
||
"thursday": "Thursday",
|
||
"friday": "Friday",
|
||
"saturday": "Saturday",
|
||
"sunday": "Sunday"
|
||
},
|
||
"services": {
|
||
"assigned": "Assigned services"
|
||
},
|
||
"salary": {
|
||
"rates": "Rates",
|
||
"normalrate": "Normal (hourly)",
|
||
"overtimerate": "Overtime (100%)",
|
||
"vacationrate": "Vacation pay",
|
||
"provision": "Commission",
|
||
"minimumperhour": "Minimum per hour",
|
||
"servicecommission": "On services",
|
||
"productcommission": "On product sales",
|
||
"supplements": "Supplements",
|
||
"weekdaysupplement": "8-21 Weekdays",
|
||
"saturdaysupplement": "8-21 Saturdays",
|
||
"sundaysupplement": "Sunday",
|
||
"history": "Salary specifications",
|
||
"period": "Period",
|
||
"grosssalary": "Gross salary",
|
||
"view": "View",
|
||
"ratesdrawertitle": "Salary rates",
|
||
"baserates": "Base rates",
|
||
"courserate": "Course/training",
|
||
"timeoffrate": "Time off in lieu",
|
||
"paidleaverate": "Paid leave",
|
||
"officerate": "Office work",
|
||
"childsickrate": "Child's first sick day",
|
||
"childhospitalrate": "Child hospitalization",
|
||
"maternityrate": "Maternity leave",
|
||
"weekdaysupplementfull": "8-21 Weekdays (outside working hours)",
|
||
"saturdaysupplementfull": "8-21 Saturdays (outside working hours)",
|
||
"commission": "Commission calculation",
|
||
"productcommissionfull": "Commission on product sales",
|
||
"servicecommissionfull": "Commission on service sales",
|
||
"specifications": "Salary specifications",
|
||
"week": "Week",
|
||
"normalhours": "Normal hours",
|
||
"overtimehours": "Overtime",
|
||
"vacationdays": "Vacation days",
|
||
"servicerevenue": "Services",
|
||
"productrevenue": "Products",
|
||
"minimumthreshold": "Minimum",
|
||
"total": "Total",
|
||
"weeklynorm": "Weekly norm",
|
||
"overtimemultiplier": "Overtime",
|
||
"minimum": "Minimum"
|
||
},
|
||
"hr": {
|
||
"contractdocuments": "Contract & Documents",
|
||
"contracttype": "Contract type",
|
||
"terminationnotice": "Termination notice",
|
||
"contractexpiry": "Contract expiry",
|
||
"uploaddocument": "Upload document",
|
||
"certifications": "Certifications",
|
||
"addcertification": "Add certification",
|
||
"courses": "Courses",
|
||
"completedcourses": "Completed courses",
|
||
"plannedcourses": "Planned courses",
|
||
"addcourse": "Add course",
|
||
"vacationbalance": "Vacation balance",
|
||
"vacationearned": "Earned vacation days",
|
||
"vacationused": "Used vacation days",
|
||
"vacationremaining": "Remaining",
|
||
"absencesickness": "Absence & Sickness",
|
||
"sickdays2025": "Sick days 2025",
|
||
"sickdays2024": "Sick days 2024",
|
||
"childsickdays2025": "Child sick days 2025",
|
||
"maternityleave": "Maternity leave",
|
||
"plannedabsence": "Planned absence",
|
||
"addabsence": "Add absence"
|
||
},
|
||
"stats": {
|
||
"performance": "Performance",
|
||
"bookingsyear": "Bookings this year",
|
||
"revenueyear": "Revenue this year",
|
||
"avgrating": "Avg. rating",
|
||
"occupancy": "Occupancy rate",
|
||
"completedbookings": "Completed bookings",
|
||
"date": "Date",
|
||
"time": "Time",
|
||
"customer": "Customer",
|
||
"services": "Services",
|
||
"duration": "Duration",
|
||
"amount": "Amount",
|
||
"status": "Status",
|
||
"paid": "Paid",
|
||
"pending": "Pending"
|
||
},
|
||
"settings": {
|
||
"label": "Settings",
|
||
"showinbooking": {
|
||
"label": "Show in online booking",
|
||
"desc": "Customers can select this employee"
|
||
},
|
||
"smsreminders": {
|
||
"label": "Get notified via the App about new bookings",
|
||
"desc": ""
|
||
},
|
||
"editcalendar": {
|
||
"label": "Can edit own calendar",
|
||
"desc": "Allow changes to own bookings"
|
||
}
|
||
},
|
||
"notifications": {
|
||
"label": "Notifications",
|
||
"intro": "Choose which notifications to send.",
|
||
"onlinebooking": "Email on online booking",
|
||
"manualbooking": "Email on manual booking",
|
||
"cancellation": "Email on cancellation",
|
||
"waitlist": "Email on waitlist signup",
|
||
"dailysummary": "Email with daily summary"
|
||
}
|
||
}
|
||
},
|
||
"suppliers": {
|
||
"title": "Suppliers",
|
||
"subtitle": "Manage suppliers and purchases",
|
||
"searchPlaceholder": "Search supplier, contact person...",
|
||
"export": "Export",
|
||
"create": "New supplier",
|
||
"emptySearch": "No suppliers match your search",
|
||
"stats": {
|
||
"total": "Total suppliers",
|
||
"active": "Active",
|
||
"purchasesThisMonth": "Purchases this month",
|
||
"pendingOrders": "Pending orders"
|
||
},
|
||
"column": {
|
||
"supplier": "Supplier",
|
||
"contact": "Contact",
|
||
"products": "Products",
|
||
"lastOrder": "Last order",
|
||
"status": "Status"
|
||
},
|
||
"status": {
|
||
"active": "Active",
|
||
"inactive": "Inactive"
|
||
}
|
||
},
|
||
"customers": {
|
||
"title": "Customers",
|
||
"subtitle": "Manage customers and customer cards",
|
||
"searchPlaceholder": "Search customer (name, phone, email...)",
|
||
"export": "Export",
|
||
"create": "New customer",
|
||
"createDrawer": {
|
||
"title": "Create new customer",
|
||
"name": "Name *",
|
||
"note": "Note",
|
||
"notePlaceholder": "Write a note about the customer...",
|
||
"save": "Create customer"
|
||
},
|
||
"emptySearch": "No customers match your search",
|
||
"column": {
|
||
"name": "Name",
|
||
"phone": "Phone",
|
||
"email": "Email",
|
||
"visits": "Visits",
|
||
"lastVisit": "Last",
|
||
"hairdresser": "Hairdresser",
|
||
"created": "Created",
|
||
"tags": "Tags"
|
||
},
|
||
"stats": {
|
||
"total": "Total customers",
|
||
"newThisMonth": "New this month",
|
||
"avgVisits": "Avg. visits"
|
||
},
|
||
"drawer": {
|
||
"title": "Customer card",
|
||
"visits": "Visits",
|
||
"avgInterval": "Avg. interval",
|
||
"preferredHairdresser": "Preferred hairdresser",
|
||
"contactInfo": "Contact information",
|
||
"phone": "Phone",
|
||
"email": "Email",
|
||
"address": "Address",
|
||
"zipCity": "Zip + City",
|
||
"marketing": "Marketing",
|
||
"emailMarketing": "Email marketing",
|
||
"smsMarketing": "SMS marketing",
|
||
"profile": "Profile",
|
||
"hairType": "Hair type",
|
||
"porosity": "Porosity",
|
||
"preference": "Preference",
|
||
"warnings": "Warnings",
|
||
"revenueChart": "Revenue (last 6 months)",
|
||
"services": "Services",
|
||
"products": "Products",
|
||
"recentNotes": "Recent notes",
|
||
"noteType": "Note",
|
||
"colorFormula": "Color formula",
|
||
"seeAllNotes": "See all notes →"
|
||
},
|
||
"detail": {
|
||
"tabs": {
|
||
"activitylog": "Activity log"
|
||
}
|
||
}
|
||
}
|
||
}
|