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": "移除章节",