- player YB2: keepalive pagehide beacon (api.saveProgressBeacon) so the resume position isn't lost on F5/close within 5s of the last checkpoint (mirrors Plex). - player YB4: bound consecutive unplayable items in auto-advance so an auto-advancing/loop=all queue can't spin over a run of dead videos. - downloads B6 (client): localise structured quota/edit errors centrally in api.req() via localizeDetail() + Intl.NumberFormat (fixes HU/DE + decimal sep); + 3-locale download error strings. - channels FB1: focusChannelToken bump so re-clicking the same channel re-seeds the search box; FB2: syncSubs invalidates feed/feed-count (set can change now). - config CB2: reseed the ConfigPanel draft on a key-set dataVersion + explicit post-save token, so a mid-edit refetch can't clobber an in-progress edit. - config AB3 (UI): a blank allow_empty field stores "" instead of resetting. - admin SB2/SC2: confirm + success toast on demo-whitelist remove and deny-invite (+ trilingual strings); SC1: disable only the acted-on row (pendingId), not all; SB3: pause the 1s scheduler countdown ticker while the tab is hidden. - messages CT4: only invalidate conversations/unread when the incoming-message count actually changed, not on every 20s poll; MB3 (client): react to the live unread ping (onUnread → invalidate); MC3: extract e2ee installKey (setup/unlock); CC2: hoist POLL_MS to messaging.ts; MB4: document the reload-scoped socket.
201 lines
6.6 KiB
JSON
201 lines
6.6 KiB
JSON
{
|
|
"navLabel": "Downloads",
|
|
"button": {
|
|
"label": "Herunterladen",
|
|
"queued": "In Warteschlange",
|
|
"downloaded": "Heruntergeladen"
|
|
},
|
|
"dialog": {
|
|
"title": "Video herunterladen",
|
|
"profile": "Format",
|
|
"nameLabel": "Dateiname (optional)",
|
|
"namePlaceholder": "Leer lassen, um den Videotitel zu verwenden",
|
|
"submit": "Zu Downloads hinzufügen",
|
|
"added": "Zu Downloads hinzugefügt",
|
|
"view": "Öffnen",
|
|
"manage": "Formate verwalten"
|
|
},
|
|
"page": {
|
|
"title": "Downloads",
|
|
"subtitle": "Videos auf den Server laden und dann auf dein Gerät speichern.",
|
|
"addUrl": "YouTube-Link oder Video-ID einfügen…",
|
|
"add": "Hinzufügen",
|
|
"manage": "Formate verwalten"
|
|
},
|
|
"tabs": {
|
|
"queue": "Warteschlange",
|
|
"done": "Bibliothek",
|
|
"shared": "Mit mir geteilt",
|
|
"system": "System"
|
|
},
|
|
"status": {
|
|
"queued": "Wartet",
|
|
"running": "Lädt",
|
|
"paused": "Pausiert",
|
|
"done": "Fertig",
|
|
"error": "Fehlgeschlagen",
|
|
"canceled": "Abgebrochen",
|
|
"expired": "Abgelaufen"
|
|
},
|
|
"phase": {
|
|
"video": "Video wird geladen",
|
|
"audio": "Audio wird geladen",
|
|
"merging": "Zusammenführen",
|
|
"audio_extract": "Audio wird extrahiert",
|
|
"thumbnail": "Vorschaubild einbetten",
|
|
"sponsorblock": "Sponsoren entfernen",
|
|
"metadata": "Metadaten schreiben",
|
|
"processing": "Verarbeitung",
|
|
"editing": "Bearbeitung"
|
|
},
|
|
"actions": {
|
|
"pause": "Pause",
|
|
"resume": "Fortsetzen",
|
|
"cancel": "Abbrechen",
|
|
"delete": "Entfernen",
|
|
"retry": "Erneut",
|
|
"download": "Auf mein Gerät speichern",
|
|
"rename": "Umbenennen",
|
|
"editDetails": "Details bearbeiten",
|
|
"share": "Teilen",
|
|
"edit": "Bearbeiten / schneiden",
|
|
"removeShared": "Aus meiner Liste entfernen"
|
|
},
|
|
"empty": {
|
|
"queue": "Die Warteschlange ist leer.",
|
|
"done": "Noch keine Downloads.",
|
|
"shared": "Es wurde nichts mit dir geteilt.",
|
|
"admin": "Auf dieser Instanz gibt es noch keine Downloads."
|
|
},
|
|
"usage": {
|
|
"title": "Dein Speicher",
|
|
"items": "{{used}} / {{max}} Elemente",
|
|
"unlimited": "Unbegrenzt"
|
|
},
|
|
"source": {
|
|
"open": "Originalseite in neuem Tab öffnen",
|
|
"copy": "Quell-Link kopieren",
|
|
"copied": "Quell-Link in die Zwischenablage kopiert",
|
|
"copyFailed": "Link konnte nicht kopiert werden"
|
|
},
|
|
"edit": {
|
|
"title": "Details bearbeiten",
|
|
"name": "Titel",
|
|
"channel": "Kanal",
|
|
"channelUrl": "Kanal-Link",
|
|
"extraLinks": "Weitere Links",
|
|
"addLink": "Link hinzufügen",
|
|
"removeLink": "Link entfernen",
|
|
"hint": "Nur Anzeige — die gespeicherte Datei behält ihren Namen. Kanal und Links erscheinen auch auf der Karte und auf geteilten Wiedergabeseiten.",
|
|
"save": "Speichern"
|
|
},
|
|
"share": {
|
|
"title": "Download teilen",
|
|
"label": "E-Mail des Empfängers",
|
|
"placeholder": "user@example.com",
|
|
"submit": "Teilen",
|
|
"done": "Geteilt mit {{email}}",
|
|
"failed": "Teilen fehlgeschlagen.",
|
|
"userSection": "Mit einem Nutzer teilen",
|
|
"userHint": "Erscheint bei ihm unter „Mit mir geteilt”.",
|
|
"pickPlaceholder": "Nutzer suchen…",
|
|
"noUsers": "Keine weiteren Nutzer.",
|
|
"linkSection": "Per Link teilen",
|
|
"linkHint": "Jeder mit dem Link kann zusehen — ohne Konto.",
|
|
"noLinks": "Noch keine Links.",
|
|
"newLink": "Link erstellen",
|
|
"createLink": "Erstellen",
|
|
"allowDownload": "Download erlauben",
|
|
"expiry": "Läuft ab",
|
|
"expiryNever": "Nie",
|
|
"days": "{{n}} Tage",
|
|
"password": "Passwort (optional)",
|
|
"copy": "Link kopieren",
|
|
"copyFailed": "Kopieren fehlgeschlagen.",
|
|
"revoke": "Widerrufen",
|
|
"revokeConfirm": "Der Link funktioniert sofort nicht mehr.",
|
|
"views": "{{n}} Aufrufe",
|
|
"expiresOn": "läuft ab {{date}}",
|
|
"hasPassword": "Passwort",
|
|
"downloadable": "herunterladbar"
|
|
},
|
|
"confirm": {
|
|
"cancelTitle": "Download abbrechen?",
|
|
"cancelBody": "Dies stoppt den Download und entfernt ihn aus deiner Warteschlange.",
|
|
"deleteTitle": "Download entfernen?",
|
|
"deleteBody": "Dies entfernt ihn aus deiner Liste. Die Datei kann bis zum Ablauf für andere Nutzer im Cache bleiben.",
|
|
"removeSharedTitle": "Aus deiner Liste entfernen?",
|
|
"removeSharedBody": "Entfernt es nur aus deiner geteilten Liste — die Datei des Besitzers wird nicht gelöscht."
|
|
},
|
|
"profiles": {
|
|
"manage": "Formate verwalten",
|
|
"title": "Download-Formate",
|
|
"builtin": "Integriert",
|
|
"yours": "Deine Formate",
|
|
"new": "Neues Format",
|
|
"name": "Name",
|
|
"namePlaceholder": "Mein Format",
|
|
"mode": "Inhalt",
|
|
"modeAv": "Video + Audio",
|
|
"modeV": "Nur Video",
|
|
"modeA": "Nur Audio",
|
|
"quality": "Max. Qualität",
|
|
"best": "Beste",
|
|
"container": "Container",
|
|
"audioFormat": "Audioformat",
|
|
"vcodec": "Video-Codec",
|
|
"any": "Beliebig",
|
|
"embedSubs": "Untertitel einbetten",
|
|
"embedChapters": "Kapitel einbetten",
|
|
"embedThumbnail": "Vorschaubild einbetten",
|
|
"sponsorblock": "Sponsor-Segmente überspringen (SponsorBlock)",
|
|
"save": "Speichern",
|
|
"create": "Erstellen",
|
|
"delete": "Löschen",
|
|
"deleteConfirm": "Das Format „{{name}}“ löschen?"
|
|
},
|
|
"admin": {
|
|
"storageTitle": "Speicher",
|
|
"readyFiles": "Fertige Dateien",
|
|
"totalSize": "Gesamtgröße",
|
|
"cap": "Cache-Limit",
|
|
"noCap": "kein Limit",
|
|
"perUser": "Speicher pro Nutzer",
|
|
"user": "Nutzer",
|
|
"footprint": "Belegung",
|
|
"editQuota": "Kontingent bearbeiten",
|
|
"quotaTitle": "Download-Kontingent — {{email}}",
|
|
"maxBytes": "Speicherlimit (GB)",
|
|
"maxJobs": "Max. Downloads",
|
|
"maxConcurrent": "Max. gleichzeitig",
|
|
"unlimited": "Unbegrenzt (Speicherlimit umgehen)",
|
|
"reset": "Auf Standard zurücksetzen",
|
|
"save": "Speichern",
|
|
"custom": "individuell",
|
|
"default": "Standard",
|
|
"quotaPickPlaceholder": "Kontingent für einen Nutzer festlegen…",
|
|
"noFootprint": "Noch keine Downloads."
|
|
},
|
|
"cols": {
|
|
"title": "Titel",
|
|
"channel": "Kanal",
|
|
"format": "Format",
|
|
"size": "Größe",
|
|
"status": "Status",
|
|
"added": "Hinzugefügt",
|
|
"user": "Nutzer"
|
|
},
|
|
"clipBadge": "Clip",
|
|
"errors": {
|
|
"quota": {
|
|
"max_bytes": "Dein Download-Speicherkontingent ist aufgebraucht ({{size}} GB). Gib zuerst Speicher frei.",
|
|
"max_jobs": "Du hast dein Download-Limit erreicht ({{limit}} Objekte). Entferne zuerst einige.",
|
|
"generic": "Download-Kontingent überschritten."
|
|
},
|
|
"edit": {
|
|
"empty_edit": "Wähle zuerst einen Zuschneidebereich oder Ausschnitt.",
|
|
"source_not_ready": "Der Quell-Download ist noch nicht bearbeitbar.",
|
|
"generic": "Dieser Schnitt konnte nicht erstellt werden."
|
|
}
|
|
}
|
|
}
|