mirror of
https://github.com/saltbo/zpan.git
synced 2026-08-28 15:51:29 +08:00
8513b18a8e
* 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
2319 lines
130 KiB
JSON
2319 lines
130 KiB
JSON
{
|
||
"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 2–7 days ago",
|
||
"admin.overview.users.activity.last30Days": "Active 8–30 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"
|
||
}
|