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
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:
@@ -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"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user