From 1e54344ec32d269f951b83a970264228530e260d Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Wed, 22 Apr 2026 21:35:03 +0200 Subject: [PATCH] feat: toggle episode number on cards --- lib/i18n/da.i18n.json | 2 ++ lib/i18n/de.i18n.json | 2 ++ lib/i18n/en.i18n.json | 2 ++ lib/i18n/es.i18n.json | 2 ++ lib/i18n/fr.i18n.json | 2 ++ lib/i18n/it.i18n.json | 2 ++ lib/i18n/ja.i18n.json | 2 ++ lib/i18n/ko.i18n.json | 2 ++ lib/i18n/nb.i18n.json | 2 ++ lib/i18n/nl.i18n.json | 2 ++ lib/i18n/pl.i18n.json | 2 ++ lib/i18n/pt.i18n.json | 2 ++ lib/i18n/ru.i18n.json | 2 ++ lib/i18n/strings.g.dart | 4 ++-- lib/i18n/strings_da.g.dart | 8 ++++++-- lib/i18n/strings_de.g.dart | 8 ++++++-- lib/i18n/strings_en.g.dart | 12 ++++++++++-- lib/i18n/strings_es.g.dart | 8 ++++++-- lib/i18n/strings_fr.g.dart | 8 ++++++-- lib/i18n/strings_it.g.dart | 8 ++++++-- lib/i18n/strings_ja.g.dart | 8 ++++++-- lib/i18n/strings_ko.g.dart | 8 ++++++-- lib/i18n/strings_nb.g.dart | 8 ++++++-- lib/i18n/strings_nl.g.dart | 8 ++++++-- lib/i18n/strings_pl.g.dart | 8 ++++++-- lib/i18n/strings_pt.g.dart | 8 ++++++-- lib/i18n/strings_ru.g.dart | 8 ++++++-- lib/i18n/strings_sv.g.dart | 8 ++++++-- lib/i18n/strings_zh.g.dart | 8 ++++++-- lib/i18n/sv.i18n.json | 2 ++ lib/i18n/zh.i18n.json | 2 ++ lib/providers/settings_provider.dart | 11 +++++++++++ .../settings/appearance_settings_screen.dart | 9 +++++++++ lib/services/settings_service.dart | 11 +++++++++++ lib/widgets/media_card.dart | 18 +++++++++++------- 35 files changed, 168 insertions(+), 39 deletions(-) diff --git a/lib/i18n/da.i18n.json b/lib/i18n/da.i18n.json index 366faa9a..8d66b4a8 100644 --- a/lib/i18n/da.i18n.json +++ b/lib/i18n/da.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "Sidepanelet forbliver udvidet, og indholdsområdet tilpasser sig", "showUnwatchedCount": "Vis antal usete", "showUnwatchedCountDescription": "Vis antal usete episoder på serier og sæsoner", + "showEpisodeNumberOnCards": "Vis episodenummer på kort", + "showEpisodeNumberOnCardsDescription": "Vis episodenummer ved siden af sæsonen (f.eks. S2 E3) på episodekort", "hideSpoilers": "Skjul spoilere for usete episoder", "hideSpoilersDescription": "Slør miniaturebilleder og skjul beskrivelser for episoder, du ikke har set endnu", "playerBackend": "Afspillerbackend", diff --git a/lib/i18n/de.i18n.json b/lib/i18n/de.i18n.json index 71bb6985..1508fce0 100644 --- a/lib/i18n/de.i18n.json +++ b/lib/i18n/de.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "Seitenleiste bleibt erweitert und Inhaltsbereich passt sich an", "showUnwatchedCount": "Anzahl nicht gesehener Folgen anzeigen", "showUnwatchedCountDescription": "Zeigt die Anzahl nicht gesehener Episoden bei Serien und Staffeln an", + "showEpisodeNumberOnCards": "Episodennummer auf Karten anzeigen", + "showEpisodeNumberOnCardsDescription": "Episodennummer neben der Staffel (z. B. S2 E3) auf Episodenkarten anzeigen", "hideSpoilers": "Spoiler für nicht gesehene Episoden verbergen", "hideSpoilersDescription": "Vorschaubilder unscharf machen und Beschreibungen für noch nicht gesehene Episoden ausblenden", "playerBackend": "Player-Backend", diff --git a/lib/i18n/en.i18n.json b/lib/i18n/en.i18n.json index f0fdf423..2041284b 100644 --- a/lib/i18n/en.i18n.json +++ b/lib/i18n/en.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "Sidebar stays expanded and content area adjusts to fit", "showUnwatchedCount": "Show Unwatched Count", "showUnwatchedCountDescription": "Display unwatched episode count on shows and seasons", + "showEpisodeNumberOnCards": "Show Episode Number on Cards", + "showEpisodeNumberOnCardsDescription": "Show episode number alongside the season (e.g. S2 E3) on episode cards", "hideSpoilers": "Hide Spoilers for Unwatched Episodes", "hideSpoilersDescription": "Blur thumbnails and hide descriptions for episodes you haven't watched yet", "playerBackend": "Player Backend", diff --git a/lib/i18n/es.i18n.json b/lib/i18n/es.i18n.json index a62a529a..9f2f88a8 100644 --- a/lib/i18n/es.i18n.json +++ b/lib/i18n/es.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "La barra lateral permanece expandida y el área de contenido se ajusta para adaptarse", "showUnwatchedCount": "Mostrar conteo de no vistos", "showUnwatchedCountDescription": "Mostrar el conteo de episodios no vistos en series y temporadas", + "showEpisodeNumberOnCards": "Mostrar número de episodio en las tarjetas", + "showEpisodeNumberOnCardsDescription": "Muestra el número de episodio junto a la temporada (p. ej. S2 E3) en las tarjetas de episodios", "hideSpoilers": "Ocultar spoilers de episodios no vistos", "hideSpoilersDescription": "Difuminar miniaturas y ocultar descripciones de episodios que aún no has visto", "playerBackend": "Reproductor", diff --git a/lib/i18n/fr.i18n.json b/lib/i18n/fr.i18n.json index e163fb5d..170a8bae 100644 --- a/lib/i18n/fr.i18n.json +++ b/lib/i18n/fr.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "La barre latérale reste étendue et la zone de contenu s'adapte", "showUnwatchedCount": "Afficher le nombre non visionné", "showUnwatchedCountDescription": "Afficher le nombre d'épisodes non visionnés pour les séries et saisons", + "showEpisodeNumberOnCards": "Afficher le numéro d'épisode sur les cartes", + "showEpisodeNumberOnCardsDescription": "Afficher le numéro d'épisode à côté de la saison (ex. S2 E3) sur les cartes d'épisodes", "hideSpoilers": "Masquer les spoilers des épisodes non vus", "hideSpoilersDescription": "Flouter les miniatures et masquer les descriptions des épisodes que vous n'avez pas encore regardés", "playerBackend": "Moteur de lecture", diff --git a/lib/i18n/it.i18n.json b/lib/i18n/it.i18n.json index 0ff40029..f294ef70 100644 --- a/lib/i18n/it.i18n.json +++ b/lib/i18n/it.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "La barra laterale rimane espansa e l'area del contenuto si adatta", "showUnwatchedCount": "Mostra conteggio non visti", "showUnwatchedCountDescription": "Mostra il numero di episodi non visti per serie e stagioni", + "showEpisodeNumberOnCards": "Mostra numero episodio sulle schede", + "showEpisodeNumberOnCardsDescription": "Mostra il numero dell'episodio accanto alla stagione (es. S2 E3) sulle schede degli episodi", "hideSpoilers": "Nascondi spoiler per episodi non visti", "hideSpoilersDescription": "Sfoca le miniature e nascondi le descrizioni degli episodi che non hai ancora guardato", "playerBackend": "Motore di riproduzione", diff --git a/lib/i18n/ja.i18n.json b/lib/i18n/ja.i18n.json index e1f89319..90611a84 100644 --- a/lib/i18n/ja.i18n.json +++ b/lib/i18n/ja.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "サイドバーを展開したまま、コンテンツ領域が調整される", "showUnwatchedCount": "未視聴数を表示", "showUnwatchedCountDescription": "番組とシーズンに未視聴エピソード数を表示", + "showEpisodeNumberOnCards": "カードにエピソード番号を表示", + "showEpisodeNumberOnCardsDescription": "エピソードカードにシーズンと並べてエピソード番号(例: S2 E3)を表示", "hideSpoilers": "未視聴エピソードのネタバレを非表示", "hideSpoilersDescription": "まだ視聴していないエピソードのサムネイルをぼかし、説明を非表示", "playerBackend": "プレーヤーバックエンド", diff --git a/lib/i18n/ko.i18n.json b/lib/i18n/ko.i18n.json index fdec85d6..1d670a1b 100644 --- a/lib/i18n/ko.i18n.json +++ b/lib/i18n/ko.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "사이드바가 확장된 상태로 유지되고 콘텐츠 영역이 맞춰집니다", "showUnwatchedCount": "미시청 수 표시", "showUnwatchedCountDescription": "시리즈 및 시즌에 미시청 에피소드 수 표시", + "showEpisodeNumberOnCards": "카드에 에피소드 번호 표시", + "showEpisodeNumberOnCardsDescription": "에피소드 카드에 시즌과 함께 에피소드 번호(예: S2 E3)를 표시합니다", "hideSpoilers": "미시청 에피소드 스포일러 숨기기", "hideSpoilersDescription": "아직 시청하지 않은 에피소드의 썸네일을 흐리게 하고 설명을 숨깁니다", "playerBackend": "플레이어 백엔드", diff --git a/lib/i18n/nb.i18n.json b/lib/i18n/nb.i18n.json index eb525a45..7669131b 100644 --- a/lib/i18n/nb.i18n.json +++ b/lib/i18n/nb.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "Sidefeltet forblir utvidet og innholdsområdet tilpasser seg", "showUnwatchedCount": "Vis antall usette", "showUnwatchedCountDescription": "Vis antall usette episoder på serier og sesonger", + "showEpisodeNumberOnCards": "Vis episodenummer på kort", + "showEpisodeNumberOnCardsDescription": "Vis episodenummer ved siden av sesongen (f.eks. S2 E3) på episodekort", "hideSpoilers": "Skjul spoilere for usette episoder", "hideSpoilersDescription": "Slør miniatyrbilder og skjul beskrivelser for episoder du ikke har sett ennå", "playerBackend": "Spillermotor", diff --git a/lib/i18n/nl.i18n.json b/lib/i18n/nl.i18n.json index 596245db..b7a22662 100644 --- a/lib/i18n/nl.i18n.json +++ b/lib/i18n/nl.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "Zijbalk blijft uitgevouwen en inhoudsgebied past zich aan", "showUnwatchedCount": "Aantal ongekeken tonen", "showUnwatchedCountDescription": "Toon aantal ongekeken afleveringen bij series en seizoenen", + "showEpisodeNumberOnCards": "Afleveringsnummer op kaarten tonen", + "showEpisodeNumberOnCardsDescription": "Toon het afleveringsnummer naast het seizoen (bijv. S2 E3) op afleveringskaarten", "hideSpoilers": "Spoilers voor ongekeken afleveringen verbergen", "hideSpoilersDescription": "Miniaturen vervagen en beschrijvingen verbergen voor afleveringen die je nog niet hebt gezien", "playerBackend": "Speler backend", diff --git a/lib/i18n/pl.i18n.json b/lib/i18n/pl.i18n.json index 6aa53a53..e2d54d26 100644 --- a/lib/i18n/pl.i18n.json +++ b/lib/i18n/pl.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "Panel boczny jest rozwinięty, a obszar treści dostosowuje się", "showUnwatchedCount": "Pokaż liczbę nieobejrzanych", "showUnwatchedCountDescription": "Wyświetl liczbę nieobejrzanych odcinków w serialach i sezonach", + "showEpisodeNumberOnCards": "Pokaż numer odcinka na kartach", + "showEpisodeNumberOnCardsDescription": "Wyświetla numer odcinka obok sezonu (np. S2 E3) na kartach odcinków", "hideSpoilers": "Ukryj spoilery nieobejrzanych odcinków", "hideSpoilersDescription": "Rozmyj miniatury i ukryj opisy odcinków, których jeszcze nie obejrzałeś", "playerBackend": "Backend odtwarzacza", diff --git a/lib/i18n/pt.i18n.json b/lib/i18n/pt.i18n.json index f579a4b5..f0935451 100644 --- a/lib/i18n/pt.i18n.json +++ b/lib/i18n/pt.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "A barra lateral fica expandida e a área de conteúdo se ajusta", "showUnwatchedCount": "Mostrar Contagem de Não Assistidos", "showUnwatchedCountDescription": "Exibir contagem de episódios não assistidos em séries e temporadas", + "showEpisodeNumberOnCards": "Mostrar Número do Episódio nos Cards", + "showEpisodeNumberOnCardsDescription": "Mostrar o número do episódio ao lado da temporada (ex. S2 E3) nos cards de episódios", "hideSpoilers": "Ocultar Spoilers de Episódios Não Assistidos", "hideSpoilersDescription": "Desfocar miniaturas e ocultar descrições de episódios que você ainda não assistiu", "playerBackend": "Backend do Player", diff --git a/lib/i18n/ru.i18n.json b/lib/i18n/ru.i18n.json index cda480cc..e9ed2e9e 100644 --- a/lib/i18n/ru.i18n.json +++ b/lib/i18n/ru.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "Боковая панель остаётся развёрнутой, область контента подстраивается", "showUnwatchedCount": "Показывать количество непросмотренных", "showUnwatchedCountDescription": "Отображать количество непросмотренных эпизодов для сериалов и сезонов", + "showEpisodeNumberOnCards": "Показывать номер эпизода на карточках", + "showEpisodeNumberOnCardsDescription": "Отображать номер эпизода рядом с сезоном (напр. S2 E3) на карточках эпизодов", "hideSpoilers": "Скрыть спойлеры непросмотренных эпизодов", "hideSpoilersDescription": "Размывать миниатюры и скрывать описания эпизодов, которые вы ещё не смотрели", "playerBackend": "Бэкенд плеера", diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index b99a45ce..eb4d9cdb 100644 --- a/lib/i18n/strings.g.dart +++ b/lib/i18n/strings.g.dart @@ -4,9 +4,9 @@ /// To regenerate, run: `dart run slang` /// /// Locales: 15 -/// Strings: 13665 (911 per locale) +/// Strings: 13695 (913 per locale) /// -/// Built on 2026-04-22 at 19:06 UTC +/// Built on 2026-04-22 at 19:30 UTC // coverage:ignore-file // ignore_for_file: type=lint, unused_import diff --git a/lib/i18n/strings_da.g.dart b/lib/i18n/strings_da.g.dart index e488ab5c..be0a6107 100644 --- a/lib/i18n/strings_da.g.dart +++ b/lib/i18n/strings_da.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsDa implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'Sidepanelet forbliver udvidet, og indholdsområdet tilpasser sig'; @override String get showUnwatchedCount => 'Vis antal usete'; @override String get showUnwatchedCountDescription => 'Vis antal usete episoder på serier og sæsoner'; + @override String get showEpisodeNumberOnCards => 'Vis episodenummer på kort'; + @override String get showEpisodeNumberOnCardsDescription => 'Vis episodenummer ved siden af sæsonen (f.eks. S2 E3) på episodekort'; @override String get hideSpoilers => 'Skjul spoilere for usete episoder'; @override String get hideSpoilersDescription => 'Slør miniaturebilleder og skjul beskrivelser for episoder, du ikke har set endnu'; @override String get playerBackend => 'Afspillerbackend'; @@ -1518,6 +1520,8 @@ extension on TranslationsDa { 'settings.alwaysKeepSidebarOpenDescription' => 'Sidepanelet forbliver udvidet, og indholdsområdet tilpasser sig', 'settings.showUnwatchedCount' => 'Vis antal usete', 'settings.showUnwatchedCountDescription' => 'Vis antal usete episoder på serier og sæsoner', + 'settings.showEpisodeNumberOnCards' => 'Vis episodenummer på kort', + 'settings.showEpisodeNumberOnCardsDescription' => 'Vis episodenummer ved siden af sæsonen (f.eks. S2 E3) på episodekort', 'settings.hideSpoilers' => 'Skjul spoilere for usete episoder', 'settings.hideSpoilersDescription' => 'Slør miniaturebilleder og skjul beskrivelser for episoder, du ikke har set endnu', 'settings.playerBackend' => 'Afspillerbackend', @@ -1928,10 +1932,10 @@ extension on TranslationsDa { 'libraries.sortBy' => 'Sortér efter', 'libraries.filters' => 'Filtre', 'libraries.confirmActionMessage' => 'Er du sikker på, at du vil udføre denne handling?', - 'libraries.showLibrary' => 'Vis bibliotek', - 'libraries.hideLibrary' => 'Skjul bibliotek', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Vis bibliotek', + 'libraries.hideLibrary' => 'Skjul bibliotek', 'libraries.libraryOptions' => 'Biblioteksindstillinger', 'libraries.content' => 'biblioteksindhold', 'libraries.selectLibrary' => 'Vælg bibliotek', diff --git a/lib/i18n/strings_de.g.dart b/lib/i18n/strings_de.g.dart index 7ec3b9dd..8dae29bc 100644 --- a/lib/i18n/strings_de.g.dart +++ b/lib/i18n/strings_de.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsDe implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'Seitenleiste bleibt erweitert und Inhaltsbereich passt sich an'; @override String get showUnwatchedCount => 'Anzahl nicht gesehener Folgen anzeigen'; @override String get showUnwatchedCountDescription => 'Zeigt die Anzahl nicht gesehener Episoden bei Serien und Staffeln an'; + @override String get showEpisodeNumberOnCards => 'Episodennummer auf Karten anzeigen'; + @override String get showEpisodeNumberOnCardsDescription => 'Episodennummer neben der Staffel (z. B. S2 E3) auf Episodenkarten anzeigen'; @override String get hideSpoilers => 'Spoiler für nicht gesehene Episoden verbergen'; @override String get hideSpoilersDescription => 'Vorschaubilder unscharf machen und Beschreibungen für noch nicht gesehene Episoden ausblenden'; @override String get playerBackend => 'Player-Backend'; @@ -1518,6 +1520,8 @@ extension on TranslationsDe { 'settings.alwaysKeepSidebarOpenDescription' => 'Seitenleiste bleibt erweitert und Inhaltsbereich passt sich an', 'settings.showUnwatchedCount' => 'Anzahl nicht gesehener Folgen anzeigen', 'settings.showUnwatchedCountDescription' => 'Zeigt die Anzahl nicht gesehener Episoden bei Serien und Staffeln an', + 'settings.showEpisodeNumberOnCards' => 'Episodennummer auf Karten anzeigen', + 'settings.showEpisodeNumberOnCardsDescription' => 'Episodennummer neben der Staffel (z. B. S2 E3) auf Episodenkarten anzeigen', 'settings.hideSpoilers' => 'Spoiler für nicht gesehene Episoden verbergen', 'settings.hideSpoilersDescription' => 'Vorschaubilder unscharf machen und Beschreibungen für noch nicht gesehene Episoden ausblenden', 'settings.playerBackend' => 'Player-Backend', @@ -1928,10 +1932,10 @@ extension on TranslationsDe { 'libraries.sortBy' => 'Sortieren nach', 'libraries.filters' => 'Filter', 'libraries.confirmActionMessage' => 'Aktion wirklich durchführen?', - 'libraries.showLibrary' => 'Mediathek anzeigen', - 'libraries.hideLibrary' => 'Mediathek ausblenden', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Mediathek anzeigen', + 'libraries.hideLibrary' => 'Mediathek ausblenden', 'libraries.libraryOptions' => 'Mediatheksoptionen', 'libraries.content' => 'Bibliotheksinhalt', 'libraries.selectLibrary' => 'Bibliothek auswählen', diff --git a/lib/i18n/strings_en.g.dart b/lib/i18n/strings_en.g.dart index a664f58c..2d45eb78 100644 --- a/lib/i18n/strings_en.g.dart +++ b/lib/i18n/strings_en.g.dart @@ -434,6 +434,12 @@ class TranslationsSettingsEn { /// en: 'Display unwatched episode count on shows and seasons' String get showUnwatchedCountDescription => 'Display unwatched episode count on shows and seasons'; + /// en: 'Show Episode Number on Cards' + String get showEpisodeNumberOnCards => 'Show Episode Number on Cards'; + + /// en: 'Show episode number alongside the season (e.g. S2 E3) on episode cards' + String get showEpisodeNumberOnCardsDescription => 'Show episode number alongside the season (e.g. S2 E3) on episode cards'; + /// en: 'Hide Spoilers for Unwatched Episodes' String get hideSpoilers => 'Hide Spoilers for Unwatched Episodes'; @@ -3347,6 +3353,8 @@ extension on Translations { 'settings.alwaysKeepSidebarOpenDescription' => 'Sidebar stays expanded and content area adjusts to fit', 'settings.showUnwatchedCount' => 'Show Unwatched Count', 'settings.showUnwatchedCountDescription' => 'Display unwatched episode count on shows and seasons', + 'settings.showEpisodeNumberOnCards' => 'Show Episode Number on Cards', + 'settings.showEpisodeNumberOnCardsDescription' => 'Show episode number alongside the season (e.g. S2 E3) on episode cards', 'settings.hideSpoilers' => 'Hide Spoilers for Unwatched Episodes', 'settings.hideSpoilersDescription' => 'Blur thumbnails and hide descriptions for episodes you haven\'t watched yet', 'settings.playerBackend' => 'Player Backend', @@ -3757,10 +3765,10 @@ extension on Translations { 'libraries.sortBy' => 'Sort By', 'libraries.filters' => 'Filters', 'libraries.confirmActionMessage' => 'Are you sure you want to perform this action?', - 'libraries.showLibrary' => 'Show library', - 'libraries.hideLibrary' => 'Hide library', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Show library', + 'libraries.hideLibrary' => 'Hide library', 'libraries.libraryOptions' => 'Library options', 'libraries.content' => 'library content', 'libraries.selectLibrary' => 'Select library', diff --git a/lib/i18n/strings_es.g.dart b/lib/i18n/strings_es.g.dart index 52a7f0af..61ee6e2d 100644 --- a/lib/i18n/strings_es.g.dart +++ b/lib/i18n/strings_es.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsEs implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'La barra lateral permanece expandida y el área de contenido se ajusta para adaptarse'; @override String get showUnwatchedCount => 'Mostrar conteo de no vistos'; @override String get showUnwatchedCountDescription => 'Mostrar el conteo de episodios no vistos en series y temporadas'; + @override String get showEpisodeNumberOnCards => 'Mostrar número de episodio en las tarjetas'; + @override String get showEpisodeNumberOnCardsDescription => 'Muestra el número de episodio junto a la temporada (p. ej. S2 E3) en las tarjetas de episodios'; @override String get hideSpoilers => 'Ocultar spoilers de episodios no vistos'; @override String get hideSpoilersDescription => 'Difuminar miniaturas y ocultar descripciones de episodios que aún no has visto'; @override String get playerBackend => 'Reproductor'; @@ -1518,6 +1520,8 @@ extension on TranslationsEs { 'settings.alwaysKeepSidebarOpenDescription' => 'La barra lateral permanece expandida y el área de contenido se ajusta para adaptarse', 'settings.showUnwatchedCount' => 'Mostrar conteo de no vistos', 'settings.showUnwatchedCountDescription' => 'Mostrar el conteo de episodios no vistos en series y temporadas', + 'settings.showEpisodeNumberOnCards' => 'Mostrar número de episodio en las tarjetas', + 'settings.showEpisodeNumberOnCardsDescription' => 'Muestra el número de episodio junto a la temporada (p. ej. S2 E3) en las tarjetas de episodios', 'settings.hideSpoilers' => 'Ocultar spoilers de episodios no vistos', 'settings.hideSpoilersDescription' => 'Difuminar miniaturas y ocultar descripciones de episodios que aún no has visto', 'settings.playerBackend' => 'Reproductor', @@ -1928,10 +1932,10 @@ extension on TranslationsEs { 'libraries.sortBy' => 'Ordenar por', 'libraries.filters' => 'Filtros', 'libraries.confirmActionMessage' => '¿Estás seguro de que quieres realizar esta acción?', - 'libraries.showLibrary' => 'Mostrar biblioteca', - 'libraries.hideLibrary' => 'Ocultar biblioteca', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Mostrar biblioteca', + 'libraries.hideLibrary' => 'Ocultar biblioteca', 'libraries.libraryOptions' => 'Opciones de biblioteca', 'libraries.content' => 'contenido de la biblioteca', 'libraries.selectLibrary' => 'Seleccionar biblioteca', diff --git a/lib/i18n/strings_fr.g.dart b/lib/i18n/strings_fr.g.dart index 64d65a50..c96bb352 100644 --- a/lib/i18n/strings_fr.g.dart +++ b/lib/i18n/strings_fr.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsFr implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'La barre latérale reste étendue et la zone de contenu s\'adapte'; @override String get showUnwatchedCount => 'Afficher le nombre non visionné'; @override String get showUnwatchedCountDescription => 'Afficher le nombre d\'épisodes non visionnés pour les séries et saisons'; + @override String get showEpisodeNumberOnCards => 'Afficher le numéro d\'épisode sur les cartes'; + @override String get showEpisodeNumberOnCardsDescription => 'Afficher le numéro d\'épisode à côté de la saison (ex. S2 E3) sur les cartes d\'épisodes'; @override String get hideSpoilers => 'Masquer les spoilers des épisodes non vus'; @override String get hideSpoilersDescription => 'Flouter les miniatures et masquer les descriptions des épisodes que vous n\'avez pas encore regardés'; @override String get playerBackend => 'Moteur de lecture'; @@ -1518,6 +1520,8 @@ extension on TranslationsFr { 'settings.alwaysKeepSidebarOpenDescription' => 'La barre latérale reste étendue et la zone de contenu s\'adapte', 'settings.showUnwatchedCount' => 'Afficher le nombre non visionné', 'settings.showUnwatchedCountDescription' => 'Afficher le nombre d\'épisodes non visionnés pour les séries et saisons', + 'settings.showEpisodeNumberOnCards' => 'Afficher le numéro d\'épisode sur les cartes', + 'settings.showEpisodeNumberOnCardsDescription' => 'Afficher le numéro d\'épisode à côté de la saison (ex. S2 E3) sur les cartes d\'épisodes', 'settings.hideSpoilers' => 'Masquer les spoilers des épisodes non vus', 'settings.hideSpoilersDescription' => 'Flouter les miniatures et masquer les descriptions des épisodes que vous n\'avez pas encore regardés', 'settings.playerBackend' => 'Moteur de lecture', @@ -1928,10 +1932,10 @@ extension on TranslationsFr { 'libraries.sortBy' => 'Trier par', 'libraries.filters' => 'Filtres', 'libraries.confirmActionMessage' => 'Êtes-vous sûr de vouloir effectuer cette action ?', - 'libraries.showLibrary' => 'Afficher la bibliothèque', - 'libraries.hideLibrary' => 'Masquer la bibliothèque', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Afficher la bibliothèque', + 'libraries.hideLibrary' => 'Masquer la bibliothèque', 'libraries.libraryOptions' => 'Options de bibliothèque', 'libraries.content' => 'contenu de la bibliothèque', 'libraries.selectLibrary' => 'Sélectionner la bibliothèque', diff --git a/lib/i18n/strings_it.g.dart b/lib/i18n/strings_it.g.dart index b5ae5950..df318fb4 100644 --- a/lib/i18n/strings_it.g.dart +++ b/lib/i18n/strings_it.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsIt implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'La barra laterale rimane espansa e l\'area del contenuto si adatta'; @override String get showUnwatchedCount => 'Mostra conteggio non visti'; @override String get showUnwatchedCountDescription => 'Mostra il numero di episodi non visti per serie e stagioni'; + @override String get showEpisodeNumberOnCards => 'Mostra numero episodio sulle schede'; + @override String get showEpisodeNumberOnCardsDescription => 'Mostra il numero dell\'episodio accanto alla stagione (es. S2 E3) sulle schede degli episodi'; @override String get hideSpoilers => 'Nascondi spoiler per episodi non visti'; @override String get hideSpoilersDescription => 'Sfoca le miniature e nascondi le descrizioni degli episodi che non hai ancora guardato'; @override String get playerBackend => 'Motore di riproduzione'; @@ -1518,6 +1520,8 @@ extension on TranslationsIt { 'settings.alwaysKeepSidebarOpenDescription' => 'La barra laterale rimane espansa e l\'area del contenuto si adatta', 'settings.showUnwatchedCount' => 'Mostra conteggio non visti', 'settings.showUnwatchedCountDescription' => 'Mostra il numero di episodi non visti per serie e stagioni', + 'settings.showEpisodeNumberOnCards' => 'Mostra numero episodio sulle schede', + 'settings.showEpisodeNumberOnCardsDescription' => 'Mostra il numero dell\'episodio accanto alla stagione (es. S2 E3) sulle schede degli episodi', 'settings.hideSpoilers' => 'Nascondi spoiler per episodi non visti', 'settings.hideSpoilersDescription' => 'Sfoca le miniature e nascondi le descrizioni degli episodi che non hai ancora guardato', 'settings.playerBackend' => 'Motore di riproduzione', @@ -1928,10 +1932,10 @@ extension on TranslationsIt { 'libraries.sortBy' => 'Ordina per', 'libraries.filters' => 'Filtri', 'libraries.confirmActionMessage' => 'Sei sicuro di voler eseguire questa azione?', - 'libraries.showLibrary' => 'Mostra libreria', - 'libraries.hideLibrary' => 'Nascondi libreria', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Mostra libreria', + 'libraries.hideLibrary' => 'Nascondi libreria', 'libraries.libraryOptions' => 'Opzioni libreria', 'libraries.content' => 'contenuto della libreria', 'libraries.selectLibrary' => 'Seleziona libreria', diff --git a/lib/i18n/strings_ja.g.dart b/lib/i18n/strings_ja.g.dart index 78446f3b..04fb7d7f 100644 --- a/lib/i18n/strings_ja.g.dart +++ b/lib/i18n/strings_ja.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsJa implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'サイドバーを展開したまま、コンテンツ領域が調整される'; @override String get showUnwatchedCount => '未視聴数を表示'; @override String get showUnwatchedCountDescription => '番組とシーズンに未視聴エピソード数を表示'; + @override String get showEpisodeNumberOnCards => 'カードにエピソード番号を表示'; + @override String get showEpisodeNumberOnCardsDescription => 'エピソードカードにシーズンと並べてエピソード番号(例: S2 E3)を表示'; @override String get hideSpoilers => '未視聴エピソードのネタバレを非表示'; @override String get hideSpoilersDescription => 'まだ視聴していないエピソードのサムネイルをぼかし、説明を非表示'; @override String get playerBackend => 'プレーヤーバックエンド'; @@ -1518,6 +1520,8 @@ extension on TranslationsJa { 'settings.alwaysKeepSidebarOpenDescription' => 'サイドバーを展開したまま、コンテンツ領域が調整される', 'settings.showUnwatchedCount' => '未視聴数を表示', 'settings.showUnwatchedCountDescription' => '番組とシーズンに未視聴エピソード数を表示', + 'settings.showEpisodeNumberOnCards' => 'カードにエピソード番号を表示', + 'settings.showEpisodeNumberOnCardsDescription' => 'エピソードカードにシーズンと並べてエピソード番号(例: S2 E3)を表示', 'settings.hideSpoilers' => '未視聴エピソードのネタバレを非表示', 'settings.hideSpoilersDescription' => 'まだ視聴していないエピソードのサムネイルをぼかし、説明を非表示', 'settings.playerBackend' => 'プレーヤーバックエンド', @@ -1928,10 +1932,10 @@ extension on TranslationsJa { 'libraries.sortBy' => '並べ替え順', 'libraries.filters' => 'フィルター', 'libraries.confirmActionMessage' => 'この操作を実行してもよろしいですか?', - 'libraries.showLibrary' => 'ライブラリを表示', - 'libraries.hideLibrary' => 'ライブラリを非表示', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'ライブラリを表示', + 'libraries.hideLibrary' => 'ライブラリを非表示', 'libraries.libraryOptions' => 'ライブラリオプション', 'libraries.content' => 'ライブラリコンテンツ', 'libraries.selectLibrary' => 'ライブラリを選択', diff --git a/lib/i18n/strings_ko.g.dart b/lib/i18n/strings_ko.g.dart index 9331634a..d1324566 100644 --- a/lib/i18n/strings_ko.g.dart +++ b/lib/i18n/strings_ko.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsKo implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => '사이드바가 확장된 상태로 유지되고 콘텐츠 영역이 맞춰집니다'; @override String get showUnwatchedCount => '미시청 수 표시'; @override String get showUnwatchedCountDescription => '시리즈 및 시즌에 미시청 에피소드 수 표시'; + @override String get showEpisodeNumberOnCards => '카드에 에피소드 번호 표시'; + @override String get showEpisodeNumberOnCardsDescription => '에피소드 카드에 시즌과 함께 에피소드 번호(예: S2 E3)를 표시합니다'; @override String get hideSpoilers => '미시청 에피소드 스포일러 숨기기'; @override String get hideSpoilersDescription => '아직 시청하지 않은 에피소드의 썸네일을 흐리게 하고 설명을 숨깁니다'; @override String get playerBackend => '플레이어 백엔드'; @@ -1518,6 +1520,8 @@ extension on TranslationsKo { 'settings.alwaysKeepSidebarOpenDescription' => '사이드바가 확장된 상태로 유지되고 콘텐츠 영역이 맞춰집니다', 'settings.showUnwatchedCount' => '미시청 수 표시', 'settings.showUnwatchedCountDescription' => '시리즈 및 시즌에 미시청 에피소드 수 표시', + 'settings.showEpisodeNumberOnCards' => '카드에 에피소드 번호 표시', + 'settings.showEpisodeNumberOnCardsDescription' => '에피소드 카드에 시즌과 함께 에피소드 번호(예: S2 E3)를 표시합니다', 'settings.hideSpoilers' => '미시청 에피소드 스포일러 숨기기', 'settings.hideSpoilersDescription' => '아직 시청하지 않은 에피소드의 썸네일을 흐리게 하고 설명을 숨깁니다', 'settings.playerBackend' => '플레이어 백엔드', @@ -1928,10 +1932,10 @@ extension on TranslationsKo { 'libraries.sortBy' => '정렬 기준', 'libraries.filters' => '필터', 'libraries.confirmActionMessage' => '이 작업을 실행 하시겠습니까?', - 'libraries.showLibrary' => '미디어 라이브러리 표시', - 'libraries.hideLibrary' => '미디어 라이브러리 숨기기', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => '미디어 라이브러리 표시', + 'libraries.hideLibrary' => '미디어 라이브러리 숨기기', 'libraries.libraryOptions' => '미디어 라이브러리 옵션', 'libraries.content' => '미디어 라이브러리 콘텐츠', 'libraries.selectLibrary' => '미디어 라이브러리 선택', diff --git a/lib/i18n/strings_nb.g.dart b/lib/i18n/strings_nb.g.dart index 3f663cac..66fa1d20 100644 --- a/lib/i18n/strings_nb.g.dart +++ b/lib/i18n/strings_nb.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsNb implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'Sidefeltet forblir utvidet og innholdsområdet tilpasser seg'; @override String get showUnwatchedCount => 'Vis antall usette'; @override String get showUnwatchedCountDescription => 'Vis antall usette episoder på serier og sesonger'; + @override String get showEpisodeNumberOnCards => 'Vis episodenummer på kort'; + @override String get showEpisodeNumberOnCardsDescription => 'Vis episodenummer ved siden av sesongen (f.eks. S2 E3) på episodekort'; @override String get hideSpoilers => 'Skjul spoilere for usette episoder'; @override String get hideSpoilersDescription => 'Slør miniatyrbilder og skjul beskrivelser for episoder du ikke har sett ennå'; @override String get playerBackend => 'Spillermotor'; @@ -1518,6 +1520,8 @@ extension on TranslationsNb { 'settings.alwaysKeepSidebarOpenDescription' => 'Sidefeltet forblir utvidet og innholdsområdet tilpasser seg', 'settings.showUnwatchedCount' => 'Vis antall usette', 'settings.showUnwatchedCountDescription' => 'Vis antall usette episoder på serier og sesonger', + 'settings.showEpisodeNumberOnCards' => 'Vis episodenummer på kort', + 'settings.showEpisodeNumberOnCardsDescription' => 'Vis episodenummer ved siden av sesongen (f.eks. S2 E3) på episodekort', 'settings.hideSpoilers' => 'Skjul spoilere for usette episoder', 'settings.hideSpoilersDescription' => 'Slør miniatyrbilder og skjul beskrivelser for episoder du ikke har sett ennå', 'settings.playerBackend' => 'Spillermotor', @@ -1928,10 +1932,10 @@ extension on TranslationsNb { 'libraries.sortBy' => 'Sorter etter', 'libraries.filters' => 'Filtre', 'libraries.confirmActionMessage' => 'Er du sikker på at du vil utføre denne handlingen?', - 'libraries.showLibrary' => 'Vis bibliotek', - 'libraries.hideLibrary' => 'Skjul bibliotek', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Vis bibliotek', + 'libraries.hideLibrary' => 'Skjul bibliotek', 'libraries.libraryOptions' => 'Bibliotekalternativer', 'libraries.content' => 'bibliotekinnhold', 'libraries.selectLibrary' => 'Velg bibliotek', diff --git a/lib/i18n/strings_nl.g.dart b/lib/i18n/strings_nl.g.dart index 11c3ef23..91dcdff0 100644 --- a/lib/i18n/strings_nl.g.dart +++ b/lib/i18n/strings_nl.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsNl implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'Zijbalk blijft uitgevouwen en inhoudsgebied past zich aan'; @override String get showUnwatchedCount => 'Aantal ongekeken tonen'; @override String get showUnwatchedCountDescription => 'Toon aantal ongekeken afleveringen bij series en seizoenen'; + @override String get showEpisodeNumberOnCards => 'Afleveringsnummer op kaarten tonen'; + @override String get showEpisodeNumberOnCardsDescription => 'Toon het afleveringsnummer naast het seizoen (bijv. S2 E3) op afleveringskaarten'; @override String get hideSpoilers => 'Spoilers voor ongekeken afleveringen verbergen'; @override String get hideSpoilersDescription => 'Miniaturen vervagen en beschrijvingen verbergen voor afleveringen die je nog niet hebt gezien'; @override String get playerBackend => 'Speler backend'; @@ -1518,6 +1520,8 @@ extension on TranslationsNl { 'settings.alwaysKeepSidebarOpenDescription' => 'Zijbalk blijft uitgevouwen en inhoudsgebied past zich aan', 'settings.showUnwatchedCount' => 'Aantal ongekeken tonen', 'settings.showUnwatchedCountDescription' => 'Toon aantal ongekeken afleveringen bij series en seizoenen', + 'settings.showEpisodeNumberOnCards' => 'Afleveringsnummer op kaarten tonen', + 'settings.showEpisodeNumberOnCardsDescription' => 'Toon het afleveringsnummer naast het seizoen (bijv. S2 E3) op afleveringskaarten', 'settings.hideSpoilers' => 'Spoilers voor ongekeken afleveringen verbergen', 'settings.hideSpoilersDescription' => 'Miniaturen vervagen en beschrijvingen verbergen voor afleveringen die je nog niet hebt gezien', 'settings.playerBackend' => 'Speler backend', @@ -1928,10 +1932,10 @@ extension on TranslationsNl { 'libraries.sortBy' => 'Sorteer op', 'libraries.filters' => 'Filters', 'libraries.confirmActionMessage' => 'Weet je zeker dat je deze actie wilt uitvoeren?', - 'libraries.showLibrary' => 'Toon bibliotheek', - 'libraries.hideLibrary' => 'Verberg bibliotheek', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Toon bibliotheek', + 'libraries.hideLibrary' => 'Verberg bibliotheek', 'libraries.libraryOptions' => 'Bibliotheek opties', 'libraries.content' => 'bibliotheekinhoud', 'libraries.selectLibrary' => 'Bibliotheek kiezen', diff --git a/lib/i18n/strings_pl.g.dart b/lib/i18n/strings_pl.g.dart index adbc82e9..b82fc50e 100644 --- a/lib/i18n/strings_pl.g.dart +++ b/lib/i18n/strings_pl.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsPl implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'Panel boczny jest rozwinięty, a obszar treści dostosowuje się'; @override String get showUnwatchedCount => 'Pokaż liczbę nieobejrzanych'; @override String get showUnwatchedCountDescription => 'Wyświetl liczbę nieobejrzanych odcinków w serialach i sezonach'; + @override String get showEpisodeNumberOnCards => 'Pokaż numer odcinka na kartach'; + @override String get showEpisodeNumberOnCardsDescription => 'Wyświetla numer odcinka obok sezonu (np. S2 E3) na kartach odcinków'; @override String get hideSpoilers => 'Ukryj spoilery nieobejrzanych odcinków'; @override String get hideSpoilersDescription => 'Rozmyj miniatury i ukryj opisy odcinków, których jeszcze nie obejrzałeś'; @override String get playerBackend => 'Backend odtwarzacza'; @@ -1518,6 +1520,8 @@ extension on TranslationsPl { 'settings.alwaysKeepSidebarOpenDescription' => 'Panel boczny jest rozwinięty, a obszar treści dostosowuje się', 'settings.showUnwatchedCount' => 'Pokaż liczbę nieobejrzanych', 'settings.showUnwatchedCountDescription' => 'Wyświetl liczbę nieobejrzanych odcinków w serialach i sezonach', + 'settings.showEpisodeNumberOnCards' => 'Pokaż numer odcinka na kartach', + 'settings.showEpisodeNumberOnCardsDescription' => 'Wyświetla numer odcinka obok sezonu (np. S2 E3) na kartach odcinków', 'settings.hideSpoilers' => 'Ukryj spoilery nieobejrzanych odcinków', 'settings.hideSpoilersDescription' => 'Rozmyj miniatury i ukryj opisy odcinków, których jeszcze nie obejrzałeś', 'settings.playerBackend' => 'Backend odtwarzacza', @@ -1928,10 +1932,10 @@ extension on TranslationsPl { 'libraries.sortBy' => 'Sortuj wg', 'libraries.filters' => 'Filtry', 'libraries.confirmActionMessage' => 'Czy na pewno chcesz wykonać tę operację?', - 'libraries.showLibrary' => 'Pokaż bibliotekę', - 'libraries.hideLibrary' => 'Ukryj bibliotekę', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Pokaż bibliotekę', + 'libraries.hideLibrary' => 'Ukryj bibliotekę', 'libraries.libraryOptions' => 'Opcje biblioteki', 'libraries.content' => 'zawartość biblioteki', 'libraries.selectLibrary' => 'Wybierz bibliotekę', diff --git a/lib/i18n/strings_pt.g.dart b/lib/i18n/strings_pt.g.dart index 6a4b96f7..3a08a0a9 100644 --- a/lib/i18n/strings_pt.g.dart +++ b/lib/i18n/strings_pt.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsPt implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'A barra lateral fica expandida e a área de conteúdo se ajusta'; @override String get showUnwatchedCount => 'Mostrar Contagem de Não Assistidos'; @override String get showUnwatchedCountDescription => 'Exibir contagem de episódios não assistidos em séries e temporadas'; + @override String get showEpisodeNumberOnCards => 'Mostrar Número do Episódio nos Cards'; + @override String get showEpisodeNumberOnCardsDescription => 'Mostrar o número do episódio ao lado da temporada (ex. S2 E3) nos cards de episódios'; @override String get hideSpoilers => 'Ocultar Spoilers de Episódios Não Assistidos'; @override String get hideSpoilersDescription => 'Desfocar miniaturas e ocultar descrições de episódios que você ainda não assistiu'; @override String get playerBackend => 'Backend do Player'; @@ -1518,6 +1520,8 @@ extension on TranslationsPt { 'settings.alwaysKeepSidebarOpenDescription' => 'A barra lateral fica expandida e a área de conteúdo se ajusta', 'settings.showUnwatchedCount' => 'Mostrar Contagem de Não Assistidos', 'settings.showUnwatchedCountDescription' => 'Exibir contagem de episódios não assistidos em séries e temporadas', + 'settings.showEpisodeNumberOnCards' => 'Mostrar Número do Episódio nos Cards', + 'settings.showEpisodeNumberOnCardsDescription' => 'Mostrar o número do episódio ao lado da temporada (ex. S2 E3) nos cards de episódios', 'settings.hideSpoilers' => 'Ocultar Spoilers de Episódios Não Assistidos', 'settings.hideSpoilersDescription' => 'Desfocar miniaturas e ocultar descrições de episódios que você ainda não assistiu', 'settings.playerBackend' => 'Backend do Player', @@ -1928,10 +1932,10 @@ extension on TranslationsPt { 'libraries.sortBy' => 'Ordenar Por', 'libraries.filters' => 'Filtros', 'libraries.confirmActionMessage' => 'Tem certeza que deseja realizar esta ação?', - 'libraries.showLibrary' => 'Mostrar biblioteca', - 'libraries.hideLibrary' => 'Ocultar biblioteca', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Mostrar biblioteca', + 'libraries.hideLibrary' => 'Ocultar biblioteca', 'libraries.libraryOptions' => 'Opções da biblioteca', 'libraries.content' => 'conteúdo da biblioteca', 'libraries.selectLibrary' => 'Selecionar biblioteca', diff --git a/lib/i18n/strings_ru.g.dart b/lib/i18n/strings_ru.g.dart index ea35d924..74c3b185 100644 --- a/lib/i18n/strings_ru.g.dart +++ b/lib/i18n/strings_ru.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsRu implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'Боковая панель остаётся развёрнутой, область контента подстраивается'; @override String get showUnwatchedCount => 'Показывать количество непросмотренных'; @override String get showUnwatchedCountDescription => 'Отображать количество непросмотренных эпизодов для сериалов и сезонов'; + @override String get showEpisodeNumberOnCards => 'Показывать номер эпизода на карточках'; + @override String get showEpisodeNumberOnCardsDescription => 'Отображать номер эпизода рядом с сезоном (напр. S2 E3) на карточках эпизодов'; @override String get hideSpoilers => 'Скрыть спойлеры непросмотренных эпизодов'; @override String get hideSpoilersDescription => 'Размывать миниатюры и скрывать описания эпизодов, которые вы ещё не смотрели'; @override String get playerBackend => 'Бэкенд плеера'; @@ -1518,6 +1520,8 @@ extension on TranslationsRu { 'settings.alwaysKeepSidebarOpenDescription' => 'Боковая панель остаётся развёрнутой, область контента подстраивается', 'settings.showUnwatchedCount' => 'Показывать количество непросмотренных', 'settings.showUnwatchedCountDescription' => 'Отображать количество непросмотренных эпизодов для сериалов и сезонов', + 'settings.showEpisodeNumberOnCards' => 'Показывать номер эпизода на карточках', + 'settings.showEpisodeNumberOnCardsDescription' => 'Отображать номер эпизода рядом с сезоном (напр. S2 E3) на карточках эпизодов', 'settings.hideSpoilers' => 'Скрыть спойлеры непросмотренных эпизодов', 'settings.hideSpoilersDescription' => 'Размывать миниатюры и скрывать описания эпизодов, которые вы ещё не смотрели', 'settings.playerBackend' => 'Бэкенд плеера', @@ -1928,10 +1932,10 @@ extension on TranslationsRu { 'libraries.sortBy' => 'Сортировать по', 'libraries.filters' => 'Фильтры', 'libraries.confirmActionMessage' => 'Вы уверены, что хотите выполнить это действие?', - 'libraries.showLibrary' => 'Показать библиотеку', - 'libraries.hideLibrary' => 'Скрыть библиотеку', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Показать библиотеку', + 'libraries.hideLibrary' => 'Скрыть библиотеку', 'libraries.libraryOptions' => 'Параметры библиотеки', 'libraries.content' => 'содержимое библиотеки', 'libraries.selectLibrary' => 'Выбрать библиотеку', diff --git a/lib/i18n/strings_sv.g.dart b/lib/i18n/strings_sv.g.dart index 56169f93..74daf1b7 100644 --- a/lib/i18n/strings_sv.g.dart +++ b/lib/i18n/strings_sv.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsSv implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => 'Sidofältet förblir expanderat och innehållsytan anpassas'; @override String get showUnwatchedCount => 'Visa antal osedda'; @override String get showUnwatchedCountDescription => 'Visa antal osedda avsnitt för serier och säsonger'; + @override String get showEpisodeNumberOnCards => 'Visa avsnittsnummer på kort'; + @override String get showEpisodeNumberOnCardsDescription => 'Visa avsnittsnummer tillsammans med säsongen (t.ex. S2 E3) på avsnittskort'; @override String get hideSpoilers => 'Dölj spoilers för osedda avsnitt'; @override String get hideSpoilersDescription => 'Gör miniatyrer suddiga och dölj beskrivningar för avsnitt du inte har sett ännu'; @override String get playerBackend => 'Spelarmotor'; @@ -1518,6 +1520,8 @@ extension on TranslationsSv { 'settings.alwaysKeepSidebarOpenDescription' => 'Sidofältet förblir expanderat och innehållsytan anpassas', 'settings.showUnwatchedCount' => 'Visa antal osedda', 'settings.showUnwatchedCountDescription' => 'Visa antal osedda avsnitt för serier och säsonger', + 'settings.showEpisodeNumberOnCards' => 'Visa avsnittsnummer på kort', + 'settings.showEpisodeNumberOnCardsDescription' => 'Visa avsnittsnummer tillsammans med säsongen (t.ex. S2 E3) på avsnittskort', 'settings.hideSpoilers' => 'Dölj spoilers för osedda avsnitt', 'settings.hideSpoilersDescription' => 'Gör miniatyrer suddiga och dölj beskrivningar för avsnitt du inte har sett ännu', 'settings.playerBackend' => 'Spelarmotor', @@ -1928,10 +1932,10 @@ extension on TranslationsSv { 'libraries.sortBy' => 'Sortera efter', 'libraries.filters' => 'Filter', 'libraries.confirmActionMessage' => 'Är du säker på att du vill utföra denna åtgärd?', - 'libraries.showLibrary' => 'Visa bibliotek', - 'libraries.hideLibrary' => 'Dölj bibliotek', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => 'Visa bibliotek', + 'libraries.hideLibrary' => 'Dölj bibliotek', 'libraries.libraryOptions' => 'Biblioteksalternativ', 'libraries.content' => 'bibliotekets innehåll', 'libraries.selectLibrary' => 'Välj bibliotek', diff --git a/lib/i18n/strings_zh.g.dart b/lib/i18n/strings_zh.g.dart index 5bf1eab7..10991f49 100644 --- a/lib/i18n/strings_zh.g.dart +++ b/lib/i18n/strings_zh.g.dart @@ -230,6 +230,8 @@ class _TranslationsSettingsZh implements TranslationsSettingsEn { @override String get alwaysKeepSidebarOpenDescription => '侧边栏保持展开状态,内容区域自动调整'; @override String get showUnwatchedCount => '显示未观看数量'; @override String get showUnwatchedCountDescription => '在剧集和季上显示未观看的集数'; + @override String get showEpisodeNumberOnCards => '在卡片上显示集数'; + @override String get showEpisodeNumberOnCardsDescription => '在剧集卡片上,季号旁同时显示集数(例如 S2 E3)'; @override String get hideSpoilers => '隐藏未看剧集的剧透内容'; @override String get hideSpoilersDescription => '模糊未观看剧集的缩略图并隐藏其描述'; @override String get playerBackend => '播放器引擎'; @@ -1518,6 +1520,8 @@ extension on TranslationsZh { 'settings.alwaysKeepSidebarOpenDescription' => '侧边栏保持展开状态,内容区域自动调整', 'settings.showUnwatchedCount' => '显示未观看数量', 'settings.showUnwatchedCountDescription' => '在剧集和季上显示未观看的集数', + 'settings.showEpisodeNumberOnCards' => '在卡片上显示集数', + 'settings.showEpisodeNumberOnCardsDescription' => '在剧集卡片上,季号旁同时显示集数(例如 S2 E3)', 'settings.hideSpoilers' => '隐藏未看剧集的剧透内容', 'settings.hideSpoilersDescription' => '模糊未观看剧集的缩略图并隐藏其描述', 'settings.playerBackend' => '播放器引擎', @@ -1928,10 +1932,10 @@ extension on TranslationsZh { 'libraries.sortBy' => '排序依据', 'libraries.filters' => '筛选器', 'libraries.confirmActionMessage' => '确定要执行此操作吗?', - 'libraries.showLibrary' => '显示媒体库', - 'libraries.hideLibrary' => '隐藏媒体库', _ => null, } ?? switch (path) { + 'libraries.showLibrary' => '显示媒体库', + 'libraries.hideLibrary' => '隐藏媒体库', 'libraries.libraryOptions' => '媒体库选项', 'libraries.content' => '媒体库内容', 'libraries.selectLibrary' => '选择媒体库', diff --git a/lib/i18n/sv.i18n.json b/lib/i18n/sv.i18n.json index 0bc387c2..eab202b4 100644 --- a/lib/i18n/sv.i18n.json +++ b/lib/i18n/sv.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "Sidofältet förblir expanderat och innehållsytan anpassas", "showUnwatchedCount": "Visa antal osedda", "showUnwatchedCountDescription": "Visa antal osedda avsnitt för serier och säsonger", + "showEpisodeNumberOnCards": "Visa avsnittsnummer på kort", + "showEpisodeNumberOnCardsDescription": "Visa avsnittsnummer tillsammans med säsongen (t.ex. S2 E3) på avsnittskort", "hideSpoilers": "Dölj spoilers för osedda avsnitt", "hideSpoilersDescription": "Gör miniatyrer suddiga och dölj beskrivningar för avsnitt du inte har sett ännu", "playerBackend": "Spelarmotor", diff --git a/lib/i18n/zh.i18n.json b/lib/i18n/zh.i18n.json index 539c6046..d93ce92c 100644 --- a/lib/i18n/zh.i18n.json +++ b/lib/i18n/zh.i18n.json @@ -110,6 +110,8 @@ "alwaysKeepSidebarOpenDescription": "侧边栏保持展开状态,内容区域自动调整", "showUnwatchedCount": "显示未观看数量", "showUnwatchedCountDescription": "在剧集和季上显示未观看的集数", + "showEpisodeNumberOnCards": "在卡片上显示集数", + "showEpisodeNumberOnCardsDescription": "在剧集卡片上,季号旁同时显示集数(例如 S2 E3)", "hideSpoilers": "隐藏未看剧集的剧透内容", "hideSpoilersDescription": "模糊未观看剧集的缩略图并隐藏其描述", "playerBackend": "播放器引擎", diff --git a/lib/providers/settings_provider.dart b/lib/providers/settings_provider.dart index d5bed61d..17682876 100644 --- a/lib/providers/settings_provider.dart +++ b/lib/providers/settings_provider.dart @@ -12,6 +12,7 @@ class SettingsProvider extends ChangeNotifier { bool _showServerNameOnHubs = false; bool _alwaysKeepSidebarOpen = false; bool _showUnwatchedCount = true; + bool _showEpisodeNumberOnCards = true; bool _hideSpoilers = false; bool _showNavBarLabels = true; bool _liveTvDefaultFavorites = false; @@ -54,6 +55,7 @@ class SettingsProvider extends ChangeNotifier { _showServerNameOnHubs = s.getShowServerNameOnHubs(); _alwaysKeepSidebarOpen = s.getAlwaysKeepSidebarOpen(); _showUnwatchedCount = s.getShowUnwatchedCount(); + _showEpisodeNumberOnCards = s.getShowEpisodeNumberOnCards(); _hideSpoilers = s.getHideSpoilers(); _showNavBarLabels = s.getShowNavBarLabels(); _liveTvDefaultFavorites = s.getLiveTvDefaultFavorites(); @@ -89,6 +91,8 @@ class SettingsProvider extends ChangeNotifier { bool get showUnwatchedCount => _showUnwatchedCount; + bool get showEpisodeNumberOnCards => _showEpisodeNumberOnCards; + bool get hideSpoilers => _hideSpoilers; bool get showNavBarLabels => _showNavBarLabels; @@ -170,6 +174,13 @@ class SettingsProvider extends ChangeNotifier { persist: _settingsService!.setShowUnwatchedCount, ); + Future setShowEpisodeNumberOnCards(bool value) => _updateSetting( + current: _showEpisodeNumberOnCards, + value: value, + setLocal: (v) => _showEpisodeNumberOnCards = v, + persist: _settingsService!.setShowEpisodeNumberOnCards, + ); + Future setHideSpoilers(bool value) => _updateSetting( current: _hideSpoilers, value: value, diff --git a/lib/screens/settings/appearance_settings_screen.dart b/lib/screens/settings/appearance_settings_screen.dart index 34538431..10e081e6 100644 --- a/lib/screens/settings/appearance_settings_screen.dart +++ b/lib/screens/settings/appearance_settings_screen.dart @@ -68,6 +68,7 @@ class _AppearanceSettingsScreenState extends State { _buildDensitySelector(), _buildViewModeSelector(), _buildEpisodePosterModeSelector(), + _buildShowEpisodeNumberOnCards(), // --- Home Screen --- SettingsSectionHeader(t.settings.homeScreen), @@ -211,6 +212,14 @@ class _AppearanceSettingsScreenState extends State { ); } + Widget _buildShowEpisodeNumberOnCards() => _buildBoolToggle( + icon: Symbols.tag_rounded, + title: t.settings.showEpisodeNumberOnCards, + subtitle: t.settings.showEpisodeNumberOnCardsDescription, + getter: (p) => p.showEpisodeNumberOnCards, + setter: (p, v) => p.setShowEpisodeNumberOnCards(v), + ); + /// Shared scaffolding for the bool toggles on this screen. Each toggle /// watches one `SettingsProvider` field via `Selector`, so flipping one /// switch doesn't rebuild the others. diff --git a/lib/services/settings_service.dart b/lib/services/settings_service.dart index 32248fbf..9653f51b 100644 --- a/lib/services/settings_service.dart +++ b/lib/services/settings_service.dart @@ -105,6 +105,7 @@ class SettingsService extends BaseSharedPreferencesService { static const String _keyUseExoPlayer = 'use_exoplayer'; static const String _keyAlwaysKeepSidebarOpen = 'always_keep_sidebar_open'; static const String _keyShowUnwatchedCount = 'show_unwatched_count'; + static const String _keyShowEpisodeNumberOnCards = 'show_episode_number_on_cards'; static const String _keyHideSpoilers = 'hide_spoilers'; static const String _keyShowNavBarLabels = 'show_nav_bar_labels'; static const String _keyGlobalShaderPreset = 'global_shader_preset'; @@ -1279,6 +1280,15 @@ class SettingsService extends BaseSharedPreferencesService { return prefs.getBool(_keyShowUnwatchedCount) ?? true; // Default: enabled (show counts) } + // Show Episode Number on Cards (append E# alongside S# on episode cards) + Future setShowEpisodeNumberOnCards(bool enabled) async { + await prefs.setBool(_keyShowEpisodeNumberOnCards, enabled); + } + + bool getShowEpisodeNumberOnCards() { + return prefs.getBool(_keyShowEpisodeNumberOnCards) ?? true; // Default: enabled + } + // Hide Spoilers (blur thumbnails and hide descriptions for unwatched episodes) Future setHideSpoilers(bool enabled) async { await prefs.setBool(_keyHideSpoilers, enabled); @@ -1494,6 +1504,7 @@ class SettingsService extends BaseSharedPreferencesService { prefs.remove(_keyUseExoPlayer), prefs.remove(_keyAlwaysKeepSidebarOpen), prefs.remove(_keyShowUnwatchedCount), + prefs.remove(_keyShowEpisodeNumberOnCards), prefs.remove(_keyHideSpoilers), prefs.remove(_keyShowNavBarLabels), prefs.remove(_keyGlobalShaderPreset), diff --git a/lib/widgets/media_card.dart b/lib/widgets/media_card.dart index 74107666..e92c64a2 100644 --- a/lib/widgets/media_card.dart +++ b/lib/widgets/media_card.dart @@ -447,16 +447,17 @@ class _MediaCardList extends StatelessWidget { return parts.join(' • '); } - String? _buildSubtitleText() { + String? _buildSubtitleText(BuildContext context) { if (item is PlexPlaylist) { // Playlists don't have subtitles return null; } else if (item is PlexMetadata) { final metadata = item as PlexMetadata; - // For TV episodes, show S#E# format + // For TV episodes, show S# (optionally with E#) if (metadata.parentIndex != null && metadata.index != null) { - return 'S${metadata.parentIndex} E${metadata.index}'; + final showEp = context.select((p) => p.showEpisodeNumberOnCards); + return showEp ? 'S${metadata.parentIndex} E${metadata.index}' : 'S${metadata.parentIndex}'; } // Otherwise use existing subtitle logic @@ -477,7 +478,8 @@ class _MediaCardList extends StatelessWidget { fontSize: _subtitleFontSize, ); final episodeTitle = metadata.displaySubtitle ?? metadata.displayTitle; - final episodeNum = metadata.index != null ? ' E${metadata.index}' : ''; + final showEp = context.select((p) => p.showEpisodeNumberOnCards); + final episodeNum = (showEp && metadata.index != null) ? ' E${metadata.index}' : ''; return Row( children: [ _ClickableText( @@ -496,7 +498,7 @@ class _MediaCardList extends StatelessWidget { @override Widget build(BuildContext context) { final metadataLine = _buildMetadataLine(); - final subtitle = _buildSubtitleText(); + final subtitle = _buildSubtitleText(context); return InkWell( canRequestFocus: false, // Keyboard handled by FocusableMediaCard @@ -738,6 +740,8 @@ class _MediaCardHelpers { // For episodes, show "S# · Episode Title" with clickable season link if (metadata.isEpisode && metadata.parentIndex != null) { final episodeTitle = metadata.displaySubtitle ?? metadata.displayTitle; + final showEp = context.select((p) => p.showEpisodeNumberOnCards); + final episodeSuffix = (showEp && metadata.index != null) ? ' E${metadata.index}' : ''; if (metadata.parentRatingKey != null) { return Row( children: [ @@ -746,7 +750,7 @@ class _MediaCardHelpers { style: subtitleStyle, onTap: () => _navigateToSeason(context, metadata, isOffline: isOffline), ), - Text(' · ', style: subtitleStyle), + Text('$episodeSuffix · ', style: subtitleStyle), Expanded( child: Text(episodeTitle, maxLines: 1, overflow: TextOverflow.ellipsis, style: subtitleStyle), ), @@ -754,7 +758,7 @@ class _MediaCardHelpers { ); } return Text( - 'S${metadata.parentIndex} · $episodeTitle', + 'S${metadata.parentIndex}$episodeSuffix · $episodeTitle', maxLines: 1, overflow: TextOverflow.ellipsis, style: subtitleStyle,