Files
zpan/src/i18n/locales/en.json
T
Jasper Van 8513b18a8e feat(oauth): expose workspace authorization catalog (#551)
* feat(oauth): expose workspace authorization catalog

* fix(oauth): verify catalog tokens against canonical audience

* fix(auth): normalize Workers preview requests

* Revert "fix(auth): normalize Workers preview requests"

This reverts commit 02009f098f.

* fix(oauth): refresh configured resource scopes
2026-08-02 21:00:20 -04:00

2319 lines
130 KiB
JSON
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"auth.signIn": "Sign In",
"auth.signUp": "Sign Up",
"auth.signingIn": "Signing in...",
"auth.creatingAccount": "Creating account...",
"auth.signInSubtitle": "Sign in to your account",
"auth.signUpSubtitle": "Create your account",
"auth.signInFailed": "Sign in failed",
"auth.signUpFailed": "Sign up failed",
"auth.noAccount": "Don't have an account?",
"auth.hasAccount": "Already have an account?",
"auth.signOut": "Sign out",
"auth.email": "Email",
"auth.password": "Password",
"auth.name": "Name",
"auth.username": "Username",
"auth.usernameHint": "3-30 characters, letters, numbers, and underscores only",
"auth.emailOrUsername": "Email or Username",
"auth.emailOrUsernamePlaceholder": "Enter email or username",
"auth.inviteCode": "Invite Code",
"auth.orDivider": "or",
"auth.signInWithEmail": "Sign in with email",
"auth.signUpWithEmail": "Sign up with email",
"auth.continueWith": "Continue with {{provider}}",
"auth.lastUsed": "Last used",
"auth.registrationClosed": "Registration is currently closed",
"auth.invalidInvitation": "This invitation is no longer valid",
"auth.invitationExpired": "The invitation link has expired. Ask the administrator to send a new one.",
"auth.invitationUsed": "This invitation has already been used.",
"auth.invitationRevoked": "This invitation has been revoked.",
"auth.invitationMissing": "A valid invitation is required to create an account on this site.",
"auth.invitationEmailLocked": "This invitation is bound to {{email}}.",
"auth.captchaRequired": "Complete the captcha to continue.",
"auth.forgotPassword": "Forgot password?",
"auth.forgotPasswordSubtitle": "Enter your email and we'll send you a reset link.",
"auth.sendResetLink": "Send reset link",
"auth.sending": "Sending...",
"auth.resetLinkSent": "If an account exists for that email, a reset link is on its way.",
"auth.backToSignIn": "Back to sign in",
"auth.resetPasswordTitle": "Reset password",
"auth.resetPasswordSubtitle": "Choose a new password for your account.",
"auth.newPassword": "New password",
"auth.confirmPassword": "Confirm password",
"auth.passwordsDoNotMatch": "Passwords do not match.",
"auth.resetPassword": "Reset password",
"auth.resetting": "Resetting...",
"auth.resetSuccess": "Password reset. You can now sign in.",
"auth.resetFailed": "Could not reset password. The link may have expired.",
"auth.resetTokenMissing": "This reset link is invalid or has expired.",
"auth.verifyEmailTitle": "Check your email",
"auth.verifyEmailSent": "We sent a verification link to {{email}}. Open it to finish creating your account.",
"auth.emailNotVerified": "Your email is not verified. We sent a new verification link.",
"nav.main": "Main",
"nav.files": "My Files",
"nav.shares": "Shares",
"nav.photos": "Photos",
"nav.videos": "Videos",
"nav.music": "Music",
"nav.documents": "Documents",
"nav.trash": "Trash",
"nav.downloads": "Remote Download",
"nav.tasks": "Background Tasks",
"nav.imageHost": "Image Host",
"nav.storage": "Storage",
"nav.profile": "Profile",
"nav.settings": "Settings",
"nav.adminPanel": "Admin Panel",
"nav.teams": "Teams",
"files.title": "Files",
"files.placeholder": "File manager will be implemented here.",
"files.emptyState": "Drop files here or create a folder to get started.",
"files.newFolder": "New Folder",
"files.rename": "Rename",
"files.download": "Download",
"files.moveTo": "Move to",
"files.copy": "Copy",
"files.transferToSpace": "Copy/Move to space",
"files.transferTitle": "Transfer \"{{name}}\" to another space",
"files.transferModeLabel": "Action",
"files.transferModeCopy": "Copy — keep the original here",
"files.transferModeMove": "Move — remove from this space",
"files.transferSpaceLabel": "Target space",
"files.transferSpacePlaceholder": "Choose a space",
"files.transferFolderLabel": "Target folder",
"files.transferConfirm": "Transfer",
"files.transferCopyHint": "A copy will be created in the target space and count toward its quota. The two copies stay independent.",
"files.transferMoveHint": "The original will be removed from this space and its quota freed after a successful copy.",
"files.transferSuccessCopy": "Copied to the target space",
"files.transferSuccessMove": "Moved to the target space",
"files.transferSkipped": "{{count}} file(s) could not be transferred",
"files.transferQuotaExceeded": "The target space does not have enough storage",
"files.compress": "Compress",
"files.extract": "Extract",
"files.moveToTrash": "Move to Trash",
"files.open": "Open",
"files.uploading": "Uploading {{name}}...",
"files.uploadSuccess": "{{name}} uploaded",
"files.uploadFailed": "Failed to upload {{name}}",
"files.colName": "Name",
"files.colSize": "Size",
"files.colModified": "Modified",
"files.searchPlaceholder": "Search files...",
"files.upload": "Upload",
"files.uploadFolder": "Upload Folder",
"files.preview": "Preview",
"files.folderNamePlaceholder": "Folder name",
"files.folderCreated": "Folder created",
"files.renameSuccess": "Renamed successfully",
"files.trashSuccess": "Moved to trash",
"files.trashConfirmTitle": "Move to Trash",
"files.trashConfirmDescription": "Move {{count}} item(s) to trash?",
"files.moveSuccess": "Moved successfully",
"files.moveHere": "Move Here",
"files.copySuccess": "Copied successfully",
"files.noFolders": "No folders",
"files.selectedCount": "{{count}} selected",
"files.dropToUpload": "Drop files to upload",
"files.conflictTitle": "Name already in use",
"files.conflictFileMessage": "A file named \"{{name}}\" already exists in this location.",
"files.conflictFolderMessage": "A folder named \"{{name}}\" already exists in this location.",
"files.conflictKeepBoth": "Keep Both",
"files.conflictReplace": "Replace",
"files.conflictReplaceHint": "The existing file will be moved to Trash.",
"files.conflictApplyToAll": "Apply to all remaining items",
"files.operationProgress": "{{completed}} / {{total}} completed · {{name}}",
"files.operationCanceling": "Canceling...",
"files.operationCancelled": "Canceled after {{completed}} / {{total}} item(s)",
"files.operationFailedSummary": "{{failed}} / {{total}} item(s) failed",
"files.operationFailuresTitle": "{{count}} failed item(s)",
"files.uploadBatchCancelled": "{{count}} remaining upload(s) cancelled",
"tasks.title": "Tasks",
"tasks.count": "{{count}} tasks",
"tasks.empty": "No background tasks",
"tasks.created": "Background task created",
"tasks.viewTasks": "View tasks",
"tasks.cancel": "Cancel task",
"tasks.retry": "Retry task",
"tasks.cancelSuccess": "Task canceled",
"tasks.retrySuccess": "Task retried",
"tasks.filter.active": "Active",
"tasks.filter.completed": "Completed",
"tasks.filter.failed": "Failed",
"tasks.status.queued": "Queued",
"tasks.status.running": "Running",
"tasks.status.completed": "Completed",
"tasks.status.failed": "Failed",
"tasks.status.canceled": "Canceled",
"tasks.type.archiveCompress": "Compress archive",
"tasks.type.archiveExtract": "Extract archive",
"tasks.colTask": "Task",
"tasks.colStatus": "Status",
"tasks.colProgress": "Progress",
"tasks.colCurrentFile": "Current file",
"tasks.colCreated": "Created",
"tasks.colFinished": "Finished",
"tasks.colResult": "Result",
"tasks.result.outputBytes": "{{bytes}} bytes output",
"downloads.title": "Remote Download",
"downloads.sourceType": "Source",
"downloads.sourceTypes.http": "HTTP URL",
"downloads.sourceTypes.magnet": "Magnet",
"downloads.sourceTypes.torrentUrl": "Torrent URL",
"downloads.uri": "Download link",
"downloads.uriPlaceholder": "https://example.com/file.zip or magnet:...",
"downloads.targetFolder": "Target folder",
"downloads.targetFolderRoot": "Root",
"downloads.name": "File name",
"downloads.namePlaceholder": "Optional",
"downloads.category": "Category",
"downloads.categoryPlaceholder": "Movies, docs, backups",
"downloads.tags": "Tags",
"downloads.tagsPlaceholder": "Comma separated, e.g. 4K, private",
"downloads.filters": "Filter download tasks",
"downloads.filterCategory": "Filter by category",
"downloads.filterTag": "Filter by tag",
"downloads.selectedCount": "{{count}} selected",
"downloads.selectAll": "Select all download tasks",
"downloads.selectTask": "Select download task",
"downloads.create": "Create",
"downloads.createTitle": "New remote download",
"downloads.start": "Start download",
"downloads.createSuccess": "Download task created",
"downloads.cancelSuccess": "Download task canceled",
"downloads.actionSuccess": "Task action submitted",
"downloads.cancel": "Cancel",
"downloads.resizePanel": "Resize download list and detail panel",
"downloads.empty": "No remote download tasks",
"downloads.unknown": "Unknown",
"downloads.billingPaused": "Paused until credits recover",
"downloads.table.source": "Source",
"downloads.table.category": "Category",
"downloads.table.tags": "Tags",
"downloads.table.status": "Status",
"downloads.table.progress": "Progress",
"downloads.table.size": "Size",
"downloads.table.speed": "Speed",
"downloads.table.peers": "Seeds/Peers",
"downloads.table.eta": "ETA",
"downloads.status.queued": "Queued",
"downloads.status.assigned": "Assigned",
"downloads.status.downloading": "Downloading",
"downloads.status.suspended": "Suspended",
"downloads.status.pausing": "Pausing",
"downloads.status.paused": "Paused",
"downloads.status.interrupted": "Interrupted",
"downloads.status.uploading": "Uploading",
"downloads.status.canceling": "Canceling",
"downloads.status.completed": "Completed",
"downloads.status.seeding": "Seeding",
"downloads.status.failed": "Failed",
"downloads.status.canceled": "Canceled",
"downloads.statusFilter.all": "All",
"downloads.actions.pause": "Pause",
"downloads.actions.resume": "Resume",
"downloads.actions.cancel": "Cancel",
"downloads.actions.retry": "Retry",
"downloads.actions.restart": "Restart",
"downloads.actions.delete": "Delete",
"downloads.actions.none": "No available actions",
"downloads.confirm.cancelTitle": "Cancel download tasks?",
"downloads.confirm.cancelDescription": "This will cancel {{count}} download tasks. Downloaders will stop them on the next poll.",
"downloads.confirm.deleteTitle": "Delete download tasks?",
"downloads.confirm.deleteDescription": "This will delete {{count}} download task records. This cannot be undone.",
"downloads.phase.metadata": "Metadata",
"downloads.phase.downloading": "Downloading",
"downloads.phase.uploading": "Uploading",
"downloads.phase.seeding": "Seeding",
"downloads.phase.completed": "Completed",
"downloads.phase.error": "Error",
"downloads.detail.downloadSpeed": "Download speed",
"downloads.detail.uploadSpeed": "Upload speed",
"downloads.detail.connections": "Connections",
"downloads.detail.eta": "ETA",
"downloads.detail.progress": "Progress",
"downloads.detail.tabs.overview": "Overview",
"downloads.detail.tabs.trackers": "Trackers",
"downloads.detail.tabs.peers": "Peers",
"downloads.detail.tabs.files": "Files",
"downloads.detail.tabs.events": "Events",
"downloads.detail.noSelection": "Select a download task to inspect it",
"downloads.detail.target": "Target folder",
"downloads.detail.category": "Category",
"downloads.detail.tags": "Tags",
"downloads.detail.engine": "Engine",
"downloads.detail.phase": "Phase",
"downloads.detail.engineState": "Engine state",
"downloads.detail.sourceType": "Source type",
"downloads.detail.source": "Source",
"downloads.detail.size": "Size",
"downloads.detail.torrentName": "Torrent name",
"downloads.detail.createdAt": "Created",
"downloads.detail.startedAt": "Started",
"downloads.detail.finishedAt": "Finished",
"downloads.detail.billing": "Billing",
"downloads.detail.bt": "BT details",
"downloads.detail.infoHash": "Info hash",
"downloads.detail.seeders": "Seeders",
"downloads.detail.leechers": "Leechers",
"downloads.detail.uploaded": "Uploaded",
"downloads.detail.downloaded": "Downloaded",
"downloads.detail.storageUploadSpeed": "Drive upload speed",
"downloads.detail.storageUploaded": "Uploaded to drive",
"downloads.detail.peerUploadSpeed": "Peer upload speed",
"downloads.detail.peerUploaded": "Peer uploaded",
"downloads.detail.trackers": "Trackers",
"downloads.detail.noTrackers": "No tracker data yet",
"downloads.detail.trackerUrl": "Tracker",
"downloads.detail.trackerStatus": "Status",
"downloads.detail.statusMessage": "Status message",
"downloads.detail.peers": "Peers",
"downloads.detail.noPeers": "No peer data yet",
"downloads.detail.peerAddress": "Address",
"downloads.detail.peerClient": "Client",
"downloads.detail.files": "Files",
"downloads.detail.noFiles": "No file data yet",
"downloads.detail.filePath": "Path",
"downloads.detail.fileStatus": "Status",
"downloads.detail.selected": "Selected",
"downloads.detail.skipped": "Skipped",
"downloads.detail.errorMessage": "Error",
"downloads.detail.eventsLoading": "Loading events...",
"downloads.detail.noEvents": "No events yet",
"downloads.events.download_task_created": "Task created",
"downloads.events.download_task_assigned": "Assigned to downloader",
"downloads.events.download_task_queued": "Queued",
"downloads.events.download_task_started": "Download started",
"downloads.events.download_task_ingesting": "Ingesting",
"downloads.events.download_task_completed": "Task completed",
"downloads.events.download_task_failed": "Task failed",
"downloads.events.download_task_canceled": "Task canceled",
"downloads.events.download_task_suspended": "Task suspended",
"downloads.events.download_task_paused": "Task paused",
"downloads.events.download_task_pause_requested": "Pause requested",
"downloads.events.download_task_resume_requested": "Resume requested",
"downloads.events.download_task_cancel_requested": "Cancel requested",
"downloads.events.download_task_retry_requested": "Retry requested",
"downloads.events.download_task_restart_requested": "Restart requested",
"downloads.events.download_task_deleted": "Task deleted",
"downloads.events.download_task_error": "Error reported",
"downloads.events.download_resolve_started": "Resolving source",
"downloads.events.download_resolve_completed": "Source resolved",
"downloads.events.download_completed": "Download completed",
"downloads.events.download_ingest_started": "Ingest started",
"downloads.events.download_ingest_completed": "Ingest completed",
"downloads.events.download_seeding_started": "Seeding started",
"downloads.events.download_seeding_stopped": "Seeding stopped",
"uploadPanel.toggle": "Upload progress",
"uploadPanel.title": "Uploads",
"uploadPanel.empty": "No uploads yet",
"uploadPanel.summary": "{{active}} active, {{completed}} complete, {{total}} total",
"uploadPanel.cancel": "Cancel upload",
"uploadPanel.cancelAll": "Cancel all",
"uploadPanel.waiting": "Waiting",
"uploadPanel.etaUnknown": "Calculating",
"uploadPanel.status.queued": "Queued",
"uploadPanel.status.preparing": "Preparing",
"uploadPanel.status.uploading": "Uploading",
"uploadPanel.status.confirming": "Confirming",
"uploadPanel.status.completed": "Complete",
"uploadPanel.status.failed": "Failed",
"uploadPanel.status.cancelled": "Cancelled",
"music.player": "Music Player",
"music.empty": "No music selected",
"music.emptyHint": "Open music files in the file browser to add them here.",
"music.queue": "Playlist",
"music.queueEmpty": "No local playlist items yet",
"music.unknownArtist": "Unknown artist",
"music.playFailed": "Playback failed",
"files.count": "{{count}} items",
"trash.title": "Trash",
"trash.placeholder": "Deleted files will appear here.",
"trash.empty": "Empty Trash",
"trash.emptyTitle": "Empty Trash",
"trash.confirmEmpty": "This will permanently delete all items in trash. This cannot be undone.",
"trash.emptySuccess": "Trash emptied",
"trash.restore": "Restore",
"trash.restoreSuccess": "Items restored",
"trash.deletePermanently": "Delete Permanently",
"trash.deleteTitle": "Delete Permanently",
"trash.confirmDelete": "This will permanently delete {{count}} item(s). This cannot be undone.",
"trash.deleteSuccess": "Items permanently deleted",
"trash.noItems": "No items in trash",
"trash.colName": "Name",
"trash.colOriginalLocation": "Original Location",
"trash.colTrashedDate": "Trashed Date",
"trash.colSize": "Size",
"trash.colActions": "Actions",
"trash.selectAll": "Select all items",
"trash.selectItem": "Select {{name}}",
"trash.prevPage": "Previous",
"trash.nextPage": "Next",
"trash.pageInfo": "Page {{page}} of {{total}}",
"admin.title": "Admin Console",
"admin.backToFiles": "Back to App",
"admin.nav.management": "Management",
"admin.nav.overview": "Overview",
"admin.nav.analytics": "Analytics",
"admin.nav.storages": "Storages",
"admin.nav.downloaders": "Downloaders",
"admin.nav.announcement": "Announcement",
"admin.nav.audit": "Audit Logs",
"admin.nav.users": "Users",
"admin.nav.settings": "Settings",
"admin.nav.cloudStore": "Storage Plans",
"admin.nav.about": "About",
"admin.overview.title": "Overview",
"admin.overview.subtitle": "Monitor user growth, activity, and storage resources in one live view.",
"admin.overview.refresh": "Refresh",
"admin.overview.updatedAt": "Live · {{time}}",
"admin.overview.retry": "Retry",
"admin.overview.live": "Live",
"admin.overview.summary.title": "Overview",
"admin.overview.users.section": "Users",
"admin.overview.storage.section": "Storage",
"admin.overview.details.section": "User, storage backend, and downloader details",
"admin.overview.metrics.totalUsers": "Total users",
"admin.overview.metrics.totalUsersDetail": "All registered accounts",
"admin.overview.metrics.active30Days": "30-day active",
"admin.overview.metrics.activeRate": "{{value}} active rate",
"admin.overview.metrics.new7Days": "New this week",
"admin.overview.metrics.new7DaysDetail": "Registered in the last 7 days",
"admin.overview.metrics.storageCapacity": "Total storage",
"admin.overview.metrics.storageBackends": "{{value}} backends",
"admin.overview.metrics.storageUsed": "Used storage",
"admin.overview.metrics.storageUsage": "{{value}} used",
"admin.overview.users.trendTitle": "User trend",
"admin.overview.users.trendDescription": "Total, monthly active, and new users over the last 30 days.",
"admin.overview.users.trendAriaLabel": "Chart of total, 30-day active, and new users over the last 30 days",
"admin.overview.users.totalUsers": "Total users",
"admin.overview.users.activeUsers": "30-day active",
"admin.overview.users.newUsers": "New users",
"admin.overview.users.activityTitle": "User activity mix",
"admin.overview.users.activityDescription": "All users grouped by their latest activity window.",
"admin.overview.users.activityAriaLabel": "Breakdown of active today, active within 7 days, active within 30 days, and inactive users",
"admin.overview.users.activity.today": "Active today",
"admin.overview.users.activity.last7Days": "Active 27 days ago",
"admin.overview.users.activity.last30Days": "Active 830 days ago",
"admin.overview.users.activity.inactive": "Inactive for 30 days",
"admin.overview.storage.trendTitle": "Storage change trend",
"admin.overview.storage.trendDescription": "Site-wide storage level, daily writes, and released capacity over the last 30 days.",
"admin.overview.storage.trendAriaLabel": "Chart of site-wide storage level, daily writes, and released capacity over the last 30 days",
"admin.overview.storage.usageTitle": "Storage usage",
"admin.overview.storage.usageDescription": "Live capacity usage across capacity-limited backends.",
"admin.overview.storage.usageAriaLabel": "Breakdown of used and available storage capacity",
"admin.overview.storage.used": "Used",
"admin.overview.storage.written": "New writes",
"admin.overview.storage.released": "Released",
"admin.overview.storage.available": "Available",
"admin.overview.storage.total": "Total capacity",
"admin.overview.storage.unboundedOnly": "No backend currently has a capacity limit.",
"admin.overview.topUsers.title": "Top 10 users by usage",
"admin.overview.topUsers.description": "Personal spaces ranked by current used capacity.",
"admin.overview.topUsers.empty": "No personal-space usage snapshot is available.",
"admin.overview.backends.title": "Storage backends",
"admin.overview.backends.description": "Current capacity and write status for each backend.",
"admin.overview.backends.empty": "No storage backends have been configured.",
"admin.overview.backends.status.writable": "Healthy",
"admin.overview.backends.status.full": "Full",
"admin.overview.backends.status.disabled": "Disabled",
"admin.overview.downloaders.title": "Downloaders",
"admin.overview.downloaders.description": "Heartbeat, load, and live traffic for registered nodes.",
"admin.overview.downloaders.empty": "No downloader has been registered.",
"admin.overview.downloaders.download": "Down",
"admin.overview.downloaders.upload": "Up",
"admin.overview.downloaders.tasks": "Tasks",
"admin.overview.downloaders.heartbeat": "Heartbeat {{value}}",
"admin.overview.downloaders.status.online": "Online",
"admin.overview.downloaders.status.offline": "Offline",
"admin.overview.downloaders.status.disabled": "Disabled",
"admin.overview.emptyChart": "No statistics snapshot is available yet.",
"admin.overview.time.never": "Never reported",
"admin.overview.time.now": "Just now",
"admin.overview.time.seconds": "{{count}} sec ago",
"admin.overview.time.minutes": "{{count}} min ago",
"admin.overview.time.hours": "{{count}} hr ago",
"admin.overview.view": "View",
"admin.overview.noQuota": "No quota data",
"admin.overview.noStorages": "No storage backends configured yet.",
"admin.overview.noStorageCapacity": "No capacity configured",
"admin.overview.metrics.users": "Users",
"admin.overview.errorTitle": "Dashboard unavailable",
"admin.overview.errorDescription": "The dashboard metrics could not be loaded. Refresh the page or check the server logs.",
"admin.overview.badge.pro": "Pro analytics",
"admin.overview.badge.core": "Core metrics",
"admin.overview.generatedAt": "Updated {{time}}",
"admin.overview.metrics.usersDetail": "{{active}} active in 30d · {{newUsers}} new in 7d · {{admins}} admin(s)",
"admin.overview.metrics.spaces": "Spaces",
"admin.overview.metrics.spacesDetail": "{{team}} team · {{personal}} personal · {{newSpaces}} new in 30d",
"admin.overview.metrics.traffic": "Traffic",
"admin.overview.metrics.trafficDetail": "{{usage}} · {{period}}",
"admin.overview.metrics.shares": "Shares",
"admin.overview.metrics.sharesDetail": "{{total}} total · {{views}} views",
"admin.overview.metrics.operations": "Operations",
"admin.overview.metrics.operationsDetail": "{{running}} running downloads · {{invites}} pending invites",
"admin.overview.coreCapacityTitle": "Core capacity",
"admin.overview.coreCapacityDescription": "Storage, traffic, sharing, and backend health available to every admin.",
"admin.overview.storageQuota": "Storage quota",
"admin.overview.trafficQuota": "Traffic quota",
"admin.overview.storageCapacity": "Backend capacity",
"admin.overview.storageBackendCount": "{{active}} / {{total}} active backends",
"admin.overview.shareActivity": "Share views",
"admin.overview.shareActivityDetail": "{{downloads}} downloads",
"admin.overview.analyticsTitle": "Operational analytics",
"admin.overview.analyticsBadge": "Pro+",
"admin.overview.analyticsDescription": "Pro-level trends, composition, top lists, and reliability diagnostics.",
"admin.overview.period.7": "7 days",
"admin.overview.period.30": "30 days",
"admin.overview.period.90": "90 days",
"admin.overview.analyticsLockedTitle": "Unlock detailed analytics",
"admin.overview.analyticsLockedDescription": "Core dashboard metrics stay visible. Detailed operational statistics are available with ZPan Pro or Business.",
"admin.overview.analyticsLockedAction": "Open licensing",
"admin.overview.analyticsErrorTitle": "Detailed analytics unavailable",
"admin.overview.analyticsErrorDescription": "The Pro analytics endpoint could not be loaded.",
"admin.overview.charts.activityTitle": "Operating trend",
"admin.overview.charts.activityDescription": "Daily movement across users, sharing, remote tasks, and failures.",
"admin.overview.charts.activeUsers": "Active users",
"admin.overview.charts.shareViews": "Share views",
"admin.overview.charts.remoteTasks": "Remote tasks",
"admin.overview.charts.failedJobs": "Failed jobs",
"admin.overview.charts.storageByTypeTitle": "Storage by file type",
"admin.overview.charts.storageByTypeDescription": "Largest active file categories by bytes.",
"admin.overview.usageBySpaceTitle": "Top space utilization",
"admin.overview.usageBySpaceDescription": "Spaces with the highest quota pressure.",
"admin.overview.remoteDownloadsTitle": "Remote downloads",
"admin.overview.remoteDownloadsDescription": "Task throughput, failure reasons, and downloader workload.",
"admin.overview.remoteSuccess": "Success rate",
"admin.overview.remoteCompleted": "{{completed}} / {{total}} completed",
"admin.overview.remoteRunning": "Running",
"admin.overview.remoteFailed": "{{failed}} failed",
"admin.overview.statusBreakdown": "Status breakdown",
"admin.overview.failureReasons": "Failure reasons",
"admin.overview.noFailures": "No failures recorded.",
"admin.overview.topSharesTitle": "Top shares",
"admin.overview.topSharesDescription": "Most viewed and downloaded share links.",
"admin.overview.table.share": "Share",
"admin.overview.table.creator": "Creator",
"admin.overview.table.views": "Views",
"admin.overview.table.downloads": "Downloads",
"admin.overview.reliabilityTitle": "Reliability",
"admin.overview.reliabilityDescription": "Background jobs, cloud reporting, and license health.",
"admin.overview.jobFailureRate": "Job failure rate",
"admin.overview.jobFailures": "{{failed}} / {{total}} failed",
"admin.overview.licenseStatus": "License",
"admin.overview.licenseActive": "Active",
"admin.overview.licenseInactive": "Inactive",
"admin.overview.licenseNone": "No edition",
"admin.overview.jobStatusBreakdown": "Job status",
"admin.overview.cloudReportPending": "Report pending",
"admin.overview.cloudReportPendingDetail": "Traffic reports and webhooks waiting to send",
"admin.overview.cloudReportFailed": "Report failed",
"admin.overview.cloudReportFailedDetail": "Traffic reports and webhooks that need attention",
"admin.overview.recentJobFailures": "Recent job failures",
"admin.overview.noErrorMessage": "No error message",
"admin.overview.emptyChart": "No chart data for this period.",
"admin.overview.emptyTable": "No data available.",
"admin.downloaders.title": "Downloaders",
"admin.downloaders.subtitle": "Monitor remote download workers.",
"admin.downloaders.empty": "No downloaders registered",
"admin.downloaders.table.name": "Name",
"admin.downloaders.table.status": "Status",
"admin.downloaders.table.engine": "Engine",
"admin.downloaders.table.tasks": "Running",
"admin.downloaders.table.speed": "Down / Up",
"admin.downloaders.table.billing": "Credits",
"admin.downloaders.table.enabled": "Enabled",
"admin.downloaders.status.online": "Online",
"admin.downloaders.status.offline": "Offline",
"admin.downloaders.status.disabled": "Disabled",
"admin.downloaders.delete": "Delete",
"admin.downloaders.settingsAction": "Downloader settings",
"admin.downloaders.settingsTitle": "Downloader settings",
"admin.downloaders.settingsDescription": "Host: {{hostname}}",
"admin.downloaders.enabled": "Enabled",
"admin.downloaders.enabledHint": "Disabled downloaders stop receiving new remote download tasks.",
"admin.downloaders.renameTitle": "Edit downloader name",
"admin.downloaders.renameDescription": "Set a display name for this downloader. Hostname: {{hostname}}.",
"admin.downloaders.displayName": "Display name",
"admin.downloaders.displayNamePlaceholder": "Edge downloader",
"admin.downloaders.displayNameHint": "Used in the admin list and task assignment views.",
"admin.downloaders.renameSuccess": "Downloader name updated.",
"admin.downloaders.configureBilling": "Configure Credits billing",
"admin.downloaders.billingTitle": "Credits billing",
"admin.downloaders.billingDescription": "Configure remote download Credits billing for {{name}}.",
"admin.downloaders.billingEnabled": "Enable Credits billing",
"admin.downloaders.billingEnabledHint": "Charge workspace Credits for bytes downloaded by this downloader.",
"admin.downloaders.billingBusinessOnly": "Traffic billing is available with a Business license.",
"admin.downloaders.billingUnit": "Billing unit",
"admin.downloaders.billingUnitPlaceholder": "100",
"admin.downloaders.billingCredits": "Credits per unit",
"admin.downloaders.billingCreditsPlaceholder": "1",
"admin.downloaders.billingSaveSuccess": "Credits billing updated.",
"admin.downloaders.settingsSaveSuccess": "Downloader settings updated.",
"admin.downloaders.deleteTitle": "Delete downloader",
"admin.downloaders.deleteConfirm": "Delete downloader {{name}}? Active assigned tasks will be returned to the queue.",
"admin.downloaders.deleteSuccess": "Downloader deleted.",
"admin.overview.metrics.activeUsers": "30d active",
"admin.overview.metrics.activeUsersDetail": "{{percent}} of total users",
"admin.overview.metrics.storage": "Storage used",
"admin.overview.metrics.storageDetail": "{{percent}} of quota · {{quota}}",
"admin.overview.capacityTitle": "Capacity posture",
"admin.overview.capacityDescription": "Quota pressure, backend availability, and operating risk from core records.",
"admin.overview.storageBackendHealth": "Backend health",
"admin.overview.totalStorageCapacity": "{{capacity}} total configured capacity",
"admin.overview.riskSignals": "Risk signals",
"admin.overview.riskSignalsDetail": "{{failed}} failed jobs · {{offline}} offline downloaders",
"admin.overview.mixTitle": "Operating mix",
"admin.overview.mixDescription": "Core ratios that show adoption, collaboration, and sharing depth.",
"admin.overview.mix.activeUsers": "Active user ratio",
"admin.overview.mix.activeUsersDetail": "{{active}} / {{total}} users active in 30d",
"admin.overview.mix.teamSpaces": "Team space ratio",
"admin.overview.mix.teamSpacesDetail": "{{team}} / {{total}} spaces are team spaces",
"admin.overview.mix.activeShares": "Active share ratio",
"admin.overview.mix.activeSharesDetail": "{{active}} / {{total}} shares are active",
"admin.overview.mix.shareDownloads": "Share download rate",
"admin.overview.mix.shareDownloadsDetail": "{{downloads}} downloads from {{views}} views",
"admin.overview.periodKpi.signups": "Signups",
"admin.overview.periodKpi.periodDays": "Last {{days}} days",
"admin.overview.periodKpi.shareViews": "Share views",
"admin.overview.periodKpi.shareDownloads": "{{downloads}} downloads",
"admin.overview.periodKpi.conversion": "Download conversion",
"admin.overview.periodKpi.conversionDetail": "Downloads per share view",
"admin.overview.periodKpi.remoteSuccess": "Remote success",
"admin.overview.periodKpi.jobFailures": "Job failures",
"admin.overview.periodKpi.topSpacePressure": "Top space pressure",
"admin.overview.periodKpi.topSpacePressureDetail": "Highest quota utilization",
"admin.overview.charts.signups": "Signups",
"admin.overview.charts.shareDownloads": "Share downloads",
"admin.overview.table.bytes": "Bytes",
"admin.overview.sharePerformanceTitle": "Share performance",
"admin.overview.sharePerformanceDescription": "Conversion and guardrails for public share links.",
"admin.overview.conversionRate": "Conversion rate",
"admin.overview.conversionRateDetail": "Downloads divided by share views",
"admin.overview.expiredShares": "Expired shares",
"admin.overview.revokedShares": "{{count}} revoked shares",
"admin.overview.downloadLimitHitShares": "Limit reached",
"admin.overview.downloadLimitHitSharesDetail": "Shares that hit their download cap",
"admin.users.title": "Users",
"admin.users.placeholder": "User management will be implemented here.",
"admin.users.searchPlaceholder": "Search by name, username, or email",
"admin.users.colName": "Name",
"admin.users.colEmail": "Email",
"admin.users.colRole": "Role",
"admin.users.colStatus": "Status",
"admin.users.colQuota": "Quota",
"admin.users.colCreatedAt": "Created At",
"admin.users.colActions": "Actions",
"admin.users.active": "Active",
"admin.users.disabled": "Disabled",
"admin.users.enable": "Enable",
"admin.users.disable": "Disable",
"admin.users.manageEntitlements": "Manage entitlements",
"admin.users.entitlementsFor": "Quota entitlements for {{name}}",
"admin.users.entitlementsUsage": "Current usage: {{used}} / {{total}}",
"admin.users.entitlementType": "Type",
"admin.users.entitlementAmount": "Amount",
"admin.users.entitlementExpires": "Expires",
"admin.users.entitlementStatus": "Status",
"admin.users.entitlementSource": "Source",
"admin.users.entitlementTypePlan": "Plan",
"admin.users.entitlementTypeGrant": "Grant",
"admin.users.entitlementSourceAdmin": "Admin grant",
"admin.users.entitlementSourceFreePlan": "Free plan",
"admin.users.entitlementSourceOrder": "Order",
"admin.users.noExpiry": "No expiry",
"admin.users.noEntitlements": "No entitlements yet.",
"admin.users.addEntitlement": "Add entitlement",
"admin.users.entitlementActions": "Actions",
"admin.users.editEntitlement": "Edit",
"admin.users.revokeEntitlement": "Revoke",
"admin.users.revokeEntitlementTitle": "Revoke entitlement",
"admin.users.revokeEntitlementConfirm": "Revoke this entitlement for {{name}}? Their available quota will be reduced immediately.",
"admin.users.entitlementRevoked": "Entitlement revoked",
"admin.users.entitlements": "Entitlements",
"admin.users.tabEntitlement": "Entitlement",
"admin.users.activeEntitlements": "Active entitlements",
"admin.users.backToUsers": "Back to users",
"admin.users.userDetails": "User details",
"admin.users.userNotFound": "User not found",
"admin.users.revoked": "Revoked",
"admin.users.statusUpdated": "User status updated",
"admin.users.selectedCount": "{{count}} selected",
"admin.users.selectedUsers": "{{count}} selected users",
"admin.users.selectPage": "Select all users on this page",
"admin.users.selectUser": "Select {{name}}",
"admin.users.batchDisable": "Disable selected",
"admin.users.batchEnable": "Enable selected",
"admin.users.batchStatusUpdated": "Updated {{count}} users",
"admin.users.noUsers": "No users found",
"admin.users.prevPage": "Previous",
"admin.users.nextPage": "Next",
"admin.users.pageInfo": "Page {{page}} of {{total}}",
"admin.users.pageSize": "Rows per page",
"admin.users.pageSizeOption": "{{count}} / page",
"admin.users.roleAdmin": "Admin",
"admin.users.roleMember": "Member",
"admin.users.inviteUser": "Invite User",
"admin.users.inviteDialogTitle": "Invite Users",
"admin.users.inviteDialogDescription": "{{count}} pending invitation(s) can currently register.",
"admin.users.inviteEmail": "Invite email",
"admin.users.inviteEmailPlaceholder": "name@example.com",
"admin.users.sendInvite": "Send Invite",
"admin.users.inviteCreated": "Invitation sent",
"admin.users.inviteResent": "Invitation resent",
"admin.users.inviteRevoked": "Invitation revoked",
"admin.users.noInvitations": "No invitations found",
"admin.users.inviteColEmail": "Email",
"admin.users.inviteColStatus": "Status",
"admin.users.inviteColInvitedBy": "Invited By",
"admin.users.inviteColCreatedAt": "Sent At",
"admin.users.inviteColExpiresAt": "Expires At",
"admin.users.copyInviteLink": "Copy Invite Link",
"admin.users.inviteLinkCopied": "Invite link copied to clipboard",
"admin.audit.title": "Audit Logs",
"admin.audit.description": "Track administrative and user activity across the instance.",
"admin.audit.proTooltip": "Audit Logs are available with ZPan Pro.",
"admin.audit.upgradeTitle": "Unlock Audit Logs",
"admin.audit.upgradeDescription": "Audit Logs are a Pro feature. Upgrade to gain full visibility into instance-wide activity.",
"admin.audit.upgradeButton": "Upgrade to Pro",
"admin.audit.empty": "No audit events yet.",
"admin.audit.loadError": "Failed to load audit logs.",
"admin.audit.eventType": "Event type",
"admin.audit.timeRange": "Time range",
"admin.audit.allEvents": "All events",
"admin.audit.allTime": "All time",
"admin.audit.last24Hours": "Last 24 hours",
"admin.audit.last7Days": "Last 7 days",
"admin.audit.last30Days": "Last 30 days",
"admin.audit.last90Days": "Last 90 days",
"admin.audit.loadMore": "Load more",
"admin.announcement.title": "Site Announcement",
"admin.announcement.description": "Manage the announcement area shown to users across the site.",
"admin.announcement.create": "New Announcement",
"admin.announcement.createTitle": "Create Announcement",
"admin.announcement.editTitle": "Edit Announcement",
"admin.announcement.created": "Announcement created",
"admin.announcement.updated": "Announcement updated",
"admin.announcement.deleted": "Announcement deleted",
"admin.announcement.empty": "No announcements yet",
"admin.announcement.filterAll": "All statuses",
"admin.announcement.publish": "Publish",
"admin.announcement.archive": "Archive",
"admin.announcement.deleteConfirm": "Delete announcement '{{title}}'? This cannot be undone.",
"admin.announcement.fieldTitle": "Title",
"admin.announcement.fieldBody": "Body",
"admin.announcement.fieldStatus": "Status",
"admin.announcement.fieldPinned": "Pin announcement",
"admin.announcement.fieldPriority": "Priority",
"admin.announcement.fieldPublishedAt": "Published At",
"admin.announcement.fieldExpiresAt": "Expires At",
"admin.users.resendInvite": "Resend Invite",
"admin.users.revokeInvite": "Revoke Invite",
"admin.users.inviteStatus.pending": "Pending",
"admin.users.inviteStatus.accepted": "Accepted",
"admin.users.inviteStatus.expired": "Expired",
"admin.users.inviteStatus.revoked": "Revoked",
"admin.settings.title": "Settings",
"admin.settings.siteSection": "Site Settings",
"admin.settings.siteName": "Site Name",
"admin.settings.siteDescription": "Site Description",
"admin.settings.sitePublicOrigin": "Public URL",
"admin.settings.quotaSection": "Storage",
"admin.settings.storageSection": "Storage",
"admin.settings.defaultOrgQuota": "Default Quota",
"admin.settings.defaultOrgQuotaHint": "Initial storage quota for new workspaces. Must be greater than 0.",
"admin.settings.defaultTeamQuota": "Default Team Quota",
"admin.settings.defaultTeamQuotaHint": "Initial storage quota for newly created team spaces. Falls back to the default quota when unset.",
"admin.settings.saved": "Settings saved",
"admin.settings.identityInvalid": "Site identity is invalid",
"admin.settings.positiveQuotaRequired": "Default quota must be a positive number",
"admin.settings.eyebrow": "Administration",
"admin.settings.subtitle": "Configure how your instance is presented to users and define the default storage policy for new organizations.",
"admin.settings.saveAction": "Save changes",
"admin.settings.metricIdentity": "Public identity",
"admin.settings.metricIdentityHint": "This name and description appear across navigation, pages, and login surfaces.",
"admin.settings.metricQuota": "Default quota",
"admin.settings.metricExperience": "Experience",
"admin.settings.metricExperienceValue": "Branded workspace",
"admin.settings.metricExperienceHint": "Use custom assets and copy to make the instance feel like your own product.",
"admin.settings.identityTitle": "Site identity",
"admin.settings.identityDescription": "Set the primary name and short description users see across the product.",
"admin.settings.identityProTooltip": "Custom site name and description are available in ZPan Pro.",
"admin.settings.proLockedWhiteLabel": "This section is a ZPan Pro feature. Without Pro, site name, description, branding, and footer copyright controls stay visible but locked.",
"admin.settings.registrationTitle": "New user registration",
"admin.settings.registrationDescription": "Control whether new users are allowed to create accounts on this instance.",
"admin.settings.registrationLabel": "Allow new user sign-ups",
"admin.settings.registrationHintOpen": "New users can register directly from the sign-up page.",
"admin.settings.registrationHintClosed": "New account creation is disabled for this instance.",
"admin.settings.registrationUpgradeHint": "Open registration is disabled without ZPan Pro.",
"admin.settings.captchaTitle": "Captcha protection",
"admin.settings.captchaDescription": "Require captcha on email and username authentication.",
"admin.settings.captchaEnabled": "Require captcha",
"admin.settings.captchaEnabledHint": "When enabled, users must complete the selected captcha before password authentication.",
"admin.settings.captchaProvider": "Captcha provider",
"admin.settings.captchaProviderPlaceholder": "Select captcha provider",
"admin.settings.captchaProviderTurnstile": "Cloudflare Turnstile",
"admin.settings.captchaProviderRecaptcha": "Google reCAPTCHA",
"admin.settings.captchaProviderHcaptcha": "hCaptcha",
"admin.settings.captchaProviderCaptchafox": "CaptchaFox",
"admin.settings.captchaProviderHint": "OAuth providers remain available when captcha is enabled.",
"admin.settings.captchaSiteKey": "Site key",
"admin.settings.captchaSiteKeyPlaceholder": "Public site key",
"admin.settings.captchaSiteKeyHint": "Public key used by the sign-in and sign-up forms.",
"admin.settings.captchaSecretKey": "Secret key",
"admin.settings.captchaSecretKeyPlaceholder": "Keep this secret",
"admin.settings.captchaSecretKeyHint": "Stored privately and used only by the server during verification.",
"admin.settings.captchaMinScore": "Minimum score",
"admin.settings.captchaMinScorePlaceholder": "0.5",
"admin.settings.captchaMinScoreHint": "Optional Google reCAPTCHA v3 score threshold from 0 to 1.",
"admin.settings.captchaInvalid": "Captcha settings are invalid",
"admin.settings.quotaValuePlaceholder": "1",
"admin.settings.siteNamePlaceholder": "ZPan Workspace",
"admin.settings.siteNameHint": "Keep it short and recognizable. It will be reused in navigation and browser chrome.",
"admin.settings.siteDescriptionPlaceholder": "Private file hosting for your team, customers, or community.",
"admin.settings.siteDescriptionHint": "One or two sentences are enough. This copy should explain the purpose of the instance.",
"admin.settings.sitePublicOriginPlaceholder": "https://files.example.com",
"admin.settings.sitePublicOriginHint": "The externally reachable address used to build absolute links in share pages and emails. Leave blank to auto-detect it from incoming requests.",
"admin.settings.webdavSection": "WebDAV",
"admin.settings.webdavTitle": "WebDAV domain",
"admin.settings.webdavDescription": "Control the WebDAV service and configure its dedicated hostname.",
"admin.settings.webdavDetails": "Details",
"admin.settings.webdavDrawerDescription": "Enable or disable WebDAV and configure its dedicated hostname.",
"admin.settings.webdavEnabled": "Enable WebDAV",
"admin.settings.webdavEnabledHint": "When disabled, all WebDAV requests stop being served.",
"admin.settings.webdavDomain": "WebDAV domain",
"admin.settings.webdavDomainHint": "Optional. Leave blank to derive the dav. hostname from the site's Public URL.",
"admin.settings.webdavDomainPlaceholder": "webdisk.example.com",
"admin.settings.webdavDomainInvalid": "Enter a valid hostname without a protocol, port, or path.",
"admin.settings.webdavPathUrl": "Path URL",
"admin.settings.webdavPathUrlHint": "This URL remains available until the dedicated hostname is verified.",
"admin.settings.webdavCandidateUrl": "Dedicated domain URL",
"admin.settings.webdavCandidateUrlHint": "Configure this hostname in DNS and route its root path to ZPan's /dav path.",
"admin.settings.webdavVerificationStatus": "Verification status",
"admin.settings.webdavStatus.unverified": "Not verified",
"admin.settings.webdavStatus.ready": "Ready",
"admin.settings.webdavStatus.failed": "Verification failed",
"admin.settings.webdavStatus.disabled": "Disabled",
"admin.settings.webdavLastVerified": "Last verified: {{value}}",
"admin.settings.webdavVerificationHint": "Verification sends an unauthenticated OPTIONS request and expects ZPan's WebDAV authentication challenge. It does not configure DNS or your reverse proxy.",
"admin.settings.webdavVerify": "Verify domain",
"admin.settings.webdavVerifying": "Verifying…",
"admin.settings.webdavVerified": "WebDAV domain verified",
"admin.settings.webdavVerificationFailed": "WebDAV domain verification failed",
"admin.settings.quotaDescription": "Define initial workspace storage and whether users can add storage through plans.",
"admin.settings.storageProTooltip": "Storage controls are available in ZPan Pro.",
"admin.settings.cloudStoreEnabled": "Storage Plans",
"admin.settings.cloudStoreEnabledHint": "Allow users to buy additional storage and apply gift cards.",
"admin.settings.previewTitle": "Live summary",
"admin.settings.previewDescription": "A quick read on how the current configuration will feel before you save it.",
"admin.settings.previewFallback": "Add a short description so users immediately understand what this instance is for.",
"admin.settings.previewUrlLabel": "Primary address",
"admin.settings.previewQuotaLabel": "New organization quota",
"admin.settings.previewBrandingLabel": "Branding next step",
"admin.settings.previewBrandingHint": "Use the branding section below to add your logo, favicon, and footer visibility rules.",
"admin.settings.brandingTitle": "Branding",
"admin.settings.brandingDescription": "Customize the visual identity of the instance so the admin and end-user surfaces feel cohesive.",
"admin.settings.branding.preview": "Preview",
"admin.settings.branding.poweredBy": "Powered by ZPan",
"admin.settings.branding.poweredHidden": "Footer credit hidden",
"admin.settings.branding.previewHintTitle": "What changes here",
"admin.settings.branding.previewHint": "Logo and favicon updates affect shared surfaces immediately after saving.",
"admin.settings.branding.assetsTitle": "Branding",
"admin.settings.branding.assetsDescription": "Upload the assets users will see in the sidebar, browser tab, and public entry points.",
"admin.settings.branding.logo": "Logo",
"admin.settings.branding.logoHint": "Best for square or compact marks. PNG, JPG, WebP, or SVG.",
"admin.settings.branding.favicon": "Favicon",
"admin.settings.branding.faviconHint": "Used in browser tabs and bookmarks. Prefer a simple, high-contrast mark.",
"admin.settings.branding.upload": "Upload",
"admin.settings.branding.replace": "Replace",
"admin.settings.branding.reset": "Reset",
"admin.settings.branding.visibilityTitle": "Footer visibility",
"admin.settings.branding.visibilityDescription": "Control whether the product credit remains visible in the app sidebar.",
"admin.settings.branding.hidePoweredBy": "Hide \"Powered by ZPan\"",
"admin.settings.branding.hidePoweredByHint": "Useful when the instance should look fully white-labeled.",
"admin.settings.branding.lockedMessage": "Branding is available in ZPan Pro. The controls stay visible here, but they are locked until Pro is activated.",
"admin.settings.branding.save": "Save branding",
"admin.settings.branding.saving": "Saving…",
"admin.settings.branding.saved": "Branding saved",
"admin.settings.branding.themeTitle": "Theme",
"admin.settings.branding.themeDescription": "Choose a built-in ZPan theme or set custom colors for the app shell.",
"admin.settings.branding.themeMode": "Theme source",
"admin.settings.branding.themeModePlaceholder": "Select theme source",
"admin.settings.branding.themeModePreset": "Built-in theme",
"admin.settings.branding.themeModeCustom": "Custom colors",
"admin.settings.branding.themePreset": "Built-in theme",
"admin.settings.branding.colorPlaceholder": "#000000",
"admin.settings.branding.themePrimary": "Primary",
"admin.settings.branding.themePrimaryForeground": "Primary text",
"admin.settings.branding.themeCanvas": "Canvas accent",
"admin.settings.branding.themeSidebarAccent": "Sidebar accent",
"admin.settings.branding.themeRing": "Focus ring",
"admin.settings.branding.resetTheme": "Reset theme",
"admin.settings.branding.saveTheme": "Save theme",
"admin.settings.branding.themePresets.default": "ZPan default",
"admin.settings.branding.themePresets.ocean": "Ocean",
"admin.settings.branding.themePresets.forest": "Forest",
"admin.settings.branding.themePresets.rose": "Rose",
"admin.settings.branding.resetSuccess": "{{field}} reset to default",
"admin.settings.branding.fields.logo": "Logo",
"admin.settings.branding.fields.favicon": "Favicon",
"admin.settings.branding.fields.hide_powered_by": "Footer credit",
"admin.settings.branding.fields.theme": "Theme",
"admin.settings.branding.fields.theme_mode": "Theme source",
"admin.settings.branding.fields.theme_preset": "Theme preset",
"admin.settings.branding.fields.theme_primary_color": "Primary color",
"admin.settings.branding.fields.theme_primary_foreground": "Primary text",
"admin.settings.branding.fields.theme_canvas_color": "Canvas accent",
"admin.settings.branding.fields.theme_sidebar_accent_color": "Sidebar accent",
"admin.settings.branding.fields.theme_ring_color": "Focus ring",
"admin.nav.auth": "OAuth",
"admin.nav.licensing": "Licensing",
"admin.auth.title": "OAuth Providers",
"admin.auth.description": "Manage third-party sign-in providers and custom OIDC connections for this instance.",
"admin.auth.registrationSection": "Registration Mode",
"admin.auth.registrationOpen": "Open",
"admin.auth.registrationOpenDesc": "Anyone can sign up",
"admin.auth.registrationInviteOnly": "Invite Only",
"admin.auth.registrationInviteOnlyDesc": "Users need an invite code to sign up",
"admin.auth.registrationClosed": "Closed",
"admin.auth.registrationClosedDesc": "No new sign-ups allowed",
"admin.auth.registrationSaved": "Registration mode saved",
"admin.auth.inviteCodesSection": "Invite Codes",
"admin.auth.generateCodes": "Generate Codes",
"admin.auth.generateTitle": "Generate Invite Codes",
"admin.auth.codeCount": "Number of codes",
"admin.auth.expiresInDays": "Expires in (days)",
"admin.auth.expiresInDaysHint": "Leave empty for no expiration",
"admin.auth.colCode": "Code",
"admin.auth.colStatus": "Status",
"admin.auth.colUsedBy": "Used By",
"admin.auth.colExpiresAt": "Expires At",
"admin.auth.colCreatedAt": "Created At",
"admin.auth.colActions": "Actions",
"admin.auth.statusAvailable": "Available",
"admin.auth.statusUsed": "Used",
"admin.auth.statusExpired": "Expired",
"admin.auth.noInviteCodes": "No invite codes",
"admin.auth.codesGenerated": "Invite codes generated",
"admin.auth.codeDeleted": "Invite code deleted",
"admin.auth.codeCopied": "Code copied to clipboard",
"admin.auth.oauthSection": "OAuth Providers",
"admin.auth.addProvider": "Add Provider",
"admin.auth.addProviderTitle": "Add OAuth Provider",
"admin.auth.editProviderTitle": "Edit OAuth Provider",
"admin.auth.providerDrawerDescription": "OAuth sign-in provider.",
"admin.auth.providerType": "Provider Type",
"admin.auth.providerBuiltin": "Built-in Provider",
"admin.auth.providerOidc": "Custom OIDC",
"admin.auth.provider": "Provider",
"admin.auth.providerPlaceholder": "Select provider",
"admin.auth.callbackUri": "Callback URI",
"admin.auth.callbackUriHint": "Use this redirect URI in the OAuth provider console. If BETTER_AUTH_URL uses a different origin, keep the same path on that auth origin.",
"admin.auth.copyCallbackUri": "Copy callback URI",
"admin.auth.callbackUriCopied": "Callback URI copied",
"admin.auth.clientId": "Client ID",
"admin.auth.registeredApplications": "Registered Applications",
"admin.auth.registeredApplicationsDescription": "OAuth clients registered dynamically with this ZPan instance. Registrations are active immediately.",
"admin.auth.noRegisteredApplications": "No dynamically registered applications.",
"admin.auth.application": "Application",
"admin.auth.redirectUri": "Redirect URI",
"admin.auth.grants": "Grant types",
"admin.auth.clientIdPlaceholder": "OAuth client ID",
"admin.auth.clientSecret": "Client Secret",
"admin.auth.clientSecretPlaceholder": "OAuth client secret",
"admin.auth.enabled": "Enabled",
"admin.auth.discoveryUrl": "Discovery URL",
"admin.auth.discoveryUrlPlaceholder": "https://accounts.example.com/.well-known/openid-configuration",
"admin.auth.scopes": "Scopes",
"admin.auth.scopesPlaceholder": "openid,email,profile",
"admin.auth.scopesHint": "Comma-separated list of scopes",
"admin.auth.providerId": "Provider ID",
"admin.auth.providerIdPlaceholder": "company-sso",
"admin.auth.providerIdHint": "Lowercase letters, numbers, and hyphens only",
"admin.auth.providerSaved": "Provider saved",
"admin.auth.providerDeleted": "Provider deleted",
"admin.auth.statusEnabled": "Enabled",
"admin.auth.statusDisabled": "Disabled",
"admin.auth.noProviders": "No OAuth providers configured",
"admin.auth.runtimeRestartNote": "Provider configuration changes may require a Worker isolate recycle or Node restart before sign-in uses them.",
"admin.auth.deleteProviderTitle": "Delete Provider",
"admin.auth.deleteProviderConfirm": "Delete OAuth provider '{{name}}'? Users will no longer be able to sign in with this provider.",
"admin.auth.emailSection": "Email Configuration",
"admin.imageDomains.section": "Image custom domains",
"admin.imageDomains.title": "Image custom-domain provider",
"admin.imageDomains.description": "Choose how workspace image domains are provisioned and verified.",
"admin.imageDomains.drawerDescription": "Configure the instance-wide provider and choose whether Cloudflare routes image domains to a Worker or an external origin.",
"admin.imageDomains.proTooltip": "Image custom domains require ZPan Pro or Business.",
"admin.imageDomains.upgradeTitle": "Unlock image custom domains",
"admin.imageDomains.upgradeDescription": "Upgrade to ZPan Pro to provision and manage workspace image domains.",
"admin.imageDomains.enabled": "Enable custom domains",
"admin.imageDomains.enabledHelp": "When disabled, custom-domain image traffic is not served.",
"admin.imageDomains.provider": "Provider",
"admin.imageDomains.cloudflare": "Cloudflare for SaaS",
"admin.imageDomains.manual": "Self-managed",
"admin.imageDomains.notConfigured": "Not configured",
"admin.imageDomains.apiToken": "Cloudflare API token",
"admin.imageDomains.apiTokenHelp": "The token is stored by this ZPan instance and used only for provider automation.",
"admin.imageDomains.cloudflareGuide": "Create a scoped token with the permissions ZPan needs, then paste it below.",
"admin.imageDomains.createToken": "Create preconfigured Cloudflare token",
"admin.imageDomains.tokenScopeHelp": "On Cloudflare's form, restrict Zone Resources to the zone used by this ZPan instance.",
"admin.imageDomains.zoneId": "Cloudflare zone ID",
"admin.imageDomains.routingMode": "Routing target",
"admin.imageDomains.routingModeWorker": "Cloudflare Worker",
"admin.imageDomains.routingModeOrigin": "External origin",
"admin.imageDomains.workerName": "Worker script name",
"admin.imageDomains.workerNameHelp": "The deployed ZPan Worker name. The default Wrangler configuration uses “zpan”.",
"admin.imageDomains.originHostname": "Origin hostname",
"admin.imageDomains.originHostnameHelp": "An existing proxied A, AAAA, or CNAME record inside this zone that routes to the ZPan server.",
"admin.imageDomains.cnameTarget": "CNAME target",
"admin.imageDomains.records": "DNS records",
"admin.imageDomains.recordsHelp": "One record per line, for example: CNAME images.example.com or A 192.0.2.10.",
"admin.imageDomains.boundDomains": "Bound domains",
"admin.imageDomains.domainCount": "{{count}} bound domains",
"admin.imageDomains.test": "Set up and test",
"admin.imageDomains.saved": "Image-domain provider saved. Test it to activate domain binding.",
"admin.imageDomains.testSucceeded": "Cloudflare setup is ready and existing domains were reconciled.",
"admin.imageDomains.status.disabled": "Disabled",
"admin.imageDomains.status.unverified": "Not tested",
"admin.imageDomains.status.ready": "Ready",
"admin.imageDomains.status.error": "Error",
"admin.auth.emailEnabled": "Enable Email",
"admin.auth.emailEnabledHint": "Controls whether any email provider is allowed to send messages.",
"admin.auth.emailVerificationRequired": "Require email verification",
"admin.auth.emailVerificationHint": "Email and password users must open the verification link before they can sign in.",
"admin.auth.emailProvider": "Provider Type",
"admin.auth.emailProviderPlaceholder": "Select email provider",
"admin.auth.emailCloudflare": "Cloudflare Email",
"admin.auth.emailSmtp": "SMTP",
"admin.auth.emailHttp": "HTTP API",
"admin.auth.emailFrom": "From Address",
"admin.auth.emailFromPlaceholder": "noreply@example.com",
"admin.auth.smtpHost": "Host",
"admin.auth.smtpHostPlaceholder": "smtp.example.com",
"admin.auth.smtpPort": "Port",
"admin.auth.smtpPortPlaceholder": "587",
"admin.auth.smtpUser": "Username",
"admin.auth.smtpUserPlaceholder": "smtp-user",
"admin.auth.smtpPass": "Password",
"admin.auth.smtpPassPlaceholder": "SMTP password",
"admin.auth.smtpSecure": "Secure (TLS)",
"admin.auth.httpUrl": "API URL",
"admin.auth.httpUrlPlaceholder": "https://api.example.com/send-email",
"admin.auth.httpApiKey": "API Key",
"admin.auth.httpApiKeyPlaceholder": "HTTP API key",
"admin.auth.testEmail": "Send Test Email",
"admin.auth.testEmailTo": "Recipient Email",
"admin.auth.testEmailSent": "Test email sent",
"admin.auth.testEmailFailed": "Test email failed",
"admin.auth.emailSaved": "Email configuration saved",
"admin.auth.emailNotConfigured": "Email not configured yet",
"admin.storages.title": "Storages",
"admin.storages.placeholder": "Configure your S3-compatible storage backends here.",
"admin.storages.add": "Add Storage",
"admin.storages.addTitle": "Add Storage",
"admin.storages.editTitle": "Edit Storage",
"admin.storages.deleteTitle": "Delete Storage",
"admin.storages.deleteConfirm": "Delete storage bucket '{{bucket}}'? This cannot be undone.",
"admin.storages.deleteHasFiles": "Cannot delete storage that contains files.",
"admin.storages.created": "Storage created",
"admin.storages.updated": "Storage updated",
"admin.storages.deleted": "Storage deleted",
"admin.storages.noStorages": "No storages configured",
"admin.storages.colBucket": "Bucket",
"admin.storages.colProvider": "Provider",
"admin.storages.colAccessKey": "Access Key",
"admin.storages.colEndpoint": "Endpoint",
"admin.storages.colEgressBilling": "Egress billing",
"admin.storages.colStatus": "Status",
"admin.storages.colHealth": "Connection health",
"admin.storages.colActions": "Actions",
"admin.storages.healthUntested": "Not tested",
"admin.storages.healthTesting": "Testing...",
"admin.storages.healthSaveFailed": "The connection check completed, but its status could not be saved.",
"admin.storages.enableAction": "Enable and test",
"admin.storages.disableAction": "Stop using",
"admin.storages.enableSuccess": "Storage '{{bucket}}' enabled.",
"admin.storages.disableSuccess": "Storage '{{bucket}}' stopped.",
"admin.storages.cardActions": "Actions for storage {{bucket}}",
"admin.storages.manageAction": "Manage storage",
"admin.storages.available": "Available",
"admin.storages.unbounded": "Unbounded",
"admin.storages.usedLabel": "Used",
"admin.storages.capacityUnbounded": "Capacity is not configured",
"admin.storages.capacityAria": "{{percent}}% used, {{used}} stored",
"admin.storages.lastChecked": "Checked {{value}}",
"admin.storages.neverChecked": "Not checked yet",
"admin.storages.statusReason.cors": "CORS blocked",
"admin.storages.statusReason.authentication_failed": "Authentication failed",
"admin.storages.statusReason.permission_denied": "Permission denied",
"admin.storages.statusReason.bucket_not_found": "Bucket not found",
"admin.storages.statusReason.network_error": "Network error",
"admin.storages.statusReason.unknown": "Unknown error",
"admin.storages.noMatches": "No storage backends match these filters.",
"admin.storages.searchPlaceholder": "Search bucket, endpoint, region, or provider",
"admin.storages.filter.all": "All",
"admin.storages.filter.healthy": "Healthy",
"admin.storages.filter.attention": "Needs attention",
"admin.storages.filter.failed": "Failed",
"admin.storages.filter.disabled": "Stopped",
"admin.storages.sort.default": "Default order",
"admin.storages.sort.usage": "Usage",
"admin.storages.sort.used": "Used space",
"admin.storages.sort.bucket": "Bucket",
"admin.storages.cardStatus.healthy": "Running normally",
"admin.storages.cardStatus.attention": "Needs attention",
"admin.storages.cardStatus.failed": "Connection failed",
"admin.storages.cardStatus.disabled": "Stopped",
"admin.storages.cardStatus.testing": "Checking",
"admin.storages.overview.backends": "Storage backends",
"admin.storages.overview.enabled": "{{count}} enabled",
"admin.storages.overview.capacity": "Total capacity",
"admin.storages.overview.bounded": "{{count}} capacity-limited",
"admin.storages.overview.used": "Used space",
"admin.storages.overview.usage": "{{percent}}% of capacity",
"admin.storages.overview.health": "Connection health",
"admin.storages.overview.healthy": "Healthy among enabled",
"admin.storages.testAction": "Test connection",
"admin.storages.testDialogTitle": "Storage connection test",
"admin.storages.testStepCreate": "Create temporary upload",
"admin.storages.testStepUpload": "Upload through presigned URL",
"admin.storages.testStepCleanup": "Clean up test object",
"admin.storages.testStepDone": "Done",
"admin.storages.testStepFailed": "Failed",
"admin.storages.testStepRunning": "Running",
"admin.storages.testStepPending": "Pending",
"admin.storages.testSuccess": "Upload test succeeded",
"admin.storages.testNoUploadUrl": "The server did not return an upload URL.",
"admin.storages.testUploadFailed": "Upload failed: {{detail}}",
"admin.storages.testCleanupFailed": "Cleanup failed: {{detail}}",
"admin.storages.testCorsFailure": "The browser could not reach the presigned upload URL. This is usually a bucket CORS or endpoint reachability issue.",
"admin.storages.testCorsConfig": "Bucket CORS policy",
"admin.storages.testCorsCaveat": "Apply CORS like this for the current admin origin, then also verify endpoint, region, bucket name, and credentials.",
"admin.storages.fieldProvider": "Provider",
"admin.storages.providerPlaceholder": "aws-s3",
"admin.storages.providerHint": "Choose from eplist or enter a custom provider.",
"admin.storages.providerCustom": "Custom",
"admin.storages.fieldBucket": "Bucket",
"admin.storages.bucketPlaceholder": "my-bucket",
"admin.storages.fieldEndpoint": "Endpoint",
"admin.storages.endpointPlaceholder": "https://s3.amazonaws.com",
"admin.storages.fieldRegion": "Region",
"admin.storages.regionPlaceholder": "auto",
"admin.storages.fieldAccessKey": "Access Key",
"admin.storages.accessKeyPlaceholder": "AKIA...",
"admin.storages.fieldSecretKey": "Secret Key",
"admin.storages.secretKeyPlaceholder": "Secret access key",
"admin.storages.showSecretKey": "Show secret key",
"admin.storages.hideSecretKey": "Hide secret key",
"admin.storages.fieldForcePathStyle": "Path Style",
"admin.storages.forcePathStyleHint": "Use path-style addressing (endpoint/bucket/key). Turn off for virtual-hosted-style (bucket.endpoint/key).",
"admin.storages.previewTitle": "Request preview",
"admin.storages.previewEmpty": "Enter a bucket and endpoint to preview the request URL.",
"admin.storages.previewPathStyle": "Path-style",
"admin.storages.previewVirtualHostedStyle": "Virtual-hosted-style",
"admin.storages.previewRequestUrl": "SDK request URL",
"admin.storages.previewSigningRegion": "Signing region: {{region}}",
"admin.storages.fieldCapacity": "Capacity",
"admin.storages.capacityPlaceholder": "0",
"admin.storages.capacityHint": "Maximum reported storage space. 0 means capacity is not reported.",
"admin.storages.egressBilling": "Traffic Credits billing",
"admin.storages.capacityBilling": "Capacity billing",
"admin.storages.billingTitle": "Limits and billing",
"admin.storages.billingDescription": "Bucket: {{bucket}}",
"admin.storages.egressBillingHint": "Charge workspace Credits for download traffic from this storage.",
"admin.storages.egressBillingBusinessOnly": "Traffic billing is available with a Business license.",
"admin.storages.egressBillingUnit": "Billing unit",
"admin.storages.egressBillingUnitPlaceholder": "100",
"admin.storages.egressBillingCredits": "Credits per unit",
"admin.storages.egressBillingCreditsPlaceholder": "1",
"admin.storages.egressBillingRate": "{{credits}} Credit per {{unit}}",
"admin.storages.egressBillingOff": "Off",
"admin.storages.billingSaveSuccess": "Storage limits and billing updated.",
"settings.title": "Settings",
"settings.tabProfile": "Profile",
"settings.tabPassword": "Password",
"settings.tabApiKeys": "API Keys",
"settings.tabOAuthApps": "OAuth Apps",
"settings.tabWebDav": "WebDAV",
"settings.tabImageHosting": "Image Hosting",
"settings.profile.section": "Profile",
"settings.profile.displayName": "Display Name",
"settings.profile.username": "Username",
"settings.profile.email": "Email",
"settings.profile.emailReadonly": "Email cannot be changed",
"settings.profile.changePassword": "Change Password",
"settings.profile.currentPassword": "Current Password",
"settings.profile.newPassword": "New Password",
"settings.profile.confirmPassword": "Confirm Password",
"settings.profile.saved": "Profile updated",
"settings.profile.passwordChanged": "Password changed successfully",
"settings.profile.passwordMismatch": "Passwords do not match",
"settings.profile.avatar.section": "Avatar",
"settings.profile.avatar.description": "Click the avatar to upload a new image. Shown across ZPan.",
"settings.profile.avatar.upload": "Upload",
"settings.profile.avatar.remove": "Remove avatar",
"settings.profile.avatar.hint": "PNG, JPG, or WebP. Max 2 MiB.",
"settings.profile.displayName.description": "This is your publicly displayed name.",
"settings.profile.displayName.hint": "Please use 100 characters at maximum.",
"settings.profile.username.description": "Your account username.",
"settings.profile.username.hint": "Username cannot be changed.",
"settings.profile.publicHomepage": "View public homepage",
"settings.profile.email.description": "Used for sign-in and notifications.",
"settings.profile.password.description": "Use a strong password you don't use elsewhere.",
"settings.profile.password.hint": "At least 8 characters.",
"settings.webdav.connection.section": "Connection",
"settings.webdav.connection.description": "Use these values in Finder, Windows Explorer, or Cyberduck.",
"settings.webdav.disabled": "WebDAV has been disabled by the administrator.",
"settings.webdav.url": "Server URL",
"settings.webdav.username": "Username",
"settings.webdav.instructions": "Connect to the server URL with your username and a WebDAV API Key.",
"settings.webdav.copy": "Copy",
"settings.webdav.copied": "Copied",
"settings.apiKeys.section": "API Keys",
"settings.apiKeys.description": "Manage API keys for image hosting, WebDAV, and remote downloads in one place.",
"settings.apiKeys.create": "Create Key",
"settings.apiKeys.createTitle": "Create API Key",
"settings.apiKeys.createDescription": "Choose one preset template. Permissions are fixed by template.",
"settings.apiKeys.nameLabel": "Name",
"settings.apiKeys.namePlaceholder": "e.g. MacBook Finder",
"settings.apiKeys.typeLabel": "Template",
"settings.apiKeys.typeIhost": "Image Hosting",
"settings.apiKeys.typeWebdav": "WebDAV",
"settings.apiKeys.typeRemoteDownload": "Remote Download",
"settings.apiKeys.scopeLabel": "Workspace",
"settings.apiKeys.scopePlaceholder": "Select a workspace",
"settings.apiKeys.scopeAllWorkspaces": "All accessible workspaces",
"settings.apiKeys.scopeUnavailable": "Unavailable workspace ({{orgId}})",
"settings.apiKeys.scopeInvalid": "Invalid scope",
"settings.apiKeys.type.ihost": "Image Hosting",
"settings.apiKeys.type.webdav": "WebDAV",
"settings.apiKeys.type.remote-download": "Remote Download",
"settings.apiKeys.colName": "Name",
"settings.apiKeys.colType": "Type",
"settings.apiKeys.colScope": "Scope",
"settings.apiKeys.colCreated": "Created",
"settings.apiKeys.colLastUsed": "Last Used",
"settings.apiKeys.colActions": "Actions",
"settings.apiKeys.noKeys": "No API keys yet",
"settings.apiKeys.never": "Never",
"settings.apiKeys.copy": "Copy",
"settings.apiKeys.copied": "Copied",
"settings.apiKeys.createSuccess": "API key created",
"settings.apiKeys.createdTitle": "Save Your API Key",
"settings.apiKeys.createdWarning": "This is the only time this key will be shown. Store it securely.",
"settings.apiKeys.revoke": "Revoke",
"settings.apiKeys.revokeTitle": "Revoke API Key",
"settings.apiKeys.revokeConfirm": "Revoke API key \"{{name}}\"? Any clients using it will stop working immediately.",
"settings.apiKeys.revokeSuccess": "API key revoked",
"settings.apiKeys.orgRequired": "Select a workspace before creating this API key.",
"settings.apiKeys.manage": "Manage API Keys",
"settings.oauthApps.workspaceLabel": "Workspace",
"settings.oauthApps.scope.objectsRead": "Files: read objects",
"settings.oauthApps.scope.workspacesDiscover": "Workspaces: discover accessible workspaces",
"settings.oauthApps.scope.objectsCreate": "Files: create objects",
"settings.oauthApps.scope.objectsUpdate": "Files: update objects",
"settings.oauthApps.scope.objectsDelete": "Files: delete objects",
"settings.oauthApps.scope.sharesRead": "Shares: read shares",
"settings.oauthApps.scope.sharesCreate": "Shares: create shares",
"settings.oauthApps.scope.sharesDelete": "Shares: revoke shares",
"settings.oauthApps.scope.quotaRead": "Quota: read workspace quota",
"settings.oauthApps.scope.quotaPurchase": "Quota: purchase workspace storage capacity",
"settings.oauthApps.scope.storageUsageRead": "Storage usage: read workspace usage",
"settings.oauthApps.colWorkspace": "Workspace",
"settings.oauthApps.colScopes": "Scopes",
"settings.oauthApps.colCreated": "Created",
"settings.oauthApps.colLastUsed": "Last Used",
"settings.oauthApps.colActions": "Actions",
"settings.oauthApps.never": "Never",
"settings.oauthApps.revoke": "Revoke",
"settings.oauthApps.oauthConsentEyebrow": "Delegated OAuth access",
"settings.oauthApps.oauthConsentTitle": "Authorize Application",
"settings.oauthApps.oauthConsentDescription": "Review the exact workspace and scopes this application will receive before continuing.",
"settings.oauthApps.oauthClient": "Client",
"settings.oauthApps.oauthOrigin": "ZPan instance",
"settings.oauthApps.oauthReturn": "Return URL",
"settings.oauthApps.oauthLifetime": "Grant lifetime",
"settings.oauthApps.oauthLifetimeValue": "{{days}} days",
"settings.oauthApps.oauthApprove": "Approve Access",
"settings.oauthApps.oauthDeny": "Deny",
"settings.oauthApps.oauthExpiredTitle": "OAuth request expired",
"settings.oauthApps.oauthExpiredDescription": "Start the connection again to create a fresh authorization request.",
"settings.oauthApps.oauthConsentFailed": "Could not finish OAuth consent.",
"settings.oauthApps.oauthWantsAccess": "{{client}} wants to access your workspaces",
"settings.oauthApps.oauthReviewAccess": "Review the workspaces and permissions below. You can revoke this connection later.",
"settings.oauthApps.oauthApplicationOrigin": "Application origin",
"settings.oauthApps.oauthAccessDuration": "Access duration",
"settings.oauthApps.oauthAccessDurationValue": "Up to {{days}} days",
"settings.oauthApps.oauthWorkspaceAccess": "Workspace access",
"settings.oauthApps.oauthWorkspaceHelp": "Choose which workspaces this application may use.",
"settings.oauthApps.oauthPermissions": "Permissions",
"settings.oauthApps.oauthStandardScopeOpenid": "Verify your identity",
"settings.oauthApps.oauthStandardScopeProfile": "Read your basic profile",
"settings.oauthApps.oauthStandardScopeEmail": "Read your email address",
"settings.oauthApps.oauthStandardScopeOfflineAccess": "Keep access while you are away",
"settings.oauthApps.oauthReturnNotice": "After approval, you will return to {{origin}}.",
"settings.oauthApps.oauthWorkspaceFailed": "Could not switch workspace.",
"settings.oauthApps.oauthGrantsSection": "Authorized OAuth Apps",
"settings.oauthApps.oauthGrantsDescription": "Review and revoke apps authorized to access your workspaces.",
"settings.oauthApps.oauthNoGrants": "No authorized OAuth apps yet",
"settings.oauthApps.oauthGrantsError": "Could not load delegated OAuth grants.",
"settings.oauthApps.oauthGrantRevokeTitle": "Revoke OAuth Grant",
"settings.oauthApps.oauthGrantRevokeConfirm": "Revoke {{client}} access to {{workspace}}? Active sessions for this workspace will stop immediately.",
"settings.appearance.theme.description": "Choose how ZPan looks. Follows your system setting by default.",
"settings.appearance.language.description": "The display language for the app.",
"settings.appearance.autoSaved": "Changes apply immediately.",
"settings.profile.avatar.dropZone": "Drop an image here or click Upload to set your avatar",
"settings.profile.avatar.uploaded": "Avatar updated",
"settings.profile.avatar.removed": "Avatar removed",
"settings.profile.avatar.invalidMime": "Only PNG, JPG, and WebP images are allowed",
"settings.profile.avatar.tooLarge": "Image must be 2 MiB or smaller",
"settings.appearance.section": "Appearance",
"settings.appearance.theme": "Theme",
"settings.appearance.themeSystem": "System",
"settings.appearance.themeLight": "Light",
"settings.appearance.themeDark": "Dark",
"settings.appearance.language": "Language",
"preview.download": "Download",
"preview.close": "Close",
"preview.fullscreen": "Fullscreen",
"preview.exitFullscreen": "Exit fullscreen",
"preview.unsupported": "Preview is not available for this file type.",
"preview.loadError": "Failed to load file preview.",
"preview.pageOf": "{{current}} / {{total}}",
"preview.officeLocalHint": "Microsoft Office Viewer requires a public file URL. Localhost previews may not render.",
"preview.nfo.xmlFormat": "XML · {{root}}",
"preview.nfo.mediaInfoFormat": "MediaInfo",
"preview.nfo.textFormat": "Plain text NFO",
"quota.storage": "Storage",
"quota.traffic": "Traffic",
"quota.usage": "{{used}} / {{total}} used",
"quota.usageInvalid": "{{used}} used · invalid storage quota",
"quota.purchased": "{{amount}} purchased or granted",
"quota.purchasedTraffic": "{{amount}} traffic purchased or granted",
"quota.cloudStorageEntitlement": "{{amount}} extra storage",
"quota.trafficUsage": "{{used}} / {{total}} used in {{period}}",
"quota.trafficUsageNoLimit": "{{used}} used in {{period}}",
"common.copied": "Copied",
"common.create": "Create",
"common.save": "Save",
"common.cancel": "Cancel",
"common.delete": "Delete",
"common.edit": "Edit",
"common.actions": "Actions",
"common.active": "Active",
"common.disabled": "Disabled",
"common.configured": "Configured",
"common.notConfigured": "Not configured",
"common.confirm": "Confirm",
"common.copy": "Copy",
"common.close": "Close",
"common.clear": "Clear",
"common.loading": "Loading...",
"common.error": "Error",
"common.success": "Success",
"common.sidebar": "Sidebar",
"common.sidebarDescription": "Displays the mobile sidebar.",
"common.toggleSidebar": "Toggle Sidebar",
"common.optional": "optional",
"common.globalSearchPlaceholder": "Search files, shares, teams and settings…",
"common.globalSearchComingSoon": "Global search is coming soon",
"common.moreOptions": "More options",
"auth.session.loading": "Checking your session...",
"auth.session.errorTitle": "Unable to load your session",
"auth.session.errorDescription": "The server did not respond. Check your connection and try again.",
"auth.session.retry": "Try again",
"teams.title": "Teams",
"teams.tabMembers": "Members",
"teams.tabActivity": "Activity",
"teams.tabSettings": "Settings",
"teams.tabBilling": "Billing",
"teams.empty": "No teams yet. Create one to get started.",
"teams.createNew": "Create Team",
"teams.createTitle": "Create New Team",
"teams.teamName": "Team Name",
"teams.slug": "Slug",
"teams.slugInvalid": "Slug must contain only lowercase letters, numbers, and hyphens",
"teams.logo": "Logo",
"teams.logo.description": "Shown in the team switcher and across teams pages.",
"teams.logo.upload": "Upload",
"teams.logo.remove": "Remove logo",
"teams.logo.hint": "PNG, JPG, or WebP. Max 2 MiB.",
"teams.logo.uploaded": "Logo updated",
"teams.logo.removed": "Logo removed",
"teams.logo.invalidMime": "Only PNG, JPG, and WebP images are allowed",
"teams.logo.tooLarge": "Image must be 2 MiB or smaller",
"teams.teamName.description": "Your team's display name.",
"teams.teamName.hint": "Up to 100 characters.",
"teams.slug.description": "Used in invite links and team URLs.",
"teams.slug.hint": "Lowercase letters, numbers, and hyphens only.",
"teams.memberCount": "{{count}} member(s)",
"teams.created": "Team created",
"teams.settingsTitle": "Team Settings",
"teams.generalSection": "General",
"teams.saved": "Team settings saved",
"teams.dangerZone": "Danger Zone",
"teams.deleteWarning": "Permanently delete this team and all its data. This action cannot be undone.",
"teams.deleteTeam": "Delete Team",
"teams.deleteTitle": "Delete Team",
"teams.deleteConfirm": "Delete team \"{{name}}\"? This action cannot be undone.",
"teams.deleted": "Team deleted",
"teams.loadError": "Failed to load team",
"teams.ownerOnly": "Only the team owner can access this page.",
"teams.members.title": "Members",
"teams.members.you": "You",
"teams.members.joinedOn": "Joined {{date}}",
"teams.members.roleUpdated": "Role updated",
"teams.members.removed": "Member removed",
"teams.members.removeTitle": "Remove Member",
"teams.members.removeConfirm": "Remove {{name}} from this team?",
"teams.members.lastOwnerError": "Cannot demote the last owner",
"teams.members.leave": "Leave Team",
"teams.members.leaveTitle": "Leave Team",
"teams.members.leaveConfirm": "Are you sure you want to leave this team? You will lose access to all team resources.",
"teams.members.leaveDescription": "You can leave this team at any time.",
"teams.members.left": "You have left the team",
"teams.role.owner": "Owner",
"teams.role.admin": "Admin",
"teams.role.member": "Member",
"teams.role.editor": "Editor",
"teams.role.viewer": "Viewer",
"teams.invite.button": "Invite Member",
"teams.invite.title": "Invite Member",
"teams.invite.description": "Invite a new member to join this team.",
"teams.invite.emailTab": "Email Invite",
"teams.invite.linkTab": "Invite Link",
"teams.invite.emailLabel": "Email",
"teams.invite.emailPlaceholder": "member@example.com",
"teams.invite.roleLabel": "Role",
"teams.invite.sendButton": "Send Invite",
"teams.invite.sent": "Invitation sent",
"teams.invite.generateLink": "Generate Invite Link",
"teams.invite.linkGenerated": "Invite link generated",
"teams.invite.copyLink": "Copy Link",
"teams.invite.linkCopied": "Link copied to clipboard",
"teams.invite.linkExpires": "Expires {{date}}",
"teams.invite.pendingTitle": "Pending Invitations",
"teams.invite.noPending": "No pending invitations",
"teams.invite.cancelInvite": "Cancel",
"teams.invite.cancelled": "Invitation cancelled",
"teams.invite.invitedAs": "Invited as {{role}}",
"teams.invite.expiresOn": "Expires {{date}}",
"teams.invite.accept": "Join Team",
"teams.invite.acceptTitle": "Team Invitation",
"teams.invite.acceptDescription": "You've been invited to join {{team}} as {{role}}.",
"teams.invite.accepted": "You've joined the team!",
"teams.invite.invalidToken": "This invite link is invalid or has expired.",
"teams.invite.signInToJoin": "Sign in to Join",
"teams.invite.alreadyMember": "You are already a member of this team.",
"org.mySpace": "My Space",
"org.logoDescription": "Shown in the workspace switcher and workspace pages.",
"org.switchWorkspace": "Switch Workspace",
"org.workspaceName": "Workspace name",
"org.workspaceNameDescription": "The name displayed for this workspace.",
"org.workspaceNameHint": "Up to 100 characters.",
"org.workspaceSettings": "Workspace settings",
"activity.title": "Activity",
"activity.empty": "No activity yet",
"activity.loadError": "Failed to load activity",
"activity.action.upload": "uploaded",
"activity.action.create": "created",
"activity.action.delete": "deleted",
"activity.action.object_update": "updated",
"activity.action.rename": "renamed",
"activity.action.move": "moved",
"activity.action.restore": "restored",
"activity.action.replace": "replaced",
"activity.action.save_from_share": "saved from share",
"activity.action.upload_confirm": "confirmed upload of",
"activity.action.upload_cancel": "cancelled upload of",
"activity.action.upload_failed": "failed to upload",
"activity.action.object_copy": "copied",
"activity.action.object_transfer": "transferred",
"activity.action.object_purge": "permanently deleted",
"activity.action.moved_from_org": "moved from space",
"activity.action.copied_from_org": "copied from space",
"activity.action.moved_to_org": "moved to space",
"activity.action.batch_trash": "moved to trash",
"activity.action.batch_purge": "permanently deleted",
"activity.action.trash_empty": "emptied trash",
"activity.action.share_create": "created share for",
"activity.action.share_revoke": "revoked share",
"activity.action.share_download": "downloaded via share",
"activity.action.object_download": "downloaded",
"activity.action.image_hosting_download": "downloaded hosted image",
"activity.action.webdav_download": "downloaded via WebDAV",
"activity.action.download_failed": "failed to download",
"activity.action.team_create": "created team",
"activity.action.team_invite_link_create": "created invite link for",
"activity.action.team_member_join": "joined",
"activity.action.team_member_remove": "removed member from",
"activity.action.team_member_role_update": "updated member role in",
"activity.action.team_settings_update": "updated settings of",
"activity.action.team_delete": "deleted team",
"activity.action.team_logo_update": "updated logo of",
"activity.action.team_logo_delete": "removed logo of",
"activity.action.system_option_set": "set system option",
"activity.action.system_option_delete": "deleted system option",
"activity.action.storage_create": "created storage",
"activity.action.storage_update": "updated storage",
"activity.action.storage_delete": "deleted storage",
"activity.action.quota_update": "updated quota for",
"activity.action.quota_entitlement_grant": "granted quota entitlement for",
"activity.action.quota_entitlement_update": "updated quota entitlement for",
"activity.action.quota_entitlement_revoke": "revoked quota entitlement for",
"activity.action.quota_order_increase": "increased quota from order",
"activity.action.quota_order_decrease": "decreased quota from order",
"activity.action.invite_code_generate": "generated invite codes",
"activity.action.invite_code_delete": "deleted invite code",
"activity.action.site_invitation_create": "sent site invitation to",
"activity.action.site_invitation_revoke": "revoked site invitation",
"activity.action.user_disable": "disabled user",
"activity.action.user_enable": "enabled user",
"activity.action.user_register": "registered user",
"activity.action.user_delete": "deleted user",
"activity.action.site_identity_update": "updated site identity",
"activity.action.site_registration_update": "updated registration settings",
"activity.action.site_captcha_update": "updated CAPTCHA settings",
"activity.action.site_quotas_update": "updated quota settings",
"activity.action.site_webdav_update": "updated WebDAV settings",
"activity.action.site_webdav_verify": "verified WebDAV settings",
"activity.action.license_pair": "paired license",
"activity.action.license_refresh": "refreshed license",
"activity.action.license_disconnect": "disconnected license",
"activity.action.branding_update": "updated branding",
"activity.action.branding_reset": "reset branding field",
"activity.action.download_task_created": "created download task",
"activity.action.download_task_pause_requested": "requested download pause",
"activity.action.download_task_resume_requested": "requested download resume",
"activity.action.download_task_cancel_requested": "requested download cancel",
"activity.action.download_task_retry_requested": "requested download retry",
"activity.action.download_task_restart_requested": "requested download restart",
"activity.action.download_task_deleted": "deleted download task",
"activity.target.file": "file",
"activity.target.folder": "folder",
"activity.target.image": "image",
"activity.target.share": "share",
"activity.target.team": "team",
"activity.target.system": "system option",
"activity.target.storage": "storage",
"activity.target.quota": "quota",
"activity.target.invite_code": "invite code",
"activity.target.site_invitation": "site invitation",
"activity.target.user": "user",
"activity.target.license": "license",
"activity.target.branding": "branding",
"activity.target.site_settings": "site settings",
"activity.target.download_task": "download task",
"activity.meta.from": "from",
"activity.meta.to": "to",
"activity.loadMore": "Load more",
"notification.title": "Notifications",
"notification.markAllRead": "Mark all as read",
"notification.empty": "No notifications yet",
"notification.viewAll": "View all",
"notification.justNow": "Just now",
"notification.minutesAgo": "{{count}}m ago",
"notification.hoursAgo": "{{count}}h ago",
"notification.daysAgo": "{{count}}d ago",
"notification.shareReceived.title": "{{creatorName}} shared \"{{matterName}}\" with you",
"notification.shareReceived.body": "Click to open the share",
"notification.action.extraction": "extraction",
"notification.action.compression": "compression",
"notification.archiveCompleted": "File {{action}} completed",
"notification.archiveCompletedBody": "The background task is complete.",
"notification.archiveFailed": "File {{action}} failed",
"notification.archiveFailedBody": "The background task failed.",
"notification.teamJoin.title": "You joined {{teamName}}",
"notification.teamJoin.body": "You now have access to this team's space.",
"announcement.title": "Site Announcements",
"announcement.description": "Read current announcements from the site administrator.",
"announcement.empty": "No announcements published yet",
"announcement.viewAll": "View announcements",
"announcement.status.draft": "Draft",
"announcement.status.published": "Published",
"announcement.status.archived": "Archived",
"announcement.pinned": "Pinned",
"shares.title": "My Shares",
"shares.filterAll": "All",
"shares.filterActive": "Active",
"shares.filterRevoked": "Revoked",
"shares.filterExpired": "Expired",
"shares.colFile": "File",
"shares.colType": "Type",
"shares.colRecipients": "Recipients",
"shares.colAccess": "Access",
"shares.colViews": "Views",
"shares.colDownloads": "Downloads",
"shares.colExpires": "Expires",
"shares.colStatus": "Status",
"shares.colActions": "Actions",
"shares.typeLanding": "Landing",
"shares.typePage": "Access Page",
"shares.typeTargeted": "Targeted",
"shares.typeDirect": "Direct",
"shares.recipientsPublic": "Public",
"shares.accessPublic": "Anyone with the link",
"shares.accessTargeted": "{{count}} specific people",
"shares.statusActive": "Active",
"shares.statusRevoked": "Revoked",
"shares.statusExpired": "Expired",
"shares.expiresNever": "Never",
"shares.expiresInDays": "in {{count}}d",
"shares.expiresInHours": "today",
"shares.expiredToday": "today",
"shares.expiredDaysAgo": "{{count}}d ago",
"shares.copyUrl": "Copy URL",
"shares.revoke": "Revoke",
"shares.urlCopied": "URL copied to clipboard",
"shares.revokeTitle": "Revoke Share",
"shares.revokeConfirm": "Revoke share for {{name}}? Anyone with the link will lose access immediately. This cannot be undone.",
"shares.revokeSuccess": "Share revoked",
"shares.revokeError": "Failed to revoke share",
"shares.makePublic": "Make public",
"shares.makePrivate": "Make private",
"shares.makePublicSuccess": "Share is now visible on your public profile",
"shares.makePrivateSuccess": "Share is now hidden from your public profile",
"shares.privacyError": "Failed to update share privacy",
"shares.emptyState": "No shares yet",
"shares.emptyStateHint": "Right-click a file to create your first share",
"shares.boxSent": "My shares",
"shares.boxReceived": "Received",
"shares.colFrom": "From",
"shares.openShare": "Open",
"shares.receivedEmptyState": "Nothing shared with you yet",
"shares.receivedEmptyStateHint": "Shares addressed to you will appear here and in your notifications",
"shares.detailTitle": "Share Details",
"shares.detailLandingUrl": "Access Page URL",
"shares.detailDirectUrl": "Direct URL",
"shares.detailCreatedAt": "Created",
"shares.detailRecipients": "Recipients",
"shares.detailNoRecipients": "Public (no recipients)",
"shares.prevPage": "Previous",
"shares.nextPage": "Next",
"shares.pageInfo": "Page {{page}} of {{total}}",
"shares.count": "{{count}} shares",
"share.menuItem": "Share",
"share.title": "Share \"{{name}}\"",
"share.modeLabel": "Share Mode",
"share.typeLanding": "Landing page",
"share.typeLandingDesc": "With access controls",
"share.typePage": "Access page",
"share.typePageDesc": "Create a share page with password, expiry, and download controls",
"share.typeTargeted": "Specific people",
"share.typeTargetedDesc": "Share only with selected email addresses, without password setup",
"share.typeDirect": "Direct link",
"share.typeDirectDesc": "Raw download URL for files only",
"share.typeDirectFolderTooltip": "Direct links work for files only",
"share.recipients": "Send to",
"share.recipientsPlaceholder": "email@example.com",
"share.recipientsHint": "These email addresses get targeted access, still subject to expiry and download limits",
"share.password": "Password",
"share.passwordHint": "Only access pages support password protection. Anyone with the link must enter the password first.",
"share.private": "Private share",
"share.privateHint": "Hide this share from your public profile. Anyone with the URL can still access it.",
"share.generatePassword": "Generate",
"share.expires": "Expires",
"share.expires1d": "1 day",
"share.expires7d": "7 days",
"share.expires30d": "30 days",
"share.expiresNever": "Never",
"share.expiresCustom": "Custom date",
"share.downloadLimit": "Download limit",
"share.limitUnlimited": "Unlimited",
"share.limit10": "10 downloads",
"share.limit100": "100 downloads",
"share.limitCustom": "Custom number",
"share.directWarning": "Anyone with this URL can download. Use this only for embedding/distribution.",
"share.createButton": "Create Share",
"share.creating": "Creating...",
"share.successTitle": "Link created",
"share.successTargetedTitle": "Targeted share created",
"share.landingUrl": "Landing page",
"share.pageUrl": "Access page",
"share.directUrl": "Direct link (raw URL)",
"share.directUrlWarning": "This is a public direct link, embed anywhere.",
"share.copyUrl": "Copy",
"share.urlCopied": "URL copied to clipboard",
"share.notifiedRecipients": "Notified {{count}} recipient(s)",
"share.addedRecipients": "Added {{count}} recipient(s)",
"share.expiresOn": "Expires {{date}}",
"share.limitedDownloads": "Limited to {{count}} downloads",
"share.viewMyShares": "View in My Shares",
"share.done": "Done",
"share.invalidExpiry": "Custom expiry must be a future date",
"share.invalidLimit": "Download limit must be a positive number",
"profile.noShares": "No shared files yet",
"profile.notFound": "User not found",
"profile.avatarAlt": "{{name}}'s avatar",
"profile.publicSpaceTitle": "{{name}}'s public space",
"profile.publicSpaceDescription": "Files and folders publicly shared by {{name}}.",
"profile.statsLabel": "Public content overview",
"profile.publicItems": "Public items",
"profile.folders": "Folders",
"profile.files": "Files",
"profile.publicContent": "Public content",
"profile.itemCount": "{{count}} items",
"profile.tableLabel": "Content publicly shared by {{name}}",
"profile.colName": "Name",
"profile.colType": "Type",
"profile.colSize": "Size",
"profile.folder": "Folder",
"profile.open": "Open",
"public.skipToContent": "Skip to content",
"public.toggleTheme": "Toggle theme",
"files.share": "Share",
"share.notFound": "Share Not Found",
"share.notFoundDesc": "This share link doesn't exist or has been removed.",
"share.gone": "File Deleted",
"share.goneDesc": "The file behind this link has been permanently deleted.",
"share.expired": "Share Expired",
"share.expiredDesc": "This share link has expired.",
"share.exhausted": "Download Limit Reached",
"share.exhaustedDesc": "This share has reached its maximum number of downloads.",
"share.browseZPan": "Browse ZPan",
"share.passwordTitle": "Password Protected",
"share.passwordDesc": "Enter the password to access this file.",
"share.passwordLabel": "Password",
"share.passwordPlaceholder": "Enter password",
"share.passwordSubmit": "Unlock",
"share.passwordWrong": "Wrong password. Please try again.",
"share.download": "Download",
"share.downloadFile": "Download file",
"share.saveToDrive": "Save to My Drive",
"share.sharedBy": "Shared by {{name}}",
"share.sharedByPrefix": "Shared by",
"share.creatorLink": "{{name}}'s public profile",
"share.expiresValue": "Expires {{date}}",
"share.noExpiry": "Never",
"share.information": "Share information",
"share.creator": "Shared by",
"share.fileType": "File type",
"share.fileSize": "File size",
"share.downloadCount": "Downloads",
"share.downloadCountValue": "{{count}} downloads",
"share.expiry": "Expires",
"share.folderType": "Folder",
"share.readmeOwnerHint": "This folder has no README.md. Add one to the folder root to provide a public description.",
"share.readmeLoadError": "Failed to load README.md.",
"share.folderTitle": "Shared Folder",
"share.folderRoot": "Root",
"share.folderEmpty": "This folder is empty.",
"share.colName": "Name",
"share.colSize": "Size",
"share.colActions": "Actions",
"share.saveToDriveTitle": "Save to My Drive",
"share.workspaceLabel": "Workspace",
"share.workspacePlaceholder": "Select workspace",
"share.folderLabel": "Destination Folder",
"share.folderPlaceholder": "Select folder (optional, defaults to root)",
"share.saveButton": "Save",
"share.saveSuccess": "Saved {{count}} item(s)",
"share.saveError": "Failed to save",
"share.quotaExceeded": "Workspace is over quota",
"share.passwordRequired": "Password required",
"share.shareUnavailable": "This share is no longer available",
"share.loading": "Loading share...",
"share.loadError": "Failed to load share",
"share.previewUnavailable": "Preview not available",
"share.previewDownloadHint": "Download the file to view it",
"share.externalLabel": "External share",
"share.externalBadge": "Public access page",
"share.externalTagline": "Secure file sharing",
"share.externalFolderSubtitle": "Browse shared content in a read-only workspace. Download is allowed, all editing actions are disabled.",
"share.externalFileSubtitle": "Preview and download this file from the public share page.",
"share.readonlyHint": "Read-only browser. Only navigation and download are available.",
"share.openWorkspace": "Open workspace",
"share.passwordOnce": "Password is only shown once — save it before closing",
"share.copyShareText": "Copy share text",
"share.textCopied": "Share text copied to clipboard",
"share.shareTextTemplate": "Link: {{url}}\nPassword: {{password}}",
"ihost.title": "Image Hosting",
"ihost.enableCta.title": "Enable Image Hosting",
"ihost.enableCta.description": "Upload images via PicGo, uPic, ShareX or the Web UI. Get permanent URLs on your own domain.",
"ihost.enableCta.button": "Enable",
"ihost.enableCta.adminOnly": "Only workspace admins can enable this feature.",
"ihost.empty.title": "No images yet",
"ihost.empty.description": "Drag and drop or paste an image to upload.",
"ihost.copy.url": "Copy URL",
"ihost.copy.raw": "Copy URL",
"ihost.copy.markdown": "Copy as Markdown",
"ihost.copy.html": "Copy as HTML",
"ihost.copy.bbcode": "Copy as BBCode",
"ihost.copy.copied": "Copied URL",
"ihost.delete.title": "Delete Image",
"ihost.delete.description": "Delete this image? This cannot be undone.",
"ihost.delete.undoToast": "Image deleted",
"ihost.delete.undo": "Undo",
"ihost.upload.progress": "Uploading {{name}}...",
"ihost.upload.failed": "Failed to upload {{name}}",
"ihost.table.dimensions": "Dimensions",
"ihost.table.accessCount": "Views",
"settings.ihost.title": "Image Hosting Settings",
"settings.ihost.lockedTitle": "Admin Access Required",
"settings.ihost.lockedDescription": "Only workspace owners and admins can manage Image Hosting settings.",
"settings.ihost.customDomain.section": "Custom Domain",
"settings.ihost.customDomain.description": "Serve images from your own domain.",
"settings.ihost.customDomain.proTooltip": "Custom image domains require ZPan Pro or Business.",
"settings.ihost.customDomain.upgradeTitle": "Unlock a custom image domain",
"settings.ihost.customDomain.upgradeDescription": "Upgrade to ZPan Pro to connect a custom domain to this workspace.",
"settings.ihost.customDomain.label": "Domain",
"settings.ihost.customDomain.placeholder": "img.example.com",
"settings.ihost.customDomain.save": "Save",
"settings.ihost.customDomain.remove": "Remove Domain",
"settings.ihost.customDomain.removeConfirm": "Remove the custom domain? Images will continue to be accessible via token URLs.",
"settings.ihost.customDomain.saved": "Custom domain saved",
"settings.ihost.customDomain.removed": "Custom domain removed",
"settings.ihost.customDomain.invalidHostname": "Enter a valid hostname (e.g. img.example.com)",
"settings.ihost.customDomain.statusVerified": "Verified",
"settings.ihost.customDomain.statusPendingDns": "Pending DNS",
"settings.ihost.customDomain.statusPendingTls": "Pending TLS",
"settings.ihost.customDomain.statusFailed": "Verification failed",
"settings.ihost.customDomain.statusNone": "No domain configured",
"settings.ihost.customDomain.dnsTitle": "DNS Configuration",
"settings.ihost.customDomain.dnsInstructions": "Add these records at your DNS provider:",
"settings.ihost.customDomain.dnsType": "Type",
"settings.ihost.customDomain.dnsName": "Name",
"settings.ihost.customDomain.dnsTarget": "Target",
"settings.ihost.customDomain.copied": "Copied",
"settings.ihost.customDomain.copy": "Copy",
"settings.ihost.customDomain.challengeInstructions": "After DNS takes effect, open this path through your custom domain to complete verification:",
"settings.ihost.customDomain.refresh": "Refresh Status",
"settings.ihost.customDomain.manualTitle": "Self-hosted DNS Setup",
"settings.ihost.customDomain.manualInstructions": "Configure your reverse proxy to forward requests for this domain to the ZPan server. See the self-host admin docs for Caddy/Nginx setup.",
"settings.ihost.customDomain.pollingStopped": "Automatic polling stopped. Click Refresh to check again.",
"settings.ihost.refererAllowlist.section": "Referer Allowlist",
"settings.ihost.refererAllowlist.description": "Restrict which sites can embed your images. Leave empty to allow all origins.",
"settings.ihost.refererAllowlist.placeholder": "https://example.com\nhttps://blog.example.com",
"settings.ihost.refererAllowlist.save": "Save Allowlist",
"settings.ihost.refererAllowlist.saved": "Referer allowlist saved",
"settings.ihost.refererAllowlist.invalidOrigin": "Line {{line}}: \"{{value}}\" is not a valid origin (e.g. https://example.com)",
"settings.ihost.disable.section": "Disable Image Hosting",
"settings.ihost.disable.description": "This will remove your custom domain configuration. Uploaded images will remain in your storage and remain accessible via token URLs.",
"settings.ihost.disable.button": "Disable",
"settings.ihost.disable.title": "Disable Image Hosting",
"settings.ihost.disable.confirmLabel": "Type DISABLE to confirm",
"settings.ihost.disable.confirmPlaceholder": "DISABLE",
"settings.ihost.disable.confirmButton": "Disable Image Hosting",
"settings.ihost.disable.success": "Image hosting disabled",
"settings.ihost.tools.section": "Tool Integration",
"settings.ihost.tools.description": "Upload from your favorite tools. Pick a tool below to generate its configuration.",
"settings.ihost.tools.apiKeyHint": "Create or manage Image Hosting API Keys from the API Keys tab.",
"settings.ihost.tools.keyLabel": "API Key",
"settings.ihost.tools.keyPlaceholder": "Select an API key",
"settings.ihost.tools.pasteKeyLabel": "Paste your key",
"settings.ihost.tools.pasteKeyPlaceholder": "Paste the plaintext key you saved at creation",
"settings.ihost.tools.pasteKeyHint": "Keys are only shown once at creation. Paste the key you saved. It is not stored beyond this session.",
"settings.ihost.tools.copy": "Copy",
"settings.ihost.tools.copiedLabel": "Copied!",
"settings.ihost.tools.copied": "Copied to clipboard",
"settings.ihost.tools.picgo.instructions": "Install picgo-plugin-web-uploader via the PicGo Plugin Manager. Then go to Settings → Uploader → Custom Web and fill in each field below:",
"settings.ihost.tools.upic.instructions": "In uPic, go to Preferences → Host → Add → Custom. Fill in each field below. Add the Authorization header via the Headers button:",
"settings.ihost.tools.sharex.instructions": "Download the .sxcu file and double-click it to import into ShareX. ShareX will automatically set ZPan as a custom uploader.",
"settings.ihost.tools.sharex.download": "Download .sxcu",
"settings.tabBilling": "Billing",
"settings.billing.intro": "Unlock the operator-grade and commercial features of ZPan Pro and Business. Purchase or redeem a license on ZPan Cloud, then connect to activate.",
"settings.billing.connectButton": "Connect to ZPan Cloud",
"settings.billing.comparison.title": "Feature Comparison",
"settings.billing.comparison.feature": "Feature",
"settings.billing.comparison.community": "Free",
"settings.billing.comparison.pro": "Pro",
"settings.billing.comparison.business": "Business",
"settings.billing.comparison.comingSoon": "Coming Soon",
"features.category.core": "Core Features",
"features.category.pro": "Pro Features",
"features.category.business": "Business Features",
"features.coreFileManagement": "Core File Management",
"features.socialLoginOidc": "Social Login & OIDC",
"features.inviteCodes": "Invite Codes",
"features.openRegistration": "Open Registration",
"features.multiIdpSso": "Multi-IdP SSO (SAML)",
"features.ldapScim": "LDAP & SCIM Sync",
"features.teamWorkspaces": "Team Workspaces",
"features.teamWorkspaces.limit": "Up to {{count}} team",
"features.teamWorkspaces.unlimited": "Unlimited",
"features.storageBackends": "Storages",
"features.storageBackends.limit": "Up to {{count}} storages",
"features.storageBackends.unlimited": "Unlimited",
"features.shareLinks": "Link Sharing",
"features.imageHosting": "Image Hosting",
"features.imageCustomDomains": "Image Custom Domains",
"features.whiteLabel": "Custom Branding",
"features.auditLog": "Audit Logs",
"features.cloudStore": "Sell Storage & Traffic",
"features.siteAnnouncements": "Site Announcements",
"features.webhooks": "Event Webhooks",
"features.analytics": "Analytics",
"settings.billing.pairing.title": "Connect to ZPan Cloud",
"settings.billing.pairing.description": "Follow the steps below to bind this instance to your ZPan Cloud account.",
"settings.billing.pairing.step1": "1. Visit",
"settings.billing.pairing.step2": "2. Sign in to your ZPan Cloud account",
"settings.billing.pairing.step3": "3. Enter the code:",
"settings.billing.pairing.openDashboard": "Open cloud dashboard",
"settings.billing.pairing.waiting": "Waiting for approval…",
"settings.billing.pairing.cancel": "Cancel",
"settings.billing.pairing.retry": "Retry",
"settings.billing.pairing.denied": "Pairing was denied. Please try again.",
"settings.billing.pairing.expired": "Pairing code has expired. Please try again.",
"settings.billing.pairing.error": "Pairing failed. Please try again.",
"settings.billing.pairing.certError": "Paired, but the license certificate could not be verified — the cloud signing key isn't trusted by this instance. Check your key configuration (ZPAN_LICENSE_PUBLIC_KEYS) and try again.",
"settings.billing.pairing.connected": "Connected to ZPan Cloud ({{email}})",
"settings.billing.bound.pro.title": "Pro License",
"settings.billing.bound.business.title": "Business License",
"settings.billing.bound.active": "Licensed",
"settings.billing.bound.syncIssue": "Refresh issue",
"settings.billing.bound.licensedTo": "Licensed to {{email}}",
"settings.billing.bound.issuedTo": "Licensed to {{email}}",
"settings.billing.bound.issuedByCloud": "Issued by ZPan Cloud",
"settings.billing.bound.pro.description": "A valid Pro license certificate is installed for this site.",
"settings.billing.bound.business.description": "A valid Business license certificate is installed for this site.",
"settings.billing.bound.unknownAccount": "Unknown account",
"settings.billing.bound.cloudAccount": "Cloud Account",
"settings.billing.bound.cloudSync": "Cloud sync",
"settings.billing.bound.plan": "Plan",
"settings.billing.bound.planCommunity": "Free",
"settings.billing.bound.planPro": "Pro",
"settings.billing.bound.pro.features": "Unlocked Pro features",
"settings.billing.bound.business.features": "Unlocked Business features",
"settings.billing.bound.pro.noFeatures": "No Pro features are currently unlocked.",
"settings.billing.bound.business.noFeatures": "No Business features are currently unlocked.",
"settings.billing.bound.expiresAt": "Expires At",
"settings.billing.bound.offlineGraceUntil": "Offline grace until",
"settings.billing.bound.lastRefresh": "Last Refresh",
"settings.billing.bound.lastRefreshError": "Certificate refresh failed",
"settings.billing.bound.never": "Never",
"settings.billing.bound.manageButton": "Manage on Cloud",
"settings.billing.bound.actionsMenu": "License actions",
"settings.billing.bound.refreshButton": "Refresh certificate",
"settings.billing.bound.refreshing": "Refreshing…",
"settings.billing.bound.refreshSuccess": "License certificate refreshed",
"settings.billing.bound.refreshError": "Refresh failed",
"settings.billing.bound.disconnectButton": "Remove license",
"settings.billing.bound.pro.disconnectTitle": "Remove Pro License",
"settings.billing.bound.business.disconnectTitle": "Remove Business License",
"settings.billing.bound.pro.disconnectConfirm": "This will remove the local Pro license certificate and Cloud binding. Pro features will be locked immediately.",
"settings.billing.bound.business.disconnectConfirm": "This will remove the local Business license certificate and Cloud binding. Business features will be locked immediately.",
"settings.billing.bound.pro.disconnectSuccess": "Pro license removed",
"settings.billing.bound.business.disconnectSuccess": "Business license removed",
"settings.billing.bound.disconnectError": "Failed to remove license",
"admin.licenseRibbon.community": "Free",
"admin.licenseRibbon.pro": "Pro",
"admin.licenseRibbon.business": "Business",
"admin.licenseRibbon.ariaLabel": "{{edition}} edition",
"admin.about.title": "About ZPan",
"admin.about.subtitle": "Version, instance details, and helpful links.",
"admin.about.instanceTitle": "Instance",
"admin.about.instanceName": "Name",
"admin.about.instanceId": "Instance ID",
"admin.about.url": "URL",
"admin.about.version": "Version",
"admin.about.edition": "Edition",
"admin.about.inactive": "Inactive",
"admin.about.runtime": "Runtime",
"admin.about.platform": "Platform",
"admin.about.server": "Server",
"admin.about.nodeVersion": "Node.js",
"admin.about.latestVersion": "Latest version",
"admin.about.updateAvailable": "Update available",
"admin.about.upToDate": "Up to date",
"admin.about.commit": "Commit",
"admin.about.refresh": "Refresh changelog",
"admin.about.changelogTitle": "Changelog",
"admin.about.changelogSubtitle": "What's new in each release.",
"admin.about.changelogError": "Could not load the changelog. Check your connection to GitHub and try again.",
"admin.about.github.title": "Open Source",
"admin.about.github.description": "ZPan is open source. If it helps you, give us a star on GitHub.",
"admin.about.github.cta": "Star on GitHub",
"admin.about.cloud.title": "ZPan Cloud",
"admin.about.cloud.description": "Unlock Pro features and priority support with a ZPan Cloud license.",
"admin.about.cloud.descriptionBound": "View your license certificate and manage the binding on ZPan Cloud.",
"admin.about.cloud.cta": "Upgrade to Pro",
"admin.about.cloud.viewCert": "View Certificate",
"admin.cloudStore.title": "Storage Plans",
"admin.cloudStore.subtitle": "Manage purchasable storage plans and gift cards for personal and team workspaces.",
"admin.cloudStore.enabled": "Enabled",
"admin.cloudStore.saved": "Storage plans updated",
"admin.cloudStore.packageSaved": "Plan saved",
"admin.cloudStore.packagePublished": "Plan published",
"admin.cloudStore.packageUnpublished": "Plan unpublished",
"admin.cloudStore.packageDeleted": "Plan deleted",
"admin.cloudStore.tabError": "Unable to load this area.",
"admin.cloudStore.tabs.packages": "Plans",
"admin.cloudStore.tabs.codes": "Gift Cards",
"admin.cloudStore.tabs.orders": "Orders",
"admin.cloudStore.settingsTitle": "Storage plan availability",
"admin.cloudStore.settingsDescription": "Manage whether users can purchase storage or apply gift cards on this instance.",
"admin.cloudStore.storeStatus": "Store Status",
"admin.cloudStore.storeTip.open": "Users can buy storage and apply gift cards from the front-end Storage page.",
"admin.cloudStore.storeTip.closed": "Users cannot purchase storage or apply gift cards from the front-end Storage page.",
"admin.cloudStore.cloudConnection": "Cloud Connection",
"admin.cloudStore.cloud.connected": "Connected",
"admin.cloudStore.cloud.notConnected": "Not connected",
"admin.cloudStore.cloudTip.connected": "This instance is connected to ZPan Cloud for storage plan delivery.",
"admin.cloudStore.cloudTip.notConnected": "Connect this instance to ZPan Cloud before relying on storage plan delivery.",
"admin.cloudStore.newPackage": "New plan",
"admin.cloudStore.newCreditPackage": "New Credits package",
"admin.cloudStore.editPackage": "Edit plan",
"admin.cloudStore.editCreditPackage": "Edit Credits package",
"admin.cloudStore.packageName": "Name",
"admin.cloudStore.planName": "Plan name",
"admin.cloudStore.creditPackageName": "Credits package",
"admin.cloudStore.description": "Description",
"admin.cloudStore.billingMode": "Billing",
"admin.cloudStore.billingSubscription": "Subscription",
"admin.cloudStore.billingOneTime": "Fixed-duration package",
"admin.cloudStore.validityDays": "Valid days",
"admin.cloudStore.size": "Size",
"admin.cloudStore.unit": "Unit",
"admin.cloudStore.storageQuota": "Storage quota",
"admin.cloudStore.trafficQuota": "Download traffic quota",
"admin.cloudStore.includedCredits": "Included Credits",
"admin.cloudStore.creditAmount": "Credits",
"admin.cloudStore.trafficOveragePrice": "Traffic overage price",
"admin.cloudStore.quotaOptionalHint": "Leave blank to omit",
"admin.cloudStore.quotaRequired": "Storage quota must be set.",
"admin.cloudStore.validityRequired": "Valid days must be greater than 0.",
"admin.cloudStore.prices": "Prices",
"admin.cloudStore.usdAmount": "Package amount (USD)",
"admin.cloudStore.usdMonthlyAmount": "Monthly price (USD)",
"admin.cloudStore.usdYearlyAmount": "Yearly price (USD)",
"admin.cloudStore.usdTrafficOveragePrice": "Traffic overage price / GB (USD)",
"admin.cloudStore.sortOrder": "Sort order",
"admin.cloudStore.active": "Active",
"admin.cloudStore.publish": "Publish",
"admin.cloudStore.unpublish": "Unpublish",
"admin.cloudStore.deleteTitle": "Delete plan",
"admin.cloudStore.deleteCreditTitle": "Delete Credits package",
"admin.cloudStore.deleteConfirm": "Delete {{name}}? This removes the plan from ZPan Cloud so users cannot buy it anymore. Existing purchases and delivered quota are not changed.",
"admin.cloudStore.noPackages": "No storage plans configured.",
"admin.cloudStore.noPlans": "No storage plans configured.",
"admin.cloudStore.noCreditPackages": "No Credits packages configured.",
"admin.cloudStore.planProductsTitle": "Subscription plans",
"admin.cloudStore.planProductsDescription": "Plans grant storage and included Credits every billing period.",
"admin.cloudStore.creditProductsTitle": "Credits packages",
"admin.cloudStore.creditProductsDescription": "One-time top-ups sold separately from subscription plans.",
"admin.cloudStore.packages.filterAll": "All plans",
"admin.cloudStore.packages.filterActive": "Active only",
"admin.cloudStore.packages.filterDisabled": "Disabled only",
"admin.cloudStore.codes.generateTitle": "Generate gift cards",
"admin.cloudStore.codes.generateDescription": "Create gift cards users can apply during checkout.",
"admin.cloudStore.codes.listTitle": "Gift cards",
"admin.cloudStore.codes.credits": "Credits",
"admin.cloudStore.codes.expiresAt": "Optional expiry",
"admin.cloudStore.codes.count": "Batch count",
"admin.cloudStore.codes.generate": "Generate",
"admin.cloudStore.codes.generated": "Gift cards generated",
"admin.cloudStore.codes.disabled": "Gift card disabled",
"admin.cloudStore.codes.disable": "Disable",
"admin.cloudStore.codes.disableTitle": "Disable gift card",
"admin.cloudStore.codes.disableConfirm": "Disable {{code}}? It will no longer be accepted during checkout. Existing orders are not changed.",
"admin.cloudStore.codes.deleted": "Gift card deleted",
"admin.cloudStore.codes.delete": "Delete",
"admin.cloudStore.codes.deleteTitle": "Delete gift card",
"admin.cloudStore.codes.deleteConfirm": "Delete {{code}}? This gift card will be removed from management.",
"admin.cloudStore.codes.code": "Code",
"admin.cloudStore.codes.storage": "Amount",
"admin.cloudStore.codes.uses": "Redemptions",
"admin.cloudStore.codes.expires": "Expires",
"admin.cloudStore.codes.statusLabel": "Status",
"admin.cloudStore.codes.status.all": "All",
"admin.cloudStore.codes.status.active": "Active",
"admin.cloudStore.codes.status.redeemed": "Redeemed",
"admin.cloudStore.codes.status.disabled": "Disabled",
"admin.cloudStore.codes.status.expired": "Expired",
"admin.cloudStore.codes.status.revoked": "Revoked",
"admin.cloudStore.codes.empty": "No gift cards match this filter.",
"admin.cloudStore.orders.empty": "No orders yet.",
"admin.cloudStore.orders.order": "Order",
"admin.cloudStore.orders.source": "Payment",
"admin.cloudStore.orders.status": "Status",
"admin.cloudStore.orders.paymentStatus": "Payment status",
"admin.cloudStore.orders.fulfillmentStatus": "Fulfillment status",
"admin.cloudStore.orders.storage": "Quota",
"admin.cloudStore.orders.planQuota": "Plan quota",
"admin.cloudStore.orders.storageQuota": "{{size}} storage",
"admin.cloudStore.orders.trafficQuota": "{{size}} traffic",
"admin.cloudStore.orders.target": "Target",
"admin.cloudStore.orders.customer": "User",
"admin.cloudStore.orders.amount": "Amount",
"admin.cloudStore.orders.subtotal": "Subtotal",
"admin.cloudStore.orders.discount": "Discount",
"admin.cloudStore.orders.reference": "Reference",
"admin.cloudStore.orders.createdAt": "Created",
"admin.cloudStore.orders.paidAt": "Paid",
"admin.cloudStore.orders.fulfilledAt": "Fulfilled",
"admin.cloudStore.orders.canceledAt": "Canceled",
"admin.cloudStore.orders.viewDetails": "View order details",
"admin.cloudStore.orders.detailTitle": "Order details",
"admin.cloudStore.orders.summary": "Summary",
"admin.cloudStore.orders.items": "Items",
"admin.cloudStore.orders.payments": "Payments",
"admin.cloudStore.orders.timeline": "Timeline",
"admin.cloudStore.orders.buyerAccount": "Buyer account",
"admin.cloudStore.orders.store": "Store",
"admin.cloudStore.orders.quantity": "Quantity",
"admin.cloudStore.orders.unitAmount": "Unit amount",
"admin.cloudStore.orders.productType": "Product type",
"admin.cloudStore.orders.provider": "Provider",
"admin.cloudStore.orders.noPayments": "No payments recorded.",
"storage.title": "Storage",
"storage.subtitle": "Review this workspace's storage quota, subscription plan, and Credits.",
"storage.managementSubtitle": "Understand what is using space and clean up files you no longer need.",
"storage.expandStorage": "Get more storage",
"storage.available": "Available",
"storage.usageAria": "{{used}} used of {{total}}",
"storage.scanning": "Analyzing this workspace…",
"storage.scannedFiles": "{{count}} files analyzed",
"storage.scanFailed": "Storage analysis could not be completed.",
"storage.spaceUsage": "Space usage",
"storage.byFileType": "Review and manage storage by file type",
"storage.fileCount": "{{count}} files",
"storage.category.photos": "Photos",
"storage.category.videos": "Videos",
"storage.category.music": "Audio",
"storage.category.documents": "Documents",
"storage.category.archives": "Archives",
"storage.category.other": "Other",
"storage.category.image_hosting": "Image hosting",
"storage.category.trash": "Trash",
"storage.categorySummary": "{{count}} files · {{size}} shown",
"storage.noFiles": "No files in this category.",
"storage.goManage": "Go to manage",
"storage.manageFilesTitle": "Manage storage",
"storage.manageFilesDescription": "Review files by type and permanently remove items you no longer need.",
"storage.fileType": "File type",
"storage.categoryUsage": "Category usage",
"storage.selectedCount": "{{count}} selected",
"storage.selectFilesHint": "Select files to delete them in one action.",
"storage.selectAll": "Select all files on this page",
"storage.selectFile": "Select {{name}}",
"storage.columnName": "Name",
"storage.columnType": "Type",
"storage.columnUpdated": "Updated",
"storage.columnSize": "Size",
"storage.deleteFile": "Delete {{name}}",
"storage.deleteSelected": "Delete selected",
"storage.openContainingFolder": "Open containing folder",
"storage.openTrash": "Open Trash",
"storage.openImageHosting": "Open Image hosting",
"storage.deleteConfirmTitle": "Permanently delete files?",
"storage.deleteConfirmDescription": "{{count}} files using {{size}} will be permanently deleted. This cannot be undone.",
"storage.deletePermanently": "Delete permanently",
"storage.deletingProgress": "Deleting {{completed}} of {{total}}…",
"storage.deleteSuccess": "Deleted {{count}} files and freed {{size}}.",
"storage.deletePartial": "{{failed}} of {{total}} files could not be deleted. You can retry the failed items.",
"storage.filesLoadFailed": "Files could not be loaded.",
"storage.retry": "Retry",
"storage.pageItems": "{{start}}{{end}} of {{total}}",
"storage.previousPage": "Previous page",
"storage.nextPage": "Next page",
"storage.unavailable": "Storage add-ons are not available on this site.",
"storage.unavailableTitle": "Storage add-ons are unavailable",
"storage.unavailableDescription": "This site is not connected to storage add-ons right now. Your existing workspace storage is still available.",
"storage.disabledTitle": "Storage add-ons are not enabled",
"storage.disabledSubtitle": "Self-service storage purchases and gift cards are currently unavailable.",
"storage.disabledDescription": "This site has not enabled storage purchases or gift cards. You can continue using the storage already assigned to your workspace.",
"storage.disabledBuying": "Purchasing additional storage is unavailable.",
"storage.disabledRedeeming": "Gift cards cannot be used right now.",
"storage.disabledExistingStorage": "Existing files and assigned storage are not affected.",
"storage.currentQuota": "Current quota",
"storage.currentTrafficQuota": "Current traffic",
"storage.effectiveStorageQuota": "Effective storage",
"storage.storageQuota": "Storage quota",
"storage.storageUsage": "Storage usage",
"storage.cloudStorageEntitlement": "Extra storage",
"storage.storageQuotaEntitlement": "Total active storage entitlement",
"storage.cloudTrafficEntitlement": "Extra traffic",
"storage.includedTraffic": "Plan traffic",
"storage.currentPeriodTraffic": "Metered traffic",
"storage.trafficUsage": "Traffic usage",
"storage.currentPlan": "Current plan",
"storage.currentPlanDescription": "Storage comes from this subscription plan. Included Credits are granted by the plan.",
"storage.planActive": "Active",
"storage.freePlanName": "Free",
"storage.freePlanDescription": "Starter storage included with this workspace.",
"storage.freeQuotaTitle": "Current free quota",
"storage.freeQuotaDescription": "This workspace is using the included storage quota until a plan is purchased.",
"storage.freePlanPrice": "Free",
"storage.usageTotal": "of {{total}}",
"storage.usageNoLimit": "No limit",
"storage.usageInvalid": "Invalid quota",
"storage.legendUsed": "Used",
"storage.legendBaseQuota": "Plan quota",
"storage.legendCloudQuota": "Extra quota",
"storage.legendBaseAvailable": "Plan available",
"storage.legendCloudAvailable": "Extra available",
"storage.trafficQuotaDetail": "Plan {{base}} · extra {{cloud}}",
"storage.storageUsageDetail": "{{used}} used",
"storage.usedStorage": "Used",
"storage.trafficPeriodDetail": "Current period {{period}}",
"storage.overCap": "Over cap",
"storage.creditsButton": "Credits",
"storage.creditBalance": "Credit balance",
"storage.viewCreditActivity": "View credit activity",
"storage.creditActivityTitle": "Credit activity",
"storage.creditActivityDescription": "Credit changes from gift-card redemptions, grants, top-ups, and usage charges.",
"storage.creditActivityEmpty": "No credit activity yet.",
"storage.creditTopUpTitle": "Credit top-ups",
"storage.creditTopUpDialogDescription": "Choose a top-up package to add Credits to this workspace.",
"storage.noCreditTopUps": "No Credit top-ups are available right now.",
"storage.creditTopUpAmount": "{{amount}} Credits",
"storage.buyCredits": "Buy Credits",
"storage.creditTableType": "Type",
"storage.creditTableChange": "Change",
"storage.creditTableStatus": "Status",
"storage.creditTableReference": "Reference",
"storage.creditTableDate": "Date",
"storage.creditSourceSubscriptionGrant": "Subscription grant",
"storage.creditSourceTopUp": "Top-up",
"storage.creditSourceGiftCard": "Gift card redeemed",
"storage.creditSourceAdminGrant": "Admin grant",
"storage.creditSourceUsageCharge": "Usage charge",
"storage.creditSourceAdjustment": "Adjustment",
"storage.creditStatusPosted": "Posted",
"storage.creditStatusReversed": "Reversed",
"storage.target": "Target space",
"storage.packagesTitle": "Storage plans",
"storage.plansTitle": "Storage plans",
"storage.packagesDescription": "Available storage plans for the current workspace.",
"storage.plansDescription": "Available storage plans and Credits for the current workspace.",
"storage.availablePlansTitle": "Available plans",
"storage.availablePlansDescription": "Upgrade when you need more storage and included Credits.",
"storage.availableProductsTitle": "Available products",
"storage.availableProductsDescription": "Choose a monthly or yearly subscription plan. Credits can be topped up separately.",
"storage.monthlyPlanBadge": "Plan",
"storage.planBadge": "Plan",
"storage.currentPlanBadge": "Current",
"storage.resourcePackageBadge": "Package",
"storage.planBilling": "Billing",
"storage.billingMonthly": "Monthly subscription",
"storage.billingFixedDays": "{{days}} days",
"storage.billingOneTime": "One-time package",
"storage.packageStorageQuota": "Storage package",
"storage.packageTrafficQuota": "Traffic package",
"storage.packageValidity": "Validity",
"storage.packageNoExpiry": "No expiry",
"storage.trafficPolicy": "Traffic policy",
"storage.includedCredits": "Included Credits",
"storage.usageBilledWithCredits": "Usage billed with Credits",
"storage.trafficStopsAtQuota": "Stops at quota",
"storage.trafficOverageEnabled": "Metered overage",
"storage.trafficOveragePerGb": "{{amount}} / GB overage",
"storage.checkout": "Checkout",
"storage.checkoutPlan": "Subscribe",
"storage.checkoutMonthly": "Subscribe monthly",
"storage.checkoutYearly": "Subscribe yearly",
"storage.checkoutPackage": "Buy package",
"storage.managePlan": "Manage plan",
"storage.upgradeToPlan": "Upgrade to this plan",
"storage.changePlan": "Change plan",
"storage.planAlreadyActive": "Plan already active",
"storage.checkoutPending": "Waiting for Stripe payment confirmation. Quota and order status will refresh automatically.",
"storage.teamMemberNotice": "Storage for this team space is managed by the team owner. Contact the owner if more capacity is needed.",
"storage.teamMemberBillingNotice": "Billing for this team space is managed by the team owner.",
"storage.checkoutRedirectTitle": "Preparing checkout",
"storage.checkoutRedirectDescription": "Creating a secure payment session. You will be redirected automatically.",
"storage.checkoutRedirectErrorTitle": "Checkout could not start",
"storage.checkoutRedirectBack": "Back to storage",
"storage.confirmCheckoutTitle": "Confirm your order",
"storage.confirmCheckoutDescription": "Apply a coupon if you have one, then continue to secure payment.",
"storage.couponLabel": "Coupon code",
"storage.couponPlaceholder": "Enter coupon code",
"storage.couponApply": "Apply",
"storage.couponRemove": "Remove",
"storage.couponApplied": "Coupon applied",
"storage.couponInvalid": "This coupon code is not valid.",
"storage.subtotalLabel": "Subtotal",
"storage.discountLabel": "Discount",
"storage.totalLabel": "Total",
"storage.proceedToCheckout": "Continue to payment",
"storage.couponNote": "The final charge is confirmed on the payment page.",
"storage.priceMonthly": "{{amount}} / month",
"storage.priceYearly": "{{amount}} / year",
"storage.priceForDays": "{{amount}} for {{days}} days",
"storage.redeemTitle": "Redeem gift card",
"storage.redeemDescription": "Enter a gift card to redeem it into Cloud credits.",
"storage.redeemAction": "Redeem",
"storage.redeemSuccess": "Redeemed successfully! {{amount}} Credits added to your balance.",
"storage.continuePayment": "Continue payment",
"storage.cancelOrder": "Cancel order",
"storage.cancelConfirm": "Cancel this unpaid order?",
"storage.cancelSuccess": "Order canceled.",
"storage.quotaChip": "{{size}} storage",
"storage.creditDiscount": "Discount {{amount}}",
"storage.giftCardCode": "Gift card code",
"storage.historyTitle": "Recent orders",
"storage.historyDescription": "Recent storage plan orders for the current workspace.",
"storage.noPackages": "No subscription plans are available right now.",
"storage.trafficQuota": "{{size}} download traffic",
"storage.activeEntitlement": "Active entitlement",
"storage.noHistory": "No storage orders yet.",
"device.title": "Authorize downloader",
"device.subtitle": "Confirm that this device can register a ZPan remote downloader.",
"device.code": "Device code",
"device.invalid": "This device code is invalid or expired.",
"device.signInRequired": "Sign in before authorizing this downloader.",
"device.approve": "Authorize",
"device.deny": "Deny",
"device.approved": "Downloader authorized.",
"device.denied": "Downloader denied.",
"device.failed": "Device authorization failed.",
"device.approvedMessage": "Authorization complete. You can return to the downloader CLI.",
"device.deniedMessage": "Authorization denied. You can close this page.",
"features.socialLoginOidc.limit": "Up to {{count}} provider",
"features.socialLoginOidc.unlimited": "Unlimited",
"features.category.advanced": "Advanced Features",
"features.downloaders": "Downloaders",
"features.downloaders.limit": "Up to {{count}} downloader",
"features.downloaders.unlimited": "Unlimited",
"admin.nav.teams": "Teams",
"admin.teams.title": "Teams",
"admin.teams.count": "{{count}} teams",
"admin.teams.colName": "Team",
"admin.teams.colOwner": "Owner",
"admin.teams.colMembers": "Members",
"admin.teams.colUsage": "Storage",
"admin.teams.colCreatedAt": "Created",
"admin.teams.memberCount": "{{count}} members",
"admin.teams.noTeams": "No teams yet.",
"admin.teams.backToTeams": "Back to teams",
"admin.teams.teamNotFound": "Team not found.",
"admin.teams.teamDetails": "Team details",
"admin.teams.activeEntitlements": "Active grants",
"admin.teams.entitlements": "Quota entitlements",
"admin.teams.addEntitlement": "Grant quota",
"admin.teams.entitlementType": "Type",
"admin.teams.entitlementAmount": "Amount",
"admin.teams.entitlementSource": "Source",
"admin.teams.entitlementExpires": "Expires",
"admin.teams.entitlementStatus": "Status",
"admin.teams.entitlementActions": "Actions",
"admin.teams.entitlementTypePlan": "Plan",
"admin.teams.entitlementTypeGrant": "Grant",
"admin.teams.entitlementSourceAdmin": "Admin grant",
"admin.teams.entitlementSourceFreePlan": "Free plan",
"admin.teams.entitlementSourceOrder": "Purchase",
"admin.teams.noExpiry": "No expiry",
"admin.teams.noEntitlements": "No entitlements yet.",
"admin.teams.editEntitlement": "Edit",
"admin.teams.revokeEntitlement": "Revoke",
"admin.teams.revokeEntitlementTitle": "Revoke entitlement",
"admin.teams.revokeEntitlementConfirm": "Revoke this quota entitlement from {{name}}? The team keeps its files but loses the granted capacity.",
"admin.teams.entitlementRevoked": "Entitlement revoked",
"admin.teams.tabEntitlement": "Entitlement",
"admin.teams.active": "Active",
"admin.teams.revoked": "Revoked",
"admin.entitlement.grantFor": "Grant quota to {{name}}",
"admin.entitlement.editFor": "Edit entitlement of {{name}}",
"admin.entitlement.grantDescription": "Grant additional storage capacity.",
"admin.entitlement.editDescription": "Adjust the granted capacity, expiry, or note.",
"admin.entitlement.amount": "Amount",
"admin.entitlement.unit": "Unit",
"admin.entitlement.expires": "Expires (optional)",
"admin.entitlement.note": "Note (optional)",
"admin.entitlement.grant": "Grant quota",
"admin.entitlement.save": "Save",
"admin.entitlement.granted": "Quota granted",
"admin.entitlement.updated": "Entitlement updated",
"admin.entitlement.positiveQuotaRequired": "Amount must be a positive number"
}