Initial commit - Project start (July 17, 2025)
Mirror to GitHub / mirror (push) Successful in 26s
Test and Lint / backend-test (push) Successful in 1m11s
continuous-integration/drone/push Build is passing
Test and Lint / frontend-test (push) Successful in 2m28s
Version and Release / version-bump (push) Successful in 32s
Version and Release / trigger-drone (push) Has been skipped

Original: feat: enhance security logging and ensure rate limit blocks are properly tracked

- Add comprehensive logging for rate limit blocks with full request details
  - IP address (with proper proxy detection), user agent, headers, timestamps
  - Rate limit info (current count, limit, remaining, reset time)
  - Separate tracking for auth vs general endpoints

- Enhance authentication failure logging
  - JWT validation failures with detailed error info
  - Admin auth attempts without token
  - Failed token validation with user context
  - All events include IP, path, method, user agent

- Improve Winston logger configuration for production
  - Add automatic log rotation (10MB errors, 50MB combined)
  - Create separate security.log for auth/rate limit events
  - Ensure logs directory exists automatically
  - Add structured JSON format for log aggregation
  - Support container logging with LOG_TO_CONSOLE env var

- Create comprehensive documentation
  - Security logging guide with examples
  - Monitoring recommendations
  - Configuration reference

- Add test script to verify logging functionality

