{ "app": { "name": "Docker Watcher", "version": "v0.1" }, "health": { "connected": "connected", "disconnected": "disconnected", "rawError": "Technical details", "retryNow": "Retry now" }, "nav": { "dashboard": "Dashboard", "projects": "Projects", "deploy": "Deploy", "proxies": "Proxies", "events": "Events", "settings": "Settings", "logout": "Log out", "dns": "DNS Records" }, "dashboard": { "title": "Dashboard", "quickDeploy": "Quick Deploy", "totalProjects": "Total Projects", "runningInstances": "Running Instances", "failedInstances": "Failed Instances", "projects": "Projects", "retry": "Retry", "noProjects": "No projects yet.", "addFirst": "Add your first project", "loadFailed": "Failed to load dashboard", "staleContainers": "Stale Containers" }, "projects": { "title": "Projects", "addProject": "Add Project", "cancel": "Cancel", "newProject": "New Project", "name": "Name", "image": "Image", "port": "Port", "registry": "Registry", "created": "Created", "view": "View", "noProjects": "No projects configured yet.", "getStarted": "Click \"Add Project\" to get started.", "createProject": "Create Project", "creating": "Creating...", "healthcheck": "Healthcheck Path", "nameRequired": "Name and image are required.", "loadFailed": "Failed to load projects", "createFailed": "Failed to create project", "browseImages": "Browse Images", "selectImage": "Select an image", "noImages": "No images found", "loadingImages": "Loading images...", "imageLoadFailed": "Failed to load images" }, "projectDetail": { "deleteProject": "Delete Project", "envVars": "Environment Variables", "volumes": "Volume Mounts", "stages": "Stages", "noStages": "No stages configured for this project.", "pattern": "Pattern", "autoDeploy": "auto-deploy", "requiresConfirm": "requires confirm", "instances": "instances", "deployNewVersion": "Deploy new version", "selectTag": "Select tag to deploy", "loadingTags": "Loading tags...", "chooseTag": "Choose a tag...", "enterTag": "Enter image tag (e.g., dev-abc123)", "deploy": "Deploy", "deploying": "Deploying...", "recentDeploys": "Recent Deploys", "noDeployHistory": "No deploy history for this project.", "tag": "Tag", "status": "Status", "started": "Started", "finished": "Finished", "error": "Error", "noInstancesRunning": "No instances running", "deleteConfirmTitle": "Delete Project", "deleteConfirmMessage": "This will permanently delete the project '{name}' and all its stages, instances, and deploy history. This cannot be undone.", "loadFailed": "Failed to load project", "deleteFailed": "Failed to delete project", "deployFailed": "Deploy failed" }, "envEditor": { "title": "Environment Variables", "description": "Manage per-stage environment variable overrides. Stage-level values override project-level defaults.", "stage": "Stage", "projectDefaults": "Project-Level Defaults", "stageOverrides": "Stage Overrides", "key": "Key", "value": "Value", "secret": "Secret", "source": "Source", "actions": "Actions", "overridden": "overridden", "inherited": "inherited", "overridesProject": "overrides project", "stageOnly": "stage only", "edit": "Edit", "change": "Change", "delete": "Delete", "save": "Save", "add": "Add", "adding": "Adding...", "noStages": "No stages configured. Add stages to the project first.", "loadFailed": "Failed to load project", "envAdded": "Environment variable added", "envUpdated": "Environment variable updated", "envDeleted": "Environment variable deleted", "addFailed": "Failed to add env var", "updateFailed": "Failed to update env var", "deleteFailed": "Failed to delete env var", "loadEnvFailed": "Failed to load env vars" }, "volumeEditor": { "title": "Volume Mounts", "description": "Configure volume mounts for containers. Choose a scope to control how volumes are shared between deploys.", "sourceHost": "Source (Host)", "targetContainer": "Target (Container)", "scope": "Scope", "nameColumn": "Name", "namePlaceholder": "e.g. shared-db", "requiresName": "requires name", "noHostPath": "no host path", "tmpfs": "tmpfs (in-memory)", "actions": "Actions", "edit": "Edit", "delete": "Delete", "save": "Save", "add": "Add", "adding": "Adding...", "noVolumes": "No volumes configured yet. Add one above.", "volumeAdded": "Volume added", "volumeUpdated": "Volume updated", "volumeDeleted": "Volume deleted", "loadFailed": "Failed to load volumes", "addFailed": "Failed to add volume", "updateFailed": "Failed to update volume", "deleteFailed": "Failed to delete volume" }, "volumeBrowser": { "title": "Volume Browser", "loadFailed": "Failed to load directory", "empty": "This directory is empty.", "name": "Name", "size": "Size", "modified": "Modified", "downloadAll": "Download volume as ZIP", "downloadFolder": "Download folder as ZIP", "upload": "Upload files", "uploaded": "Uploaded", "files": "file(s)", "uploadFailed": "Failed to upload files", "browse": "Browse", "download": "Download" }, "quickDeploy": { "title": "Quick Deploy", "description": "Deploy a container image with zero configuration. Paste an image URL, review the defaults, and deploy.", "step1": "1. Enter Image URL", "imageUrl": "Image URL", "imageUrlHelp": "Full image URL including tag (e.g., git.example.com/user/app:dev-abc123)", "inspect": "Inspect", "inspecting": "Inspecting...", "step2": "2. Review Configuration", "reviewDesc": "These defaults were detected from the image. Adjust as needed before deploying.", "projectName": "Project Name", "port": "Port", "portHelp": "Container port to expose (1-65535)", "healthCheckPath": "Health Check Path", "healthCheckHelp": "Optional HTTP path for health verification", "stage": "Stage", "development": "Development", "release": "Release", "production": "Production", "stageHelp": "Deployment stage for this image", "subdomainOverride": "Subdomain Override", "subdomainHelp": "Leave empty to use the default subdomain pattern", "envVars": "Environment Variables", "envVarsHelp": "One per line, KEY=VALUE format", "step3": "3. Deploy", "deployDesc": "A new project will be created and the container will be deployed immediately.", "deployBtn": "Deploy", "inspectedSuccess": "Image inspected successfully", "deployedSuccess": "Deployed {name} successfully!", "inspectFailed": "Failed to inspect image", "deployFailed": "Deployment failed", "browseImages": "Browse", "selectImage": "Select an image from a registry", "noImages": "No images found", "loadingImages": "Loading...", "imageLoadFailed": "Failed to load images" }, "settings": { "title": "Settings", "general": "General", "registries": "Registries", "credentials": "Credentials", "authentication": "Authentication", "backup": "Backups", "appearance": "Appearance", "staleThreshold": "Stale threshold (days)", "staleThresholdHelp": "Containers inactive for longer than this will be flagged as stale." }, "settingsGeneral": { "title": "General Settings", "globalConfig": "Global Configuration", "domain": "Domain", "domainHelp": "Base domain for subdomain routing", "serverIp": "Server IP", "serverIpHelp": "Public IP address of the server", "dockerNetwork": "Docker Network", "dockerNetworkHelp": "Docker network for deployed containers", "subdomainPattern": "Subdomain Pattern", "subdomainPatternHelp": "Pattern for auto-generated subdomains", "pollingInterval": "Polling Interval (seconds)", "pollingIntervalHelp": "How often to check registries for new tags (10-86400)", "notificationUrl": "Notification URL", "notificationUrlHelp": "Webhook URL for deploy notifications", "saveSettings": "Save Settings", "saving": "Saving...", "saved": "Settings saved successfully", "saveFailed": "Failed to save settings", "loadFailed": "Failed to load settings", "webhookUrl": "Webhook URL", "webhookDesc": "This secret URL receives image push notifications from your CI pipeline.", "noWebhookUrl": "No webhook URL configured", "copy": "Copy", "copied": "Webhook URL copied to clipboard", "regenerateUrl": "Regenerate URL", "regenerating": "Regenerating...", "regenerated": "Webhook URL regenerated", "regenerateFailed": "Failed to regenerate webhook URL", "regenerateWarning": "Warning: regenerating will invalidate the current URL. Update your CI pipelines.", "sslCertificate": "SSL Certificate", "sslCertificateHelp": "Wildcard certificate from NPM for auto-SSL on proxy hosts", "selectCertificate": "Select Certificate", "noCertificate": "None (no SSL)", "clearCertificate": "Clear", "loadingCertificates": "Loading certificates...", "noCertificatesFound": "No wildcard certificates found in NPM", "dnsConfig": "DNS Configuration", "wildcardDns": "Wildcard DNS is configured", "wildcardDnsHelp": "When enabled, all subdomains resolve to your server via a wildcard DNS rule. Disable to manage DNS records per service.", "dnsProvider": "DNS Provider", "dnsProviderHelp": "Select a DNS provider for automatic record management", "cloudflareApiToken": "Cloudflare API Token", "cloudflareApiTokenHelp": "API token with DNS edit permissions for your zone", "cloudflareApiTokenPlaceholder": "Enter Cloudflare API token", "cloudflareApiTokenConfigured": "API token is configured", "cloudflareZone": "Cloudflare Zone", "cloudflareZoneHelp": "Select the DNS zone to manage records in", "selectZone": "Select Zone", "noZone": "No zone selected", "loadingZones": "Loading zones...", "noZonesFound": "No zones found for this token", "testConnection": "Test Connection", "testingConnection": "Testing...", "connectionSuccess": "Connection successful", "connectionFailed": "Connection failed" }, "settingsRegistries": { "title": "Container Registries", "description": "Manage your container registries for image detection.", "addRegistry": "Add Registry", "editRegistry": "Edit Registry", "addNewRegistry": "Add New Registry", "name": "Name", "nameHelp": "A friendly name for this registry", "url": "URL", "urlHelp": "Registry base URL", "type": "Type", "typeHelp": "Registry type for API compatibility", "token": "Token", "tokenHelpNew": "API token for authentication", "tokenHelpEdit": "Leave empty to keep the existing token", "owner": "Owner", "ownerHelp": "Package owners, comma-separated (e.g., alexei,my-org)", "save": "Save", "saving": "Saving...", "update": "Update", "test": "Test", "testing": "Testing...", "edit": "Edit", "delete": "Delete", "noRegistries": "No registries configured yet.", "addFirst": "Add your first registry", "registryUpdated": "Registry updated", "registryAdded": "Registry added", "registryDeleted": "Registry \"{name}\" deleted", "testSuccess": "Connection to \"{name}\" successful", "saveFailed": "Failed to save registry", "deleteFailed": "Failed to delete registry", "testFailed": "Connection test failed", "loadFailed": "Failed to load registries", "deleteConfirm": "Delete registry \"{name}\"? This cannot be undone." }, "settingsCredentials": { "title": "Credentials", "description": "Manage credentials for Nginx Proxy Manager and registry tokens. All values are encrypted at rest.", "npm": "Nginx Proxy Manager", "npmDesc": "Credentials for managing proxy hosts via NPM API", "configured": "Configured", "npmUrl": "NPM URL", "npmUrlHelp": "Nginx Proxy Manager API URL", "email": "Email", "emailHelp": "NPM admin email", "password": "Password", "passwordHelpNew": "NPM admin password (will be encrypted)", "passwordHelpEdit": "Enter the new password to replace the existing one", "changeCredentials": "Change Credentials", "save": "Save", "saving": "Saving...", "saved": "NPM credentials saved", "saveFailed": "Failed to save NPM credentials", "loadFailed": "Failed to load credentials", "registryTokens": "Registry Tokens", "registryTokensDesc": "Registry authentication tokens are managed per-registry in the", "registriesLink": "Registries", "registryTokensSuffix": "section. Each registry stores its token encrypted in the database." }, "settingsBackup": { "title": "Backup Management", "description": "Manage database backups and configure automatic backup schedules.", "autoBackup": "Automatic Backups", "autoBackupHelp": "Automatically create backups at the configured interval.", "interval": "Backup Interval", "intervalHelp": "How often to create automatic backups.", "intervalHours": "{hours} hours", "retention": "Retention Count", "retentionHelp": "Maximum number of backups to keep. Oldest are deleted first.", "backupNow": "Backup Now", "creatingBackup": "Creating...", "backupCreated": "Backup created successfully", "backupFailed": "Failed to create backup", "backupList": "Backups", "noBackups": "No backups yet. Create one manually or enable automatic backups.", "columnFilename": "Filename", "columnSize": "Size", "columnType": "Type", "columnDate": "Created", "columnActions": "Actions", "download": "Download", "delete": "Delete", "restore": "Restore", "deleteConfirm": "Are you sure you want to delete this backup?", "deleted": "Backup deleted", "deleteFailed": "Failed to delete backup", "restoreConfirm": "Are you sure you want to restore from this backup? This will replace the current database and restart the server. All current data will be lost.", "restoreWarning": "This action cannot be undone!", "restored": "Database restored. The server is restarting...", "restoreFailed": "Failed to restore backup", "typeManual": "Manual", "typeAuto": "Auto", "save": "Save", "saving": "Saving...", "saved": "Backup settings saved", "saveFailed": "Failed to save backup settings" }, "settingsAuth": { "title": "Authentication Settings", "description": "Configure authentication mode and manage users.", "authMode": "Authentication Mode", "local": "Local (username/password)", "oidc": "OIDC (SSO)", "oidcConfig": "OIDC Provider Configuration", "issuerUrl": "Issuer URL", "clientId": "Client ID", "clientSecret": "Client Secret", "redirectUrl": "Redirect URL", "saveSettings": "Save Settings", "saving": "Saving...", "saved": "Settings saved", "saveFailed": "Failed to save", "loadFailed": "Failed to load settings", "localUsers": "Local Users", "username": "Username", "email": "Email", "role": "Role", "created": "Created", "noUsers": "No users found.", "addUser": "Add User", "viewer": "Viewer", "admin": "Admin", "userCreated": "User created", "userDeleted": "User deleted", "createFailed": "Failed to create user", "deleteFailed": "Failed to delete user", "deleteConfirm": "Are you sure you want to delete this user?", "usernameRequired": "Username and password are required", "password": "Password" }, "login": { "title": "Docker Watcher", "subtitle": "Sign in to your account", "username": "Username", "password": "Password", "signIn": "Sign in", "signingIn": "Signing in...", "or": "or", "ssoButton": "Sign in with SSO (OIDC)", "loginFailed": "Login failed", "networkError": "Network error" }, "proxies": { "title": "Proxy Manager", "create": "Create Proxy", "standalone": "Standalone Proxies", "managed": "Managed Proxies", "noProxies": "No proxies found", "noProxiesDesc": "Create a standalone proxy or deploy a project with proxy enabled.", "filter": { "search": "Search by domain or destination...", "health": "Health", "type": "Type", "all": "All", "clear": "Clear filters" }, "health": { "healthy": "Healthy", "unhealthy": "Unhealthy", "unknown": "Unknown" }, "lastChecked": "Last checked" }, "common": { "cancel": "Cancel", "confirm": "Confirm", "delete": "Delete", "edit": "Edit", "save": "Save", "retry": "Retry", "loading": "Loading...", "noData": "No data", "project": "Project", "back": "Back", "actions": "Actions", "stop": "Stop", "start": "Start", "restart": "Restart", "remove": "Remove", "instance": "instance", "instances": "instances" }, "instance": { "stopConfirm": "This will stop the running container. The instance can be started again later.", "restartConfirm": "This will restart the container, causing brief downtime.", "removeConfirm": "This will permanently remove the container and its proxy configuration. This cannot be undone.", "actionFailed": "Action failed" }, "empty": { "noProjects": "No projects yet", "noProjectsDesc": "Get started by creating your first project or use Quick Deploy.", "createProject": "Create Project", "noInstances": "No instances", "noInstancesDesc": "Deploy a new version to see instances here.", "noDeploys": "No deploy history", "noDeploysDesc": "Deploy history will appear here after your first deployment.", "noRegistries": "No registries", "noRegistriesDesc": "Add a container registry to enable image detection.", "noVolumes": "No volumes", "noVolumesDesc": "Configure volume mounts for persistent data.", "noUsers": "No users", "noUsersDesc": "Add local users to manage access." }, "validation": { "required": "{field} is required", "invalidUrl": "Invalid URL format", "invalidDomain": "Invalid domain format", "invalidIp": "Invalid IP format", "invalidEmail": "Invalid email format", "invalidPort": "Port must be between 1 and 65535", "invalidPollingInterval": "Polling interval must be between 10 and 86400 seconds", "invalidProjectName": "Only lowercase letters, numbers, and hyphens allowed", "requiredWhenUpdating": "{field} is required when updating credentials", "requiredForNew": "{field} is required for new registries" }, "confirm": { "stopInstance": "Stop Instance", "startInstance": "Start Instance", "restartInstance": "Restart Instance", "removeInstance": "Remove Instance" }, "theme": { "light": "Light", "dark": "Dark", "system": "System" }, "entityPicker": { "search": "Search...", "noResults": "No results found" }, "stale": { "title": "Stale Containers", "noStale": "No stale containers", "noStaleDesc": "All containers are healthy and running.", "cleanup": "Clean up", "cleanupAll": "Clean up all", "confirmCleanup": "This will stop and remove the container. Continue?", "confirmBulkCleanup": "This will stop and remove all stale containers. Continue?", "daysStale": "days stale", "lastAlive": "Last alive", "count": "Stale", "cleanedUp": "Container cleaned up", "bulkCleanedUp": "{count} containers cleaned up", "cleanupFailed": "Cleanup failed", "loadFailed": "Failed to load stale containers" }, "proxies": { "title": "Proxies", "create": "Create Proxy", "noProxies": "No proxies configured yet.", "noProxiesDesc": "Create a standalone proxy or deploy a project to see proxies here.", "standalone": "Standalone Proxies", "managed": "Managed", "lastChecked": "Last checked", "health": { "healthy": "Healthy", "unhealthy": "Unhealthy", "unknown": "Unknown" }, "filter": { "search": "Search proxies...", "health": "Health", "type": "Type", "all": "All", "clear": "Clear filters" }, "form": { "title": "Create Proxy", "editTitle": "Edit Proxy", "destination": "Destination URL / IP", "port": "Port", "domain": "Domain", "domainHelp": "The public domain for this proxy.", "validate": "Validate", "validating": "Validating...", "create": "Create Proxy", "save": "Save Changes", "cancel": "Cancel", "delete": "Delete", "deleteConfirm": "Delete this proxy? This cannot be undone." }, "validation": { "title": "Destination Validation", "syntax": "URL syntax", "dns": "DNS resolution", "tcp": "TCP connection", "http": "HTTP response", "checking": "Checking...", "skipped": "Skipped" } }, "events": { "title": "Event Log", "noEvents": "No events found", "noEventsDesc": "Events will appear here as they occur.", "loadMore": "Load more", "newEvents": "new events", "filter": { "severity": "Severity", "source": "Source", "dateRange": "Date range", "search": "Search events...", "lastHour": "Last hour", "last24h": "Last 24 hours", "last7d": "Last 7 days", "allTime": "All time", "clear": "Clear filters" }, "severity": { "info": "Info", "warn": "Warning", "error": "Error" }, "source": { "deploy": "Deploy", "container": "Container", "proxy": "Proxy", "system": "System" }, "metadata": "Details" }, "stats": { "cpu": "CPU", "mem": "MEM", "unavailable": "Stats unavailable" }, "systemHealth": { "title": "System Health", "containers": "Containers", "proxies": "Proxies", "recentErrors": "Recent Errors" }, "dns": { "title": "DNS Records", "description": "View and manage DNS records created by Docker Watcher.", "wildcardActive": "Wildcard DNS Mode Active", "wildcardActiveDesc": "DNS records are managed externally via wildcard DNS. Disable wildcard DNS in Settings to manage records individually.", "refresh": "Refresh", "syncNow": "Sync Now", "syncing": "Syncing...", "syncComplete": "Sync complete: {created} created, {deleted} deleted, {synced} already synced", "syncFailed": "DNS sync failed", "searchPlaceholder": "Search by FQDN...", "allConsumers": "All consumers", "managed": "Managed (instances)", "standalone": "Standalone proxies", "orphaned": "Orphaned", "allStatuses": "All statuses", "statusSynced": "Synced", "statusMissing": "Missing", "statusOrphaned": "Orphaned", "columnFqdn": "FQDN", "columnType": "Type", "columnValue": "Value", "columnConsumer": "Consumer", "columnStatus": "Status", "columnActions": "Actions", "noConsumer": "No consumer", "noRecords": "No DNS records found. Records will appear here when services are deployed.", "noMatchingRecords": "No records match the current filters.", "deleteRecord": "Delete record", "recordDeleted": "DNS record {fqdn} deleted", "deleteFailed": "Failed to delete DNS record", "loadFailed": "Failed to load DNS records", "totalRecords": "Total: {count}", "syncedCount": "Synced: {count}", "missingCount": "Missing: {count}", "orphanedCount": "Orphaned: {count}" }, "language": { "en": "English", "ru": "Russian" } }