diff --git a/lib/i18n/da.i18n.json b/lib/i18n/da.i18n.json index 59797e1e..6f56504d 100644 --- a/lib/i18n/da.i18n.json +++ b/lib/i18n/da.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Tilføjet dato", "releaseDate": "Udgivelsesdato", "rating": "Vurdering", + "communityRating": "Fællesskabsvurdering", + "criticRating": "Kritikerbedømmelse", "lastPlayed": "Sidst afspillet", + "datePlayed": "Afspilningsdato", "playCount": "Antal afspilninger", + "productionYear": "Produktionsår", + "runtime": "Spilletid", + "officialRating": "Officiel vurdering", + "premiereDate": "Premieredato", + "startDate": "Startdato", + "airTime": "Sendetid", + "studio": "Studie", "random": "Tilfældig", "dateShared": "Delt dato", "latestEpisodeAirDate": "Seneste episodes premieredato" diff --git a/lib/i18n/de.i18n.json b/lib/i18n/de.i18n.json index ca9c50c7..a7dd1371 100644 --- a/lib/i18n/de.i18n.json +++ b/lib/i18n/de.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Hinzugefügt am", "releaseDate": "Erscheinungsdatum", "rating": "Bewertung", + "communityRating": "Community-Bewertung", + "criticRating": "Kritikerbewertung", "lastPlayed": "Zuletzt abgespielt", + "datePlayed": "Wiedergabedatum", "playCount": "Wiedergaben", + "productionYear": "Produktionsjahr", + "runtime": "Laufzeit", + "officialRating": "Offizielle Bewertung", + "premiereDate": "Premierendatum", + "startDate": "Startdatum", + "airTime": "Sendezeit", + "studio": "Studio", "random": "Zufällig", "dateShared": "Datum geteilt", "latestEpisodeAirDate": "Letztes Folgenausstrahlungsdatum" diff --git a/lib/i18n/en.i18n.json b/lib/i18n/en.i18n.json index c80c14b3..c06acb0a 100644 --- a/lib/i18n/en.i18n.json +++ b/lib/i18n/en.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Date Added", "releaseDate": "Release Date", "rating": "Rating", + "communityRating": "Community Rating", + "criticRating": "Critic Rating", "lastPlayed": "Last Played", + "datePlayed": "Date Played", "playCount": "Play Count", + "productionYear": "Production Year", + "runtime": "Runtime", + "officialRating": "Official Rating", + "premiereDate": "Premiere Date", + "startDate": "Start Date", + "airTime": "Air Time", + "studio": "Studio", "random": "Random", "dateShared": "Date Shared", "latestEpisodeAirDate": "Latest Episode Air Date" diff --git a/lib/i18n/es.i18n.json b/lib/i18n/es.i18n.json index 6f3f8084..4e35f2d5 100644 --- a/lib/i18n/es.i18n.json +++ b/lib/i18n/es.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Fecha de adición", "releaseDate": "Fecha de estreno", "rating": "Valoración", + "communityRating": "Calificación de comunidad", + "criticRating": "Calificación de crítica", "lastPlayed": "Última reproducción", + "datePlayed": "Fecha de reproducción", "playCount": "Reproducciones", + "productionYear": "Año de producción", + "runtime": "Duración", + "officialRating": "Calificación oficial", + "premiereDate": "Fecha de estreno", + "startDate": "Fecha de inicio", + "airTime": "Hora de emisión", + "studio": "Estudio", "random": "Aleatorio", "dateShared": "Fecha de compartición", "latestEpisodeAirDate": "Última fecha de emisión del episodio" diff --git a/lib/i18n/fr.i18n.json b/lib/i18n/fr.i18n.json index c859bca4..1f328842 100644 --- a/lib/i18n/fr.i18n.json +++ b/lib/i18n/fr.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Date d'ajout", "releaseDate": "Date de sortie", "rating": "Note", + "communityRating": "Note communautaire", + "criticRating": "Note critique", "lastPlayed": "Dernière lecture", + "datePlayed": "Date de lecture", "playCount": "Lectures", + "productionYear": "Année de production", + "runtime": "Durée", + "officialRating": "Classification officielle", + "premiereDate": "Date de première", + "startDate": "Date de début", + "airTime": "Heure de diffusion", + "studio": "Studio", "random": "Aléatoire", "dateShared": "Date de partage", "latestEpisodeAirDate": "Dernière date de diffusion" diff --git a/lib/i18n/it.i18n.json b/lib/i18n/it.i18n.json index 15750ea2..70b644a3 100644 --- a/lib/i18n/it.i18n.json +++ b/lib/i18n/it.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Data di aggiunta", "releaseDate": "Data di uscita", "rating": "Valutazione", + "communityRating": "Valutazione della community", + "criticRating": "Valutazione critica", "lastPlayed": "Ultima riproduzione", + "datePlayed": "Data di riproduzione", "playCount": "Riproduzioni", + "productionYear": "Anno di produzione", + "runtime": "Durata", + "officialRating": "Classificazione ufficiale", + "premiereDate": "Data di première", + "startDate": "Data di inizio", + "airTime": "Orario di messa in onda", + "studio": "Studio", "random": "Casuale", "dateShared": "Data di condivisione", "latestEpisodeAirDate": "Data ultima messa in onda" diff --git a/lib/i18n/ja.i18n.json b/lib/i18n/ja.i18n.json index 7fb37397..28adf24f 100644 --- a/lib/i18n/ja.i18n.json +++ b/lib/i18n/ja.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "追加日", "releaseDate": "リリース日", "rating": "評価", + "communityRating": "コミュニティ評価", + "criticRating": "批評家評価", "lastPlayed": "最終再生", + "datePlayed": "再生日", "playCount": "再生回数", + "productionYear": "製作年", + "runtime": "再生時間", + "officialRating": "公式レーティング", + "premiereDate": "プレミア日", + "startDate": "開始日", + "airTime": "放送時刻", + "studio": "スタジオ", "random": "ランダム", "dateShared": "共有日", "latestEpisodeAirDate": "最新エピソード放送日" diff --git a/lib/i18n/ko.i18n.json b/lib/i18n/ko.i18n.json index 3c7b2ea9..10f2d21a 100644 --- a/lib/i18n/ko.i18n.json +++ b/lib/i18n/ko.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "추가된 날짜", "releaseDate": "출시일", "rating": "평점", + "communityRating": "커뮤니티 평점", + "criticRating": "평론가 평점", "lastPlayed": "마지막 재생", + "datePlayed": "재생일", "playCount": "재생 횟수", + "productionYear": "제작 연도", + "runtime": "재생 시간", + "officialRating": "공식 등급", + "premiereDate": "최초 공개일", + "startDate": "시작일", + "airTime": "방영 시간", + "studio": "스튜디오", "random": "무작위", "dateShared": "공유된 날짜", "latestEpisodeAirDate": "최신 에피소드 방영일" diff --git a/lib/i18n/nb.i18n.json b/lib/i18n/nb.i18n.json index 68a7316e..c9fddf10 100644 --- a/lib/i18n/nb.i18n.json +++ b/lib/i18n/nb.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Lagt til-dato", "releaseDate": "Utgivelsesdato", "rating": "Vurdering", + "communityRating": "Fellesskapsvurdering", + "criticRating": "Kritikervurdering", "lastPlayed": "Sist spilt", + "datePlayed": "Avspillingsdato", "playCount": "Avspillinger", + "productionYear": "Produksjonsår", + "runtime": "Varighet", + "officialRating": "Offisiell vurdering", + "premiereDate": "Premieredato", + "startDate": "Startdato", + "airTime": "Sendetid", + "studio": "Studio", "random": "Tilfeldig", "dateShared": "Delingsdato", "latestEpisodeAirDate": "Siste episodes sendedato" diff --git a/lib/i18n/nl.i18n.json b/lib/i18n/nl.i18n.json index d60e0310..119e04f0 100644 --- a/lib/i18n/nl.i18n.json +++ b/lib/i18n/nl.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Toegevoegd op", "releaseDate": "Uitgavedatum", "rating": "Beoordeling", + "communityRating": "Communitybeoordeling", + "criticRating": "Criticusbeoordeling", "lastPlayed": "Laatst afgespeeld", + "datePlayed": "Afspeeldatum", "playCount": "Aantal afspelingen", + "productionYear": "Productiejaar", + "runtime": "Speelduur", + "officialRating": "Officiële beoordeling", + "premiereDate": "Premièredatum", + "startDate": "Begindatum", + "airTime": "Uitzendtijd", + "studio": "Studio", "random": "Willekeurig", "dateShared": "Gedeeld op", "latestEpisodeAirDate": "Laatste afleveringsuitzending" diff --git a/lib/i18n/pl.i18n.json b/lib/i18n/pl.i18n.json index 3dbacdb2..8830905b 100644 --- a/lib/i18n/pl.i18n.json +++ b/lib/i18n/pl.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Data dodania", "releaseDate": "Data premiery", "rating": "Ocena", + "communityRating": "Ocena społeczności", + "criticRating": "Ocena krytyków", "lastPlayed": "Ostatnio odtwarzane", + "datePlayed": "Data odtworzenia", "playCount": "Liczba odtworzeń", + "productionYear": "Rok produkcji", + "runtime": "Czas trwania", + "officialRating": "Oficjalna klasyfikacja", + "premiereDate": "Data premiery", + "startDate": "Data rozpoczęcia", + "airTime": "Godzina emisji", + "studio": "Studio", "random": "Losowo", "dateShared": "Data udostępnienia", "latestEpisodeAirDate": "Data emisji ostatniego odcinka" diff --git a/lib/i18n/pt.i18n.json b/lib/i18n/pt.i18n.json index 6e494841..92d2a988 100644 --- a/lib/i18n/pt.i18n.json +++ b/lib/i18n/pt.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Data de adição", "releaseDate": "Data de lançamento", "rating": "Avaliação", + "communityRating": "Avaliação da comunidade", + "criticRating": "Avaliação da crítica", "lastPlayed": "Última reprodução", + "datePlayed": "Data de reprodução", "playCount": "Reproduções", + "productionYear": "Ano de produção", + "runtime": "Duração", + "officialRating": "Classificação oficial", + "premiereDate": "Data de estreia", + "startDate": "Data de início", + "airTime": "Horário de exibição", + "studio": "Estúdio", "random": "Aleatório", "dateShared": "Data de compartilhamento", "latestEpisodeAirDate": "Última data de exibição do episódio" diff --git a/lib/i18n/ru.i18n.json b/lib/i18n/ru.i18n.json index 8d0e203c..9e2ddc5e 100644 --- a/lib/i18n/ru.i18n.json +++ b/lib/i18n/ru.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Дата добавления", "releaseDate": "Дата выхода", "rating": "Рейтинг", + "communityRating": "Оценка сообщества", + "criticRating": "Оценка критиков", "lastPlayed": "Последний просмотр", + "datePlayed": "Дата просмотра", "playCount": "Количество просмотров", + "productionYear": "Год производства", + "runtime": "Длительность", + "officialRating": "Официальный рейтинг", + "premiereDate": "Дата премьеры", + "startDate": "Дата начала", + "airTime": "Время эфира", + "studio": "Студия", "random": "Случайно", "dateShared": "Дата открытия доступа", "latestEpisodeAirDate": "Дата выхода последнего эпизода" diff --git a/lib/i18n/strings.g.dart b/lib/i18n/strings.g.dart index 79f0dbc7..648c4e35 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: 17145 (1143 per locale) +/// Strings: 17295 (1153 per locale) /// -/// Built on 2026-05-11 at 02:36 UTC +/// Built on 2026-05-13 at 05:26 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 88ae2d7f..c1b085be 100644 --- a/lib/i18n/strings_da.g.dart +++ b/lib/i18n/strings_da.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsDa extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Tilføjet dato'; @override String get releaseDate => 'Udgivelsesdato'; @override String get rating => 'Vurdering'; + @override String get communityRating => 'Fællesskabsvurdering'; + @override String get criticRating => 'Kritikerbedømmelse'; @override String get lastPlayed => 'Sidst afspillet'; + @override String get datePlayed => 'Afspilningsdato'; @override String get playCount => 'Antal afspilninger'; + @override String get productionYear => 'Produktionsår'; + @override String get runtime => 'Spilletid'; + @override String get officialRating => 'Officiel vurdering'; + @override String get premiereDate => 'Premieredato'; + @override String get startDate => 'Startdato'; + @override String get airTime => 'Sendetid'; + @override String get studio => 'Studie'; @override String get random => 'Tilfældig'; @override String get dateShared => 'Delt dato'; @override String get latestEpisodeAirDate => 'Seneste episodes premieredato'; @@ -2400,8 +2410,18 @@ extension on TranslationsDa { 'libraries.sortLabels.dateAdded' => 'Tilføjet dato', 'libraries.sortLabels.releaseDate' => 'Udgivelsesdato', 'libraries.sortLabels.rating' => 'Vurdering', + 'libraries.sortLabels.communityRating' => 'Fællesskabsvurdering', + 'libraries.sortLabels.criticRating' => 'Kritikerbedømmelse', 'libraries.sortLabels.lastPlayed' => 'Sidst afspillet', + 'libraries.sortLabels.datePlayed' => 'Afspilningsdato', 'libraries.sortLabels.playCount' => 'Antal afspilninger', + 'libraries.sortLabels.productionYear' => 'Produktionsår', + 'libraries.sortLabels.runtime' => 'Spilletid', + 'libraries.sortLabels.officialRating' => 'Officiel vurdering', + 'libraries.sortLabels.premiereDate' => 'Premieredato', + 'libraries.sortLabels.startDate' => 'Startdato', + 'libraries.sortLabels.airTime' => 'Sendetid', + 'libraries.sortLabels.studio' => 'Studie', 'libraries.sortLabels.random' => 'Tilfældig', 'libraries.sortLabels.dateShared' => 'Delt dato', 'libraries.sortLabels.latestEpisodeAirDate' => 'Seneste episodes premieredato', @@ -2778,6 +2798,8 @@ extension on TranslationsDa { 'metadataEdit.libraryDefault' => 'Biblioteksstandard', 'metadataEdit.accountDefault' => 'Kontostandard', 'metadataEdit.seriesDefault' => 'Seriestandard', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Episodesortering', 'metadataEdit.oldestFirst' => 'Ældste først', 'metadataEdit.newestFirst' => 'Nyeste først', @@ -2788,8 +2810,6 @@ extension on TranslationsDa { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episoder tilføjet de seneste ${count} dage', 'metadataEdit.deleteAfterPlaying' => 'Slet episoder efter afspilning', 'metadataEdit.never' => 'Aldrig', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Efter en dag', 'metadataEdit.afterAWeek' => 'Efter en uge', 'metadataEdit.afterAMonth' => 'Efter en måned', diff --git a/lib/i18n/strings_de.g.dart b/lib/i18n/strings_de.g.dart index 543758d0..946d1a10 100644 --- a/lib/i18n/strings_de.g.dart +++ b/lib/i18n/strings_de.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsDe extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Hinzugefügt am'; @override String get releaseDate => 'Erscheinungsdatum'; @override String get rating => 'Bewertung'; + @override String get communityRating => 'Community-Bewertung'; + @override String get criticRating => 'Kritikerbewertung'; @override String get lastPlayed => 'Zuletzt abgespielt'; + @override String get datePlayed => 'Wiedergabedatum'; @override String get playCount => 'Wiedergaben'; + @override String get productionYear => 'Produktionsjahr'; + @override String get runtime => 'Laufzeit'; + @override String get officialRating => 'Offizielle Bewertung'; + @override String get premiereDate => 'Premierendatum'; + @override String get startDate => 'Startdatum'; + @override String get airTime => 'Sendezeit'; + @override String get studio => 'Studio'; @override String get random => 'Zufällig'; @override String get dateShared => 'Datum geteilt'; @override String get latestEpisodeAirDate => 'Letztes Folgenausstrahlungsdatum'; @@ -2400,8 +2410,18 @@ extension on TranslationsDe { 'libraries.sortLabels.dateAdded' => 'Hinzugefügt am', 'libraries.sortLabels.releaseDate' => 'Erscheinungsdatum', 'libraries.sortLabels.rating' => 'Bewertung', + 'libraries.sortLabels.communityRating' => 'Community-Bewertung', + 'libraries.sortLabels.criticRating' => 'Kritikerbewertung', 'libraries.sortLabels.lastPlayed' => 'Zuletzt abgespielt', + 'libraries.sortLabels.datePlayed' => 'Wiedergabedatum', 'libraries.sortLabels.playCount' => 'Wiedergaben', + 'libraries.sortLabels.productionYear' => 'Produktionsjahr', + 'libraries.sortLabels.runtime' => 'Laufzeit', + 'libraries.sortLabels.officialRating' => 'Offizielle Bewertung', + 'libraries.sortLabels.premiereDate' => 'Premierendatum', + 'libraries.sortLabels.startDate' => 'Startdatum', + 'libraries.sortLabels.airTime' => 'Sendezeit', + 'libraries.sortLabels.studio' => 'Studio', 'libraries.sortLabels.random' => 'Zufällig', 'libraries.sortLabels.dateShared' => 'Datum geteilt', 'libraries.sortLabels.latestEpisodeAirDate' => 'Letztes Folgenausstrahlungsdatum', @@ -2778,6 +2798,8 @@ extension on TranslationsDe { 'metadataEdit.libraryDefault' => 'Bibliotheksstandard', 'metadataEdit.accountDefault' => 'Kontostandard', 'metadataEdit.seriesDefault' => 'Serienstandard', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Episodensortierung', 'metadataEdit.oldestFirst' => 'Älteste zuerst', 'metadataEdit.newestFirst' => 'Neueste zuerst', @@ -2788,8 +2810,6 @@ extension on TranslationsDe { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episoden der letzten ${count} Tage', 'metadataEdit.deleteAfterPlaying' => 'Episoden nach Wiedergabe löschen', 'metadataEdit.never' => 'Nie', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Nach einem Tag', 'metadataEdit.afterAWeek' => 'Nach einer Woche', 'metadataEdit.afterAMonth' => 'Nach einem Monat', diff --git a/lib/i18n/strings_en.g.dart b/lib/i18n/strings_en.g.dart index 1f0f4d3c..7254b9cf 100644 --- a/lib/i18n/strings_en.g.dart +++ b/lib/i18n/strings_en.g.dart @@ -3733,12 +3733,42 @@ class TranslationsLibrariesSortLabelsEn { /// en: 'Rating' String get rating => 'Rating'; + /// en: 'Community Rating' + String get communityRating => 'Community Rating'; + + /// en: 'Critic Rating' + String get criticRating => 'Critic Rating'; + /// en: 'Last Played' String get lastPlayed => 'Last Played'; + /// en: 'Date Played' + String get datePlayed => 'Date Played'; + /// en: 'Play Count' String get playCount => 'Play Count'; + /// en: 'Production Year' + String get productionYear => 'Production Year'; + + /// en: 'Runtime' + String get runtime => 'Runtime'; + + /// en: 'Official Rating' + String get officialRating => 'Official Rating'; + + /// en: 'Premiere Date' + String get premiereDate => 'Premiere Date'; + + /// en: 'Start Date' + String get startDate => 'Start Date'; + + /// en: 'Air Time' + String get airTime => 'Air Time'; + + /// en: 'Studio' + String get studio => 'Studio'; + /// en: 'Random' String get random => 'Random'; @@ -4692,8 +4722,18 @@ extension on Translations { 'libraries.sortLabels.dateAdded' => 'Date Added', 'libraries.sortLabels.releaseDate' => 'Release Date', 'libraries.sortLabels.rating' => 'Rating', + 'libraries.sortLabels.communityRating' => 'Community Rating', + 'libraries.sortLabels.criticRating' => 'Critic Rating', 'libraries.sortLabels.lastPlayed' => 'Last Played', + 'libraries.sortLabels.datePlayed' => 'Date Played', 'libraries.sortLabels.playCount' => 'Play Count', + 'libraries.sortLabels.productionYear' => 'Production Year', + 'libraries.sortLabels.runtime' => 'Runtime', + 'libraries.sortLabels.officialRating' => 'Official Rating', + 'libraries.sortLabels.premiereDate' => 'Premiere Date', + 'libraries.sortLabels.startDate' => 'Start Date', + 'libraries.sortLabels.airTime' => 'Air Time', + 'libraries.sortLabels.studio' => 'Studio', 'libraries.sortLabels.random' => 'Random', 'libraries.sortLabels.dateShared' => 'Date Shared', 'libraries.sortLabels.latestEpisodeAirDate' => 'Latest Episode Air Date', @@ -5070,6 +5110,8 @@ extension on Translations { 'metadataEdit.libraryDefault' => 'Library default', 'metadataEdit.accountDefault' => 'Account default', 'metadataEdit.seriesDefault' => 'Series default', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Episode Sorting', 'metadataEdit.oldestFirst' => 'Oldest first', 'metadataEdit.newestFirst' => 'Newest first', @@ -5080,8 +5122,6 @@ extension on Translations { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episodes added in the past ${count} days', 'metadataEdit.deleteAfterPlaying' => 'Delete Episodes After Playing', 'metadataEdit.never' => 'Never', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'After a day', 'metadataEdit.afterAWeek' => 'After a week', 'metadataEdit.afterAMonth' => 'After a month', diff --git a/lib/i18n/strings_es.g.dart b/lib/i18n/strings_es.g.dart index 78049e26..54e2dde7 100644 --- a/lib/i18n/strings_es.g.dart +++ b/lib/i18n/strings_es.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsEs extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Fecha de adición'; @override String get releaseDate => 'Fecha de estreno'; @override String get rating => 'Valoración'; + @override String get communityRating => 'Calificación de comunidad'; + @override String get criticRating => 'Calificación de crítica'; @override String get lastPlayed => 'Última reproducción'; + @override String get datePlayed => 'Fecha de reproducción'; @override String get playCount => 'Reproducciones'; + @override String get productionYear => 'Año de producción'; + @override String get runtime => 'Duración'; + @override String get officialRating => 'Calificación oficial'; + @override String get premiereDate => 'Fecha de estreno'; + @override String get startDate => 'Fecha de inicio'; + @override String get airTime => 'Hora de emisión'; + @override String get studio => 'Estudio'; @override String get random => 'Aleatorio'; @override String get dateShared => 'Fecha de compartición'; @override String get latestEpisodeAirDate => 'Última fecha de emisión del episodio'; @@ -2400,8 +2410,18 @@ extension on TranslationsEs { 'libraries.sortLabels.dateAdded' => 'Fecha de adición', 'libraries.sortLabels.releaseDate' => 'Fecha de estreno', 'libraries.sortLabels.rating' => 'Valoración', + 'libraries.sortLabels.communityRating' => 'Calificación de comunidad', + 'libraries.sortLabels.criticRating' => 'Calificación de crítica', 'libraries.sortLabels.lastPlayed' => 'Última reproducción', + 'libraries.sortLabels.datePlayed' => 'Fecha de reproducción', 'libraries.sortLabels.playCount' => 'Reproducciones', + 'libraries.sortLabels.productionYear' => 'Año de producción', + 'libraries.sortLabels.runtime' => 'Duración', + 'libraries.sortLabels.officialRating' => 'Calificación oficial', + 'libraries.sortLabels.premiereDate' => 'Fecha de estreno', + 'libraries.sortLabels.startDate' => 'Fecha de inicio', + 'libraries.sortLabels.airTime' => 'Hora de emisión', + 'libraries.sortLabels.studio' => 'Estudio', 'libraries.sortLabels.random' => 'Aleatorio', 'libraries.sortLabels.dateShared' => 'Fecha de compartición', 'libraries.sortLabels.latestEpisodeAirDate' => 'Última fecha de emisión del episodio', @@ -2778,6 +2798,8 @@ extension on TranslationsEs { 'metadataEdit.libraryDefault' => 'Predeterminado de biblioteca', 'metadataEdit.accountDefault' => 'Predeterminado de cuenta', 'metadataEdit.seriesDefault' => 'Predeterminado de serie', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Orden de episodios', 'metadataEdit.oldestFirst' => 'Más antiguos primero', 'metadataEdit.newestFirst' => 'Más recientes primero', @@ -2788,8 +2810,6 @@ extension on TranslationsEs { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episodios añadidos en los últimos ${count} días', 'metadataEdit.deleteAfterPlaying' => 'Eliminar episodios después de reproducir', 'metadataEdit.never' => 'Nunca', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Después de un día', 'metadataEdit.afterAWeek' => 'Después de una semana', 'metadataEdit.afterAMonth' => 'Después de un mes', diff --git a/lib/i18n/strings_fr.g.dart b/lib/i18n/strings_fr.g.dart index 16740856..0b4f10ac 100644 --- a/lib/i18n/strings_fr.g.dart +++ b/lib/i18n/strings_fr.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsFr extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Date d\'ajout'; @override String get releaseDate => 'Date de sortie'; @override String get rating => 'Note'; + @override String get communityRating => 'Note communautaire'; + @override String get criticRating => 'Note critique'; @override String get lastPlayed => 'Dernière lecture'; + @override String get datePlayed => 'Date de lecture'; @override String get playCount => 'Lectures'; + @override String get productionYear => 'Année de production'; + @override String get runtime => 'Durée'; + @override String get officialRating => 'Classification officielle'; + @override String get premiereDate => 'Date de première'; + @override String get startDate => 'Date de début'; + @override String get airTime => 'Heure de diffusion'; + @override String get studio => 'Studio'; @override String get random => 'Aléatoire'; @override String get dateShared => 'Date de partage'; @override String get latestEpisodeAirDate => 'Dernière date de diffusion'; @@ -2400,8 +2410,18 @@ extension on TranslationsFr { 'libraries.sortLabels.dateAdded' => 'Date d\'ajout', 'libraries.sortLabels.releaseDate' => 'Date de sortie', 'libraries.sortLabels.rating' => 'Note', + 'libraries.sortLabels.communityRating' => 'Note communautaire', + 'libraries.sortLabels.criticRating' => 'Note critique', 'libraries.sortLabels.lastPlayed' => 'Dernière lecture', + 'libraries.sortLabels.datePlayed' => 'Date de lecture', 'libraries.sortLabels.playCount' => 'Lectures', + 'libraries.sortLabels.productionYear' => 'Année de production', + 'libraries.sortLabels.runtime' => 'Durée', + 'libraries.sortLabels.officialRating' => 'Classification officielle', + 'libraries.sortLabels.premiereDate' => 'Date de première', + 'libraries.sortLabels.startDate' => 'Date de début', + 'libraries.sortLabels.airTime' => 'Heure de diffusion', + 'libraries.sortLabels.studio' => 'Studio', 'libraries.sortLabels.random' => 'Aléatoire', 'libraries.sortLabels.dateShared' => 'Date de partage', 'libraries.sortLabels.latestEpisodeAirDate' => 'Dernière date de diffusion', @@ -2778,6 +2798,8 @@ extension on TranslationsFr { 'metadataEdit.libraryDefault' => 'Par défaut de la bibliothèque', 'metadataEdit.accountDefault' => 'Par défaut du compte', 'metadataEdit.seriesDefault' => 'Par défaut de la série', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Tri des épisodes', 'metadataEdit.oldestFirst' => 'Plus anciens en premier', 'metadataEdit.newestFirst' => 'Plus récents en premier', @@ -2788,8 +2810,6 @@ extension on TranslationsFr { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Épisodes ajoutés ces ${count} derniers jours', 'metadataEdit.deleteAfterPlaying' => 'Supprimer les épisodes après lecture', 'metadataEdit.never' => 'Jamais', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Après un jour', 'metadataEdit.afterAWeek' => 'Après une semaine', 'metadataEdit.afterAMonth' => 'Après un mois', diff --git a/lib/i18n/strings_it.g.dart b/lib/i18n/strings_it.g.dart index 56d94f01..b23dd518 100644 --- a/lib/i18n/strings_it.g.dart +++ b/lib/i18n/strings_it.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsIt extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Data di aggiunta'; @override String get releaseDate => 'Data di uscita'; @override String get rating => 'Valutazione'; + @override String get communityRating => 'Valutazione della community'; + @override String get criticRating => 'Valutazione critica'; @override String get lastPlayed => 'Ultima riproduzione'; + @override String get datePlayed => 'Data di riproduzione'; @override String get playCount => 'Riproduzioni'; + @override String get productionYear => 'Anno di produzione'; + @override String get runtime => 'Durata'; + @override String get officialRating => 'Classificazione ufficiale'; + @override String get premiereDate => 'Data di première'; + @override String get startDate => 'Data di inizio'; + @override String get airTime => 'Orario di messa in onda'; + @override String get studio => 'Studio'; @override String get random => 'Casuale'; @override String get dateShared => 'Data di condivisione'; @override String get latestEpisodeAirDate => 'Data ultima messa in onda'; @@ -2400,8 +2410,18 @@ extension on TranslationsIt { 'libraries.sortLabels.dateAdded' => 'Data di aggiunta', 'libraries.sortLabels.releaseDate' => 'Data di uscita', 'libraries.sortLabels.rating' => 'Valutazione', + 'libraries.sortLabels.communityRating' => 'Valutazione della community', + 'libraries.sortLabels.criticRating' => 'Valutazione critica', 'libraries.sortLabels.lastPlayed' => 'Ultima riproduzione', + 'libraries.sortLabels.datePlayed' => 'Data di riproduzione', 'libraries.sortLabels.playCount' => 'Riproduzioni', + 'libraries.sortLabels.productionYear' => 'Anno di produzione', + 'libraries.sortLabels.runtime' => 'Durata', + 'libraries.sortLabels.officialRating' => 'Classificazione ufficiale', + 'libraries.sortLabels.premiereDate' => 'Data di première', + 'libraries.sortLabels.startDate' => 'Data di inizio', + 'libraries.sortLabels.airTime' => 'Orario di messa in onda', + 'libraries.sortLabels.studio' => 'Studio', 'libraries.sortLabels.random' => 'Casuale', 'libraries.sortLabels.dateShared' => 'Data di condivisione', 'libraries.sortLabels.latestEpisodeAirDate' => 'Data ultima messa in onda', @@ -2778,6 +2798,8 @@ extension on TranslationsIt { 'metadataEdit.libraryDefault' => 'Predefinito libreria', 'metadataEdit.accountDefault' => 'Predefinito account', 'metadataEdit.seriesDefault' => 'Predefinito serie', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Ordinamento episodi', 'metadataEdit.oldestFirst' => 'Più vecchi prima', 'metadataEdit.newestFirst' => 'Più recenti prima', @@ -2788,8 +2810,6 @@ extension on TranslationsIt { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episodi aggiunti negli ultimi ${count} giorni', 'metadataEdit.deleteAfterPlaying' => 'Elimina episodi dopo la riproduzione', 'metadataEdit.never' => 'Mai', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Dopo un giorno', 'metadataEdit.afterAWeek' => 'Dopo una settimana', 'metadataEdit.afterAMonth' => 'Dopo un mese', diff --git a/lib/i18n/strings_ja.g.dart b/lib/i18n/strings_ja.g.dart index 8ccd7214..a9256351 100644 --- a/lib/i18n/strings_ja.g.dart +++ b/lib/i18n/strings_ja.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsJa extends TranslationsLibrariesSortLabels @override String get dateAdded => '追加日'; @override String get releaseDate => 'リリース日'; @override String get rating => '評価'; + @override String get communityRating => 'コミュニティ評価'; + @override String get criticRating => '批評家評価'; @override String get lastPlayed => '最終再生'; + @override String get datePlayed => '再生日'; @override String get playCount => '再生回数'; + @override String get productionYear => '製作年'; + @override String get runtime => '再生時間'; + @override String get officialRating => '公式レーティング'; + @override String get premiereDate => 'プレミア日'; + @override String get startDate => '開始日'; + @override String get airTime => '放送時刻'; + @override String get studio => 'スタジオ'; @override String get random => 'ランダム'; @override String get dateShared => '共有日'; @override String get latestEpisodeAirDate => '最新エピソード放送日'; @@ -2400,8 +2410,18 @@ extension on TranslationsJa { 'libraries.sortLabels.dateAdded' => '追加日', 'libraries.sortLabels.releaseDate' => 'リリース日', 'libraries.sortLabels.rating' => '評価', + 'libraries.sortLabels.communityRating' => 'コミュニティ評価', + 'libraries.sortLabels.criticRating' => '批評家評価', 'libraries.sortLabels.lastPlayed' => '最終再生', + 'libraries.sortLabels.datePlayed' => '再生日', 'libraries.sortLabels.playCount' => '再生回数', + 'libraries.sortLabels.productionYear' => '製作年', + 'libraries.sortLabels.runtime' => '再生時間', + 'libraries.sortLabels.officialRating' => '公式レーティング', + 'libraries.sortLabels.premiereDate' => 'プレミア日', + 'libraries.sortLabels.startDate' => '開始日', + 'libraries.sortLabels.airTime' => '放送時刻', + 'libraries.sortLabels.studio' => 'スタジオ', 'libraries.sortLabels.random' => 'ランダム', 'libraries.sortLabels.dateShared' => '共有日', 'libraries.sortLabels.latestEpisodeAirDate' => '最新エピソード放送日', @@ -2778,6 +2798,8 @@ extension on TranslationsJa { 'metadataEdit.libraryDefault' => 'ライブラリのデフォルト', 'metadataEdit.accountDefault' => 'アカウントのデフォルト', 'metadataEdit.seriesDefault' => 'シリーズのデフォルト', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'エピソードの並べ替え', 'metadataEdit.oldestFirst' => '古い順', 'metadataEdit.newestFirst' => '新しい順', @@ -2788,8 +2810,6 @@ extension on TranslationsJa { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => '過去${count}日間に追加されたエピソード', 'metadataEdit.deleteAfterPlaying' => '再生後にエピソードを削除', 'metadataEdit.never' => 'しない', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => '1日後', 'metadataEdit.afterAWeek' => '1週間後', 'metadataEdit.afterAMonth' => '1ヶ月後', diff --git a/lib/i18n/strings_ko.g.dart b/lib/i18n/strings_ko.g.dart index b1eb4e9e..b7f342e7 100644 --- a/lib/i18n/strings_ko.g.dart +++ b/lib/i18n/strings_ko.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsKo extends TranslationsLibrariesSortLabels @override String get dateAdded => '추가된 날짜'; @override String get releaseDate => '출시일'; @override String get rating => '평점'; + @override String get communityRating => '커뮤니티 평점'; + @override String get criticRating => '평론가 평점'; @override String get lastPlayed => '마지막 재생'; + @override String get datePlayed => '재생일'; @override String get playCount => '재생 횟수'; + @override String get productionYear => '제작 연도'; + @override String get runtime => '재생 시간'; + @override String get officialRating => '공식 등급'; + @override String get premiereDate => '최초 공개일'; + @override String get startDate => '시작일'; + @override String get airTime => '방영 시간'; + @override String get studio => '스튜디오'; @override String get random => '무작위'; @override String get dateShared => '공유된 날짜'; @override String get latestEpisodeAirDate => '최신 에피소드 방영일'; @@ -2400,8 +2410,18 @@ extension on TranslationsKo { 'libraries.sortLabels.dateAdded' => '추가된 날짜', 'libraries.sortLabels.releaseDate' => '출시일', 'libraries.sortLabels.rating' => '평점', + 'libraries.sortLabels.communityRating' => '커뮤니티 평점', + 'libraries.sortLabels.criticRating' => '평론가 평점', 'libraries.sortLabels.lastPlayed' => '마지막 재생', + 'libraries.sortLabels.datePlayed' => '재생일', 'libraries.sortLabels.playCount' => '재생 횟수', + 'libraries.sortLabels.productionYear' => '제작 연도', + 'libraries.sortLabels.runtime' => '재생 시간', + 'libraries.sortLabels.officialRating' => '공식 등급', + 'libraries.sortLabels.premiereDate' => '최초 공개일', + 'libraries.sortLabels.startDate' => '시작일', + 'libraries.sortLabels.airTime' => '방영 시간', + 'libraries.sortLabels.studio' => '스튜디오', 'libraries.sortLabels.random' => '무작위', 'libraries.sortLabels.dateShared' => '공유된 날짜', 'libraries.sortLabels.latestEpisodeAirDate' => '최신 에피소드 방영일', @@ -2778,6 +2798,8 @@ extension on TranslationsKo { 'metadataEdit.libraryDefault' => '라이브러리 기본값', 'metadataEdit.accountDefault' => '계정 기본값', 'metadataEdit.seriesDefault' => '시리즈 기본값', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => '에피소드 정렬', 'metadataEdit.oldestFirst' => '오래된 순', 'metadataEdit.newestFirst' => '최신 순', @@ -2788,8 +2810,6 @@ extension on TranslationsKo { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => '최근 ${count}일 내 추가된 에피소드', 'metadataEdit.deleteAfterPlaying' => '재생 후 에피소드 삭제', 'metadataEdit.never' => '안 함', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => '하루 후', 'metadataEdit.afterAWeek' => '일주일 후', 'metadataEdit.afterAMonth' => '한 달 후', diff --git a/lib/i18n/strings_nb.g.dart b/lib/i18n/strings_nb.g.dart index 92651597..54c1953c 100644 --- a/lib/i18n/strings_nb.g.dart +++ b/lib/i18n/strings_nb.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsNb extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Lagt til-dato'; @override String get releaseDate => 'Utgivelsesdato'; @override String get rating => 'Vurdering'; + @override String get communityRating => 'Fellesskapsvurdering'; + @override String get criticRating => 'Kritikervurdering'; @override String get lastPlayed => 'Sist spilt'; + @override String get datePlayed => 'Avspillingsdato'; @override String get playCount => 'Avspillinger'; + @override String get productionYear => 'Produksjonsår'; + @override String get runtime => 'Varighet'; + @override String get officialRating => 'Offisiell vurdering'; + @override String get premiereDate => 'Premieredato'; + @override String get startDate => 'Startdato'; + @override String get airTime => 'Sendetid'; + @override String get studio => 'Studio'; @override String get random => 'Tilfeldig'; @override String get dateShared => 'Delingsdato'; @override String get latestEpisodeAirDate => 'Siste episodes sendedato'; @@ -2400,8 +2410,18 @@ extension on TranslationsNb { 'libraries.sortLabels.dateAdded' => 'Lagt til-dato', 'libraries.sortLabels.releaseDate' => 'Utgivelsesdato', 'libraries.sortLabels.rating' => 'Vurdering', + 'libraries.sortLabels.communityRating' => 'Fellesskapsvurdering', + 'libraries.sortLabels.criticRating' => 'Kritikervurdering', 'libraries.sortLabels.lastPlayed' => 'Sist spilt', + 'libraries.sortLabels.datePlayed' => 'Avspillingsdato', 'libraries.sortLabels.playCount' => 'Avspillinger', + 'libraries.sortLabels.productionYear' => 'Produksjonsår', + 'libraries.sortLabels.runtime' => 'Varighet', + 'libraries.sortLabels.officialRating' => 'Offisiell vurdering', + 'libraries.sortLabels.premiereDate' => 'Premieredato', + 'libraries.sortLabels.startDate' => 'Startdato', + 'libraries.sortLabels.airTime' => 'Sendetid', + 'libraries.sortLabels.studio' => 'Studio', 'libraries.sortLabels.random' => 'Tilfeldig', 'libraries.sortLabels.dateShared' => 'Delingsdato', 'libraries.sortLabels.latestEpisodeAirDate' => 'Siste episodes sendedato', @@ -2778,6 +2798,8 @@ extension on TranslationsNb { 'metadataEdit.libraryDefault' => 'Bibliotekstandard', 'metadataEdit.accountDefault' => 'Kontostandard', 'metadataEdit.seriesDefault' => 'Seriestandard', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Episodesortering', 'metadataEdit.oldestFirst' => 'Eldste først', 'metadataEdit.newestFirst' => 'Nyeste først', @@ -2788,8 +2810,6 @@ extension on TranslationsNb { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episoder lagt til de siste ${count} dagene', 'metadataEdit.deleteAfterPlaying' => 'Slett episoder etter avspilling', 'metadataEdit.never' => 'Aldri', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Etter en dag', 'metadataEdit.afterAWeek' => 'Etter en uke', 'metadataEdit.afterAMonth' => 'Etter en måned', diff --git a/lib/i18n/strings_nl.g.dart b/lib/i18n/strings_nl.g.dart index 1a12e672..ec8ee5a9 100644 --- a/lib/i18n/strings_nl.g.dart +++ b/lib/i18n/strings_nl.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsNl extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Toegevoegd op'; @override String get releaseDate => 'Uitgavedatum'; @override String get rating => 'Beoordeling'; + @override String get communityRating => 'Communitybeoordeling'; + @override String get criticRating => 'Criticusbeoordeling'; @override String get lastPlayed => 'Laatst afgespeeld'; + @override String get datePlayed => 'Afspeeldatum'; @override String get playCount => 'Aantal afspelingen'; + @override String get productionYear => 'Productiejaar'; + @override String get runtime => 'Speelduur'; + @override String get officialRating => 'Officiële beoordeling'; + @override String get premiereDate => 'Premièredatum'; + @override String get startDate => 'Begindatum'; + @override String get airTime => 'Uitzendtijd'; + @override String get studio => 'Studio'; @override String get random => 'Willekeurig'; @override String get dateShared => 'Gedeeld op'; @override String get latestEpisodeAirDate => 'Laatste afleveringsuitzending'; @@ -2400,8 +2410,18 @@ extension on TranslationsNl { 'libraries.sortLabels.dateAdded' => 'Toegevoegd op', 'libraries.sortLabels.releaseDate' => 'Uitgavedatum', 'libraries.sortLabels.rating' => 'Beoordeling', + 'libraries.sortLabels.communityRating' => 'Communitybeoordeling', + 'libraries.sortLabels.criticRating' => 'Criticusbeoordeling', 'libraries.sortLabels.lastPlayed' => 'Laatst afgespeeld', + 'libraries.sortLabels.datePlayed' => 'Afspeeldatum', 'libraries.sortLabels.playCount' => 'Aantal afspelingen', + 'libraries.sortLabels.productionYear' => 'Productiejaar', + 'libraries.sortLabels.runtime' => 'Speelduur', + 'libraries.sortLabels.officialRating' => 'Officiële beoordeling', + 'libraries.sortLabels.premiereDate' => 'Premièredatum', + 'libraries.sortLabels.startDate' => 'Begindatum', + 'libraries.sortLabels.airTime' => 'Uitzendtijd', + 'libraries.sortLabels.studio' => 'Studio', 'libraries.sortLabels.random' => 'Willekeurig', 'libraries.sortLabels.dateShared' => 'Gedeeld op', 'libraries.sortLabels.latestEpisodeAirDate' => 'Laatste afleveringsuitzending', @@ -2778,6 +2798,8 @@ extension on TranslationsNl { 'metadataEdit.libraryDefault' => 'Bibliotheekstandaard', 'metadataEdit.accountDefault' => 'Accountstandaard', 'metadataEdit.seriesDefault' => 'Seriestandaard', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Afleveringen sorteren', 'metadataEdit.oldestFirst' => 'Oudste eerst', 'metadataEdit.newestFirst' => 'Nieuwste eerst', @@ -2788,8 +2810,6 @@ extension on TranslationsNl { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Afleveringen toegevoegd in de afgelopen ${count} dagen', 'metadataEdit.deleteAfterPlaying' => 'Afleveringen verwijderen na afspelen', 'metadataEdit.never' => 'Nooit', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Na een dag', 'metadataEdit.afterAWeek' => 'Na een week', 'metadataEdit.afterAMonth' => 'Na een maand', diff --git a/lib/i18n/strings_pl.g.dart b/lib/i18n/strings_pl.g.dart index 93e9323d..db5c1709 100644 --- a/lib/i18n/strings_pl.g.dart +++ b/lib/i18n/strings_pl.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsPl extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Data dodania'; @override String get releaseDate => 'Data premiery'; @override String get rating => 'Ocena'; + @override String get communityRating => 'Ocena społeczności'; + @override String get criticRating => 'Ocena krytyków'; @override String get lastPlayed => 'Ostatnio odtwarzane'; + @override String get datePlayed => 'Data odtworzenia'; @override String get playCount => 'Liczba odtworzeń'; + @override String get productionYear => 'Rok produkcji'; + @override String get runtime => 'Czas trwania'; + @override String get officialRating => 'Oficjalna klasyfikacja'; + @override String get premiereDate => 'Data premiery'; + @override String get startDate => 'Data rozpoczęcia'; + @override String get airTime => 'Godzina emisji'; + @override String get studio => 'Studio'; @override String get random => 'Losowo'; @override String get dateShared => 'Data udostępnienia'; @override String get latestEpisodeAirDate => 'Data emisji ostatniego odcinka'; @@ -2400,8 +2410,18 @@ extension on TranslationsPl { 'libraries.sortLabels.dateAdded' => 'Data dodania', 'libraries.sortLabels.releaseDate' => 'Data premiery', 'libraries.sortLabels.rating' => 'Ocena', + 'libraries.sortLabels.communityRating' => 'Ocena społeczności', + 'libraries.sortLabels.criticRating' => 'Ocena krytyków', 'libraries.sortLabels.lastPlayed' => 'Ostatnio odtwarzane', + 'libraries.sortLabels.datePlayed' => 'Data odtworzenia', 'libraries.sortLabels.playCount' => 'Liczba odtworzeń', + 'libraries.sortLabels.productionYear' => 'Rok produkcji', + 'libraries.sortLabels.runtime' => 'Czas trwania', + 'libraries.sortLabels.officialRating' => 'Oficjalna klasyfikacja', + 'libraries.sortLabels.premiereDate' => 'Data premiery', + 'libraries.sortLabels.startDate' => 'Data rozpoczęcia', + 'libraries.sortLabels.airTime' => 'Godzina emisji', + 'libraries.sortLabels.studio' => 'Studio', 'libraries.sortLabels.random' => 'Losowo', 'libraries.sortLabels.dateShared' => 'Data udostępnienia', 'libraries.sortLabels.latestEpisodeAirDate' => 'Data emisji ostatniego odcinka', @@ -2778,6 +2798,8 @@ extension on TranslationsPl { 'metadataEdit.libraryDefault' => 'Domyślne biblioteki', 'metadataEdit.accountDefault' => 'Domyślne konta', 'metadataEdit.seriesDefault' => 'Domyślne serialu', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Sortowanie odcinków', 'metadataEdit.oldestFirst' => 'Najstarsze najpierw', 'metadataEdit.newestFirst' => 'Najnowsze najpierw', @@ -2788,8 +2810,6 @@ extension on TranslationsPl { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Odcinki dodane w ciągu ostatnich ${count} dni', 'metadataEdit.deleteAfterPlaying' => 'Usuń odcinki po odtworzeniu', 'metadataEdit.never' => 'Nigdy', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Po jednym dniu', 'metadataEdit.afterAWeek' => 'Po tygodniu', 'metadataEdit.afterAMonth' => 'Po miesiącu', diff --git a/lib/i18n/strings_pt.g.dart b/lib/i18n/strings_pt.g.dart index 433d4062..9119d01c 100644 --- a/lib/i18n/strings_pt.g.dart +++ b/lib/i18n/strings_pt.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsPt extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Data de adição'; @override String get releaseDate => 'Data de lançamento'; @override String get rating => 'Avaliação'; + @override String get communityRating => 'Avaliação da comunidade'; + @override String get criticRating => 'Avaliação da crítica'; @override String get lastPlayed => 'Última reprodução'; + @override String get datePlayed => 'Data de reprodução'; @override String get playCount => 'Reproduções'; + @override String get productionYear => 'Ano de produção'; + @override String get runtime => 'Duração'; + @override String get officialRating => 'Classificação oficial'; + @override String get premiereDate => 'Data de estreia'; + @override String get startDate => 'Data de início'; + @override String get airTime => 'Horário de exibição'; + @override String get studio => 'Estúdio'; @override String get random => 'Aleatório'; @override String get dateShared => 'Data de compartilhamento'; @override String get latestEpisodeAirDate => 'Última data de exibição do episódio'; @@ -2400,8 +2410,18 @@ extension on TranslationsPt { 'libraries.sortLabels.dateAdded' => 'Data de adição', 'libraries.sortLabels.releaseDate' => 'Data de lançamento', 'libraries.sortLabels.rating' => 'Avaliação', + 'libraries.sortLabels.communityRating' => 'Avaliação da comunidade', + 'libraries.sortLabels.criticRating' => 'Avaliação da crítica', 'libraries.sortLabels.lastPlayed' => 'Última reprodução', + 'libraries.sortLabels.datePlayed' => 'Data de reprodução', 'libraries.sortLabels.playCount' => 'Reproduções', + 'libraries.sortLabels.productionYear' => 'Ano de produção', + 'libraries.sortLabels.runtime' => 'Duração', + 'libraries.sortLabels.officialRating' => 'Classificação oficial', + 'libraries.sortLabels.premiereDate' => 'Data de estreia', + 'libraries.sortLabels.startDate' => 'Data de início', + 'libraries.sortLabels.airTime' => 'Horário de exibição', + 'libraries.sortLabels.studio' => 'Estúdio', 'libraries.sortLabels.random' => 'Aleatório', 'libraries.sortLabels.dateShared' => 'Data de compartilhamento', 'libraries.sortLabels.latestEpisodeAirDate' => 'Última data de exibição do episódio', @@ -2778,6 +2798,8 @@ extension on TranslationsPt { 'metadataEdit.libraryDefault' => 'Padrão da biblioteca', 'metadataEdit.accountDefault' => 'Padrão da conta', 'metadataEdit.seriesDefault' => 'Padrão da série', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Ordenação de Episódios', 'metadataEdit.oldestFirst' => 'Mais antigos primeiro', 'metadataEdit.newestFirst' => 'Mais recentes primeiro', @@ -2788,8 +2810,6 @@ extension on TranslationsPt { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Episódios adicionados nos últimos ${count} dias', 'metadataEdit.deleteAfterPlaying' => 'Excluir Episódios Após Reproduzir', 'metadataEdit.never' => 'Nunca', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Após um dia', 'metadataEdit.afterAWeek' => 'Após uma semana', 'metadataEdit.afterAMonth' => 'Após um mês', diff --git a/lib/i18n/strings_ru.g.dart b/lib/i18n/strings_ru.g.dart index d3158d23..5249c4dc 100644 --- a/lib/i18n/strings_ru.g.dart +++ b/lib/i18n/strings_ru.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsRu extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Дата добавления'; @override String get releaseDate => 'Дата выхода'; @override String get rating => 'Рейтинг'; + @override String get communityRating => 'Оценка сообщества'; + @override String get criticRating => 'Оценка критиков'; @override String get lastPlayed => 'Последний просмотр'; + @override String get datePlayed => 'Дата просмотра'; @override String get playCount => 'Количество просмотров'; + @override String get productionYear => 'Год производства'; + @override String get runtime => 'Длительность'; + @override String get officialRating => 'Официальный рейтинг'; + @override String get premiereDate => 'Дата премьеры'; + @override String get startDate => 'Дата начала'; + @override String get airTime => 'Время эфира'; + @override String get studio => 'Студия'; @override String get random => 'Случайно'; @override String get dateShared => 'Дата открытия доступа'; @override String get latestEpisodeAirDate => 'Дата выхода последнего эпизода'; @@ -2400,8 +2410,18 @@ extension on TranslationsRu { 'libraries.sortLabels.dateAdded' => 'Дата добавления', 'libraries.sortLabels.releaseDate' => 'Дата выхода', 'libraries.sortLabels.rating' => 'Рейтинг', + 'libraries.sortLabels.communityRating' => 'Оценка сообщества', + 'libraries.sortLabels.criticRating' => 'Оценка критиков', 'libraries.sortLabels.lastPlayed' => 'Последний просмотр', + 'libraries.sortLabels.datePlayed' => 'Дата просмотра', 'libraries.sortLabels.playCount' => 'Количество просмотров', + 'libraries.sortLabels.productionYear' => 'Год производства', + 'libraries.sortLabels.runtime' => 'Длительность', + 'libraries.sortLabels.officialRating' => 'Официальный рейтинг', + 'libraries.sortLabels.premiereDate' => 'Дата премьеры', + 'libraries.sortLabels.startDate' => 'Дата начала', + 'libraries.sortLabels.airTime' => 'Время эфира', + 'libraries.sortLabels.studio' => 'Студия', 'libraries.sortLabels.random' => 'Случайно', 'libraries.sortLabels.dateShared' => 'Дата открытия доступа', 'libraries.sortLabels.latestEpisodeAirDate' => 'Дата выхода последнего эпизода', @@ -2778,6 +2798,8 @@ extension on TranslationsRu { 'metadataEdit.libraryDefault' => 'По умолчанию библиотеки', 'metadataEdit.accountDefault' => 'По умолчанию аккаунта', 'metadataEdit.seriesDefault' => 'По умолчанию сериала', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Сортировка эпизодов', 'metadataEdit.oldestFirst' => 'Сначала старые', 'metadataEdit.newestFirst' => 'Сначала новые', @@ -2788,8 +2810,6 @@ extension on TranslationsRu { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Эпизоды, добавленные за последние ${count} дней', 'metadataEdit.deleteAfterPlaying' => 'Удалять эпизоды после просмотра', 'metadataEdit.never' => 'Никогда', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Через день', 'metadataEdit.afterAWeek' => 'Через неделю', 'metadataEdit.afterAMonth' => 'Через месяц', diff --git a/lib/i18n/strings_sv.g.dart b/lib/i18n/strings_sv.g.dart index 655f4610..e0cdfe10 100644 --- a/lib/i18n/strings_sv.g.dart +++ b/lib/i18n/strings_sv.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsSv extends TranslationsLibrariesSortLabels @override String get dateAdded => 'Tillagd'; @override String get releaseDate => 'Releasedatum'; @override String get rating => 'Betyg'; + @override String get communityRating => 'Användarbetyg'; + @override String get criticRating => 'Kritikerbetyg'; @override String get lastPlayed => 'Senast spelad'; + @override String get datePlayed => 'Speldatum'; @override String get playCount => 'Antal spelningar'; + @override String get productionYear => 'Produktionsår'; + @override String get runtime => 'Speltid'; + @override String get officialRating => 'Officiell klassificering'; + @override String get premiereDate => 'Premiärdatum'; + @override String get startDate => 'Startdatum'; + @override String get airTime => 'Sändningstid'; + @override String get studio => 'Studio'; @override String get random => 'Slumpmässigt'; @override String get dateShared => 'Delningsdatum'; @override String get latestEpisodeAirDate => 'Senaste avsnittets sändningsdatum'; @@ -2400,8 +2410,18 @@ extension on TranslationsSv { 'libraries.sortLabels.dateAdded' => 'Tillagd', 'libraries.sortLabels.releaseDate' => 'Releasedatum', 'libraries.sortLabels.rating' => 'Betyg', + 'libraries.sortLabels.communityRating' => 'Användarbetyg', + 'libraries.sortLabels.criticRating' => 'Kritikerbetyg', 'libraries.sortLabels.lastPlayed' => 'Senast spelad', + 'libraries.sortLabels.datePlayed' => 'Speldatum', 'libraries.sortLabels.playCount' => 'Antal spelningar', + 'libraries.sortLabels.productionYear' => 'Produktionsår', + 'libraries.sortLabels.runtime' => 'Speltid', + 'libraries.sortLabels.officialRating' => 'Officiell klassificering', + 'libraries.sortLabels.premiereDate' => 'Premiärdatum', + 'libraries.sortLabels.startDate' => 'Startdatum', + 'libraries.sortLabels.airTime' => 'Sändningstid', + 'libraries.sortLabels.studio' => 'Studio', 'libraries.sortLabels.random' => 'Slumpmässigt', 'libraries.sortLabels.dateShared' => 'Delningsdatum', 'libraries.sortLabels.latestEpisodeAirDate' => 'Senaste avsnittets sändningsdatum', @@ -2778,6 +2798,8 @@ extension on TranslationsSv { 'metadataEdit.libraryDefault' => 'Biblioteksstandard', 'metadataEdit.accountDefault' => 'Kontostandard', 'metadataEdit.seriesDefault' => 'Seriestandard', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => 'Avsnittsortering', 'metadataEdit.oldestFirst' => 'Äldst först', 'metadataEdit.newestFirst' => 'Nyast först', @@ -2788,8 +2810,6 @@ extension on TranslationsSv { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => 'Avsnitt tillagda de senaste ${count} dagarna', 'metadataEdit.deleteAfterPlaying' => 'Ta bort avsnitt efter uppspelning', 'metadataEdit.never' => 'Aldrig', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => 'Efter en dag', 'metadataEdit.afterAWeek' => 'Efter en vecka', 'metadataEdit.afterAMonth' => 'Efter en månad', diff --git a/lib/i18n/strings_zh.g.dart b/lib/i18n/strings_zh.g.dart index f3b09b6e..60c95911 100644 --- a/lib/i18n/strings_zh.g.dart +++ b/lib/i18n/strings_zh.g.dart @@ -1606,8 +1606,18 @@ class _TranslationsLibrariesSortLabelsZh extends TranslationsLibrariesSortLabels @override String get dateAdded => '添加日期'; @override String get releaseDate => '发行日期'; @override String get rating => '评分'; + @override String get communityRating => '社区评分'; + @override String get criticRating => '影评人评分'; @override String get lastPlayed => '最近播放'; + @override String get datePlayed => '播放日期'; @override String get playCount => '播放次数'; + @override String get productionYear => '制作年份'; + @override String get runtime => '时长'; + @override String get officialRating => '官方分级'; + @override String get premiereDate => '首映日期'; + @override String get startDate => '开始日期'; + @override String get airTime => '播出时间'; + @override String get studio => '工作室'; @override String get random => '随机'; @override String get dateShared => '共享日期'; @override String get latestEpisodeAirDate => '最新一集播出日期'; @@ -2400,8 +2410,18 @@ extension on TranslationsZh { 'libraries.sortLabels.dateAdded' => '添加日期', 'libraries.sortLabels.releaseDate' => '发行日期', 'libraries.sortLabels.rating' => '评分', + 'libraries.sortLabels.communityRating' => '社区评分', + 'libraries.sortLabels.criticRating' => '影评人评分', 'libraries.sortLabels.lastPlayed' => '最近播放', + 'libraries.sortLabels.datePlayed' => '播放日期', 'libraries.sortLabels.playCount' => '播放次数', + 'libraries.sortLabels.productionYear' => '制作年份', + 'libraries.sortLabels.runtime' => '时长', + 'libraries.sortLabels.officialRating' => '官方分级', + 'libraries.sortLabels.premiereDate' => '首映日期', + 'libraries.sortLabels.startDate' => '开始日期', + 'libraries.sortLabels.airTime' => '播出时间', + 'libraries.sortLabels.studio' => '工作室', 'libraries.sortLabels.random' => '随机', 'libraries.sortLabels.dateShared' => '共享日期', 'libraries.sortLabels.latestEpisodeAirDate' => '最新一集播出日期', @@ -2778,6 +2798,8 @@ extension on TranslationsZh { 'metadataEdit.libraryDefault' => '媒体库默认', 'metadataEdit.accountDefault' => '账户默认', 'metadataEdit.seriesDefault' => '剧集默认', + _ => null, + } ?? switch (path) { 'metadataEdit.episodeSorting' => '剧集排序', 'metadataEdit.oldestFirst' => '最旧优先', 'metadataEdit.newestFirst' => '最新优先', @@ -2788,8 +2810,6 @@ extension on TranslationsZh { 'metadataEdit.episodesAddedPastDays' => ({required Object count}) => '过去 ${count} 天内添加的剧集', 'metadataEdit.deleteAfterPlaying' => '播放后删除剧集', 'metadataEdit.never' => '从不', - _ => null, - } ?? switch (path) { 'metadataEdit.afterADay' => '一天后', 'metadataEdit.afterAWeek' => '一周后', 'metadataEdit.afterAMonth' => '一个月后', diff --git a/lib/i18n/sv.i18n.json b/lib/i18n/sv.i18n.json index 1b6983fc..55c01bbb 100644 --- a/lib/i18n/sv.i18n.json +++ b/lib/i18n/sv.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "Tillagd", "releaseDate": "Releasedatum", "rating": "Betyg", + "communityRating": "Användarbetyg", + "criticRating": "Kritikerbetyg", "lastPlayed": "Senast spelad", + "datePlayed": "Speldatum", "playCount": "Antal spelningar", + "productionYear": "Produktionsår", + "runtime": "Speltid", + "officialRating": "Officiell klassificering", + "premiereDate": "Premiärdatum", + "startDate": "Startdatum", + "airTime": "Sändningstid", + "studio": "Studio", "random": "Slumpmässigt", "dateShared": "Delningsdatum", "latestEpisodeAirDate": "Senaste avsnittets sändningsdatum" diff --git a/lib/i18n/zh.i18n.json b/lib/i18n/zh.i18n.json index 2906bd18..8ddf98ce 100644 --- a/lib/i18n/zh.i18n.json +++ b/lib/i18n/zh.i18n.json @@ -691,8 +691,18 @@ "dateAdded": "添加日期", "releaseDate": "发行日期", "rating": "评分", + "communityRating": "社区评分", + "criticRating": "影评人评分", "lastPlayed": "最近播放", + "datePlayed": "播放日期", "playCount": "播放次数", + "productionYear": "制作年份", + "runtime": "时长", + "officialRating": "官方分级", + "premiereDate": "首映日期", + "startDate": "开始日期", + "airTime": "播出时间", + "studio": "工作室", "random": "随机", "dateShared": "共享日期", "latestEpisodeAirDate": "最新一集播出日期" diff --git a/lib/services/jellyfin_client/parts/browse.dart b/lib/services/jellyfin_client/parts/browse.dart index d17c8a7c..41afa544 100644 --- a/lib/services/jellyfin_client/parts/browse.dart +++ b/lib/services/jellyfin_client/parts/browse.dart @@ -181,33 +181,36 @@ mixin _JellyfinBrowseMethods on MediaServerCacheMixin { } /// Jellyfin has no `/sorts` listing endpoint, so this returns a hardcoded - /// list mirroring the Plex fallback set. Keys are the backend-neutral names - /// understood by [JellyfinLibraryQueryTranslator] (`title`, `addedAt`, …); - /// `_buildFilterParams` emits them as `addedAt:desc` etc., and - /// [LibraryQueryTranslator.parseSortParam] turns them back into a - /// [LibrarySort] before the translator maps them to Jellyfin's - /// `SortBy`/`SortOrder`. + /// list based on the broad sort set Streamyfin exposes. Keys remain + /// backend-neutral where Plezy already had saved preferences (`rating`, + /// `lastViewedAt`, …); [JellyfinLibraryQueryTranslator] maps them to + /// Jellyfin's `SortBy`/`SortOrder` at request time. @override Future> fetchSortOptions(String libraryId, {String? libraryType}) async { return [ MediaSort(key: 'title', descKey: 'title:desc', title: t.libraries.sortLabels.title, defaultDirection: 'asc'), + MediaSort( + key: 'rating', + descKey: 'rating:desc', + title: t.libraries.sortLabels.communityRating, + defaultDirection: 'desc', + ), + MediaSort( + key: 'criticRating', + descKey: 'criticRating:desc', + title: t.libraries.sortLabels.criticRating, + defaultDirection: 'desc', + ), MediaSort( key: 'addedAt', descKey: 'addedAt:desc', title: t.libraries.sortLabels.dateAdded, defaultDirection: 'desc', ), - MediaSort( - key: 'originallyAvailableAt', - descKey: 'originallyAvailableAt:desc', - title: t.libraries.sortLabels.releaseDate, - defaultDirection: 'desc', - ), - MediaSort(key: 'rating', descKey: 'rating:desc', title: t.libraries.sortLabels.rating, defaultDirection: 'desc'), MediaSort( key: 'lastViewedAt', descKey: 'lastViewedAt:desc', - title: t.libraries.sortLabels.lastPlayed, + title: t.libraries.sortLabels.datePlayed, defaultDirection: 'desc', ), MediaSort( @@ -216,6 +219,43 @@ mixin _JellyfinBrowseMethods on MediaServerCacheMixin { title: t.libraries.sortLabels.playCount, defaultDirection: 'desc', ), + MediaSort( + key: 'productionYear', + descKey: 'productionYear:desc', + title: t.libraries.sortLabels.productionYear, + defaultDirection: 'desc', + ), + MediaSort( + key: 'runtime', + descKey: 'runtime:desc', + title: t.libraries.sortLabels.runtime, + defaultDirection: 'desc', + ), + MediaSort( + key: 'officialRating', + descKey: 'officialRating:desc', + title: t.libraries.sortLabels.officialRating, + defaultDirection: 'asc', + ), + MediaSort( + key: 'originallyAvailableAt', + descKey: 'originallyAvailableAt:desc', + title: t.libraries.sortLabels.premiereDate, + defaultDirection: 'desc', + ), + MediaSort( + key: 'startDate', + descKey: 'startDate:desc', + title: t.libraries.sortLabels.startDate, + defaultDirection: 'asc', + ), + MediaSort( + key: 'airTime', + descKey: 'airTime:desc', + title: t.libraries.sortLabels.airTime, + defaultDirection: 'asc', + ), + MediaSort(key: 'studio', descKey: 'studio:desc', title: t.libraries.sortLabels.studio, defaultDirection: 'asc'), MediaSort(key: 'random', title: t.libraries.sortLabels.random, defaultDirection: 'asc'), ]; } diff --git a/lib/services/library_query_translator.dart b/lib/services/library_query_translator.dart index f90990a2..2905923d 100644 --- a/lib/services/library_query_translator.dart +++ b/lib/services/library_query_translator.dart @@ -238,7 +238,7 @@ class JellyfinLibraryQueryTranslator implements LibraryQueryTranslator { } final sort = query.sort; if (sort != null) { - params['SortBy'] = _sortFieldFor(sort.field); + params['SortBy'] = _sortFieldFor(sort.field, query.kind); params['SortOrder'] = sort.direction == LibrarySortDirection.descending ? 'Descending' : 'Ascending'; } if (query.search != null && query.search!.isNotEmpty) { @@ -274,14 +274,24 @@ class JellyfinLibraryQueryTranslator implements LibraryQueryTranslator { }; } - static String _sortFieldFor(String neutral) { + static String _sortFieldFor(String neutral, MediaKind? kind) { return switch (neutral) { 'addedAt' => 'DateCreated', + 'dateCreated' => 'DateCreated', 'originallyAvailableAt' => 'PremiereDate', - 'lastViewedAt' => 'DatePlayed', + 'premiereDate' => 'PremiereDate', + 'lastViewedAt' || 'datePlayed' => kind == MediaKind.show ? 'SeriesDatePlayed' : 'DatePlayed', 'title' => 'SortName', - 'rating' => 'CommunityRating', - 'viewCount' => 'PlayCount', + 'name' => 'SortName', + 'rating' || 'communityRating' => 'CommunityRating', + 'viewCount' || 'playCount' => 'PlayCount', + 'productionYear' => 'ProductionYear', + 'runtime' => 'Runtime', + 'officialRating' => 'OfficialRating', + 'criticRating' => 'CriticRating', + 'startDate' => 'StartDate', + 'airTime' => 'AirTime', + 'studio' => 'Studio', 'random' => 'Random', _ => neutral, }; diff --git a/test/services/jellyfin_client_urls_test.dart b/test/services/jellyfin_client_urls_test.dart index b33efe0a..0fcb7c25 100644 --- a/test/services/jellyfin_client_urls_test.dart +++ b/test/services/jellyfin_client_urls_test.dart @@ -78,6 +78,26 @@ void main() { expect(Uri.parse(url).path, '/Videos/folder%2Fitem%20%231%3Fx/stream'); }); + test('fetchSortOptions exposes the broad Jellyfin sort set', () async { + final sorts = await client.fetchSortOptions('lib-1'); + expect(sorts.map((sort) => sort.key).toList(), [ + 'title', + 'rating', + 'criticRating', + 'addedAt', + 'lastViewedAt', + 'viewCount', + 'productionYear', + 'runtime', + 'officialRating', + 'originallyAvailableAt', + 'startDate', + 'airTime', + 'studio', + 'random', + ]); + }); + test('reportPlaybackProgress sends media source and stream indexes', () async { Uri? capturedUri; String? capturedBody; diff --git a/test/services/library_query_translator_test.dart b/test/services/library_query_translator_test.dart index 075870a7..57a03d9c 100644 --- a/test/services/library_query_translator_test.dart +++ b/test/services/library_query_translator_test.dart @@ -135,6 +135,42 @@ void main() { expect(addedSort['SortOrder'], 'Descending'); }); + test('Streamyfin broad sort keys map to Jellyfin ItemSortBy values', () { + const cases = { + 'criticRating': 'CriticRating', + 'viewCount': 'PlayCount', + 'productionYear': 'ProductionYear', + 'runtime': 'Runtime', + 'officialRating': 'OfficialRating', + 'startDate': 'StartDate', + 'airTime': 'AirTime', + 'studio': 'Studio', + }; + + for (final entry in cases.entries) { + final params = translator.toQueryParameters(LibraryQuery(sort: LibrarySort(field: entry.key))); + expect(params['SortBy'], entry.value, reason: entry.key); + } + }); + + test('show date played sort maps to Jellyfin series-specific sort field', () { + final showSort = translator.toQueryParameters( + const LibraryQuery( + kind: MediaKind.show, + sort: LibrarySort(field: 'lastViewedAt'), + ), + ); + expect(showSort['SortBy'], 'SeriesDatePlayed'); + + final movieSort = translator.toQueryParameters( + const LibraryQuery( + kind: MediaKind.movie, + sort: LibrarySort(field: 'lastViewedAt'), + ), + ); + expect(movieSort['SortBy'], 'DatePlayed'); + }); + test('nameStartsWith="#" maps to NameLessThan=A', () { final params = translator.toQueryParameters(const LibraryQuery(nameStartsWith: '#')); expect(params['NameLessThan'], 'A');