diff --git a/client/components/cards/LazyBookCard.vue b/client/components/cards/LazyBookCard.vue
index c4d1345da..22d2da34b 100644
--- a/client/components/cards/LazyBookCard.vue
+++ b/client/components/cards/LazyBookCard.vue
@@ -464,6 +464,10 @@ export default {
items.push({
func: 'addToQueue',
text: this.$strings.ButtonQueueAddItem
+ },
+ {
+ func: 'playNext',
+ text: this.$strings.ButtonQueuePlayNext
})
} else if (!this.isStreaming) {
items.push({
@@ -542,6 +546,10 @@ export default {
items.push({
func: 'addToQueue',
text: this.$strings.ButtonQueueAddItem
+ },
+ {
+ func: 'playNext',
+ text: this.$strings.ButtonQueuePlayNext
})
} else if (!this.isStreaming) {
items.push({
@@ -830,6 +838,33 @@ export default {
}
this.store.commit('addItemToQueue', queueItem)
},
+ playNext() {
+ var queueItem = {}
+ if (this.recentEpisode) {
+ queueItem = {
+ libraryItemId: this.libraryItemId,
+ libraryId: this.libraryId,
+ episodeId: this.recentEpisode.id,
+ title: this.recentEpisode.title,
+ subtitle: this.mediaMetadata.title,
+ caption: this.recentEpisode.publishedAt ? `Published ${this.$formatDate(this.recentEpisode.publishedAt, this.dateFormat)}` : 'Unknown publish date',
+ duration: this.recentEpisode.audioFile.duration || null,
+ coverPath: this.media.coverPath || null
+ }
+ } else {
+ queueItem = {
+ libraryItemId: this.libraryItemId,
+ libraryId: this.libraryId,
+ episodeId: null,
+ title: this.title,
+ subtitle: this.author,
+ caption: '',
+ duration: this.media.duration || null,
+ coverPath: this.media.coverPath || null
+ }
+ }
+ this.store.commit('addItemToTopOfQueue', queueItem)
+ },
removeFromQueue() {
const episodeId = this.recentEpisode ? this.recentEpisode.id : null
this.store.commit('removeItemFromQueue', { libraryItemId: this.libraryItemId, episodeId })
diff --git a/client/components/tables/podcast/EpisodeTableRow.vue b/client/components/tables/podcast/EpisodeTableRow.vue
index 4300b8e14..5ba99962a 100644
--- a/client/components/tables/podcast/EpisodeTableRow.vue
+++ b/client/components/tables/podcast/EpisodeTableRow.vue
@@ -25,6 +25,10 @@
+
+
+
+
@@ -201,7 +205,9 @@ export default {
// Add to queue
this.$emit('addToQueue', this.episode)
}
- }
+ },
+ queuePlayNext() {
+ this.$emit('queuePlayNext', this.episode)}
}
}
diff --git a/client/components/tables/podcast/EpisodesTable.vue b/client/components/tables/podcast/EpisodesTable.vue
index 9534b34e1..662b37e69 100644
--- a/client/components/tables/podcast/EpisodesTable.vue
+++ b/client/components/tables/podcast/EpisodesTable.vue
@@ -32,7 +32,7 @@
-
+
@@ -274,6 +274,19 @@ export default {
}
this.$store.commit('addItemToQueue', queueItem)
},
+ addEpisodeToTopOfQueue(episode) {
+ const queueItem = {
+ libraryItemId: this.libraryItem.id,
+ libraryId: this.libraryItem.libraryId,
+ episodeId: episode.id,
+ title: episode.title,
+ subtitle: this.mediaMetadata.title,
+ caption: episode.publishedAt ? `Published ${this.$formatDate(episode.publishedAt, this.dateFormat)}` : 'Unknown publish date',
+ duration: episode.audioFile.duration || null,
+ coverPath: this.media.coverPath || null
+ }
+ this.$store.commit('addItemToTopOfQueue', queueItem)
+ },
toggleBatchFinished() {
this.batchUpdateEpisodesFinished(this.selectedEpisodes, !this.selectedIsFinished)
},
diff --git a/client/pages/item/_id/index.vue b/client/pages/item/_id/index.vue
index 8658a6e42..b033fd42d 100644
--- a/client/pages/item/_id/index.vue
+++ b/client/pages/item/_id/index.vue
@@ -97,6 +97,10 @@
+
+
+
+
auto_stories
{{ $strings.ButtonRead }}
@@ -677,6 +681,19 @@ export default {
this.$store.commit('addItemToQueue', queueItem)
}
},
+ playNextBtnClick() {
+ const queueItem = {
+ libraryItemId: this.libraryItemId,
+ libraryId: this.libraryId,
+ episodeId: null,
+ title: this.title,
+ subtitle: this.authors.map((au) => au.name).join(', '),
+ caption: '',
+ duration: this.duration || null,
+ coverPath: this.media.coverPath || null
+ }
+ this.$store.commit('addItemToTopOfQueue', queueItem)
+ },
downloadLibraryItem() {
this.$downloadFile(this.downloadUrl)
},
diff --git a/client/pages/library/_library/podcast/latest.vue b/client/pages/library/_library/podcast/latest.vue
index d05658165..a1af6d869 100644
--- a/client/pages/library/_library/podcast/latest.vue
+++ b/client/pages/library/_library/podcast/latest.vue
@@ -57,6 +57,10 @@
+
+
@@ -220,6 +224,19 @@ export default {
}
this.$store.commit('addItemToQueue', queueItem)
}
+ },
+ playNextBtnClick(episode) {
+ const queueItem = {
+ libraryItemId: episode.libraryItemId,
+ libraryId: episode.libraryId,
+ episodeId: episode.id,
+ title: episode.title,
+ subtitle: episode.podcast.metadata.title,
+ caption: episode.publishedAt ? `Published ${this.$formatDate(episode.publishedAt, this.dateFormat)}` : 'Unknown publish date',
+ duration: episode.duration || null,
+ coverPath: episode.podcast.coverPath || null
+ }
+ this.$store.commit('addItemToTopOfQueue', queueItem)
}
},
mounted() {
diff --git a/client/store/index.js b/client/store/index.js
index ed7c35b61..ac35860c1 100644
--- a/client/store/index.js
+++ b/client/store/index.js
@@ -188,6 +188,15 @@ export const mutations = {
state.playerQueueItems.push(item)
}
},
+ addItemToTopOfQueue(state, item) {
+ const exists = state.playerQueueItems.some(i => {
+ if (!i.episodeId) return i.libraryItemId === item.libraryItemId
+ return i.libraryItemId === item.libraryItemId && i.episodeId === item.episodeId
+ })
+ if (!exists) {
+ state.playerQueueItems.splice(1, 0, item)
+ }
+ },
setPlayerQueueAutoPlay(state, autoPlay) {
state.playerQueueAutoPlay = !!autoPlay
localStorage.setItem('playerQueueAutoPlay', !!autoPlay ? '1' : '0')
diff --git a/client/strings/cs.json b/client/strings/cs.json
index bac376d87..c7d268acc 100644
--- a/client/strings/cs.json
+++ b/client/strings/cs.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Vyčistit mezipaměť položek",
"ButtonPurgeMediaProgress": "Vyčistit průběh médií",
"ButtonQueueAddItem": "Přidat do fronty",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Odstranit z fronty",
"ButtonQuickMatch": "Rychlé přiřazení",
"ButtonRead": "Číst",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pozastavit přehrávání kapitoly",
"MessagePlayChapter": "Poslechnout si začátek kapitoly",
"MessagePlaylistCreateFromCollection": "Vytvořit seznam skladeb z kolekce",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast nemá žádnou adresu URL kanálu RSS, kterou by mohl použít pro porovnávání",
"MessageQuickMatchDescription": "Vyplňte prázdné detaily položky a obálku prvním výsledkem shody z '{0}'. Nepřepisuje podrobnosti, pokud není povoleno nastavení serveru \"Preferovat párování metadata\".",
"MessageRemoveChapter": "Odstranit kapitolu",
diff --git a/client/strings/da.json b/client/strings/da.json
index 3dd611d9e..9c0d03b84 100644
--- a/client/strings/da.json
+++ b/client/strings/da.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Ryd elementcache",
"ButtonPurgeMediaProgress": "Ryd Medieforløb",
"ButtonQueueAddItem": "Tilføj til kø",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Fjern fra kø",
"ButtonQuickMatch": "Hurtig Match",
"ButtonRead": "Læs",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pause kapitelafspilning",
"MessagePlayChapter": "Lyt til begyndelsen af kapitlet",
"MessagePlaylistCreateFromCollection": "Opret afspilningsliste fra samling",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast har ingen RSS-feed-URL at bruge til matchning",
"MessageQuickMatchDescription": "Udfyld tomme elementoplysninger og omslag med første matchresultat fra '{0}'. Overskriver ikke oplysninger, medmindre serverindstillingen 'Foretræk matchet metadata' er aktiveret.",
"MessageRemoveChapter": "Fjern kapitel",
diff --git a/client/strings/de.json b/client/strings/de.json
index 20da77c19..3f2a2f9b7 100644
--- a/client/strings/de.json
+++ b/client/strings/de.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Lösche Medien-Zwischenspeicher",
"ButtonPurgeMediaProgress": "Lösche Hörfortschritte",
"ButtonQueueAddItem": "Zur Warteschlange hinzufügen",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Aus der Warteschlange entfernen",
"ButtonQuickMatch": "Schnellabgleich",
"ButtonRead": "Lese",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Kapitelwiedergabe pausieren",
"MessagePlayChapter": "Kapitelanfang anhören",
"MessagePlaylistCreateFromCollection": "Erstelle eine Wiedergabeliste aus der Sammlung",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Der Podcast hat keine RSS-Feed-Url welche für den Online-Abgleich verwendet werden kann",
"MessageQuickMatchDescription": "Füllt leere Details und Titelbilder mit dem ersten Treffer aus '{0}'. Überschreibt keine Details, es sei denn, die Server-Einstellung \"Passende Metadaten bevorzugen\" ist aktiviert.",
"MessageRemoveChapter": "Kapitel löschen",
@@ -750,4 +752,4 @@
"ToastSocketFailedToConnect": "Verbindung zum WebSocket fehlgeschlagen",
"ToastUserDeleteFailed": "Benutzer konnte nicht gelöscht werden",
"ToastUserDeleteSuccess": "Benutzer gelöscht"
-}
+}
\ No newline at end of file
diff --git a/client/strings/en-us.json b/client/strings/en-us.json
index f69175fde..f4772855f 100644
--- a/client/strings/en-us.json
+++ b/client/strings/en-us.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Purge Items Cache",
"ButtonPurgeMediaProgress": "Purge Media Progress",
"ButtonQueueAddItem": "Add to queue",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Remove from queue",
"ButtonQuickMatch": "Quick Match",
"ButtonRead": "Read",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pause chapter playback",
"MessagePlayChapter": "Listen to beginning of chapter",
"MessagePlaylistCreateFromCollection": "Create playlist from collection",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast has no RSS feed url to use for matching",
"MessageQuickMatchDescription": "Populate empty item details & cover with first match result from '{0}'. Does not overwrite details unless 'Prefer matched metadata' server setting is enabled.",
"MessageRemoveChapter": "Remove chapter",
diff --git a/client/strings/es.json b/client/strings/es.json
index cefeb8f87..992d52ae3 100644
--- a/client/strings/es.json
+++ b/client/strings/es.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Purgar Elementos de Cache",
"ButtonPurgeMediaProgress": "Purgar Progreso de Multimedia",
"ButtonQueueAddItem": "Agregar a la Fila",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Remover de la Fila",
"ButtonQuickMatch": "Encontrar Rápido",
"ButtonRead": "Leer",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pausar la reproducción del capítulo",
"MessagePlayChapter": "Escuchar el comienzo del capítulo",
"MessagePlaylistCreateFromCollection": "Crear una lista de reproducción a partir de una colección",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "El podcast no tiene una URL de fuente RSS que pueda usar",
"MessageQuickMatchDescription": "Rellenar detalles de elementos vacíos y portada con los primeros resultados de '{0}'. No sobrescribe los detalles a menos que la opción \"Preferir Metadatos Encontrados\" del servidor esté habilitada.",
"MessageRemoveChapter": "Remover capítulos",
diff --git a/client/strings/fr.json b/client/strings/fr.json
index 86a646025..93d429abd 100644
--- a/client/strings/fr.json
+++ b/client/strings/fr.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Purger le cache des articles",
"ButtonPurgeMediaProgress": "Purger la progression des médias",
"ButtonQueueAddItem": "Ajouter à la liste de lecture",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Supprimer de la liste de lecture",
"ButtonQuickMatch": "Recherche rapide",
"ButtonRead": "Lire",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Suspendre la lecture du chapitre",
"MessagePlayChapter": "Écouter depuis le début du chapitre",
"MessagePlaylistCreateFromCollection": "Créer une liste de lecture depuis la collection",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Le Podcast n’a pas d’URL de flux RSS à utiliser pour la correspondance",
"MessageQuickMatchDescription": "Renseigne les détails manquants ainsi que la couverture avec la première correspondance de « {0} ». N’écrase pas les données présentes à moins que le paramètre « Préférer les Métadonnées par correspondance » soit activé.",
"MessageRemoveChapter": "Supprimer le chapitre",
diff --git a/client/strings/gu.json b/client/strings/gu.json
index 24c874eba..80fffd9d8 100644
--- a/client/strings/gu.json
+++ b/client/strings/gu.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "વસ્તુઓનો Cache કાઢી નાખો",
"ButtonPurgeMediaProgress": "બધું સાંભળ્યું કાઢી નાખો",
"ButtonQueueAddItem": "કતારમાં ઉમેરો",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "કતારથી કાઢી નાખો",
"ButtonQuickMatch": "ઝડપી મેળ ખવડાવો",
"ButtonRead": "વાંચો",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pause chapter playback",
"MessagePlayChapter": "Listen to beginning of chapter",
"MessagePlaylistCreateFromCollection": "Create playlist from collection",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast has no RSS feed url to use for matching",
"MessageQuickMatchDescription": "Populate empty item details & cover with first match result from '{0}'. Does not overwrite details unless 'Prefer matched metadata' server setting is enabled.",
"MessageRemoveChapter": "Remove chapter",
diff --git a/client/strings/hi.json b/client/strings/hi.json
index e7ec61556..371b621e2 100644
--- a/client/strings/hi.json
+++ b/client/strings/hi.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "आइटम Cache मिटाएं",
"ButtonPurgeMediaProgress": "अभी तक सुना हुआ सब हटा दे",
"ButtonQueueAddItem": "क़तार में जोड़ें",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "कतार से हटाएं",
"ButtonQuickMatch": "जल्दी से समानता की तलाश करें",
"ButtonRead": "पढ़ लिया",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pause chapter playback",
"MessagePlayChapter": "Listen to beginning of chapter",
"MessagePlaylistCreateFromCollection": "Create playlist from collection",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast has no RSS feed url to use for matching",
"MessageQuickMatchDescription": "Populate empty item details & cover with first match result from '{0}'. Does not overwrite details unless 'Prefer matched metadata' server setting is enabled.",
"MessageRemoveChapter": "Remove chapter",
diff --git a/client/strings/hr.json b/client/strings/hr.json
index edefcf53c..00202f6f7 100644
--- a/client/strings/hr.json
+++ b/client/strings/hr.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Isprazni Items Cache",
"ButtonPurgeMediaProgress": "Purge Media Progress",
"ButtonQueueAddItem": "Add to queue",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Remove from queue",
"ButtonQuickMatch": "Brzi match",
"ButtonRead": "Pročitaj",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pause chapter playback",
"MessagePlayChapter": "Listen to beginning of chapter",
"MessagePlaylistCreateFromCollection": "Create playlist from collection",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast nema RSS feed url za matchanje",
"MessageQuickMatchDescription": "Popuni prazne detalje stavki i cover sa prvim match rezultato iz '{0}'. Ne briše detalje osim ako 'Prefer matched metadata' server postavka nije uključena.",
"MessageRemoveChapter": "Remove chapter",
diff --git a/client/strings/it.json b/client/strings/it.json
index 0860e83f3..986a27d74 100644
--- a/client/strings/it.json
+++ b/client/strings/it.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Elimina la Cache selezionata",
"ButtonPurgeMediaProgress": "Elimina info dei media ascoltati",
"ButtonQueueAddItem": "Aggiungi alla Coda",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Rimuovi dalla Coda",
"ButtonQuickMatch": "Controlla Metadata Auto",
"ButtonRead": "Leggi",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Metti in Pausa Capitolo",
"MessagePlayChapter": "Ascolta dall'inizio del capitolo",
"MessagePlaylistCreateFromCollection": "Crea playlist da una Raccolta",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast non ha l'URL del feed RSS da utilizzare per il match",
"MessageQuickMatchDescription": "Compila i dettagli dell'articolo vuoto e copri con il risultato della prima corrispondenza di '{0}'. Non sovrascrive i dettagli a meno che non sia abilitata l'impostazione del server \"Preferisci metadati corrispondenti\".",
"MessageRemoveChapter": "Rimuovi Capitolo",
diff --git a/client/strings/lt.json b/client/strings/lt.json
index 94067198d..6427b3743 100644
--- a/client/strings/lt.json
+++ b/client/strings/lt.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Valyti elementų saugyklą",
"ButtonPurgeMediaProgress": "Valyti medijos progresą",
"ButtonQueueAddItem": "Pridėti į eilę",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Pašalinti iš eilės",
"ButtonQuickMatch": "Greitas pritaikymas",
"ButtonRead": "Skaityti",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pristabdyti skyriaus grojimą",
"MessagePlayChapter": "Paklausyti skyriaus pradžios",
"MessagePlaylistCreateFromCollection": "Sukurti grojaraštį iš kolekcijos",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Tinklalidė neturi RSS srauto URL kuriuo būtų galima sulyginti",
"MessageQuickMatchDescription": "Užpildykite tuščius elementų duomenis ir viršelius su pirmuoju atitikimo rezultatu iš „{0}“. Neneperrašo detalių, nebent įgalintas serverio nustatymas „Pirmenybė atitaikytiems metaduomenis“.",
"MessageRemoveChapter": "Pašalinti skyrių",
diff --git a/client/strings/nl.json b/client/strings/nl.json
index 19a5c35a8..035e662a1 100644
--- a/client/strings/nl.json
+++ b/client/strings/nl.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Onderdelen-cache legen",
"ButtonPurgeMediaProgress": "Mediavoortgang legen",
"ButtonQueueAddItem": "In wachtrij zetten",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Uit wachtrij verwijderen",
"ButtonQuickMatch": "Snelle match",
"ButtonRead": "Lees",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pauzeer afspelen hoofdstuk",
"MessagePlayChapter": "Luister naar begin van hoofdstuk",
"MessagePlaylistCreateFromCollection": "Afspeellijst aanmaken vanuit collectie",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast heeft geen RSS-feed URL om te gebruiken voor matching",
"MessageQuickMatchDescription": "Vul lege onderdeeldetails & cover met eerste matchresultaat van '{0}'. Overschrijft geen details tenzij 'Prefereer gematchte metadata' serverinstelling is ingeschakeld.",
"MessageRemoveChapter": "Verwijder hoofdstuk",
diff --git a/client/strings/no.json b/client/strings/no.json
index 37cbc7a81..ca51e8414 100644
--- a/client/strings/no.json
+++ b/client/strings/no.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Tøm mellomlager",
"ButtonPurgeMediaProgress": "Slett medie fremgang",
"ButtonQueueAddItem": "Legg til kø",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Fjern fra kø",
"ButtonQuickMatch": "Kjapt søk",
"ButtonRead": "Les",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pause avspilling av kapittel",
"MessagePlayChapter": "Lytter på begynnelsen av kapittel",
"MessagePlaylistCreateFromCollection": "Lag spilleliste fra samling",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast har ingen RSS feed url til bruk av sammenligning",
"MessageQuickMatchDescription": "Fyll inn tomme gjenstandsdetaljer og omslagsbilde med første resultat fra '{0}'. Overskriver ikke detaljene utenom 'Foretrekk funnet metadata' tjenerinstilling er aktivert.",
"MessageRemoveChapter": "fjerne kapittel",
diff --git a/client/strings/pl.json b/client/strings/pl.json
index 86e292741..2a193df9a 100644
--- a/client/strings/pl.json
+++ b/client/strings/pl.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Wyczyść dane tymczasowe pozycji",
"ButtonPurgeMediaProgress": "Wyczyść postęp",
"ButtonQueueAddItem": "Dodaj do kolejki",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Usuń z kolejki",
"ButtonQuickMatch": "Szybkie dopasowanie",
"ButtonRead": "Czytaj",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Zatrzymaj odtwarzanie rozdziały",
"MessagePlayChapter": "Rozpocznij odtwarzanie od początku rozdziału",
"MessagePlaylistCreateFromCollection": "Create playlist from collection",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast nie ma adresu url kanału RSS, który mógłby zostać użyty do dopasowania",
"MessageQuickMatchDescription": "Wypełnij puste informacje i okładkę pierwszym wynikiem dopasowania z '{0}'. Nie nadpisuje szczegółów, chyba że włączone jest ustawienie serwera 'Preferuj dopasowane metadane'.",
"MessageRemoveChapter": "Usuń rozdział",
diff --git a/client/strings/ru.json b/client/strings/ru.json
index 4d26c4aae..695f8e97f 100644
--- a/client/strings/ru.json
+++ b/client/strings/ru.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Очистить кэш элементов",
"ButtonPurgeMediaProgress": "Очистить прогресс медиа",
"ButtonQueueAddItem": "Добавить в очередь",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Удалить из очереди",
"ButtonQuickMatch": "Быстрый поиск",
"ButtonRead": "Читать",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Пауза воспроизведения главы",
"MessagePlayChapter": "Прослушать начало главы",
"MessagePlaylistCreateFromCollection": "Создать плейлист из коллекции",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Подкаст не имеет URL-адреса RSS-канала, который можно использовать для поиска",
"MessageQuickMatchDescription": "Заполняет пустые детали элемента и обложку первым результатом поиска из «{0}». Не перезаписывает сведения, если не включен параметр сервера 'Предпочитать метаданные поиска'.",
"MessageRemoveChapter": "Удалить главу",
diff --git a/client/strings/sv.json b/client/strings/sv.json
index 1d71fce5a..d5e13463a 100644
--- a/client/strings/sv.json
+++ b/client/strings/sv.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "Rensa föremåls-cache",
"ButtonPurgeMediaProgress": "Rensa medieförlopp",
"ButtonQueueAddItem": "Lägg till i kön",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "Ta bort från kön",
"ButtonQuickMatch": "Snabb matchning",
"ButtonRead": "Läs",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "Pausa kapiteluppspelning",
"MessagePlayChapter": "Lyssna på kapitlets början",
"MessagePlaylistCreateFromCollection": "Skapa spellista från samling",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "Podcasten har ingen RSS-flödes-URL att använda för matchning",
"MessageQuickMatchDescription": "Fyll tomma objektdetaljer och omslag med första matchningsresultat från '{0}'. Överskriver inte detaljer om inte serverinställningen 'Föredra matchad metadata' är aktiverad.",
"MessageRemoveChapter": "Ta bort kapitel",
diff --git a/client/strings/zh-cn.json b/client/strings/zh-cn.json
index 05553c081..8b82c6e95 100644
--- a/client/strings/zh-cn.json
+++ b/client/strings/zh-cn.json
@@ -51,6 +51,7 @@
"ButtonPurgeItemsCache": "清理项目缓存",
"ButtonPurgeMediaProgress": "清理媒体进度",
"ButtonQueueAddItem": "添加到队列",
+ "ButtonQueuePlayNext": "Play Next",
"ButtonQueueRemoveItem": "从队列中移除",
"ButtonQuickMatch": "快速匹配",
"ButtonRead": "读取",
@@ -641,6 +642,7 @@
"MessagePauseChapter": "暂停章节播放",
"MessagePlayChapter": "开始章节播放",
"MessagePlaylistCreateFromCollection": "从收藏中创建播放列表",
+ "MessagePlayNext": "Play next",
"MessagePodcastHasNoRSSFeedForMatching": "播客没有可用于匹配 RSS 源的 url",
"MessageQuickMatchDescription": "使用来自 '{0}' 的第一个匹配结果填充空白详细信息和封面. 除非启用 '首选匹配元数据' 服务器设置, 否则不会覆盖详细信息.",
"MessageRemoveChapter": "移除章节",