feat: add complete translation support for backup admin page
- Add comprehensive backup translation keys to en.json and de.json - Update all backup components to use i18next translations: - BackupManagement.jsx: main page with tab navigation - BackupDashboard.jsx: health status and statistics - BackupConfiguration.jsx: settings and destination configuration - BackupHistory.jsx: backup history table and details - RestoreWizard.jsx: multi-step restore process - Replace all hardcoded strings with translation keys - Support dynamic values with interpolation - Fix Drone CI/CD github-release step: - Write release.json to /tmp to avoid permission issues - Use quoted heredoc to prevent shell interpretation errors - Replace placeholders with actual tag values using sed 🤖 Generated with Claude Code Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -953,6 +953,350 @@
|
||||
"datenschutz": "Privacy Policy",
|
||||
"pageUpdated": "Page updated successfully"
|
||||
},
|
||||
"backup": {
|
||||
"title": "Backup Management",
|
||||
"subtitle": "Manage system backups, configure automated backups, and restore from previous backups.",
|
||||
"tabs": {
|
||||
"dashboard": "Dashboard",
|
||||
"configuration": "Configuration",
|
||||
"history": "Backup History",
|
||||
"restore": "Restore"
|
||||
},
|
||||
"status": {
|
||||
"inProgress": "Backup in progress...",
|
||||
"lastBackup": "Last backup",
|
||||
"noBackups": "No backups found",
|
||||
"nextBackup": "Next backup",
|
||||
"notScheduled": "Not scheduled",
|
||||
"enabled": "Enabled",
|
||||
"disabled": "Disabled"
|
||||
},
|
||||
"actions": {
|
||||
"runBackupNow": "Run Backup Now",
|
||||
"starting": "Starting...",
|
||||
"running": "Running...",
|
||||
"testConnection": "Test Connection",
|
||||
"save": "Save Configuration",
|
||||
"delete": "Delete",
|
||||
"view": "View Details",
|
||||
"download": "Download",
|
||||
"refresh": "Refresh"
|
||||
},
|
||||
"dashboard": {
|
||||
"backupHealth": "Backup Health",
|
||||
"healthStatus": {
|
||||
"excellent": "Excellent",
|
||||
"good": "Good",
|
||||
"warning": "Warning",
|
||||
"critical": "Critical"
|
||||
},
|
||||
"healthMessages": {
|
||||
"noBackups": "No backups found",
|
||||
"failed": "Last backup failed",
|
||||
"upToDate": "Backup is up to date",
|
||||
"recent": "Backup is recent",
|
||||
"old": "Backup is getting old",
|
||||
"outdated": "Backup is outdated"
|
||||
},
|
||||
"stats": {
|
||||
"totalBackups": "Total Backups",
|
||||
"backupSize": "Backup Size",
|
||||
"lastDuration": "Last Duration",
|
||||
"backupStatus": "Backup Status",
|
||||
"last": "Last",
|
||||
"files": "files",
|
||||
"minutes": "{{count}}m",
|
||||
"active": "Active",
|
||||
"inactive": "Inactive"
|
||||
},
|
||||
"recentActivity": "Recent Backup Activity",
|
||||
"backupCoverage": "Backup Coverage",
|
||||
"notConfigured": {
|
||||
"title": "Backup Not Configured",
|
||||
"message": "Please configure backup settings in the Configuration tab before running backups."
|
||||
},
|
||||
"coverage": {
|
||||
"database": "Database",
|
||||
"photos": "Photos",
|
||||
"archives": "Archives",
|
||||
"systemFiles": "System Files",
|
||||
"included": "Included",
|
||||
"excluded": "Excluded",
|
||||
"optional": "Optional"
|
||||
},
|
||||
"storageDestination": "Storage Destination",
|
||||
"nextScheduledBackup": "Next Scheduled Backup",
|
||||
"backupType": "{{type}} backup",
|
||||
"noBackupsYet": "No backups yet"
|
||||
},
|
||||
"configuration": {
|
||||
"enableBackup": "Enable Automated Backups",
|
||||
"destinationType": "Backup Destination",
|
||||
"destinationTypes": {
|
||||
"local": {
|
||||
"name": "Local Storage",
|
||||
"description": "Store backups on the local server filesystem"
|
||||
},
|
||||
"rsync": {
|
||||
"name": "Remote Server (Rsync)",
|
||||
"description": "Sync backups to a remote server via SSH/Rsync"
|
||||
},
|
||||
"s3": {
|
||||
"name": "S3 Compatible Storage",
|
||||
"description": "Store backups in Amazon S3 or compatible object storage"
|
||||
}
|
||||
},
|
||||
"fields": {
|
||||
"destinationPath": "Destination Path",
|
||||
"destinationPathHelp": "Local directory path for storing backups",
|
||||
"rsyncHost": "Remote Host",
|
||||
"rsyncHostHelp": "SSH hostname or IP address",
|
||||
"rsyncUser": "SSH User",
|
||||
"rsyncUserHelp": "Username for SSH connection",
|
||||
"rsyncPath": "Remote Path",
|
||||
"rsyncPathHelp": "Directory path on remote server",
|
||||
"rsyncSshKey": "SSH Private Key",
|
||||
"rsyncSshKeyHelp": "SSH private key for authentication (optional)",
|
||||
"s3Endpoint": "S3 Endpoint",
|
||||
"s3EndpointHelp": "S3 API endpoint (e.g., s3.amazonaws.com)",
|
||||
"s3Bucket": "Bucket Name",
|
||||
"s3BucketHelp": "S3 bucket for storing backups",
|
||||
"s3AccessKey": "Access Key ID",
|
||||
"s3AccessKeyHelp": "AWS/S3 access key ID",
|
||||
"s3SecretKey": "Secret Access Key",
|
||||
"s3SecretKeyHelp": "AWS/S3 secret access key",
|
||||
"s3Region": "Region",
|
||||
"s3RegionHelp": "S3 region (e.g., us-east-1)"
|
||||
},
|
||||
"schedule": {
|
||||
"title": "Backup Schedule",
|
||||
"scheduleType": "Schedule Type",
|
||||
"scheduleOptions": {
|
||||
"hourly": "Every hour",
|
||||
"daily": "Daily",
|
||||
"weekly": "Weekly",
|
||||
"custom": "Custom cron expression"
|
||||
},
|
||||
"customCron": "Cron Expression",
|
||||
"customCronHelp": "Enter a valid cron expression (e.g., 0 3 * * *)",
|
||||
"retention": "Retention Period",
|
||||
"retentionDays": "Keep backups for",
|
||||
"retentionHelp": "days (older backups will be automatically deleted)"
|
||||
},
|
||||
"whatToBackup": {
|
||||
"title": "What to Backup",
|
||||
"database": "Database",
|
||||
"databaseHelp": "All event data, settings, and configurations",
|
||||
"photos": "Photos",
|
||||
"photosHelp": "All uploaded photos in active galleries",
|
||||
"archives": "Archives",
|
||||
"archivesHelp": "Archived event ZIP files",
|
||||
"thumbnails": "Thumbnails",
|
||||
"thumbnailsHelp": "Generated thumbnail images (can be recreated)",
|
||||
"tempFiles": "Temporary Files",
|
||||
"tempFilesHelp": "Temporary upload and processing files"
|
||||
},
|
||||
"advancedOptions": {
|
||||
"title": "Advanced Options",
|
||||
"compression": "Enable Compression",
|
||||
"compressionHelp": "Compress backup files to save storage space",
|
||||
"encryption": "Enable Encryption",
|
||||
"encryptionHelp": "Encrypt backups for additional security",
|
||||
"encryptionPassphrase": "Encryption Passphrase",
|
||||
"encryptionPassphraseHelp": "Strong passphrase for backup encryption",
|
||||
"confirmPassphrase": "Confirm Passphrase",
|
||||
"passphrasesDontMatch": "Passphrases don't match"
|
||||
},
|
||||
"validation": {
|
||||
"requiredFields": "Please fill in all required fields",
|
||||
"invalidCron": "Invalid cron expression",
|
||||
"connectionTestFailed": "Connection test failed",
|
||||
"connectionTestSuccess": "Connection test successful!"
|
||||
},
|
||||
"testingConnection": "Testing connection...",
|
||||
"saveSettings": "Save Configuration",
|
||||
"savingSettings": "Saving..."
|
||||
},
|
||||
"history": {
|
||||
"searchPlaceholder": "Search backups...",
|
||||
"allStatus": "All Status",
|
||||
"status": {
|
||||
"completed": "Completed",
|
||||
"failed": "Failed",
|
||||
"running": "Running",
|
||||
"partial": "Partial"
|
||||
},
|
||||
"deleteConfirm": "Are you sure you want to delete this backup from {{date}}?",
|
||||
"noBackups": "No backups found",
|
||||
"tableHeaders": {
|
||||
"date": "Date",
|
||||
"type": "Type",
|
||||
"status": "Status",
|
||||
"size": "Size",
|
||||
"duration": "Duration",
|
||||
"actions": "Actions"
|
||||
},
|
||||
"details": "Details",
|
||||
"statistics": "Statistics",
|
||||
"errors": "Errors",
|
||||
"backupDetails": {
|
||||
"backupId": "Backup ID",
|
||||
"startTime": "Start Time",
|
||||
"endTime": "End Time",
|
||||
"destination": "Destination",
|
||||
"filesProcessed": "Files Processed",
|
||||
"totalSize": "Total Size",
|
||||
"compressionRatio": "Compression Ratio",
|
||||
"errorLog": "Error Log",
|
||||
"noErrors": "No errors occurred"
|
||||
},
|
||||
"pagination": {
|
||||
"showing": "Showing {{from}}-{{to}} of {{total}} backups",
|
||||
"previous": "Previous",
|
||||
"next": "Next"
|
||||
}
|
||||
},
|
||||
"restore": {
|
||||
"steps": {
|
||||
"selectSource": "Select Source",
|
||||
"chooseBackup": "Choose Backup",
|
||||
"restoreOptions": "Restore Options",
|
||||
"reviewConfirm": "Review & Confirm",
|
||||
"progress": "Restore Progress"
|
||||
},
|
||||
"source": {
|
||||
"title": "Select Backup Source",
|
||||
"subtitle": "Choose where to restore the backup from",
|
||||
"local": {
|
||||
"name": "Local Backup",
|
||||
"description": "Restore from local filesystem"
|
||||
},
|
||||
"s3": {
|
||||
"name": "S3 Storage",
|
||||
"description": "Restore from S3 bucket"
|
||||
},
|
||||
"upload": {
|
||||
"name": "Upload Backup",
|
||||
"description": "Upload a backup file",
|
||||
"comingSoon": "Upload functionality coming soon"
|
||||
},
|
||||
"configuration": {
|
||||
"s3": "S3 Configuration",
|
||||
"endpoint": "S3 Endpoint URL",
|
||||
"bucket": "Bucket Name",
|
||||
"accessKey": "Access Key ID",
|
||||
"secretKey": "Secret Access Key"
|
||||
}
|
||||
},
|
||||
"backup": {
|
||||
"title": "Choose Backup to Restore",
|
||||
"subtitle": "Select from available backups",
|
||||
"noBackupsFound": "No backups found in selected source",
|
||||
"encrypted": "Encrypted Backup",
|
||||
"encryptedMessage": "You'll need to provide the encryption passphrase to restore this backup.",
|
||||
"enterPassphrase": "Enter encryption passphrase",
|
||||
"at": "at"
|
||||
},
|
||||
"options": {
|
||||
"title": "Restore Options",
|
||||
"subtitle": "Choose what to restore",
|
||||
"types": {
|
||||
"full": {
|
||||
"name": "Full Restore",
|
||||
"description": "Restore everything including database, photos, and archives",
|
||||
"warning": "This will replace all current data"
|
||||
},
|
||||
"database": {
|
||||
"name": "Database Only",
|
||||
"description": "Restore only the database (settings, events, users)",
|
||||
"warning": "Current database will be replaced"
|
||||
},
|
||||
"files": {
|
||||
"name": "Files Only",
|
||||
"description": "Restore only photos and archives",
|
||||
"warning": "Existing files may be overwritten"
|
||||
},
|
||||
"selective": {
|
||||
"name": "Selective Restore",
|
||||
"description": "Choose specific items to restore",
|
||||
"warning": "Only selected items will be restored"
|
||||
}
|
||||
},
|
||||
"additionalOptions": {
|
||||
"title": "Additional Options",
|
||||
"skipPreBackup": "Skip Pre-Restore Backup",
|
||||
"skipPreBackupHelp": "By default, a backup is created before restore. Check this to skip it.",
|
||||
"force": "Force Restore",
|
||||
"forceHelp": "Override safety checks and warnings (use with caution)"
|
||||
}
|
||||
},
|
||||
"confirmation": {
|
||||
"title": "Review & Confirm",
|
||||
"subtitle": "Please review your restore configuration",
|
||||
"validation": {
|
||||
"passed": "Validation Passed",
|
||||
"failed": "Validation Failed",
|
||||
"checking": "Validating restore configuration..."
|
||||
},
|
||||
"spaceCheck": {
|
||||
"title": "Storage Space",
|
||||
"required": "Required",
|
||||
"available": "Available",
|
||||
"insufficient": "Insufficient storage space"
|
||||
},
|
||||
"summary": {
|
||||
"title": "Restore Summary",
|
||||
"source": "Source",
|
||||
"backupDate": "Backup Date",
|
||||
"restoreType": "Restore Type",
|
||||
"preBackup": "Pre-backup",
|
||||
"enabled": "Enabled",
|
||||
"skipped": "Skipped"
|
||||
},
|
||||
"warning": {
|
||||
"title": "Important Notice",
|
||||
"message": "This restore operation will replace existing data. Make sure you have a current backup before proceeding. This action cannot be undone."
|
||||
}
|
||||
},
|
||||
"progress": {
|
||||
"title": "Restore Progress",
|
||||
"inProgress": "Restore in progress...",
|
||||
"completed": "Restore completed",
|
||||
"overallProgress": "Overall Progress",
|
||||
"current": "Current",
|
||||
"statusDetails": "Status Details",
|
||||
"restoreLogs": "Restore Logs",
|
||||
"steps": {
|
||||
"completed": "Completed",
|
||||
"running": "Running",
|
||||
"failed": "Failed",
|
||||
"pending": "Pending"
|
||||
},
|
||||
"success": {
|
||||
"title": "Restore Completed Successfully",
|
||||
"message": "Your data has been restored. Please verify everything is working correctly."
|
||||
}
|
||||
},
|
||||
"actions": {
|
||||
"back": "Back",
|
||||
"next": "Next",
|
||||
"startRestore": "Start Restore",
|
||||
"starting": "Starting...",
|
||||
"validating": "Validating...",
|
||||
"startNewRestore": "Start New Restore"
|
||||
}
|
||||
},
|
||||
"messages": {
|
||||
"backupStarted": "Backup started successfully",
|
||||
"backupFailed": "Failed to start backup",
|
||||
"configUpdated": "Backup configuration updated",
|
||||
"configUpdateFailed": "Failed to update configuration",
|
||||
"backupDeleted": "Backup deleted successfully",
|
||||
"deleteFailed": "Failed to delete backup",
|
||||
"testEmailSent": "Test connection successful!",
|
||||
"testEmailFailed": "Connection test failed"
|
||||
}
|
||||
},
|
||||
"maintenance": {
|
||||
"title": "System Maintenance",
|
||||
"message": "We're currently performing scheduled maintenance to improve our service. We'll be back online shortly.",
|
||||
|
||||
Reference in New Issue
Block a user