added watermark settings tab on the branding page and added more package details to the billing page, added a new guest notifications page
This commit is contained in:
@@ -41,6 +41,7 @@ const resources = {
|
||||
} as const;
|
||||
|
||||
const FALLBACK_LOCALE = 'de';
|
||||
const NAMESPACES = ['common', 'dashboard', 'onboarding', 'management', 'settings', 'auth', 'mobile'] as const;
|
||||
|
||||
if (!i18n.isInitialized) {
|
||||
i18n
|
||||
@@ -51,7 +52,9 @@ if (!i18n.isInitialized) {
|
||||
fallbackLng: FALLBACK_LOCALE,
|
||||
lng: document.documentElement.lang || undefined,
|
||||
supportedLngs: ['de', 'en'],
|
||||
ns: NAMESPACES,
|
||||
defaultNS: DEFAULT_NAMESPACE,
|
||||
fallbackNS: DEFAULT_NAMESPACE,
|
||||
interpolation: {
|
||||
escapeValue: false,
|
||||
},
|
||||
|
||||
@@ -30,6 +30,14 @@
|
||||
"more": "Weitere Einträge konnten nicht geladen werden."
|
||||
},
|
||||
"sections": {
|
||||
"invoices": {
|
||||
"title": "Rechnungen & Zahlungen",
|
||||
"empty": "Keine Zahlungen gefunden."
|
||||
},
|
||||
"addOns": {
|
||||
"title": "Add-ons",
|
||||
"empty": "Keine Add-ons gebucht."
|
||||
},
|
||||
"overview": {
|
||||
"title": "Paketübersicht",
|
||||
"description": "Dein aktives Paket und die wichtigsten Kennzahlen.",
|
||||
@@ -132,6 +140,15 @@
|
||||
"loadMore": "Weitere Add-ons laden",
|
||||
"loadingMore": "Add-ons werden geladen…"
|
||||
},
|
||||
"features": {
|
||||
"branding": "Branding",
|
||||
"watermark": "Wasserzeichen",
|
||||
"maxPhotos": "Max. Fotos",
|
||||
"maxGuests": "Max. Gäste",
|
||||
"galleryDays": "Galerietage",
|
||||
"maxTasks": "Max. Aufgaben",
|
||||
"featureList": "Enthaltene Features"
|
||||
},
|
||||
"packages": {
|
||||
"title": "Paket-Historie",
|
||||
"description": "Übersicht über aktive und vergangene Pakete.",
|
||||
@@ -282,6 +299,7 @@
|
||||
"qr": "QR-Code-Layouts",
|
||||
"images": "Bildverwaltung",
|
||||
"guests": "Gästeverwaltung",
|
||||
"guestMessages": "Gästebenachrichtigungen",
|
||||
"branding": "Branding & Design",
|
||||
"photobooth": "Photobooth",
|
||||
"recap": "Recap & Archiv"
|
||||
@@ -1782,8 +1800,60 @@
|
||||
},
|
||||
"errors": {
|
||||
"missingSlug": "Kein Event-Slug angegeben.",
|
||||
"loadFailed": "Tasks konnten nicht geladen werden.",
|
||||
"saveFailed": "Task konnte nicht gespeichert werden."
|
||||
"missingType": "Event-Typ fehlt. Bitte speichere das Event erneut im Admin.",
|
||||
"loadFailed": "Event-Daten konnten nicht geladen werden.",
|
||||
"saveFailed": "Event konnte nicht gespeichert werden."
|
||||
},
|
||||
"branding": {
|
||||
"titleShort": "Branding",
|
||||
"previewTitle": "Guest-App-Vorschau",
|
||||
"previewSubtitle": "Aktuelle Farben & Schriften",
|
||||
"primary": "Primärfarbe",
|
||||
"accent": "Akzentfarbe",
|
||||
"colors": "Farben",
|
||||
"primaryColor": "Primärfarbe",
|
||||
"accentColor": "Akzentfarbe",
|
||||
"fonts": "Schriften",
|
||||
"headingFont": "Überschrift-Schrift",
|
||||
"bodyFont": "Fließtext-Schrift",
|
||||
"logo": "Logo",
|
||||
"replaceLogo": "Logo ersetzen",
|
||||
"removeLogo": "Entfernen",
|
||||
"logoHint": "Lade ein Logo hoch, um Einladungen und QR-Poster zu branden.",
|
||||
"uploadLogo": "Logo hochladen (max. 1 MB)",
|
||||
"logoTooLarge": "Logo muss unter 1 MB sein.",
|
||||
"save": "Branding speichern",
|
||||
"saving": "Speichere...",
|
||||
"saveSuccess": "Branding gespeichert.",
|
||||
"reset": "Zurücksetzen",
|
||||
"fontPicker": "Schrift auswählen",
|
||||
"noFonts": "Keine Schriftarten gefunden."
|
||||
},
|
||||
"watermark": {
|
||||
"tab": "Wasserzeichen",
|
||||
"title": "Wasserzeichen",
|
||||
"previewTitle": "Wasserzeichen-Vorschau",
|
||||
"mode": "Modus",
|
||||
"modeBase": "Standard-Wasserzeichen",
|
||||
"modeCustom": "Eigenes Wasserzeichen",
|
||||
"modeOff": "Aus",
|
||||
"upload": "Wasserzeichen hochladen",
|
||||
"uploadCta": "PNG/SVG/JPG (max. 3 MB)",
|
||||
"replace": "Wasserzeichen ersetzen",
|
||||
"uploadHint": "PNG mit Transparenz empfohlen.",
|
||||
"placement": "Position & Größe",
|
||||
"size": "Größe",
|
||||
"opacity": "Transparenz",
|
||||
"padding": "Abstand",
|
||||
"offset": "Feinjustierung X",
|
||||
"offsetX": "X-Achse",
|
||||
"offsetY": "Y-Achse",
|
||||
"lockedBranding": "Eigenes Wasserzeichen ist in diesem Paket gesperrt. Standard wird genutzt.",
|
||||
"lockedDisabled": "Wasserzeichen sind in diesem Paket deaktiviert.",
|
||||
"errors": {
|
||||
"noAsset": "Bitte zuerst ein Wasserzeichen hochladen.",
|
||||
"fileTooLarge": "Wasserzeichen muss kleiner als 3 MB sein."
|
||||
}
|
||||
},
|
||||
"tasks": {
|
||||
"disabledTitle": "Task-Modus ist für dieses Event aus",
|
||||
@@ -1932,6 +2002,98 @@
|
||||
"pref": {}
|
||||
},
|
||||
"events": {
|
||||
"detail": {
|
||||
"kpi": {
|
||||
"tasks": "Aktive Aufgaben",
|
||||
"guests": "Registrierte Gäste",
|
||||
"photos": "Hochgeladene Bilder"
|
||||
},
|
||||
"pickEvent": "Event auswählen",
|
||||
"active": "Aktiv",
|
||||
"managementTitle": "Event-Verwaltung",
|
||||
"dateTbd": "Datum folgt",
|
||||
"locationPlaceholder": "Ort"
|
||||
},
|
||||
"quick": {
|
||||
"tasks": "Aufgaben & Checklisten",
|
||||
"qr": "QR-Code-Layouts",
|
||||
"images": "Bildverwaltung",
|
||||
"guests": "Gästeverwaltung",
|
||||
"guestMessages": "Gästebenachrichtigungen",
|
||||
"branding": "Branding & Design",
|
||||
"photobooth": "Photobooth",
|
||||
"recap": "Recap & Archiv"
|
||||
},
|
||||
"status": {
|
||||
"published": "Live",
|
||||
"draft": "Entwurf",
|
||||
"archived": "Archiviert"
|
||||
},
|
||||
"errors": {
|
||||
"missingSlug": "Kein Event-Slug angegeben.",
|
||||
"missingType": "Event-Typ fehlt. Bitte speichere das Event erneut im Admin.",
|
||||
"loadFailed": "Event-Daten konnten nicht geladen werden.",
|
||||
"saveFailed": "Event konnte nicht gespeichert werden.",
|
||||
"notFoundTitle": "Event nicht gefunden",
|
||||
"notFoundBody": "Ohne gültige Kennung können wir keine Daten laden. Kehre zur Eventliste zurück und wähle dort ein Event aus.",
|
||||
"toggleFailed": "Status konnte nicht angepasst werden.",
|
||||
"checkoutMissing": "Checkout konnte nicht gestartet werden.",
|
||||
"checkoutFailed": "Add-on Checkout fehlgeschlagen."
|
||||
},
|
||||
"placeholders": {
|
||||
"untitled": "Unbenanntes Event"
|
||||
},
|
||||
"branding": {
|
||||
"titleShort": "Branding",
|
||||
"previewTitle": "Guest-App-Vorschau",
|
||||
"previewSubtitle": "Aktuelle Farben & Schriften",
|
||||
"primary": "Primärfarbe",
|
||||
"accent": "Akzentfarbe",
|
||||
"colors": "Farben",
|
||||
"primaryColor": "Primärfarbe",
|
||||
"accentColor": "Akzentfarbe",
|
||||
"fonts": "Schriften",
|
||||
"headingFont": "Überschrift-Schrift",
|
||||
"bodyFont": "Fließtext-Schrift",
|
||||
"logo": "Logo",
|
||||
"replaceLogo": "Logo ersetzen",
|
||||
"removeLogo": "Entfernen",
|
||||
"logoHint": "Lade ein Logo hoch, um Einladungen und QR-Poster zu branden.",
|
||||
"uploadLogo": "Logo hochladen (max. 1 MB)",
|
||||
"logoTooLarge": "Logo muss unter 1 MB sein.",
|
||||
"save": "Branding speichern",
|
||||
"saving": "Speichere...",
|
||||
"saveSuccess": "Branding gespeichert.",
|
||||
"reset": "Zurücksetzen",
|
||||
"fontPicker": "Schrift auswählen",
|
||||
"noFonts": "Keine Schriftarten gefunden."
|
||||
},
|
||||
"watermark": {
|
||||
"tab": "Wasserzeichen",
|
||||
"title": "Wasserzeichen",
|
||||
"previewTitle": "Wasserzeichen-Vorschau",
|
||||
"mode": "Modus",
|
||||
"modeBase": "Standard-Wasserzeichen",
|
||||
"modeCustom": "Eigenes Wasserzeichen",
|
||||
"modeOff": "Aus",
|
||||
"upload": "Wasserzeichen hochladen",
|
||||
"uploadCta": "PNG/SVG/JPG (max. 3 MB)",
|
||||
"replace": "Wasserzeichen ersetzen",
|
||||
"uploadHint": "PNG mit Transparenz empfohlen.",
|
||||
"placement": "Position & Größe",
|
||||
"size": "Größe",
|
||||
"opacity": "Transparenz",
|
||||
"padding": "Abstand",
|
||||
"offset": "Feinjustierung X",
|
||||
"offsetX": "X-Achse",
|
||||
"offsetY": "Y-Achse",
|
||||
"lockedBranding": "Eigenes Wasserzeichen ist in diesem Paket gesperrt. Standard wird genutzt.",
|
||||
"lockedDisabled": "Wasserzeichen sind in diesem Paket deaktiviert.",
|
||||
"errors": {
|
||||
"noAsset": "Bitte zuerst ein Wasserzeichen hochladen.",
|
||||
"fileTooLarge": "Wasserzeichen muss kleiner als 3 MB sein."
|
||||
}
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR-Code & Druck-Layouts",
|
||||
"heroTitle": "Einlass-QR-Code",
|
||||
@@ -2043,5 +2205,57 @@
|
||||
"empty": "Keine Benachrichtigungen vorhanden.",
|
||||
"filterByEvent": "Nach Event filtern",
|
||||
"unknownEvent": "Event"
|
||||
},
|
||||
"guestMessages": {
|
||||
"title": "Gästebenachrichtigungen",
|
||||
"subtitle": "Schicke Push-Hinweise an Teilnehmende",
|
||||
"composeTitle": "Nachricht senden",
|
||||
"errorLoad": "Nachrichten konnten nicht geladen werden.",
|
||||
"errorSend": "Nachricht konnte nicht gesendet werden.",
|
||||
"sendSuccess": "Benachrichtigung an Gäste gesendet.",
|
||||
"historyTitle": "Neueste Nachrichten",
|
||||
"empty": "Noch keine Gästebenachrichtigungen.",
|
||||
"status": {
|
||||
"active": "Aktiv",
|
||||
"draft": "Entwurf",
|
||||
"archived": "Archiviert"
|
||||
},
|
||||
"audience": {
|
||||
"all": "Alle Gäste",
|
||||
"guest": "Einzelner Gast"
|
||||
},
|
||||
"type": {
|
||||
"broadcast": "Broadcast",
|
||||
"support_tip": "Support-Hinweis",
|
||||
"upload_alert": "Upload-Status",
|
||||
"achievement_major": "Achievement",
|
||||
"photo_activity": "Foto-Aktivität",
|
||||
"feedback_request": "Feedback-Anfrage"
|
||||
},
|
||||
"history": {
|
||||
"untitled": "Ohne Titel",
|
||||
"noBody": "Kein Nachrichtentext."
|
||||
},
|
||||
"form": {
|
||||
"title": "Titel",
|
||||
"titlePlaceholder": "Galerie-Erinnerung, Upload-Nudge ...",
|
||||
"message": "Nachricht",
|
||||
"messagePlaceholder": "Schreibe eine kurze Notiz an deine Gäste.",
|
||||
"audience": "Zielgruppe",
|
||||
"audienceAll": "Alle Gäste",
|
||||
"audienceGuest": "Einzelner Gast (Name oder Gerät)",
|
||||
"guestIdentifier": "Gastname oder Geräte-ID",
|
||||
"guestPlaceholder": "z. B. Alex oder Gerätetoken",
|
||||
"cta": "CTA (optional)",
|
||||
"ctaLabel": "Button-Label",
|
||||
"ctaUrl": "Button-Link",
|
||||
"ctaHint": "Beide Felder werden benötigt, um einen Button zu senden.",
|
||||
"ctaError": "CTA-Label und Link müssen zusammen ausgefüllt werden.",
|
||||
"expiresIn": "Läuft ab in (Minuten)",
|
||||
"priority": "Priorität",
|
||||
"priorityValue": "Priorität {{value}}",
|
||||
"send": "Benachrichtigung senden",
|
||||
"validation": "Füge Titel, Nachricht und ggf. einen Ziel-Gast hinzu."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,14 @@
|
||||
"more": "Unable to load more entries."
|
||||
},
|
||||
"sections": {
|
||||
"invoices": {
|
||||
"title": "Invoices & payments",
|
||||
"empty": "No payments found."
|
||||
},
|
||||
"addOns": {
|
||||
"title": "Add-ons",
|
||||
"empty": "No add-ons booked."
|
||||
},
|
||||
"overview": {
|
||||
"title": "Package overview",
|
||||
"description": "Your active package and the most important metrics.",
|
||||
@@ -132,6 +140,15 @@
|
||||
"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.",
|
||||
@@ -277,6 +294,7 @@
|
||||
"qr": "QR code layouts",
|
||||
"images": "Image management",
|
||||
"guests": "Guest management",
|
||||
"guestMessages": "Guest messages",
|
||||
"branding": "Branding & theme",
|
||||
"photobooth": "Photobooth",
|
||||
"recap": "Recap & archive"
|
||||
@@ -1802,8 +1820,60 @@
|
||||
},
|
||||
"errors": {
|
||||
"missingSlug": "No event slug provided.",
|
||||
"loadFailed": "Tasks could not be loaded.",
|
||||
"saveFailed": "Task could not be saved."
|
||||
"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",
|
||||
"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."
|
||||
}
|
||||
},
|
||||
"tasks": {
|
||||
"disabledTitle": "Task mode is off for this event",
|
||||
@@ -1952,6 +2022,98 @@
|
||||
"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."
|
||||
},
|
||||
"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."
|
||||
}
|
||||
},
|
||||
"qr": {
|
||||
"title": "QR Code & Print Layouts",
|
||||
"heroTitle": "Entrance QR Code",
|
||||
@@ -2063,5 +2225,57 @@
|
||||
"empty": "No notifications yet.",
|
||||
"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.",
|
||||
"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)",
|
||||
"priority": "Priority",
|
||||
"priorityValue": "Priority {{value}}",
|
||||
"send": "Send notification",
|
||||
"validation": "Add a title, message, and target guest when needed."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user