fix: add Jellyfin episode-added sort

close #1274
This commit is contained in:
edde746
2026-06-18 16:22:01 +02:00
parent 94f2daa22e
commit 7e1d5ad4c4
37 changed files with 144 additions and 34 deletions
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Студио", "studio": "Студио",
"random": "Случайно", "random": "Случайно",
"dateShared": "Дата на споделяне", "dateShared": "Дата на споделяне",
"latestEpisodeAirDate": "Дата на излъчване на последния епизод" "latestEpisodeAirDate": "Дата на излъчване на последния епизод",
"lastEpisodeDateAdded": "Дата на добавяне на последния епизод"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Studie", "studio": "Studie",
"random": "Tilfældig", "random": "Tilfældig",
"dateShared": "Delt dato", "dateShared": "Delt dato",
"latestEpisodeAirDate": "Seneste episodes premieredato" "latestEpisodeAirDate": "Seneste episodes premieredato",
"lastEpisodeDateAdded": "Dato for senest tilføjede episode"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Studio", "studio": "Studio",
"random": "Zufällig", "random": "Zufällig",
"dateShared": "Datum geteilt", "dateShared": "Datum geteilt",
"latestEpisodeAirDate": "Letztes Folgenausstrahlungsdatum" "latestEpisodeAirDate": "Letztes Folgenausstrahlungsdatum",
"lastEpisodeDateAdded": "Datum der zuletzt hinzugefügten Folge"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -780,7 +780,8 @@
"studio": "Studio", "studio": "Studio",
"random": "Random", "random": "Random",
"dateShared": "Date Shared", "dateShared": "Date Shared",
"latestEpisodeAirDate": "Latest Episode Air Date" "latestEpisodeAirDate": "Latest Episode Air Date",
"lastEpisodeDateAdded": "Last Episode Date Added"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Estudio", "studio": "Estudio",
"random": "Aleatorio", "random": "Aleatorio",
"dateShared": "Fecha de compartición", "dateShared": "Fecha de compartición",
"latestEpisodeAirDate": "Última fecha de emisión del episodio" "latestEpisodeAirDate": "Última fecha de emisión del episodio",
"lastEpisodeDateAdded": "Fecha de adición del último episodio"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Studio", "studio": "Studio",
"random": "Aléatoire", "random": "Aléatoire",
"dateShared": "Date de partage", "dateShared": "Date de partage",
"latestEpisodeAirDate": "Dernière date de diffusion" "latestEpisodeAirDate": "Dernière date de diffusion",
"lastEpisodeDateAdded": "Date d'ajout du dernier épisode"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Studio", "studio": "Studio",
"random": "Casuale", "random": "Casuale",
"dateShared": "Data di condivisione", "dateShared": "Data di condivisione",
"latestEpisodeAirDate": "Data ultima messa in onda" "latestEpisodeAirDate": "Data ultima messa in onda",
"lastEpisodeDateAdded": "Data aggiunta ultimo episodio"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "スタジオ", "studio": "スタジオ",
"random": "ランダム", "random": "ランダム",
"dateShared": "共有日", "dateShared": "共有日",
"latestEpisodeAirDate": "最新エピソード放送日" "latestEpisodeAirDate": "最新エピソード放送日",
"lastEpisodeDateAdded": "最新エピソード追加日"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "스튜디오", "studio": "스튜디오",
"random": "무작위", "random": "무작위",
"dateShared": "공유된 날짜", "dateShared": "공유된 날짜",
"latestEpisodeAirDate": "최신 에피소드 방영일" "latestEpisodeAirDate": "최신 에피소드 방영일",
"lastEpisodeDateAdded": "최신 에피소드 추가일"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Studio", "studio": "Studio",
"random": "Tilfeldig", "random": "Tilfeldig",
"dateShared": "Delingsdato", "dateShared": "Delingsdato",
"latestEpisodeAirDate": "Siste episodes sendedato" "latestEpisodeAirDate": "Siste episodes sendedato",
"lastEpisodeDateAdded": "Dato for sist lagt til episode"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Studio", "studio": "Studio",
"random": "Willekeurig", "random": "Willekeurig",
"dateShared": "Gedeeld op", "dateShared": "Gedeeld op",
"latestEpisodeAirDate": "Laatste afleveringsuitzending" "latestEpisodeAirDate": "Laatste afleveringsuitzending",
"lastEpisodeDateAdded": "Datum laatst toegevoegde aflevering"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Studio", "studio": "Studio",
"random": "Losowo", "random": "Losowo",
"dateShared": "Data udostępnienia", "dateShared": "Data udostępnienia",
"latestEpisodeAirDate": "Data emisji ostatniego odcinka" "latestEpisodeAirDate": "Data emisji ostatniego odcinka",
"lastEpisodeDateAdded": "Data dodania ostatniego odcinka"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Estúdio", "studio": "Estúdio",
"random": "Aleatório", "random": "Aleatório",
"dateShared": "Data de compartilhamento", "dateShared": "Data de compartilhamento",
"latestEpisodeAirDate": "Última data de exibição do episódio" "latestEpisodeAirDate": "Última data de exibição do episódio",
"lastEpisodeDateAdded": "Data de adição do último episódio"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Студия", "studio": "Студия",
"random": "Случайно", "random": "Случайно",
"dateShared": "Дата открытия доступа", "dateShared": "Дата открытия доступа",
"latestEpisodeAirDate": "Дата выхода последнего эпизода" "latestEpisodeAirDate": "Дата выхода последнего эпизода",
"lastEpisodeDateAdded": "Дата добавления последнего эпизода"
} }
}, },
"about": { "about": {
+1 -1
View File
@@ -4,7 +4,7 @@
/// To regenerate, run: `dart run slang` /// To regenerate, run: `dart run slang`
/// ///
/// Locales: 16 /// Locales: 16
/// Strings: 20409 (1275 per locale) /// Strings: 20425 (1276 per locale)
// coverage:ignore-file // coverage:ignore-file
// ignore_for_file: type=lint, unused_import // ignore_for_file: type=lint, unused_import
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsBg extends TranslationsLibrariesSortLabels
@override String get random => 'Случайно'; @override String get random => 'Случайно';
@override String get dateShared => 'Дата на споделяне'; @override String get dateShared => 'Дата на споделяне';
@override String get latestEpisodeAirDate => 'Дата на излъчване на последния епизод'; @override String get latestEpisodeAirDate => 'Дата на излъчване на последния епизод';
@override String get lastEpisodeDateAdded => 'Дата на добавяне на последния епизод';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsBg {
'libraries.sortLabels.random' => 'Случайно', 'libraries.sortLabels.random' => 'Случайно',
'libraries.sortLabels.dateShared' => 'Дата на споделяне', 'libraries.sortLabels.dateShared' => 'Дата на споделяне',
'libraries.sortLabels.latestEpisodeAirDate' => 'Дата на излъчване на последния епизод', 'libraries.sortLabels.latestEpisodeAirDate' => 'Дата на излъчване на последния епизод',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Дата на добавяне на последния епизод',
'about.title' => 'Относно', 'about.title' => 'Относно',
'about.openSourceLicenses' => 'Лицензи с отворен код', 'about.openSourceLicenses' => 'Лицензи с отворен код',
'about.versionLabel' => ({required Object version}) => 'Версия ${version}', 'about.versionLabel' => ({required Object version}) => 'Версия ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsBg {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Неуспешно свързване: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Неуспешно свързване: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Искате ли да прекъснете връзката с дистанционната сесия?', 'companionRemote.remote.disconnectConfirm' => 'Искате ли да прекъснете връзката с дистанционната сесия?',
'companionRemote.remote.reconnecting' => 'Повторно свързване...', 'companionRemote.remote.reconnecting' => 'Повторно свързване...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Опит ${current} от 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Опит ${current} от 5',
'companionRemote.remote.retryNow' => 'Опитай сега', 'companionRemote.remote.retryNow' => 'Опитай сега',
'companionRemote.remote.tabRemote' => 'Дистанционно', 'companionRemote.remote.tabRemote' => 'Дистанционно',
'companionRemote.remote.tabPlay' => 'Пускане', 'companionRemote.remote.tabPlay' => 'Пускане',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsDa extends TranslationsLibrariesSortLabels
@override String get random => 'Tilfældig'; @override String get random => 'Tilfældig';
@override String get dateShared => 'Delt dato'; @override String get dateShared => 'Delt dato';
@override String get latestEpisodeAirDate => 'Seneste episodes premieredato'; @override String get latestEpisodeAirDate => 'Seneste episodes premieredato';
@override String get lastEpisodeDateAdded => 'Dato for senest tilføjede episode';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsDa {
'libraries.sortLabels.random' => 'Tilfældig', 'libraries.sortLabels.random' => 'Tilfældig',
'libraries.sortLabels.dateShared' => 'Delt dato', 'libraries.sortLabels.dateShared' => 'Delt dato',
'libraries.sortLabels.latestEpisodeAirDate' => 'Seneste episodes premieredato', 'libraries.sortLabels.latestEpisodeAirDate' => 'Seneste episodes premieredato',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Dato for senest tilføjede episode',
'about.title' => 'Om', 'about.title' => 'Om',
'about.openSourceLicenses' => 'Open source-licenser', 'about.openSourceLicenses' => 'Open source-licenser',
'about.versionLabel' => ({required Object version}) => 'Version ${version}', 'about.versionLabel' => ({required Object version}) => 'Version ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsDa {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Kunne ikke oprette forbindelse: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Kunne ikke oprette forbindelse: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Vil du afbryde fra fjernsessionen?', 'companionRemote.remote.disconnectConfirm' => 'Vil du afbryde fra fjernsessionen?',
'companionRemote.remote.reconnecting' => 'Genopretter forbindelse...', 'companionRemote.remote.reconnecting' => 'Genopretter forbindelse...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Forsøg ${current} af 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Forsøg ${current} af 5',
'companionRemote.remote.retryNow' => 'Prøv igen nu', 'companionRemote.remote.retryNow' => 'Prøv igen nu',
'companionRemote.remote.tabRemote' => 'Fjernbetjening', 'companionRemote.remote.tabRemote' => 'Fjernbetjening',
'companionRemote.remote.tabPlay' => 'Afspil', 'companionRemote.remote.tabPlay' => 'Afspil',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsDe extends TranslationsLibrariesSortLabels
@override String get random => 'Zufällig'; @override String get random => 'Zufällig';
@override String get dateShared => 'Datum geteilt'; @override String get dateShared => 'Datum geteilt';
@override String get latestEpisodeAirDate => 'Letztes Folgenausstrahlungsdatum'; @override String get latestEpisodeAirDate => 'Letztes Folgenausstrahlungsdatum';
@override String get lastEpisodeDateAdded => 'Datum der zuletzt hinzugefügten Folge';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsDe {
'libraries.sortLabels.random' => 'Zufällig', 'libraries.sortLabels.random' => 'Zufällig',
'libraries.sortLabels.dateShared' => 'Datum geteilt', 'libraries.sortLabels.dateShared' => 'Datum geteilt',
'libraries.sortLabels.latestEpisodeAirDate' => 'Letztes Folgenausstrahlungsdatum', 'libraries.sortLabels.latestEpisodeAirDate' => 'Letztes Folgenausstrahlungsdatum',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Datum der zuletzt hinzugefügten Folge',
'about.title' => 'Über', 'about.title' => 'Über',
'about.openSourceLicenses' => 'Open-Source-Lizenzen', 'about.openSourceLicenses' => 'Open-Source-Lizenzen',
'about.versionLabel' => ({required Object version}) => 'Version ${version}', 'about.versionLabel' => ({required Object version}) => 'Version ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsDe {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Verbindung fehlgeschlagen: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Verbindung fehlgeschlagen: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Möchtest du die Verbindung zur Fernsteuerungssitzung trennen?', 'companionRemote.remote.disconnectConfirm' => 'Möchtest du die Verbindung zur Fernsteuerungssitzung trennen?',
'companionRemote.remote.reconnecting' => 'Verbindung wird wiederhergestellt...', 'companionRemote.remote.reconnecting' => 'Verbindung wird wiederhergestellt...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Versuch ${current} von 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Versuch ${current} von 5',
'companionRemote.remote.retryNow' => 'Jetzt wiederholen', 'companionRemote.remote.retryNow' => 'Jetzt wiederholen',
'companionRemote.remote.tabRemote' => 'Fernbedienung', 'companionRemote.remote.tabRemote' => 'Fernbedienung',
'companionRemote.remote.tabPlay' => 'Wiedergabe', 'companionRemote.remote.tabPlay' => 'Wiedergabe',
+5 -1
View File
@@ -4173,6 +4173,9 @@ class TranslationsLibrariesSortLabelsEn {
/// en: 'Latest Episode Air Date' /// en: 'Latest Episode Air Date'
String get latestEpisodeAirDate => 'Latest Episode Air Date'; String get latestEpisodeAirDate => 'Latest Episode Air Date';
/// en: 'Last Episode Date Added'
String get lastEpisodeDateAdded => 'Last Episode Date Added';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -5233,6 +5236,7 @@ extension on Translations {
'libraries.sortLabels.random' => 'Random', 'libraries.sortLabels.random' => 'Random',
'libraries.sortLabels.dateShared' => 'Date Shared', 'libraries.sortLabels.dateShared' => 'Date Shared',
'libraries.sortLabels.latestEpisodeAirDate' => 'Latest Episode Air Date', 'libraries.sortLabels.latestEpisodeAirDate' => 'Latest Episode Air Date',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Last Episode Date Added',
'about.title' => 'About', 'about.title' => 'About',
'about.openSourceLicenses' => 'Open Source Licenses', 'about.openSourceLicenses' => 'Open Source Licenses',
'about.versionLabel' => ({required Object version}) => 'Version ${version}', 'about.versionLabel' => ({required Object version}) => 'Version ${version}',
@@ -5532,9 +5536,9 @@ extension on Translations {
'companionRemote.pairing.noDevicesHint' => 'Open Plezy on desktop and use the same WiFi', 'companionRemote.pairing.noDevicesHint' => 'Open Plezy on desktop and use the same WiFi',
'companionRemote.pairing.availableDevices' => 'Available Devices', 'companionRemote.pairing.availableDevices' => 'Available Devices',
'companionRemote.pairing.manualConnection' => 'Manual Connection', 'companionRemote.pairing.manualConnection' => 'Manual Connection',
'companionRemote.pairing.cryptoInitFailed' => 'Couldn\'t start secure connection. Sign in to Plex first.',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.pairing.cryptoInitFailed' => 'Couldn\'t start secure connection. Sign in to Plex first.',
'companionRemote.pairing.validationHostRequired' => 'Please enter host address', 'companionRemote.pairing.validationHostRequired' => 'Please enter host address',
'companionRemote.pairing.validationHostFormat' => 'Format must be IP:port (e.g., 192.168.1.100:48632)', 'companionRemote.pairing.validationHostFormat' => 'Format must be IP:port (e.g., 192.168.1.100:48632)',
'companionRemote.pairing.connectionTimedOut' => 'Connection timed out. Use the same network on both devices.', 'companionRemote.pairing.connectionTimedOut' => 'Connection timed out. Use the same network on both devices.',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsEs extends TranslationsLibrariesSortLabels
@override String get random => 'Aleatorio'; @override String get random => 'Aleatorio';
@override String get dateShared => 'Fecha de compartición'; @override String get dateShared => 'Fecha de compartición';
@override String get latestEpisodeAirDate => 'Última fecha de emisión del episodio'; @override String get latestEpisodeAirDate => 'Última fecha de emisión del episodio';
@override String get lastEpisodeDateAdded => 'Fecha de adición del último episodio';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsEs {
'libraries.sortLabels.random' => 'Aleatorio', 'libraries.sortLabels.random' => 'Aleatorio',
'libraries.sortLabels.dateShared' => 'Fecha de compartición', 'libraries.sortLabels.dateShared' => 'Fecha de compartición',
'libraries.sortLabels.latestEpisodeAirDate' => 'Última fecha de emisión del episodio', 'libraries.sortLabels.latestEpisodeAirDate' => 'Última fecha de emisión del episodio',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Fecha de adición del último episodio',
'about.title' => 'Acerca de', 'about.title' => 'Acerca de',
'about.openSourceLicenses' => 'Licencias de Código Abierto', 'about.openSourceLicenses' => 'Licencias de Código Abierto',
'about.versionLabel' => ({required Object version}) => 'Versión ${version}', 'about.versionLabel' => ({required Object version}) => 'Versión ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsEs {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Error al conectar: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Error al conectar: ${error}',
'companionRemote.remote.disconnectConfirm' => '¿Quieres desconectarte de la sesión remota?', 'companionRemote.remote.disconnectConfirm' => '¿Quieres desconectarte de la sesión remota?',
'companionRemote.remote.reconnecting' => 'Reconectando...', 'companionRemote.remote.reconnecting' => 'Reconectando...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Intento ${current} de 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Intento ${current} de 5',
'companionRemote.remote.retryNow' => 'Reintentar ahora', 'companionRemote.remote.retryNow' => 'Reintentar ahora',
'companionRemote.remote.tabRemote' => 'Remoto', 'companionRemote.remote.tabRemote' => 'Remoto',
'companionRemote.remote.tabPlay' => 'Reproducir', 'companionRemote.remote.tabPlay' => 'Reproducir',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsFr extends TranslationsLibrariesSortLabels
@override String get random => 'Aléatoire'; @override String get random => 'Aléatoire';
@override String get dateShared => 'Date de partage'; @override String get dateShared => 'Date de partage';
@override String get latestEpisodeAirDate => 'Dernière date de diffusion'; @override String get latestEpisodeAirDate => 'Dernière date de diffusion';
@override String get lastEpisodeDateAdded => 'Date d\'ajout du dernier épisode';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsFr {
'libraries.sortLabels.random' => 'Aléatoire', 'libraries.sortLabels.random' => 'Aléatoire',
'libraries.sortLabels.dateShared' => 'Date de partage', 'libraries.sortLabels.dateShared' => 'Date de partage',
'libraries.sortLabels.latestEpisodeAirDate' => 'Dernière date de diffusion', 'libraries.sortLabels.latestEpisodeAirDate' => 'Dernière date de diffusion',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Date d\'ajout du dernier épisode',
'about.title' => 'À propos', 'about.title' => 'À propos',
'about.openSourceLicenses' => 'Licences Open Source', 'about.openSourceLicenses' => 'Licences Open Source',
'about.versionLabel' => ({required Object version}) => 'Version ${version}', 'about.versionLabel' => ({required Object version}) => 'Version ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsFr {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Échec de la connexion : ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Échec de la connexion : ${error}',
'companionRemote.remote.disconnectConfirm' => 'Voulez-vous vous déconnecter de la session distante ?', 'companionRemote.remote.disconnectConfirm' => 'Voulez-vous vous déconnecter de la session distante ?',
'companionRemote.remote.reconnecting' => 'Reconnexion...', 'companionRemote.remote.reconnecting' => 'Reconnexion...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Tentative ${current} sur 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Tentative ${current} sur 5',
'companionRemote.remote.retryNow' => 'Réessayer maintenant', 'companionRemote.remote.retryNow' => 'Réessayer maintenant',
'companionRemote.remote.tabRemote' => 'Télécommande', 'companionRemote.remote.tabRemote' => 'Télécommande',
'companionRemote.remote.tabPlay' => 'Lecture', 'companionRemote.remote.tabPlay' => 'Lecture',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsIt extends TranslationsLibrariesSortLabels
@override String get random => 'Casuale'; @override String get random => 'Casuale';
@override String get dateShared => 'Data di condivisione'; @override String get dateShared => 'Data di condivisione';
@override String get latestEpisodeAirDate => 'Data ultima messa in onda'; @override String get latestEpisodeAirDate => 'Data ultima messa in onda';
@override String get lastEpisodeDateAdded => 'Data aggiunta ultimo episodio';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsIt {
'libraries.sortLabels.random' => 'Casuale', 'libraries.sortLabels.random' => 'Casuale',
'libraries.sortLabels.dateShared' => 'Data di condivisione', 'libraries.sortLabels.dateShared' => 'Data di condivisione',
'libraries.sortLabels.latestEpisodeAirDate' => 'Data ultima messa in onda', 'libraries.sortLabels.latestEpisodeAirDate' => 'Data ultima messa in onda',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Data aggiunta ultimo episodio',
'about.title' => 'Informazioni', 'about.title' => 'Informazioni',
'about.openSourceLicenses' => 'Licenze Open Source', 'about.openSourceLicenses' => 'Licenze Open Source',
'about.versionLabel' => ({required Object version}) => 'Versione ${version}', 'about.versionLabel' => ({required Object version}) => 'Versione ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsIt {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Connessione fallita: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Connessione fallita: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Vuoi disconnetterti dalla sessione remota?', 'companionRemote.remote.disconnectConfirm' => 'Vuoi disconnetterti dalla sessione remota?',
'companionRemote.remote.reconnecting' => 'Riconnessione...', 'companionRemote.remote.reconnecting' => 'Riconnessione...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Tentativo ${current} di 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Tentativo ${current} di 5',
'companionRemote.remote.retryNow' => 'Riprova ora', 'companionRemote.remote.retryNow' => 'Riprova ora',
'companionRemote.remote.tabRemote' => 'Telecomando', 'companionRemote.remote.tabRemote' => 'Telecomando',
'companionRemote.remote.tabPlay' => 'Riproduci', 'companionRemote.remote.tabPlay' => 'Riproduci',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsJa extends TranslationsLibrariesSortLabels
@override String get random => 'ランダム'; @override String get random => 'ランダム';
@override String get dateShared => '共有日'; @override String get dateShared => '共有日';
@override String get latestEpisodeAirDate => '最新エピソード放送日'; @override String get latestEpisodeAirDate => '最新エピソード放送日';
@override String get lastEpisodeDateAdded => '最新エピソード追加日';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsJa {
'libraries.sortLabels.random' => 'ランダム', 'libraries.sortLabels.random' => 'ランダム',
'libraries.sortLabels.dateShared' => '共有日', 'libraries.sortLabels.dateShared' => '共有日',
'libraries.sortLabels.latestEpisodeAirDate' => '最新エピソード放送日', 'libraries.sortLabels.latestEpisodeAirDate' => '最新エピソード放送日',
'libraries.sortLabels.lastEpisodeDateAdded' => '最新エピソード追加日',
'about.title' => 'アプリについて', 'about.title' => 'アプリについて',
'about.openSourceLicenses' => 'オープンソースライセンス', 'about.openSourceLicenses' => 'オープンソースライセンス',
'about.versionLabel' => ({required Object version}) => 'バージョン ${version}', 'about.versionLabel' => ({required Object version}) => 'バージョン ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsJa {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => '接続に失敗しました: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => '接続に失敗しました: ${error}',
'companionRemote.remote.disconnectConfirm' => 'リモートセッションから切断しますか?', 'companionRemote.remote.disconnectConfirm' => 'リモートセッションから切断しますか?',
'companionRemote.remote.reconnecting' => '再接続中...', 'companionRemote.remote.reconnecting' => '再接続中...',
'companionRemote.remote.attemptOf' => ({required Object current}) => '試行 ${current}/5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => '試行 ${current}/5',
'companionRemote.remote.retryNow' => '今すぐ再試行', 'companionRemote.remote.retryNow' => '今すぐ再試行',
'companionRemote.remote.tabRemote' => 'リモート', 'companionRemote.remote.tabRemote' => 'リモート',
'companionRemote.remote.tabPlay' => '再生', 'companionRemote.remote.tabPlay' => '再生',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsKo extends TranslationsLibrariesSortLabels
@override String get random => '무작위'; @override String get random => '무작위';
@override String get dateShared => '공유된 날짜'; @override String get dateShared => '공유된 날짜';
@override String get latestEpisodeAirDate => '최신 에피소드 방영일'; @override String get latestEpisodeAirDate => '최신 에피소드 방영일';
@override String get lastEpisodeDateAdded => '최신 에피소드 추가일';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsKo {
'libraries.sortLabels.random' => '무작위', 'libraries.sortLabels.random' => '무작위',
'libraries.sortLabels.dateShared' => '공유된 날짜', 'libraries.sortLabels.dateShared' => '공유된 날짜',
'libraries.sortLabels.latestEpisodeAirDate' => '최신 에피소드 방영일', 'libraries.sortLabels.latestEpisodeAirDate' => '최신 에피소드 방영일',
'libraries.sortLabels.lastEpisodeDateAdded' => '최신 에피소드 추가일',
'about.title' => '소개', 'about.title' => '소개',
'about.openSourceLicenses' => '오픈소스 라이선스', 'about.openSourceLicenses' => '오픈소스 라이선스',
'about.versionLabel' => ({required Object version}) => '버전 ${version}', 'about.versionLabel' => ({required Object version}) => '버전 ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsKo {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => '연결 실패: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => '연결 실패: ${error}',
'companionRemote.remote.disconnectConfirm' => '원격 세션 연결을 해제하시겠습니까?', 'companionRemote.remote.disconnectConfirm' => '원격 세션 연결을 해제하시겠습니까?',
'companionRemote.remote.reconnecting' => '재연결 중...', 'companionRemote.remote.reconnecting' => '재연결 중...',
'companionRemote.remote.attemptOf' => ({required Object current}) => '${current}/5 시도 중',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => '${current}/5 시도 중',
'companionRemote.remote.retryNow' => '지금 재시도', 'companionRemote.remote.retryNow' => '지금 재시도',
'companionRemote.remote.tabRemote' => '리모컨', 'companionRemote.remote.tabRemote' => '리모컨',
'companionRemote.remote.tabPlay' => '재생', 'companionRemote.remote.tabPlay' => '재생',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsNb extends TranslationsLibrariesSortLabels
@override String get random => 'Tilfeldig'; @override String get random => 'Tilfeldig';
@override String get dateShared => 'Delingsdato'; @override String get dateShared => 'Delingsdato';
@override String get latestEpisodeAirDate => 'Siste episodes sendedato'; @override String get latestEpisodeAirDate => 'Siste episodes sendedato';
@override String get lastEpisodeDateAdded => 'Dato for sist lagt til episode';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsNb {
'libraries.sortLabels.random' => 'Tilfeldig', 'libraries.sortLabels.random' => 'Tilfeldig',
'libraries.sortLabels.dateShared' => 'Delingsdato', 'libraries.sortLabels.dateShared' => 'Delingsdato',
'libraries.sortLabels.latestEpisodeAirDate' => 'Siste episodes sendedato', 'libraries.sortLabels.latestEpisodeAirDate' => 'Siste episodes sendedato',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Dato for sist lagt til episode',
'about.title' => 'Om', 'about.title' => 'Om',
'about.openSourceLicenses' => 'Åpen kildekode-lisenser', 'about.openSourceLicenses' => 'Åpen kildekode-lisenser',
'about.versionLabel' => ({required Object version}) => 'Versjon ${version}', 'about.versionLabel' => ({required Object version}) => 'Versjon ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsNb {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Kunne ikke koble til: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Kunne ikke koble til: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Vil du koble fra fjernøkten?', 'companionRemote.remote.disconnectConfirm' => 'Vil du koble fra fjernøkten?',
'companionRemote.remote.reconnecting' => 'Kobler til på nytt...', 'companionRemote.remote.reconnecting' => 'Kobler til på nytt...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Forsøk ${current} av 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Forsøk ${current} av 5',
'companionRemote.remote.retryNow' => 'Prøv nå', 'companionRemote.remote.retryNow' => 'Prøv nå',
'companionRemote.remote.tabRemote' => 'Fjernkontroll', 'companionRemote.remote.tabRemote' => 'Fjernkontroll',
'companionRemote.remote.tabPlay' => 'Spill av', 'companionRemote.remote.tabPlay' => 'Spill av',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsNl extends TranslationsLibrariesSortLabels
@override String get random => 'Willekeurig'; @override String get random => 'Willekeurig';
@override String get dateShared => 'Gedeeld op'; @override String get dateShared => 'Gedeeld op';
@override String get latestEpisodeAirDate => 'Laatste afleveringsuitzending'; @override String get latestEpisodeAirDate => 'Laatste afleveringsuitzending';
@override String get lastEpisodeDateAdded => 'Datum laatst toegevoegde aflevering';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsNl {
'libraries.sortLabels.random' => 'Willekeurig', 'libraries.sortLabels.random' => 'Willekeurig',
'libraries.sortLabels.dateShared' => 'Gedeeld op', 'libraries.sortLabels.dateShared' => 'Gedeeld op',
'libraries.sortLabels.latestEpisodeAirDate' => 'Laatste afleveringsuitzending', 'libraries.sortLabels.latestEpisodeAirDate' => 'Laatste afleveringsuitzending',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Datum laatst toegevoegde aflevering',
'about.title' => 'Over', 'about.title' => 'Over',
'about.openSourceLicenses' => 'Open Source licenties', 'about.openSourceLicenses' => 'Open Source licenties',
'about.versionLabel' => ({required Object version}) => 'Versie ${version}', 'about.versionLabel' => ({required Object version}) => 'Versie ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsNl {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Kan niet verbinden: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Kan niet verbinden: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Wil je de verbinding met de externe sessie verbreken?', 'companionRemote.remote.disconnectConfirm' => 'Wil je de verbinding met de externe sessie verbreken?',
'companionRemote.remote.reconnecting' => 'Opnieuw verbinden...', 'companionRemote.remote.reconnecting' => 'Opnieuw verbinden...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Poging ${current} van 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Poging ${current} van 5',
'companionRemote.remote.retryNow' => 'Nu opnieuw proberen', 'companionRemote.remote.retryNow' => 'Nu opnieuw proberen',
'companionRemote.remote.tabRemote' => 'Afstandsbediening', 'companionRemote.remote.tabRemote' => 'Afstandsbediening',
'companionRemote.remote.tabPlay' => 'Afspelen', 'companionRemote.remote.tabPlay' => 'Afspelen',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsPl extends TranslationsLibrariesSortLabels
@override String get random => 'Losowo'; @override String get random => 'Losowo';
@override String get dateShared => 'Data udostępnienia'; @override String get dateShared => 'Data udostępnienia';
@override String get latestEpisodeAirDate => 'Data emisji ostatniego odcinka'; @override String get latestEpisodeAirDate => 'Data emisji ostatniego odcinka';
@override String get lastEpisodeDateAdded => 'Data dodania ostatniego odcinka';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsPl {
'libraries.sortLabels.random' => 'Losowo', 'libraries.sortLabels.random' => 'Losowo',
'libraries.sortLabels.dateShared' => 'Data udostępnienia', 'libraries.sortLabels.dateShared' => 'Data udostępnienia',
'libraries.sortLabels.latestEpisodeAirDate' => 'Data emisji ostatniego odcinka', 'libraries.sortLabels.latestEpisodeAirDate' => 'Data emisji ostatniego odcinka',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Data dodania ostatniego odcinka',
'about.title' => 'O aplikacji', 'about.title' => 'O aplikacji',
'about.openSourceLicenses' => 'Licencje open source', 'about.openSourceLicenses' => 'Licencje open source',
'about.versionLabel' => ({required Object version}) => 'Wersja ${version}', 'about.versionLabel' => ({required Object version}) => 'Wersja ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsPl {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Nie udało się połączyć: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Nie udało się połączyć: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Czy chcesz się rozłączyć od sesji zdalnej?', 'companionRemote.remote.disconnectConfirm' => 'Czy chcesz się rozłączyć od sesji zdalnej?',
'companionRemote.remote.reconnecting' => 'Ponowne łączenie...', 'companionRemote.remote.reconnecting' => 'Ponowne łączenie...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Próba ${current} z 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Próba ${current} z 5',
'companionRemote.remote.retryNow' => 'Ponów teraz', 'companionRemote.remote.retryNow' => 'Ponów teraz',
'companionRemote.remote.tabRemote' => 'Pilot', 'companionRemote.remote.tabRemote' => 'Pilot',
'companionRemote.remote.tabPlay' => 'Odtwórz', 'companionRemote.remote.tabPlay' => 'Odtwórz',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsPt extends TranslationsLibrariesSortLabels
@override String get random => 'Aleatório'; @override String get random => 'Aleatório';
@override String get dateShared => 'Data de compartilhamento'; @override String get dateShared => 'Data de compartilhamento';
@override String get latestEpisodeAirDate => 'Última data de exibição do episódio'; @override String get latestEpisodeAirDate => 'Última data de exibição do episódio';
@override String get lastEpisodeDateAdded => 'Data de adição do último episódio';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsPt {
'libraries.sortLabels.random' => 'Aleatório', 'libraries.sortLabels.random' => 'Aleatório',
'libraries.sortLabels.dateShared' => 'Data de compartilhamento', 'libraries.sortLabels.dateShared' => 'Data de compartilhamento',
'libraries.sortLabels.latestEpisodeAirDate' => 'Última data de exibição do episódio', 'libraries.sortLabels.latestEpisodeAirDate' => 'Última data de exibição do episódio',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Data de adição do último episódio',
'about.title' => 'Sobre', 'about.title' => 'Sobre',
'about.openSourceLicenses' => 'Licenças Open Source', 'about.openSourceLicenses' => 'Licenças Open Source',
'about.versionLabel' => ({required Object version}) => 'Versão ${version}', 'about.versionLabel' => ({required Object version}) => 'Versão ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsPt {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Falha ao conectar: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Falha ao conectar: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Deseja desconectar da sessão remota?', 'companionRemote.remote.disconnectConfirm' => 'Deseja desconectar da sessão remota?',
'companionRemote.remote.reconnecting' => 'Reconectando...', 'companionRemote.remote.reconnecting' => 'Reconectando...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Tentativa ${current} de 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Tentativa ${current} de 5',
'companionRemote.remote.retryNow' => 'Tentar Agora', 'companionRemote.remote.retryNow' => 'Tentar Agora',
'companionRemote.remote.tabRemote' => 'Remoto', 'companionRemote.remote.tabRemote' => 'Remoto',
'companionRemote.remote.tabPlay' => 'Reproduzir', 'companionRemote.remote.tabPlay' => 'Reproduzir',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsRu extends TranslationsLibrariesSortLabels
@override String get random => 'Случайно'; @override String get random => 'Случайно';
@override String get dateShared => 'Дата открытия доступа'; @override String get dateShared => 'Дата открытия доступа';
@override String get latestEpisodeAirDate => 'Дата выхода последнего эпизода'; @override String get latestEpisodeAirDate => 'Дата выхода последнего эпизода';
@override String get lastEpisodeDateAdded => 'Дата добавления последнего эпизода';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsRu {
'libraries.sortLabels.random' => 'Случайно', 'libraries.sortLabels.random' => 'Случайно',
'libraries.sortLabels.dateShared' => 'Дата открытия доступа', 'libraries.sortLabels.dateShared' => 'Дата открытия доступа',
'libraries.sortLabels.latestEpisodeAirDate' => 'Дата выхода последнего эпизода', 'libraries.sortLabels.latestEpisodeAirDate' => 'Дата выхода последнего эпизода',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Дата добавления последнего эпизода',
'about.title' => 'О приложении', 'about.title' => 'О приложении',
'about.openSourceLicenses' => 'Лицензии открытого ПО', 'about.openSourceLicenses' => 'Лицензии открытого ПО',
'about.versionLabel' => ({required Object version}) => 'Версия ${version}', 'about.versionLabel' => ({required Object version}) => 'Версия ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsRu {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Не удалось подключиться: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Не удалось подключиться: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Отключиться от удалённой сессии?', 'companionRemote.remote.disconnectConfirm' => 'Отключиться от удалённой сессии?',
'companionRemote.remote.reconnecting' => 'Переподключение...', 'companionRemote.remote.reconnecting' => 'Переподключение...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Попытка ${current} из 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Попытка ${current} из 5',
'companionRemote.remote.retryNow' => 'Повторить сейчас', 'companionRemote.remote.retryNow' => 'Повторить сейчас',
'companionRemote.remote.tabRemote' => 'Пульт', 'companionRemote.remote.tabRemote' => 'Пульт',
'companionRemote.remote.tabPlay' => 'Воспроизведение', 'companionRemote.remote.tabPlay' => 'Воспроизведение',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsSv extends TranslationsLibrariesSortLabels
@override String get random => 'Slumpmässigt'; @override String get random => 'Slumpmässigt';
@override String get dateShared => 'Delningsdatum'; @override String get dateShared => 'Delningsdatum';
@override String get latestEpisodeAirDate => 'Senaste avsnittets sändningsdatum'; @override String get latestEpisodeAirDate => 'Senaste avsnittets sändningsdatum';
@override String get lastEpisodeDateAdded => 'Datum då senaste avsnittet lades till';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsSv {
'libraries.sortLabels.random' => 'Slumpmässigt', 'libraries.sortLabels.random' => 'Slumpmässigt',
'libraries.sortLabels.dateShared' => 'Delningsdatum', 'libraries.sortLabels.dateShared' => 'Delningsdatum',
'libraries.sortLabels.latestEpisodeAirDate' => 'Senaste avsnittets sändningsdatum', 'libraries.sortLabels.latestEpisodeAirDate' => 'Senaste avsnittets sändningsdatum',
'libraries.sortLabels.lastEpisodeDateAdded' => 'Datum då senaste avsnittet lades till',
'about.title' => 'Om', 'about.title' => 'Om',
'about.openSourceLicenses' => 'Öppen källkod-licenser', 'about.openSourceLicenses' => 'Öppen källkod-licenser',
'about.versionLabel' => ({required Object version}) => 'Version ${version}', 'about.versionLabel' => ({required Object version}) => 'Version ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsSv {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Kunde inte ansluta: ${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => 'Kunde inte ansluta: ${error}',
'companionRemote.remote.disconnectConfirm' => 'Vill du koppla från fjärrsessionen?', 'companionRemote.remote.disconnectConfirm' => 'Vill du koppla från fjärrsessionen?',
'companionRemote.remote.reconnecting' => 'Återansluter...', 'companionRemote.remote.reconnecting' => 'Återansluter...',
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Försök ${current} av 5',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => 'Försök ${current} av 5',
'companionRemote.remote.retryNow' => 'Försök nu', 'companionRemote.remote.retryNow' => 'Försök nu',
'companionRemote.remote.tabRemote' => 'Fjärrkontroll', 'companionRemote.remote.tabRemote' => 'Fjärrkontroll',
'companionRemote.remote.tabPlay' => 'Spela', 'companionRemote.remote.tabPlay' => 'Spela',
+3 -1
View File
@@ -1758,6 +1758,7 @@ class _TranslationsLibrariesSortLabelsZh extends TranslationsLibrariesSortLabels
@override String get random => '随机'; @override String get random => '随机';
@override String get dateShared => '共享日期'; @override String get dateShared => '共享日期';
@override String get latestEpisodeAirDate => '最新一集播出日期'; @override String get latestEpisodeAirDate => '最新一集播出日期';
@override String get lastEpisodeDateAdded => '最新一集添加日期';
} }
// Path: companionRemote.session // Path: companionRemote.session
@@ -2644,6 +2645,7 @@ extension on TranslationsZh {
'libraries.sortLabels.random' => '随机', 'libraries.sortLabels.random' => '随机',
'libraries.sortLabels.dateShared' => '共享日期', 'libraries.sortLabels.dateShared' => '共享日期',
'libraries.sortLabels.latestEpisodeAirDate' => '最新一集播出日期', 'libraries.sortLabels.latestEpisodeAirDate' => '最新一集播出日期',
'libraries.sortLabels.lastEpisodeDateAdded' => '最新一集添加日期',
'about.title' => '关于', 'about.title' => '关于',
'about.openSourceLicenses' => '开源许可证', 'about.openSourceLicenses' => '开源许可证',
'about.versionLabel' => ({required Object version}) => '版本 ${version}', 'about.versionLabel' => ({required Object version}) => '版本 ${version}',
@@ -2949,9 +2951,9 @@ extension on TranslationsZh {
'companionRemote.pairing.failedToConnect' => ({required Object error}) => '连接失败:${error}', 'companionRemote.pairing.failedToConnect' => ({required Object error}) => '连接失败:${error}',
'companionRemote.remote.disconnectConfirm' => '是否要断开远程会话的连接?', 'companionRemote.remote.disconnectConfirm' => '是否要断开远程会话的连接?',
'companionRemote.remote.reconnecting' => '重新连接中...', 'companionRemote.remote.reconnecting' => '重新连接中...',
'companionRemote.remote.attemptOf' => ({required Object current}) => '${current} 次尝试,共 5 次',
_ => null, _ => null,
} ?? switch (path) { } ?? switch (path) {
'companionRemote.remote.attemptOf' => ({required Object current}) => '${current} 次尝试,共 5 次',
'companionRemote.remote.retryNow' => '立即重试', 'companionRemote.remote.retryNow' => '立即重试',
'companionRemote.remote.tabRemote' => '遥控', 'companionRemote.remote.tabRemote' => '遥控',
'companionRemote.remote.tabPlay' => '播放', 'companionRemote.remote.tabPlay' => '播放',
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "Studio", "studio": "Studio",
"random": "Slumpmässigt", "random": "Slumpmässigt",
"dateShared": "Delningsdatum", "dateShared": "Delningsdatum",
"latestEpisodeAirDate": "Senaste avsnittets sändningsdatum" "latestEpisodeAirDate": "Senaste avsnittets sändningsdatum",
"lastEpisodeDateAdded": "Datum då senaste avsnittet lades till"
} }
}, },
"about": { "about": {
+2 -1
View File
@@ -774,7 +774,8 @@
"studio": "工作室", "studio": "工作室",
"random": "随机", "random": "随机",
"dateShared": "共享日期", "dateShared": "共享日期",
"latestEpisodeAirDate": "最新一集播出日期" "latestEpisodeAirDate": "最新一集播出日期",
"lastEpisodeDateAdded": "最新一集添加日期"
} }
}, },
"about": { "about": {
+15 -1
View File
@@ -272,7 +272,7 @@ mixin _JellyfinBrowseMethods on MediaServerCacheMixin {
/// Jellyfin's `SortBy`/`SortOrder` at request time. /// Jellyfin's `SortBy`/`SortOrder` at request time.
@override @override
Future<List<MediaSort>> fetchSortOptions(String libraryId, {String? libraryType}) async { Future<List<MediaSort>> fetchSortOptions(String libraryId, {String? libraryType}) async {
return [ final sorts = [
MediaSort(key: 'title', descKey: 'title:desc', title: t.libraries.sortLabels.title, defaultDirection: 'asc'), MediaSort(key: 'title', descKey: 'title:desc', title: t.libraries.sortLabels.title, defaultDirection: 'asc'),
MediaSort( MediaSort(
key: 'rating', key: 'rating',
@@ -343,6 +343,20 @@ mixin _JellyfinBrowseMethods on MediaServerCacheMixin {
MediaSort(key: 'studio', descKey: 'studio:desc', title: t.libraries.sortLabels.studio, 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'), MediaSort(key: 'random', title: t.libraries.sortLabels.random, defaultDirection: 'asc'),
]; ];
if (libraryType?.toLowerCase() == 'show') {
sorts.insert(
4,
MediaSort(
key: 'episode.addedAt',
descKey: 'episode.addedAt:desc',
title: t.libraries.sortLabels.lastEpisodeDateAdded,
defaultDirection: 'desc',
),
);
}
return sorts;
} }
/// Jellyfin internalisation of the Plex-style filter map → [LibraryQuery] /// Jellyfin internalisation of the Plex-style filter map → [LibraryQuery]
@@ -278,6 +278,7 @@ class JellyfinLibraryQueryTranslator implements LibraryQueryTranslator {
static String _sortFieldFor(String neutral, MediaKind? kind) { static String _sortFieldFor(String neutral, MediaKind? kind) {
return switch (neutral) { return switch (neutral) {
'addedAt' => 'DateCreated', 'addedAt' => 'DateCreated',
'episode.addedAt' => 'DateLastContentAdded,SortName',
'dateCreated' => 'DateCreated', 'dateCreated' => 'DateCreated',
'originallyAvailableAt' => 'PremiereDate', 'originallyAvailableAt' => 'PremiereDate',
'premiereDate' => 'PremiereDate', 'premiereDate' => 'PremiereDate',
@@ -104,6 +104,30 @@ void main() {
]); ]);
}); });
test('fetchSortOptions adds episode added sort only for shows', () async {
final showSorts = await client.fetchSortOptions('lib-1', libraryType: 'show');
expect(showSorts.map((sort) => sort.key).toList(), [
'title',
'rating',
'criticRating',
'addedAt',
'episode.addedAt',
'lastViewedAt',
'viewCount',
'productionYear',
'runtime',
'officialRating',
'originallyAvailableAt',
'startDate',
'airTime',
'studio',
'random',
]);
final movieSorts = await client.fetchSortOptions('lib-1', libraryType: 'movie');
expect(movieSorts.map((sort) => sort.key), isNot(contains('episode.addedAt')));
});
test('fetchExtras combines local trailers and special features as playable videos', () async { test('fetchExtras combines local trailers and special features as playable videos', () async {
const itemId = 'movie/id #1?x'; const itemId = 'movie/id #1?x';
final encodedItemId = Uri.encodeComponent(itemId); final encodedItemId = Uri.encodeComponent(itemId);
@@ -146,6 +146,7 @@ void main() {
'startDate': 'StartDate', 'startDate': 'StartDate',
'airTime': 'AirTime', 'airTime': 'AirTime',
'studio': 'Studio', 'studio': 'Studio',
'episode.addedAt': 'DateLastContentAdded,SortName',
}; };
for (final entry in cases.entries) { for (final entry in cases.entries) {
@@ -172,6 +173,26 @@ void main() {
expect(movieSort['SortBy'], 'DatePlayed'); expect(movieSort['SortBy'], 'DatePlayed');
}); });
test('episode added sort maps to Jellyfin series content added sort', () {
final descending = translator.toQueryParameters(
const LibraryQuery(
kind: MediaKind.show,
sort: LibrarySort(field: 'episode.addedAt'),
),
);
expect(descending['SortBy'], 'DateLastContentAdded,SortName');
expect(descending['SortOrder'], 'Descending');
final ascending = translator.toQueryParameters(
const LibraryQuery(
kind: MediaKind.show,
sort: LibrarySort(field: 'episode.addedAt', direction: LibrarySortDirection.ascending),
),
);
expect(ascending['SortBy'], 'DateLastContentAdded,SortName');
expect(ascending['SortOrder'], 'Ascending');
});
test('nameStartsWith="#" maps to NameLessThan=A', () { test('nameStartsWith="#" maps to NameLessThan=A', () {
final params = translator.toQueryParameters(const LibraryQuery(nameStartsWith: '#')); final params = translator.toQueryParameters(const LibraryQuery(nameStartsWith: '#'));
expect(params['NameLessThan'], 'A'); expect(params['NameLessThan'], 'A');