522 lines
38 KiB
JSON
522 lines
38 KiB
JSON
{
|
|
"aboutArch": "Arch",
|
|
"aboutBuildTime": "Build time",
|
|
"aboutCommit": "Commit",
|
|
"aboutDocumentation": "Documentation",
|
|
"aboutGoVersion": "Go version",
|
|
"aboutLoading": "Loading...",
|
|
"aboutOs": "OS",
|
|
"aboutPageDescription": "Version, build metadata, and links.",
|
|
"aboutReportIssue": "Report an issue",
|
|
"aboutTitle": "About kandev",
|
|
"aboutVersion": "Version",
|
|
"actionDone": "Done",
|
|
"actionFailed": "Failed",
|
|
"actionRunning": "Running...",
|
|
"backupsAdminOnly": "Only administrators can create, download, restore, or delete backups.",
|
|
"backupsColumnActions": "Actions",
|
|
"backupsColumnCreated": "Created",
|
|
"backupsColumnKind": "Kind",
|
|
"backupsColumnName": "Name",
|
|
"backupsColumnSize": "Size",
|
|
"backupsCreate": "Create snapshot",
|
|
"backupsCreateFailed": "Create snapshot failed",
|
|
"backupsCreateTimeout": "Create snapshot did not finish within {{seconds}}s",
|
|
"backupsCreating": "Creating...",
|
|
"backupsDeleteFailed": "Delete failed",
|
|
"backupsDeleteLabel": "Delete {{name}}",
|
|
"backupsDownloadLabel": "Download {{name}}",
|
|
"backupsEmpty": "No backups yet. Snapshots created automatically on version upgrade or manually via the button above will appear here.",
|
|
"backupsHelp": "A backup is a full copy of Kandev's database (tasks, sessions, settings). Kandev automatically creates one before every version upgrade so you can roll back if something goes wrong. You can also create one manually before risky operations like factory reset.",
|
|
"backupsKindAuto": "auto",
|
|
"backupsKindManual": "manual",
|
|
"backupsLoading": "Loading backups...",
|
|
"backupsPageDescription": "{{command}} snapshots stored under {{path}}.",
|
|
"backupsRestoreLabel": "Restore {{name}}",
|
|
"backupsRetention_one": "Only the latest backup is kept on disk.",
|
|
"backupsRetention_other": "Only the latest {{count}} backups are kept on disk.",
|
|
"backupsTitle": "Backups",
|
|
"changelogEmpty": "No changelog entries available.",
|
|
"changelogViewOnGitHub": "View on GitHub",
|
|
"close": "Close",
|
|
"createUserDescription": "Creates an account directly with a password you set. Prefer an invite link when the user should choose their own password.",
|
|
"createUserDisplayName": "Display name",
|
|
"createUserEmail": "Email",
|
|
"createUserFailed": "Could not create user.",
|
|
"createUserPassword": "Password",
|
|
"createUserRole": "Role",
|
|
"createUserSubmit": "Create user",
|
|
"createUserSubmitting": "Creating...",
|
|
"createUserTitle": "Add a user",
|
|
"databaseDriver": "Driver",
|
|
"databaseFactoryReset": "Factory reset",
|
|
"databaseFactoryResetHelp": "Wipes ALL Kandev data: tasks, sessions, settings, repositories, and worktrees. There is no undo. A backup is taken first, but restoring it requires using the Backups page after the reset. Only use this if you want to start over from scratch.",
|
|
"databaseLastBackup": "Last backup",
|
|
"databaseLoading": "Loading database stats...",
|
|
"databaseMaintenanceUnavailable": "SQLite maintenance actions are unavailable for {{driver}}.",
|
|
"databaseNever": "Never",
|
|
"databaseOptimize": "Optimize",
|
|
"databaseOptimizeHelp": "Asks the database to refresh its internal indexes so common queries stay fast. Run it after deleting a lot of data or if the app feels sluggish. Quick and safe - no data is changed.",
|
|
"databasePageDescription": "Database driver, size, and available maintenance controls.",
|
|
"dataStoragePageDescription": "Database statistics, backups, and server logs.",
|
|
"databasePath": "Path",
|
|
"databaseRunOptimize": "Run optimize",
|
|
"databaseRunVacuum": "Run vacuum",
|
|
"databaseSchemaVersion": "Schema version",
|
|
"databaseSize": "Size",
|
|
"databaseSizeLong": "Database size",
|
|
"databaseTitle": "Database",
|
|
"databaseVacuum": "Vacuum",
|
|
"databaseVacuumHelp": "Reclaims unused space inside the database file. The file can grow over time as you delete tasks or sessions; vacuum compacts it back down. Safe to run anytime - it does not change any data. Use it once in a while if the database size looks large.",
|
|
"databaseWal": "WAL",
|
|
"databaseWalHelp": "Write-Ahead Log. SQLite writes new changes to this companion file first and merges them into the main database over time. A non-zero WAL size is normal - it temporarily grows under load and shrinks back during checkpoints. Running vacuum will reset it.",
|
|
"databaseWhatIs": "What is {{label}}?",
|
|
"desktopUpdateFailed": "Desktop update failed",
|
|
"diskCalculating": "Calculating...",
|
|
"diskColumnPath": "Path",
|
|
"diskColumnSize": "Size",
|
|
"diskComputedAt": "Computed at {{at}}",
|
|
"diskOpen": "Open",
|
|
"diskRefresh": "Refresh",
|
|
"diskRefreshed": "Refreshed",
|
|
"diskRefreshHelp": "Walks every directory inside the data folder and adds up the file sizes. Results are cached for a couple of hours; click to compute fresh numbers right now. Can take a few seconds on large workspaces.",
|
|
"diskRefreshing": "Refreshing...",
|
|
"diskRowBackups": "Backups",
|
|
"diskRowDataDir": "Data directory",
|
|
"diskRowQuickChat": "Quick chat",
|
|
"diskRowRepos": "Repositories",
|
|
"diskRowSessions": "Sessions",
|
|
"diskRowTasks": "Tasks",
|
|
"diskRowWorktrees": "Worktrees",
|
|
"diskTotal": "Total",
|
|
"diskUnmeasuredDirs": "Some directories could not be measured:",
|
|
"diskUsageTitle": "Disk Usage",
|
|
"dismiss": "Dismiss",
|
|
"factoryResetCompleteBody": "Kandev's data has been wiped. Quit and relaunch the app to start fresh - the running backend still holds connections to the now-empty database and will not rebuild its caches until you restart. The pre-reset snapshot is available on the Backups page if you need to roll back.",
|
|
"factoryResetCompleteTitle": "Factory reset complete",
|
|
"factoryResetFailed": "Reset failed",
|
|
"factoryResetPlaceholder": "Type {{token}} to confirm",
|
|
"factoryResetRequestFailed": "Reset request failed",
|
|
"factoryResetSnapshot": "A snapshot is created automatically under <1>{{path}}</1> before the wipe runs, so you can restore from the Backups page if you change your mind.",
|
|
"factoryResetTitle": "Factory Reset",
|
|
"factoryResetTypeToConfirm": "Type <1>{{token}}</1> to enable the confirm button. After the wipe completes you'll be asked to quit and relaunch Kandev - the backend does not auto-restart.",
|
|
"factoryResetWipes": "This wipes the entire kandev install: database, worktrees, repo clones, sessions, tasks, and quick-chat sessions.",
|
|
"factoryResetWiping": "Wiping data...",
|
|
"featureToggleDebug": "Debug",
|
|
"featureToggleEnv": "Env: {{envVar}}",
|
|
"featureToggleEnvControlled": "Controlled by launch environment",
|
|
"featureToggleExperimental": "Experimental",
|
|
"featureTogglePendingRestart": "Pending restart",
|
|
"featureToggleRequiresRestart": "Requires restart",
|
|
"featureTogglesLoadError": "Feature toggles could not be loaded.",
|
|
"featureTogglesLoadFailed": "Failed to load feature toggles",
|
|
"featureTogglesLoading": "Loading feature toggles...",
|
|
"featureToggleSource": "Source: {{source}}",
|
|
"featureToggleSourceDefault": "Default",
|
|
"featureToggleSourceEnv": "Environment",
|
|
"featureToggleSourceOverride": "Saved override",
|
|
"featureTogglesPageDescription": "Manage Kandev feature and diagnostic switches.",
|
|
"featureTogglesRetry": "Retry",
|
|
"featureTogglesSaved": "Feature toggles saved",
|
|
"featureToggleSwitchLabel": "Toggle {{label}}",
|
|
"featureToggleUseDefault": "Use default",
|
|
"healthAllPass": "All system checks pass.",
|
|
"healthHealthy": "Healthy",
|
|
"healthIssue": "Issue",
|
|
"healthIssueCount_one": "{{count}} issue",
|
|
"healthIssueCount_other": "{{count}} issues",
|
|
"healthLoading": "Loading health checks...",
|
|
"healthPassing": "Passing",
|
|
"healthSeverityError": "Error",
|
|
"healthSeverityInfo": "Info",
|
|
"healthSeverityWarning": "Warning",
|
|
"healthSystemChecks": "System checks",
|
|
"healthTitle": "Health",
|
|
"healthWhatsMonitored": "What's monitored",
|
|
"host": "Host",
|
|
"hostMetrics": "Host metrics",
|
|
"hostWithLabel": "Host: {{label}}",
|
|
"inviteCopied": "Invite link copied",
|
|
"inviteCopy": "Copy invite link",
|
|
"inviteCreate": "Create invite link",
|
|
"inviteCreating": "Creating...",
|
|
"inviteDescription": "Generates a one-time invite link. Leave the email blank to create a link anyone can use to sign up with the selected role; set an email to pin the invite to that address.",
|
|
"inviteDone": "Done",
|
|
"inviteEmailOptional": "Email (optional)",
|
|
"inviteFailed": "Could not create invite.",
|
|
"inviteReadyDescription": "Share this link with the invitee. It is shown only once; copy it now.",
|
|
"inviteReadyTitle": "Invite link ready",
|
|
"inviteTitle": "Invite a user",
|
|
"inviteUrlLabel": "Invite link",
|
|
"ioLoadHelp": "Average number of tasks running or waiting for CPU during the last minute. Compare this value with the host's CPU core count.",
|
|
"issuesNeedAttention_one": "{{count}} issue needs your attention",
|
|
"issuesNeedAttention_other": "{{count}} issues need your attention",
|
|
"jobStateDone": "Done",
|
|
"jobStateFailed": "Failed",
|
|
"jobStateQueued": "Queued",
|
|
"jobStateRunning": "Running",
|
|
"lastUpdateUnknown": "Last update unknown",
|
|
"licensesCount": "{{visible}} of {{total}}",
|
|
"licensesEmpty": "No entries match the filter.",
|
|
"licensesFilterPlaceholder": "Filter by name, license, or ecosystem...",
|
|
"licensesPageDescription": "Open-source licenses for every npm and Go dependency shipped with kandev.",
|
|
"licensesSource": "source",
|
|
"licensesStaleWarning": "Go license entries were reused from the committed manifest because generation failed. Regenerate licenses when go-licenses is healthy to refresh Go dependency data.",
|
|
"licensesTitle": "Third-party licenses",
|
|
"licensesToggleLabel": "Show license text for {{name}}",
|
|
"messageQueueAdminOnly": "Only administrators can change this setting.",
|
|
"messageQueueAutoMergeDescription": "Combines consecutive compatible queued messages from the same source into one turn before delivery.",
|
|
"messageQueueAutoMergeNotice": "If a message has a different source or incompatible task, model, mode, metadata, or shared limits, it stays as a separate queued message. This applies only to new admissions and does not change the manual merge control.",
|
|
"messageQueueAutoMergeToggleLabel": "Automatically merge consecutive messages",
|
|
"messageQueueConfigured": "Configured:",
|
|
"messageQueueDescription": "Control how many pending messages each session can hold before new work is rejected.",
|
|
"messageQueueEffective": "Effective:",
|
|
"messageQueueEffectiveHelp": "The effective value is used for new admissions now. Existing queue entries are not pruned when this value is lowered.",
|
|
"messageQueueConfigurationLockTitle": "Managed by configuration",
|
|
"messageQueueConfigurationLocked": "The YAML configuration value overrides the saved setting. Change the value in config.yaml and restart Kandev to edit it here again.",
|
|
"messageQueueEnvironmentLockTitle": "Managed by environment",
|
|
"messageQueueEnvironmentLocked": "{{variable}} overrides the saved setting. Change the environment value and restart Kandev to edit it here again.",
|
|
"messageQueueLimitDescription": "This limit applies immediately to newly admitted messages. Lowering it never removes messages already waiting, and accepted delivery retries remain safe.",
|
|
"messageQueueLimitTitle": "Per-session queue limit",
|
|
"messageQueueLoadFailed": "Message queue settings could not be loaded.",
|
|
"messageQueueLoading": "Loading message queue settings…",
|
|
"messageQueueMaximumLabel": "Maximum messages per session",
|
|
"messageQueueMergeDescription": "Lets you fold a queued message into the message directly above it before the agent picks them up, combining bursts of related follow-ups into one turn.",
|
|
"messageQueueMergeNotice": "Only adjacent messages from the same sender can be merged: your own queued messages merge into each other, and messages queued by another task's agent merge only when they share the same originating task. Workflow, system, and in-flight messages can never be merged. A merge is also rejected if the two messages' combined, deduplicated entity references would exceed 100, the shared per-message limit. Turning this off hides the merge control immediately and does not affect messages already merged.",
|
|
"messageQueueMergeToggleLabel": "Enable queued message merging",
|
|
"messageQueueRetry": "Retry",
|
|
"messageQueueSaveFailed": "Failed to save message queue settings.",
|
|
"messageQueueSourceDefault": "Default",
|
|
"messageQueueSourceConfiguration": "Configuration",
|
|
"messageQueueSourceEnvironment": "Environment",
|
|
"messageQueueSourceSetting": "Saved setting",
|
|
"messageQueueTitle": "Message Queue",
|
|
"messageQueueUnlimited": "Unlimited",
|
|
"messageQueueUnlimitedHelp": "Set 0 for unlimited. A positive whole number rejects new messages after that many are pending in one session.",
|
|
"messageQueueValidation": "Enter a whole number of 0 or greater.",
|
|
"metricCpuPercent": "CPU",
|
|
"metricCpuTemp": "CPU temperature",
|
|
"metricDiskPercent": "Disk",
|
|
"metricIoLoad": "System load (1 min)",
|
|
"metricMemoryPercent": "Memory",
|
|
"metricsUnavailable": "Metrics unavailable",
|
|
"navAbout": "About",
|
|
"navBackups": "Backups",
|
|
"navDatabase": "Database",
|
|
"navDataStorage": "Data & Logs",
|
|
"navFeatureToggles": "Feature Toggles",
|
|
"navLicenses": "Licenses",
|
|
"navLogs": "Logs",
|
|
"navUpdates": "Updates",
|
|
"navUsers": "Users",
|
|
"reloadPage": "Reload page",
|
|
"restartAction": "Restart",
|
|
"agentRuntimeUnavailableTitle": "Local agent runtime stopped",
|
|
"agentRuntimeUnavailableBody": "Agent actions and workspace tools may not update while the local runtime is stopped. Your saved data remains safe.",
|
|
"agentRuntimeUnavailableRestartRequired": "Restart Kandev fully to recover.",
|
|
"agentRuntimeUnavailableRestart": "Restart Kandev",
|
|
"agentRuntimeUnavailableManual": "Restart Kandev from your terminal or service manager.",
|
|
"agentRuntimeCheckingRestart": "Checking restart support…",
|
|
"restartManualHint": "Restart it from your terminal or service manager when convenient.",
|
|
"restartPendingChanges": "Saved toggle changes will apply the next time Kandev starts.",
|
|
"restartPhaseDoneBody": "The backend is running again. Reload the page to reconnect with the latest feature toggle state.",
|
|
"restartPhaseDoneTitle": "Kandev restarted",
|
|
"restartPhaseErrorBody": "The restart could not be completed.",
|
|
"restartPhaseErrorTitle": "Restart failed",
|
|
"restartPhaseRestartingBody": "Kandev is stopping and starting again. This page will detect the new process automatically.",
|
|
"restartPhaseRestartingTitle": "Restarting Kandev",
|
|
"restartPhaseStartingBody": "Preparing the local supervisor restart request.",
|
|
"restartPhaseStartingTitle": "Requesting restart",
|
|
"restartRequired": "Restart required",
|
|
"restartStartFailed": "Failed to restart Kandev",
|
|
"restartSupportDetails": "Restart support details",
|
|
"restartSupportedHelp": "Restart from this page is available when Kandev is running under a supported local supervisor.",
|
|
"restartTimedOut": "Restart is taking longer than expected. Refresh to check the current status.",
|
|
"restartUnsupportedHelp": "Automatic restart is not available in deploy previews, unmanaged terminal runs, or launch modes without a restart supervisor.",
|
|
"restoreAction": "Restore",
|
|
"restoreBody": "Restore <1>{{name}}</1> over the current database. After the staged copy is in place you will be asked to quit and relaunch Kandev so the new data is loaded fresh - the backend does not auto-restart.",
|
|
"restoreCompleteBody": "<0>{{name}}</0> has been written over the current database. Restart Kandev before you continue. The database pool is closed until the restart. If automatic restart is unavailable, quit and relaunch Kandev manually.",
|
|
"restoreCompleteTitle": "Restore complete",
|
|
"restoreFailed": "Restore failed",
|
|
"restorePlaceholder": "Type {{token}} to confirm",
|
|
"restoreRequestFailed": "Restore request failed",
|
|
"restoreTitle": "Restore snapshot",
|
|
"restoreTypeToConfirm": "Type <1>{{token}}</1> to enable the confirm button.",
|
|
"restoreWriting": "Writing the snapshot over the live database...",
|
|
"selfUpdateDone": "Updated to {{version}}.",
|
|
"selfUpdateDoneUnknown": "Updated to the latest version.",
|
|
"selfUpdateFailed": "The update failed.",
|
|
"selfUpdateHelperFailed": "The update helper failed to start. Check the service logs.",
|
|
"selfUpdateInstalling": "Downloading and installing {{version}}…",
|
|
"selfUpdateInstallingUnknown": "Downloading and installing the new version…",
|
|
"selfUpdateKeepOpen": "Keep this page open. It will refresh automatically when the update finishes.",
|
|
"selfUpdateRestarting": "Restarting Kandev; this can take up to a minute.",
|
|
"selfUpdateStartFailed": "Failed to start the update",
|
|
"selfUpdateStarting": "Starting update to {{version}}…",
|
|
"selfUpdateStartingUnknown": "Starting update to the new version…",
|
|
"selfUpdateTimedOut": "Update is taking longer than expected. Refresh to check the current version.",
|
|
"settingsRouteNotPorted": "This settings route is handled by the SPA shell, but its dedicated client page is still being ported: <1>{{pathname}}</1>",
|
|
"setupIssues": "Setup Issues",
|
|
"statusPageDescription": "Health checks, disk usage, and version summary.",
|
|
"storageAcknowledgeDaemon": "Acknowledge daemon",
|
|
"storageAcknowledgeDedicatedFirst": "Acknowledge a dedicated Docker daemon first.",
|
|
"storageActionFailed": "Storage action failed",
|
|
"storageActionPending": "Wait for the current storage action to finish.",
|
|
"storageActionsDescription": "Analyze for a read-only snapshot, or run the enabled cleanup rules when you want to recover space immediately.",
|
|
"storageActionsTitle": "Reclaim disk space safely",
|
|
"storageAdminOnly": "Only administrators can change storage settings or run maintenance.",
|
|
"storageAdoptCache": "Adopt cache",
|
|
"storageAdoptDialogDescription": "Kandev will be allowed to rotate and quarantine the existing cache at {{path}}. This path must be absolute and on the same filesystem as Kandev trash.",
|
|
"storageAdoptDialogFallbackPath": "the selected path",
|
|
"storageAdoptDialogTitle": "Adopt an external Go build cache",
|
|
"storageAdoptionPending": "Wait for Go cache adoption to finish.",
|
|
"storageAnalysisComplete": "Analysis complete",
|
|
"storageAnalysisDescription": "A read-only breakdown of current usage and reclaimable space. Run Analyze occasionally to refresh these estimates; it never deletes or moves anything.",
|
|
"storageAnalysisFailed": "Analysis failed",
|
|
"storageAnalysisRunning": "Storage analysis is still running.",
|
|
"storageAnalysisTitle": "Storage analysis",
|
|
"storageAnalyze": "Analyze",
|
|
"storageAnalyzing": "Analyzing...",
|
|
"storageBuildCacheKeepHelp": "Docker keeps approximately this much build cache when pruning eligible records. A larger value preserves more reusable build layers but reclaims less disk space.",
|
|
"storageBuildCacheKeepLabel": "Build cache to retain (GB)",
|
|
"storageBuildCacheUnusedHelp": "Only build cache records older than this unused-age threshold are eligible. Increasing it protects recent build layers for longer.",
|
|
"storageBuildCacheUnusedLabel": "Build cache must be unused for (hours)",
|
|
"storageBusyForceHint": "Running cleanup anyway may disrupt this active work.",
|
|
"storageBusyIntro": "Cleanup may disrupt the following work:",
|
|
"storageBusyTitle": "Storage cleanup found active Kandev work",
|
|
"storageCheckIntervalHelp": "How often Kandev checks whether scheduled maintenance is due. A check that finds Kandev busy is skipped and tried again at the next interval.",
|
|
"storageCheckIntervalLabel": "Check every (hours)",
|
|
"storageCleanContainersAria": "Clean Kandev containers",
|
|
"storageCleanDockerBuildCacheAria": "Clean Docker build cache",
|
|
"storageCleanGoCache": "Clean Go cache",
|
|
"storageCleanTemporaryArtifacts": "Clean stale artifacts",
|
|
"storageCleaning": "Cleaning...",
|
|
"storageCleanOrphanWorkspacesAria": "Clean orphan task workspaces",
|
|
"storageCleanUnusedImagesAria": "Clean unused Docker images",
|
|
"storageCleanupComplete": "Cleanup complete",
|
|
"storageCleanupFailed": "Cleanup failed",
|
|
"storageCleanupRunning": "Storage cleanup is still running.",
|
|
"storageClearEligible": "Clear eligible",
|
|
"storageClearEligibleDialogTitle": "Clear eligible quarantine",
|
|
"storageContainersDescription": "Remove stopped, unused containers created and labeled by Kandev.",
|
|
"storageContainersHelp": "Only stopped containers labeled as Kandev-managed are considered, and inventory must confirm they are no longer needed. Running containers and unrelated Docker containers are never removed by this option.",
|
|
"storageDedicatedDaemon": "Dedicated Docker daemon",
|
|
"storageDedicatedDaemonDescription": "Confirm that unrelated workloads do not share this Docker daemon.",
|
|
"storageDedicatedDaemonHelp": "Build cache and image ownership cannot be attributed reliably to Kandev. This acknowledgment unlocks daemon-wide cleanup and should only be enabled when the configured Docker daemon is used exclusively by Kandev. Kandev never performs a volume-wide prune.",
|
|
"storageDedicatedDialogDescription": "Build-cache and unused-image cleanup affect the entire configured daemon, including resources created outside Kandev. Only acknowledge a daemon dedicated to this installation.",
|
|
"storageDedicatedDialogTitle": "Use this dedicated Docker daemon",
|
|
"storageDefaultDockerHost": "Default Docker host",
|
|
"storageDelete": "Delete",
|
|
"storageDeleteDialogDescription": "This cannot be undone. Kandev will permanently remove {{path}}.",
|
|
"storageDeleteDialogFallbackPath": "the selected quarantine entry",
|
|
"storageDeleteDialogTitle": "Permanently delete quarantined data",
|
|
"storageDeletePermanently": "Delete permanently",
|
|
"storageDeletionComplete": "Deletion complete",
|
|
"storageDescription": "Review disk use and reclaim space from Kandev-owned workspaces, caches, and Docker resources whenever your installation needs it.",
|
|
"storageDockerBuildCache": "Docker build cache",
|
|
"storageDockerBuildCacheDescription": "Remove old build cache while retaining the configured amount.",
|
|
"storageDockerBuildCacheHelp": "Uses Docker's age and storage filters to remove old build cache. It does not run docker system prune, does not remove volumes globally, and remains disabled until the dedicated-daemon acknowledgment is confirmed.",
|
|
"storageDockerDescription": "Optional daemon-wide cleanup. Enable it only when this Docker daemon is dedicated to Kandev.",
|
|
"storageDockerImageLayers": "Docker image layers",
|
|
"storageDockerTitle": "Docker cleanup",
|
|
"storageDockerUnavailable": "Docker is unavailable on the configured host.",
|
|
"storageDockerUnavailableBadge": "Docker unavailable",
|
|
"storageDockerUnavailableNotice": "Docker is unavailable; Docker cleanup options cannot run on this host.",
|
|
"storageDockerUnmeasured": "Docker usage could not be measured",
|
|
"storageDiskTitle": "Disk capacity",
|
|
"storageDiskDescription": "Current usage of the filesystem containing Kandev storage.",
|
|
"storageDiskLoading": "Loading disk capacity…",
|
|
"storageDiskUnavailable": "Disk capacity is unavailable right now.",
|
|
"storageDiskUsed": "{{percent}}% full",
|
|
"storageDiskUsedSize": "{{size}} used",
|
|
"storageDiskCapacitySummary": "{{available}} available · {{total}} total",
|
|
"storageDiskPath": "Storage path",
|
|
"storageDiskProgressAria": "Disk usage: {{percent}}% full",
|
|
"storageDiskHighWarning": "This filesystem is becoming full (80% or more used).",
|
|
"storageDiskCriticalWarning": "This filesystem is critically full (90% or more used).",
|
|
"storageEligibleNow": "Eligible now",
|
|
"storageEnableGoCacheFirst": "Enable the managed Go cache first.",
|
|
"storageEnableManagedGoCacheAria": "Enable managed Go cache",
|
|
"storageEnterCachePathFirst": "Enter an absolute cache path first.",
|
|
"storageExternalGoCache": "External Go cache",
|
|
"storageExternalGoCacheDescription": "Optionally allow Kandev to maintain an existing host cache outside its managed path.",
|
|
"storageExternalGoCacheHelp": "Adoption gives Kandev explicit permission to rotate this existing cache. Kandev never cleans a default user cache or another path unless you adopt that exact absolute path and confirm the destructive access.",
|
|
"storageForceClearAll": "Force clear all",
|
|
"storageForceClearDescription": "This attempts to permanently remove every quarantined item immediately and cannot be undone for entries that succeed. Failed entries may remain visible and retryable.",
|
|
"storageForceClearDialogTitle": "Force clear all quarantine",
|
|
"storageGoBuildCache": "Go build cache",
|
|
"storageGoCacheBelowLimit": "The Go build cache is below its configured size limit.",
|
|
"storageGoCacheMaxHelp": "This is a cleanup trigger, not a hard quota. The cache may grow past this size while tasks are active. Maintenance rotates the owned cache into quarantine and recreates an empty cache after the limit is exceeded.",
|
|
"storageGoCacheMaxLabel": "Maximum cache size (GB)",
|
|
"storageGoCacheNotOwned": "Only a Kandev-owned Go build cache can be cleaned.",
|
|
"storageGoCacheSectionDescription": "Use and trim a Kandev-owned cache for new host-local executions.",
|
|
"storageHistoryEmpty": "No storage maintenance runs yet.",
|
|
"storageHistoryLoading": "Loading maintenance history…",
|
|
"storageIdleHelp": "Scheduled cleanup starts only after no task, shell command, test, setup, cleanup, or image build has used managed resources for this long. Run now does not wait for this timer, but it still refuses to run while resources are active.",
|
|
"storageIdleLabel": "Require idle for (minutes)",
|
|
"storageKandevContainers": "Kandev containers",
|
|
"storageLastAnalyzed": "Last analyzed {{time}}",
|
|
"storageLoadingData": "Loading storage data…",
|
|
"storageMaintenanceHistory": "Maintenance history",
|
|
"storageManagedContainerCount_one": "{{count}} managed container",
|
|
"storageManagedContainerCount_other": "{{count}} managed containers",
|
|
"storageManagedGoCache": "Managed Go cache",
|
|
"storageManagedGoCacheDescription": "New host-local executions use {{path}}.",
|
|
"storageManagedGoCacheHelp": "When enabled, Kandev gives new local task processes a dedicated Go build cache and may rotate it during maintenance when it exceeds the maximum. Turning this off stops using the managed cache for new executions but does not delete it.",
|
|
"storageMoreInformationAbout": "More information about {{label}}",
|
|
"storageNoEligibleEntries": "No quarantine entries are eligible yet.",
|
|
"storageOrphanGraceHelp": "A workspace must be unused for at least this long before it can be classified as an orphan. Increasing this value keeps old workspaces longer before they enter quarantine.",
|
|
"storageOrphanGraceLabel": "Wait before orphaning (hours)",
|
|
"storageOrphanWorkspaces": "Orphan task workspaces",
|
|
"storageOrphanWorkspacesDescription": "Move confirmed orphan workspaces to quarantine.",
|
|
"storageOrphanWorkspacesHelp": "Kandev only selects a task workspace after inventory confirms that no active task, environment, session, or protected worktree uses it. The workspace is moved to quarantine first, where it can be restored before permanent deletion.",
|
|
"storagePolicyDescription": "Choose what Kandev may reclaim automatically and the safety limits it must follow.",
|
|
"storagePolicyLoadingBlock": "Wait for storage settings to finish loading.",
|
|
"storagePolicyTitle": "Maintenance policy",
|
|
"storageProtectedUntil": "Protected until <1>{{deadline}}</1>",
|
|
"storagePurgeEligibleCount_one": "This will permanently remove {{count}} eligible item.",
|
|
"storagePurgeEligibleCount_other": "This will permanently remove {{count}} eligible items.",
|
|
"storagePurgeProtectedCount_one": "{{count}} protected item remains until its retention deadline.",
|
|
"storagePurgeProtectedCount_other": "{{count}} protected items remain until their retention deadlines.",
|
|
"storageQuarantineCardDescription": "Cleanup moves recoverable data here first instead of deleting it immediately. Restore an item if you still need it, or delete it permanently when you are certain.",
|
|
"storageQuarantineCleanupRunning": "A quarantine cleanup is still running.",
|
|
"storageQuarantinedResources": "Quarantined resources",
|
|
"storageQuarantineEligibleCount_one": "{{count}} eligible now",
|
|
"storageQuarantineEligibleCount_other": "{{count}} eligible now",
|
|
"storageQuarantineEmpty": "No restorable quarantined resources.",
|
|
"storageQuarantineHeading": "Quarantine",
|
|
"storageQuarantineHelp": "Quarantine is Kandev's recoverable holding area. Orphan task workspaces and rotated Go caches are moved here before deletion. You can restore an item during its retention period; after the deadline, a later maintenance run may permanently delete it.",
|
|
"storageQuarantineLoading": "Loading quarantine…",
|
|
"storageQuarantineMovedAside_one": "{{count}} item moved aside for recovery before permanent deletion",
|
|
"storageQuarantineMovedAside_other": "{{count}} items moved aside for recovery before permanent deletion",
|
|
"storageQuarantineProtectedCount_one": "{{count}} protected",
|
|
"storageQuarantineProtectedCount_other": "{{count}} protected",
|
|
"storageQuarantineRetentionHelp": "Cleanup first moves orphan workspaces and rotated Go caches into Kandev's trash area instead of deleting them immediately. During this retention period you can restore an item. After the deadline, a later maintenance run may permanently delete it.",
|
|
"storageQuarantineRetentionLabel": "Keep quarantined items for (hours)",
|
|
"storageQuarantineSafetyDescription": "Keep recoverable resources for a grace period before permanent deletion.",
|
|
"storageQuarantineSafetyTitle": "Quarantine safety",
|
|
"storageQuarantineScheduleOff": "Automatic quarantine cleanup is off. Run maintenance manually or use a quarantine action when you are ready.",
|
|
"storageQuarantineScheduleOn_one": "Eligible entries are removed by the first successful maintenance run after their deadline (every {{count}} hour when the idle gate allows it).",
|
|
"storageQuarantineScheduleOn_other": "Eligible entries are removed by the first successful maintenance run after their deadline (every {{count}} hours when the idle gate allows it).",
|
|
"storageQuarantineTotal": "Total quarantined: {{size}}",
|
|
"storageQuarantineUnmeasured": "Quarantine usage could not be measured",
|
|
"storageRefreshFailed": "Refresh storage data: {{message}}",
|
|
"storageResourceTypeGoCache": "go cache",
|
|
"storageResourceTypeTaskWorkspace": "task workspace",
|
|
"storageResourceTypeTemporaryArtifact": "temporary artifact",
|
|
"storageRestore": "Restore",
|
|
"storageRetentionEnds": "Retention ends {{deadline}}.",
|
|
"storageRunAnyway": "Run anyway",
|
|
"storageRunNow": "Run now",
|
|
"storageScheduleDescription": "Controls when automatic maintenance is allowed to start. Manual actions remain available when scheduling is off.",
|
|
"storageScheduledMaintenance": "Scheduled maintenance",
|
|
"storageScheduledMaintenanceDescription": "Periodically reclaim disk space using the enabled resource rules.",
|
|
"storageScheduledMaintenanceHelp": "When enabled, Kandev checks this policy at the configured interval and starts only after Kandev has been idle for the required period. Turning it off does not disable Analyze or Run now.",
|
|
"storageScheduleTitle": "Schedule",
|
|
"storageSectionUnavailable": "This storage section could not be loaded",
|
|
"storageTaskWorkspaces": "Task workspaces",
|
|
"storageTemporaryArtifacts": "Kandev temporary artifacts",
|
|
"storageTemporaryArtifactsActiveCount_one": "{{count}} active",
|
|
"storageTemporaryArtifactsActiveCount_other": "{{count}} active",
|
|
"storageTemporaryArtifactsDialogAction": "Move to quarantine",
|
|
"storageTemporaryArtifactsDialogDescription": "Eligible registered artifacts will be moved to quarantine and can be restored during the retention period. Active or recent artifacts are protected.",
|
|
"storageTemporaryArtifactsDialogTitle": "Clean stale Kandev artifacts?",
|
|
"storageTemporaryArtifactsNoStale": "No registered temporary artifacts are older than 24 hours.",
|
|
"storageTemporaryArtifactsProtectedCount_one": "{{count}} protected",
|
|
"storageTemporaryArtifactsProtectedCount_other": "{{count}} protected",
|
|
"storageTemporaryArtifactsStaleCount_one": "{{count}} stale eligible",
|
|
"storageTemporaryArtifactsStaleCount_other": "{{count}} stale eligible",
|
|
"storageTemporaryArtifactsStaleBytes": "{{value}} eligible",
|
|
"storageTemporaryArtifactsUnavailable": "Temporary artifact ownership could not be measured",
|
|
"storageTitle": "Storage",
|
|
"storageToastAnalysisStarted": "Storage analysis started",
|
|
"storageToastCacheAdopted": "Go build cache adopted",
|
|
"storageToastDeletionStarted": "Permanent deletion started",
|
|
"storageToastEligiblePurgeStarted": "Eligible quarantine cleanup started",
|
|
"storageToastForcedPurgeStarted": "Forced quarantine cleanup started",
|
|
"storageToastMaintenanceStarted": "Storage maintenance started",
|
|
"storageToastPolicySaved": "Storage policy saved",
|
|
"storageToastQuarantineRestored": "Quarantined resource restored",
|
|
"storageTotalCounted": "Total counted: {{size}}",
|
|
"storageTotalPartial": "Partial measurement",
|
|
"storageTrashPath": "Trash: {{path}}",
|
|
"storageTypeToConfirm": "Type <1>{{phrase}}</1> to continue.",
|
|
"storageTypeToConfirmAria": "Type {{phrase}} to confirm",
|
|
"storageUnavailableValue": "Unavailable",
|
|
"storageUnusedDockerImages": "Unused Docker images",
|
|
"storageUnusedImagesDescription": "Remove old images that no container uses.",
|
|
"storageUnusedImagesDetail": "Unused by every container and older than the configured age",
|
|
"storageUnusedImagesHelp": "Removes an image only when no running or stopped container references it and it is older than the configured age. This is daemon-wide and therefore requires the dedicated-daemon acknowledgment.",
|
|
"storageUnusedImagesHoursHelp": "An image must be unused by every container and older than this age before Kandev can remove it. Increasing the value keeps old images available for longer.",
|
|
"storageUnusedImagesHoursLabel": "Image must be unused for (hours)",
|
|
"storageUserGoBuildCache": "User Go build cache",
|
|
"storageWorkspacesDescription": "Reclaim resources that Kandev can positively identify as no longer in use.",
|
|
"storageWorkspacesDetail": "{{reclaimable}} reclaimable after the grace period · {{active}} active",
|
|
"storageWorkspacesTitle": "Workspaces and containers",
|
|
"storageWorkspaceDependencies": "Remove dependencies from archived or deleted workspaces",
|
|
"storageWorkspaceDependenciesDescription": "Opt in to remove dependency folders while keeping the workspace source and recovery metadata.",
|
|
"storageWorkspaceDependenciesHelp": "When enabled and saved, Kandev recursively checks only the listed folders inside unprotected Kandev task workspaces that are archived or deleted. It skips missing folders, symlinks, active or protected workspaces, and ambiguous folders such as vendor, target, build, dist, .cache, and .git. Restoring a trimmed workspace may require reinstalling dependencies.",
|
|
"storageDependencyFoldersTitle": "Folders Kandev will check",
|
|
"storageDependencyFoldersDescription": "These exact directory names are the complete cleanup allowlist.",
|
|
"storageDependencyFoldersHelp": "Kandev searches recursively for these directory names. Missing folders are skipped. Kandev never targets the excluded ambiguous names, follows symlinks, or accepts custom paths. Only archived or deleted, unprotected Kandev workspaces are eligible, and dependencies may need to be reinstalled after restore.",
|
|
"storageCleanWorkspaceDependencies": "Clean workspace dependencies",
|
|
"storageEnableWorkspaceDependenciesAndSave": "Enable and save dependency cleanup before running it.",
|
|
"systemMetrics": "System metrics",
|
|
"uiStateHelp": "Clears layout and UI preferences saved in your browser (panel sizes, pinned tasks, expanded groups, etc.). Use this if the app looks broken, panels are stuck, or the layout feels wrong. Your tasks, sessions, and server data are not affected - only the per-browser UI state. The page reloads after the reset.",
|
|
"uiStateReset": "Reset",
|
|
"uiStateResetLabel": "Reset browser layout",
|
|
"uiStateTitle": "UI state",
|
|
"updateAvailable": "Update available",
|
|
"updatedRelative": "Updated {{relative}}",
|
|
"updatesApply": "Apply update",
|
|
"updatesApplyConfirmDesktop": "Kandev will install {{version}} and restart the desktop app.",
|
|
"updatesApplyConfirmService": "Kandev will update to {{version}}, reinstall the user service, and restart it.",
|
|
"updatesApplyConfirmTitle": "Apply update?",
|
|
"updatesCheckNow": "Check now",
|
|
"updatesCurrentVersion": "Current version",
|
|
"updatesDownloading": "Downloading update ({{downloaded}} bytes)...",
|
|
"updatesDownloadingOfTotal": "Downloading update ({{downloaded}} of {{total}} bytes)...",
|
|
"updatesInstalling": "Installing update...",
|
|
"updatesLastChecked": "Last checked {{at}}",
|
|
"updatesLatestRelease": "Latest release",
|
|
"updatesNever": "never",
|
|
"updatesNotificationsHint": "Notification preferences are managed in <2>Notifications</2>.",
|
|
"updatesPageDescription": "Current vs latest release plus the full kandev changelog.",
|
|
"updatesReleaseNotes": "Release notes",
|
|
"updatesRetryAfter_one": "Already checked. Try again in {{count}}s.",
|
|
"updatesRetryAfter_other": "Already checked. Try again in {{count}}s.",
|
|
"updatesTitle": "Updates",
|
|
"updatesUpToDate": "Kandev is up to date.",
|
|
"usersAddUser": "Add user",
|
|
"usersColumnActions": "Actions",
|
|
"usersColumnEmail": "Email",
|
|
"usersColumnName": "Name",
|
|
"usersColumnRole": "Role",
|
|
"usersColumnStatus": "Status",
|
|
"usersConfirm": "Confirm",
|
|
"usersConfirmDisable": "Disable {{email}}? They will be signed out everywhere.",
|
|
"usersConfirmEnable": "Re-enable {{email}}?",
|
|
"usersConfirmRoleChange": "Change {{email}} to {{role}}?",
|
|
"usersDisable": "Disable",
|
|
"usersEmpty": "No users yet.",
|
|
"usersEnable": "Enable",
|
|
"usersInviteLink": "Invite link",
|
|
"usersLastAdminGuard": "This deployment must keep at least one active admin.",
|
|
"usersLoadFailed": "Failed to load users.",
|
|
"usersLoading": "Loading users...",
|
|
"usersMakeAdmin": "Make admin",
|
|
"usersMakeMember": "Make member",
|
|
"usersPageDescription": "Manage accounts, roles, and invite links for this instance.",
|
|
"usersRoleAdmin": "admin",
|
|
"usersRoleMember": "member",
|
|
"usersStatusActive": "active",
|
|
"usersStatusDisabled": "disabled",
|
|
"usersTakesEffectImmediately": "{{email}}; this takes effect immediately.",
|
|
"usersTitle": "Users",
|
|
"usersUpdateFailed": "Could not update user",
|
|
"versionCurrent": "Current",
|
|
"versionLatest": "Latest",
|
|
"versionTitle": "Version",
|
|
"versionViewUpdates": "View updates"
|
|
}
|