Files
fotospiel-app/resources/js/admin/i18n/locales/en/management.json
Codex Agent b1250c6246
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled
Collapse photobooth credentials
2026-01-13 08:59:24 +01:00

3032 lines
105 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"billing": {
"title": "Packages & billing",
"subtitle": "Manage your purchased packages and track their durations.",
"actions": {
"refresh": "Refresh",
"exportCsv": "Export CSV",
"portal": "Manage in Paddle",
"portalBusy": "Opening portal...",
"openPackages": "Open packages",
"contactSupport": "Contact support"
},
"stats": {
"package": {
"label": "Active package",
"helper": "Renews {{date}}",
"empty": "None yet"
},
"events": {
"label": "Events used",
"helper": "Remaining: {{count}}"
},
"addons": {
"label": "Add-ons",
"helper": "Lifetime history"
},
"transactions": {
"label": "Transactions",
"helper": "Synced payments"
}
},
"errors": {
"load": "Unable to load package data.",
"more": "Unable to load more entries.",
"portal": "Unable to open the Paddle portal."
},
"checkoutSuccess": "Checkout completed. Your package will activate shortly.",
"checkoutCancelled": "Checkout was cancelled.",
"checkoutActivated": "Your package is now active.",
"checkoutPendingTitle": "Activating your package",
"checkoutPendingBody": "This can take a few minutes. We will update this screen once the package is active.",
"checkoutPendingBadge": "Pending",
"checkoutPendingRefresh": "Refresh",
"checkoutPendingDismiss": "Dismiss",
"checkoutFailedTitle": "Checkout failed",
"checkoutFailedBody": "The payment did not complete. You can try again or contact support.",
"checkoutFailedBadge": "Failed",
"checkoutFailedRetry": "Try again",
"checkoutFailedDismiss": "Dismiss",
"checkoutActionTitle": "Action required",
"checkoutActionBody": "Complete your payment to activate the package.",
"checkoutActionBadge": "Action needed",
"checkoutActionButton": "Continue checkout",
"checkoutFailureReasons": {
"paddle_failed": "The payment was declined.",
"paddle_cancelled": "The checkout was cancelled."
},
"sections": {
"invoices": {
"title": "Invoices & payments",
"hint": "Review transactions and download receipts.",
"empty": "No payments found."
},
"addOns": {
"title": "Add-ons",
"hint": "Track extra photo, guest, or time bundles per event.",
"empty": "No add-ons booked."
},
"overview": {
"title": "Package overview",
"description": "Your active package and the most important metrics.",
"empty": "No active package yet.",
"emptyBadge": "No active package",
"cards": {
"package": {
"label": "Active package",
"helper": "Currently assigned"
},
"used": {
"label": "Events used",
"helper": "Remaining: {{count}}"
},
"price": {
"label": "Price (net)"
},
"expires": {
"label": "Expires",
"helper": "Auto-renews if enabled"
}
},
"warnings": {
"noEvents": "Event allowance exhausted. Please upgrade or renew your package.",
"lowEvents": "Only {{remaining}} event slots remaining.",
"expiresSoon": "Package expires on {{date}}.",
"expired": "Package has expired."
}
},
"packages": {
"title": "Packages",
"hint": "Active package, limits, and history at a glance.",
"description": "Overview of active and past packages.",
"empty": "No packages purchased yet.",
"card": {
"statusActive": "Active",
"statusInactive": "Inactive",
"used": "Events used",
"available": "Remaining",
"expires": "Expires",
"warnings": {
"noEvents": "Event allowance exhausted.",
"lowEvents": "Only {{remaining}} events left.",
"expiresSoon": "Expires on {{date}}.",
"expired": "Package has expired."
}
}
},
"transactions": {
"title": "Paddle transactions",
"description": "Recent Paddle transactions for this customer account.",
"empty": "No Paddle transactions yet.",
"labels": {
"transactionId": "Transaction {{id}}",
"checkoutId": "Checkout ID: {{id}}",
"origin": "Origin: {{origin}}",
"receipt": "View receipt",
"tax": "Tax: {{value}}"
},
"table": {
"transaction": "Transaction",
"amount": "Amount",
"status": "Status",
"date": "Date",
"origin": "Origin"
},
"status": {
"completed": "Completed",
"processing": "Processing",
"failed": "Failed",
"cancelled": "Cancelled",
"unknown": "Unknown"
},
"loadMore": "Load more transactions",
"loadingMore": "Loading…"
}
},
"addOns": {
"title": "Add-on history",
"description": "One-time add-ons purchased for this tenant.",
"empty": "No add-ons purchased yet.",
"badge": "Add-ons",
"table": {
"addon": "Add-on",
"event": "Event",
"amount": "Amount",
"status": "Status",
"purchased": "Purchased",
"eventFallback": "Event archived"
},
"status": {
"pending": "Processing",
"completed": "Completed",
"failed": "Failed"
},
"extras": {
"photos": "+{{count}} photos",
"guests": "+{{count}} guests",
"gallery": "+{{count}} gallery days"
},
"loadMore": "Load more add-ons",
"loadingMore": "Loading add-ons…"
},
"features": {
"branding": "Branding",
"watermark": "Watermark",
"maxPhotos": "Max photos",
"maxGuests": "Max guests",
"galleryDays": "Gallery days",
"maxTasks": "Max tasks",
"featureList": "Included features"
},
"packages": {
"title": "Package history",
"description": "Overview of current and past packages.",
"empty": "No packages purchased yet.",
"card": {
"statusActive": "Active",
"statusInactive": "Inactive",
"used": "Used events",
"available": "Available",
"expires": "Expires"
}
}
},
"common": {
"all": "All",
"anonymous": "Anonymous",
"error": "Something went wrong",
"loadMore": "Load more",
"processing": "Processing…",
"select": "Select",
"close": "Close",
"reset": "Reset"
},
"photos": {
"moderation": {
"title": "Moderate photos",
"subtitle": "Highlight favourites or remove unsuitable uploads."
},
"alerts": {
"errorTitle": "Action failed"
},
"gallery": {
"title": "Gallery",
"description": "Click a photo to feature it or remove it.",
"photoboothCount": "{{count}} photobooth uploads",
"photoboothCta": "Open photobooth access",
"emptyTitle": "No photos yet",
"emptyDescription": "Encourage your guests to upload the gallery will appear here.",
"select": "Select",
"selected": "Selected",
"likes": "Likes: {{count}}",
"uploader": "Uploader: {{name}}"
},
"filters": {
"all": "All",
"featured": "Highlights",
"hidden": "Hidden",
"pending": "Pending",
"photobooth": "Photobooth",
"search": "Search uploads …",
"count": "{{count}} uploads",
"selected": "{{count}} selected",
"clearSelection": "Clear selection",
"selectAll": "Select all"
},
"actions": {
"hide": "Hide",
"show": "Show",
"feature": "Set highlight",
"unfeature": "Remove highlight",
"approve": "Approve",
"delete": "Delete",
"copy": "Copy link",
"copySuccess": "Link copied"
}
},
"limits": {
"photosBlocked": "Upload limit reached. Buy more photos to continue.",
"photosWarning": "{{remaining}} of {{limit}} photos remaining.",
"guestsBlocked": "Guest limit reached.",
"guestsWarning": "{{remaining}} of {{limit}} guests remaining.",
"galleryExpired": "Gallery expired. Extend to keep it online.",
"galleryWarningHour": "Gallery expires in {{hours}} hour.",
"galleryWarningHours": "Gallery expires in {{hours}} hours.",
"galleryWarningDay": "Gallery expires in {{days}} day.",
"galleryWarningDays": "Gallery expires in {{days}} days.",
"buyMorePhotos": "Buy more photos",
"extendGallery": "Extend gallery",
"buyMoreGuests": "Add more guests"
},
"notificationLogs": {
"photoLimit": {
"title": "Photo limit reached",
"body": "{{event}} reached its photo limit of {{limit}}."
},
"guestLimit": {
"title": "Guest limit reached",
"body": "{{event}} reached its guest limit of {{limit}}."
},
"eventLimit": {
"title": "Event quota reached",
"body": "Your package allows no more events. Limit: {{limit}}."
},
"galleryWarning": {
"title": "Gallery expiring soon",
"body": "{{event}} expires in {{days}} days."
},
"galleryExpired": {
"title": "Gallery expired",
"body": "{{event}} gallery is offline. Extend to reactivate."
},
"photoThreshold": {
"title": "Photo usage warning",
"body": "{{event}} is at {{used}} / {{limit}} photos."
},
"guestThreshold": {
"title": "Guest usage warning",
"body": "{{event}} is at {{used}} / {{limit}} guests."
},
"generic": {
"body": "Notification sent via {{channel}}."
},
"filterEmpty": "No notifications for this event.",
"clearFilter": "Show all notifications",
"filter": {
"unread": "Unread",
"read": "Read",
"all": "All"
},
"scope": {
"all": "All scopes",
"photos": "Photos",
"guests": "Guests",
"gallery": "Gallery",
"events": "Events",
"package": "Package",
"general": "General"
},
"markAllRead": "Mark all read",
"markScopeRead": "Mark read",
"markFailed": "Could not update notifications.",
"unread": "Unread"
},
"events": {
"detail": {
"kpi": {
"tasks": "Active tasks",
"guests": "Guests registered",
"photos": "Images uploaded"
},
"pickEvent": "Select event",
"active": "Active",
"managementTitle": "Event management",
"dateTbd": "Date tbd",
"locationPlaceholder": "Location"
},
"quick": {
"tasks": "Tasks & checklists",
"qr": "QR code layouts",
"images": "Image management",
"liveShow": "Live Show queue",
"liveShowSettings": "Live Show settings",
"guests": "Guest management",
"guestMessages": "Guest messages",
"branding": "Branding & theme",
"photobooth": "Photobooth",
"recap": "Recap & archive"
},
"status": {
"published": "Live",
"draft": "Draft",
"archived": "Archived"
},
"list": {
"title": "Your events",
"subtitle": "Plan memorable moments. Manage everything around your events here.",
"filters": {
"all": "All",
"upcoming": "Upcoming",
"draft": "Draft",
"past": "Past"
},
"empty": {
"filtered": "No events match this filter.",
"filteredHint": "Try a different status or clear your search."
},
"actions": {
"create": "New event",
"settings": "Settings",
"open": "Open event"
},
"stats": {
"photos": "Photos",
"guests": "Guests",
"tasks": "Tasks"
},
"overview": {
"title": "Overview",
"empty": "No events yet create your first one to get started.",
"count": "{{count}} {{count, plural, one {event} other {events}}} managed.",
"badge": {
"dashboard": "Customer dashboard"
}
}
}
},
"galleryStatus": {
"badge": "Runtime",
"title": "Gallery runtime & availability",
"subtitle": "Keep track of how long guests can still access the gallery.",
"stateLabel": "Status",
"stateExpired": "Gallery expired",
"stateWarning": "Gallery expiring soon",
"stateOk": "Gallery active",
"noExpiry": "No expiry date set",
"expiresAt": "Expiry date: {{date}}",
"daysLabel": "Days remaining",
"expiredHint": "Guests can no longer access the gallery extend your package to reopen it.",
"hint": "If needed, extend the runtime in your package settings."
},
"members": {
"title": "Event members",
"subtitle": "Manage moderators, admins, and helpers for this event.",
"actions": {
"back": "Back to overview"
},
"errors": {
"missingSlug": "No event slug provided.",
"load": "Could not load members.",
"emailRequired": "Please provide an email address.",
"invite": "Invitation could not be sent.",
"remove": "Member could not be removed."
},
"alerts": {
"notFoundTitle": "Event not found",
"notFoundDescription": "Please return to the event list.",
"lockedTitle": "Feature not enabled",
"lockedDescription": "Member management isnt available for this event yet. Contact support to activate the feature."
},
"sections": {
"list": {
"title": "Members",
"empty": "No members invited yet."
},
"invite": {
"title": "Invite new member"
}
},
"labels": {
"status": "Status: {{status}}",
"joined": "Joined: {{date}}"
},
"form": {
"emailLabel": "Email",
"emailPlaceholder": "person@example.com",
"nameLabel": "Name (optional)",
"namePlaceholder": "Name",
"roleLabel": "Role",
"rolePlaceholder": "Select role",
"submit": "Send invitation"
},
"roles": {
"tenantAdmin": "Customer admin",
"member": "Member",
"guest": "Guest"
},
"statuses": {
"published": "Published",
"draft": "Draft",
"active": "Active"
},
"eventStatus": "Status: {{status}}",
"events": {
"untitled": "Untitled event"
}
},
"eventMenu": {
"summary": "Overview",
"photos": "Uploads",
"tasks": "Tasks",
"invites": "Invites",
"branding": "Branding",
"photobooth": "Photobooth",
"recap": "Recap"
},
"eventTasks": {
"title": "Tasks & missions",
"subtitle": "Curate mission cards and tasks for this event.",
"search": "Search tasks",
"emotionFilter": "Emotion filter",
"allEmotions": "All",
"actions": {
"back": "Back to overview",
"assign": "Assign selected tasks"
},
"errors": {
"missingSlug": "No event slug provided.",
"load": "Event tasks could not be loaded.",
"assign": "Tasks could not be assigned.",
"photoOnlyEnable": "Photo-only mode could not be enabled.",
"photoOnlyDisable": "Photo-only mode could not be disabled.",
"collections": "Collections could not be loaded."
},
"emotions": {
"error": "Could not load emotions."
},
"manageEmotions": "Manage emotions",
"manageEmotionsHint": "Filter and keep your taxonomy tidy.",
"alerts": {
"notFoundTitle": "Event not found",
"notFoundDescription": "Please return to the event list."
},
"tabs": {
"tasks": "Tasks",
"packs": "Mission packs"
},
"eventStatus": "Status: {{status}}",
"summary": {
"assigned": "Assigned tasks",
"library": "Library",
"mode": "Active mode",
"tasksMode": "Mission cards",
"photoOnly": "Photos only"
},
"library": {
"hintTitle": "More templates in the task library",
"hintCopy": "Create tasks, emotions, or mission packs once and reuse them across events.",
"open": "Open task library"
},
"sections": {
"assigned": {
"title": "Assigned tasks",
"search": "Search tasks...",
"noResults": "No tasks match this search term.",
"empty": "No tasks assigned yet."
},
"library": {
"title": "Add tasks from library",
"empty": "No tasks found in the library."
}
},
"priorities": {
"low": "Low",
"medium": "Medium",
"high": "High",
"urgent": "Urgent"
},
"modes": {
"title": "Tasks & photo mode",
"photoOnlyHint": "Photo-only mode is active. Guests can upload photos but wont see tasks.",
"tasksHint": "Tasks are visible in the guest app. Switch to photo-only for uploads without prompts.",
"photoOnly": "Photo-only",
"tasks": "Tasks active",
"switchLabel": "Enable photo-only mode",
"updating": "Saving setting ..."
},
"collections": {
"title": "Mission packs",
"subtitle": "Import task collections that fit your event.",
"viewAll": "View all collections",
"errorTitle": "Collections unavailable",
"empty": "No recommended collections found.",
"tasksCount": "{{count}} tasks",
"genericType": "General",
"global": "Global",
"custom": "Custom",
"recommended": "Recommended",
"optional": "Optional",
"importCta": "Import mission pack",
"imported": "Collection imported successfully",
"importFailed": "Mission pack could not be imported",
"error": "Collections could not be loaded."
},
"toolkit": {
"titleFallback": "Event-Day Toolkit",
"subtitle": "Stay on top of uploads, tasks, and invites while your event is live.",
"errors": {
"missingSlug": "No event slug provided.",
"loadFailed": "Toolkit could not be loaded.",
"feedbackFailed": "Feedback could not be sent."
},
"actions": {
"backToEvent": "Back to event",
"moderate": "Moderate photos",
"manageTasks": "Open tasks",
"refresh": "Refresh"
},
"alerts": {
"errorTitle": "Error",
"attention": "Heads-up",
"noTasks": "No tasks assigned yet pick a package or curate prompts.",
"noInvites": "There are no active QR invites. Create one to welcome guests.",
"pendingPhotos": "Photos are waiting for moderation. Review uploads before publishing."
},
"metrics": {
"uploadsTotal": "Total uploads",
"uploads24h": "Uploads (24h)",
"pendingPhotos": "Pending moderation",
"activeInvites": "Active invites",
"engagementMode": "Mode",
"modePhotoOnly": "Photo mode",
"modeTasks": "Tasks"
},
"pending": {
"title": "Waiting photos",
"subtitle": "Moderation suggestions for new uploads.",
"cta": "Go to moderation",
"empty": "No photos waiting for review right now.",
"unknownUploader": "Unknown guest",
"uploadedAt": "Uploaded:",
"statusPending": "Status: awaiting review"
},
"invites": {
"title": "QR invites",
"subtitle": "Keep an eye on links and brandable layouts.",
"activeCount": "{{count}} active",
"totalCount": "{{count}} total",
"empty": "No QR invites yet.",
"statusActive": "Active",
"statusInactive": "Inactive",
"manage": "Manage invites"
},
"tasks": {
"title": "Active tasks",
"subtitle": "Motivate guests with clear prompts and highlights.",
"summary": "{{completed}} of {{total}} done",
"empty": "No tasks assigned yet.",
"manage": "Manage tasks",
"completed": "Done",
"open": "Open"
},
"recent": {
"title": "Latest uploads",
"subtitle": "A quick glance at freshly approved photos.",
"empty": "No approved photos yet."
},
"feedback": {
"title": "How helpful is this toolkit?",
"subtitle": "Your input helps us fine-tune the event-day experience.",
"positive": "Helpful",
"neutral": "Okay",
"negative": "Needs work",
"placeholder": "Let us know what worked well or what youre missing …",
"disclaimer": "Well keep your feedback private and use it to improve the product.",
"submit": "Send feedback",
"thanksTitle": "Thank you!",
"thanksDescription": "Weve received your feedback.",
"badge": "Custom"
}
},
"story": {
"title": "Branding & story",
"description": "Align colors, emotions, and mission packs for a cohesive guest experience.",
"emotionsTitle": "Emotions",
"emotionsCount": "{{count}} active",
"emotionsEmpty": "Activate emotions to categorise your tasks.",
"emotionsCta": "Manage emotions",
"collectionsTitle": "Mission packs",
"collectionsCount": "{{count}} tasks",
"collectionsEmpty": "No recommended mission packs yet.",
"collectionsCta": "View mission packs"
},
"customizer": {
"title": "Customize QR invite",
"description": "Adjust layout, texts, colors, and logo for your printable invite.",
"layout": "Layout",
"selectLayout": "Select layout",
"headline": "Headline",
"subtitle": "Sub headline",
"descriptionLabel": "Description",
"badgeLabel": "Badge",
"instructionsHeading": "Instructions heading",
"instructionsLabel": "Hints",
"addInstruction": "Add hint",
"removeInstruction": "Remove",
"linkHeading": "Link title",
"linkLabel": "Link",
"ctaLabel": "Call to action",
"colors": {
"accent": "Accent colour",
"text": "Text colour",
"background": "Background",
"secondary": "Secondary colour",
"badge": "Badge colour"
},
"logo": {
"label": "Logo",
"hint": "PNG, max. 1 MB. Appears in the top right corner.",
"remove": "Remove logo"
},
"preview": {
"title": "Preview",
"hint": "Visual reference for colours and texts. Save to generate new PDFs/PNGs."
},
"actions": {
"save": "Save",
"cancel": "Cancel",
"reset": "Reset"
},
"badge": "Custom",
"actionLabel": "Customize layout",
"errors": {
"logoTooLarge": "Logo must not exceed 1 MB.",
"noLayout": "Please select a layout.",
"downloadFailed": "Download failed. Please try again.",
"printFailed": "Printing could not be started."
},
"defaults": {
"badgeLabel": "Digital guest box",
"instructionsHeading": "How it works",
"linkHeading": "Alternative link",
"ctaLabel": "Scan and get started",
"instructions": [
"Scan the QR code",
"Create your profile",
"Share your photos"
],
"textBlock": "New text block add your own notes here."
}
}
},
"invites": {
"cardTitle": "QR invites & layouts",
"cardDescription": "Create invite links, customise layouts, and prepare print-ready PDFs.",
"subtitle": "Manage invite links, layouts, and branding for your guests.",
"tabs": {
"layout": "Customise layout",
"share": "Share links & QR",
"export": "Print & export"
},
"summary": {
"active": "Active invites",
"total": "Total"
},
"workflow": {
"title": "Invite workflow",
"description": "Work through layout, sharing, and export in order.",
"badge": "Setup",
"steps": {
"layout": {
"title": "Pick a layout",
"description": "Adjust copy, colors, and QR placement."
},
"share": {
"title": "Share links & QR",
"description": "Enable invites, copy QR codes, and distribute them."
},
"export": {
"title": "Print & export",
"description": "Create PDF/PNG files for print-ready cards."
}
}
},
"share": {
"title": "Quick access to guest link",
"description": "Use the primary link to share QR cards or send it to your team.",
"primaryLabel": "Primary link",
"stats": {
"active": "{{count}} active",
"total": "{{count}} total"
},
"actions": {
"copy": "Copy link",
"open": "Open",
"editLayout": "Edit layout",
"editHint": "Adjust colors & copy inside the editor.",
"export": "Print/export",
"create": "Create another"
},
"hint": "Share the link inside your team or include it in newsletters."
},
"actions": {
"refresh": "Refresh",
"create": "Create invite",
"backToList": "Back to list",
"backToEvent": "Open event",
"copy": "Copy link",
"copied": "Copied!",
"deactivate": "Deactivate",
"buyMoreGuests": "Unlock more guests"
},
"labels": {
"usage": "Usage",
"layout": "Layout",
"layoutFallback": "Default",
"selected": "Currently selected",
"tapToEdit": "Select to edit",
"noPrintSource": "No printable version available.",
"standard": "Default link",
"qrAlt": "QR preview"
},
"empty": {
"title": "No invites yet",
"copy": "Create an invite to generate ready-to-print QR layouts."
},
"errorTitle": "Action failed",
"export": {
"title": "Print & export",
"description": "Download print-ready files or launch a test print right away.",
"mode": {
"standard": "Standard layout",
"advanced": "Advanced editor"
},
"previewHint": "Save after making changes to regenerate the export files.",
"noLayoutPreview": "No preview available yet. Save your layout first.",
"selectPlaceholder": "Select invite",
"noInviteSelected": "Select an invite first to start downloads.",
"noLayouts": "There are currently no layouts available for this invite.",
"actions": {
"title": "Actions",
"description": "Start a test print or download the layouts.",
"printNow": "Print now",
"hint": "PDF includes crop marks; PNG is perfect for quick digital approvals."
},
"errorTitle": "Download failed"
},
"customizer": {
"heading": "Customise layout",
"copy": "Edit texts, colours, and positions right next to the live preview. Changes appear instantly.",
"actions": {
"save": "Save layout",
"reset": "Reset",
"print": "Print",
"removeLogo": "Remove logo",
"uploadLogo": "Upload logo (max. 1 MB)",
"addInstruction": "Add step",
"undo": "Undo",
"redo": "Redo"
},
"sections": {
"layouts": "Layouts",
"layoutsHint": "Pick a starting template. You can switch at any time.",
"text": "Text",
"instructions": "Step-by-step",
"instructionsHint": "Guide guests with clear steps. Maximum of five.",
"branding": "Colors"
},
"elements": {
"title": "Elements & positioning",
"hint": "Select an element to move, edit, or remove it.",
"headline": "Headline",
"subtitle": "Subheading",
"description": "Description",
"badge": "Badge",
"link": "Link field",
"cta": "Call-to-action",
"qr": "QR code",
"logo": "Logo",
"text": "Free text block",
"remove": "Remove element",
"details": "Element details",
"detailsHint": "Adjust copy, alignment, and more. Changes appear instantly in the preview.",
"customText": "Text content",
"qrHint": "Resize and reposition the QR code directly on the canvas.",
"logoHint": "Adjust logos in the branding section. Use the canvas to resize or move the element.",
"align": "Alignment",
"alignLeft": "Left",
"alignCenter": "Center",
"alignRight": "Right",
"fontSize": "Font size",
"selectHint": "Tap an element on the canvas or in the list to edit its details.",
"listHint": "Select an element to reveal its settings directly under the entry.",
"addSubtitle": "Show subtitle",
"addBadge": "Show badge",
"addLink": "Add link field",
"addCta": "Insert call-to-action",
"addText": "Add free text block"
},
"fields": {
"headline": "Headline",
"subtitle": "Subheading",
"description": "Description",
"badge": "Badge label",
"cta": "Call-to-action",
"linkHeading": "Link heading",
"linkLabel": "Link/short URL",
"instructionsHeading": "Section heading",
"instructionPlaceholder": "Describe this step",
"accentColor": "Accent colour",
"textColor": "Text colour",
"backgroundColor": "Background",
"badgeColor": "Badge colour",
"logo": "Logo"
},
"preview": {
"title": "Live preview",
"subtitle": "See the export-ready version instantly.",
"mobileOpen": "Show preview",
"mobileTitle": "Invite preview",
"mobileHint": "Opens a preview overlay",
"readyForGuests": "Ready for guests",
"instructions": "This link takes guests directly to the gallery and works together with the printed QR code.",
"qrAlt": "Invite QR code"
},
"placeholderTitle": "No layout available",
"placeholderCopy": "Create an invite first to customise copy, colours, and print layouts.",
"loadingTitle": "Loading layouts",
"loadingDescription": "One moment we are preparing the available layouts.",
"loadingError": "Layouts could not be loaded.",
"layoutFallback": "Layout"
}
},
"photobooth": {
"status": {
"heading": "Status",
"active": "Photobooth link is active.",
"inactive": "No photobooth uploads connected yet.",
"badgeActive": "ACTIVE",
"badgeInactive": "INACTIVE",
"expiresAt": "Will switch off automatically on {{date}}",
"mode": "Mode"
},
"mode": {
"title": "Uploader connection",
"description": "Use the Fotospiel uploader app for live HTTP uploads. Rotating access regenerates credentials.",
"active": "Current: {{mode}}",
"uploader": "Uploader App (HTTP)"
},
"selector": {
"title": "Connection",
"description": "Use the Fotospiel uploader app for HTTP uploads."
},
"credentials": {
"heading": "Uploader app credentials",
"description": "Share these credentials with the Fotospiel uploader app.",
"uploaderTitle": "Uploader App (HTTP)",
"uploaderDescription": "Enter URL, username and password in the Fotospiel uploader app. Responses default to JSON (XML optional).",
"show": "Show credentials",
"hide": "Hide credentials",
"hidden": "Credentials are hidden. Tap to show them.",
"host": "Host",
"port": "Port",
"username": "Username",
"password": "Password",
"path": "Upload path",
"postUrl": "Upload URL",
"responseFormat": "Response format"
},
"connectCode": {
"label": "Connect code",
"description": "Create a 6-digit code for the uploader app.",
"expires": "Expires: {{date}}",
"actions": {
"generate": "Generate connect code",
"generated": "Connect code created"
},
"errors": {
"failed": "Connect code could not be created."
}
},
"uploader": {
"hint": "POST with media file or base64 \"media\" field; app uses these credentials."
},
"uploaderDownload": {
"title": "Fotospiel Uploader App",
"description": "The Fotospiel Uploader App is required so uploads stay stable, credentials remain protected, and no files are lost.",
"actionWindows": "Download uploader (Windows)",
"actionMac": "Download uploader (macOS)",
"actionLinux": "Download uploader (Linux)"
},
"actions": {
"enable": "Activate photobooth",
"disable": "Disable",
"rotate": "Regenerate access"
},
"rateLimit": {
"heading": "Security & limits",
"description": "Uploads are limited to {{count}} photos per minute.",
"body": "If exceeded we block the connection and reopen it after 60 seconds.",
"hint": "Expiry follows the event end date.",
"usage": "Uploads last hour",
"warning": "Close to the limit slow down the upload rate or reach out to support."
},
"checklist": {
"title": "Setup checklist",
"description": "Complete each step before guests upload.",
"enable": "Activate access",
"enableCopy": "Enable the uploader app connection for this event.",
"share": "Share credentials",
"shareCopy": "Share URL, username, and password with the operator.",
"monitor": "Monitor uploads",
"monitorCopy": "Watch uploads & limits in the dashboard."
},
"timeline": {
"title": "Status timeline",
"activation": "Activation",
"activationPending": "Not activated yet",
"activationReady": "Access is live.",
"credentials": "Credentials",
"credentialsReady": "User {{username}} is ready.",
"credentialsPending": "Credentials not generated yet.",
"expiry": "Expiry",
"expiryHint": "Switches off on {{date}}",
"noExpiry": "No expiry configured.",
"lastUpload": "Last upload",
"lastUploadAt": "Last seen {{date}}",
"lastUploadPending": "No uploads recorded yet."
},
"presets": {
"title": "Choose a mode",
"description": "Switch between planning and live behaviour for the photobooth.",
"planTitle": "Planning mode",
"planDescription": "Keep the FTP account disabled while preparing the booth.",
"liveTitle": "Live mode",
"liveDescription": "Access stays enabled and uploads are processed instantly (FTP or Sparkbooth).",
"badgePlan": "Planning",
"badgeLive": "Live",
"current": "Active",
"actions": {
"apply": "Apply mode",
"rotate": "Reset credentials"
}
},
"stats": {
"title": "Upload status",
"description": "Keep an eye on the most recent photobooth uploads.",
"lastUpload": "Last upload",
"none": "No uploads yet",
"uploads24h": "Uploads (24h)",
"share": "Photobooth share (recent)",
"totalEvent": "Uploads total (event)",
"sample": "Uploads analysed",
"sourcePhotobooth": "Source: Photobooth",
"sourceEvent": "Source: Event"
}
},
"events": {
"errors": {
"missingSlug": "No event selected.",
"loadFailed": "Event could not be loaded.",
"saveFailed": "Event could not be saved.",
"notFoundTitle": "Event not found",
"notFoundBody": "Without a valid identifier we cant load the data. Return to the list and choose an event.",
"toggleFailed": "Status could not be updated.",
"checkoutMissing": "Checkout could not be started.",
"checkoutFailed": "Add-on checkout failed."
},
"alerts": {
"failedTitle": "Action failed"
},
"success": {
"addonApplied": "Add-on applied. Limits will refresh shortly."
},
"legalConsent": {
"title": "Before purchase",
"description": "Please confirm the legal notes before buying an add-on.",
"checkboxTerms": "I have read and accept the Terms & Conditions, Privacy Policy, and Right of Withdrawal.",
"checkboxWaiver": "I expressly request that you begin providing the digital services (activation of my event add-on) before the withdrawal period has expired. I understand that I lose my right of withdrawal once the contract has been fully performed.",
"errorTerms": "Please confirm you accept the terms, privacy policy, and right of withdrawal.",
"errorWaiver": "Please confirm the immediate start of the digital service and the early expiry of the right of withdrawal.",
"confirm": "Continue to checkout",
"cancel": "Cancel"
},
"eventStartConsent": {
"title": "Before your first event",
"description": "Please confirm the immediate start of the digital service before creating your first event.",
"checkboxWaiver": "I expressly request that the digital service begins now and understand my right of withdrawal expires once the contract has been fully performed.",
"errorWaiver": "Please confirm the immediate start of the digital service and the early expiry of the right of withdrawal.",
"confirm": "Create event",
"cancel": "Cancel"
},
"placeholders": {
"untitled": "Untitled event"
},
"actions": {
"backToList": "Back to list",
"edit": "Edit",
"members": "Team & roles",
"tasks": "Manage tasks",
"invites": "Invites & layouts",
"photos": "Moderate photos",
"refresh": "Refresh",
"buyMorePhotos": "Unlock more photos",
"buyMoreGuests": "Unlock more guests",
"extendGallery": "Extend gallery"
},
"form": {
"editTitle": "Edit event",
"createTitle": "Create new event",
"name": "Event name",
"date": "Date & time",
"description": "Optional details",
"descriptionPlaceholder": "Description",
"location": "Location",
"locationPlaceholder": "Location",
"enableBranding": "Enable branding & moderation",
"fallbackName": "Event",
"saveDraft": "Save as draft",
"saving": "Saving…",
"update": "Update event",
"create": "Create event"
},
"workspace": {
"detailSubtitle": "Keep status, tasks, and invites of your event in one view.",
"toolkitSubtitle": "Bundle moderation, tasks, and invites for the event day.",
"hero": {
"badge": "Event",
"description": "Focus on tasks, moderation, and invites for this event.",
"liveBadge": "Live?"
},
"sections": {
"statusTitle": "Event status & visibility",
"statusSubtitle": "Activate the event for guests or hide it temporarily."
},
"fields": {
"status": "Status",
"active": "Active for guests",
"date": "Event date",
"noDate": "No date",
"eventType": "Event type",
"insights": "Recent activity",
"uploadsTotal": "{{count}} uploads total",
"uploadsToday": "{{count}} uploads (24h)",
"likesTotal": "{{count}} likes in total"
},
"actions": {
"pause": "Pause event",
"activate": "Activate event"
},
"activeYes": "Yes",
"activeNo": "No"
},
"sections": {
"addons": {
"title": "Add-ons & Boosts",
"description": "Recently purchased add-ons for this event.",
"status": {
"completed": "Active",
"pending": "Processing",
"failed": "Failed"
},
"purchasedAt": "Purchased {{date}}",
"summary": {
"photos": "+{{count}} photos",
"guests": "+{{count}} guests",
"gallery": "+{{count}} days gallery"
}
}
},
"status": {
"published": "Published",
"draft": "Draft",
"archived": "Archived"
},
"quickActions": {
"title": "Quick actions",
"subtitle": "Jump into the most important flows before and during the event.",
"moderate": "Moderate photos",
"tasks": "Edit tasks",
"invites": "Manage layouts & QR",
"roles": "Adjust team & roles",
"print": "Print layouts as PDF",
"toggle": "Change status"
},
"metrics": {
"uploadsTotal": "Uploads total",
"uploads24h": "Uploads (24h)",
"pending": "Photos in moderation",
"activeInvites": "Active invites"
},
"invites": {
"badge": "Invites",
"title": "QR invites",
"subtitle": "Keep an eye on active links and layouts.",
"activeCount": "{{count}} active",
"totalCount": "{{count}} total",
"empty": "No invites created yet.",
"manage": "Manage layouts & invites"
},
"tasks": {
"badge": "Tasks",
"title": "Active tasks",
"subtitle": "Motivate guests with clear prompts & highlights.",
"summary": "{{completed}} of {{total}} complete",
"empty": "No tasks assigned yet.",
"manage": "Open task workspace",
"status": {
"completed": "Done",
"open": "Open"
}
},
"recap": {
"badge": "Recap",
"subtitle": "Wrap up, export, and manage gallery runtime.",
"galleryTitle": "Gallery status",
"galleryCounts": "{{photos}} photos, {{pending}} pending, {{likes}} likes",
"open": "Open",
"closed": "Closed",
"openGallery": "Open gallery",
"closeGallery": "Close gallery",
"moderate": "View uploads",
"shareGuests": "Share guest gallery",
"shareLink": "Guest link",
"noPublicUrl": "No guest link set. Configure the public link in the event setup.",
"copyLink": "Copy link",
"copySuccess": "Link copied",
"copyError": "Link could not be shared.",
"qrTitle": "Share QR code",
"qrDownload": "Download QR code",
"qrShare": "Share link/QR",
"qrAlt": "Guest gallery QR code",
"allowDownloads": "Allow downloads",
"allowDownloadsHint": "Guests may save photos",
"allowSharing": "Allow sharing",
"allowSharingHint": "Guests may share links",
"galleryOpen": "Gallery open",
"galleryClosed": "Gallery closed",
"exportTitle": "Export & backup",
"exportCopy": "Back up all assets",
"exportHint": "Start ZIP/CSV exports and backups.",
"backup": "Backup",
"downloadAll": "Download everything",
"downloadHighlights": "Download highlights",
"highlightsHint": "“Highlights” = photos marked as highlight in the gallery.",
"retentionTitle": "Extend / archive",
"expiresAt": "Expires on {{date}}",
"noExpiry": "No expiry date set",
"retentionHint": "Extend the gallery runtime with an add-on. Extensions add up.",
"expiry": "Expiry",
"archive": "Archive/Delete",
"extendOptions": "All add-ons for this event",
"extendHint": "Extensions add up. Checkout opens in a new tab.",
"priceMissing": "Price not linked",
"noAddons": "No add-ons available right now.",
"archivedSuccess": "Event archived. Gallery is closed.",
"archiveTitle": "Archive gallery?",
"archiveDesc": "Archiving closes the gallery, deactivates guest links, and stops new uploads. Finish exports first.",
"archiveImpact": "Effects of archiving",
"archiveImpactClose": "Guest access ends; uploads/downloads are disabled.",
"archiveImpactLinks": "Public links and QR codes become invalid; existing sessions expire.",
"archiveImpactData": "Data stays internally for compliance/support and can be deleted on request (GDPR).",
"archiveConfirm": "I completed exports and want to archive now.",
"archiveConfirmCta": "Archive now"
},
"branding": {
"badge": "Branding & story",
"title": "Branding & mission packs",
"subtitle": "Align colors, typography, and task packs for your event.",
"brandingTitle": "Branding",
"brandingFallback": "Current selection",
"brandingCopy": "Adjust colors & fonts inside the layout editor.",
"brandingCta": "Adjust branding",
"collectionsTitle": "Mission packs",
"collectionsFallback": "Recommended story",
"collectionsCopy": "Import curated packs or activate emotions inside the task workspace.",
"collectionsActive": "{{count}} active links",
"tasksCount": "{{count}} tasks",
"collectionsManage": "Edit tasks",
"collectionsImport": "Import mission pack",
"emotionsTitle": "Emotions",
"emotionsEmpty": "Activate emotions to categorise tasks.",
"emotionsCta": "Manage emotions"
},
"photos": {
"pendingBadge": "Moderation",
"pendingTitle": "Photos awaiting review",
"pendingSubtitle": "Check uploads before they go live.",
"pendingCount": "{{count}} photos pending",
"pendingEmpty": "No photos waiting for moderation.",
"openModeration": "Open moderation",
"recentBadge": "Uploads",
"recentTitle": "Latest uploads",
"recentSubtitle": "Spot the latest guest highlights.",
"recentEmpty": "No new uploads yet.",
"toastVisible": "Photo made visible again.",
"toastHidden": "Photo hidden.",
"toastFeatured": "Photo marked as highlight.",
"toastUnfeatured": "Highlight removed.",
"errorAuth": "Session expired. Please sign in again.",
"errorVisibility": "Could not change visibility.",
"errorFeature": "Action failed.",
"show": "Show",
"hide": "Hide",
"feature": "Feature",
"unfeature": "Remove highlight"
},
"feedback": {
"title": "How is your event running?",
"subtitle": "Your feedback helps us prioritise improvements.",
"afterEventTitle": "Event wrapped quick feedback?",
"afterEventCopy": "Did everything work out? Your answer helps us support future events.",
"privacyHint": "Admin-only feedback, no guest data",
"positive": "Was great",
"neutral": "Was okay",
"negative": "Needed support",
"best": {
"uploads": "Uploads & speed",
"invites": "QR invites & layouts",
"moderation": "Moderation & export",
"experience": "Overall app experience"
},
"placeholder": "Optional: tell us what worked well or what to improve.",
"errorTitle": "Feedback could not be sent.",
"authError": "Your session expired. Please sign in again.",
"genericError": "Feedback could not be sent.",
"submit": "Send feedback",
"submitted": "Thanks!",
"afterEventThanks": "Your feedback arrived. Well get back to you if we have questions.",
"sendAnother": "Send another feedback",
"supportFollowup": "Request support",
"cta": "Give feedback",
"quickSentiment": "Pick sentiment (positive/neutral/support).",
"dialogTitle": "Quick after-event feedback",
"dialogCopy": "Pick a sentiment, what worked best, and optionally what to improve.",
"sentiment": "Sentiment",
"bestQuestion": "What worked best?",
"improve": "What should we improve?",
"supportHelp": "Id like a short follow-up (support)."
}
},
"tasks": {
"actions": {
"back": "Back to overview",
"assign": "Assign selected tasks"
},
"title": "Tasks & missions",
"subtitle": "Curate mission cards and tasks for this event.",
"alerts": {
"notFoundTitle": "Event not found",
"notFoundDescription": "Please return to the event list."
},
"tabs": {
"tasks": "Tasks",
"packs": "Mission packs"
},
"eventStatus": "Status: {{status}}",
"modes": {
"title": "Tasks & photo mode",
"tasksHint": "Tasks are active. Guests see mission cards in the app.",
"photoOnlyHint": "Photo-only mode is active. Guests can upload photos but wont see tasks.",
"tasks": "Tasks active",
"photoOnly": "Photo-only",
"switchLabel": "Enable/disable tasks",
"updating": "Saving setting ..."
},
"summary": {
"assigned": "Assigned tasks",
"library": "Library",
"mode": "Active mode",
"tasksMode": "Mission cards",
"photoOnly": "Photos only"
},
"library": {
"hintTitle": "More templates in the task library",
"hintCopy": "Create tasks, emotions, or mission packs once and reuse them across events.",
"open": "Open task library"
},
"sections": {
"assigned": {
"title": "Assigned tasks",
"search": "Search tasks...",
"noResults": "No tasks match this search term.",
"empty": "No tasks assigned yet."
},
"library": {
"title": "Add tasks from library",
"empty": "No tasks found in the library."
}
},
"actionsShort": {
"assign": "Assign selected tasks"
},
"errors": {
"missingSlug": "No event slug provided.",
"load": "Tasks could not be loaded.",
"assign": "Tasks could not be assigned.",
"collections": "Collections could not be loaded.",
"photoOnlyEnable": "Photo-only mode could not be enabled.",
"photoOnlyDisable": "Photo-only mode could not be disabled."
},
"collections": {
"errorTitle": "Collections unavailable",
"import": "Import collection",
"error": "Collections could not be loaded.",
"title": "Mission packs",
"subtitle": "Import task collections that fit your event.",
"viewAll": "View all collections",
"empty": "No recommended collections found.",
"tasksCount": "{{count}} tasks",
"genericType": "General",
"global": "Global",
"custom": "Custom",
"recommended": "Recommended",
"optional": "Optional",
"importCta": "Import mission pack",
"imported": "Collection imported successfully",
"importFailed": "Mission pack could not be imported"
}
},
"collections": {
"title": "Task collections",
"subtitle": "Browse curated task bundles or activate them for your events.",
"actions": {
"import": "Import",
"create": "Create collection",
"openTasks": "Open task library"
},
"filters": {
"search": "Search collections",
"scope": "Scope",
"allScopes": "All scopes",
"eventType": "Event type",
"allEventTypes": "All event types",
"globalOnly": "Global templates",
"tenantOnly": "Customer collections"
},
"scope": {
"global": "Global template",
"tenant": "Customer-owned"
},
"empty": {
"title": "No collections yet",
"description": "Import one of Fotospiels curated templates or create your own bundle to get started."
},
"dialogs": {
"importTitle": "Import collection",
"collectionLabel": "Collection",
"selectEvent": "Select event",
"submit": "Import",
"cancel": "Cancel"
},
"notifications": {
"imported": "Collection imported successfully",
"error": "Collection could not be imported"
},
"errors": {
"eventsLoad": "Events could not be loaded.",
"selectEvent": "Please select an event.",
"noEvents": "No events yet create one to activate this collection."
},
"labels": {
"taskCount": "{{count}} tasks",
"updated": "Updated: {{date}}"
},
"pagination": {
"prev": "Previous",
"next": "Next",
"page": "Page {{current}} of {{total}}"
}
},
"engagement": {
"subtitle": "Manage tasks, collections, and emotions from a single workspace."
},
"emotions": {
"title": "Emotions",
"subtitle": "Manage the emotional tone available for your events.",
"actions": {
"create": "Add emotion",
"enable": "Enable",
"disable": "Disable"
},
"scope": {
"global": "Global",
"tenant": "Customer"
},
"labels": {
"updated": "Updated: {{date}}",
"noEventType": "All event types"
},
"status": {
"active": "Active",
"inactive": "Inactive"
},
"errors": {
"genericTitle": "Action failed",
"load": "Emotions could not be loaded.",
"create": "Emotion could not be created.",
"toggle": "Emotion status could not be updated.",
"nameRequired": "Please provide a name."
},
"empty": {
"title": "No emotions yet",
"description": "Create your own emotion or use the Fotospiel defaults."
},
"dialogs": {
"createTitle": "Add custom emotion",
"name": "Name",
"description": "Description",
"icon": "Icon",
"color": "Color",
"activeLabel": "Active",
"activeDescription": "Visible in the task library",
"cancel": "Cancel",
"submit": "Save emotion"
}
},
"management": {
"photobooth": {
"title": "Photobooth uploads",
"titleForEvent": "Manage photobooth uploads",
"subtitle": "Create uploader access for photobooth apps and keep limits in sight.",
"actions": {
"backToEvent": "Back to detail view",
"allEvents": "Back to event list"
},
"errors": {
"missingSlug": "No event selected.",
"loadFailed": "Could not load photobooth link.",
"enableFailed": "Could not enable access.",
"disableFailed": "Could not disable access.",
"rotateFailed": "Could not regenerate credentials."
},
"confirm": {
"disable": "Disable photobooth access?"
}
}
}
,
"settings": {
"hero": {
"badge": "Administration",
"description": "Shape the admin experience for your team appearance, notifications, and security.",
"summary": {
"appearance": "Match the look & feel with the guest portal.",
"notifications": "Fine-tune alerts for tasks, packages, and live events."
},
"actions": {
"profile": "Edit profile",
"events": "Back to events"
},
"accountLabel": "Signed-in account",
"support": "Adjust settings for you and your team changes apply instantly."
},
"appearance": {
"badge": "Appearance",
"title": "Appearance & branding",
"description": "Align the admin area with your event colors.",
"lightTitle": "Light mode",
"lightCopy": "Great for offices and high contrast.",
"darkTitle": "Dark mode",
"darkCopy": "Gentle on eyes during evening events.",
"themeLabel": "Choose theme",
"themeHint": "Follow the system preference or override it manually."
},
"session": {
"badge": "Account & security",
"title": "Signed-in account",
"description": "Manage your session or jump to the profile quickly.",
"loggedInAs": "Signed in as",
"unknown": "No user loaded right now.",
"security": "SSO & 2FA available",
"session": "Session valid for 12h",
"hint": "Switch devices? Quickly re-login to refresh permissions.",
"logout": "Sign out",
"cancel": "Back"
},
"profile": {
"actions": {
"openProfile": "Edit profile"
}
},
"support": {
"badge": "Help & support",
"title": "Talk to our team",
"copy": "Need help? Our support usually replies within a few hours.",
"cta": "Contact support"
},
"notifications": {
"title": "Notifications",
"description": "Choose which events should trigger an email notification.",
"errorLoad": "Unable to load notification preferences.",
"errorSave": "Saving failed. Please try again.",
"hint": "You can re-enable notifications at any time.",
"actions": {
"save": "Save",
"reset": "Reset to defaults"
},
"summary": {
"badge": "Status",
"title": "Notification overview",
"channel": "Email channel",
"channelCopy": "All warnings are delivered via email.",
"credits": "Credits",
"threshold": "Warning at {{count}} remaining slots"
},
"meta": {
"creditLast": "Last slot warning: {{date}}",
"creditNever": "No slot warning sent yet."
},
"items": {
"photoThresholds": {
"label": "Photo thresholds",
"description": "Send warnings when photo usage reaches 80% and 95%."
},
"photoLimits": {
"label": "Photo limit reached",
"description": "Let me know when no further uploads are possible."
},
"guestThresholds": {
"label": "Guest quota warning",
"description": "Warn me shortly before all guest links are in use."
},
"guestLimits": {
"label": "Guest quota exhausted",
"description": "Inform me when no more guest links can be generated."
},
"galleryWarnings": {
"label": "Gallery ends soon",
"description": "Receive reminders 7 and 1 day before the gallery expires."
},
"galleryExpired": {
"label": "Gallery expired",
"description": "Let me know when guests can no longer access the gallery."
},
"eventThresholds": {
"label": "Event quota warning",
"description": "Notify me when the reseller package is almost used up."
},
"eventLimits": {
"label": "Event quota exhausted",
"description": "Notify me when no further events can be created."
},
"packageExpiring": {
"label": "Package expires soon",
"description": "Reminders 30, 7, and 1 day before the package expires."
},
"packageExpired": {
"label": "Package expired",
"description": "Inform me once the package has expired."
}
}
}
},
"branding": {
"title": "Branding & fonts",
"subtitle": "Adjust colors, typography, logos/emoticons, and buttons for the guest app.",
"errors": {
"missingSlug": "No event selected open it from the event list."
},
"actions": {
"back": "Back to event"
},
"sections": {
"mode": "Default vs. event-specific",
"toggleTitle": "Choose branding source",
"toggleDescription": "Use tenant defaults or override only for this event.",
"palette": "Palette & mode",
"colorsTitle": "Colors & light/dark",
"colorsDescription": "Set primary, secondary, background, and surface colors.",
"typography": "Typography & logo",
"fonts": "Fonts & logo/emoticon",
"fontDescription": "Configure heading/body fonts plus logo/emoji and alignment.",
"buttons": "Buttons & links",
"buttonsTitle": "Buttons, links & radius",
"buttonsDescription": "Choose style, radius, and optional link color.",
"preview": "Preview",
"previewTitle": "Mini guest view",
"previewCopy": "Header, CTA, and bottom navigation reflecting your branding."
},
"useDefault": "Use default",
"useCustom": "Event-specific",
"toggleHint": "Default uses tenant colors; event-specific overrides them.",
"standard": "Default",
"custom": "Event",
"toggleAria": "Toggle event-specific branding",
"mode": "Mode",
"modeAuto": "Auto",
"modeLight": "Light",
"modeDark": "Dark",
"typography": {
"heading": "Heading font",
"body": "Body font"
},
"size": "Font size",
"logo": {
"value": "Emoticon/Logo URL",
"mode": "Logo mode",
"position": "Position"
},
"emoticon": "Emoticon/Text",
"upload": "Upload/URL",
"left": "Left",
"center": "Center",
"right": "Right",
"palette": {
"primary": "Primary",
"secondary": "Secondary",
"surface": "Surface"
},
"buttonStyle": "Style",
"buttons": {
"style": "Style",
"radius": "Radius",
"primary": "Button primary",
"secondary": "Button secondary",
"linkColor": "Link color"
},
"filled": "Filled",
"outline": "Outline",
"radius": "Radius",
"linkColor": "Link color",
"buttonPrimary": "Button primary",
"buttonSecondary": "Button secondary",
"reset": "Reset to default",
"save": "Save branding",
"saving": "Saving...",
"saved": "Branding saved.",
"saveError": "Branding could not be saved.",
"footer": {
"default": "Tenant default colors active.",
"custom": "Event-specific branding active."
},
"usingDefault": "Tenant branding active",
"usingCustom": "Event branding active",
"preview": {
"demoTitle": "Demo event",
"guestView": "Guest view · {{mode}}",
"ctaCopy": "CTA & buttons reflect the chosen style.",
"cta": "Upload photos now",
"bottomNav": "Bottom navigation"
}
},
"taskLibrary": {
"titles": {
"default": "Task library",
"embedded": "Tasks"
},
"subtitles": {
"default": "Assign tasks and track progress around your events.",
"embedded": "Plan tasks, actions, and highlights for your guests."
},
"errors": {
"title": "Error",
"load": "Tasks could not be loaded."
},
"actions": {
"collections": "Collections",
"new": "New",
"searchPlaceholder": "Search tasks …"
},
"pagination": {
"page": "Page {{current}} of {{total}} · {{count}} entries",
"summary": "Total {{count}} tasks · Page {{current}} of {{total}}",
"prev": "Back",
"next": "Next"
},
"form": {
"editTitle": "Edit task",
"createTitle": "Create task",
"title": "Title",
"description": "Description",
"descriptionPlaceholder": "What should guests do?",
"priority": "Priority",
"priorityPlaceholder": "Choose priority",
"dueDate": "Due date",
"completedTitle": "Already completed?",
"completedCopy": "Mark tasks as done when they should no longer be visible.",
"cancel": "Cancel",
"save": "Save"
},
"priorities": {
"low": "Low",
"medium": "Medium",
"high": "High",
"urgent": "Urgent"
},
"list": {
"template": "Template #{{id}}",
"edit": "Edit",
"delete": "Delete"
},
"empty": {
"title": "No tasks yet",
"description": "Create a new task or import templates to inspire your guests.",
"cta": "Create first task"
}
},
"billingWarning": {
"title": "Needs attention",
"description": "Package alerts and limits you should keep an eye on."
},
"eventForm": {
"errors": {
"notice": "Notice",
"loadFailed": "Event could not be loaded.",
"saveFailed": "Event could not be saved.",
"nameRequired": "Please enter an event name.",
"typeRequired": "Please select an event type."
},
"titles": {
"create": "Create event",
"edit": "Edit event"
},
"subtitle": "Fill in the essentials and share your event with guests.",
"sections": {
"details": {
"title": "Event details",
"description": "Name, URL, and date define how guests see your event."
}
},
"fields": {
"name": {
"label": "Event name",
"placeholder": "e.g. Summer Party 2025",
"help": "The slug and event URL are generated from the name.",
"fallback": "Event"
},
"date": {
"label": "Date"
},
"description": {
"label": "Optional details",
"placeholder": "Description"
},
"location": {
"label": "Location",
"placeholder": "Location"
},
"enableBranding": {
"label": "Enable branding & moderation",
"locked": "Branding is available on higher packages. Upgrade to enable custom branding."
},
"type": {
"label": "Event type",
"loading": "Loading event types…",
"placeholder": "Select event type",
"empty": "No event types available yet. Please add one in the admin area."
},
"publish": {
"label": "Publish immediately",
"help": "Enable if guests should see the event right away. You can change the status later."
},
"tasksMode": {
"label": "Tasks & challenges",
"helpOn": "Guests can see tasks, challenges and achievements.",
"helpOff": "Task mode is off: guests only see the photo feed."
}
},
"actions": {
"backToList": "Back to list",
"saving": "Saving…",
"save": "Save",
"cancel": "Cancel",
"saveDraft": "Save as draft",
"update": "Update event",
"create": "Create event"
}
},
"notifications": {
"trigger": "Notifications",
"title": "Notifications",
"empty": "All clear",
"empty.message": "All caught up — well notify you about updates.",
"action": {
"dismiss": "Dismiss",
"refresh": "Load new alerts"
},
"noEvents": {
"title": "Lets get started",
"description": "Create your first event to unlock uploads, tasks, and invites.",
"cta": "Create event"
},
"draftEvent": {
"title": "Event still a draft",
"description": "Publish to enable invites and the gallery.",
"cta": "Open event"
},
"upcomingEvent": {
"title": "Event starts soon",
"description_today": "Todays event — check uploads and tasks.",
"description_days": "{{count}} days left — prepare invites and tasks.",
"cta": "Open event"
},
"pendingUploads": {
"title": "Uploads awaiting review",
"description": "{{count}} new uploads need moderation.",
"cta": "Open uploads"
},
"newPhotos": {
"title": "New photos arrived",
"description": "{{count}} uploads are waiting for you.",
"cta": "Open gallery",
"ctaFallback": "View events"
}
},
"events": {
"detail": {
"kpi": {
"tasks": "Active tasks",
"guests": "Guests registered",
"photos": "Images uploaded"
},
"pickEvent": "Select event",
"active": "Active",
"managementTitle": "Event management",
"dateTbd": "Date tbd",
"locationPlaceholder": "Location"
},
"quick": {
"tasks": "Tasks & checklists",
"qr": "QR code layouts",
"images": "Image management",
"guests": "Guest management",
"branding": "Branding & theme",
"moderation": "Photo moderation",
"recap": "Recap & archive"
},
"status": {
"published": "Live",
"draft": "Draft",
"archived": "Archived"
},
"list": {
"title": "Your events",
"subtitle": "Plan memorable moments. Manage everything around your events here.",
"filters": {
"all": "All",
"upcoming": "Upcoming",
"draft": "Draft",
"past": "Past"
},
"empty": {
"filtered": "No events match this filter.",
"filteredHint": "Try a different status or clear your search."
},
"actions": {
"create": "New event",
"settings": "Settings"
},
"overview": {
"title": "Overview",
"empty": "No events yet create your first one to get started.",
"count": "{{count}} {{count, plural, one {event} other {events}}} managed.",
"badge": {
"dashboard": "Customer dashboard"
}
}
},
"errors": {
"missingSlug": "No event slug provided.",
"missingType": "Event type is missing. Please save the event again in the admin.",
"loadFailed": "Event data could not be loaded.",
"saveFailed": "Event could not be saved."
},
"branding": {
"titleShort": "Branding",
"previewTitle": "Guest app preview",
"previewSubtitle": "Current colors & fonts",
"primary": "Primary",
"accent": "Accent",
"colors": "Colors",
"primaryColor": "Primary color",
"accentColor": "Accent color",
"fonts": "Fonts",
"headingFont": "Headline font",
"headingFontPlaceholder": "SF Pro Display",
"bodyFont": "Body font",
"bodyFontPlaceholder": "SF Pro Text",
"logo": "Logo",
"logoAlt": "Logo",
"replaceLogo": "Replace logo",
"removeLogo": "Remove",
"logoHint": "Upload a logo to brand guest invites and QR posters.",
"uploadLogo": "Upload logo (max. 1 MB)",
"logoTooLarge": "Logo must be under 1 MB.",
"save": "Save branding",
"saving": "Saving...",
"saveSuccess": "Branding saved.",
"reset": "Reset to defaults",
"fontPicker": "Select font",
"noFonts": "No fonts found."
},
"watermark": {
"tab": "Watermark",
"title": "Watermark",
"previewTitle": "Watermark Preview",
"mode": "Mode",
"modeBase": "Base watermark",
"modeCustom": "Custom watermark",
"modeOff": "Off",
"upload": "Upload watermark",
"uploadCta": "PNG/SVG/JPG (max. 3 MB)",
"replace": "Replace watermark",
"uploadHint": "PNG with transparency recommended.",
"placement": "Placement & size",
"size": "Size",
"opacity": "Opacity",
"padding": "Padding",
"offset": "Offset X",
"offsetX": "X-axis",
"offsetY": "Y-axis",
"lockedBranding": "Custom watermark locked by this package. Using base watermark.",
"lockedDisabled": "Watermarks are disabled for this package.",
"errors": {
"noAsset": "Please upload a watermark image first.",
"fileTooLarge": "Watermark must be under 3 MB."
}
},
"members": {
"title": "Guest management",
"inviteTitle": "Invite member",
"name": "Name",
"namePlaceholder": "Alex Example",
"email": "Email",
"emailPlaceholder": "alex@example.com",
"role": "Role",
"roleMember": "Member",
"roleAdmin": "Admin",
"invite": "Send invite",
"inviteSuccess": "Invitation sent",
"inviteFailed": "Invitation failed.",
"emailInvalid": "Please enter a valid email address.",
"search": "Search members",
"filters": {
"statusLabel": "Status",
"roleLabel": "Role",
"statusAll": "All statuses",
"statusPending": "Pending",
"statusActive": "Active",
"statusInvited": "Invited",
"roleAll": "All roles",
"roleAdmin": "Admins",
"roleMember": "Members"
},
"listTitle": "Team & guests",
"copyEmail": "Email copied",
"copyEmailFailed": "Copy failed",
"copyEmailLabel": "Copy email",
"empty": "No invitations yet.",
"emptyTitle": "Invite your team",
"emptyBody": "Send the first invite so helpers can access the event.",
"emptyFilteredTitle": "No matching members",
"emptyFilteredBody": "Adjust your search or filters to see members.",
"clearFilters": "Clear filters",
"fallbackName": "Guest",
"admin": "Admin",
"member": "Member",
"statuses": {
"pending": "Pending",
"active": "Active",
"invited": "Invited",
"unknown": "Unknown"
},
"confirmRemove": "Remove member?",
"remove": "Remove",
"removeHint": "This member will lose access to the event.",
"removeSuccess": "Member removed",
"removeFailed": "Member could not be removed."
},
"tasks": {
"disabledTitle": "Task mode is off for this event",
"disabledBody": "Guests only see the photo feed. Enable tasks in the event settings to show them again.",
"title": "Tasks & checklists",
"quickNav": "Quick jump",
"sections": {
"assigned": "Assigned",
"library": "Library",
"collections": "Collections",
"emotions": "Emotions"
},
"summary": {
"assigned": "Assigned",
"library": "Library",
"collections": "Collections",
"emotions": "Emotions"
},
"actions": "Actions",
"assigned": "Task added",
"updateFailed": "Task could not be saved.",
"created": "Task saved",
"removed": "Task removed",
"imported": "Task pack imported",
"saveTask": "Save task",
"add": "Add",
"empty": "No tasks assigned yet.",
"emptyHint": "Add tasks or import a pack.",
"emptyTitle": "No tasks yet",
"emptyBody": "Create tasks or import a pack for your event.",
"emptyActionTask": "Add task",
"emptyActionPack": "Import pack",
"addTask": "Add task",
"addTaskHint": "Create a new task for this event.",
"import": "Import pack",
"importHint": "Use predefined packs for your event type.",
"search": "Search tasks",
"emotionFilter": "Emotion filter",
"customEmotion": "Custom emotion",
"allEmotions": "All",
"count": "{{count}} tasks",
"library": "More tasks",
"hideLibrary": "Hide library",
"viewAllLibrary": "View all",
"libraryEmpty": "No more tasks available.",
"hideCollections": "Hide collections",
"showCollections": "Show all",
"collectionsEmpty": "No collections available.",
"bulkAdd": "Bulk add",
"manageEmotions": "Manage emotions",
"manageEmotionsHint": "Filter and keep your taxonomy tidy.",
"saveEmotion": "Save emotion",
"emotionName": "Name",
"emotionNamePlaceholder": "e.g. Joy",
"emotionColor": "Color",
"emotionRemoved": "Emotion removed",
"emotionSaved": "Emotion saved",
"emotionNone": "None",
"emotion": "Emotion",
"description": "Description",
"descriptionPlaceholder": "Optional notes",
"titleLabel": "Title",
"titlePlaceholder": "e.g. First group photo",
"bulkHint": "One task per line. These will be created and added to the event.",
"bulkPlaceholder": "e.g.\nBride & groom portrait\nGroup photo main guests"
}
},
"mobileDashboard": {
"title": "Dashboard",
"selectEvent": "Select an event to continue",
"emptyBadge": "Welcome aboard",
"emptyTitle": "Welcome! Let's launch your first event",
"emptyBody": "Print a QR, collect uploads, and start moderating in minutes.",
"ctaCreate": "Create event",
"ctaWelcome": "Start welcome journey",
"emptyChecklistTitle": "Quick steps to go live",
"emptyChecklistProgress": "{{done}}/{{total}} steps",
"emptyStepDetails": "Add name & date",
"emptyStepQr": "Share your QR poster",
"emptyStepReview": "Review first uploads",
"emptyPreviewTitle": "Here's what awaits",
"emptyPreviewQr": "Share QR poster",
"emptyPreviewQrDesc": "Print-ready codes for guests and crew.",
"emptyPreviewGallery": "Gallery & highlights",
"emptyPreviewGalleryDesc": "Moderate uploads, feature the best moments.",
"emptyPreviewTasks": "Tasks & challenges",
"emptyPreviewTasksDesc": "Guide guests with playful prompts.",
"emptySupportTitle": "Need help?",
"emptySupportBody": "We are here if you need a hand getting started.",
"emptySupportDocs": "Docs: Getting started",
"emptySupportEmail": "Email support",
"setupTitle": "Set up this device",
"setupSubtitle": "Finish these steps for the best mobile experience.",
"setup": {
"installTitle": "Install app",
"installDescription": "Get full-screen access and faster launch.",
"installIosHint": "On iOS: Share → Add to Home Screen.",
"installReady": "Ready",
"installManual": "Manual",
"installAction": "Install now",
"pushTitle": "Enable push notifications",
"pushDescription": "Stay on top of uploads and quota alerts.",
"pushBlockedDesc": "Notifications are blocked in the browser settings.",
"pushBlocked": "Blocked",
"pushOff": "Off",
"pushAction": "Enable push",
"pushSettings": "Open settings",
"storageTitle": "Protect offline data",
"storageDescription": "Keep cached uploads available when you go offline.",
"storageUnprotected": "Not protected",
"storageAction": "Protect now"
},
"packageSummary": {
"title": "Your package summary",
"fallbackTitle": "Package summary",
"subtitle": "Here is a quick overview of your active package.",
"limitPhotos": "Photos",
"limitGuests": "Guests",
"limitDays": "Gallery days",
"limitsTitle": "Limits",
"remaining": "Remaining events",
"purchased": "Purchased",
"expires": "Expires",
"unlimited": "Unlimited",
"unknown": "Unknown",
"featuresTitle": "Included features",
"feature": {
"priority_support": "Priority support",
"reseller_dashboard": "Reseller dashboard",
"custom_domain": "Custom domain",
"custom_branding": "Custom branding",
"custom_tasks": "Custom tasks",
"unlimited_sharing": "Unlimited sharing",
"analytics": "Analytics",
"advanced_reporting": "Advanced reporting",
"live_slideshow": "Live slideshow",
"basic_uploads": "Guest uploads",
"team_management": "Team management",
"moderation_tools": "Moderation tools",
"prints": "Print uploads",
"photo_likes_enabled": "Photo likes",
"event_checklist": "Event checklist",
"advanced_analytics": "Advanced analytics",
"branding_allowed": "Branding",
"watermark_allowed": "Watermarks"
},
"hint": "You can revisit billing any time to review or upgrade your package.",
"continue": "Continue to event setup",
"dismiss": "Close",
"bannerTitle": "Your package summary",
"bannerSubtitle": "{{name}} is active. Review limits & features.",
"bannerCta": "View"
},
"pickEvent": "Select an event",
"status": {
"published": "Live",
"draft": "Draft"
},
"photosLabel": "Review photos",
"photosDesc": "Moderate uploads and highlights",
"tasksLabel": "Manage tasks & challenges",
"tasksDesc": "Assign and track progress",
"tasksDisabledDesc": "Guests do not see tasks (task mode off)",
"qrLabel": "Show / share QR code",
"qrDesc": "Posters, cards, and links",
"shortcutsTitle": "Shortcuts",
"shortcutGuests": "Guest management",
"shortcutPrints": "Print & poster downloads",
"shortcutInvites": "Team / helper invites",
"shortcutSettings": "Event settings",
"shortcutBranding": "Branding & moderation",
"kpiTitle": "Key performance indicators",
"kpiTasks": "Open tasks",
"kpiPhotos": "Photos",
"kpiGuests": "Guests",
"alertsTitle": "Alerts",
"alertPending": "{{count}} new uploads awaiting moderation",
"alertTasks": "{{count}} tasks due or open"
},
"mobileTour": {
"title": "Quick tour",
"progress": "Step {{current}} of {{total}}",
"skip": "Skip",
"back": "Back",
"next": "Next",
"done": "Done",
"eventTitle": "Create your first event",
"eventBody": "Add the date, location, and package to unlock sharing.",
"eventAction": "Create event",
"qrTitle": "Share your QR code",
"qrBody": "Guests join instantly by scanning or using the invite link.",
"qrAction": "Open QR",
"photosTitle": "Moderate uploads",
"photosBody": "Approve, feature, or hide photos with quick swipes.",
"photosAction": "Review photos",
"pushTitle": "Stay in the loop",
"pushBody": "Enable push alerts to catch limits and new uploads fast.",
"pushAction": "Notification settings"
},
"mobileUploads": {
"title": "Uploads",
"emptyTitle": "Create an event first",
"emptyBody": "Add your first event to review uploads and manage QR sharing.",
"pickEvent": "Pick an event to manage uploads",
"open": "Open"
},
"mobilePhotos": {
"title": "Photo moderation",
"empty": "No photos found.",
"emptyTitle": "No uploads yet",
"emptyBody": "Share the QR code so guests can start uploading photos.",
"emptyAction": "Share QR code",
"count": "{{count}} photos",
"filtersTitle": "Filter",
"applyFilters": "Apply filters",
"uploader": "Uploader",
"uploaderPlaceholder": "Name or email",
"onlyFeatured": "Only featured",
"onlyHidden": "Only hidden",
"loadFailed": "Photos could not be loaded.",
"hideSuccess": "Photo hidden",
"showSuccess": "Photo shown",
"visibilityFailed": "Visibility could not be changed.",
"featureSuccess": "Marked as highlight",
"unfeatureSuccess": "Highlight removed",
"featureFailed": "Highlight could not be changed",
"approveSuccess": "Photo approved",
"approveFailed": "Approval failed.",
"queued": "Action saved. Syncs when you are back online.",
"queueTitle": "Changes waiting to sync",
"queueOnline": "{{count}} actions ready to sync.",
"queueOffline": "{{count}} actions saved offline.",
"queueSync": "Sync",
"queueWaiting": "Offline",
"syncFailed": "Sync failed. Please try again later."
},
"liveShowQueue": {
"title": "Live Show queue",
"subtitle": "Approve photos for the live slideshow",
"filterLabel": "Live status",
"statusPending": "Pending",
"statusApproved": "Approved",
"statusRejected": "Rejected",
"statusNone": "Not queued",
"status": {
"pending": "Pending",
"approved": "Approved",
"rejected": "Rejected",
"none": "Not queued"
},
"galleryApproved": "Gallery approved",
"galleryApprovedOnly": "Gallery and Live Show approvals are separate. Pending photos can be approved here.",
"galleryStatus": {
"approved": "Gallery approved",
"pending": "Gallery pending",
"rejected": "Gallery rejected",
"hidden": "Hidden"
},
"offlineNotice": "You are offline. Live Show actions are disabled.",
"empty": "No photos waiting for Live Show.",
"loadFailed": "Live Show queue could not be loaded.",
"approve": "Approve for Live Show",
"approveAndLive": "Approve + Live",
"reject": "Reject",
"clear": "Remove from Live Show",
"approveSuccess": "Photo approved for Live Show",
"approveAndLiveSuccess": "Photo approved and added to Live Show",
"rejectSuccess": "Photo removed from Live Show",
"clearSuccess": "Live Show approval removed",
"notEligible": "Not eligible",
"actionFailed": "Live Show update failed."
},
"liveShowSettings": {
"title": "Live Show settings",
"subtitle": "Tune the playback, pacing, and effects shown on the screen.",
"link": {
"title": "Live Show link",
"subtitle": "Open this link on a screen to run the Live Show.",
"empty": "No Live Show link available.",
"copy": "Copy",
"share": "Share",
"open": "Open",
"rotate": "Rotate",
"rotateConfirm": "Rotate the Live Show link? The current link will stop working.",
"rotateSuccess": "Live Show link rotated.",
"rotateFailed": "Live Show link could not be rotated.",
"rotatedAt": "Last rotated {{time}}",
"noExpiry": "No expiry date (valid until you rotate it).",
"loadFailed": "Live Show link could not be loaded.",
"copySuccess": "Link copied",
"copyFailed": "Link could not be copied",
"shareTitle": "Live Show",
"shareText": "Live Show link",
"qrAlt": "Live Show QR code",
"downloadQr": "Download QR"
},
"loadFailed": "Live Show settings could not be loaded.",
"save": "Save settings",
"saveSuccess": "Live Show settings updated.",
"saveFailed": "Live Show settings could not be saved.",
"sections": {
"moderation": "Moderation",
"playback": "Playback",
"effects": "Effects & layout"
},
"fields": {
"moderationMode": "Moderation mode",
"retention": "Retention window (hours)",
"playbackMode": "Playback mode",
"paceMode": "Pace",
"fixedInterval": "Fixed interval (seconds)",
"layoutMode": "Layout",
"backgroundMode": "Background",
"effectPreset": "Effect preset",
"effectIntensity": "Effect intensity"
},
"hints": {
"moderation": "Trusted sources include admin uploads and photobooths.",
"retention": "Controls how long approved photos remain in rotation.",
"playback": "Balance newer uploads with highlights when the queue is busy.",
"pace": "Auto adapts to new uploads; fixed keeps a steady rhythm.",
"layout": "Split and grid layouts are used when enough photos are available."
},
"moderation": {
"off": "No moderation",
"manual": "Manual approval",
"trustedOnly": "Trusted sources only"
},
"playback": {
"newest": "Newest first",
"balanced": "Balanced mix",
"curated": "Curated"
},
"pace": {
"auto": "Auto",
"fixed": "Fixed"
},
"layout": {
"single": "Single",
"split": "Split",
"gridBurst": "Grid burst"
},
"background": {
"blurLast": "Blur last photo",
"gradient": "Soft gradient",
"solid": "Solid color",
"brand": "Brand colors"
},
"effects": {
"filmCut": {
"title": "Film cut",
"description": "Clean fades with a subtle cinematic feel."
},
"shutterFlash": {
"title": "Shutter flash",
"description": "Snappy flash and slide transitions."
},
"polaroidToss": {
"title": "Polaroid toss",
"description": "Card-like frames with a gentle rotation settle."
},
"parallaxGlide": {
"title": "Parallax glide",
"description": "Slow zoom with a soft depth backdrop."
},
"light": {
"title": "Light effects",
"description": "Minimal transitions for lower-powered devices."
}
}
},
"mobileProfile": {
"title": "Profile",
"settings": "Settings",
"account": "Account & security",
"language": "Language",
"languageDe": "Deutsch",
"languageEn": "English",
"theme": "Theme",
"themeLight": "Light",
"themeDark": "Dark",
"themeSystem": "System",
"logout": "Log out"
},
"mobileSettings": {
"title": "Settings",
"accountTitle": "Account",
"tenantBadge": "Tenant #{{id}}",
"notificationsTitle": "Notifications",
"notificationsLoading": "Loading settings ...",
"pushTitle": "App Push",
"pushUnsupported": "Push notifications are not supported on this device.",
"pushDenied": "Notifications are blocked in your browser.",
"pushActive": "Push active",
"pushInactive": "Push disabled",
"pushLoading": "Loading ...",
"deviceTitle": "Device & permissions",
"deviceDescription": "Keep the admin app fast, offline-ready, and allowed to send alerts.",
"deviceLoading": "Checking device status ...",
"deviceStorageAction": "Enable offline protection",
"deviceStorageError": "Offline storage could not be enabled.",
"deviceStatusValues": {
"granted": "Allowed",
"denied": "Blocked",
"prompt": "Needs permission",
"unsupported": "Not supported",
"persisted": "Protected",
"available": "Not protected",
"online": "Online",
"offline": "Offline"
},
"deviceStatus": {
"notifications": {
"label": "Notifications",
"description": "Allow alerts and admin updates."
},
"camera": {
"label": "Camera",
"description": "Needed for QR scans and quick capture."
},
"storage": {
"label": "Offline storage",
"description": "Protect cached data from eviction."
},
"connection": {
"label": "Connection",
"description": "Shows if the app is online or offline."
}
},
"experienceTitle": "Experience",
"experienceBody": "Replay the quick tour or re-enable the install banner.",
"experienceReplay": "Replay quick tour",
"experienceResetInstall": "Show install banner",
"pref": {}
},
"events": {
"detail": {
"kpi": {
"tasks": "Active tasks",
"guests": "Guests registered",
"photos": "Images uploaded"
},
"pickEvent": "Select event",
"active": "Active",
"managementTitle": "Event management",
"dateTbd": "Date tbd",
"locationPlaceholder": "Location"
},
"quick": {
"tasks": "Tasks & checklists",
"qr": "QR code layouts",
"images": "Image management",
"guests": "Guest management",
"guestMessages": "Guest messages",
"branding": "Branding & theme",
"photobooth": "Photobooth",
"recap": "Recap & archive"
},
"status": {
"published": "Live",
"draft": "Draft",
"archived": "Archived"
},
"errors": {
"missingSlug": "No event slug provided.",
"missingType": "Event type is missing. Please save the event again in the admin.",
"loadFailed": "Event data could not be loaded.",
"saveFailed": "Event could not be saved.",
"notFoundTitle": "Event not found",
"notFoundBody": "Without a valid identifier we cannot load data. Return to the event list and pick an event there.",
"toggleFailed": "Status could not be updated.",
"checkoutMissing": "Checkout could not be started.",
"checkoutFailed": "Add-on checkout failed."
},
"legalConsent": {
"title": "Before purchase",
"description": "Please confirm the legal notes before buying an add-on.",
"checkboxTerms": "I have read and accept the Terms & Conditions, Privacy Policy, and Right of Withdrawal.",
"checkboxWaiver": "I expressly request that you begin providing the digital services (activation of my event add-on) before the withdrawal period has expired. I understand that I lose my right of withdrawal once the contract has been fully performed.",
"errorTerms": "Please confirm you accept the terms, privacy policy, and right of withdrawal.",
"errorWaiver": "Please confirm the immediate start of the digital service and the early expiry of the right of withdrawal.",
"confirm": "Continue to checkout",
"cancel": "Cancel"
},
"eventStartConsent": {
"title": "Before your first event",
"description": "Please confirm the immediate start of the digital service before creating your first event.",
"checkboxWaiver": "I expressly request that the digital service begins now and understand my right of withdrawal expires once the contract has been fully performed.",
"errorWaiver": "Please confirm the immediate start of the digital service and the early expiry of the right of withdrawal.",
"confirm": "Create event",
"cancel": "Cancel"
},
"placeholders": {
"untitled": "Untitled event"
},
"branding": {
"titleShort": "Branding",
"previewTitle": "Guest app preview",
"previewSubtitle": "Current colors & fonts",
"primary": "Primary",
"accent": "Accent",
"colors": "Colors",
"primaryColor": "Primary color",
"accentColor": "Accent color",
"fonts": "Fonts",
"headingFont": "Headline font",
"bodyFont": "Body font",
"logo": "Logo",
"replaceLogo": "Replace logo",
"removeLogo": "Remove",
"logoHint": "Upload a logo to brand guest invites and QR posters.",
"uploadLogo": "Upload logo (max. 1 MB)",
"logoTooLarge": "Logo must be under 1 MB.",
"save": "Save branding",
"saving": "Saving...",
"saveSuccess": "Branding saved.",
"reset": "Reset to defaults",
"fontPicker": "Select font",
"noFonts": "No fonts found."
},
"watermark": {
"tab": "Watermark",
"title": "Watermark",
"previewTitle": "Watermark Preview",
"mode": "Mode",
"modeBase": "Base watermark",
"modeCustom": "Custom watermark",
"modeOff": "Off",
"upload": "Upload watermark",
"uploadCta": "PNG/SVG/JPG (max. 3 MB)",
"replace": "Replace watermark",
"uploadHint": "PNG with transparency recommended.",
"placement": "Placement & size",
"size": "Size",
"opacity": "Opacity",
"padding": "Padding",
"offset": "Offset X",
"offsetX": "X-axis",
"offsetY": "Y-axis",
"lockedBranding": "Custom watermark locked by this package. Using base watermark.",
"lockedDisabled": "Watermarks are disabled for this package.",
"errors": {
"noAsset": "Please upload a watermark image first.",
"fileTooLarge": "Watermark must be under 3 MB."
}
},
"members": {
"title": "Guest management",
"inviteTitle": "Invite member",
"name": "Name",
"namePlaceholder": "Alex Example",
"email": "Email",
"emailPlaceholder": "alex@example.com",
"role": "Role",
"roleMember": "Member",
"roleAdmin": "Admin",
"invite": "Send invite",
"inviteSuccess": "Invitation sent",
"inviteFailed": "Invitation failed.",
"search": "Search members",
"listTitle": "Team & guests",
"copyInvite": "Invite link copied",
"copyInviteFailed": "Copy failed",
"copyInviteLabel": "Copy invite link",
"empty": "No invitations yet.",
"emptyTitle": "Invite your team",
"emptyBody": "Send the first invite so helpers can access the event.",
"emptyAction": "Send first invite",
"admin": "Admin",
"member": "Member",
"confirmRemove": "Remove member?",
"remove": "Remove",
"removeHint": "This member will lose access to the event.",
"removeSuccess": "Member removed",
"removeFailed": "Member could not be removed."
},
"tasks": {
"disabledTitle": "Task mode is off for this event",
"disabledBody": "Guests only see the photo feed. Enable tasks in the event settings to show them again.",
"title": "Tasks & checklists",
"quickNav": "Quick jump",
"sections": {
"assigned": "Assigned",
"library": "Library",
"collections": "Collections",
"emotions": "Emotions"
},
"summary": {
"assigned": "Assigned",
"library": "Library",
"collections": "Collections",
"emotions": "Emotions"
},
"actions": "Actions",
"assigned": "Task added",
"updateFailed": "Task could not be saved.",
"created": "Task saved",
"removed": "Task removed",
"imported": "Task pack imported",
"saveTask": "Save task",
"add": "Add",
"empty": "No tasks assigned yet.",
"emptyHint": "Add tasks or import a pack.",
"emptyTitle": "No tasks yet",
"emptyBody": "Create tasks or import a pack for your event.",
"emptyActionTask": "Add task",
"emptyActionPack": "Import pack",
"addTask": "Add task",
"addTaskHint": "Create a new task for this event.",
"import": "Import pack",
"importHint": "Use predefined packs for your event type.",
"search": "Search tasks",
"emotionFilter": "Emotion filter",
"customEmotion": "Custom emotion",
"allEmotions": "All",
"count": "{{count}} tasks",
"library": "More tasks",
"hideLibrary": "Hide library",
"viewAllLibrary": "View all",
"libraryEmpty": "No more tasks available.",
"hideCollections": "Hide collections",
"showCollections": "Show all",
"collectionsEmpty": "No collections available.",
"bulkAdd": "Bulk add",
"manageEmotions": "Manage emotions",
"manageEmotionsHint": "Filter and keep your taxonomy tidy.",
"saveEmotion": "Save emotion",
"emotionName": "Name",
"emotionNamePlaceholder": "e.g. Joy",
"emotionColor": "Color",
"emotionRemoved": "Emotion removed",
"emotionSaved": "Emotion saved",
"emotionNone": "None",
"emotion": "Emotion",
"description": "Description",
"descriptionPlaceholder": "Optional notes",
"titleLabel": "Title",
"titlePlaceholder": "e.g. First group photo",
"bulkHint": "One task per line. These will be created and added to the event.",
"bulkPlaceholder": "e.g.\nBride & groom portrait\nGroup photo main guests"
},
"qr": {
"title": "QR Code & Print Layouts",
"heroTitle": "Entrance QR Code",
"description": "Scan to access the event guest app.",
"expiresAt": "Valid until {{date}}",
"noExpiry": "No expiry configured",
"qrAlt": "QR code",
"previewAlt": "QR layout preview",
"bottomNote": "Bottom note text",
"missing": "No QR link available",
"download": "Download",
"downloadStarted": "Download started",
"share": "Share",
"shareSuccess": "Link copied",
"shareFailed": "Could not copy link",
"step1": "Step 1: Choose format",
"layouts": "Print Layouts",
"preview": "Customize & Export",
"createLink": "Create new QR link",
"mobileLinkLabel": "Mobile link",
"created": "New QR link created",
"createFailed": "Could not create link.",
"backgroundPicker": "Select background ({{formatLabel}})",
"backgroundPickerFoldable": "Background for A5 (gradient/solid)",
"backgroundNote": "These presets are designed for A4 portrait. Mirroring is automatic for table cards.",
"foldableBackgroundNote": "For A5 table cards choose a gradient or solid colour.",
"gradients": "Gradients",
"colors": "Solid colour",
"headline": "Headline",
"subtitle": "Subtitle",
"align": "Align",
"lineHeight": "Line height",
"fontFamily": "Font family",
"fontSize": "Font size (px)",
"positionX": "X (%)",
"positionY": "Y (%)",
"width": "Width (%)",
"size": "Size (%)",
"exportPdf": "Export PDF",
"exportPng": "Export PNG",
"orientation": {
"landscape": "Landscape",
"portrait": "Portrait"
},
"formatLabel": {
"standard": "{{paper}} {{orientation}}",
"foldable": "{{paper}} {{orientation}} (double A5/mirrored)"
},
"backgroundPresets": {
"blueFloral": "Blue floral",
"goldFrame": "Gold frame",
"greenFloral": "Green floral"
},
"gradientPresets": {
"softLilac": "Soft lilac",
"pastel": "Pastel",
"midnight": "Midnight"
},
"format": {
"poster": "A4 Poster",
"posterSubtitle": "Portrait for posters",
"table": "A5 Table card (foldable)",
"tableSubtitle": "Landscape, double-mirror"
}
}
},
"settings": {
"notifications": {
"keys": {
"photo_thresholds": {
"label": "Photo thresholds",
"description": "Get notified as photo uploads approach package limits."
},
"photo_limits": {
"label": "Photo limits reached",
"description": "Alert when photo upload quota is exceeded."
},
"guest_thresholds": {
"label": "Guest thresholds",
"description": "Warn when guest count nears the limit."
},
"guest_limits": {
"label": "Guest limits reached",
"description": "Alert when guest limit is exceeded."
},
"gallery_warnings": {
"label": "Gallery warnings",
"description": "Heads-up before galleries go offline."
},
"gallery_expired": {
"label": "Gallery expired",
"description": "Notify when a gallery is no longer available."
},
"event_thresholds": {
"label": "Event thresholds",
"description": "Warn as event usage approaches limits."
},
"event_limits": {
"label": "Event limits reached",
"description": "Alert when event quotas are exceeded."
},
"package_expiring": {
"label": "Package expiring",
"description": "Reminders before your package expires."
},
"package_expired": {
"label": "Package expired",
"description": "Alert when your package has expired."
}
}
}
},
"mobileBilling": {
"packageFallback": "Package",
"remainingEvents": "{{count}} events",
"remainingEventsOf": "{{remaining}} of {{limit}} events remaining",
"remainingEventsZero": "No events remaining",
"eventsCreated": "{{used}} of {{limit}} events created",
"openEvent": "Open event",
"details": {
"limitsTitle": "Limits",
"featuresTitle": "Features"
},
"usage": {
"events": "Events",
"guests": "Guests",
"photos": "Photos",
"gallery": "Gallery days",
"value": "{{used}} / {{limit}}",
"limit": "Limit {{limit}}",
"remaining": "Remaining {{count}}",
"remainingOf": "{{remaining}} of {{limit}} remaining",
"statusWarning": "Low",
"statusDanger": "Limit reached",
"ctaWarning": "Secure more capacity",
"ctaDanger": "Upgrade package"
},
"status": {
"completed": "Completed",
"pending": "Pending",
"failed": "Failed"
},
"extra": {
"photos": "+{{count}} photos",
"guests": "+{{count}} guests",
"days": "+{{count}} days"
}
},
"packageLimits": {
"max_photos": "Photos",
"max_guests": "Guests",
"max_tasks": "Tasks",
"gallery_days": "Gallery days",
"max_events_per_year": "Events per year"
},
"mobileEvents": {
"edit": "Edit event"
},
"events.qr.layouts.badges.title": "Badges",
"events.qr.layouts.badges.subtitle": "Standard, Staff",
"events.qr.layouts.tents.title": "Table Tents",
"events.qr.layouts.tents.subtitle": "A4, Letter",
"events.qr.layouts.posters.title": "Posters",
"events.qr.layouts.posters.subtitle": "A3, 11x17",
"events.qr.layouts.programs.title": "Event Programs",
"events.qr.layouts.programs.subtitle": "Folded, Booklet",
"events.qr.paperOption.A4 (210 x 297 mm)": "A4 (210 x 297 mm)",
"events.qr.paperOption.Letter (8.5 x 11 in)": "Letter (8.5 x 11 in)",
"events.qr.paperOption.A3 (297 x 420 mm)": "A3 (297 x 420 mm)",
"mobileNotifications": {
"title": "Notifications",
"empty": "No notifications yet.",
"emptyTitle": "All caught up",
"emptyBody": "Enable push to receive alerts about uploads, guests, and expiring galleries.",
"emptyAction": "Check notification settings",
"filterByEvent": "Filter by event",
"unknownEvent": "Event"
},
"guestMessages": {
"title": "Guest messages",
"subtitle": "Send push updates to attendees",
"composeTitle": "Send a message",
"errorLoad": "Messages could not be loaded.",
"errorSend": "Message could not be sent.",
"sendSuccess": "Notification sent to guests.",
"historyTitle": "Recent messages",
"empty": "No guest messages yet.",
"emptyTitle": "Send your first guest message",
"emptyBody": "Share a quick reminder or highlight to keep guests engaged.",
"emptyAction": "Compose message",
"status": {
"active": "Active",
"draft": "Draft",
"archived": "Archived"
},
"audience": {
"all": "All guests",
"guest": "Specific guest"
},
"type": {
"broadcast": "Broadcast",
"support_tip": "Support tip",
"upload_alert": "Upload alert",
"achievement_major": "Achievement",
"photo_activity": "Photo activity",
"feedback_request": "Feedback request"
},
"history": {
"untitled": "Untitled",
"noBody": "No body provided."
},
"form": {
"title": "Title",
"titlePlaceholder": "Gallery reminder, upload nudge, ...",
"message": "Message",
"messagePlaceholder": "Write a short note for your guests.",
"audience": "Audience",
"audienceAll": "All guests",
"audienceGuest": "Specific guest (name or device)",
"guestIdentifier": "Guest name or device ID",
"guestPlaceholder": "e.g., Alex or device token",
"cta": "CTA (optional)",
"ctaLabel": "Button label",
"ctaUrl": "Button link",
"ctaHint": "Both fields are required to add a button.",
"ctaError": "CTA label and link are required together.",
"expiresIn": "Expires in (minutes)",
"expiresPlaceholder": "60",
"priority": "Priority",
"priorityValue": "Priority {{value}}",
"send": "Send notification",
"validation": "Add a title, message, and target guest when needed."
}
},
"dataExports": {
"title": "Data exports",
"request": {
"title": "Export request",
"hint": "Export tenant data or a specific event archive.",
"progress": "Export is running. This list refreshes automatically."
},
"fields": {
"scope": "Scope",
"event": "Event",
"eventPlaceholder": "Choose event",
"includeMedia": "Include raw media",
"includeMediaHint": "Bigger ZIP; choose when needed."
},
"scopes": {
"tenant": "Tenant export",
"event": "Event export"
},
"history": {
"title": "Recent exports",
"hint": "Latest 10 exports for your tenant and events.",
"empty": "No exports yet."
},
"status": {
"pending": "Pending",
"processing": "Processing",
"ready": "Ready",
"failed": "Failed"
},
"badges": {
"includesMedia": "Raw media"
},
"actions": {
"refresh": "Refresh",
"request": "Request export",
"requesting": "Requesting...",
"requested": "Export is being prepared.",
"download": "Download",
"downloaded": "Download started."
},
"errors": {
"load": "Exports could not be loaded.",
"request": "Export could not be started.",
"eventRequired": "Select an event first.",
"failed": "Export failed.",
"download": "Download failed."
}
},
"analytics": {
"title": "Analytics",
"upgradeAction": "Upgrade to Premium",
"kpiTitle": "Event snapshot",
"kpiUploads": "Uploads",
"kpiContributors": "Contributors",
"kpiLikes": "Likes",
"activityTitle": "Activity Timeline",
"timeframe": "Last {{hours}} hours",
"timeframeHint": "Older activity hidden",
"uploadsPerHour": "Uploads per hour",
"noActivity": "No uploads yet",
"emptyActionShareQr": "Share your QR code",
"contributorsTitle": "Top Contributors",
"likesCount": "{{count}} likes",
"likesCount_one": "{{count}} like",
"likesCount_other": "{{count}} likes",
"noContributors": "No contributors yet",
"emptyActionInvite": "Invite guests",
"tasksTitle": "Popular Tasks",
"noTasks": "No task activity yet",
"emptyActionOpenTasks": "Open tasks",
"lockedTitle": "Unlock Analytics",
"lockedBody": "Get deep insights into your event engagement with the Premium package."
},
"shop": {
"title": "Upgrade Package",
"subtitle": "Choose a package to unlock more features and limits.",
"recommendationTitle": "Recommended for you",
"recommendationBody": "The highlighted package includes the feature you requested.",
"compare": {
"title": "Compare plans",
"helper": "Swipe to compare packages side by side.",
"toggleCards": "Cards",
"toggleCompare": "Compare",
"headers": {
"plan": "Plan",
"price": "Price"
},
"rows": {
"photos": "Photos",
"guests": "Guests",
"days": "Gallery days"
},
"values": {
"included": "Included",
"notIncluded": "Not included",
"unlimited": "Unlimited"
}
},
"select": "Select",
"manage": "Manage Plan",
"limits": {
"photos": "{{count}} Photos",
"photos_one": "{{count}} Photo",
"photos_other": "{{count}} Photos",
"unlimitedPhotos": "Unlimited Photos",
"days": "{{count}} Days Gallery",
"days_one": "{{count}} Day Gallery",
"days_other": "{{count}} Days Gallery"
},
"features": {
"advanced_analytics": "Advanced Analytics",
"basic_uploads": "Basic uploads",
"custom_branding": "Custom Branding",
"custom_tasks": "Custom tasks",
"limited_sharing": "Limited sharing",
"live_slideshow": "Live slideshow",
"priority_support": "Priority support",
"unlimited_sharing": "Unlimited sharing",
"watermark_removal": "No Watermark"
},
"status": {
"active": "Active Plan",
"owned": "Purchased",
"remaining": "{{count}} Events left",
"remaining_one": "{{count}} Event left",
"remaining_other": "{{count}} Events left"
},
"badges": {
"recommended": "Recommended",
"active": "Active",
"upgrade": "Upgrade",
"downgrade": "Downgrade"
},
"confirmTitle": "Confirm Purchase",
"confirmSubtitle": "You are upgrading to:",
"legalTitle": "Terms & Conditions",
"legal": {
"agb": "I agree to the Terms and Conditions and Privacy Policy.",
"withdrawal": "I agree that the contract execution begins immediately and I lose my right of withdrawal."
},
"processing": "Processing...",
"payNow": "Pay Now",
"errors": {
"checkout": "Checkout failed"
},
"selectDisabled": "Not available"
}
}