{ "common": { "siteName": "Gasol247 Booking", "eventName": "Jamboree 2027", "languageSwedish": "Svenska", "languageEnglish": "English", "back": "Back", "save": "Save", "cancel": "Cancel", "loading": "Loading…", "submit": "Submit", "currency": "SEK", "vat": "VAT", "ofWhichVat": "of which VAT", "inclVat": "incl. VAT", "exclVat": "excl. VAT", "total": "Total", "subtotal": "Subtotal", "quantity": "Qty", "price": "Price", "search": "Search" }, "header": { "tagline": "Book LPG cylinders for the Jamboree camp", "switchLanguage": "Switch language" }, "booking": { "title": "LPG cylinder order", "intro": "Reserve LPG cylinders for your contingent at the camp. A confirmation will be sent to the email you provide.", "stepProducts": "Choose products", "stepDetails": "Your details", "stepPickup": "Pickup", "stepReview": "Review", "stepProductsShort": "Products", "stepDetailsShort": "Details", "stepPickupShort": "Pickup", "stepReviewShort": "Review", "stepOf": "Step {current} of {total}", "products": { "title": "Choose products", "subtitle": "Adjust the quantity for each cylinder size below.", "addToCart": "Add", "remove": "Remove", "perUnit": "/unit", "noneSelected": "Select at least one product to continue." }, "details": { "title": "Your details", "organization": "Organization", "orgName": "Organization name", "orgNamePlaceholder": "Scout group, association, company …", "orgNumber": "Organization number", "orgNumberPlaceholder": "XXXXXX-XXXX", "contact": "Contact person", "contactName": "Name", "contactNamePlaceholder": "First and last name", "email": "Email", "emailPlaceholder": "example@group.org", "phone": "Phone", "phonePlaceholder": "+46 …", "invoiceAddress": "Invoice address", "address": "Street address", "postalCode": "Postal code", "city": "City", "country": "Country" }, "pickup": { "title": "Choose a pickup time", "subtitle": "Pick a time when you can collect the cylinders at the camp site.", "noSlots": "No pickup times are configured yet.", "capacity": "{count} slots left" }, "notes": { "label": "Additional notes (optional)", "placeholder": "Any preferences or information we should know." }, "review": { "title": "Review your order", "confirm": "I confirm that the details are correct and accept that a booking is created.", "submitting": "Submitting booking…" }, "errors": { "required": "This field is required", "invalidEmail": "Enter a valid email address", "invalidOrgNumber": "Enter a valid organization number (XXXXXX-XXXX)", "selectProduct": "Select at least one product", "submitFailed": "Something went wrong. Try again or contact us." }, "success": { "title": "Thank you! Your booking has been received.", "subtitle": "A confirmation has been sent to {email}.", "bookingNumber": "Booking number: {number}", "newOrder": "Make another booking" }, "next": "Next", "previous": "Previous" }, "admin": { "title": "Administration", "login": { "title": "Sign in", "email": "Email", "password": "Password", "submit": "Sign in", "error": "Invalid email or password." }, "nav": { "bookings": "Bookings", "products": "Products", "pickupSlots": "Pickup slots", "settings": "Settings", "users": "Users", "admins": "Admins", "signOut": "Sign out" }, "users": { "title": "Administrators", "empty": "No administrators.", "new": "New administrator", "edit": "Edit", "create": "Create", "save": "Save", "delete": "Delete", "deleteConfirm": "Are you sure you want to delete this administrator?", "cannotDeleteSelf": "You can't delete your own account.", "cannotDeleteLast": "There must be at least one administrator.", "emailInUse": "Email is already used by another administrator.", "passwordMismatch": "Passwords don't match.", "passwordTooShort": "Password must be at least 8 characters.", "passwordChanged": "Password updated.", "you": "(you)", "columns": { "name": "Name", "email": "Email", "created": "Created", "actions": "Actions" }, "fields": { "name": "Name", "email": "Email", "password": "Password", "passwordConfirm": "Confirm password", "newPassword": "New password", "newPasswordHint": "Leave empty to keep the current password", "passwordHint": "Minimum 8 characters" }, "changePassword": "Change password" }, "settings": { "title": "Settings", "saved": "Settings saved.", "save": "Save", "pickupEnabled": "Show pickup step in the booking form", "pickupEnabledHint": "When off, the entire step is removed from the form and no pickup slot is selected. Existing bookings and pickup slots are not affected." }, "products": { "title": "Products", "empty": "No products yet.", "new": "New product", "edit": "Edit", "create": "Create", "save": "Save", "delete": "Delete", "deleteConfirm": "Are you sure you want to delete this product?", "cannotDelete": "Cannot delete — used in {count} booking(s). Deactivate it instead.", "activate": "Activate", "deactivate": "Deactivate", "active": "Active", "inactive": "Inactive", "columns": { "sku": "SKU", "name": "Name", "price": "Price", "vat": "VAT", "active": "Active", "actions": "Actions" }, "fields": { "sku": "SKU", "skuHint": "Unique code, e.g. P11", "nameSv": "Name (Swedish)", "nameEn": "Name (English)", "descriptionSv": "Description (Swedish)", "descriptionEn": "Description (English)", "priceSek": "Price (SEK ex VAT)", "vatPct": "VAT (%)", "sortOrder": "Sort order", "sortOrderHint": "Lower values appear first", "active": "Active (shown in booking form)" } }, "pickupSlots": { "title": "Pickup slots", "empty": "No pickup slots yet.", "new": "New slot", "edit": "Edit", "create": "Create", "save": "Save", "delete": "Delete", "deleteConfirm": "Are you sure you want to delete this slot?", "cannotDelete": "Cannot delete — chosen by {count} booking(s). Deactivate it instead.", "activate": "Activate", "deactivate": "Deactivate", "columns": { "label": "Label", "when": "When", "capacity": "Capacity", "bookings": "Bookings", "active": "Active", "actions": "Actions" }, "fields": { "labelSv": "Label (Swedish)", "labelEn": "Label (English)", "labelHint": "e.g. \"Day 1 — Morning\"", "startsAt": "Starts", "endsAt": "Ends", "capacity": "Capacity", "capacityHint": "Maximum bookings that can choose this slot", "active": "Active (shown in booking form)" }, "invalidTime": "End time must be after start time." }, "bookings": { "title": "Bookings", "empty": "No bookings yet.", "columns": { "number": "Booking #", "date": "Date", "org": "Organization", "contact": "Contact", "total": "Amount", "status": "Status", "actions": "Actions" }, "filters": { "all": "All", "search": "Search booking #, org or email" }, "export": "Export CSV", "view": "View", "openReplacementsTitle": "{count} open swap requests", "detail": { "title": "Booking {number}", "items": "Products", "customer": "Customer", "pickup": "Pickup", "totals": "Totals", "markInvoiced": "Mark invoiced", "markDelivered": "Mark delivered", "markCancelled": "Cancel booking", "resendEmail": "Resend confirmation" }, "status": { "PENDING": "Pending", "CONFIRMED": "Confirmed", "DELIVERED_PARTIAL": "Partly handed out", "DELIVERED": "Handed out", "RETURNED_PARTIAL": "Partly returned", "RETURNED": "Returned", "INVOICED": "Invoiced", "CANCELLED": "Cancelled" }, "fulfillment": { "title": "Handout & return", "ordered": "Ordered", "delivered": "Handed out", "returned": "Returned", "outstanding": "Out", "deliverAll": "Hand out all", "returnAll": "Return all", "save": "Save", "saved": "Saved", "deliveredHint": "Cylinders the customer has collected", "returnedHint": "Cylinders that have come back", "invalidValue": "Value out of allowed range" } } }, "email": { "subject": "Booking confirmation {number} — {event}", "greeting": "Hi {name},", "intro": "Thank you for ordering LPG cylinders for {event}. Here is your booking confirmation.", "bookingNumber": "Booking number", "orderSummary": "Order", "pickup": "Pickup", "invoiceInfo": "An invoice will be sent to your organization after the event.", "questions": "Questions? Reply to this email and we will help you.", "footer": "This is an automated confirmation from Gasol247." }, "customer": { "navTitle": "My page", "signOut": "Sign out", "request": { "title": "My page", "intro": "Enter the email you used when booking and we will send you a sign-in link.", "email": "Email", "emailPlaceholder": "example@group.org", "submit": "Send sign-in link", "submitting": "Sending…", "successTitle": "Check your email", "successBody": "If the email matches a booking we have sent a sign-in link to {email}. The link is valid for 1 hour." }, "verify": { "invalidTitle": "Link is not valid", "invalidBody": "The link may have expired, already been used, or is incorrect. Request a new sign-in link.", "tryAgain": "Request new link" }, "overview": { "title": "My bookings", "signedInAs": "Signed in as {email}", "empty": "No bookings found for this email.", "view": "View booking", "requestReplacement": "Request cylinder swap", "bookingNumber": "Booking #", "items": "Items", "pickup": "Pickup" }, "replacement": { "title": "Request cylinder swap", "intro": "Choose product, quantity and preferred pickup time for the swap of empty cylinders.", "selectItem": "Product", "quantity": "Number of cylinders", "pickupSlot": "Preferred pickup time", "noPickup": "No time selected — admin will suggest a time", "notes": "Additional notes", "notesPlaceholder": "Any preferences or info", "submit": "Send request", "submitting": "Sending…", "submitFailed": "Something went wrong. Try again.", "successTitle": "Swap request received", "successBody": "We have received your request and will get back to you with a confirmation by email.", "back": "Back to my bookings", "existing": "Previous swap requests", "noExisting": "No previous swap requests for this booking.", "status": { "REQUESTED": "Received", "SCHEDULED": "Scheduled", "DELIVERED": "Swapped", "CANCELLED": "Cancelled" } } }, "adminReplacements": { "navTitle": "Swap requests", "title": "Swap requests", "empty": "No swap requests yet.", "filters": { "all": "All" }, "columns": { "created": "Received", "booking": "Booking", "org": "Organization", "item": "Item", "quantity": "Qty", "total": "Amount", "pickup": "Preferred time", "status": "Status" }, "actions": { "markScheduled": "Mark scheduled", "markDelivered": "Mark swapped", "markCancelled": "Cancel" }, "status": { "REQUESTED": "Received", "SCHEDULED": "Scheduled", "DELIVERED": "Swapped", "CANCELLED": "Cancelled" }, "bookingSection": { "title": "Swap requests", "empty": "No swap requests for this booking." } } }