{
    "languageNativeName": "English",
    "cancel": "Cancel",
    "confirm": "OK",
    "close": "Close",
    "back": "Back",
    "settings": "Settings",
    "browse": "Browse",
    "manage": "Manage",
    "auto": "Auto",
    "categoryAll": "All Files",
    "categoryVideo": "Video",
    "categoryAudio": "Audio",
    "categoryDocument": "Document",
    "categoryImage": "Image",
    "categoryProgram": "Programs",
    "categoryArchive": "Archive",
    "categoryOther": "Other",
    "today": "Today",
    "yesterday": "Yesterday",
    "thisWeek": "This Week",
    "thisMonth": "This Month",
    "older": "Older",
    "statusPending": "Pending",
    "statusDownloading": "Downloading",
    "statusPaused": "Paused",
    "statusCompleted": "Completed",
    "statusError": "Error",
    "statusPreparing": "Preparing",
    "statusResuming": "Resuming",
    "statusFileMissing": "File deleted",
    "pluginProcessing": "Plugin processing…",
    "subtitlePaused": "Paused",
    "subtitleError": "Download Failed",
    "subtitlePending": "Pending...",
    "subtitlePreparing": "Preparing...",
    "subtitleResuming": "Resuming...",
    "unknownSize": "Unknown Size",
    "unknownFile": "Unknown File",
    "subtitleQueued": "Queue #{pos}",
    "etaSeconds": "{n}s",
    "etaMinutes": "{n}m",
    "etaHours": "{n}h",
    "sidebarStatus": "STATUS",
    "sidebarQueues": "QUEUES",
    "sidebarCategory": "CATEGORY",
    "defaultQueue": "Default Queue",
    "createQueueAction": "New Queue",
    "editQueue": "Edit Queue",
    "deleteQueueAction": "Delete Queue",
    "queueNameLabel": "Queue Name",
    "queueNameHint": "Enter queue name",
    "queueSpeedLimit": "Speed Limit (KB/s)",
    "queueSpeedLimitHint": "0 = Unlimited",
    "queueMaxConcurrent": "Max Concurrent Downloads",
    "queueMaxConcurrentHint": "0 = Use global setting",
    "queueDefaultSegments": "Threads",
    "queueDefaultSegmentsHint": "0 = Auto",
    "queueSaveDir": "Default Save Directory",
    "queueDefaultUserAgent": "Default User-Agent",
    "queueUaInheritGlobal": "Inherit Global",
    "queueUaHint": "Leave empty to inherit global UA",
    "queueDeleteConfirmDesc": "Delete queue \"{name}\"? Tasks in this queue will be moved to the Main Queue.",
    "taskQueueLabel": "Queue",
    "defaultQueueSetting": "Default Queue",
    "defaultQueueSettingDesc": "Default queue for browser extension and new downloads",
    "mainQueue": "Main Queue",
    "laterQueue": "Download Later",
    "ungroupedTasks": "Ungrouped",
    "startQueueAction": "Start Queue",
    "stopQueueAction": "Stop Queue",
    "queueRunningBadge": "Running",
    "queueStoppedBadge": "Stopped",
    "manageQueueAction": "Manage Queue",
    "downloadLater": "Download Later",
    "startIntoQueueTooltip": "Starts into “{name}”; use the arrow to pick another queue",
    "laterIntoQueueTooltip": "Create without starting into “{name}”; use the arrow to pick another queue",
    "subtitleWaitingQueue": "Waiting for queue start",
    "queueTabSettings": "Settings",
    "queueTabSchedule": "Schedule",
    "queueTabTasks": "Tasks",
    "queueScheduleEnable": "Enable daily schedule",
    "queueScheduleDesc": "Starts/stops the queue at the set times; times missed during sleep fire after waking the same day",
    "queueScheduleStartLabel": "Start time",
    "queueScheduleStopLabel": "Stop time",
    "queueScheduleTimeHint": "HH:MM, empty = off",
    "queueScheduleTimeInvalid": "Time must be HH:MM",
    "queueScheduleDays": "Repeat",
    "weekdaysShort": "Mon,Tue,Wed,Thu,Fri,Sat,Sun",
    "queueTasksOrderHint": "Tasks start in this order when the queue starts",
    "queueNoPendingTasks": "No pending tasks in this queue",
    "moveUpAction": "Move up",
    "moveDownAction": "Move down",
    "builtinQueueRenameHint": "Built-in queues cannot be renamed",
    "queueDirInheritHint": "Empty = global default folder",
    "moveToQueueAction": "Move to Queue",
    "scheduleSummaryBoth": "Starts the queue at {start} and stops it at {stop}",
    "scheduleSummaryStartOnly": "Starts the queue at {start}; never auto-stops",
    "scheduleSummaryStopOnly": "Stops the queue at {stop}; never auto-starts",
    "scheduleNeedOneTime": "Set a start or stop time, otherwise the schedule does nothing",
    "scheduleHourLabel": "Hour",
    "scheduleMinuteLabel": "Minute",
    "downloadUpdateVersion": "Download v{v}",
    "installAndRestart": "Install & Restart",
    "newDownload": "New Download",
    "searchPlaceholder": "Search tasks or settings...",
    "searchGroupTasks": "Downloads",
    "searchGroupSettings": "Settings",
    "settingsSearchSubtitle": "Settings · {catLabel} · {desc}",
    "settingsSearchHint": "Search settings...",
    "settingsSearchNoResults": "No matching settings",
    "pauseAll": "Pause All",
    "resumeAll": "Resume All",
    "toggleToLight": "Switch to Light Mode",
    "toggleToDark": "Switch to Dark Mode",
    "tabAll": "All",
    "tabDownloading": "Downloading",
    "tabCompleted": "Completed",
    "tabPaused": "Paused",
    "tabError": "Failed",
    "selectAll": "Select All",
    "deselectAll": "Deselect All",
    "selectedCount": "{n} selected",
    "deleteTask": "Delete Task",
    "deleteTaskAndFile": "Delete Task & File",
    "startAll": "Start All",
    "activeGroupLabel": "Active",
    "emptyTitle": "No Downloads",
    "emptySubtitle": "Click \"New Download\" or right-click to start",
    "colFileName": "File Name",
    "colProgress": "Progress",
    "colSpeed": "Speed",
    "colEta": "ETA",
    "colStatus": "Status",
    "pause": "Pause",
    "resume": "Resume",
    "boostDownload": "Boost Download",
    "cancelBoost": "Cancel Boost",
    "boostBannerActive": "⚡ Boost: {fileName} — {count} task(s) will resume on completion",
    "boostBannerCancel": "Cancel",
    "openFile": "Open File",
    "openFolder": "Open Folder",
    "copyUrl": "Copy URL",
    "urlCopied": "URL Copied",
    "errorCopied": "Error message copied",
    "batchDeleteTask": "Batch Delete Tasks",
    "batchDeleteTaskAndFile": "Batch Delete Tasks & Files",
    "batchDeletingTitle": "Deleting Tasks",
    "batchDeletingProgress": "Deleting {done} of {total} tasks...",
    "detail": "Details",
    "selectTaskHint": "Select a task to view details",
    "downloadDistribution": "Download Distribution",
    "infoSize": "Size",
    "infoDownloaded": "Downloaded",
    "infoSpeed": "Speed",
    "infoRemaining": "Remaining",
    "infoStatus": "Status",
    "infoStartedAt": "Started",
    "infoCompletedAt": "Finished",
    "infoDuration": "Duration",
    "infoThreads": "{n} threads",
    "infoPath": "Path",
    "infoError": "Error",
    "infoUrl": "URL",
    "resumingClickPause": "Resuming... (click to pause)",
    "dynamicSplit": "Split",
    "splitCount": "{total} ({proactive} proactive · {reactive} reactive)",
    "splitLatest": "Latest: #{parentNum} split into #{childNum} ({childSize})",
    "addDownloadTask": "Add a new download task",
    "startDownload": "Start",
    "downloadUrl": "Download URL",
    "urlPlaceholder": "HTTP / HTTPS / FTP URL",
    "saveDir": "Save Directory",
    "selectSaveDir": "Select save directory",
    "threads": "Threads",
    "customThreads": "Custom",
    "customThreadsHint": "Enter 1-256",
    "customRangeHint": "Enter {min}-{max}",
    "threadsInvalidRange": "Threads must be between 1 and 256",
    "editThreads": "Change thread count",
    "editThreadsTitle": "Change thread count",
    "editThreadsResetHint": "A downloading task is paused and resumed automatically to apply the change immediately. Downloaded progress is fully preserved.",
    "threadsChanged": "Thread count updated.",
    "threadsChangeRejected": "Cannot change the thread count of a completed task.",
    "configuredThreads": "Thread count",
    "activeSegments": "Active segments",
    "renameOptional": "Rename (optional, auto-detect if empty)",
    "autoDetectFilename": "Auto-detect filename",
    "filenameOptional": "Filename (auto-detect if empty)",
    "fromBrowserExtension": "Download request from browser extension",
    "selectTorrentFile": "Select torrent file",
    "openTorrentFile": "Open .torrent file",
    "torrentFileSelected": "Torrent file selected",
    "torrentFileCount": "{count} torrent file(s) selected",
    "orSeparator": "or",
    "batchDownloadDesc": "One URL per line, supports HTTP / FTP / Magnet",
    "batchUrls": "URL List",
    "batchUrlPlaceholder": "One URL per line, e.g.:\nhttps://example.com/file1.zip\nhttps://example.com/file2.zip\nmagnet:?xt=urn:btih:...",
    "urlCount": "{count} URLs",
    "startBatchDownload": "Download {count} files",
    "importTxtFile": "Import TXT file",
    "importTxtNoUrls": "No valid URLs found in file",
    "importTxtFound": "Imported {count} URLs",
    "btFileSelectTitle": "Select Files to Download",
    "btFileSelectDescSingle": "This torrent contains 1 file. Confirm to start downloading.",
    "btFileSelectDesc": "This torrent contains {count} files. Select which files to download.",
    "btFileSelectAll": "All Files",
    "btFileSelectConfirm": "Download {count} file(s) ({size})",
    "btResolvingMagnet": "Resolving magnet link, please wait...",
    "btResolveFailed": "Failed to resolve magnet link: no metadata received (no peers or DHT blocked). The task was marked as error; you can retry it later from the task list.",
    "btWaitingFiles": "Select files to download",
    "btProbing": "Parsing torrent file...",
    "btProbeError": "Failed to parse torrent file; will retry after download starts",
    "btStartWithSelection": "Download {count} file(s) ({size})",
    "statusDownloadingLabel": "Downloading",
    "statusIdle": "Idle",
    "statusSummary": "{active} active · {paused} paused · {total} total",
    "statusSpeedLimitOff": "Unlimited",
    "statusSpeedLimitKbs": "KB/s",
    "statusSpeedLimitHint": "Custom rate",
    "speedLimitTitle": "Global Speed Limit",
    "speedLimitCustom": "Custom",
    "shutdownTriggerLabel": "Shutdown when done",
    "shutdownTitle": "Auto Shutdown When Done",
    "shutdownNeedActiveTask": "Enable only while tasks are running",
    "shutdownDelayLabel": "Delay after completion",
    "shutdownMinutesUnit": "min",
    "shutdownDelayMinutes": "{m} min",
    "shutdownImmediate": "Immediately",
    "shutdownArmedHintImmediate": "PC will shut down immediately after all downloads finish",
    "shutdownArmedHint": "PC will shut down {m} min after all downloads finish",
    "shutdownCountdown": "Shutting down in {time}",
    "shutdownCancelButton": "Cancel Shutdown",
    "settingsCatGeneral": "General",
    "settingsCatGeneralDesc": "Basic behavior settings",
    "settingsCatAppearance": "Appearance",
    "settingsCatAppearanceDesc": "Theme & Colors",
    "settingsCatDownload": "Download",
    "settingsCatDownloadDesc": "Download engine settings",
    "settingsCatBt": "BitTorrent",
    "settingsCatBtDesc": "BitTorrent settings",
    "settingsCatEd2k": "eD2K",
    "settingsCatEd2kDesc": "eD2K / eMule settings",
    "settingsCatProxy": "Proxy",
    "settingsCatProxyDesc": "Network proxy settings",
    "settingsCatApiService": "API Service",
    "settingsCatApiServiceDesc": "Browser takeover, aria2 RPC compatibility & management API",
    "settingsCatAbout": "About",
    "settingsCatAboutDesc": "Version info & Updates",
    "settingsTabGeneral": "General",
    "settingsTabTracker": "Tracker",
    "settingsTabServers": "Servers",
    "settingsGroupStartupTray": "Startup & Tray",
    "settingsGroupSystem": "System",
    "settingsGroupSaveLocation": "Save Location",
    "settingsGroupBehavior": "Behavior",
    "settingsGroupConnection": "Connection & Performance",
    "settingsGroupRetry": "Auto Retry",
    "settingsGroupAdvanced": "Advanced",
    "settingsGroupTheme": "Theme & Colors",
    "settingsGroupInterface": "Interface",
    "autoStartup": "Launch at Startup",
    "autoStartupDesc": "Automatically run FluxDown on system startup",
    "closeToTray": "Minimize to Tray on Close",
    "closeToTrayDesc": "Hide to system tray instead of quitting when closing",
    "startMinimizedToTray": "Start minimized to tray",
    "startMinimizedToTrayDesc": "App starts hidden in the system tray",
    "floatingBall": "Desktop Floating Ball",
    "floatingBallDesc": "Always-on-top desktop widget showing speed & progress; drag URLs or torrents onto it to create tasks",
    "floatingBallActiveOnly": "Show Only While Downloading",
    "floatingBallActiveOnlyDesc": "Show the floating ball only when downloads are active; hide it otherwise",
    "floatingBallWaylandUnsupported": "Your desktop session (Wayland) does not allow positioned always-on-top windows, so the floating ball is unavailable. Alternatives enabled: the tray shows live speed, and copied URLs are auto-filled into the download dialog when you open the main window. Add local files (incl. .torrent) from the main window or by double-clicking them.",
    "clipboardWatch": "Clipboard Watcher",
    "clipboardWatchDesc": "Watch the clipboard for download URLs while the main window is hidden (availability depends on desktop environment)",
    "clipboardUrlDetectedTitle": "Download link detected",
    "clipboardUrlDetectedBody": "Click to create a download task",
    "trayShowFloatingBall": "Show Floating Ball",
    "hideFloatingBall": "Hide Floating Ball",
    "torrentFileAssociation": "Associate .torrent Files",
    "torrentFileAssociationDesc": "Set FluxDown as the default app for .torrent files",
    "torrentAssocDialogTitle": "Associate Torrent Files",
    "torrentAssocDialogDesc": "Set FluxDown as the default app for .torrent files?\nDouble-click a torrent file to start downloading directly.",
    "notifyOnComplete": "Completion Notifications",
    "notifyOnCompleteDesc": "Show a system notification when a task completes. When disabled, no completion notifications will be shown",
    "silentDownload": "Silent Download",
    "silentDownloadDesc": "Start external downloads (e.g. from the browser extension) immediately with default settings, without showing the confirmation dialog",
    "useServerTime": "Use Server File Time",
    "useServerTimeDesc": "Set the modified time of completed files to the server-provided original time (Last-Modified) instead of the download completion time",
    "keepAwakeWhileDownloading": "Keep Awake While Downloading",
    "keepAwakeWhileDownloadingDesc": "Prevent the system from sleeping or turning off the display while downloads are active. Restores automatically when done",
    "sidebarVisibility": "Sidebar Sections",
    "sidebarVisibilityDesc": "Choose which sections to show in the sidebar",
    "showSidebarStatus": "Show Status",
    "showSidebarStatusDesc": "Show status filter section in sidebar",
    "showSidebarQueues": "Show Queues",
    "showSidebarQueuesDesc": "Show queues section in sidebar",
    "showSidebarCategory": "Show Category",
    "showSidebarCategoryDesc": "Show category section in sidebar",
    "hideSection": "Hide this section",
    "titlebarButtons": "Titlebar Buttons",
    "titlebarButtonsDesc": "Choose which tool buttons to show in the titlebar; right-click a button to hide it",
    "showTitlebarPauseAll": "Pause All Button",
    "showTitlebarPauseAllDesc": "Show pause all button in the titlebar",
    "showTitlebarResumeAll": "Resume All Button",
    "showTitlebarResumeAllDesc": "Show resume all button in the titlebar",
    "showTitlebarSettings": "Settings Button",
    "showTitlebarSettingsDesc": "Show settings button in the titlebar",
    "showTitlebarTheme": "Theme Toggle Button",
    "showTitlebarThemeDesc": "Show theme toggle button in the titlebar",
    "hideButton": "Hide this button",
    "customCategories": "Custom Categories",
    "customCategoriesDesc": "Create custom file categories, match by extension or regex",
    "addCategory": "Add Category",
    "editCategory": "Edit Category",
    "deleteCategory": "Delete Category",
    "deleteCategoryConfirm": "Are you sure you want to delete this category? Downloaded files are not affected.",
    "categoryName": "Category Name",
    "categoryNameHint": "e.g. eBooks",
    "categoryIcon": "Icon",
    "matchMode": "Match Mode",
    "matchByExtension": "By Extension",
    "matchByRegex": "By Regex",
    "extensionsLabel": "Extensions",
    "extensionsHint": "Comma separated, e.g. epub, mobi, azw3",
    "regexLabel": "Regex Pattern",
    "regexHint": "Match filename, e.g. .*\\.(epub|mobi)$",
    "regexInvalid": "Invalid regex pattern",
    "categoryNameRequired": "Category name is required",
    "extensionsRequired": "Enter at least one extension",
    "categorySaveDir": "Category Save Directory",
    "categorySaveDirDesc": "Leave empty to use global default",
    "restoreDefaultPath": "Restore Default",
    "nCustomCategories": " custom categories",
    "resetBuiltinCategories": "Reset Defaults",
    "resetAllCategoriesConfirm": "Reset all categories to defaults? Custom categories will be removed and built-in categories will be restored to their initial configuration.",
    "builtinCategory": "Built-in",
    "customCategory": "Custom",
    "categoryPriorityNote": "Custom categories take priority over built-in ones. Use arrows to reorder.",
    "settingFailed": "Setting Failed",
    "autoStartupFailedDesc": "Failed to modify startup setting. Please check system permissions.",
    "language": "Language",
    "languageDesc": "Choose display language",
    "languageSystem": "System",
    "languageChinese": "中文",
    "languageEnglish": "English",
    "themeMode": "Theme Mode",
    "themeModeDesc": "Choose light, dark, or follow system",
    "themeSelection": "Theme",
    "themeSelectionDesc": "Choose the interface theme style",
    "themeColor": "Theme Color",
    "themeColorDesc": "Choose the app accent color",
    "themeModeSystem": "System",
    "themeModeLight": "Light",
    "themeModeDark": "Dark",
    "uiScale": "Interface Scale",
    "uiScaleDesc": "Adjust the overall interface scale",
    "appIcon": "App Icon",
    "appIconDesc": "Customize the icon used by the window, taskbar and tray",
    "appIconDefault": "Default",
    "appIconCustom": "Custom",
    "appIconBolt": "Bolt",
    "appIconChooseImage": "Choose Image…",
    "appIconApplyFailed": "Failed to set app icon",
    "appIconZoomHint": "Scroll to zoom",
    "themeDefaultDark": "Default Dark",
    "themeDefaultLight": "Default Light",
    "themeMidnightBlue": "Midnight Blue",
    "themeNord": "Nord",
    "themeWarmLight": "Warm Light",
    "themeDarkTheme": "Dark Theme",
    "themeLightTheme": "Light Theme",
    "themeImport": "Import",
    "themeExport": "Export",
    "themeImportSuccess": "Theme imported successfully",
    "themeExportSuccess": "Theme exported successfully",
    "themeImportError": "Failed to import theme",
    "themeMore": "More Themes",
    "colorBlue": "Blue",
    "colorGreen": "Green",
    "colorViolet": "Violet",
    "colorRose": "Rose",
    "colorCustom": "Custom",
    "defaultSaveDir": "Default Save Directory",
    "defaultSaveDirDesc": "Default save location for new downloads",
    "selectDefaultSaveDir": "Select default save directory",
    "rememberLastSaveDir": "Remember Last Save Location",
    "rememberLastSaveDirDesc": "Use the last download location as the default for new downloads instead of the fixed directory",
    "defaultThreads": "Max Connections",
    "defaultThreadsDesc": "Per-task connection cap; the downloader ramps up gradually based on server behaviour",
    "autoMaxConnections": "Auto Mode Connection Cap",
    "autoMaxConnectionsDesc": "Maximum connections the auto scheduler may use when threads are set to Auto",
    "connPolicyCache": "Learned Server Policies",
    "connPolicyCacheDesc": "After a server rejects parallel connections (403/429), its cap is remembered for 24h; clear to relearn if the limit was lifted",
    "connPolicyCacheClear": "Clear",
    "connPolicyCacheCleared": "Server policy cache cleared",
    "connPolicyCacheEmpty": "No records",
    "nRecords": "{n} records",
    "maxConcurrent": "Max Concurrent Downloads",
    "maxConcurrentDesc": "Maximum number of simultaneous downloads",
    "speedLimit": "Speed Limit",
    "speedLimitDesc": "Limit global download speed (0 = unlimited)",
    "speedLimitUnit": "KB/s (0 = unlimited)",
    "nThreads": "{n} threads",
    "nTasks": "{n} tasks",
    "autoRetryCount": "Auto-retry Attempts",
    "autoRetryCountDesc": "Number of automatic retries after transient errors (e.g. network drops)",
    "autoRetryOff": "Off",
    "autoRetryUnlimited": "Unlimited",
    "nRetries": "{n} times",
    "autoRetryDelay": "Retry Interval",
    "autoRetryDelayDesc": "Seconds to wait before each auto-retry (increases per attempt)",
    "autoRetryDelayUnit": "sec (0 = immediate)",
    "proxySettings": "Proxy Settings",
    "proxySettingsDesc": "Configure network proxy for HTTP/FTP downloads",
    "proxyModeNone": "No Proxy",
    "proxyModeNoneDesc": "Direct connection",
    "proxyModeSystem": "System Proxy",
    "proxyModeSystemDesc": "Read from system settings",
    "proxyModeManual": "Manual",
    "proxyModeManualDesc": "Custom proxy server",
    "proxyType": "Proxy Type",
    "proxyHost": "Server Address",
    "proxyHostPlaceholder": "e.g. 127.0.0.1",
    "proxyPort": "Port",
    "proxyPortPlaceholder": "e.g. 1080",
    "proxyUsername": "Username",
    "proxyUsernamePlaceholder": "Optional",
    "proxyPassword": "Password",
    "proxyPasswordPlaceholder": "Optional",
    "proxyNoList": "Bypass List",
    "proxyNoListDesc": "Addresses that bypass proxy, comma separated",
    "proxyNoListPlaceholder": "e.g. localhost,192.168.*",
    "proxyBtNote": "Proxy is not supported for BitTorrent downloads",
    "proxySystemDetecting": "Detecting system proxy...",
    "proxySystemNotConfigured": "No system proxy configured",
    "proxySystemDetected": "System proxy detected (read-only)",
    "proxyTestConnection": "Test Connection",
    "proxyTesting": "Testing...",
    "proxyTestSuccess": "Connected, latency {ms} ms",
    "proxyTestFailed": "Connection failed: {error}",
    "userAgent": "User-Agent",
    "userAgentDesc": "Browser identity used in download requests.",
    "userAgentPlaceholder": "Leave empty for default identity FluxDown/<version>",
    "userAgentTaskPlaceholder": "Leave empty to use global setting",
    "userAgentPresetDefault": "Default (FluxDown)",
    "userAgentPresetChrome": "Chrome",
    "userAgentPresetFirefox": "Firefox",
    "userAgentPresetEdge": "Edge",
    "userAgentPresetSafari": "Safari (macOS)",
    "userAgentPresetCustom": "Custom",
    "searchKeywordsUserAgent": "UA,user agent,browser",
    "fileManagerSection": "File Manager",
    "revealFileCmdLabel": "File manager command",
    "revealFileCmdDesc": "Third-party file manager command used to open files/folders. Placeholders: {path} = current path (a downloaded file uses its full path — most managers locate and select it; for a directory it is the folder path), {dir} = directory (parent dir for files). Leave empty to use the platform default (Explorer / Finder / Nautilus, etc.).",
    "revealFileCmdPlaceholder": "e.g. \"C:\\Program Files\\GPSoftware\\Directory Opus\\dopusrt.exe\" /cmd Go {path} NEW",
    "searchKeywordsFileManager": "file manager,explorer,finder,nautilus,total commander,folder",
    "taskProxy": "Task Proxy",
    "taskProxyDesc": "Use a separate proxy for this task (empty = use global)",
    "taskProxyPlaceholder": "e.g. socks5://127.0.0.1:1080",
    "taskProxyAdvanced": "Advanced Options",
    "taskProxyFormatHint": "Supported proxy formats:\n\nWithout auth:\n  http://host:port\n  socks5://host:port\n\nWith username & password:\n  http://user:pass@host:port\n  socks5://user:pass@host:port\n\nSupported types: http / https / socks4 / socks5\nLeave empty to use global proxy settings",
    "taskCookie": "Cookie",
    "taskCookieDesc": "Used for downloads requiring login (empty = none)",
    "taskCookieBatchDesc": "Batch: empty = each item keeps its own captured cookies; filled = overrides all",
    "taskCookiePlaceholder": "e.g. name=value; name2=value2",
    "taskChecksum": "Hash Verification",
    "taskChecksumDesc": "Verify file integrity after download (empty = skip)",
    "taskChecksumPlaceholder": "Paste the hash value",
    "taskHeaders": "Custom Headers",
    "taskHeadersDesc": "Add extra HTTP headers for this task (use the Cookie field above for cookies)",
    "taskHeadersKeyPlaceholder": "Header name",
    "taskHeadersValuePlaceholder": "Value",
    "taskHeadersAdd": "Add header",
    "apiServiceEnable": "Enable API Service",
    "apiServiceEnableDesc": "Start the local HTTP API service (127.0.0.1 only) used by the feature toggles below",
    "apiServicePort": "Listen Port",
    "apiServicePortDesc": "Default 17800, range 1024-65535",
    "apiServicePortInvalid": "Port must be between 1024 and 65535",
    "apiServiceToken": "Access Token",
    "apiServiceTokenDesc": "Access token for API requests; type your own or click Generate for a random one. Required once the management API is enabled",
    "apiServiceTokenGenerate": "Generate",
    "apiServiceCopy": "Copy",
    "apiServiceCopied": "Copied",
    "apiServiceTokenClear": "Clear",
    "apiServiceTokenCleared": "Access token cleared",
    "apiServiceTokenClearConfirmTitle": "Clear access token?",
    "apiServiceTokenClearConfirmDesc": "The management API is enabled and depends on this token. Clearing it will also turn off the management API. Continue?",
    "apiServiceFeaturesTitle": "Feature Toggles",
    "apiServiceFeaturesDesc": "Control which API surface each module exposes (disabled when the master switch is off)",
    "apiServiceTakeover": "Browser Script Takeover",
    "apiServiceTakeoverDesc": "Lets the FluxDown userscript take over browser downloads",
    "apiServiceCopyScript": "Copy Userscript",
    "apiServiceScriptCopied": "Script copied; paste it into a new Tampermonkey script",
    "apiServiceJsonrpc": "aria2 RPC Compatible",
    "apiServiceJsonrpcDesc": "Implements the aria2 JSON-RPC protocol for \"send to aria2\" scripts or clients like AriaNg",
    "apiServiceApi": "Management API",
    "apiServiceApiDesc": "HTTP API for querying and controlling tasks, for MCP servers and automation scripts (authentication required)",
    "apiServiceMcp": "MCP Endpoint",
    "apiServiceMcpDesc": "Exposes a Model Context Protocol endpoint for AI clients like Claude Desktop, Cursor, and Cline (shares the Management API token, authentication required)",
    "apiServiceAddress": "Address",
    "searchKeywordsApiService": "api,service,rpc,userscript,tampermonkey,capture,browser,aria2,ariang,token,port,mcp,automation,management",
    "btSettings": "BitTorrent Settings",
    "btSettingsDesc": "BitTorrent protocol settings",
    "btEnableDht": "Enable DHT",
    "btEnableDhtDesc": "Distributed Hash Table for trackerless peer discovery",
    "btEnableUpnp": "Enable UPnP Port Mapping",
    "btEnableUpnpDesc": "Auto-configure router port forwarding for better connectivity",
    "btListenPort": "Listen Port Range",
    "btListenPortDesc": "Port range for incoming BT connections",
    "btListenPortStart": "Start Port",
    "btListenPortEnd": "End Port",
    "btTrackerList": "Tracker List",
    "btTrackerListDesc": "Tracker servers for peer discovery, one URL per line",
    "btTrackerPlaceholder": "One tracker URL per line, e.g.:\nudp://tracker.opentrackr.org:1337/announce\nhttps://tracker.example.com/announce",
    "btTrackerCount": "{n} trackers",
    "btResetTrackers": "Reset to Default",
    "btResetTrackersConfirm": "Reset tracker list to defaults?",
    "btTrackerSub": "Tracker Subscription",
    "btTrackerSubDesc": "Periodically fetch up-to-date trackers from community-maintained lists, merged and deduplicated with the list above",
    "btTrackerSubStatus": "{n} trackers subscribed",
    "btTrackerSubNeverUpdated": "Not updated yet",
    "btTrackerSubUpdatedAt": "Updated at {time}",
    "btTrackerSubUpdateNow": "Update Now",
    "btTrackerSubUpdating": "Updating…",
    "btTrackerSubUpdateFailed": "Update failed",
    "btTrackerSubPlaceholder": "One subscription URL per line, e.g.:\nhttps://trackerslist.com/best.txt\nhttps://ngosang.github.io/trackerslist/trackers_best.txt",
    "btTrackerSubResetConfirm": "Reset subscription URLs to defaults?",
    "btPortInvalid": "Invalid port range (1024-65535, start ≤ end)",
    "ed2kSettings": "eD2K Servers",
    "ed2kSettingsDesc": "Configure eD2K servers and server.met subscription",
    "ed2kServerList": "Server List",
    "ed2kServerListDesc": "Manually configured eD2K servers (for finding sources), merged and deduplicated with the subscription list",
    "ed2kServerCount": "{n} servers",
    "ed2kResetServers": "Reset to Default",
    "ed2kResetServersConfirm": "Reset server list to defaults?",
    "ed2kServerPlaceholder": "One server per line, e.g.:\n176.123.5.89:4725\n45.82.80.155:5687",
    "ed2kServerSub": "Server Subscription",
    "ed2kServerSubDesc": "Periodically fetch up-to-date servers from community-maintained server.met lists, merged and deduplicated with the list above",
    "ed2kEnableKad": "Kad DHT source finding",
    "ed2kEnableKadDesc": "Find sources via the decentralized Kad network, works even when all servers are down",
    "ed2kEnableUpnp": "UPnP port mapping",
    "ed2kEnableUpnpDesc": "Auto-map ports via UPnP to obtain HighID, connecting to more peers and receiving callbacks",
    "ed2kListenPort": "Listen port",
    "ed2kListenPortDesc": "eD2K client TCP/UDP listen port (0 = auto-select)",
    "ed2kServerSubStatus": "{n} servers subscribed",
    "ed2kServerSubNeverUpdated": "Not updated yet",
    "ed2kServerSubUpdatedAt": "Updated at {time}",
    "ed2kServerSubUpdateNow": "Update Now",
    "ed2kServerSubUpdating": "Updating…",
    "ed2kServerSubUpdateFailed": "Update failed",
    "ed2kServerSubPlaceholder": "One server.met URL per line, e.g.:\nhttp://upd.emule-security.org/server.met\nhttps://www.shortypower.org/server.met",
    "ed2kServerSubResetConfirm": "Reset subscription URLs to defaults?",
    "filePickerErrorTimeout": "Directory picker timed out, please try again.\nIf a file picker window opened in the background, close it first.",
    "filePickerErrorNoTool": "No system file picker found.\nInstall xdg-desktop-portal-gtk (recommended) or zenity / kdialog:\nsudo pacman -S xdg-desktop-portal-gtk or sudo apt install xdg-desktop-portal-gtk",
    "filePickerErrorNative": "Failed to open file picker dialog, please try again.",
    "filePickerErrorGeneric": "Failed to open file picker, please try again.",
    "btSettingsRestartHint": "Some settings require BT engine restart to take effect",
    "appDescription": "Multi-protocol high-speed downloader",
    "currentVersion": "Current Version",
    "latestVersion": "Latest Version",
    "publishDate": "Published",
    "softwareUpdate": "Software Update",
    "checkUpdateDesc": "Check for available updates",
    "autoCheckUpdate": "Auto Check for Updates",
    "autoCheckUpdateDesc": "Automatically check for updates on startup",
    "updateChannel": "Update Channel",
    "updateChannelDesc": "Frontier delivers preview builds ahead of stable — may be unstable",
    "updateChannelStable": "Stable",
    "updateChannelFrontier": "Frontier",
    "donateTitle": "Support FluxDown",
    "donateBody": "Since {date}, FluxDown has shipped {releases} releases with over {commits} commits — always free, with zero ads and zero tracking. Ongoing development relies on your support and feedback.",
    "donateThanks": "Your support helps FluxDown keep improving. Thank you so much!",
    "donateButton": "Donate to the Developer",
    "upToDate": "Up to Date",
    "newVersionFound": "New version v{v} available",
    "updateNow": "Update Now",
    "updateLater": "Later",
    "skipThisVersion": "Skip This Version",
    "updatePromptBody": "Version v{v} is available ({size}). Update now?",
    "downloadComplete": "Download complete, ready to install",
    "downloadingUpdate": "Downloading update...",
    "segmentsDownloading": "{active}/{total} segments",
    "checking": "Checking...",
    "checkUpdate": "Check for Updates",
    "downloadUpdate": "Download ({size})",
    "recheck": "Recheck",
    "updateFailedTitle": "Previous Update Failed",
    "updateFailedOpenSite": "Download from Website",
    "updateFallbackToTask": "Download via Task",
    "updateFallbackTaskCreated": "Added the update to the download list",
    "officialWebsite": "Official Website",
    "visitWebsiteForMore": "Visit website for more information",
    "logExport": "Export Logs",
    "logExportDesc": "Export logs to attach when submitting feedback",
    "logExportInfo": "{count} log file(s), {size} total",
    "logExportButton": "Export Logs",
    "logOpenDirButton": "Open Folder",
    "logExportSuccess": "Exported {count} log file(s)",
    "logExportEmpty": "No log files to export",
    "logExportFailed": "Failed to export logs",
    "logSelectExportDir": "Select Export Directory",
    "logMaxSize": "Max Log Size",
    "logMaxSizeDesc": "Oldest logs are cleaned automatically when total size exceeds the limit",
    "changelogTitle": "New Version Available",
    "changelogSubtitle": "FluxDown v{v} is out. Here's what's new:",
    "changelogUpdateNow": "Update Now",
    "changelogLater": "Later",
    "changelogVersionCount": "{n} versions behind",
    "searchKeywordsAutoStartup": "startup,auto,boot,launch",
    "searchKeywordsCloseToTray": "close,tray,minimize",
    "searchKeywordsStartMinimizedToTray": "start,minimized,tray",
    "searchKeywordsFloatingBall": "floating,ball,widget,overlay,desktop",
    "searchKeywordsClipboardWatch": "clipboard,watch,monitor,link,copy",
    "searchKeywordsLanguage": "language,chinese,english,locale",
    "searchKeywordsThemeMode": "theme,dark,light,mode",
    "searchKeywordsThemeColor": "color,scheme,accent",
    "searchKeywordsUiScale": "scale,zoom,interface,size,DPI",
    "searchKeywordsAppIcon": "app icon,icon,taskbar,tray,custom",
    "searchKeywordsSaveDir": "save,directory,path,folder",
    "searchKeywordsThreads": "thread,segment,parallel",
    "searchKeywordsConcurrent": "concurrent,parallel,max",
    "searchKeywordsSpeedLimit": "speed,limit,bandwidth",
    "searchKeywordsUpdate": "update,upgrade,version",
    "searchKeywordsFileAssoc": "file,association,torrent,default,open",
    "searchKeywordsNotifyOnComplete": "notification,complete,alert,popup,system,toast",
    "searchKeywordsSilentDownload": "silent,quiet,confirm,dialog,extension,auto",
    "searchKeywordsUseServerTime": "file time,modified time,timestamp,server time",
    "searchKeywordsKeepAwake": "awake,sleep,screen,lock,display,wake,caffeinate",
    "searchKeywordsBtSettings": "BT,BitTorrent,torrent,magnet,tracker,DHT,UPnP,port",
    "searchKeywordsEd2kSettings": "eD2K,eMule,ed2k,edonkey,server,server.met,subscription",
    "searchKeywordsProxy": "proxy,HTTP,SOCKS,SOCKS5,SOCKS4,network,server",
    "searchKeywordsLogExport": "log,export,feedback,debug,diagnostic",
    "searchKeywordsDonate": "donate,sponsor,support",
    "searchKeywordsSidebarVisibility": "sidebar,show,hide,section,status,queue,category",
    "searchKeywordsTitlebarButtons": "titlebar,button,show,hide,pause,resume,settings,theme",
    "searchKeywordsCustomCategories": "custom,category,extension,regex,file type,filter",
    "feedback": "Feedback",
    "feedbackTitle": "Submit Feedback",
    "feedbackDesc": "Share your thoughts to help improve FluxDown",
    "feedbackTypeLabel": "Feedback Type",
    "feedbackTypeFeature": "Feature Request",
    "feedbackTypeBug": "Bug Report",
    "feedbackTypeOther": "Other",
    "feedbackTitleLabel": "Title",
    "feedbackTitlePlaceholder": "Briefly describe your feedback",
    "feedbackDescLabel": "Description",
    "feedbackDescPlaceholder": "Please describe in detail...",
    "feedbackContactLabel": "Contact",
    "feedbackContactPlaceholder": "Email or other contact info",
    "feedbackContactHint": "Enter your email to receive progress notifications. Other contact methods may not receive notifications.",
    "feedbackVersionLabel": "App Version",
    "feedbackVersionAuto": "Auto-detected",
    "feedbackSysInfoLabel": "Attached Info",
    "feedbackSysInfoSystem": "System",
    "feedbackSysInfoHint": "The app version and system info above are sent with your feedback to help diagnose issues. No personal or sensitive data is included.",
    "feedbackAttachLogs": "Attach today's logs",
    "feedbackAttachLogsHint": "Include today's logs (sanitized) to help us diagnose the issue faster",
    "feedbackOptional": "Optional",
    "feedbackSubmit": "Submit",
    "feedbackSubmitting": "Submitting...",
    "feedbackSuccess": "Thank you for your feedback!",
    "feedbackError": "Submission failed, please try again later",
    "feedbackRateLimited": "Too many requests, please try again later",
    "feedbackTitleCount": "{n}/200",
    "feedbackDescCount": "{n}/5000",
    "hlsQualityTitle": "Select Quality",
    "hlsQualityDesc": "Multiple quality options detected. Choose the one to download",
    "resolveVariantTitle": "Select Format",
    "resolveVariantDesc": "Multiple download formats detected. Choose the one to download",
    "trayShowWindow": "Show Window",
    "trayExit": "Exit",
    "menuFile": "File",
    "menuNewDownload": "New Download…",
    "menuCloseWindow": "Close Window",
    "menuEdit": "Edit",
    "menuSelectAll": "Select All",
    "menuFind": "Find",
    "menuView": "View",
    "menuWindow": "Window",
    "menuHelp": "Help",
    "menuCheckForUpdates": "Check for Updates…",
    "menuSettings": "Settings…",
    "menuWebsite": "FluxDown Website",
    "menuFeedback": "Send Feedback…",
    "menuAbout": "About FluxDown",
    "menuHide": "Hide FluxDown",
    "menuHideOthers": "Hide Others",
    "menuShowAll": "Show All",
    "menuQuit": "Quit FluxDown",
    "menuToggleFullScreen": "Toggle Full Screen",
    "menuMinimize": "Minimize",
    "menuZoom": "Zoom",
    "menuBringAllToFront": "Bring All to Front",
    "downloadCompleted": "Download Complete",
    "batchDownloadCompleted": "{count} Downloads Complete",
    "andMoreFiles": "and {count} more",
    "openFileFolder": "Open Folder",
    "mobileNavDownloads": "Downloads",
    "mobileSpeedSummary": "↓ {speed} · {n} task(s)",
    "mobileIdleSummary": "Idle · no active tasks",
    "mobileSearchHint": "Search tasks…",
    "mobileFilterTasks": "Filter Tasks",
    "mobileFileType": "File Type",
    "mobileByQueue": "By Queue",
    "mobileResetFilter": "Reset Filters",
    "mobileMoveToQueue": "Move to Queue…",
    "mobileSelectQueue": "Choose Target Queue",
    "mobileMovedToQueue": "Moved to queue",
    "mobilePaste": "Paste",
    "mobilePasted": "Pasted from clipboard",
    "mobileClipboardEmpty": "Clipboard is empty",
    "mobileSaveTo": "Save to",
    "mobileAdvancedOptions": "Advanced (Cookie / UA / Checksum)",
    "mobileEnterUrl": "Enter a download URL",
    "mobileDownloadStarted": "Download started",
    "mobileUrlHint": "URLs (multi-line / magnet / m3u8)",
    "mobilePausedAllToast": "All tasks paused",
    "mobileResumedAllToast": "All tasks resumed",
    "mobileTaskDetail": "Task Details",
    "mobileSegTitle": "Segments",
    "mobileSegRunning": "dynamic split active",
    "mobileSegStopped": "stopped",
    "mobileSegDone": "Done",
    "mobileSegActive": "Active",
    "mobileSegPending": "Pending",
    "mobileSpeedCurve": "Speed Curve",
    "mobileSpeedWindow": "Last 60s",
    "mobileSpeedPeak": "Peak {v}",
    "mobileTaskInfo": "Task Info",
    "mobileProtocol": "Protocol",
    "mobileCreatedAt": "Created",
    "mobileBoostAction": "Boost Priority",
    "mobileBoosted": "Boosted",
    "mobileBoostOn": "Boost enabled",
    "mobileBoostOff": "Boost cancelled",
    "mobileRetry": "Retry",
    "mobileOpenFile": "Open File",
    "mobileOpenFileFailed": "Failed to open file",
    "mobileFileNotFound": "File not found — it may have been moved or deleted",
    "mobileNoAppToOpen": "No app can open this file",
    "mobileTaskDeleted": "Task deleted",
    "mobileTaskFileDeleted": "Task & file deleted",
    "mobilePrivacyPolicy": "Privacy Policy",
    "mobileOpenSource": "Open Source Licenses",
    "mobileFooter": "FluxDown · No ads · No tracking · Local-first",
    "mobilePickDirUnmappable": "Couldn't resolve the folder; pick one on device storage",
    "mobileAllFilesTitle": "\"All files access\" required",
    "mobileAllFilesDesc": "Saving to public folders (e.g. Download) requires the \"All files access\" permission. Tap \"Grant\" to enable it in system settings.",
    "mobileGoGrant": "Grant",
    "deleteConfirmDescWithFile": "Delete \"{fileName}\" and its downloaded file? This cannot be undone.",
    "deleteConfirmDescKeepFile": "Delete \"{fileName}\"? The downloaded file will be kept on disk.",
    "batchDeleteConfirmDescWithFile": "Delete {count} selected tasks and their files? This cannot be undone.",
    "batchDeleteConfirmDescKeepFile": "Delete {count} selected tasks? Downloaded files will be kept on disk.",
    "donateDate": "{month} {d}, {y}",
    "monthNames": "January,February,March,April,May,June,July,August,September,October,November,December",

    "settingsCatExtensions": "Extensions",
    "settingsCatExtensionsDesc": "Manage plugins & optional external components",
    "settingsCatPlugins": "Plugins",

    "pluginsSectionTitle": "Installed Plugins",
    "pluginsEmpty": "No plugins installed yet",
    "pluginCommonLoading": "Loading…",
    "pluginInstallZipButton": "Install from .zip",
    "pluginInstallZipFailed": "Install failed: {error}",
    "pluginInstallDirLabel": "Install from directory (dev mode)",
    "pluginInstallDirPlaceholder": "Select a plugin directory",
    "pluginInstallDirButton": "Install",
    "pluginDevModeSwitch": "Dev mode",
    "pluginDevModeBadge": "Dev",
    "pluginDisabledManual": "Disabled",
    "pluginDisabledCircuitBreaker": "Auto-disabled",
    "pluginSettingsTooltip": "Settings",
    "pluginUninstallTooltip": "Uninstall",
    "pluginUninstallTitle": "Uninstall Plugin",
    "pluginUninstallMsg": "Uninstall \"{name}\"? This cannot be undone.",
    "pluginOpInstallSuccess": "Plugin installed",
    "pluginOpInstallFailed": "Install failed: {message}",
    "pluginOpUninstallSuccess": "Plugin uninstalled",
    "pluginOpUninstallFailed": "Uninstall failed: {message}",
    "pluginOpEnabledFailed": "Failed to update: {message}",
    "pluginOpGenericFailed": "Operation failed: {message}",
    "pluginDepsMissingTitle": "Missing base components",
    "pluginDepsMissingBody": "The plugin was installed, but its declared capabilities depend on components that are not installed yet: {components}. Those features stay unavailable until the components are set up. Go to component settings now?",
    "pluginDepsGoToComponents": "Open component settings",
    "pluginDepsLater": "Later",

    "marketSectionTitle": "Plugin Market",
    "marketSectionDesc": "Browse and install community plugins",
    "marketEmpty": "No plugins available",
    "marketLoadFailed": "Failed to load market: {message}",
    "marketInstallButton": "Install",
    "marketInstalledButton": "Installed",
    "marketInstallingButton": "Installing…",
    "marketYankedDeprecated": "Deprecated",
    "marketSearchPlaceholder": "Search plugins (name / description / tags)…",
    "marketSearchNoResult": "No matching plugins",
    "marketShowMore": "Show more ({count} remaining)",
    "pluginDetailIdentity": "Identity",
    "pluginDetailAuthor": "Author",
    "pluginDetailPublishTime": "Published",
    "pluginDetailMinAppVersion": "Min app version",
    "pluginDetailSettings": "Settings",
    "pluginDetailSettingsCount": "{count} field(s), configurable from the plugin card after install",
    "pluginDetailHomepage": "Homepage",
    "pluginDetailDescription": "Description",
    "pluginDetailPermissions": "Permissions",
    "pluginPermFfmpegName": "FFmpeg",
    "pluginPermFfmpegDesc": "Runs FFmpeg for audio/video processing (mux/transcode); requires the FFmpeg component",
    "pluginPermYtdlpName": "yt-dlp",
    "pluginPermYtdlpDesc": "Runs yt-dlp to extract direct media URLs; requires the yt-dlp and FFmpeg components",
    "pluginPermUnknownDesc": "Unknown permission (not supported by this version)",
    "pluginDetailUsage": "Usage notes",
    "pluginDetailUsageBody": "Plugins are enabled by default after install and can be toggled in the Installed list at any time. Resolver plugins run automatically before matching downloads start — no manual action needed. Plugins with settings can be configured via the gear button on their card. A plugin that keeps failing is auto-disabled by the circuit breaker. Visit the plugin homepage for detailed usage.",
    "marketYankedVulnerable": "Vulnerable",
    "marketYankedMalicious": "Flagged malicious",
    "marketRefreshTooltip": "Refresh",

    "pluginSettingsDialogTitle": "{name} Settings",
    "pluginSettingsSaveButton": "Save",
    "pluginSettingsSaving": "Saving…",
    "pluginSettingsSaveFailed": "Save failed: {message}",
    "pluginErrRequired": "This field is required",
    "pluginCopyHelperScript": "Copy helper script",
    "pluginHelperScriptCopied": "Script copied. Paste and run it in the site's DevTools console",
    "pluginErrNumber": "Enter a valid number",
    "pluginErrMin": "Must be at least {min}",
    "pluginErrMax": "Must be at most {max}",
    "pluginErrPattern": "Invalid format",
    "pluginErrSelect": "Select a valid option",
    "pluginSelectPlaceholder": "Select…",
    "pluginFolderPickPlaceholder": "Select a folder",

    "taskIgnorePluginRetry": "Ignore plugin retry",
    "taskIgnorePluginRetryTitle": "Ignore Plugin Retry",
    "taskIgnorePluginRetryMsg": "This task failed while a plugin was resolving it. Ignoring will skip the plugin and retry with the original link directly. If this keeps happening, check the plugin's settings under Settings → Extensions → Plugins.",
    "pluginAutoDisabledToast": "Plugin \"{name}\" was auto-disabled after repeated failures. Re-enable it from Settings → Extensions → Plugins.",

    "settingsCatComponents": "Components",

    "componentsFfmpegTitle": "FFmpeg",
    "componentsFfmpegDesc": "Open-source audio/video toolkit. FluxDown uses it to merge separate audio and video tracks from DASH and similar streaming downloads.",
    "componentsYtdlpTitle": "yt-dlp",
    "componentsYtdlpDesc": "Media extractor. FluxDown plugins use it to pull direct media URLs from 1000+ sites (YouTube, etc.) for the download engine.",
    "componentsStatusLoading": "Detecting…",
    "componentsStatusNotFound": "{name} not found. Install it below or specify a path manually.",
    "componentsStatusNotFoundUnsupported": "{name} not found. Add it to your system PATH or specify a path manually below.",
    "componentsManagedUnsupported": "Managed install isn't available on this platform (e.g. Alpine/OpenWrt musl libc). Use a {name} from your system package manager / PATH, or set a manual path above.",
    "componentsSourceManual": "Manual",
    "componentsSourceManaged": "Managed",
    "componentsSourceSystem": "System PATH",
    "componentsSystemPathLabel": "System PATH:",
    "componentsSystemPathNotFound": "not found",

    "componentsManualPathLabel": "Manual path",
    "componentsManualPathDesc": "Point directly to a {name} executable; takes priority over the managed install and system PATH.",
    "componentsManualPathHintFfmpeg": "e.g. C:\\tools\\ffmpeg\\ffmpeg.exe",
    "componentsManualPathHintYtdlp": "e.g. C:\\tools\\yt-dlp\\yt-dlp.exe",
    "componentsManualPathSave": "Save",
    "componentsManualPathClear": "Clear",

    "componentsInstallSectionTitle": "Managed install",
    "componentsInstallSectionDescFfmpeg": "Downloads a static FFmpeg build from the official BtbN/FFmpeg-Builds release on demand — not bundled with the installer.",
    "componentsInstallSectionDescYtdlp": "Downloads the official platform binary from the yt-dlp/yt-dlp GitHub release on demand — not bundled with the installer.",
    "componentsFetchVersionsButton": "Refresh version list",
    "componentsVersionsLoading": "Loading versions…",
    "componentsVersionsLoadFailed": "Failed to load versions: {message}",
    "componentsRetryVersions": "Retry",
    "componentsVersionSelectPlaceholder": "Select a version",
    "componentsManagedVersionLabel": "Installed managed version: {version}",
    "componentsInstallButton": "Install",
    "componentsReinstallButton": "Update / Reinstall",
    "componentsUninstallButton": "Uninstall",
    "componentsInstalling": "Installing…",
    "componentsInstallUnknownSize": "size unknown",
    "componentsInstallSuccess": "{name} installed",
    "componentsInstallFailed": "Install failed: {message}",
    "componentsUninstallSuccess": "{name} uninstalled",
    "componentsUninstallFailed": "Uninstall failed: {message}",
    "componentsUninstallConfirmTitle": "Uninstall {name}",
    "componentsUninstallConfirmMsg": "This removes the managed {name} build. Manual and system-PATH {name} are not affected."
}
