The progress bar looked broken (95% -> 5% -> recount) because yt-dlp downloads the video and audio streams separately (each 0->100%) then merges — with no indication of which step is running. Now: - worker labels the phase from the stream codecs (video / audio) and via a postprocessor hook (merging / processing), so the user sees what's happening - DownloadCenter shows the phase as the status and renders an indeterminate pulse (no bogus %) during merge/processing; phase i18n en/hu/de - yt-dlp retries (3) + fragment_retries (5) so transient network blips self-heal instead of failing the job (seen once as a DNS 'No address associated with hostname' error) Verified: phase transitions queued -> video -> processing -> done.
142 lines
3.8 KiB
JSON
142 lines
3.8 KiB
JSON
{
|
|
"navLabel": "Downloads",
|
|
"button": {
|
|
"label": "Download",
|
|
"queued": "In queue",
|
|
"downloaded": "Downloaded"
|
|
},
|
|
"dialog": {
|
|
"title": "Download video",
|
|
"profile": "Format",
|
|
"nameLabel": "File name (optional)",
|
|
"namePlaceholder": "Leave blank to use the video title",
|
|
"submit": "Add to downloads",
|
|
"added": "Added to downloads",
|
|
"view": "View",
|
|
"manage": "Manage formats"
|
|
},
|
|
"page": {
|
|
"title": "Downloads",
|
|
"subtitle": "Download videos to the server, then save them to your device.",
|
|
"addUrl": "Paste a YouTube link or video id…",
|
|
"add": "Add",
|
|
"manage": "Manage formats"
|
|
},
|
|
"tabs": {
|
|
"queue": "Queue",
|
|
"done": "Library",
|
|
"shared": "Shared with me",
|
|
"system": "System"
|
|
},
|
|
"status": {
|
|
"queued": "Queued",
|
|
"running": "Downloading",
|
|
"paused": "Paused",
|
|
"done": "Ready",
|
|
"error": "Failed",
|
|
"canceled": "Canceled",
|
|
"expired": "Expired"
|
|
},
|
|
"phase": {
|
|
"video": "Downloading video",
|
|
"audio": "Downloading audio",
|
|
"merging": "Merging",
|
|
"processing": "Processing"
|
|
},
|
|
"actions": {
|
|
"pause": "Pause",
|
|
"resume": "Resume",
|
|
"cancel": "Cancel",
|
|
"delete": "Remove",
|
|
"retry": "Retry",
|
|
"download": "Save to my device",
|
|
"rename": "Rename",
|
|
"share": "Share"
|
|
},
|
|
"empty": {
|
|
"queue": "Nothing in the queue.",
|
|
"done": "No downloads yet.",
|
|
"shared": "Nothing has been shared with you.",
|
|
"admin": "No downloads on this instance yet."
|
|
},
|
|
"usage": {
|
|
"title": "Your storage",
|
|
"items": "{{used}} / {{max}} items",
|
|
"unlimited": "Unlimited"
|
|
},
|
|
"rename": {
|
|
"title": "Rename download",
|
|
"label": "Display name",
|
|
"hint": "Only changes the name you see and download with — the stored file keeps its own name.",
|
|
"save": "Save"
|
|
},
|
|
"share": {
|
|
"title": "Share download",
|
|
"label": "Recipient email",
|
|
"placeholder": "user@example.com",
|
|
"submit": "Share",
|
|
"done": "Shared with {{email}}"
|
|
},
|
|
"confirm": {
|
|
"cancelTitle": "Cancel download?",
|
|
"cancelBody": "This stops the download and removes it from your queue.",
|
|
"deleteTitle": "Remove download?",
|
|
"deleteBody": "This removes it from your list. The file may stay cached for other users until it expires."
|
|
},
|
|
"profiles": {
|
|
"manage": "Manage formats",
|
|
"title": "Download formats",
|
|
"builtin": "Built-in",
|
|
"yours": "Your formats",
|
|
"new": "New format",
|
|
"name": "Name",
|
|
"namePlaceholder": "My format",
|
|
"mode": "Content",
|
|
"modeAv": "Video + audio",
|
|
"modeV": "Video only",
|
|
"modeA": "Audio only",
|
|
"quality": "Max quality",
|
|
"best": "Best",
|
|
"container": "Container",
|
|
"audioFormat": "Audio format",
|
|
"vcodec": "Video codec",
|
|
"any": "Any",
|
|
"embedSubs": "Embed subtitles",
|
|
"embedChapters": "Embed chapters",
|
|
"embedThumbnail": "Embed thumbnail",
|
|
"sponsorblock": "Skip sponsor segments (SponsorBlock)",
|
|
"save": "Save",
|
|
"create": "Create",
|
|
"delete": "Delete",
|
|
"deleteConfirm": "Delete the format “{{name}}”?"
|
|
},
|
|
"admin": {
|
|
"storageTitle": "Storage",
|
|
"readyFiles": "Ready files",
|
|
"totalSize": "Total size",
|
|
"cap": "Cache cap",
|
|
"noCap": "no cap",
|
|
"perUser": "Per-user footprint",
|
|
"user": "User",
|
|
"footprint": "Footprint",
|
|
"editQuota": "Edit quota",
|
|
"quotaTitle": "Download quota — {{email}}",
|
|
"maxBytes": "Storage limit (GB)",
|
|
"maxJobs": "Max downloads",
|
|
"maxConcurrent": "Max concurrent",
|
|
"unlimited": "Unlimited (bypass storage limit)",
|
|
"reset": "Reset to default",
|
|
"save": "Save",
|
|
"custom": "custom",
|
|
"default": "default"
|
|
},
|
|
"cols": {
|
|
"title": "Title",
|
|
"channel": "Channel",
|
|
"format": "Format",
|
|
"size": "Size",
|
|
"status": "Status",
|
|
"added": "Added",
|
|
"user": "User"
|
|
}
|
|
}
|