feat(downloads): queue season episode downloads (#1357)

* docs(downloads): specify season queueing

* docs(downloads): plan season queue implementation

* feat(downloads): define episode queue identity

* fix(downloads): align episode identity contract

* feat(downloads): coordinate season queue submissions

* fix(downloads): keep queue coordination provider neutral

* fix(downloads): reconcile legacy episode identities

* fix(downloads): fail closed on invalid stored coordinates

* refactor(downloads): adapt Xtream episode requests

* fix(downloads): use canonical Stalker episode ids

* test(downloads): cover Stalker adapter reactivity

* feat(downloads): add selected season queue action

* refactor(downloads): extract season download presenter

* feat(downloads): localize season queue feedback

* test(downloads): cover series batch queue flow

* test(downloads): harden series queue fixtures

* docs(downloads): describe season queueing

* docs(downloads): clarify season queue IPC contract

* fix(downloads): isolate season header build warnings

* fix(downloads): label season view toggles

* fix(downloads): preserve Xtream episode headers

* fix(downloads): fail closed on stale episode state

* fix(downloads): align renderer queue safeguards

* fix(downloads): block ambiguous episode actions

* fix(downloads): accept nullable legacy coordinates

* fix(downloads): preserve scoped episode ownership

* fix(downloads): probe restored files asynchronously

* fix(downloads): bound restored file probes

* fix(downloads): release timed out file probes

* fix(downloads): bound file probe callers

* fix(downloads): refresh stable season skips

* fix(downloads): fail closed before provider prep

* fix(downloads): preserve retained partial ownership

* fix(downloads): reconcile partial cleanup completion

* fix(downloads): await authoritative list refresh

* fix(downloads): coalesce list refreshes

* fix(downloads): preserve specials season identity

* fix(stalker): preserve specials season mapping

* fix(downloads): distinguish missing Xtream seasons
This commit is contained in:
4gray authored and GitHub committed 2026-08-03 08:53:44 +02:00
1 parent d3cc18dc72
commit 96facd6f49
79 files changed
+8352 -1255

No files matched your search

+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "التنزيلات",
"DOWNLOAD": "تنزيل",
"PLAY_LOCAL": "تشغيل محلي",
"DOWNLOAD_SEASON": "تنزيل الموسم ({{count}})",
"DOWNLOAD_SEASON_ARIA": "تنزيل الموسم، تتوفر {{count}} حلقات",
"ADDING_TO_QUEUE": "جارٍ الإضافة إلى قائمة الانتظار…",
"EPISODE_DOWNLOAD_ARIA": "تنزيل {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} موجود بالفعل في قائمة انتظار التنزيل",
"EPISODE_DOWNLOAD_FAILED": "تعذّرت إضافة الحلقة إلى التنزيلات.",
"SEASON_QUEUE_RESULT": "تمت الإضافة: {{added}} · تم التخطي: {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "تمت الإضافة: {{added}} · تم التخطي: {{skipped}} · فشل: {{failed}}",
"EMPTY": "لا توجد تنزيلات بعد",
"EMPTY_HINT": "نزّل الأفلام والحلقات للمشاهدة دون اتصال",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "التحميلات",
"DOWNLOAD": "تحميل",
"PLAY_LOCAL": "شغل محلياً",
"DOWNLOAD_SEASON": "تحميل الموسم ({{count}})",
"DOWNLOAD_SEASON_ARIA": "تحميل الموسم، كاينين {{count}} حلقات متوفرين",
"ADDING_TO_QUEUE": "كيتزادو للطابور…",
"EPISODE_DOWNLOAD_ARIA": "تحميل {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} راه ديجا فطابور التحميل",
"EPISODE_DOWNLOAD_FAILED": "ما قدرناش نزيدو الحلقة للتحميلات.",
"SEASON_QUEUE_RESULT": "تزادو {{added}} · تخطّاو {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "تزادو {{added}} · تخطّاو {{skipped}} · فشلو {{failed}}",
"EMPTY": "مازال ما كاينش تحميلات",
"EMPTY_HINT": "حمل أفلام وحلقات باش تشاف بدون أنترنت",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Спампаванні",
"DOWNLOAD": "Спампаваць",
"PLAY_LOCAL": "Прайграць лакальна",
"DOWNLOAD_SEASON": "Спампаваць сезон ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Спампаваць сезон, даступна эпізодаў: {{count}}",
"ADDING_TO_QUEUE": "Дадаванне ў чаргу…",
"EPISODE_DOWNLOAD_ARIA": "Спампаваць {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} ужо ў чарзе спампаванняў",
"EPISODE_DOWNLOAD_FAILED": "Не ўдалося дадаць эпізод да спампаванняў.",
"SEASON_QUEUE_RESULT": "Дададзена: {{added}} · Прапушчана: {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Дададзена: {{added}} · Прапушчана: {{skipped}} · Памылак: {{failed}}",
"EMPTY": "Пакуль няма спампаванняў",
"EMPTY_HINT": "Спампоўвайце фільмы і эпізоды, каб глядзець іх без падключэння",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Downloads",
"DOWNLOAD": "Herunterladen",
"PLAY_LOCAL": "Lokal abspielen",
"DOWNLOAD_SEASON": "Staffel herunterladen ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Staffel herunterladen, {{count}} Episoden verfügbar",
"ADDING_TO_QUEUE": "Wird zur Warteschlange hinzugefügt…",
"EPISODE_DOWNLOAD_ARIA": "{{title}} herunterladen",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} befindet sich bereits in der Download-Warteschlange",
"EPISODE_DOWNLOAD_FAILED": "Die Episode konnte nicht zu den Downloads hinzugefügt werden.",
"SEASON_QUEUE_RESULT": "Hinzugefügt {{added}} · Übersprungen {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Hinzugefügt {{added}} · Übersprungen {{skipped}} · Fehlgeschlagen {{failed}}",
"EMPTY": "Noch keine Downloads",
"EMPTY_HINT": "Filme und Episoden zum Offline-Ansehen herunterladen",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Λήψεις",
"DOWNLOAD": "Λήψη",
"PLAY_LOCAL": "Τοπική αναπαραγωγή",
"DOWNLOAD_SEASON": "Λήψη σεζόν ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Λήψη σεζόν, {{count}} διαθέσιμα επεισόδια",
"ADDING_TO_QUEUE": "Προσθήκη στην ουρά…",
"EPISODE_DOWNLOAD_ARIA": "Λήψη {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "Το {{title}} βρίσκεται ήδη στην ουρά λήψεων",
"EPISODE_DOWNLOAD_FAILED": "Δεν ήταν δυνατή η προσθήκη του επεισοδίου στις λήψεις.",
"SEASON_QUEUE_RESULT": "Προστέθηκαν {{added}} · Παραλείφθηκαν {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Προστέθηκαν {{added}} · Παραλείφθηκαν {{skipped}} · Απέτυχαν {{failed}}",
"EMPTY": "Δεν υπάρχουν ακόμα λήψεις",
"EMPTY_HINT": "Κατεβάστε ταινίες και επεισόδια για παρακολούθηση εκτός σύνδεσης",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Downloads",
"DOWNLOAD": "Download",
"PLAY_LOCAL": "Play Local",
"DOWNLOAD_SEASON": "Download season ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Download season, {{count}} episodes available",
"ADDING_TO_QUEUE": "Adding to queue…",
"EPISODE_DOWNLOAD_ARIA": "Download {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} is already in the download queue",
"EPISODE_DOWNLOAD_FAILED": "The episode could not be added to downloads.",
"SEASON_QUEUE_RESULT": "Added {{added}} · Skipped {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Added {{added}} · Skipped {{skipped}} · Failed {{failed}}",
"EMPTY": "No downloads yet",
"EMPTY_HINT": "Download movies and episodes to watch offline",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Descargas",
"DOWNLOAD": "Descargar",
"PLAY_LOCAL": "Reproducir local",
"DOWNLOAD_SEASON": "Descargar temporada ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Descargar temporada, {{count}} episodios disponibles",
"ADDING_TO_QUEUE": "Añadiendo a la cola…",
"EPISODE_DOWNLOAD_ARIA": "Descargar {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} ya está en la cola de descargas",
"EPISODE_DOWNLOAD_FAILED": "No se pudo añadir el episodio a las descargas.",
"SEASON_QUEUE_RESULT": "Añadidos {{added}} · Omitidos {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Añadidos {{added}} · Omitidos {{skipped}} · Fallidos {{failed}}",
"EMPTY": "Sin descargas aún",
"EMPTY_HINT": "Descarga películas y episodios para ver sin conexión",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Téléchargements",
"DOWNLOAD": "Télécharger",
"PLAY_LOCAL": "Lire local",
"DOWNLOAD_SEASON": "Télécharger la saison ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Télécharger la saison, {{count}} épisodes disponibles",
"ADDING_TO_QUEUE": "Ajout à la file d’attente…",
"EPISODE_DOWNLOAD_ARIA": "Télécharger {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} est déjà dans la file d’attente des téléchargements",
"EPISODE_DOWNLOAD_FAILED": "L’épisode n’a pas pu être ajouté aux téléchargements.",
"SEASON_QUEUE_RESULT": "Ajoutés {{added}} · Ignorés {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Ajoutés {{added}} · Ignorés {{skipped}} · Échoués {{failed}}",
"EMPTY": "Aucun téléchargement",
"EMPTY_HINT": "Téléchargez des films et épisodes pour les regarder hors ligne",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Letöltések",
"DOWNLOAD": "Letöltés",
"PLAY_LOCAL": "Helyi fájl lejátszása",
"DOWNLOAD_SEASON": "Évad letöltése ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Évad letöltése, {{count}} epizód érhető el",
"ADDING_TO_QUEUE": "Hozzáadás a várólistához…",
"EPISODE_DOWNLOAD_ARIA": "{{title}} letöltése",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} már szerepel a letöltési várólistán",
"EPISODE_DOWNLOAD_FAILED": "Az epizódot nem sikerült hozzáadni a letöltésekhez.",
"SEASON_QUEUE_RESULT": "Hozzáadva: {{added}} · Kihagyva: {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Hozzáadva: {{added}} · Kihagyva: {{skipped}} · Sikertelen: {{failed}}",
"EMPTY": "Még nincs letöltés",
"EMPTY_HINT": "Töltsön le filmeket és epizódokat offline megtekintéshez.",
"NO_PLAYLISTS_TITLE": "A letöltéshez előbb adjon hozzá egy lejátszási listát",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Download",
"DOWNLOAD": "Scarica",
"PLAY_LOCAL": "Riproduci locale",
"DOWNLOAD_SEASON": "Scarica la stagione ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Scarica la stagione, {{count}} episodi disponibili",
"ADDING_TO_QUEUE": "Aggiunta alla coda…",
"EPISODE_DOWNLOAD_ARIA": "Scarica {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} è già nella coda dei download",
"EPISODE_DOWNLOAD_FAILED": "Non è stato possibile aggiungere l'episodio ai download.",
"SEASON_QUEUE_RESULT": "Aggiunti {{added}} · Ignorati {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Aggiunti {{added}} · Ignorati {{skipped}} · Non riusciti {{failed}}",
"EMPTY": "Ancora nessun download",
"EMPTY_HINT": "Scarica film ed episodi per guardarli offline",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "ダウンロード",
"DOWNLOAD": "ダウンロード",
"PLAY_LOCAL": "ローカル再生",
"DOWNLOAD_SEASON": "シーズンをダウンロード({{count}})",
"DOWNLOAD_SEASON_ARIA": "シーズンをダウンロード、ダウンロード可能なエピソードは{{count}}話です",
"ADDING_TO_QUEUE": "キューに追加中…",
"EPISODE_DOWNLOAD_ARIA": "{{title}}をダウンロード",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}}はすでにダウンロードキューに追加されています",
"EPISODE_DOWNLOAD_FAILED": "エピソードをダウンロード一覧に追加できませんでした。",
"SEASON_QUEUE_RESULT": "追加 {{added}} · スキップ {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "追加 {{added}} · スキップ {{skipped}} · 失敗 {{failed}}",
"EMPTY": "ダウンロードはまだありません",
"EMPTY_HINT": "映画やエピソードをダウンロードしてオフラインで視聴できます",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "다운로드",
"DOWNLOAD": "다운로드",
"PLAY_LOCAL": "로컬 재생",
"DOWNLOAD_SEASON": "시즌 다운로드 ({{count}})",
"DOWNLOAD_SEASON_ARIA": "시즌 다운로드, 다운로드 가능한 에피소드 {{count}}개",
"ADDING_TO_QUEUE": "대기열에 추가 중…",
"EPISODE_DOWNLOAD_ARIA": "{{title}} 다운로드",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} 항목은 이미 다운로드 대기열에 있습니다",
"EPISODE_DOWNLOAD_FAILED": "에피소드를 다운로드 목록에 추가하지 못했습니다.",
"SEASON_QUEUE_RESULT": "추가 {{added}} · 건너뜀 {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "추가 {{added}} · 건너뜀 {{skipped}} · 실패 {{failed}}",
"EMPTY": "아직 다운로드한 항목이 없습니다",
"EMPTY_HINT": "오프라인 시청을 위해 영화와 에피소드를 다운로드하세요",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Downloads",
"DOWNLOAD": "Downloaden",
"PLAY_LOCAL": "Lokaal afspelen",
"DOWNLOAD_SEASON": "Seizoen downloaden ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Seizoen downloaden, {{count}} afleveringen beschikbaar",
"ADDING_TO_QUEUE": "Toevoegen aan wachtrij…",
"EPISODE_DOWNLOAD_ARIA": "{{title}} downloaden",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} staat al in de downloadwachtrij",
"EPISODE_DOWNLOAD_FAILED": "De aflevering kon niet aan de downloads worden toegevoegd.",
"SEASON_QUEUE_RESULT": "Toegevoegd {{added}} · Overgeslagen {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Toegevoegd {{added}} · Overgeslagen {{skipped}} · Mislukt {{failed}}",
"EMPTY": "Nog geen downloads",
"EMPTY_HINT": "Download films en afleveringen om offline te bekijken",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Pobrane",
"DOWNLOAD": "Pobierz",
"PLAY_LOCAL": "Odtwórz lokalnie",
"DOWNLOAD_SEASON": "Pobierz sezon ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Pobierz sezon, dostępnych odcinków: {{count}}",
"ADDING_TO_QUEUE": "Dodawanie do kolejki…",
"EPISODE_DOWNLOAD_ARIA": "Pobierz {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} jest już w kolejce pobierania",
"EPISODE_DOWNLOAD_FAILED": "Nie udało się dodać odcinka do pobrań.",
"SEASON_QUEUE_RESULT": "Dodano {{added}} · Pominięto {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Dodano {{added}} · Pominięto {{skipped}} · Nieudane {{failed}}",
"EMPTY": "Brak pobranych",
"EMPTY_HINT": "Pobierz filmy i odcinki, aby oglądać offline",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Downloads",
"DOWNLOAD": "Baixar",
"PLAY_LOCAL": "Reproduzir local",
"DOWNLOAD_SEASON": "Baixar temporada ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Baixar temporada, {{count}} episódios disponíveis",
"ADDING_TO_QUEUE": "Adicionando à fila…",
"EPISODE_DOWNLOAD_ARIA": "Baixar {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} já está na fila de downloads",
"EPISODE_DOWNLOAD_FAILED": "Não foi possível adicionar o episódio aos downloads.",
"SEASON_QUEUE_RESULT": "Adicionados {{added}} · Ignorados {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Adicionados {{added}} · Ignorados {{skipped}} · Falhas {{failed}}",
"EMPTY": "Nenhum download ainda",
"EMPTY_HINT": "Baixe filmes e episódios para assistir offline",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "Загрузки",
"DOWNLOAD": "Скачать",
"PLAY_LOCAL": "Воспроизвести локально",
"DOWNLOAD_SEASON": "Скачать сезон ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Скачать сезон, доступно эпизодов: {{count}}",
"ADDING_TO_QUEUE": "Добавление в очередь…",
"EPISODE_DOWNLOAD_ARIA": "Скачать {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} уже в очереди загрузок",
"EPISODE_DOWNLOAD_FAILED": "Не удалось добавить эпизод в загрузки.",
"SEASON_QUEUE_RESULT": "Добавлено: {{added}} · Пропущено: {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Добавлено: {{added}} · Пропущено: {{skipped}} · Ошибок: {{failed}}",
"EMPTY": "Пока нет загрузок",
"EMPTY_HINT": "Скачивайте фильмы и эпизоды для просмотра офлайн",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "İndirilenler",
"DOWNLOAD": "İndir",
"PLAY_LOCAL": "Yerel Oynat",
"DOWNLOAD_SEASON": "Sezonu indir ({{count}})",
"DOWNLOAD_SEASON_ARIA": "Sezonu indir, indirilebilir {{count}} bölüm var",
"ADDING_TO_QUEUE": "Sıraya ekleniyor…",
"EPISODE_DOWNLOAD_ARIA": "{{title}} indir",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} zaten indirme kuyruğunda",
"EPISODE_DOWNLOAD_FAILED": "Bölüm indirilenlere eklenemedi.",
"SEASON_QUEUE_RESULT": "Eklendi {{added}} · Atlandı {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "Eklendi {{added}} · Atlandı {{skipped}} · Başarısız {{failed}}",
"EMPTY": "Henüz indirme yok",
"EMPTY_HINT": "Çevrimdışı izlemek için film ve dizileri indirin",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "下载",
"DOWNLOAD": "下载",
"PLAY_LOCAL": "播放本地",
"DOWNLOAD_SEASON": "下载整季({{count}})",
"DOWNLOAD_SEASON_ARIA": "下载整季,有 {{count}} 集可用",
"ADDING_TO_QUEUE": "正在添加到队列…",
"EPISODE_DOWNLOAD_ARIA": "下载 {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} 已在下载队列中",
"EPISODE_DOWNLOAD_FAILED": "无法添加该剧集的下载任务。",
"SEASON_QUEUE_RESULT": "已添加 {{added}} · 已跳过 {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "已添加 {{added}} · 已跳过 {{skipped}} · 失败 {{failed}}",
"EMPTY": "暂无下载",
"EMPTY_HINT": "下载电影和剧集以离线观看",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",
+8
View File
@@ -1054,6 +1054,14 @@
"TITLE": "下載",
"DOWNLOAD": "下載",
"PLAY_LOCAL": "播放本機檔案",
"DOWNLOAD_SEASON": "下載整季({{count}})",
"DOWNLOAD_SEASON_ARIA": "下載整季,有 {{count}} 集可用",
"ADDING_TO_QUEUE": "正在加入佇列…",
"EPISODE_DOWNLOAD_ARIA": "下載 {{title}}",
"EPISODE_DOWNLOAD_PENDING_ARIA": "{{title}} 已在下載佇列中",
"EPISODE_DOWNLOAD_FAILED": "無法加入此集的下載項目。",
"SEASON_QUEUE_RESULT": "已加入 {{added}} · 已略過 {{skipped}}",
"SEASON_QUEUE_RESULT_WITH_FAILURES": "已加入 {{added}} · 已略過 {{skipped}} · 失敗 {{failed}}",
"EMPTY": "尚無下載項目",
"EMPTY_HINT": "下載電影與集數以離線觀看",
"NO_PLAYLISTS_TITLE": "Add a playlist to start downloading",