All rate limit settings remain configurable via admin panel:
- Window duration, max requests, auth limits
- Skip authenticated requests option
- Public endpoints only option

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <[email protected]>
This commit is contained in:
2025-07-24 16:57:07 +02:00
co-authored by Claude
commit 1773ed5f95
354 changed files with 61508 additions and 0 deletions
+36
View File
@@ -0,0 +1,36 @@
import i18n from 'i18next';
import { initReactI18next } from 'react-i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
import HttpBackend from 'i18next-http-backend';
import enTranslations from './locales/en.json';
import deTranslations from './locales/de.json';
i18n
.use(HttpBackend)
.use(LanguageDetector)
.use(initReactI18next)
.init({
fallbackLng: 'en',
debug: false,
resources: {
en: {
translation: enTranslations,
},
de: {
translation: deTranslations,
},
},
interpolation: {
escapeValue: false,
},
detection: {
order: ['localStorage', 'cookie', 'navigator', 'htmlTag'],
caches: ['localStorage', 'cookie'],
},
});
export default i18n;
+900
View File
@@ -0,0 +1,900 @@
{
"common": {
"loading": "Wird geladen...",
"error": "Fehler",
"save": "Speichern",
"cancel": "Abbrechen",
"delete": "Löschen",
"edit": "Bearbeiten",
"add": "Hinzufügen",
"search": "Suchen",
"filter": "Filtern",
"sortBy": "Sortieren nach",
"yes": "Ja",
"no": "Nein",
"back": "Zurück",
"next": "Weiter",
"previous": "Zurück",
"close": "Schließen",
"logout": "Abmelden",
"menu": "Menü",
"change": "Ändern",
"remove": "Entfernen",
"download": "Herunterladen",
"downloadAll": "Alle herunterladen",
"uploading": "Wird hochgeladen...",
"uploaded": "Hochgeladen",
"photo": "Foto",
"photos": "Fotos",
"restore": "Wiederherstellen",
"actions": "Aktionen",
"refresh": "Aktualisieren",
"preview": "Vorschau",
"processing": "Wird verarbeitet...",
"upload": "Hochladen",
"days": "Tage",
"customize": "Anpassen",
"hide": "Ausblenden",
"unknown": "Unbekannt"
},
"upload": {
"photoCategory": "Fotokategorie",
"noCategory": "Keine Kategorie",
"eventSpecific": "(Veranstaltungsspezifisch)",
"clickToUpload": "Klicken zum Hochladen oder per Drag & Drop",
"fileRequirements": "JPEG, PNG oder WebP (max. 50MB pro Datei)",
"selectedFiles": "Ausgewählte Dateien",
"uploading": "Wird hochgeladen...",
"uploadComplete": "Upload abgeschlossen!",
"uploadFailed": "Upload fehlgeschlagen",
"someFilesFailed": "Einige Dateien konnten nicht hochgeladen werden",
"uploadPhotos": "Fotos hochladen",
"maxFilesReached": "Maximal 500 Dateien erlaubt",
"someFilesSkipped": "Einige Dateien wurden übersprungen (500 Dateien Limit)",
"tooManyFiles": "Maximal 500 Dateien können gleichzeitig hochgeladen werden"
},
"navigation": {
"dashboard": "Dashboard",
"events": "Veranstaltungen",
"archives": "Archive",
"settings": "Einstellungen",
"branding": "Branding",
"analytics": "Analytik",
"emailSettings": "E-Mail-Einstellungen",
"cmsPages": "CMS-Seiten"
},
"archives": {
"title": "Archive",
"subtitle": "Archivierte Fotogalerien verwalten",
"loadingArchives": "Archive werden geladen...",
"totalArchives": "Gesamtarchive",
"storageUsed": "Genutzter Speicher",
"totalPhotos": "Gesamtfotos",
"avgArchiveSize": "Durchschn. Archivgröße",
"searchPlaceholder": "Archive durchsuchen...",
"allTypes": "Alle Typen",
"wedding": "Hochzeit",
"birthday": "Geburtstag",
"corporate": "Geschäftlich",
"other": "Andere",
"sortByDate": "Nach Datum sortieren",
"sortByName": "Nach Name sortieren",
"sortBySize": "Nach Größe sortieren",
"tableHeaders": {
"event": "Veranstaltung",
"type": "Typ",
"archivedDate": "Archivierungsdatum",
"size": "Größe",
"photos": "Fotos",
"actions": "Aktionen"
},
"noArchivesFound": "Keine Archive gefunden",
"eventDateNA": "Veranstaltungsdatum: N/A",
"processing": "Wird verarbeitet...",
"download": "Herunterladen",
"restore": "Wiederherstellen",
"delete": "Löschen",
"showing": "Zeige {{from}} bis {{to}} von {{total}} Archiven",
"page": "Seite {{current}} von {{total}}",
"storageManagement": "Speicherverwaltung",
"storageInfo": "Archive werden dauerhaft gespeichert, es sei denn, sie werden manuell gelöscht. Erwägen Sie die Implementierung einer Aufbewahrungsrichtlinie zur Verwaltung der Speicherkosten.",
"confirmRestore": "Sind Sie sicher, dass Sie dieses Archiv wiederherstellen möchten? Die Veranstaltung wird wieder aktiv.",
"confirmDelete": "Sind Sie sicher, dass Sie dieses Archiv dauerhaft löschen möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"restoreSuccess": "Archiv erfolgreich wiederhergestellt",
"deleteSuccess": "Archiv dauerhaft gelöscht"
},
"auth": {
"login": "Anmelden",
"password": "Passwort",
"enterPassword": "Galerie-Passwort eingeben",
"passwordPlaceholder": "Geben Sie das Galerie-Passwort ein",
"invalidPassword": "Ungültiges Passwort",
"wrongPassword": "Falsches Passwort. Bitte überprüfen Sie Ihr Passwort und versuchen Sie es erneut.",
"tooManyAttempts": "Zu viele fehlgeschlagene Anmeldeversuche. Bitte versuchen Sie es später erneut.",
"sessionExpired": "Sitzung abgelaufen",
"pleaseEnterPassword": "Bitte geben Sie ein Passwort ein",
"passwordHint": "Das Passwort wurde vom Veranstalter bereitgestellt. Kontaktieren Sie ihn, wenn Sie es nicht haben."
},
"gallery": {
"title": "Fotogalerie",
"welcomeMessage": "Willkommensnachricht",
"expiresOn": "Läuft ab am",
"expires": "Läuft ab",
"expired": "Abgelaufen",
"daysRemaining": "{{days}} Tage verbleibend",
"dayRemaining": "1 Tag verbleibend",
"hoursRemaining": "{{hours}} Stunden verbleibend",
"expiredMessage": "Diese Galerie ist am {{date}} abgelaufen",
"contactOrganizer": "Bitte kontaktieren Sie den Veranstalter, wenn Sie Zugriff auf diese Fotos benötigen",
"searchPhotos": "Fotos nach Dateiname suchen...",
"sortByDate": "Nach Datum sortieren",
"sortByName": "Nach Name sortieren",
"sortBySize": "Nach Größe sortieren",
"allPhotos": "Alle Fotos",
"downloadSelected": "Ausgewählte herunterladen",
"shareGallery": "Galerie teilen",
"needHelp": "Hilfe benötigt? Kontaktieren Sie uns unter",
"noPhotosFound": "Keine Fotos gefunden",
"failedToLoad": "Fotos konnten nicht geladen werden",
"tryAgain": "Erneut versuchen",
"loading": "Galerie wird geladen...",
"expiredOn": "Diese Galerie ist am {{date}} abgelaufen.",
"contactOrganizer": "Bitte kontaktieren Sie den Veranstalter, wenn Sie Zugriff auf diese Fotos benötigen.",
"expiresIn": "Galerie läuft in {{count}} Tag ab",
"expiresIn_plural": "Galerie läuft in {{count}} Tagen ab",
"downloadBefore": "Laden Sie Ihre Fotos herunter, bevor sie nicht mehr verfügbar sind.",
"viewGallery": "Galerie anzeigen",
"downloadAll": "Alle herunterladen",
"downloading": "Lade {{count}} Foto herunter...",
"downloading_plural": "Lade {{count}} Fotos herunter...",
"downloadedPhotos": "{{count}} Foto heruntergeladen!",
"downloadedPhotos_plural": "{{count}} Fotos heruntergeladen!",
"downloadError": "Einige Fotos konnten nicht heruntergeladen werden",
"selectPhotos": "Fotos auswählen",
"cancelSelection": "Auswahl abbrechen",
"photosSelected": "{{count}} ausgewählt",
"selectAll": "Alle auswählen",
"deselectAll": "Auswahl aufheben",
"downloadSelected": "{{count}} ausgewählte herunterladen",
"remaining": "verbleibend",
"selectPhotosHint": "Tipp: Verwenden Sie Strg+Klick (Cmd+Klick auf Mac), um schnell mehrere Fotos auszuwählen",
"filters": "Filter",
"openFilters": "Filter öffnen",
"toggleSidebar": "Seitenleiste umschalten",
"toggleMenu": "Menü umschalten",
"allCategories": "Alle Kategorien",
"categories": "Kategorien",
"download": "Herunterladen",
"searchPlaceholder": "Fotos suchen...",
"sortBy": "Sortieren nach"
},
"categories": {
"title": "Fotokategorien",
"global": "Globale Kategorien",
"eventSpecific": "Veranstaltungsspezifische Kategorien",
"eventSpecificCategories": "Veranstaltungsspezifische Kategorien",
"organizationInfo": "Organisieren Sie Ihre Fotos in Kategorien. Kategorien helfen Gästen, bestimmte Fototypen zu navigieren und zu finden.",
"noEventSpecificCategories": "Keine veranstaltungsspezifischen Kategorien. Globale Kategorien sind standardmäßig verfügbar.",
"globalCategoriesAlwaysAvailable": "Globale Kategorien (immer verfügbar):",
"deleteCategoryTitle": "Kategorie löschen",
"categoryCreatedSuccess": "Kategorie erfolgreich erstellt",
"categoryDeletedSuccess": "Kategorie erfolgreich gelöscht",
"failedToCreateCategory": "Fehler beim Erstellen der Kategorie",
"failedToDeleteCategory": "Fehler beim Löschen der Kategorie",
"addCategory": "Kategorie hinzufügen",
"categoryName": "Kategoriename",
"noCategory": "Keine Kategorie",
"noCategoriesYet": "Noch keine Kategorien. Erstellen Sie Ihre erste Kategorie, um Fotos zu organisieren.",
"deleteConfirm": "Sind Sie sicher, dass Sie \"{{name}}\" löschen möchten?",
"cannotDelete": "Kategorie mit Fotos kann nicht gelöscht werden. Bitte weisen Sie die Fotos zuerst neu zu."
},
"events": {
"noStatisticsAvailableYet": "Noch keine Statistiken verfügbar",
"totalPhotos": "Gesamtfotos",
"totalViews": "Gesamtaufrufe",
"totalDownloads": "Gesamte Downloads",
"uniqueVisitors": "Eindeutige Besucher",
"addPlus": "Hinzufügen+",
"galleryTheme": "Galerie-Design",
"customizeTheme": "Design anpassen",
"noThemeSet": "Kein Design konfiguriert",
"customizingTheme": "Galerie-Design anpassen",
"customizingThemeFor": "Design für {{event}} anpassen",
"title": "Veranstaltungen",
"create": "Veranstaltung erstellen",
"createEvent": "Veranstaltung erstellen",
"eventDetails": "Veranstaltungsdetails",
"eventName": "Veranstaltungsname",
"eventType": "Veranstaltungstyp",
"eventDate": "Veranstaltungsdatum",
"hostEmail": "Gastgeber-E-Mail",
"hostName": "Name des Gastgebers",
"hostNamePlaceholder": "Max Mustermann",
"adminEmail": "Admin-E-Mail",
"expirationDate": "Ablaufdatum",
"active": "Aktiv",
"archived": "Archiviert",
"photoCount": "{{count}} Fotos",
"totalSize": "Gesamtgröße",
"shareLink": "Freigabelink",
"copyLink": "Link kopieren",
"linkCopied": "Link kopiert!",
"viewGallery": "Galerie ansehen",
"uploadPhotos": "Fotos hochladen",
"archiveEvent": "Veranstaltung archivieren",
"archiveConfirm": "Sind Sie sicher, dass Sie diese Veranstaltung archivieren möchten? Diese Aktion kann nicht rückgängig gemacht werden.",
"extendExpiration": "Um {{days}} Tage verlängern",
"backToEvents": "Zurück zu Veranstaltungen",
"loadingEventDetails": "Veranstaltungsdetails werden geladen...",
"saveChanges": "Änderungen speichern",
"eventExpired": "Diese Veranstaltung ist abgelaufen",
"eventExpiresIn": "Diese Veranstaltung läuft in {{days}} Tagen ab",
"guestsNoAccess": "Gäste können nicht mehr auf die Galerie zugreifen. Erwägen Sie, diese Veranstaltung zu archivieren.",
"warningEmailsSent": "Warn-E-Mails wurden an den Gastgeber gesendet.",
"warningEmailsHaveBeenSent": "Warn-E-Mails wurden an den Gastgeber gesendet.",
"extendSevenDays": "Um 7 Tage verlängern",
"overview": "Übersicht",
"photos": "Fotos",
"categories": "Kategorien",
"eventInformation": "Veranstaltungsinformationen",
"welcomeMessage": "Willkommensnachricht",
"noWelcomeMessage": "Keine Willkommensnachricht festgelegt",
"noWelcomeMessageSet": "Keine Willkommensnachricht festgelegt",
"created": "Erstellt",
"expires": "Läuft ab",
"shareWithGuests": "Teilen Sie diesen Link mit Gästen. Sie benötigen das Passwort, um auf die Galerie zuzugreifen.",
"resetGalleryPassword": "Galerie-Passwort zurücksetzen",
"resendCreationEmail": "Erstellungs-E-Mail erneut senden",
"creationEmailResent": "Die Erstellungs-E-Mail wurde zur Warteschlange hinzugefügt",
"failedToResendEmail": "Fehler beim erneuten Senden der Erstellungs-E-Mail",
"photoStatistics": "Fotostatistiken",
"managePhotos": "Fotos verwalten",
"actions": "Aktionen",
"archivingInfo": "Beim Archivieren wird eine ZIP-Datei aller Fotos erstellt und die Galerie aus dem öffentlichen Zugriff entfernt.",
"statistics": "Statistiken",
"views": "Aufrufe",
"downloads": "Downloads",
"uniqueVisitors": "Eindeutige Besucher",
"noStatistics": "Noch keine Statistiken verfügbar",
"archiveStatus": "Archivstatus",
"archivedOn": "Archiviert am",
"downloadArchive": "Archiv herunterladen",
"loadingPhotos": "Fotos werden geladen...",
"photoCategories": "Fotokategorien",
"organizeCategoriesInfo": "Organisieren Sie Ihre Fotos in Kategorien. Kategorien helfen Gästen, bestimmte Fototypen zu navigieren und zu finden.",
"categoriesTip": "Tipp: Kategorien sind spezifisch für jede Veranstaltung. Sie können auch globale Kategorien in den Einstellungen erstellen.",
"contactInformation": "Kontaktinformationen",
"hostEmailHelp": "Erhält Benachrichtigungen zur Galerie-Erstellung und zum Ablauf",
"adminEmailHelp": "Erhält Systembenachrichtigungen und Archivbestätigungen",
"securityAccess": "Sicherheit & Zugriff",
"galleryPassword": "Galerie-Passwort",
"passwordHelperText": "Sie können Datumsangaben wie \"04.07.2025\" oder beliebigen Text mit mindestens 6 Zeichen verwenden",
"passwordPlaceholder": "Sicheres Passwort eingeben",
"confirmPassword": "Passwort bestätigen",
"showPasswords": "Passwörter anzeigen",
"gallerySettings": "Galerie-Einstellungen",
"colorTheme": "Farbthema",
"galleryExpiration": "Galerie-Ablauf",
"galleryExpiresIn": "Galerie läuft ab in",
"daysAfterEvent": "Tage nach dem Veranstaltungsdatum",
"expiresOn": "Läuft ab am",
"themeAndStyle": "Design & Stil",
"galleryWillExpireOn": "Galerie läuft ab am {{date}}",
"expirationWarning": "Gäste erhalten 7 Tage vor Ablauf eine Warn-E-Mail.",
"userUploads": "Benutzer-Upload-Einstellungen",
"allowUserUploads": "Gästen erlauben, Fotos hochzuladen",
"allowUserUploadsHelp": "Ermöglichen Sie Gästen, ihre eigenen Fotos in diese Galerie hochzuladen",
"allowUserUploadsDescription": "Ermöglichen Sie Gästen, ihre eigenen Fotos in diese Galerie hochzuladen",
"uploadCategory": "Upload-Kategorie",
"selectCategory": "Wählen Sie eine Kategorie für Benutzer-Uploads",
"uploadCategoryHelp": "Alle von Benutzern hochgeladenen Fotos werden dieser Kategorie hinzugefügt",
"userUploadWarning": "Benutzer-Uploads werden moderiert und können jederzeit von Administratoren entfernt werden.",
"heroPhoto": "Hero-Foto",
"heroPhotoHelp": "Wählen Sie ein hervorgehobenes Foto für das Hero-Galerie-Layout",
"selectHeroPhoto": "Hero-Foto auswählen",
"noHeroPhotoSelected": "Kein Hero-Foto ausgewählt",
"heroPhotoSelected": "Hero-Foto ausgewählt",
"noPhotosAvailable": "Keine Fotos verfügbar",
"processingRequest": "Ihre Anfrage wird verarbeitet...",
"eventTypeWedding": "Hochzeit",
"eventTypeBirthday": "Geburtstag",
"eventTypeCorporate": "Geschäftlich",
"eventTypeOther": "Andere",
"days30": "30 Tage",
"days60": "60 Tage",
"days90": "90 Tage",
"days365": "1 Jahr",
"createNewEvent": "Neue Veranstaltung erstellen",
"setupNewGallery": "Richten Sie eine neue Fotogalerie für Ihre Veranstaltung ein",
"createNewEventSubtitle": "Richten Sie eine neue Fotogalerie für Ihre Veranstaltung ein",
"eventNamePlaceholder": "z.B. Max & Maria's Hochzeit",
"welcomeMessageOptional": "Willkommensnachricht (Optional)",
"welcomeMessagePlaceholder": "Willkommen zu unserem besonderen Tag! Laden Sie diese Erinnerungen gerne herunter und teilen Sie sie...",
"hostEmailPlaceholder": "[email protected]",
"adminEmailPlaceholder": "[email protected]",
"securityAndAccess": "Sicherheit & Zugriff",
"accessAndSecurity": "Zugriff & Sicherheit",
"enterPassword": "Passwort eingeben",
"confirmPasswordPlaceholder": "Passwort bestätigen",
"galleryExpiresOn": "Galerie läuft ab am {{date}}",
"guestsWillReceiveWarning": "Gäste erhalten 7 Tage vor Ablauf eine Warn-E-Mail.",
"types": {
"wedding": "Hochzeit",
"birthday": "Geburtstag",
"corporate": "Geschäftlich",
"other": "Andere"
},
"themes": {
"default": "Standard",
"oceanBlue": "Ozeanblau",
"royalPurple": "Königliches Lila",
"roseGold": "Roségold",
"sunsetAmber": "Sonnenuntergang Bernstein"
},
"adminNotificationEmail": "Admin-Benachrichtigungs-E-Mail",
"inactive": "Inaktiv",
"expired": "Abgelaufen",
"daysLeft": "{{count}} Tag verbleibend",
"daysLeft_plural": "{{count}} Tage verbleibend",
"subtitle": "Verwalten Sie Ihre Fotogalerien und Veranstaltungen",
"loadingEvents": "Veranstaltungen werden geladen...",
"failedToLoadEvents": "Veranstaltungen konnten nicht geladen werden",
"tryAgain": "Erneut versuchen",
"eventExpiredMessage": "Diese Veranstaltung ist abgelaufen",
"guestsCannotAccessGallery": "Gäste können nicht mehr auf die Galerie zugreifen. Erwägen Sie, diese Veranstaltung zu archivieren.",
"bulkArchiveSuccess": "{{count}} Veranstaltungen erfolgreich archiviert",
"bulkArchivePartial": "{{success}} Veranstaltungen archiviert, {{failed}} fehlgeschlagen",
"searchEventsPlaceholder": "Veranstaltungen suchen...",
"all": "Alle",
"activeFilter": "Aktiv",
"archivedFilter": "Archiviert",
"sortByName": "Nach Name",
"sortByDate": "Nach Datum",
"sortByExpiration": "Nach Ablauf",
"event": "Veranstaltung",
"type": "Typ",
"date": "Datum",
"status": "Status",
"photosCount": "Fotos",
"moreActions": "Weitere Aktionen",
"copyLinkTooltip": "Link kopieren",
"viewGalleryTooltip": "Galerie anzeigen",
"uploadPhotosTooltip": "Fotos hochladen",
"editTooltip": "Bearbeiten",
"archiveTooltip": "Archivieren",
"noEvents": "Keine Veranstaltungen gefunden",
"noEventsDescription": "Erstellen Sie Ihre erste Veranstaltung, um zu beginnen.",
"eventsSelected": "{{count}} Veranstaltung ausgewählt",
"eventsSelected_plural": "{{count}} Veranstaltungen ausgewählt",
"bulkArchive": "Archivieren",
"confirmBulkArchive": "Sind Sie sicher, dass Sie {{count}} Veranstaltung(en) archivieren möchten?",
"confirmBulkArchiveDescription": "Diese Aktion kann nicht rückgängig gemacht werden. Archivierte Veranstaltungen sind nicht mehr öffentlich zugänglich.",
"stats": {
"totalEvents": "Gesamtveranstaltungen",
"activeEvents": "Aktive Veranstaltungen",
"totalPhotos": "Gesamtfotos",
"expiringEvents": "Bald ablaufend"
}
},
"settings": {
"title": "Systemeinstellungen",
"subtitle": "Systemweite Einstellungen und Präferenzen konfigurieren",
"loadingSettings": "Einstellungen werden geladen...",
"general": {
"title": "Allgemein",
"siteConfiguration": "Website-Konfiguration",
"siteUrl": "Website-URL",
"siteUrlHelp": "Wird für die Generierung von Galerielinks in E-Mails verwendet",
"defaultExpiration": "Standardablauf (Tage)",
"defaultExpirationHelp": "Wie lange Galerien standardmäßig aktiv bleiben",
"maxFileSize": "Max. Dateigröße (MB)",
"maxFileSizeHelp": "Maximale Größe pro hochgeladenem Foto",
"allowedFileTypes": "Erlaubte Dateitypen",
"allowedFileTypesHelp": "Kommagetrennte Liste von Dateierweiterungen",
"featureToggles": "Funktionsschalter",
"enableWatermark": "Wasserzeichen auf Fotos aktivieren",
"enableAnalytics": "Analytics-Tracking aktivieren",
"enableRegistration": "Selbstregistrierung für Admins erlauben",
"maintenanceMode": "Wartungsmodus aktivieren",
"language": "Sprache",
"defaultLanguage": "Standardsprache",
"defaultLanguageHelp": "Sprache, die Gästen vor der Anmeldung angezeigt wird",
"defaultWelcomeMessage": "Standard-Begrüßungsnachricht",
"welcomeMessage": "Begrüßungsnachricht",
"welcomeMessagePlaceholder": "Geben Sie eine Standard-Begrüßungsnachricht ein, die in E-Mails zur Galerieerstellung enthalten sein wird",
"welcomeMessageHelp": "Diese Nachricht wird in allen E-Mails zur Galerieerstellung enthalten sein, sofern sie beim Erstellen einer Veranstaltung nicht überschrieben wird",
"saveSettings": "Allgemeine Einstellungen speichern",
"saveGeneralSettings": "Allgemeine Einstellungen speichern",
"dateTimeFormat": "Datums- & Zeitformat",
"dateFormat": "Datumsformat",
"dateFormatHelp": "Wie Daten in E-Mails und in der gesamten Anwendung angezeigt werden"
},
"storage": {
"title": "Speicher",
"overview": "Speicherübersicht",
"totalUsed": "Gesamt verwendet",
"archiveStorage": "Archivspeicher",
"storageLimit": "Speicherlimit",
"storageUsage": "Speichernutzung",
"storageByEvent": "Speicher nach Veranstaltung",
"storageManagement": "Speicherverwaltung",
"storageManagementHelp": "Erwägen Sie, alte Veranstaltungen zu archivieren oder zu löschen, um Speicherplatz freizugeben. Archivierte Veranstaltungen sind komprimiert und benötigen weniger Speicher als aktive Galerien.",
"noEventsUsingStorage": "Keine Veranstaltungen verwenden Speicher",
"unlimited": "Unbegrenzt"
},
"security": {
"title": "Sicherheit",
"passwordSettings": "Passworteinstellungen",
"requirePassword": "Passwort für alle Galerien erforderlich",
"minPasswordLength": "Minimale Passwortlänge",
"minPasswordLengthHelp": "Mindestanzahl von Zeichen für Galerie-Passwörter",
"sessionAuth": "Sitzung & Authentifizierung",
"sessionTimeout": "Sitzungs-Timeout (Minuten)",
"sessionTimeoutHelp": "Admin-Sitzungs-Timeout in Minuten",
"maxLoginAttempts": "Max. Anmeldeversuche",
"maxLoginAttemptsHelp": "Maximale fehlgeschlagene Anmeldeversuche vor Sperrung",
"enable2FA": "Zwei-Faktor-Authentifizierung für Admins aktivieren",
"recaptchaSettings": "reCAPTCHA-Einstellungen",
"enableRecaptcha": "reCAPTCHA für Anmeldeformulare aktivieren",
"siteKey": "Site-Schlüssel",
"siteKeyHelp": "Ihr reCAPTCHA v2 Site-Schlüssel (öffentlich)",
"secretKey": "Geheimer Schlüssel",
"secretKeyHelp": "Ihr reCAPTCHA v2 Geheimschlüssel (privat halten)",
"recaptchaHelp": "Holen Sie sich Ihre reCAPTCHA-Schlüssel von",
"saveSettings": "Sicherheitseinstellungen speichern",
"saveSecuritySettings": "Sicherheitseinstellungen speichern"
},
"categories": {
"title": "Kategorien",
"about": "Über Fotokategorien",
"aboutText": "Globale Kategorien sind für alle Veranstaltungen verfügbar. Sie können auch veranstaltungsspezifische Kategorien erstellen, wenn Sie einzelne Veranstaltungen bearbeiten. Kategorien helfen beim Organisieren von Fotos und ermöglichen es Gästen, Fotos nach Typ in der Galerieansicht zu filtern."
},
"systemStatus": {
"title": "Systemstatus",
"storageOverview": "Speicherübersicht",
"systemInfo": "Systeminformationen",
"databaseInfo": "Datenbankinformationen",
"platform": "Plattform",
"nodeVersion": "Node-Version",
"uptime": "Betriebszeit",
"cpuCores": "CPU-Kerne",
"memoryUsage": "Speichernutzung",
"memoryUsed": "Speicher verwendet",
"photos": "Fotos",
"admins": "Administratoren",
"dbSize": "Datenbankgröße",
"services": "Hintergrunddienste",
"fileWatcher": "Dateiüberwachung",
"fileWatcherDesc": "Überwacht neue Fotos",
"expirationChecker": "Ablaufprüfung",
"expirationCheckerDesc": "Archiviert abgelaufene Galerien",
"emailProcessor": "E-Mail-Prozessor",
"emailProcessorDesc": "Sendet E-Mails aus der Warteschlange",
"emailQueue": "E-Mail-Warteschlangenstatus",
"pending": "Ausstehend",
"sent": "Gesendet",
"failed": "Fehlgeschlagen",
"lastUpdate": "Letzte Aktualisierung"
}
},
"branding": {
"title": "Branding & Themen",
"titleFull": "Branding & Anpassung",
"subtitle": "Passen Sie das Aussehen Ihrer Galerien an",
"loadingBranding": "Branding-Einstellungen werden geladen...",
"themeAndStyle": "Theme & Stil",
"companyInfo": "Unternehmensinformationen",
"companyName": "Unternehmensname",
"companyNameHelp": "Wird in Galerie-Headern und E-Mails angezeigt",
"companyTagline": "Unternehmens-Slogan",
"companyTaglineHelp": "Eine kurze Beschreibung Ihres Unternehmens",
"supportEmail": "Support-E-Mail",
"supportEmailHelp": "Kontakt-E-Mail für Gäste-Support",
"footerText": "Fußzeilentext",
"footerTextHelp": "Wird am unteren Rand der Galerien angezeigt",
"logo": "Logo",
"currentLogo": "Aktuelles Logo",
"uploadLogo": "Logo hochladen",
"removeLogo": "Logo entfernen",
"logoHelp": "Empfohlene Größe: 200x60px, PNG oder JPEG",
"favicon": "Favicon",
"currentFavicon": "Aktuelles Favicon",
"uploadFavicon": "Favicon hochladen",
"removeFavicon": "Favicon entfernen",
"faviconHelp": "PNG- oder ICO-Format, empfohlene Größe: 32x32px",
"watermark": "Wasserzeichen",
"watermarkSettings": "Wasserzeichen-Einstellungen",
"enableWatermark": "Wasserzeichen auf Fotos aktivieren",
"enableWatermarks": "Wasserzeichen aktivieren",
"watermarkHelp": "Fügen Sie Ihren Firmennamen als Wasserzeichen auf heruntergeladenen Fotos hinzu",
"watermarkLogo": "Wasserzeichen-Logo",
"currentWatermark": "Aktuelles Wasserzeichen",
"uploadWatermarkLogo": "Wasserzeichen-Logo hochladen",
"watermarkPosition": "Wasserzeichen-Position",
"topLeft": "Oben Links",
"topRight": "Oben Rechts",
"center": "Mitte",
"bottomLeft": "Unten Links",
"bottomRight": "Unten Rechts",
"watermarkOpacity": "Wasserzeichen-Transparenz",
"watermarkSize": "Wasserzeichen-Größe",
"theme": "Theme",
"galleryTheme": "Galerie-Theme",
"themeCustomization": "Theme-Anpassung",
"selectPreset": "Vorgefertigtes Theme auswählen",
"colors": "Farben",
"primaryColor": "Primärfarbe",
"secondaryColor": "Sekundärfarbe",
"accentColor": "Akzentfarbe",
"backgroundColor": "Hintergrundfarbe",
"textColor": "Textfarbe",
"customCSS": "Benutzerdefiniertes CSS",
"preview": "Vorschau",
"previewInNewTab": "Vorschau in neuem Tab",
"reset": "Zurücksetzen",
"saveChanges": "Änderungen speichern",
"applyLivePreview": "Änderungen sofort anwenden (Live-Vorschau)",
"eventSpecificThemes": "Veranstaltungsspezifische Themen",
"eventThemesInfo": "Sie können diese globalen Theme-Einstellungen für einzelne Veranstaltungen beim Erstellen oder Bearbeiten überschreiben.",
"themePresets": "Theme-Vorlagen",
"galleryLayout": "Galerie-Layout",
"layoutDescriptions": {
"grid": "Klassisches Rasterlayout mit einheitlichen Fotogrößen",
"masonry": "Pinterest-ähnliches Layout mit variablen Höhen",
"carousel": "Vollbild-Diashow mit Navigation",
"timeline": "Nach Datum organisierte Fotos",
"hero": "Hervorgehobenes Bild mit Raster darunter",
"mosaic": "Künstlerisches Layout mit gemischten Größen"
},
"layoutSettings": "Layout-Einstellungen",
"photoSpacing": "Foto-Abstand",
"spacing": {
"tight": "Eng",
"normal": "Normal",
"relaxed": "Locker"
},
"photoAnimation": "Foto-Animation",
"animation": {
"none": "Keine",
"fade": "Einblenden",
"scale": "Skalieren",
"slide": "Gleiten"
},
"columns": "Spalten",
"mobile": "Mobil",
"tablet": "Tablet",
"desktop": "Desktop",
"enableAutoplay": "Autoplay aktivieren",
"autoplayInterval": "Autoplay-Intervall (Sekunden)",
"groupPhotosBy": "Fotos gruppieren nach",
"grouping": {
"day": "Tag",
"week": "Woche",
"month": "Monat"
},
"typographyAndStyle": "Typografie & Stil",
"bodyFont": "Fließtext-Schriftart",
"headingFont": "Überschriften-Schriftart",
"sameAsBody": "Wie Fließtext",
"fontSize": "Schriftgröße",
"fontSizes": {
"small": "Klein",
"normal": "Normal",
"large": "Groß"
},
"borderRadius": "Eckenradius",
"borderRadiusOptions": {
"none": "Keine",
"small": "Klein",
"medium": "Mittel",
"large": "Groß"
},
"shadowStyle": "Schattenstil",
"shadowOptions": {
"none": "Kein",
"subtle": "Dezent",
"normal": "Normal",
"dramatic": "Dramatisch"
},
"backgroundPattern": "Hintergrund",
"backgroundOptions": {
"none": "Keiner",
"dots": "Punkte",
"grid": "Raster",
"waves": "Wellen"
},
"customCSSHelp": "Erweitert: Fügen Sie benutzerdefiniertes CSS hinzu, um das Erscheinungsbild weiter anzupassen",
"resetToDefault": "Auf Standard zurücksetzen",
"applyTheme": "Theme anwenden",
"customTheme": "Benutzerdefiniertes Design",
"customizeTheme": "Design anpassen",
"saveTheme": "Design speichern",
"previewLayout": "Vorschau-Layout",
"livePreview": "Live-Vorschau"
},
"admin": {
"title": "Admin-Panel",
"welcome": "Willkommen zurück, {{name}}",
"recentActivity": "Letzte Aktivitäten",
"systemStatus": "Systemstatus",
"totalEvents": "Gesamte Veranstaltungen",
"activeGalleries": "Aktive Galerien",
"storageUsed": "Speicher verwendet",
"totalPhotos": "Gesamte Fotos",
"storagePercent": "{{percent}}% von {{limit}}",
"version": "Version",
"archivedEvents": "Archivierte Veranstaltungen",
"systemHealth": "Systemstatus",
"health": {
"healthy": "Gesund",
"warning": "Warnung",
"error": "Fehler",
"checking": "Prüfe..."
},
"notifications": "Benachrichtigungen",
"viewAllNotifications": "Alle Benachrichtigungen anzeigen",
"noNotifications": "Keine neuen Benachrichtigungen",
"markAllRead": "Alle als gelesen markieren",
"clearOld": "Alte löschen",
"close": "Schließen",
"noNotificationsMessage": "Keine Benachrichtigungen",
"notificationMessages": {
"eventCreated": "Neues Event \"{{eventName}}\" wurde erstellt",
"eventArchived": "Event \"{{eventName}}\" wurde archiviert",
"eventUpdated": "Event \"{{eventName}}\" wurde aktualisiert",
"eventDeleted": "Event \"{{eventName}}\" wurde gelöscht",
"photosUploaded": "{{count}} Fotos zu \"{{eventName}}\" hochgeladen",
"photoDeleted": "Foto aus \"{{eventName}}\" gelöscht",
"photosBulkDeleted": "{{count}} Fotos aus \"{{eventName}}\" gelöscht",
"eventExpiring": "Event \"{{eventName}}\" läuft in {{days}} Tagen ab",
"eventExpired": "Event \"{{eventName}}\" ist abgelaufen",
"passwordChanged": "Passwort geändert von {{actorName}}",
"passwordReset": "Passwort zurückgesetzt für \"{{eventName}}\"",
"settingsUpdated": "{{type}}-Einstellungen aktualisiert",
"emailTemplateUpdated": "E-Mail-Vorlage \"{{template}}\" aktualisiert",
"bulkDownload": "{{count}} Fotos von \"{{eventName}}\" heruntergeladen",
"storageWarning": "Speichernutzung bei {{percentage}}%",
"adminLogout": "Admin {{actorName}} hat sich abgemeldet",
"categoryCreated": "Kategorie \"{{name}}\" für \"{{eventName}}\" erstellt",
"categoryUpdated": "Kategorie \"{{name}}\" für \"{{eventName}}\" aktualisiert",
"categoryDeleted": "Kategorie \"{{name}}\" aus \"{{eventName}}\" gelöscht",
"cmsPageUpdated": "CMS-Seite \"{{slug}}\" aktualisiert",
"emailConfigUpdated": "E-Mail-Konfiguration aktualisiert",
"faviconUploaded": "Favicon hochgeladen",
"brandingUpdated": "Branding-Einstellungen aktualisiert",
"generalSettingsUpdated": "Allgemeine Einstellungen aktualisiert",
"securitySettingsUpdated": "Sicherheitseinstellungen aktualisiert",
"themeUpdated": "Theme-Einstellungen aktualisiert",
"archiveDownloaded": "Archiv für \"{{eventName}}\" heruntergeladen",
"archiveDeleted": "Archiv für \"{{eventName}}\" gelöscht",
"archiveRestored": "Archiv für \"{{eventName}}\" wiederhergestellt",
"systemActivity": "Systemaktivität: {{type}}"
},
"notificationToasts": {
"markedAllRead": "Alle Benachrichtigungen als gelesen markiert",
"clearedOld": "{{count}} alte Benachrichtigungen gelöscht"
},
"viewAllNotifications": "Alle Benachrichtigungen anzeigen",
"noNotifications": "Keine neuen Benachrichtigungen",
"markAsRead": "Als gelesen markieren",
"markAllAsRead": "Alle als gelesen markieren",
"notificationSettings": "Benachrichtigungseinstellungen",
"changePassword": "Passwort ändern",
"loadingDashboard": "Dashboard wird geladen...",
"activeEvents": "Aktive Veranstaltungen",
"expiringSoon": "Demnächst ablaufend",
"next7Days": "Nächste 7 Tage",
"totalViews": "Gesamtaufrufe",
"downloads": "Downloads",
"percentFromLastWeek": "{{percent}}% gegenüber letzter Woche",
"dashboardSubtitle": "Willkommen zurück! Hier ist, was mit Ihren Galerien passiert.",
"eventsExpiringSoon": "Demnächst ablaufende Veranstaltungen",
"noEventsExpiring": "Keine Veranstaltungen laufen in den nächsten 7 Tagen ab",
"daysLeft": "{{count}} Tag verbleibend",
"daysLeft_plural": "{{count}} Tage verbleibend",
"viewAllExpiringEvents": "Alle {{count}} ablaufenden Veranstaltungen anzeigen",
"noRecentActivity": "Keine aktuellen Aktivitäten",
"viewAllActivity": "Alle Aktivitäten anzeigen",
"quickActions": "Schnellaktionen",
"viewArchives": "Archive anzeigen",
"analytics": "Analytik",
"activities": {
"event_created": "Neue Veranstaltung erstellt: {{eventName}}",
"photos_uploaded": "{{count}} Fotos hochgeladen zu {{eventName}}",
"event_archived": "Veranstaltung archiviert: {{eventName}}",
"archive_restored": "Archiv wiederhergestellt: {{eventName}}",
"archive_deleted": "Archiv gelöscht: {{eventName}}",
"archive_downloaded": "Archiv heruntergeladen: {{eventName}}",
"email_config_updated": "E-Mail-Konfiguration aktualisiert",
"email_template_updated": "E-Mail-Vorlage aktualisiert: {{template}}",
"branding_updated": "Branding-Einstellungen aktualisiert",
"theme_updated": "Theme-Einstellungen aktualisiert",
"bulk_download": "{{count}} Fotos heruntergeladen von {{eventName}}",
"gallery_password_entry": "Passwort eingegeben für {{eventName}}",
"expiration_warning_viewed": "Ablaufwarnung angesehen für {{eventName}}",
"settings_updated": "Einstellungen aktualisiert",
"event_updated": "Veranstaltung aktualisiert: {{eventName}}",
"event_deleted": "Veranstaltung gelöscht: {{eventName}}",
"email_resent": "Erstellungs-E-Mail erneut gesendet für: {{eventName}}",
"category_created": "Kategorie erstellt: {{categoryName}}",
"category_updated": "Kategorie aktualisiert: {{categoryName}}",
"category_deleted": "Kategorie gelöscht: {{categoryName}}",
"general_settings_updated": "Allgemeine Einstellungen aktualisiert",
"favicon_uploaded": "Favicon hochgeladen",
"unknown": "Unbekannte Aktivität"
}
},
"errors": {
"notFound": "Nicht gefunden",
"galleryNotFound": "Galerie nicht gefunden",
"galleryNotFoundMessage": "Diese Galerie existiert nicht oder wurde entfernt.",
"galleryArchived": "Galerie archiviert",
"galleryArchivedMessage": "Diese Galerie wurde archiviert und ist nicht mehr zugänglich. Bitte kontaktieren Sie den Veranstalter, wenn Sie Zugriff auf diese Fotos benötigen.",
"unauthorized": "Nicht autorisiert",
"forbidden": "Verboten",
"serverError": "Serverfehler",
"somethingWentWrong": "Etwas ist schiefgelaufen",
"tryAgainLater": "Bitte versuchen Sie es später erneut",
"refreshPage": "Seite neu laden",
"oopsSomethingWentWrong": "Ups! Etwas ist schiefgelaufen",
"unexpectedError": "Es ist ein unerwarteter Fehler aufgetreten. Keine Sorge, Ihre Daten sind sicher.",
"goToHomepage": "Zur Startseite",
"errorDetails": "Fehlerdetails",
"failedToCreateEvent": "Fehler beim Erstellen der Veranstaltung",
"eventCreationFailed": "Fehler beim Erstellen der Veranstaltung"
},
"legal": {
"impressum": "Impressum",
"datenschutz": "Datenschutzerklärung",
"termsOfService": "Nutzungsbedingungen",
"cookiePolicy": "Cookie-Richtlinie"
},
"toast": {
"saveSuccess": "Änderungen erfolgreich gespeichert",
"saveError": "Fehler beim Speichern der Änderungen",
"deleteSuccess": "Erfolgreich gelöscht",
"deleteError": "Fehler beim Löschen",
"uploadSuccess": "Upload erfolgreich abgeschlossen",
"uploadError": "Upload fehlgeschlagen",
"loginSuccess": "Anmeldung erfolgreich",
"loginError": "Anmeldung fehlgeschlagen",
"passwordChanged": "Passwort erfolgreich geändert",
"linkCopied": "Link in Zwischenablage kopiert",
"eventCreated": "Veranstaltung erfolgreich erstellt",
"eventUpdated": "Veranstaltung erfolgreich aktualisiert",
"eventArchived": "Veranstaltung erfolgreich archiviert",
"settingsSaved": "Einstellungen erfolgreich gespeichert",
"themeUpdated": "Theme erfolgreich aktualisiert",
"brandingUpdated": "Branding erfolgreich aktualisiert",
"categoryAdded": "Kategorie erfolgreich hinzugefügt",
"categoryDeleted": "Kategorie erfolgreich gelöscht",
"categoryUpdated": "Kategorie erfolgreich aktualisiert",
"emailConfigSaved": "E-Mail-Konfiguration erfolgreich gespeichert",
"testEmailSent": "Test-E-Mail erfolgreich gesendet",
"pageUpdated": "Seite erfolgreich aktualisiert",
"archiveRestored": "Archiv erfolgreich wiederhergestellt",
"archiveDeleted": "Archiv dauerhaft gelöscht"
},
"analytics": {
"title": "Analytics Dashboard",
"titleSimple": "Analytik",
"subtitle": "Galerie-Performance und Besucherengagement verfolgen",
"detailedSubtitle": "Detaillierte Analysen mit Umami",
"loadingAnalytics": "Analytik wird geladen...",
"showSummaryView": "Zusammenfassungsansicht anzeigen",
"fullDashboard": "Vollständiges Dashboard",
"refresh": "Aktualisieren",
"last7Days": "Letzte 7 Tage",
"last30Days": "Letzte 30 Tage",
"last90Days": "Letzte 90 Tage",
"pageViews": "Seitenaufrufe",
"uniqueVisitors": "Eindeutige Besucher",
"totalDownloads": "Gesamte Downloads",
"topGallery": "Top-Galerie",
"topPages": "Top-Seiten",
"views": "Aufrufe",
"visitors": "eindeutige Besucher",
"topDownloadsByGallery": "Top-Downloads nach Galerie",
"deviceBreakdown": "Geräteaufschlüsselung",
"desktop": "Desktop",
"mobile": "Mobil",
"tablet": "Tablet",
"storageUsage": "Speichernutzung",
"used": "Verwendet",
"of": "von",
"totalPhotos": "Gesamte Fotos",
"activeEvents": "Aktive Veranstaltungen",
"notConfigured": "Umami Analytics nicht konfiguriert",
"configureInstructions": "Um echte Analysedaten zu sehen, konfigurieren Sie Umami in Ihren Umgebungsvariablen und Admin-Panel-Einstellungen.",
"noData": "Keine Daten verfügbar",
"percentChange": "{{percent}}% gegenüber letztem Zeitraum"
},
"email": {
"title": "E-Mail-Konfiguration",
"subtitle": "E-Mail-Einstellungen für Benachrichtigungen konfigurieren",
"loadingSettings": "E-Mail-Einstellungen werden geladen...",
"smtpConfiguration": "SMTP-Konfiguration",
"smtpHost": "SMTP-Host",
"smtpHostHelp": "Ihr E-Mail-Server-Hostname",
"smtpPort": "SMTP-Port",
"smtpPortHelp": "Normalerweise 587 für TLS, 465 für SSL, 25 für unverschlüsselt",
"smtpSecure": "SSL/TLS verwenden",
"smtpSecureHelp": "Für sichere E-Mail-Übertragung aktivieren",
"smtpUsername": "SMTP-Benutzername",
"smtpUsernameHelp": "Ihr E-Mail-Konto-Benutzername",
"smtpPassword": "SMTP-Passwort",
"smtpPasswordHelp": "Ihr E-Mail-Konto-Passwort",
"fromDetails": "Absenderdetails",
"fromEmail": "Absender-E-Mail",
"fromEmailHelp": "E-Mail-Adresse, die als Absender erscheint",
"fromName": "Absendername",
"fromNameHelp": "Name, der als Absender erscheint",
"testConfiguration": "Konfiguration testen",
"testEmail": "Test-E-Mail-Adresse",
"testEmailHelp": "Senden Sie eine Test-E-Mail zur Überprüfung der Einstellungen",
"sendTestEmail": "Test-E-Mail senden",
"saveConfiguration": "Konfiguration speichern",
"emailTemplates": "E-Mail-Vorlagen",
"templateVariables": "Verfügbare Variablen",
"previewTemplate": "Vorlage anzeigen"
},
"cms": {
"title": "CMS-Seiten",
"subtitle": "Rechtliche und informative Seiten verwalten",
"loadingPages": "Seiten werden geladen...",
"pages": "Seiten",
"previewLinks": "Vorschau-Links",
"englishVersion": "Englische Version",
"germanVersion": "Deutsche Version",
"editPage": "{{page}} bearbeiten",
"pageTitle": "Seitentitel",
"pageContent": "Seiteninhalt",
"pageTitlePlaceholder": "Seitentitel eingeben...",
"saveChanges": "Änderungen speichern",
"lastUpdated": "Zuletzt aktualisiert:",
"impressum": "Impressum",
"datenschutz": "Datenschutzerklärung",
"pageUpdated": "Seite erfolgreich aktualisiert"
},
"errors": {
"notFound": "Nicht gefunden",
"galleryNotFound": "Galerie nicht gefunden",
"galleryNotFoundMessage": "Diese Galerie existiert nicht oder wurde entfernt.",
"galleryArchived": "Galerie archiviert",
"galleryArchivedMessage": "Diese Galerie wurde archiviert und ist nicht mehr zugänglich. Bitte kontaktieren Sie den Veranstalter, wenn Sie Zugriff auf diese Fotos benötigen.",
"unauthorized": "Nicht autorisiert",
"forbidden": "Verboten",
"serverError": "Serverfehler",
"somethingWentWrong": "Etwas ist schiefgelaufen",
"tryAgainLater": "Bitte versuchen Sie es später erneut",
"refreshPage": "Seite aktualisieren",
"oopsSomethingWentWrong": "Hoppla! Etwas ist schiefgelaufen",
"unexpectedError": "Ein unerwarteter Fehler ist aufgetreten. Keine Sorge, Ihre Daten sind sicher.",
"goToHomepage": "Zur Startseite",
"errorDetails": "Fehlerdetails",
"requiredFields": "Bitte füllen Sie alle Pflichtfelder aus",
"enterTestEmail": "Bitte geben Sie eine Test-E-Mail-Adresse ein",
"failedToCreateEvent": "Veranstaltung konnte nicht erstellt werden",
"networkError": "Netzwerkfehler. Bitte überprüfen Sie Ihre Verbindung und versuchen Sie es erneut.",
"sessionExpired": "Sitzung abgelaufen. Bitte melden Sie sich erneut an."
},
"validation": {
"eventNameRequired": "Veranstaltungsname ist erforderlich",
"hostEmailRequired": "Gastgeber-E-Mail ist erforderlich",
"hostNameRequired": "Der Name des Gastgebers ist erforderlich",
"adminEmailRequired": "Admin-E-Mail ist erforderlich",
"invalidEmailFormat": "Ungültiges E-Mail-Format",
"passwordRequired": "Passwort ist erforderlich",
"passwordMinLength": "Passwort muss mindestens 6 Zeichen lang sein",
"passwordsDoNotMatch": "Passwörter stimmen nicht überein",
"passwordSecurityRequirements": "Passwort erfüllt nicht die Sicherheitsanforderungen",
"expirationRange": "Ablauf muss zwischen 1 und 365 Tagen liegen"
},
"maintenance": {
"title": "Systemwartung",
"message": "Wir führen derzeit geplante Wartungsarbeiten durch, um unseren Service zu verbessern. Wir sind in Kürze wieder online.",
"expectedCompletion": "Voraussichtliche Fertigstellung:",
"checkBackLater": "Bitte schauen Sie später wieder vorbei",
"urgentMatters": "Bei dringenden Anliegen kontaktieren Sie bitte"
}
}
+926
View File
@@ -0,0 +1,926 @@
{
"common": {
"loading": "Loading...",
"error": "Error",
"save": "Save",
"cancel": "Cancel",
"delete": "Delete",
"edit": "Edit",
"add": "Add",
"search": "Search",
"filter": "Filter",
"sortBy": "Sort by",
"yes": "Yes",
"no": "No",
"back": "Back",
"next": "Next",
"previous": "Previous",
"close": "Close",
"logout": "Logout",
"menu": "Menu",
"change": "Change",
"remove": "Remove",
"download": "Download",
"downloadAll": "Download All",
"uploading": "Uploading...",
"uploaded": "Uploaded",
"photo": "photo",
"photos": "photos",
"restore": "Restore",
"actions": "Actions",
"refresh": "Refresh",
"preview": "Preview",
"processing": "Processing...",
"upload": "Upload",
"days": "days",
"customize": "Customize",
"hide": "Hide",
"unknown": "Unknown"
},
"upload": {
"photoCategory": "Photo Category",
"noCategory": "No category",
"eventSpecific": "(Event specific)",
"clickToUpload": "Click to upload or drag and drop",
"fileRequirements": "JPEG, PNG or WebP (max 50MB per file)",
"selectedFiles": "Selected files",
"uploading": "Uploading...",
"uploadComplete": "Upload complete!",
"uploadFailed": "Upload failed",
"someFilesFailed": "Some files failed to upload",
"uploadPhotos": "Upload Photos",
"maxFilesReached": "Maximum 500 files allowed",
"someFilesSkipped": "Some files were skipped (500 file limit)",
"tooManyFiles": "Maximum 500 files can be uploaded at once"
},
"navigation": {
"dashboard": "Dashboard",
"events": "Events",
"archives": "Archives",
"settings": "Settings",
"branding": "Branding",
"analytics": "Analytics",
"emailSettings": "Email Settings",
"cmsPages": "CMS Pages"
},
"archives": {
"title": "Archives",
"subtitle": "Manage archived photo galleries",
"loadingArchives": "Loading archives...",
"totalArchives": "Total Archives",
"storageUsed": "Storage Used",
"totalPhotos": "Total Photos",
"avgArchiveSize": "Avg Archive Size",
"searchPlaceholder": "Search archives...",
"allTypes": "All Types",
"wedding": "Wedding",
"birthday": "Birthday",
"corporate": "Corporate",
"other": "Other",
"sortByDate": "Sort by Date",
"sortByName": "Sort by Name",
"sortBySize": "Sort by Size",
"tableHeaders": {
"event": "Event",
"type": "Type",
"archivedDate": "Archived Date",
"size": "Size",
"photos": "Photos",
"actions": "Actions"
},
"noArchivesFound": "No archives found",
"eventDateNA": "Event date: N/A",
"processing": "Processing...",
"download": "Download",
"restore": "Restore",
"delete": "Delete",
"showing": "Showing {{from}} to {{to}} of {{total}} archives",
"page": "Page {{current}} of {{total}}",
"storageManagement": "Storage Management",
"storageInfo": "Archives are stored permanently unless manually deleted. Consider implementing a retention policy to manage storage costs.",
"confirmRestore": "Are you sure you want to restore this archive? The event will become active again.",
"confirmDelete": "Are you sure you want to permanently delete this archive? This action cannot be undone.",
"restoreSuccess": "Archive restored successfully",
"deleteSuccess": "Archive deleted permanently"
},
"auth": {
"login": "Login",
"password": "Password",
"enterPassword": "Enter Gallery Password",
"passwordPlaceholder": "Enter the gallery password",
"invalidPassword": "Invalid password",
"wrongPassword": "Incorrect password. Please check your password and try again.",
"tooManyAttempts": "Too many failed login attempts. Please try again later.",
"sessionExpired": "Session expired",
"pleaseEnterPassword": "Please enter a password",
"passwordHint": "The password was provided by the event organizer. Contact them if you don't have it."
},
"gallery": {
"title": "Photo Gallery",
"welcomeMessage": "Welcome Message",
"expiresOn": "Expires on",
"expires": "Expires",
"expired": "Expired",
"daysRemaining": "{{days}} days remaining",
"dayRemaining": "1 day remaining",
"hoursRemaining": "{{hours}} hours remaining",
"expiredMessage": "This gallery expired on {{date}}",
"contactOrganizer": "Please contact the event organizer if you need access to these photos",
"searchPhotos": "Search photos by filename...",
"sortByDate": "Sort by Date",
"sortByName": "Sort by Name",
"sortBySize": "Sort by Size",
"allPhotos": "All Photos",
"downloadSelected": "Download Selected",
"shareGallery": "Share Gallery",
"needHelp": "Need help? Contact us at",
"noPhotosFound": "No photos found",
"failedToLoad": "Failed to load photos",
"tryAgain": "Try Again",
"loading": "Loading gallery...",
"expiredOn": "This gallery expired on {{date}}.",
"contactOrganizer": "Please contact the event organizer if you need access to these photos.",
"expiresIn": "Gallery expires in {{count}} day",
"expiresIn_plural": "Gallery expires in {{count}} days",
"downloadBefore": "Download your photos before they're no longer available.",
"viewGallery": "View Gallery",
"downloadAll": "Download All",
"downloading": "Downloading {{count}} photo...",
"downloading_plural": "Downloading {{count}} photos...",
"downloadedPhotos": "Downloaded {{count}} photo!",
"downloadedPhotos_plural": "Downloaded {{count}} photos!",
"downloadError": "Some photos failed to download",
"selectPhotos": "Select Photos",
"cancelSelection": "Cancel Selection",
"photosSelected": "{{count}} selected",
"selectAll": "Select All",
"deselectAll": "Deselect All",
"downloadSelected": "Download {{count}} Selected",
"remaining": "remaining",
"selectPhotosHint": "Tip: Use Ctrl+Click (Cmd+Click on Mac) to quickly select multiple photos",
"filters": "Filters",
"openFilters": "Open filters",
"toggleSidebar": "Toggle sidebar",
"toggleMenu": "Toggle menu",
"allCategories": "All Categories",
"categories": "Categories",
"download": "Download",
"searchPlaceholder": "Search photos..."
},
"categories": {
"title": "Photo Categories",
"global": "Global Categories",
"eventSpecific": "Event-Specific Categories",
"addCategory": "Add Category",
"organizationInfo": "Organize your photos into categories. Categories help guests navigate and find specific types of photos.",
"eventSpecificCategories": "Event-Specific Categories",
"noEventSpecificCategories": "No event-specific categories. Global categories are available by default.",
"globalCategoriesAlwaysAvailable": "Global Categories (always available):",
"deleteCategoryTitle": "Delete category",
"categoryCreatedSuccess": "Category created successfully",
"categoryDeletedSuccess": "Category deleted successfully",
"failedToCreateCategory": "Failed to create category",
"failedToDeleteCategory": "Failed to delete category",
"categoryName": "Category name",
"noCategory": "No category",
"noCategoriesYet": "No categories yet. Create your first category to organize photos.",
"deleteConfirm": "Are you sure you want to delete \"{{name}}\"?",
"cannotDelete": "Cannot delete category with photos. Please reassign photos first."
},
"events": {
"title": "Events",
"create": "Create",
"createEvent": "Create Event",
"totalViews": "Total Views",
"totalDownloads": "Total Downloads",
"uniqueVisitors": "Unique Visitors",
"createNewEvent": "Create New Event",
"setupNewGallery": "Set up a new photo gallery for your event",
"createNewEventSubtitle": "Set up a new photo gallery for your event",
"eventNamePlaceholder": "e.g., John & Jane's Wedding",
"welcomeMessageOptional": "Welcome Message (Optional)",
"welcomeMessagePlaceholder": "Welcome to our special day! Feel free to download and share these memories...",
"hostEmailPlaceholder": "[email protected]",
"adminEmailPlaceholder": "[email protected]",
"securityAndAccess": "Security & Access",
"accessAndSecurity": "Access & Security",
"enterPassword": "Enter password",
"passwordPlaceholder": "Enter a secure password",
"confirmPasswordPlaceholder": "Confirm password",
"galleryExpiresOn": "Gallery will expire on {{date}}",
"guestsWillReceiveWarning": "Guests will receive a warning email 7 days before expiration.",
"types": {
"wedding": "Wedding",
"birthday": "Birthday",
"corporate": "Corporate",
"other": "Other"
},
"themes": {
"default": "Default",
"oceanBlue": "Ocean Blue",
"royalPurple": "Royal Purple",
"roseGold": "Rose Gold",
"sunsetAmber": "Sunset Amber"
},
"eventDetails": "Event Details",
"eventName": "Event Name",
"eventType": "Event Type",
"eventDate": "Event Date",
"hostEmail": "Host Email",
"hostName": "Host Name",
"hostNamePlaceholder": "John Smith",
"adminEmail": "Admin Email",
"adminNotificationEmail": "Admin Notification Email",
"expirationDate": "Expiration Date",
"active": "Active",
"archived": "Archived",
"photoCount": "{{count}} photos",
"totalSize": "Total Size",
"shareLink": "Share Link",
"copyLink": "Copy Link",
"linkCopied": "Link copied!",
"viewGallery": "View Gallery",
"uploadPhotos": "Upload Photos",
"archiveEvent": "Archive Event",
"archiveConfirm": "Are you sure you want to archive this event? This action cannot be undone.",
"extendExpiration": "Extend {{days}} Days",
"backToEvents": "Back to Events",
"loadingEventDetails": "Loading event details...",
"saveChanges": "Save Changes",
"eventExpired": "This event has expired",
"eventExpiresIn": "This event expires in {{days}} days",
"guestsNoAccess": "Guests can no longer access the gallery. Consider archiving this event.",
"warningEmailsSent": "Warning emails have been sent to the host.",
"overview": "Overview",
"photos": "Photos",
"categories": "Categories",
"eventInformation": "Event Information",
"welcomeMessage": "Welcome Message",
"noWelcomeMessage": "No welcome message set",
"created": "Created",
"expires": "Expires",
"shareWithGuests": "Share this link with guests. They'll need the password to access the gallery.",
"resetGalleryPassword": "Reset Gallery Password",
"resendCreationEmail": "Resend Creation Email",
"creationEmailResent": "Creation email has been queued for sending",
"failedToResendEmail": "Failed to resend creation email",
"photoStatistics": "Photo Statistics",
"totalPhotos": "Total Photos",
"managePhotos": "Manage Photos",
"actions": "Actions",
"archivingInfo": "Archiving will create a ZIP file of all photos and remove the gallery from public access.",
"statistics": "Statistics",
"views": "Views",
"downloads": "Downloads",
"uniqueVisitors": "Unique Visitors",
"noStatistics": "No statistics available yet",
"archiveStatus": "Archive Status",
"archivedOn": "Archived On",
"downloadArchive": "Download Archive",
"loadingPhotos": "Loading photos...",
"photoCategories": "Photo Categories",
"organizeCategoriesInfo": "Organize your photos into categories. Categories help guests navigate and find specific types of photos.",
"categoriesTip": "Tip: Categories are specific to each event. You can also create global categories in Settings.",
"contactInformation": "Contact Information",
"hostEmailHelp": "Will receive gallery creation and expiration notifications",
"adminEmailHelp": "Will receive system notifications and archive confirmations",
"securityAccess": "Security & Access",
"galleryPassword": "Gallery Password",
"passwordHelperText": "You can use dates like \"04.07.2025\" or any text with 6+ characters",
"confirmPassword": "Confirm Password",
"showPasswords": "Show passwords",
"gallerySettings": "Gallery Settings",
"themeAndStyle": "Theme & Style",
"colorTheme": "Color Theme",
"galleryExpiration": "Gallery Expiration",
"galleryExpiresIn": "Gallery Expires In",
"daysAfterEvent": "days after event date",
"expiresOn": "Expires on",
"galleryWillExpireOn": "Gallery will expire on {{date}}",
"expirationWarning": "Guests will receive a warning email 7 days before expiration.",
"userUploads": "User Upload Settings",
"allowUserUploads": "Allow guests to upload photos",
"allowUserUploadsHelp": "Enable guests to upload their own photos to this gallery",
"allowUserUploadsDescription": "Enable guests to upload their own photos to this gallery",
"uploadCategory": "Upload Category",
"selectCategory": "Select a category for user uploads",
"uploadCategoryHelp": "All user-uploaded photos will be added to this category",
"userUploadWarning": "User uploads will be moderated and can be removed by admins at any time.",
"heroPhoto": "Hero Photo",
"heroPhotoHelp": "Select a featured photo for the hero gallery layout",
"selectHeroPhoto": "Select Hero Photo",
"noHeroPhotoSelected": "No hero photo selected",
"heroPhotoSelected": "Hero photo selected",
"noPhotosAvailable": "No photos available",
"processingRequest": "Processing your request...",
"eventTypeWedding": "Wedding",
"eventTypeBirthday": "Birthday",
"eventTypeCorporate": "Corporate",
"eventTypeOther": "Other",
"days30": "30 days",
"days60": "60 days",
"days90": "90 days",
"days365": "1 year",
"inactive": "Inactive",
"expired": "Expired",
"daysLeft": "{{count}}d left",
"daysLeft_plural": "{{count}}d left",
"subtitle": "Manage your photo galleries and events",
"loadingEvents": "Loading events...",
"failedToLoadEvents": "Failed to load events",
"tryAgain": "Try Again",
"bulkArchiveSuccess": "Successfully archived {{count}} events",
"bulkArchivePartial": "Archived {{success}} events, {{failed}} failed",
"searchEventsPlaceholder": "Search events...",
"all": "All",
"expiring": "Expiring",
"eventsSelected": "{{count}} event selected",
"eventsSelected_plural": "{{count}} events selected",
"clear": "Clear",
"archiveSelected": "Archive Selected",
"event": "Event",
"type": "Type",
"date": "Date",
"status": "Status",
"expires": "Expires",
"actions": "Actions",
"noEventsFound": "No events found",
"stats": {
"totalEvents": "Total Events",
"activeEvents": "Active Events",
"totalPhotos": "Total Photos",
"expiringEvents": "Expiring Soon"
},
"viewDetails": "View Details",
"archiveEventAction": "Archive Event",
"downloadArchiveAction": "Download Archive",
"deleteEvent": "Delete Event",
"deleteEventConfirm": "Are you sure you want to delete this event?",
"downloadArchiveSoon": "Download archive coming soon",
"failedToLoadEvents": "Failed to load events",
"tryAgain": "Try Again",
"eventExpiredMessage": "This event has expired",
"guestsCannotAccessGallery": "Guests can no longer access the gallery. Consider archiving this event.",
"warningEmailsHaveBeenSent": "Warning emails have been sent to the host.",
"extendSevenDays": "Extend 7 Days",
"overview": "Overview",
"eventInformation": "Event Information",
"welcomeMessageLabel": "Welcome Message",
"noWelcomeMessageSet": "No welcome message set",
"hostEmail": "Host Email",
"adminEmail": "Admin Email",
"createdOn": "Created",
"expires": "Expires",
"daysLeft": "({{count}} day left)",
"daysLeft_plural": "({{count}} days left)",
"shareLink": "Share Link",
"copy": "Copy",
"copied": "Copied!",
"uploadPhotos": "Upload Photos",
"photoCategories": "Photo Categories",
"organizingPhotosInfo": "Organize your photos into categories. Categories help guests navigate and find specific types of photos.",
"categoriesTip": "Tip: Categories are specific to each event. You can create custom categories like \"Ceremony\", \"Reception\", \"Portraits\", etc.",
"archiveStatusTitle": "Archive Status",
"archivedOn": "Archived On",
"downloadingArchive": "Downloading {{name}} archive...",
"downloadStarted": "Download started",
"failedToDownloadArchive": "Failed to download archive",
"statisticsNotAvailable": "No statistics available yet",
"photoFilters": "Photo Filters",
"noStatisticsAvailableYet": "No statistics available yet",
"addPlus": "Add+",
"galleryTheme": "Gallery Theme",
"customizeTheme": "Customize Theme",
"noThemeSet": "No theme configured",
"customizingTheme": "Customizing gallery theme",
"customizingThemeFor": "Customizing theme for {{event}}"
},
"settings": {
"title": "System Settings",
"subtitle": "Configure system-wide settings and preferences",
"loadingSettings": "Loading settings...",
"general": {
"title": "General",
"siteConfiguration": "Site Configuration",
"siteUrl": "Site URL",
"siteUrlHelp": "Used for generating gallery links in emails",
"defaultExpiration": "Default Expiration (days)",
"defaultExpirationHelp": "How long galleries remain active by default",
"maxFileSize": "Max File Size (MB)",
"maxFileSizeHelp": "Maximum size per uploaded photo",
"allowedFileTypes": "Allowed File Types",
"allowedFileTypesHelp": "Comma-separated list of file extensions",
"featureToggles": "Feature Toggles",
"enableWatermark": "Enable watermark on photos",
"enableAnalytics": "Enable analytics tracking",
"enableRegistration": "Allow self-registration for admins",
"maintenanceMode": "Enable maintenance mode",
"language": "Language",
"defaultLanguage": "Default Language",
"defaultLanguageHelp": "Language shown to guests before login",
"defaultWelcomeMessage": "Default Welcome Message",
"welcomeMessage": "Welcome Message",
"welcomeMessagePlaceholder": "Enter a default welcome message that will be included in gallery creation emails",
"welcomeMessageHelp": "This message will be included in all gallery creation emails unless overridden when creating an event",
"saveSettings": "Save General Settings",
"saveGeneralSettings": "Save General Settings",
"dateTimeFormat": "Date & Time Format",
"dateFormat": "Date Format",
"dateFormatHelp": "How dates are displayed in emails and throughout the application"
},
"storage": {
"title": "Storage",
"overview": "Storage Overview",
"totalUsed": "Total Used",
"archiveStorage": "Archive Storage",
"storageLimit": "Storage Limit",
"storageUsage": "Storage Usage",
"storageByEvent": "Storage by Event",
"storageManagement": "Storage Management",
"storageManagementHelp": "Consider archiving or deleting old events to free up storage space. Archived events are compressed and use less storage than active galleries.",
"noEventsUsingStorage": "No events using storage",
"unlimited": "Unlimited"
},
"security": {
"title": "Security",
"passwordSettings": "Password Settings",
"requirePassword": "Require password for all galleries",
"minPasswordLength": "Minimum Password Length",
"minPasswordLengthHelp": "Minimum number of characters for gallery passwords",
"sessionAuth": "Session & Authentication",
"sessionTimeout": "Session Timeout (minutes)",
"sessionTimeoutHelp": "Admin session timeout in minutes",
"maxLoginAttempts": "Max Login Attempts",
"maxLoginAttemptsHelp": "Maximum failed login attempts before lockout",
"enable2FA": "Enable two-factor authentication for admins",
"recaptchaSettings": "reCAPTCHA Settings",
"enableRecaptcha": "Enable reCAPTCHA for login forms",
"siteKey": "Site Key",
"siteKeyHelp": "Your reCAPTCHA v2 site key (public)",
"secretKey": "Secret Key",
"secretKeyHelp": "Your reCAPTCHA v2 secret key (keep private)",
"recaptchaHelp": "Get your reCAPTCHA keys from",
"saveSettings": "Save Security Settings",
"saveSecuritySettings": "Save Security Settings"
},
"categories": {
"title": "Categories",
"about": "About Photo Categories",
"aboutText": "Global categories are available for all events. You can also create event-specific categories when editing individual events. Categories help organize photos and allow guests to filter photos by type in the gallery view."
},
"systemStatus": {
"title": "System Status",
"storageOverview": "Storage Overview",
"systemInfo": "System Information",
"databaseInfo": "Database Information",
"platform": "Platform",
"nodeVersion": "Node Version",
"uptime": "Uptime",
"cpuCores": "CPU Cores",
"memoryUsage": "Memory Usage",
"memoryUsed": "Memory Used",
"photos": "Photos",
"admins": "Admins",
"dbSize": "Database Size",
"services": "Background Services",
"fileWatcher": "File Watcher",
"fileWatcherDesc": "Monitors for new photos",
"expirationChecker": "Expiration Checker",
"expirationCheckerDesc": "Archives expired galleries",
"emailProcessor": "Email Processor",
"emailProcessorDesc": "Sends queued emails",
"emailQueue": "Email Queue Status",
"pending": "Pending",
"sent": "Sent",
"failed": "Failed",
"lastUpdate": "Last update"
}
},
"analytics": {
"title": "Analytics Dashboard",
"titleSimple": "Analytics",
"subtitle": "Track gallery performance and visitor engagement",
"detailedSubtitle": "Detailed analytics powered by Umami",
"loadingAnalytics": "Loading analytics...",
"showSummaryView": "Show Summary View",
"fullDashboard": "Full Dashboard",
"refresh": "Refresh",
"last7Days": "Last 7 days",
"last30Days": "Last 30 days",
"last90Days": "Last 90 days",
"pageViews": "Page Views",
"uniqueVisitors": "Unique Visitors",
"totalDownloads": "Total Downloads",
"topGallery": "Top Gallery",
"topPages": "Top Pages",
"views": "views",
"visitors": "unique visitors",
"topDownloadsByGallery": "Top Downloads by Gallery",
"deviceBreakdown": "Device Breakdown",
"desktop": "Desktop",
"mobile": "Mobile",
"tablet": "Tablet",
"storageUsage": "Storage Usage",
"used": "Used",
"of": "of",
"totalPhotos": "Total Photos",
"activeEvents": "Active Events",
"notConfigured": "Umami Analytics Not Configured",
"configureInstructions": "To see real analytics data, configure Umami in your environment variables and admin panel settings.",
"noData": "No data available",
"percentChange": "{{percent}}% from last period"
},
"branding": {
"title": "Branding & Themes",
"titleFull": "Branding & Customization",
"subtitle": "Customize the look and feel of your galleries",
"loadingBranding": "Loading branding settings...",
"themeAndStyle": "Theme & Style",
"companyInfo": "Company Information",
"companyName": "Company Name",
"companyNameHelp": "Displayed in gallery headers and emails",
"companyTagline": "Company Tagline",
"companyTaglineHelp": "A short description of your business",
"supportEmail": "Support Email",
"supportEmailHelp": "Contact email for guest support",
"footerText": "Footer Text",
"footerTextHelp": "Displayed at the bottom of galleries",
"logo": "Logo",
"currentLogo": "Current logo",
"uploadLogo": "Upload Logo",
"removeLogo": "Remove Logo",
"logoHelp": "Recommended size: 200x60px, PNG or JPEG",
"favicon": "Favicon",
"currentFavicon": "Current favicon",
"uploadFavicon": "Upload Favicon",
"removeFavicon": "Remove Favicon",
"faviconHelp": "PNG or ICO format, recommended size: 32x32px",
"watermark": "Watermark",
"watermarkSettings": "Watermark Settings",
"enableWatermark": "Enable watermark on photos",
"enableWatermarks": "Enable Watermarks",
"watermarkHelp": "Add your company name as a watermark on downloaded photos",
"watermarkLogo": "Watermark Logo",
"currentWatermark": "Current watermark",
"uploadWatermarkLogo": "Upload Watermark Logo",
"watermarkPosition": "Watermark Position",
"topLeft": "Top Left",
"topRight": "Top Right",
"center": "Center",
"bottomLeft": "Bottom Left",
"bottomRight": "Bottom Right",
"watermarkOpacity": "Watermark Opacity",
"watermarkSize": "Watermark Size",
"theme": "Theme",
"galleryTheme": "Gallery Theme",
"themeCustomization": "Theme Customization",
"selectPreset": "Select a preset theme",
"colors": "Colors",
"primaryColor": "Primary Color",
"secondaryColor": "Secondary Color",
"accentColor": "Accent Color",
"backgroundColor": "Background Color",
"textColor": "Text Color",
"customCSS": "Custom CSS",
"preview": "Preview",
"previewInNewTab": "Preview in New Tab",
"reset": "Reset",
"saveChanges": "Save Changes",
"applyLivePreview": "Apply changes immediately (Live Preview)",
"eventSpecificThemes": "Event-Specific Themes",
"eventThemesInfo": "You can override these global theme settings for individual events when creating or editing them.",
"themePresets": "Theme Presets",
"galleryLayout": "Gallery Layout",
"layoutDescriptions": {
"grid": "Classic grid layout with consistent photo sizes",
"masonry": "Pinterest-style layout with varied heights",
"carousel": "Full-screen slideshow with navigation",
"timeline": "Photos organized by date",
"hero": "Featured image with grid below",
"mosaic": "Artistic layout with mixed sizes"
},
"layoutSettings": "Layout Settings",
"photoSpacing": "Photo Spacing",
"spacing": {
"tight": "Tight",
"normal": "Normal",
"relaxed": "Relaxed"
},
"photoAnimation": "Photo Animation",
"animation": {
"none": "None",
"fade": "Fade",
"scale": "Scale",
"slide": "Slide"
},
"columns": "Columns",
"mobile": "Mobile",
"tablet": "Tablet",
"desktop": "Desktop",
"enableAutoplay": "Enable Autoplay",
"autoplayInterval": "Autoplay Interval (seconds)",
"groupPhotosBy": "Group Photos By",
"grouping": {
"day": "Day",
"week": "Week",
"month": "Month"
},
"typographyAndStyle": "Typography & Style",
"bodyFont": "Body Font",
"headingFont": "Heading Font",
"sameAsBody": "Same as body",
"fontSize": "Font Size",
"fontSizes": {
"small": "Small",
"normal": "Normal",
"large": "Large"
},
"borderRadius": "Border Radius",
"borderRadiusOptions": {
"none": "None",
"small": "Small",
"medium": "Medium",
"large": "Large"
},
"shadowStyle": "Shadow Style",
"shadowOptions": {
"none": "None",
"subtle": "Subtle",
"normal": "Normal",
"dramatic": "Dramatic"
},
"backgroundPattern": "Background",
"backgroundOptions": {
"none": "None",
"dots": "Dots",
"grid": "Grid",
"waves": "Waves"
},
"customCSSHelp": "Advanced: Add custom CSS to further customize the appearance",
"resetToDefault": "Reset to Default",
"applyTheme": "Apply Theme",
"customTheme": "Custom Theme",
"customizeTheme": "Customize Theme",
"saveTheme": "Save Theme",
"previewLayout": "Preview Layout",
"livePreview": "Live Preview"
},
"admin": {
"title": "Admin Panel",
"welcome": "Welcome back, {{name}}",
"recentActivity": "Recent Activity",
"systemStatus": "System Status",
"totalEvents": "Total Events",
"activeGalleries": "Active Galleries",
"storageUsed": "Storage Used",
"totalPhotos": "Total Photos",
"storagePercent": "{{percent}}% of {{limit}}",
"version": "Version",
"archivedEvents": "Archived Events",
"systemHealth": "System Health",
"health": {
"healthy": "Healthy",
"warning": "Warning",
"error": "Error",
"checking": "Checking..."
},
"notifications": "Notifications",
"viewAllNotifications": "View all notifications",
"noNotifications": "No new notifications",
"markAllRead": "Mark all read",
"clearOld": "Clear old",
"close": "Close",
"noNotificationsMessage": "No notifications",
"notificationMessages": {
"eventCreated": "New event \"{{eventName}}\" was created",
"eventArchived": "Event \"{{eventName}}\" was archived",
"eventUpdated": "Event \"{{eventName}}\" was updated",
"eventDeleted": "Event \"{{eventName}}\" was deleted",
"photosUploaded": "{{count}} photos uploaded to \"{{eventName}}\"",
"photoDeleted": "Photo deleted from \"{{eventName}}\"",
"photosBulkDeleted": "{{count}} photos deleted from \"{{eventName}}\"",
"eventExpiring": "Event \"{{eventName}}\" expires in {{days}} days",
"eventExpired": "Event \"{{eventName}}\" has expired",
"passwordChanged": "Password changed by {{actorName}}",
"passwordReset": "Password reset for \"{{eventName}}\"",
"settingsUpdated": "{{type}} settings updated",
"emailTemplateUpdated": "Email template \"{{template}}\" updated",
"bulkDownload": "{{count}} photos downloaded from \"{{eventName}}\"",
"storageWarning": "Storage usage at {{percentage}}%",
"adminLogout": "Admin {{actorName}} logged out",
"categoryCreated": "Category \"{{name}}\" created for \"{{eventName}}\"",
"categoryUpdated": "Category \"{{name}}\" updated for \"{{eventName}}\"",
"categoryDeleted": "Category \"{{name}}\" deleted from \"{{eventName}}\"",
"cmsPageUpdated": "CMS page \"{{slug}}\" updated",
"emailConfigUpdated": "Email configuration updated",
"faviconUploaded": "Favicon uploaded",
"brandingUpdated": "Branding settings updated",
"generalSettingsUpdated": "General settings updated",
"securitySettingsUpdated": "Security settings updated",
"themeUpdated": "Theme settings updated",
"archiveDownloaded": "Archive downloaded for \"{{eventName}}\"",
"archiveDeleted": "Archive deleted for \"{{eventName}}\"",
"archiveRestored": "Archive restored for \"{{eventName}}\"",
"systemActivity": "System activity: {{type}}"
},
"notificationToasts": {
"markedAllRead": "All notifications marked as read",
"clearedOld": "Cleared {{count}} old notifications"
},
"markAsRead": "Mark as read",
"markAllAsRead": "Mark all as read",
"notificationSettings": "Notification Settings",
"changePassword": "Change Password",
"loadingDashboard": "Loading dashboard...",
"activeEvents": "Active Events",
"expiringSoon": "Expiring Soon",
"next7Days": "Next 7 days",
"totalViews": "Total Views",
"downloads": "Downloads",
"percentFromLastWeek": "{{percent}}% from last week",
"dashboardSubtitle": "Welcome back! Here's what's happening with your galleries.",
"eventsExpiringSoon": "Events Expiring Soon",
"noEventsExpiring": "No events expiring in the next 7 days",
"daysLeft": "{{count}} day left",
"daysLeft_plural": "{{count}} days left",
"viewAllExpiringEvents": "View all {{count}} expiring events",
"noRecentActivity": "No recent activity",
"viewAllActivity": "View all activity",
"quickActions": "Quick Actions",
"viewArchives": "View Archives",
"analytics": "Analytics",
"activities": {
"event_created": "New event created: {{eventName}}",
"photos_uploaded": "{{count}} photos uploaded to {{eventName}}",
"event_archived": "Event archived: {{eventName}}",
"archive_restored": "Archive restored: {{eventName}}",
"archive_deleted": "Archive deleted: {{eventName}}",
"archive_downloaded": "Archive downloaded: {{eventName}}",
"email_config_updated": "Email configuration updated",
"email_template_updated": "Email template updated: {{template}}",
"branding_updated": "Branding settings updated",
"theme_updated": "Theme settings updated",
"bulk_download": "{{count}} photos downloaded from {{eventName}}",
"gallery_password_entry": "Password entered for {{eventName}}",
"expiration_warning_viewed": "Expiration warning viewed for {{eventName}}",
"settings_updated": "Settings updated",
"event_updated": "Event updated: {{eventName}}",
"event_deleted": "Event deleted: {{eventName}}",
"email_resent": "Creation email resent for: {{eventName}}",
"category_created": "Category created: {{categoryName}}",
"category_updated": "Category updated: {{categoryName}}",
"category_deleted": "Category deleted: {{categoryName}}",
"general_settings_updated": "General settings updated",
"favicon_uploaded": "Favicon uploaded",
"unknown": "Unknown activity"
}
},
"errors": {
"notFound": "Not Found",
"galleryNotFound": "Gallery Not Found",
"galleryNotFoundMessage": "This gallery does not exist or has been removed.",
"galleryArchived": "Gallery Archived",
"galleryArchivedMessage": "This gallery has been archived and is no longer accessible. Please contact the event organizer if you need access to these photos.",
"unauthorized": "Unauthorized",
"forbidden": "Forbidden",
"serverError": "Server Error",
"somethingWentWrong": "Something went wrong",
"tryAgainLater": "Please try again later",
"refreshPage": "Refresh Page",
"oopsSomethingWentWrong": "Oops! Something went wrong",
"unexpectedError": "We encountered an unexpected error. Don't worry, your data is safe.",
"goToHomepage": "Go to Homepage",
"errorDetails": "Error Details",
"requiredFields": "Please fill in all required fields",
"enterTestEmail": "Please enter a test email address",
"failedToCreateEvent": "Failed to create event",
"eventCreationFailed": "Failed to create event",
"networkError": "Network error. Please check your connection and try again.",
"sessionExpired": "Session expired. Please login again."
},
"validation": {
"eventNameRequired": "Event name is required",
"hostEmailRequired": "Host email is required",
"hostNameRequired": "Host name is required",
"adminEmailRequired": "Admin email is required",
"invalidEmailFormat": "Invalid email format",
"passwordRequired": "Password is required",
"passwordMinLength": "Password must be at least 6 characters",
"passwordsDoNotMatch": "Passwords do not match",
"passwordSecurityRequirements": "Password does not meet security requirements",
"expirationRange": "Expiration must be between 1 and 365 days"
},
"legal": {
"impressum": "Legal Notice",
"datenschutz": "Privacy Policy",
"termsOfService": "Terms of Service",
"cookiePolicy": "Cookie Policy"
},
"toast": {
"saveSuccess": "Changes saved successfully",
"saveError": "Failed to save changes",
"deleteSuccess": "Deleted successfully",
"deleteError": "Failed to delete",
"uploadSuccess": "Upload completed successfully",
"uploadError": "Upload failed",
"loginSuccess": "Login successful",
"loginError": "Login failed",
"passwordChanged": "Password changed successfully",
"linkCopied": "Link copied to clipboard",
"eventCreated": "Event created successfully",
"eventUpdated": "Event updated successfully",
"eventArchived": "Event archived successfully",
"settingsSaved": "Settings saved successfully",
"themeUpdated": "Theme updated successfully",
"brandingUpdated": "Branding updated successfully",
"categoryAdded": "Category added successfully",
"categoryDeleted": "Category deleted successfully",
"categoryUpdated": "Category updated successfully",
"emailConfigSaved": "Email configuration saved successfully",
"testEmailSent": "Test email sent successfully",
"pageUpdated": "Page updated successfully",
"archiveRestored": "Archive restored successfully",
"archiveDeleted": "Archive deleted permanently"
},
"email": {
"title": "Email Configuration",
"subtitle": "Configure email settings for notifications",
"loadingSettings": "Loading email settings...",
"smtpConfiguration": "SMTP Configuration",
"smtpHost": "SMTP Host",
"smtpHostHelp": "Your email server hostname",
"smtpPort": "SMTP Port",
"smtpPortHelp": "Usually 587 for TLS, 465 for SSL, 25 for unencrypted",
"smtpSecure": "Use SSL/TLS",
"smtpSecureHelp": "Enable for secure email transmission",
"smtpUsername": "SMTP Username",
"smtpUsernameHelp": "Your email account username",
"smtpPassword": "SMTP Password",
"smtpPasswordHelp": "Your email account password",
"fromDetails": "From Details",
"fromEmail": "From Email",
"fromEmailHelp": "Email address that appears as sender",
"fromName": "From Name",
"fromNameHelp": "Name that appears as sender",
"testConfiguration": "Test Configuration",
"testEmail": "Test Email Address",
"testEmailHelp": "Send a test email to verify settings",
"sendTestEmail": "Send Test Email",
"saveConfiguration": "Save Configuration",
"emailTemplates": "Email Templates",
"templateVariables": "Available Variables",
"previewTemplate": "Preview Template",
"smtpSettings": "SMTP Settings",
"testEmailSuccess": "Test email sent successfully",
"saveSmtpSettings": "Save SMTP Settings",
"testEmailSection": "Test Email",
"beforeTesting": "Before testing:",
"saveSmtpFirst": "Save your SMTP settings first",
"ensureFirewall": "Ensure your firewall allows outbound SMTP",
"gmailAppPassword": "For Gmail, use an app-specific password",
"testEmailAddressLabel": "Test Email Address",
"sendTestEmailButton": "Send Test Email",
"commonSmtpSettings": "Common SMTP Settings:",
"editTemplate": "Edit Template",
"templateName": "Template Name",
"subjectLine": "Subject Line",
"emailBody": "Email Body",
"preview": "Preview",
"saveChanges": "Save Changes",
"templates": "Templates",
"variableHelp": "Use these variables in your template. They will be replaced with actual values when emails are sent.",
"port": "Port",
"security": "Security",
"username": "Username",
"password": "Password",
"enterPassword": "Enter password",
"fromEmail": "From Email",
"fromName": "From Name",
"required": "required"
},
"cms": {
"title": "CMS Pages",
"subtitle": "Manage legal and informational pages",
"loadingPages": "Loading pages...",
"pages": "Pages",
"previewLinks": "Preview Links",
"englishVersion": "English Version",
"germanVersion": "German Version",
"editPage": "Edit {{page}}",
"pageTitle": "Page Title",
"pageContent": "Page Content",
"pageTitlePlaceholder": "Enter page title...",
"saveChanges": "Save Changes",
"lastUpdated": "Last updated:",
"impressum": "Legal Notice",
"datenschutz": "Privacy Policy",
"pageUpdated": "Page updated successfully"
},
"maintenance": {
"title": "System Maintenance",
"message": "We're currently performing scheduled maintenance to improve our service. We'll be back online shortly.",
"expectedCompletion": "Expected completion time:",
"checkBackLater": "Please check back later",
"urgentMatters": "For urgent matters, please contact"
}
}