feat(downloads): localize season queue feedback

This commit is contained in:
4gray committed 2026-08-02 14:37:29 +02:00
1 parent 29af7d8674
commit ebb1afe8db
20 files changed
+194 -31

No files matched your search

+8
View File
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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
@@ -1048,6 +1048,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",
@@ -3,7 +3,11 @@ import { ComponentFixture, TestBed } from '@angular/core/testing';
import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
import { TranslateModule, TranslateService } from '@ngx-translate/core';
import {
type InterpolatableTranslationObject,
TranslateModule,
TranslateService,
} from '@ngx-translate/core';
import {
SeasonDownloadCoordinator,
type EpisodeDownloadCandidate,
@@ -15,6 +19,8 @@ import {
type DownloadItem,
type DownloadStartInput,
} from '@iptvnator/services';
import { readFileSync } from 'node:fs';
import { resolve } from 'node:path';
import { of } from 'rxjs';
import { EPISODE_INFO_PLAY } from './episode-info-dialog.component';
import { SeasonContainerComponent } from './season-container.component';
@@ -42,25 +48,15 @@ interface Deferred<T> {
readonly resolve: (value: T) => void;
}
const EN_TRANSLATIONS = JSON.parse(
readFileSync(
resolve(process.cwd(), 'apps/web/src/assets/i18n/en.json'),
'utf8'
)
) as InterpolatableTranslationObject;
const DOWNLOAD_TRANSLATIONS = {
DOWNLOADS: {
DOWNLOAD: 'Download',
PLAY_LOCAL: 'Play local',
RESUME: 'Resume',
NOT_AVAILABLE: 'Downloads not available',
DOWNLOAD_SEASON: 'Download season ({{count}})',
DOWNLOAD_SEASON_ARIA: 'Download {{count}} eligible episodes',
ADDING_TO_QUEUE: 'Adding to queue',
EPISODE_DOWNLOAD_ARIA: 'Download {{title}}',
EPISODE_DOWNLOAD_PENDING_ARIA: 'Adding {{title}} to queue',
EPISODE_DOWNLOAD_FAILED: 'The episode could not be added',
SEASON_QUEUE_RESULT:
'Added {{added}}, skipped {{skipped}}, failed {{failed}}',
SEASON_QUEUE_RESULT_WITH_FAILURES:
'Queue failed: {{added}} added, {{skipped}} skipped, {{failed}} failed',
STATUS: { DOWNLOADING: 'Downloading' },
ARIA: { RESUME: 'Resume {{title}}' },
},
DOWNLOADS: EN_TRANSLATIONS['DOWNLOADS'],
};
function createEpisode(
@@ -564,7 +560,7 @@ describe('SeasonContainerComponent', () => {
expect(episodeAction(101).disabled).toBe(true);
expect(episodeAction(101).getAttribute('aria-label')).toBe(
'Adding Pilot to queue'
'Pilot is already in the download queue'
);
expect(episodeAction(102).disabled).toBe(false);
expect(episodeAction(102).getAttribute('aria-label')).toBe(
@@ -598,7 +594,7 @@ describe('SeasonContainerComponent', () => {
) as HTMLButtonElement;
expect(button.textContent).toContain('Download season (1)');
expect(button.getAttribute('aria-label')).toBe(
'Download 1 eligible episodes'
'Download season, 1 episodes available'
);
expect(button.nextElementSibling?.classList).toContain('view-toggle');
@@ -607,7 +603,7 @@ describe('SeasonContainerComponent', () => {
expect(downloadsServiceStub.startDownload).toHaveBeenCalledTimes(1);
expect(snackBarOpen).toHaveBeenCalledWith(
'Added 1, skipped 1, failed 0',
'Added 1 · Skipped 1',
undefined,
{ duration: 5000 }
);
@@ -671,9 +667,9 @@ describe('SeasonContainerComponent', () => {
seasonButton().click();
fixture.detectChanges();
expect(seasonButton().textContent).toContain('Adding to queue');
expect(seasonButton().textContent).toContain('Adding to queue…');
expect(seasonButton().getAttribute('aria-label')).toBe(
'Adding to queue'
'Adding to queue…'
);
expect(seasonButton().getAttribute('aria-busy')).toBe('true');
@@ -689,7 +685,7 @@ describe('SeasonContainerComponent', () => {
expect(seasonButton().hasAttribute('aria-busy')).toBe(false);
expect(seasonButton().textContent).toContain('Download season (1)');
expect(seasonButton().getAttribute('aria-label')).toBe(
'Download 1 eligible episodes'
'Download season, 1 episodes available'
);
});
@@ -786,11 +782,26 @@ describe('SeasonContainerComponent', () => {
fixture.detectChanges();
const expected = [
[101, true, 'Adding Pilot to queue', 'downloading'],
[102, true, 'Adding Queued to queue', 'downloading'],
[103, true, 'Adding Active to queue', 'downloading'],
[
101,
true,
'Pilot is already in the download queue',
'downloading',
],
[
102,
true,
'Queued is already in the download queue',
'downloading',
],
[
103,
true,
'Active is already in the download queue',
'downloading',
],
[104, false, 'Resume Paused', 'play_arrow'],
[105, false, 'Play local: Local', 'folder_open'],
[105, false, 'Play Local: Local', 'folder_open'],
[106, true, 'Download Unknown', 'block'],
[107, true, 'Download N/A', 'block'],
[108, false, 'Download Failed', 'download'],
@@ -936,7 +947,7 @@ describe('SeasonContainerComponent', () => {
await fixture.whenStable();
expect(snackBarOpen).toHaveBeenCalledWith(
'The episode could not be added',
'The episode could not be added to downloads.',
undefined,
{ duration: 5000 }
);
@@ -1036,7 +1047,7 @@ describe('SeasonContainerComponent', () => {
await fixture.whenStable();
expect(snackBarOpen).toHaveBeenCalledWith(
'Queue failed: 1 added, 0 skipped, 1 failed',
'Added 1 · Skipped 0 · Failed 1',
undefined,
{ duration: 5000 }
);