From 679bdf36b117a59b4db0cd8022818acc5d17f5b7 Mon Sep 17 00:00:00 2001 From: Jorge <46056498+jorgectf@users.noreply.github.com> Date: Mon, 3 Jul 2023 09:15:04 +0200 Subject: [PATCH 001/289] Add CodeQL workflow --- .github/workflows/codeql.yml | 65 ++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) create mode 100644 .github/workflows/codeql.yml diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml new file mode 100644 index 00000000..a77ab3e0 --- /dev/null +++ b/.github/workflows/codeql.yml @@ -0,0 +1,65 @@ +name: "CodeQL" + +on: + push: + branches: [ 'master' ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ 'master' ] + schedule: + - cron: '16 5 * * 4' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + permissions: + actions: read + contents: read + security-events: write + + strategy: + fail-fast: false + matrix: + language: [ 'javascript' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ] + # Use only 'java' to analyze code written in Java, Kotlin or both + # Use only 'javascript' to analyze code written in JavaScript, TypeScript or both + # Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v2 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + + # For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs + # queries: security-extended,security-and-quality + + + # Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v2 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 See https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idstepsrun + + # If the Autobuild fails above, remove it and uncomment the following three lines. + # modify them (or add more) to build your code if your project, please refer to the EXAMPLE below for guidance. + + # - run: | + # echo "Run, Build Application using script" + # ./location_of_script_within_repo/buildscript.sh + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v2 + with: + category: "/language:${{matrix.language}}" From 2ebdb4482673371db2adb94c9e828ed209cc9a37 Mon Sep 17 00:00:00 2001 From: mikiher Date: Thu, 1 Feb 2024 12:03:12 +0200 Subject: [PATCH 002/289] Merge cover and media update in Match.vue into a single /media API call --- client/components/modals/item/tabs/Match.vue | 21 ++++-------------- server/controllers/LibraryItemController.js | 23 +++++++++++++------- 2 files changed, 19 insertions(+), 25 deletions(-) diff --git a/client/components/modals/item/tabs/Match.vue b/client/components/modals/item/tabs/Match.vue index b57e9612..ef4a7753 100644 --- a/client/components/modals/item/tabs/Match.vue +++ b/client/components/modals/item/tabs/Match.vue @@ -533,24 +533,11 @@ export default { // Persist in local storage localStorage.setItem('selectedMatchUsage', JSON.stringify(this.selectedMatchUsage)) - if (updatePayload.metadata.cover) { - const coverPayload = { - url: updatePayload.metadata.cover - } - const success = await this.$axios.$post(`/api/items/${this.libraryItemId}/cover`, coverPayload).catch((error) => { - console.error('Failed to update', error) - return false - }) - if (success) { - this.$toast.success(this.$strings.ToastItemCoverUpdateSuccess) - } else { - this.$toast.error(this.$strings.ToastItemCoverUpdateFailed) - } - console.log('Updated cover') - delete updatePayload.metadata.cover - } - if (Object.keys(updatePayload).length) { + if (updatePayload.metadata.cover) { + updatePayload.url = updatePayload.metadata.cover + delete updatePayload.metadata.cover + } const mediaUpdatePayload = updatePayload const updateResult = await this.$axios.$patch(`/api/items/${this.libraryItemId}/media`, mediaUpdatePayload).catch((error) => { console.error('Failed to update', error) diff --git a/server/controllers/LibraryItemController.js b/server/controllers/LibraryItemController.js index 26b375a0..dfa1daea 100644 --- a/server/controllers/LibraryItemController.js +++ b/server/controllers/LibraryItemController.js @@ -124,6 +124,11 @@ class LibraryItemController { const libraryItem = req.libraryItem const mediaPayload = req.body + if (mediaPayload.url) { + await LibraryItemController.prototype.uploadCover.bind(this)(req, res, false) + if (res.writableEnded) return + } + // Book specific if (libraryItem.isBook) { await this.createAuthorsAndSeriesForItemUpdate(mediaPayload, libraryItem.libraryId) @@ -146,7 +151,7 @@ class LibraryItemController { seriesRemoved = libraryItem.media.metadata.series.filter(se => !seriesIdsInUpdate.includes(se.id)) } - const hasUpdates = libraryItem.media.update(mediaPayload) + const hasUpdates = libraryItem.media.update(mediaPayload) || mediaPayload.url if (hasUpdates) { libraryItem.updatedAt = Date.now() @@ -171,7 +176,7 @@ class LibraryItemController { } // POST: api/items/:id/cover - async uploadCover(req, res) { + async uploadCover(req, res, updateAndReturnJson = true) { if (!req.user.canUpload) { Logger.warn('User attempted to upload a cover without permission', req.user) return res.sendStatus(403) @@ -196,12 +201,14 @@ class LibraryItemController { return res.status(500).send('Unknown error occurred') } - await Database.updateLibraryItem(libraryItem) - SocketAuthority.emitter('item_updated', libraryItem.toJSONExpanded()) - res.json({ - success: true, - cover: result.cover - }) + if (updateAndReturnJson) { + await Database.updateLibraryItem(libraryItem) + SocketAuthority.emitter('item_updated', libraryItem.toJSONExpanded()) + res.json({ + success: true, + cover: result.cover + }) + } } // PATCH: api/items/:id/cover From e2bb0cfb7cb7fb4587eaf0ff346296c37c24b315 Mon Sep 17 00:00:00 2001 From: KeyboardHammer Date: Sat, 3 Feb 2024 21:48:35 -0600 Subject: [PATCH 003/289] add sorting to author page --- client/components/app/BookShelfToolbar.vue | 30 +++++++++++++++++++ .../pages/library/_library/authors/index.vue | 23 +++++++++++++- client/store/user.js | 4 ++- server/controllers/LibraryController.js | 1 + 4 files changed, 56 insertions(+), 2 deletions(-) diff --git a/client/components/app/BookShelfToolbar.vue b/client/components/app/BookShelfToolbar.vue index bd31768b..74ab02f1 100644 --- a/client/components/app/BookShelfToolbar.vue +++ b/client/components/app/BookShelfToolbar.vue @@ -98,6 +98,9 @@ @@ -183,6 +186,30 @@ export default { } ] }, + authorSortItems() { + return [ + { + text: this.$strings.LabelAuthorFirstLast, + value: 'name' + }, + { + text: this.$strings.LabelAuthorLastFirst, + value: 'lastFirst' + }, + { + text: this.$strings.LabelNumberOfBooks, + value: 'numBooks' + }, + { + text: this.$strings.LabelAddedAt, + value: 'addedAt' + }, + { + text: this.$strings.LabelLastUpdated, + value: 'lastUpdated' + } + ] + }, userIsAdminOrUp() { return this.$store.getters['user/getIsAdminOrUp'] }, @@ -455,6 +482,9 @@ export default { updateCollapseBookSeries() { this.saveSettings() }, + updateAuthorSort() { + this.saveSettings() + }, saveSettings() { this.$store.dispatch('user/updateUserSettings', this.settings) }, diff --git a/client/pages/library/_library/authors/index.vue b/client/pages/library/_library/authors/index.vue index 1f8e385b..a81865a5 100644 --- a/client/pages/library/_library/authors/index.vue +++ b/client/pages/library/_library/authors/index.vue @@ -48,9 +48,12 @@ export default { }, methods: { async init() { + this.settings = { ...this.$store.state.user.settings } this.authors = await this.$axios .$get(`/api/libraries/${this.currentLibraryId}/authors`) - .then((response) => response.authors) + .then((response) => { + return this.sortAuthors(response.authors) + }) .catch((error) => { console.error('Failed to load authors', error) return [] @@ -78,15 +81,33 @@ export default { }, editAuthor(author) { this.$store.commit('globals/showEditAuthorModal', author) + }, + sortAuthors(authors) { + const sortProp = this.settings.authorSortBy + const bDesc = this.settings.authorSortDesc === true ? -1 : 1 + return authors.sort((a, b) => { + if (typeof a[sortProp] === 'number' && typeof b[sortProp] === 'number') { + return a[sortProp] > b[sortProp] ? 1 * bDesc : -1 * bDesc + } + return a[sortProp].localeCompare(b[sortProp], undefined, { sensitivity: 'base' }) * bDesc + }) + }, + settingsUpdated(settings) { + for (const key in settings) { + this.settings[key] = settings[key] + } + this.sortAuthors(this.authors) } }, mounted() { this.init() + this.$eventBus.$on('user-settings', this.settingsUpdated) this.$root.socket.on('author_added', this.authorAdded) this.$root.socket.on('author_updated', this.authorUpdated) this.$root.socket.on('author_removed', this.authorRemoved) }, beforeDestroy() { + this.$eventBus.$off('user-settings', this.settingsUpdated) this.$root.socket.off('author_added', this.authorAdded) this.$root.socket.off('author_updated', this.authorUpdated) this.$root.socket.off('author_removed', this.authorRemoved) diff --git a/client/store/user.js b/client/store/user.js index 85babb09..40a8813f 100644 --- a/client/store/user.js +++ b/client/store/user.js @@ -11,7 +11,9 @@ export const state = () => ({ useChapterTrack: false, seriesSortBy: 'name', seriesSortDesc: false, - seriesFilterBy: 'all' + seriesFilterBy: 'all', + authorSortBy: 'name', + authorSortDesc: false, } }) diff --git a/server/controllers/LibraryController.js b/server/controllers/LibraryController.js index 70baff85..b2500d4f 100644 --- a/server/controllers/LibraryController.js +++ b/server/controllers/LibraryController.js @@ -636,6 +636,7 @@ class LibraryController { for (const author of authors) { const oldAuthor = author.getOldAuthor().toJSON() oldAuthor.numBooks = author.books.length + oldAuthor.lastFirst = author.lastFirst oldAuthors.push(oldAuthor) } From d24427aad8dd613d2035e0424930f705527b185a Mon Sep 17 00:00:00 2001 From: KeyboardHammer Date: Sat, 3 Feb 2024 22:04:40 -0600 Subject: [PATCH 004/289] fix property --- client/components/app/BookShelfToolbar.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/components/app/BookShelfToolbar.vue b/client/components/app/BookShelfToolbar.vue index 74ab02f1..9064c914 100644 --- a/client/components/app/BookShelfToolbar.vue +++ b/client/components/app/BookShelfToolbar.vue @@ -205,8 +205,8 @@ export default { value: 'addedAt' }, { - text: this.$strings.LabelLastUpdated, - value: 'lastUpdated' + text: this.$strings.LabelUpdatedAt, + value: 'updatedAt' } ] }, From 19af7454f219106a717966522e2b7e1c968c4a28 Mon Sep 17 00:00:00 2001 From: mikiher Date: Wed, 7 Feb 2024 20:57:50 +0200 Subject: [PATCH 005/289] Force Update LibraryItem model updatedAt refresh (fixes #2593) --- server/models/LibraryItem.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/server/models/LibraryItem.js b/server/models/LibraryItem.js index ee8a4bb8..c8971e91 100644 --- a/server/models/LibraryItem.js +++ b/server/models/LibraryItem.js @@ -372,6 +372,9 @@ class LibraryItem extends Model { if (!areEquivalent(updatedLibraryItem[key], existingValue, true)) { Logger.debug(`[LibraryItem] "${libraryItemExpanded.media.title}" ${key} updated from ${existingValue} to ${updatedLibraryItem[key]}`) hasLibraryItemUpdates = true + if (key === 'updatedAt') { + libraryItemExpanded.changed('updatedAt', true) + } } } if (hasLibraryItemUpdates) { @@ -399,6 +402,7 @@ class LibraryItem extends Model { isInvalid: !!oldLibraryItem.isInvalid, mtime: oldLibraryItem.mtimeMs, ctime: oldLibraryItem.ctimeMs, + updatedAt: oldLibraryItem.updatedAt, birthtime: oldLibraryItem.birthtimeMs, size: oldLibraryItem.size, lastScan: oldLibraryItem.lastScan, From 682aca0b2a3d8b10189c99cacff06ddf97bcf76e Mon Sep 17 00:00:00 2001 From: Teekeks Date: Thu, 22 Feb 2024 00:36:43 +0100 Subject: [PATCH 006/289] feat(i18n): made "Year in Review" UI elements translatable and added german translation for those --- .../components/stats/YearInReviewBanner.vue | 31 +++++++++++-------- client/strings/de.json | 9 ++++++ client/strings/en-us.json | 9 ++++++ 3 files changed, 36 insertions(+), 13 deletions(-) diff --git a/client/components/stats/YearInReviewBanner.vue b/client/components/stats/YearInReviewBanner.vue index f7736078..993443b5 100644 --- a/client/components/stats/YearInReviewBanner.vue +++ b/client/components/stats/YearInReviewBanner.vue @@ -7,9 +7,10 @@
- + @@ -20,24 +21,27 @@ chevron_left - + - Share + {{ + $strings.ButtonShare }} +
- +

{{ yearInReviewVariant + 1 }}

- + refresh - + chevron_right
@@ -46,7 +50,7 @@
- Share + {{ $strings.ButtonShare }}
@@ -56,24 +60,25 @@ chevron_left - + - Share + {{ $strings.ButtonShare }} +
- +

{{ yearInReviewServerVariant + 1 }}

- + refresh - + chevron_right
diff --git a/client/strings/de.json b/client/strings/de.json index 49037f4b..3bfb9189 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -41,12 +41,14 @@ "ButtonMatchAllAuthors": "Online Metadaten-Abgleich (alle Autoren)", "ButtonMatchBooks": "Online Metadaten-Abgleich (alle Medien)", "ButtonNevermind": "Abbrechen", + "ButtonNext": "Nächste", "ButtonOk": "Ok", "ButtonOpenFeed": "Feed öffnen", "ButtonOpenManager": "Manager öffnen", "ButtonPlay": "Abspielen", "ButtonPlaying": "Spielt", "ButtonPlaylists": "Wiedergabelisten", + "ButtonPrevious": "Vorherige", "ButtonPurgeAllCache": "Cache leeren", "ButtonPurgeItemsCache": "Lösche Medien-Cache", "ButtonPurgeMediaProgress": "Lösche Hörfortschritte", @@ -54,6 +56,7 @@ "ButtonQueueRemoveItem": "Aus der Warteschlange entfernen", "ButtonQuickMatch": "Schnellabgleich", "ButtonRead": "Lesen", + "ButtonRefresh": "Neu Laden", "ButtonRemove": "Löschen", "ButtonRemoveAll": "Alles löschen", "ButtonRemoveAllLibraryItems": "Lösche alle Bibliothekseinträge", @@ -73,6 +76,7 @@ "ButtonSelectFolderPath": "Auswahl Ordnerpfad", "ButtonSeries": "Serien", "ButtonSetChaptersFromTracks": "Kapitelerstellung aus Audiodateien", + "ButtonShare": "Teilen", "ButtonShiftTimes": "Zeitverschiebung", "ButtonShow": "Anzeigen", "ButtonStartM4BEncode": "M4B-Kodierung starten", @@ -174,6 +178,7 @@ "HeaderUpdateDetails": "Details aktualisieren", "HeaderUpdateLibrary": "Bibliothek aktualisieren", "HeaderUsers": "Benutzer", + "HeaderYearReview": "Jahr {0} in Übersicht", "HeaderYourStats": "Eigene Statistiken", "LabelAbridged": "Gekürzt", "LabelAccountType": "Kontoart", @@ -385,6 +390,7 @@ "LabelPermissionsDownload": "Herunterladen", "LabelPermissionsUpdate": "Aktualisieren", "LabelPermissionsUpload": "Hochladen", + "LabelPersonalYearReview": "Dein Jahr in Übersicht ({0})", "LabelPhotoPathURL": "Foto Pfad/URL", "LabelPlaylists": "Wiedergabelisten", "LabelPlayMethod": "Abspielmethode", @@ -429,6 +435,7 @@ "LabelSeries": "Serien", "LabelSeriesName": "Serienname", "LabelSeriesProgress": "Serienfortschritt", + "LabelServerYearReview": "Server Jahr in Übersicht ({0})", "LabelSetEbookAsPrimary": "Als Hauptbuch setzen", "LabelSetEbookAsSupplementary": "Als Ergänzung setzen", "LabelSettingsAudiobooksOnly": "Nur Hörbücher", @@ -545,6 +552,8 @@ "LabelViewQueue": "Player-Warteschlange anzeigen", "LabelVolume": "Lautstärke", "LabelWeekdaysToRun": "Wochentage für die Ausführung", + "LabelYearReviewHide": "Verstecke Jahr in Übersicht", + "LabelYearReviewShow": "Zeige Jahr in Übersicht", "LabelYourAudiobookDuration": "Laufzeit deines Mediums", "LabelYourBookmarks": "Lesezeichen", "LabelYourPlaylists": "Eigene Wiedergabelisten", diff --git a/client/strings/en-us.json b/client/strings/en-us.json index e3349d1f..4b2d6e4e 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -41,12 +41,14 @@ "ButtonMatchAllAuthors": "Match All Authors", "ButtonMatchBooks": "Match Books", "ButtonNevermind": "Nevermind", + "ButtonNext": "Next", "ButtonOk": "Ok", "ButtonOpenFeed": "Open Feed", "ButtonOpenManager": "Open Manager", "ButtonPlay": "Play", "ButtonPlaying": "Playing", "ButtonPlaylists": "Playlists", + "ButtonPrevious": "Previous", "ButtonPurgeAllCache": "Purge All Cache", "ButtonPurgeItemsCache": "Purge Items Cache", "ButtonPurgeMediaProgress": "Purge Media Progress", @@ -54,6 +56,7 @@ "ButtonQueueRemoveItem": "Remove from queue", "ButtonQuickMatch": "Quick Match", "ButtonRead": "Read", + "ButtonRefresh": "Refresh", "ButtonRemove": "Remove", "ButtonRemoveAll": "Remove All", "ButtonRemoveAllLibraryItems": "Remove All Library Items", @@ -73,6 +76,7 @@ "ButtonSelectFolderPath": "Select Folder Path", "ButtonSeries": "Series", "ButtonSetChaptersFromTracks": "Set chapters from tracks", + "ButtonShare": "Share", "ButtonShiftTimes": "Shift Times", "ButtonShow": "Show", "ButtonStartM4BEncode": "Start M4B Encode", @@ -174,6 +178,7 @@ "HeaderUpdateDetails": "Update Details", "HeaderUpdateLibrary": "Update Library", "HeaderUsers": "Users", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Your Stats", "LabelAbridged": "Abridged", "LabelAccountType": "Account Type", @@ -385,6 +390,7 @@ "LabelPermissionsDownload": "Can Download", "LabelPermissionsUpdate": "Can Update", "LabelPermissionsUpload": "Can Upload", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Photo Path/URL", "LabelPlaylists": "Playlists", "LabelPlayMethod": "Play Method", @@ -429,6 +435,7 @@ "LabelSeries": "Series", "LabelSeriesName": "Series Name", "LabelSeriesProgress": "Series Progress", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Set as primary", "LabelSetEbookAsSupplementary": "Set as supplementary", "LabelSettingsAudiobooksOnly": "Audiobooks only", @@ -545,6 +552,8 @@ "LabelViewQueue": "View player queue", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Weekdays to run", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Your audiobook duration", "LabelYourBookmarks": "Your Bookmarks", "LabelYourPlaylists": "Your Playlists", From 46448ce1e931e0edf79b422be2bf79e5d3a422ac Mon Sep 17 00:00:00 2001 From: rasmuskoit Date: Thu, 22 Feb 2024 09:46:09 +0200 Subject: [PATCH 007/289] Adds estonian translation --- client/plugins/i18n.js | 1 + client/strings/et.json | 768 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 769 insertions(+) create mode 100644 client/strings/et.json diff --git a/client/plugins/i18n.js b/client/plugins/i18n.js index a4a328c7..021682cf 100644 --- a/client/plugins/i18n.js +++ b/client/plugins/i18n.js @@ -10,6 +10,7 @@ const languageCodeMap = { 'de': { label: 'Deutsch', dateFnsLocale: 'de' }, 'en-us': { label: 'English', dateFnsLocale: 'enUS' }, 'es': { label: 'Español', dateFnsLocale: 'es' }, + 'et': { label: 'Eesti', dateFnsLocale: 'et' }, 'fr': { label: 'Français', dateFnsLocale: 'fr' }, 'hr': { label: 'Hrvatski', dateFnsLocale: 'hr' }, 'it': { label: 'Italiano', dateFnsLocale: 'it' }, diff --git a/client/strings/et.json b/client/strings/et.json new file mode 100644 index 00000000..f0641705 --- /dev/null +++ b/client/strings/et.json @@ -0,0 +1,768 @@ +{ + "ButtonAdd": "Lisa", + "ButtonAddChapters": "Lisa peatükid", + "ButtonAddDevice": "Lisa seade", + "ButtonAddLibrary": "Lisa raamatukogu", + "ButtonAddPodcasts": "Lisa podcastid", + "ButtonAddUser": "Lisa kasutaja", + "ButtonAddYourFirstLibrary": "Lisa oma esimene raamatukogu", + "ButtonApply": "Rakenda", + "ButtonApplyChapters": "Rakenda peatükid", + "ButtonAuthors": "Autorid", + "ButtonBrowseForFolder": "Sirvi kausta", + "ButtonCancel": "Tühista", + "ButtonCancelEncode": "Tühista kodeerimine", + "ButtonChangeRootPassword": "Muuda põhiparooli", + "ButtonCheckAndDownloadNewEpisodes": "Kontrolli ja laadi alla uued episoodid", + "ButtonChooseAFolder": "Vali kaust", + "ButtonChooseFiles": "Vali failid", + "ButtonClearFilter": "Tühista filter", + "ButtonCloseFeed": "Sulge voog", + "ButtonCollections": "Kogud", + "ButtonConfigureScanner": "Konfigureeri skanner", + "ButtonCreate": "Loo", + "ButtonCreateBackup": "Loo varundus", + "ButtonDelete": "Kustuta", + "ButtonDownloadQueue": "Järjekord", + "ButtonEdit": "Muuda", + "ButtonEditChapters": "Muuda peatükke", + "ButtonEditPodcast": "Muuda podcasti", + "ButtonForceReScan": "Sunnitud uuestiskaneerimine", + "ButtonFullPath": "Täielik asukoht", + "ButtonHide": "Peida", + "ButtonHome": "Avaleht", + "ButtonIssues": "Probleemid", + "ButtonJumpBackward": "Hüppa tagasi", + "ButtonJumpForward": "Hüppa edasi", + "ButtonLatest": "Uusim", + "ButtonLibrary": "Raamatukogu", + "ButtonLogout": "Logi välja", + "ButtonLookup": "Otsi", + "ButtonManageTracks": "Halda lugusid", + "ButtonMapChapterTitles": "Kaardista peatükkide pealkirjad", + "ButtonMatchAllAuthors": "Sobita kõik autorid", + "ButtonMatchBooks": "Sobita raamatud", + "ButtonNevermind": "Pole tähtis", + "ButtonNextChapter": "Järgmine peatükk", + "ButtonOk": "Ok", + "ButtonOpenFeed": "Ava voog", + "ButtonOpenManager": "Ava haldur", + "ButtonPause": "Peata", + "ButtonPlay": "Mängi", + "ButtonPlaying": "Mängib", + "ButtonPlaylists": "Esitusloendid", + "ButtonPreviousChapter": "Eelmine peatükk", + "ButtonPurgeAllCache": "Tühjenda kogu vahemälu", + "ButtonPurgeItemsCache": "Tühjenda esemete vahemälu", + "ButtonPurgeMediaProgress": "Tühjenda meedia edenemine", + "ButtonQueueAddItem": "Lisa järjekorda", + "ButtonQueueRemoveItem": "Eemalda järjekorrast", + "ButtonQuickMatch": "Kiire sobitamine", + "ButtonRead": "Loe", + "ButtonRemove": "Eemalda", + "ButtonRemoveAll": "Eemalda kõik", + "ButtonRemoveAllLibraryItems": "Eemalda kõik raamatukogu esemed", + "ButtonRemoveFromContinueListening": "Eemalda jätkake kuulamisest", + "ButtonRemoveFromContinueReading": "Eemalda jätkake lugemisest", + "ButtonRemoveSeriesFromContinueSeries": "Eemalda seeria jätkamisest", + "ButtonReScan": "Uuestiskaneeri", + "ButtonReset": "Lähtesta", + "ButtonResetToDefault": "Lähtesta vaikeseade", + "ButtonRestore": "Taasta", + "ButtonSave": "Salvesta", + "ButtonSaveAndClose": "Salvesta ja sulge", + "ButtonSaveTracklist": "Salvesta lugude loend", + "ButtonScan": "Skanneeri", + "ButtonScanLibrary": "Skanneeri raamatukogu", + "ButtonSearch": "Otsi", + "ButtonSelectFolderPath": "Vali kaustatee", + "ButtonSeries": "Sarjad", + "ButtonSetChaptersFromTracks": "Määra peatükid lugudest", + "ButtonShiftTimes": "Nihke ajad", + "ButtonShow": "Näita", + "ButtonStartM4BEncode": "Alusta M4B kodeerimist", + "ButtonStartMetadataEmbed": "Alusta metaandmete lisamist", + "ButtonSubmit": "Esita", + "ButtonTest": "Test", + "ButtonUpload": "Lae üles", + "ButtonUploadBackup": "Lae üles varundus", + "ButtonUploadCover": "Lae üles ümbris", + "ButtonUploadOPMLFile": "Lae üles OPML-fail", + "ButtonUserDelete": "Kustuta kasutaja {0}", + "ButtonUserEdit": "Muuda kasutajat {0}", + "ButtonViewAll": "Vaata kõiki", + "ButtonYes": "Jah", + "ErrorUploadFetchMetadataAPI": "Viga metaandmete hankimisel", + "ErrorUploadFetchMetadataNoResults": "Ei saanud metaandmeid hankida - proovi tiitlit ja/või autorit uuendada", + "ErrorUploadLacksTitle": "Peab olema pealkiri", + "HeaderAccount": "Konto", + "HeaderAdvanced": "Täpsem", + "HeaderAppriseNotificationSettings": "Apprise teavitamise seaded", + "HeaderAudiobookTools": "Heliraamatu failihaldustööriistad", + "HeaderAudioTracks": "Helirajad", + "HeaderAuthentication": "Autentimine", + "HeaderBackups": "Varukoopiad", + "HeaderChangePassword": "Muuda parooli", + "HeaderChapters": "Peatükid", + "HeaderChooseAFolder": "Vali kaust", + "HeaderCollection": "Kogu", + "HeaderCollectionItems": "Kogu esemed", + "HeaderCover": "Ümbris", + "HeaderCurrentDownloads": "Praegused allalaadimised", + "HeaderCustomMetadataProviders": "Kohandatud metaandmete pakkujad", + "HeaderDetails": "Detailid", + "HeaderDownloadQueue": "Allalaadimise järjekord", + "HeaderEbookFiles": "E-raamatute failid", + "HeaderEmail": "E-post", + "HeaderEmailSettings": "E-posti seaded", + "HeaderEpisodes": "Episoodid", + "HeaderEreaderDevices": "E-lugerite seadmed", + "HeaderEreaderSettings": "E-lugerite seadistused", + "HeaderFiles": "Failid", + "HeaderFindChapters": "Leia peatükid", + "HeaderIgnoredFiles": "Ignoreeritud failid", + "HeaderItemFiles": "Esemete failid", + "HeaderItemMetadataUtils": "Eseme metaandmete tööriistad", + "HeaderLastListeningSession": "Viimane kuulamissessioon", + "HeaderLatestEpisodes": "Viimased episoodid", + "HeaderLibraries": "Raamatukogud", + "HeaderLibraryFiles": "Raamatukogu failid", + "HeaderLibraryStats": "Raamatukogu statistika", + "HeaderListeningSessions": "Kuulamissessioonid", + "HeaderListeningStats": "Kuulamise statistika", + "HeaderLogin": "Logi sisse", + "HeaderLogs": "Logid", + "HeaderManageGenres": "Halda žanre", + "HeaderManageTags": "Halda silte", + "HeaderMapDetails": "Kaardi detailid", + "HeaderMatch": "Sobita", + "HeaderMetadataOrderOfPrecedence": "Metaandmete eelnevusjärjestus", + "HeaderMetadataToEmbed": "Manusta metaandmed", + "HeaderNewAccount": "Uus konto", + "HeaderNewLibrary": "Uus raamatukogu", + "HeaderNotifications": "Teatised", + "HeaderOpenIDConnectAuthentication": "OpenID Connect autentimine", + "HeaderOpenRSSFeed": "Ava RSS-voog", + "HeaderOtherFiles": "Muud failid", + "HeaderPasswordAuthentication": "Parooli autentimine", + "HeaderPermissions": "Õigused", + "HeaderPlayerQueue": "Mängija järjekord", + "HeaderPlaylist": "Mänguloend", + "HeaderPlaylistItems": "Mänguloendi esemed", + "HeaderPodcastsToAdd": "Lisatavad podcastid", + "HeaderPreviewCover": "Eelvaate kaas", + "HeaderRemoveEpisode": "Eemalda episood", + "HeaderRemoveEpisodes": "Eemalda {0} episoodi", + "HeaderRSSFeedGeneral": "RSS-i üksikasjad", + "HeaderRSSFeedIsOpen": "RSS-voog on avatud", + "HeaderRSSFeeds": "RSS-vooged", + "HeaderSavedMediaProgress": "Salvestatud meedia edenemine", + "HeaderSchedule": "Ajakava", + "HeaderScheduleLibraryScans": "Ajasta automaatsed raamatukogu skaneerimised", + "HeaderSession": "Sessioon", + "HeaderSetBackupSchedule": "Määra varunduse ajakava", + "HeaderSettings": "Seaded", + "HeaderSettingsDisplay": "Kuva", + "HeaderSettingsExperimental": "Katsetusfunktsioonid", + "HeaderSettingsGeneral": "Üldised", + "HeaderSettingsScanner": "Skanner", + "HeaderSleepTimer": "Uinaku taimer", + "HeaderStatsLargestItems": "Suurimad esemed", + "HeaderStatsLongestItems": "Kõige pikemad esemed (tunnid)", + "HeaderStatsMinutesListeningChart": "Kuulamise minutid (viimased 7 päeva)", + "HeaderStatsRecentSessions": "Hiljutised sessioonid", + "HeaderStatsTop10Authors": "Top 10 autorit", + "HeaderStatsTop5Genres": "Top 5 žanrit", + "HeaderTableOfContents": "Sisukord", + "HeaderTools": "Tööriistad", + "HeaderUpdateAccount": "Uuenda kontot", + "HeaderUpdateAuthor": "Uuenda autorit", + "HeaderUpdateDetails": "Uuenda detaile", + "HeaderUpdateLibrary": "Uuenda raamatukogu", + "HeaderUsers": "Kasutajad", + "HeaderYourStats": "Sinu statistika", + "LabelAbridged": "Kärbitud", + "LabelAccountType": "Konto tüüp", + "LabelAccountTypeAdmin": "Administraator", + "LabelAccountTypeGuest": "Külaline", + "LabelAccountTypeUser": "Kasutaja", + "LabelActivity": "Tegevus", + "LabelAdded": "Lisatud", + "LabelAddedAt": "Lisatud", + "LabelAddToCollection": "Lisa kogusse", + "LabelAddToCollectionBatch": "Lisa {0} raamatut kogusse", + "LabelAddToPlaylist": "Lisa mänguloendisse", + "LabelAddToPlaylistBatch": "Lisa {0} eset mänguloendisse", + "LabelAdminUsersOnly": "Ainult administraatorid", + "LabelAll": "Kõik", + "LabelAllUsers": "Kõik kasutajad", + "LabelAllUsersExcludingGuests": "Kõik kasutajad, välja arvatud külalised", + "LabelAllUsersIncludingGuests": "Kõik kasutajad, kaasa arvatud külalised", + "LabelAlreadyInYourLibrary": "Juba teie raamatukogus", + "LabelAppend": "Lisa", + "LabelAuthor": "Autor", + "LabelAuthorFirstLast": "Autor (Eesnimi Perekonnanimi)", + "LabelAuthorLastFirst": "Autor (Perekonnanimi, Eesnimi)", + "LabelAuthors": "Autorid", + "LabelAutoDownloadEpisodes": "Automaatne episoodide allalaadimine", + "LabelAutoFetchMetadata": "Automaatne metaandmete hankimine", + "LabelAutoFetchMetadataHelp": "Toob tiitli, autori ja seeria metaandmed üleslaadimise hõlbustamiseks. Lisametaandmed võivad pärast üleslaadimist vajada vastavust.", + "LabelAutoLaunch": "Automaatne käivitamine", + "LabelAutoLaunchDescription": "Suunab automaatselt autentimist pakkuvale teenusele, kui navigeeritakse sisselogimislehele (käsitsi ülekirjutuse tee /login?autoLaunch=0)", + "LabelAutoRegister": "Automaatne registreerimine", + "LabelAutoRegisterDescription": "Loo uued kasutajad automaatselt sisselogimisel", + "LabelBackToUser": "Tagasi kasutajale", + "LabelBackupLocation": "Varukoopia asukoht", + "LabelBackupsEnableAutomaticBackups": "Luba automaatsed varukoopiad", + "LabelBackupsEnableAutomaticBackupsHelp": "Varukoopiad salvestatakse /metadata/backups kausta", + "LabelBackupsMaxBackupSize": "Maksimaalne varukoopia suurus (GB-des)", + "LabelBackupsMaxBackupSizeHelp": "Kaitsena valesti seadistamise vastu ebaõnnestuvad varukoopiad, kui need ületavad seadistatud suuruse.", + "LabelBackupsNumberToKeep": "Varukoopiate arv, mida hoida", + "LabelBackupsNumberToKeepHelp": "Ühel ajal eemaldatakse ainult 1 varukoopia, seega kui teil on juba rohkem varukoopiaid kui siin määratud, peaksite need käsitsi eemaldama.", + "LabelBitrate": "Bittkiirus", + "LabelBooks": "Raamatud", + "LabelButtonText": "Nupu tekst", + "LabelChangePassword": "Muuda parooli", + "LabelChannels": "Kanalid", + "LabelChapters": "Peatükid", + "LabelChaptersFound": "peatükid leitud", + "LabelChapterTitle": "Peatüki pealkiri", + "LabelClickForMoreInfo": "Klõpsa lisateabe saamiseks", + "LabelClosePlayer": "Sulge mängija", + "LabelCodec": "Kodek", + "LabelCollapseSeries": "Ahenda seeria", + "LabelCollection": "Kogu", + "LabelCollections": "Kogud", + "LabelComplete": "Valmis", + "LabelConfirmPassword": "Kinnita parool", + "LabelContinueListening": "Jätka kuulamist", + "LabelContinueReading": "Jätka lugemist", + "LabelContinueSeries": "Jätka seeriat", + "LabelCover": "Ümbris", + "LabelCoverImageURL": "Ümbrise pildi URL", + "LabelCreatedAt": "Loodud", + "LabelCronExpression": "Croni valem", + "LabelCurrent": "Praegune", + "LabelCurrently": "Praegu:", + "LabelCustomCronExpression": "Kohandatud Croni valem:", + "LabelDatetime": "Kuupäev ja kellaaeg", + "LabelDeleteFromFileSystemCheckbox": "Kustuta failisüsteemist (ärge märkige seda ära, et eemaldada ainult andmebaasist)", + "LabelDescription": "Kirjeldus", + "LabelDeselectAll": "Tühista kõigi valimine", + "LabelDevice": "Seade", + "LabelDeviceInfo": "Seadme info", + "LabelDeviceIsAvailableTo": "Seade on saadaval kasutajale...", + "LabelDirectory": "Kataloog", + "LabelDiscFromFilename": "Ketas failinimest", + "LabelDiscFromMetadata": "Ketas metaandmetest", + "LabelDiscover": "Avasta", + "LabelDownload": "Lae alla", + "LabelDownloadNEpisodes": "Lae alla {0} episoodi", + "LabelDuration": "Kestus", + "LabelDurationFound": "Leitud kestus:", + "LabelEbook": "E-raamat", + "LabelEbooks": "E-raamatud", + "LabelEdit": "Muuda", + "LabelEmail": "E-post", + "LabelEmailSettingsFromAddress": "Saatja aadress", + "LabelEmailSettingsSecure": "Turvaline", + "LabelEmailSettingsSecureHelp": "Kui see on tõene, kasutab ühendus serveriga ühenduse loomisel TLS-i. Kui see on väär, kasutatakse TLS-i, kui server toetab STARTTLS-i laiendust. Enamikul juhtudest seadke see väärtus tõeks, kui ühendate pordile 465. Pordi 587 või 25 korral hoidke seda väär. (nodemailer.com/smtp/#authentication)", + "LabelEmailSettingsTestAddress": "Testi aadress", + "LabelEmbeddedCover": "Manustatud kaas", + "LabelEnable": "Luba", + "LabelEnd": "Lõpp", + "LabelEpisode": "Episood", + "LabelEpisodeTitle": "Episoodi pealkiri", + "LabelEpisodeType": "Episoodi tüüp", + "LabelExample": "Näide", + "LabelExplicit": "Vulgaarne", + "LabelFeedURL": "Voogu URL", + "LabelFetchingMetadata": "Metaandmete hankimine", + "LabelFile": "Fail", + "LabelFileBirthtime": "Faili sünniaeg", + "LabelFileModified": "Faili muudetud", + "LabelFilename": "Failinimi", + "LabelFilterByUser": "Filtri alusel kasutaja järgi", + "LabelFindEpisodes": "Otsi episoodid", + "LabelFinished": "Lõpetatud", + "LabelFolder": "Kaust", + "LabelFolders": "Kataloogid", + "LabelFontBold": "Paks", + "LabelFontFamily": "Fondi pere", + "LabelFontItalic": "Kaldkiri", + "LabelFontScale": "Fondi suurus", + "LabelFontStrikethrough": "Üle joonitud", + "LabelFormat": "Vorming", + "LabelGenre": "Žanr", + "LabelGenres": "Žanrid", + "LabelHardDeleteFile": "Faili lõplik kustutamine", + "LabelHasEbook": "On e-raamat", + "LabelHasSupplementaryEbook": "On täiendav e-raamat", + "LabelHighestPriority": "Kõrgeim prioriteet", + "LabelHost": "Host", + "LabelHour": "Tund", + "LabelIcon": "Ikoon", + "LabelImageURLFromTheWeb": "Pildi URL veebist", + "LabelIncludeInTracklist": "Kaasa jälgimisloendis", + "LabelIncomplete": "Puudulik", + "LabelInProgress": "Pooleli", + "LabelInterval": "Intervall", + "LabelIntervalCustomDailyWeekly": "Kohandatud päevane/nädalane", + "LabelIntervalEvery12Hours": "Iga 12 tunni tagant", + "LabelIntervalEvery15Minutes": "Iga 15 minuti tagant", + "LabelIntervalEvery2Hours": "Iga 2 tunni tagant", + "LabelIntervalEvery30Minutes": "Iga 30 minuti tagant", + "LabelIntervalEvery6Hours": "Iga 6 tunni tagant", + "LabelIntervalEveryDay": "Iga päev", + "LabelIntervalEveryHour": "Iga tunni tagant", + "LabelInvalidParts": "Vigased osad", + "LabelInvert": "Pööra ümber", + "LabelItem": "Kirje", + "LabelLanguage": "Keel", + "LabelLanguageDefaultServer": "Vaikeserveri keel", + "LabelLastBookAdded": "Viimati lisatud raamat", + "LabelLastBookUpdated": "Viimati uuendatud raamat", + "LabelLastSeen": "Viimati nähtud", + "LabelLastTime": "Viimati aeg", + "LabelLastUpdate": "Viimane uuendus", + "LabelLayout": "Paigutus", + "LabelLayoutSinglePage": "Üks lehekülg", + "LabelLayoutSplitPage": "Jagatud lehekülg", + "LabelLess": "Vähem", + "LabelLibrariesAccessibleToUser": "Kasutajale ligipääsetavad raamatukogud", + "LabelLibrary": "Raamatukogu", + "LabelLibraryItem": "Raamatukogu kirje", + "LabelLibraryName": "Raamatukogu nimi", + "LabelLimit": "Piirang", + "LabelLineSpacing": "Joonevahe", + "LabelListenAgain": "Kuula uuesti", + "LabelLogLevelDebug": "Silumine", + "LabelLogLevelInfo": "Teave", + "LabelLogLevelWarn": "Hoiatus", + "LabelLookForNewEpisodesAfterDate": "Otsi uusi episoodid pärast seda kuupäeva", + "LabelLowestPriority": "Madalaim prioriteet", + "LabelMatchExistingUsersBy": "Sobita olemasolevad kasutajad", + "LabelMatchExistingUsersByDescription": "Kasutatakse olemasolevate kasutajate ühendamiseks. Ühendatud kasutajaid sobitatakse teie SSO pakkuja unikaalse ID järgi.", + "LabelMediaPlayer": "Meediapleier", + "LabelMediaType": "Meedia tüüp", + "LabelMetadataOrderOfPrecedenceDescription": "Kõrgema prioriteediga metaandmete allikad võtavad üle madalama prioriteediga metaandmete allikad", + "LabelMetadataProvider": "Metaandmete pakkuja", + "LabelMetaTag": "Meta märge", + "LabelMetaTags": "Meta märgendid", + "LabelMinute": "Minut", + "LabelMissing": "Puudub", + "LabelMissingParts": "Puuduvad osad", + "LabelMobileRedirectURIs": "Lubatud mobiilile suunamise URI-d", + "LabelMobileRedirectURIsDescription": "See on mobiilirakenduste jaoks kehtivate suunamise URI-de lubatud nimekiri. Vaikimisi on selleks audiobookshelf://oauth, mida saate eemaldada või täiendada täiendavate URI-dega kolmanda osapoole rakenduste integreerimiseks. Tärni (*) ainukese kirjena kasutamine võimaldab mis tahes URI-d.", + "LabelMore": "Rohkem", + "LabelMoreInfo": "Rohkem infot", + "LabelName": "Nimi", + "LabelNarrator": "Jutustaja", + "LabelNarrators": "Jutustajad", + "LabelNew": "Uus", + "LabelNewestAuthors": "Uusimad autorid", + "LabelNewestEpisodes": "Uusimad episoodid", + "LabelNewPassword": "Uus parool", + "LabelNextBackupDate": "Järgmine varukoopia kuupäev", + "LabelNextScheduledRun": "Järgmine ajakava järgmine", + "LabelNoEpisodesSelected": "Episoodid pole valitud", + "LabelNotes": "Märkused", + "LabelNotFinished": "Ei ole lõpetatud", + "LabelNotificationAppriseURL": "Apprise URL-id", + "LabelNotificationAvailableVariables": "Saadaolevad muutujad", + "LabelNotificationBodyTemplate": "Keha mall", + "LabelNotificationEvent": "Teavituse sündmus", + "LabelNotificationsMaxFailedAttempts": "Maksimaalsed ebaõnnestunud katsed", + "LabelNotificationsMaxFailedAttemptsHelp": "Teatised keelatakse, kui need ebaõnnestuvad nii palju kordi", + "LabelNotificationsMaxQueueSize": "Teavituste sündmuste maksimaalne järjekorra suurus", + "LabelNotificationsMaxQueueSizeHelp": "Sündmused on piiratud 1 sekundiga. Sündmusi ignoreeritakse, kui järjekord on maksimumsuuruses. See takistab teavituste rämpsposti.", + "LabelNotificationTitleTemplate": "Pealkirja mall", + "LabelNotStarted": "Pole alustatud", + "LabelNumberOfBooks": "Raamatute arv", + "LabelNumberOfEpisodes": "Episoodide arv", + "LabelOpenRSSFeed": "Ava RSS voog", + "LabelOverwrite": "Kirjuta üle", + "LabelPassword": "Parool", + "LabelPath": "Asukoht", + "LabelPermissionsAccessAllLibraries": "Saab ligi kõikidele raamatukogudele", + "LabelPermissionsAccessAllTags": "Saab ligi kõikidele siltidele", + "LabelPermissionsAccessExplicitContent": "Saab ligi vulgaarsele sisule", + "LabelPermissionsDelete": "Saab kustutada", + "LabelPermissionsDownload": "Saab alla laadida", + "LabelPermissionsUpdate": "Saab uuendada", + "LabelPermissionsUpload": "Saab üles laadida", + "LabelPhotoPathURL": "Foto tee/URL", + "LabelPlaylists": "Mänguloendid", + "LabelPlayMethod": "Esitusmeetod", + "LabelPodcast": "Podcast", + "LabelPodcasts": "Podcastid", + "LabelPodcastSearchRegion": "Podcasti otsingu piirkond", + "LabelPodcastType": "Podcasti tüüp", + "LabelPort": "Port", + "LabelPrefixesToIgnore": "Eiramiseks eesliited (tõstutundetu)", + "LabelPreventIndexing": "Vältige oma voogu indekseerimist iTunes'i ja Google podcasti kataloogides", + "LabelPrimaryEbook": "Esmane e-raamat", + "LabelProgress": "Edenemine", + "LabelProvider": "Pakkuja", + "LabelPubDate": "Avaldamise kuupäev", + "LabelPublisher": "Kirjastaja", + "LabelPublishYear": "Aasta avaldamine", + "LabelRead": "Lugenud", + "LabelReadAgain": "Loe uuesti", + "LabelReadEbookWithoutProgress": "Lugege e-raamatut ilma edenemist säilitamata", + "LabelRecentlyAdded": "Hiljuti lisatud", + "LabelRecentSeries": "Hiljutised seeriad", + "LabelRecommended": "Soovitatud", + "LabelRedo": "Tee uuesti", + "LabelRegion": "Piirkond", + "LabelReleaseDate": "Väljalaske kuupäev", + "LabelRemoveCover": "Eemalda ümbris", + "LabelRowsPerPage": "Rida lehe kohta", + "LabelRSSFeedCustomOwnerEmail": "Kohandatud omaniku e-post", + "LabelRSSFeedCustomOwnerName": "Kohandatud omaniku nimi", + "LabelRSSFeedOpen": "Ava RSS voog", + "LabelRSSFeedPreventIndexing": "Vältige indekseerimist", + "LabelRSSFeedSlug": "RSS voog Slug", + "LabelRSSFeedURL": "RSS voog URL", + "LabelSearchTerm": "Otsingutermin", + "LabelSearchTitle": "Otsi pealkirja", + "LabelSearchTitleOrASIN": "Otsi pealkirja või ASIN-i", + "LabelSeason": "Hooaeg", + "LabelSelectAllEpisodes": "Vali kõik episoodid", + "LabelSelectEpisodesShowing": "Valige {0} näidatavat episoodi", + "LabelSelectUsers": "Valige kasutajad", + "LabelSendEbookToDevice": "Saada e-raamat seadmele...", + "LabelSequence": "Järjestus", + "LabelSeries": "Seeria", + "LabelSeriesName": "Seeria nimi", + "LabelSeriesProgress": "Seeria edenemine", + "LabelSetEbookAsPrimary": "Määra peamiseks", + "LabelSetEbookAsSupplementary": "Määra täiendavaks", + "LabelSettingsAudiobooksOnly": "Ainult heliraamatud", + "LabelSettingsAudiobooksOnlyHelp": "Selle seadistuse lubamine eirab e-raamatute faile, välja arvatud juhul, kui need on heliraamatu kaustas, kus need seatakse täiendavate e-raamatutena", + "LabelSettingsBookshelfViewHelp": "Skeumorfne kujundus puidust riiulitega", + "LabelSettingsChromecastSupport": "Chromecasti tugi", + "LabelSettingsDateFormat": "Kuupäeva vorming", + "LabelSettingsDisableWatcher": "Keela vaatamine", + "LabelSettingsDisableWatcherForLibrary": "Keela kaustavaatamine raamatukogu jaoks", + "LabelSettingsDisableWatcherHelp": "Keelab automaatse lisamise/uuendamise, kui failimuudatusi tuvastatakse. *Nõuab serveri taaskäivitamist", + "LabelSettingsEnableWatcher": "Luba vaatamine", + "LabelSettingsEnableWatcherForLibrary": "Luba kaustavaatamine raamatukogu jaoks", + "LabelSettingsEnableWatcherHelp": "Lubab automaatset lisamist/uuendamist, kui tuvastatakse failimuudatused. *Nõuab serveri taaskäivitamist", + "LabelSettingsExperimentalFeatures": "Eksperimentaalsed funktsioonid", + "LabelSettingsExperimentalFeaturesHelp": "Arengus olevad funktsioonid, mis vajavad teie tagasisidet ja abi testimisel. Klõpsake GitHubi arutelu avamiseks.", + "LabelSettingsFindCovers": "Leia ümbrised", + "LabelSettingsFindCoversHelp": "Kui teie heliraamatul pole sisseehitatud ümbrist ega ümbrise pilti kaustas, proovib skanner leida ümbrist.
Märkus: see pikendab skaneerimisaega", + "LabelSettingsHideSingleBookSeries": "Peida üksikute raamatute seeriad", + "LabelSettingsHideSingleBookSeriesHelp": "Ühe raamatuga seeriaid peidetakse seeria lehelt ja avalehe riiulitelt.", + "LabelSettingsHomePageBookshelfView": "Avaleht kasutage raamatukoguvaadet", + "LabelSettingsLibraryBookshelfView": "Raamatukogu kasutamiseks kasutage raamatukoguvaadet", + "LabelSettingsParseSubtitles": "Lugege subtiitreid", + "LabelSettingsParseSubtitlesHelp": "Eraldage subtiitrid heliraamatu kaustade nimedest.
Subtiitrid peavad olema eraldatud \" - \".
Näiteks: \"Raamatu pealkiri - Siin on alapealkiri\" alapealkiri on \"Siin on alapealkiri\"", + "LabelSettingsPreferMatchedMetadata": "Eelista sobitatud metaandmeid", + "LabelSettingsPreferMatchedMetadataHelp": "Sobitatud andmed kirjutavad Kiir Sobitamise kasutamisel üle üksikasjad.", + "LabelSettingsSkipMatchingBooksWithASIN": "Jätke ASIN-iga sobituvad raamatud vahele", + "LabelSettingsSkipMatchingBooksWithISBN": "Jätke ISBN-iga sobituvad raamatud vahele", + "LabelSettingsSortingIgnorePrefixes": "Ignoreeri eesliiteid sortimisel", + "LabelSettingsSortingIgnorePrefixesHelp": "nt. eesliidet \"the\" kasutades raamatu pealkiri \"The Book Title\" sorteeritakse \"Book Title, The\"", + "LabelSettingsSquareBookCovers": "Kasutage ruudukujulisi raamatu kaasi", + "LabelSettingsSquareBookCoversHelp": "Eelistage ruudukujulisi kaasi tavaliste 1.6:1 raamatu ümbrise asemel", + "LabelSettingsStoreCoversWithItem": "Salvesta kaaned üksusega", + "LabelSettingsStoreCoversWithItemHelp": "Vaikimisi salvestatakse kaaned /metadata/items kausta. Selle seadistuse lubamine salvestab kaaned teie raamatukogu üksuse kausta. Hoitakse ainult ühte faili nimega \"kaas\"", + "LabelSettingsStoreMetadataWithItem": "Salvesta metaandmed üksusega", + "LabelSettingsStoreMetadataWithItemHelp": "Vaikimisi salvestatakse metaandmed /metadata/items kausta. Selle seadistuse lubamine salvestab metaandmed teie raamatukogu üksuse kaustadesse", + "LabelSettingsTimeFormat": "Kellaaja vorming", + "LabelShowAll": "Näita kõiki", + "LabelSize": "Suurus", + "LabelSleepTimer": "Uinaku taimer", + "LabelSlug": "Slug", + "LabelStart": "Alusta", + "LabelStarted": "Alustatud", + "LabelStartedAt": "Alustatud", + "LabelStartTime": "Alustamise aeg", + "LabelStatsAudioTracks": "Audiojäljed", + "LabelStatsAuthors": "Autorid", + "LabelStatsBestDay": "Parim päev", + "LabelStatsDailyAverage": "Päevane keskmine", + "LabelStatsDays": "Päevad", + "LabelStatsDaysListened": "Kuulatud päevad", + "LabelStatsHours": "Tunnid", + "LabelStatsInARow": "järjest", + "LabelStatsItemsFinished": "Lõpetatud üksused", + "LabelStatsItemsInLibrary": "Üksused raamatukogus", + "LabelStatsMinutes": "minutit", + "LabelStatsMinutesListening": "Kuulamise minutid", + "LabelStatsOverallDays": "Kokku päevad", + "LabelStatsOverallHours": "Kokku tunnid", + "LabelStatsWeekListening": "Nädala kuulamine", + "LabelSubtitle": "Alapealkiri", + "LabelSupportedFileTypes": "Toetatud failitüübid", + "LabelTag": "Silt", + "LabelTags": "Sildid", + "LabelTagsAccessibleToUser": "Kasutajale kättesaadavad sildid", + "LabelTagsNotAccessibleToUser": "Kasutajale mittekättesaadavad sildid", + "LabelTasks": "Käimasolevad ülesanded", + "LabelTextEditorBulletedList": "Punktloend", + "LabelTextEditorLink": "Link", + "LabelTextEditorNumberedList": "Numberloend", + "LabelTextEditorUnlink": "Eemalda link", + "LabelTheme": "Teema", + "LabelThemeDark": "Tume", + "LabelThemeLight": "Hele", + "LabelTimeBase": "Aja alus", + "LabelTimeListened": "Kuulatud aeg", + "LabelTimeListenedToday": "Täna kuulatud aeg", + "LabelTimeRemaining": "{0} jäänud", + "LabelTimeToShift": "Nihutamiseks sekundites kuluv aeg", + "LabelTitle": "Pealkiri", + "LabelToolsEmbedMetadata": "Manusta metaandmed", + "LabelToolsEmbedMetadataDescription": "Manusta metaandmed helifailidesse, sealhulgas kaanepilt ja peatükid.", + "LabelToolsMakeM4b": "Loo M4B heliraamatu fail", + "LabelToolsMakeM4bDescription": "Loo .M4B heliraamatu fail, kuhu on manustatud metaandmed, kaanepilt ja peatükid.", + "LabelToolsSplitM4b": "Jaga M4B MP3-deks", + "LabelToolsSplitM4bDescription": "Loo MP3-d M4B-st peatükkide kaupa, kus on manustatud metaandmed, kaanepilt ja peatükid.", + "LabelTotalDuration": "Kogukestus", + "LabelTotalTimeListened": "Kogu kuulatud aeg", + "LabelTrackFromFilename": "Jälg nimest", + "LabelTrackFromMetadata": "Jälg metaandmetest", + "LabelTracks": "Jäljed", + "LabelTracksMultiTrack": "Mitmejälg", + "LabelTracksNone": "Ühtegi jälgimist", + "LabelTracksSingleTrack": "Üksikjälg", + "LabelType": "Tüüp", + "LabelUnabridged": "Täismahus", + "LabelUndo": "Võta tagasi", + "LabelUnknown": "Tundmatu", + "LabelUpdateCover": "Uuenda kaant", + "LabelUpdateCoverHelp": "Luba üle kirjutamine olemasolevate kaante jaoks valitud raamatutele, kui leitakse sobivus", + "LabelUpdatedAt": "Uuendatud", + "LabelUpdateDetails": "Uuenda üksikasju", + "LabelUpdateDetailsHelp": "Luba üle kirjutamine olemasolevate üksikasjade jaoks valitud raamatutele, kui leitakse sobivus", + "LabelUploaderDragAndDrop": "Lohista ja aseta faile või kaustu", + "LabelUploaderDropFiles": "Aseta failid", + "LabelUploaderItemFetchMetadataHelp": "Hangi automaatselt pealkiri, autor ja seeria", + "LabelUseChapterTrack": "Kasuta peatüki jälge", + "LabelUseFullTrack": "Kasuta täielikku jälge", + "LabelUser": "Kasutaja", + "LabelUsername": "Kasutajanimi", + "LabelValue": "Väärtus", + "LabelVersion": "Versioon", + "LabelViewBookmarks": "Vaata järjehoidjaid", + "LabelViewChapters": "Vaata peatükke", + "LabelViewQueue": "Vaata esitusjärjekorda", + "LabelVolume": "Heli tugevus", + "LabelWeekdaysToRun": "Päevad nädalas käivitamiseks", + "LabelYourAudiobookDuration": "Teie heliraamatu kestus", + "LabelYourBookmarks": "Teie järjehoidjad", + "LabelYourPlaylists": "Teie esitusloendid", + "LabelYourProgress": "Teie edenemine", + "MessageAddToPlayerQueue": "Lisa esitusjärjekorda", + "MessageAppriseDescription": "Selle funktsiooni kasutamiseks peate käivitama Apprise API eksemplari või API, mis töötleb samu päringuid.
Apprise API URL peaks olema täielik URL-rada teatise saatmiseks, näiteks kui teie API eksemplar töötab aadressil http://192.168.1.1:8337, siis peaksite sisestama http://192.168.1.1:8337/notify.", + "MessageBackupsDescription": "Varukoopiad hõlmavad kasutajaid, kasutajate edenemist, raamatukogu üksikasju, serveri seadeid ja kaustades /metadata/items ja /metadata/authors salvestatud pilte. Varukoopiad ei hõlma ühtegi teie raamatukogu kaustades olevat faili.", + "MessageBatchQuickMatchDescription": "Kiire sobitamine üritab lisada valitud üksustele puuduvad kaaned ja metaandmed. Luba allpool olevad valikud, et lubada Kiire sobitamine'il üle kirjutada olemasolevaid kaasi ja/või metaandmeid.", + "MessageBookshelfNoCollections": "Te pole veel ühtegi kogumit teinud", + "MessageBookshelfNoResultsForFilter": "Filtrile \"{0}: {1}\" pole tulemusi", + "MessageBookshelfNoRSSFeeds": "Ühtegi RSS-i voogu pole avatud", + "MessageBookshelfNoSeries": "Teil pole ühtegi seeriat", + "MessageChapterEndIsAfter": "Peatüki lõpp on pärast teie heliraamatu lõppu", + "MessageChapterErrorFirstNotZero": "Esimene peatükk peab algama 0-st", + "MessageChapterErrorStartGteDuration": "Vigane algusaeg peab olema väiksem kui heliraamatu kestus", + "MessageChapterErrorStartLtPrev": "Vigane algusaeg peab olema suurem või võrdne eelneva peatüki algusajaga", + "MessageChapterStartIsAfter": "Peatüki algus on pärast teie heliraamatu lõppu", + "MessageCheckingCron": "Croni kontrollimine...", + "MessageConfirmCloseFeed": "Olete kindel, et soovite selle voo sulgeda?", + "MessageConfirmDeleteBackup": "Olete kindel, et soovite varukoopia kustutada {0} kohta?", + "MessageConfirmDeleteFile": "See kustutab faili teie failisüsteemist. Olete kindel?", + "MessageConfirmDeleteLibrary": "Olete kindel, et soovite raamatukogu \"{0}\" lõplikult kustutada?", + "MessageConfirmDeleteLibraryItem": "See kustutab raamatukogu üksuse andmebaasist ja failisüsteemist. Olete kindel?", + "MessageConfirmDeleteLibraryItems": "See kustutab {0} raamatukogu üksust andmebaasist ja failisüsteemist. Olete kindel?", + "MessageConfirmDeleteSession": "Olete kindel, et soovite selle seansi kustutada?", + "MessageConfirmForceReScan": "Olete kindel, et soovite jõuga uuesti skannida?", + "MessageConfirmMarkAllEpisodesFinished": "Olete kindel, et soovite kõik episoodid lõpetatuks märkida?", + "MessageConfirmMarkAllEpisodesNotFinished": "Olete kindel, et soovite kõik episoodid mitte lõpetatuks märkida?", + "MessageConfirmMarkSeriesFinished": "Olete kindel, et soovite selle seeria kõik raamatud lõpetatuks märkida?", + "MessageConfirmMarkSeriesNotFinished": "Olete kindel, et soovite selle seeria kõik raamatud mitte lõpetatuks märkida?", + "MessageConfirmQuickEmbed": "Hoiatus! Quick Embed ei tee varukoopiaid teie helifailidest. Veenduge, et teil oleks varukoopia oma helifailidest.

Kas soovite jätkata?", + "MessageConfirmRemoveAllChapters": "Olete kindel, et soovite eemaldada kõik peatükid?", + "MessageConfirmRemoveAuthor": "Olete kindel, et soovite autori \"{0}\" eemaldada?", + "MessageConfirmRemoveCollection": "Olete kindel, et soovite kogumi \"{0}\" eemaldada?", + "MessageConfirmRemoveEpisode": "Olete kindel, et soovite episoodi \"{0}\" eemaldada?", + "MessageConfirmRemoveEpisodes": "Olete kindel, et soovite eemaldada {0} episoodi?", + "MessageConfirmRemoveListeningSessions": "Olete kindel, et soovite eemaldada {0} kuulamise sessiooni?", + "MessageConfirmRemoveNarrator": "Olete kindel, et soovite jutustaja \"{0}\" eemaldada?", + "MessageConfirmRemovePlaylist": "Olete kindel, et soovite eemaldada oma esitusloendi \"{0}\"?", + "MessageConfirmRenameGenre": "Olete kindel, et soovite žanri \"{0}\" ümber nimetada kujule \"{1}\" kõikidele üksustele?", + "MessageConfirmRenameGenreMergeNote": "Märkus: See žanr on juba olemas, nii et need ühendatakse.", + "MessageConfirmRenameGenreWarning": "Hoiatus! Sarnane žanr erineva puhvriga on juba olemas \"{0}\".", + "MessageConfirmRenameTag": "Olete kindel, et soovite silti \"{0}\" ümber nimetada kujule \"{1}\" kõikidele üksustele?", + "MessageConfirmRenameTagMergeNote": "Märkus: See silt on juba olemas, nii et need ühendatakse.", + "MessageConfirmRenameTagWarning": "Hoiatus! Sarnane silt erineva puhvriga on juba olemas \"{0}\".", + "MessageConfirmReScanLibraryItems": "Olete kindel, et soovite uuesti skannida {0} üksust?", + "MessageConfirmSendEbookToDevice": "Olete kindel, et soovite saata {0} e-raamatu \"{1}\" seadmesse \"{2}\"?", + "MessageDownloadingEpisode": "Episoodi allalaadimine", + "MessageDragFilesIntoTrackOrder": "Lohistage failid õigesse järjekorda", + "MessageEmbedFinished": "Manustamine lõpetatud!", + "MessageEpisodesQueuedForDownload": "{0} Episood(i) on allalaadimiseks järjekorras", + "MessageFeedURLWillBe": "Toite URL saab olema {0}", + "MessageFetching": "Hangitakse...", + "MessageForceReScanDescription": "skaneerib kõik failid uuesti nagu värsket skannimist. Heli faili ID3 silte, OPF faile ja tekstifaile skaneeritakse uuesti.", + "MessageImportantNotice": "Oluline märkus!", + "MessageInsertChapterBelow": "Sisesta peatükk allapoole", + "MessageItemsSelected": "{0} Valitud üksust", + "MessageItemsUpdated": "{0} Üksust on uuendatud", + "MessageJoinUsOn": "Liitu meiega", + "MessageListeningSessionsInTheLastYear": "Kuulamissessioone viimase aasta jooksul: {0}", + "MessageLoading": "Laadimine...", + "MessageLoadingFolders": "Kaustade laadimine...", + "MessageM4BFailed": "M4B ebaõnnestus!", + "MessageM4BFinished": "M4B lõpetatud!", + "MessageMapChapterTitles": "Kaarda peatükkide pealkirjad olemasolevatele heliraamatu peatükkidele, ajatempe ei muudeta", + "MessageMarkAllEpisodesFinished": "Märgi kõik episoodid lõpetatuks", + "MessageMarkAllEpisodesNotFinished": "Märgi kõik episoodid mitte lõpetatuks", + "MessageMarkAsFinished": "Märgi lõpetatuks", + "MessageMarkAsNotFinished": "Märgi mitte lõpetatuks", + "MessageMatchBooksDescription": "üritab raamatuid raamatukogus sobitada otsingupakkujast leitud raamatuga ning täita tühjad üksikasjad ja kaas. Ei üle kirjuta üksikasju.", + "MessageNoAudioTracks": "Ühtegi helijälge pole", + "MessageNoAuthors": "Ühtegi autori pole", + "MessageNoBackups": "Ühtegi varukoopia pole", + "MessageNoBookmarks": "Ühtegi järjehoidjat pole", + "MessageNoChapters": "Ühtegi peatükki pole", + "MessageNoCollections": "Ühtegi kogumit pole", + "MessageNoCoversFound": "Ühtegi kaant pole leitud", + "MessageNoDescription": "Kirjeldust pole", + "MessageNoDownloadsInProgress": "Praegu allalaadimisi pole", + "MessageNoDownloadsQueued": "Pole järjekorras allalaadimisi", + "MessageNoEpisodeMatchesFound": "Ühtegi episoodi vastet pole leitud", + "MessageNoEpisodes": "Ühtegi episoodi pole", + "MessageNoFoldersAvailable": "Ühtegi kausta pole saadaval", + "MessageNoGenres": "Ühtegi žanrit pole", + "MessageNoIssues": "Ühtegi probleemi pole", + "MessageNoItems": "Ühtegi üksust pole", + "MessageNoItemsFound": "Ühtegi üksust pole leitud", + "MessageNoListeningSessions": "Ühtegi kuulamissessiooni pole", + "MessageNoLogs": "Ühtegi logi pole", + "MessageNoMediaProgress": "Ühtegi meediaprogressi pole", + "MessageNoNotifications": "Ühtegi teavitust pole", + "MessageNoPodcastsFound": "Ühtegi podcasti pole leitud", + "MessageNoResults": "Ühtegi tulemust pole", + "MessageNoSearchResultsFor": "Otsingutulemusi pole märksõna kohta: \"{0}\"", + "MessageNoSeries": "Ühtegi seeriat pole", + "MessageNoTags": "Ühtegi silti pole", + "MessageNoTasksRunning": "Ühtegi käimasolevat ülesannet pole", + "MessageNotYetImplemented": "Pole veel ellu viidud", + "MessageNoUpdateNecessary": "Ühtegi värskendust pole vaja", + "MessageNoUpdatesWereNecessary": "Ühtegi värskendust polnud vaja", + "MessageNoUserPlaylists": "Teil pole ühtegi esitusloendit", + "MessageOr": "või", + "MessagePauseChapter": "Peata peatüki esitamine", + "MessagePlayChapter": "Kuula peatüki algust", + "MessagePlaylistCreateFromCollection": "Loo esitusloend kogumist", + "MessagePodcastHasNoRSSFeedForMatching": "Podcastil pole sobitamiseks RSS-voogu", + "MessageQuickMatchDescription": "täidab tühjad üksikasjad ja kaaned raamatukogus esimese otsingutulemusega rakendusest '{0}'. Ei üle kirjuta üksikasju, välja arvatud juhul, kui serveri sätetes on lubatud 'Eelista sobitatud metaandmeid'.", + "MessageRemoveChapter": "Eemalda peatükk", + "MessageRemoveEpisodes": "Eemalda {0} episood(i)", + "MessageRemoveFromPlayerQueue": "Eemalda esitusjärjekorrast", + "MessageRemoveUserWarning": "Olete kindel, et soovite kasutaja \"{0}\" lõplikult kustutada?", + "MessageReportBugsAndContribute": "Raporteeri vigu, palu funktsioone ja aita kaasa", + "MessageResetChaptersConfirm": "Olete kindel, et soovite peatükkide lähtestada ja tehtud muudatused tagasi võtta?", + "MessageRestoreBackupConfirm": "Olete kindel, et soovite taastada varukoopia, mis loodi", + "MessageRestoreBackupWarning": "Varukoopia taastamine kirjutab üle kogu /config ja /metadata/items & /metadata/authors kaustas oleva andmebaasi.

Varukoopiad ei muuda teie raamatukogukaustades olevaid faile. Kui olete lubanud serveri sätetel salvestada kaane kunsti ja metaandmed teie raamatukogu kaustadesse, siis neid ei varundata ega kirjutata üle.

Kõik teie serveri kasutavad kliendid värskendatakse automaatselt.", + "MessageSearchResultsFor": "Otsingutulemused märksõnale", + "MessageSelected": "{0} valitud", + "MessageServerCouldNotBeReached": "Serveriga ei saanud ühendust luua", + "MessageSetChaptersFromTracksDescription": "Määrake peatükid, kasutades iga helifaili peatükina ja peatüki pealkirjana helifaili nime", + "MessageStartPlaybackAtTime": "Alustage \"{0}\" esitamist kell {1}?", + "MessageThinking": "Mõtlen...", + "MessageUploaderItemFailed": "Üleslaadimine ebaõnnestus", + "MessageUploaderItemSuccess": "Edukalt üles laaditud!", + "MessageUploading": "Üles laadimine...", + "MessageValidCronExpression": "Kehtiv cron-väljend", + "MessageWatcherIsDisabledGlobally": "Vaatleja on ülemaailmselt keelatud serveri sätetes", + "MessageXLibraryIsEmpty": "{0} raamatukogu on tühi!", + "MessageYourAudiobookDurationIsLonger": "Teie heliraamatu kestus on pikem kui leitud kestus", + "MessageYourAudiobookDurationIsShorter": "Teie heliraamatu kestus on lühem kui leitud kestus", + "NoteChangeRootPassword": "Root kasutajal võib olla ainus kasutaja, kellel võib olla tühi parool", + "NoteChapterEditorTimes": "Märkus: Esimese peatüki algusaeg peab jääma 0:00 ja viimase peatüki algusaeg ei tohi ületada selle heliraamatu kestust.", + "NoteFolderPicker": "Märkus: juba kaardistatud kaustu ei kuvata", + "NoteRSSFeedPodcastAppsHttps": "Hoiatus: Enamik podcasti rakendusi nõuab, et RSS-voogu URL kasutaks HTTPS-i", + "NoteRSSFeedPodcastAppsPubDate": "Hoiatus: Üks või mitu teie episoodi ei sisalda publikatsioonikuupäeva. Mõned podcasti rakendused nõuavad seda.", + "NoteUploaderFoldersWithMediaFiles": "Kaustu, kus on meediat, käsitletakse eraldi raamatukogu üksustena.", + "NoteUploaderOnlyAudioFiles": "Kui laadite üles ainult helifaile, käsitletakse iga helifaili eraldi heliraamatuna.", + "NoteUploaderUnsupportedFiles": "Toetamata failid jäetakse tähelepanuta. Kausta valimisel või lohistamisel jäetakse tähelepanuta muud failid, mis pole üksuse kaustas.", + "PlaceholderNewCollection": "Uue kogumi nimi", + "PlaceholderNewFolderPath": "Uus kausta tee", + "PlaceholderNewPlaylist": "Uue esitusloendi nimi", + "PlaceholderSearch": "Otsi...", + "PlaceholderSearchEpisode": "Otsi episoodi...", + "ToastAccountUpdateFailed": "Konto värskendamine ebaõnnestus", + "ToastAccountUpdateSuccess": "Konto on värskendatud", + "ToastAuthorImageRemoveFailed": "Pildi eemaldamine ebaõnnestus", + "ToastAuthorImageRemoveSuccess": "Autori pilt on eemaldatud", + "ToastAuthorUpdateFailed": "Autori värskendamine ebaõnnestus", + "ToastAuthorUpdateMerged": "Autor liidetud", + "ToastAuthorUpdateSuccess": "Autor värskendatud", + "ToastAuthorUpdateSuccessNoImageFound": "Autor värskendatud (pilti ei leitud)", + "ToastBackupCreateFailed": "Varukoopia loomine ebaõnnestus", + "ToastBackupCreateSuccess": "Varukoopia loodud", + "ToastBackupDeleteFailed": "Varukoopia kustutamine ebaõnnestus", + "ToastBackupDeleteSuccess": "Varukoopia kustutatud", + "ToastBackupRestoreFailed": "Varukoopia taastamine ebaõnnestus", + "ToastBackupUploadFailed": "Varukoopia üles laadimine ebaõnnestus", + "ToastBackupUploadSuccess": "Varukoopia üles laaditud", + "ToastBatchUpdateFailed": "Partii värskendamine ebaõnnestus", + "ToastBatchUpdateSuccess": "Partii värskendamine õnnestus", + "ToastBookmarkCreateFailed": "Järjehoidja loomine ebaõnnestus", + "ToastBookmarkCreateSuccess": "Järjehoidja lisatud", + "ToastBookmarkRemoveFailed": "Järjehoidja eemaldamine ebaõnnestus", + "ToastBookmarkRemoveSuccess": "Järjehoidja eemaldatud", + "ToastBookmarkUpdateFailed": "Järjehoidja värskendamine ebaõnnestus", + "ToastBookmarkUpdateSuccess": "Järjehoidja värskendatud", + "ToastChaptersHaveErrors": "Peatükkidel on vigu", + "ToastChaptersMustHaveTitles": "Peatükkidel peab olema pealkiri", + "ToastCollectionItemsRemoveFailed": "Üksuse(te) eemaldamine kogumist ebaõnnestus", + "ToastCollectionItemsRemoveSuccess": "Üksus(ed) eemaldatud kogumist", + "ToastCollectionRemoveFailed": "Kogumi eemaldamine ebaõnnestus", + "ToastCollectionRemoveSuccess": "Kogum eemaldatud", + "ToastCollectionUpdateFailed": "Kogumi värskendamine ebaõnnestus", + "ToastCollectionUpdateSuccess": "Kogum värskendatud", + "ToastItemCoverUpdateFailed": "Üksuse kaane värskendamine ebaõnnestus", + "ToastItemCoverUpdateSuccess": "Üksuse kaas värskendatud", + "ToastItemDetailsUpdateFailed": "Üksuse üksikasjade värskendamine ebaõnnestus", + "ToastItemDetailsUpdateSuccess": "Üksuse üksikasjad värskendatud", + "ToastItemDetailsUpdateUnneeded": "Üksuse üksikasjade värskendamine pole vajalik", + "ToastItemMarkedAsFinishedFailed": "Märgistamine kui lõpetatud ebaõnnestus", + "ToastItemMarkedAsFinishedSuccess": "Üksus märgitud kui lõpetatud", + "ToastItemMarkedAsNotFinishedFailed": "Märgistamine kui mitte lõpetatud ebaõnnestus", + "ToastItemMarkedAsNotFinishedSuccess": "Üksus märgitud kui mitte lõpetatud", + "ToastLibraryCreateFailed": "Raamatukogu loomine ebaõnnestus", + "ToastLibraryCreateSuccess": "Raamatukogu \"{0}\" loodud", + "ToastLibraryDeleteFailed": "Raamatukogu kustutamine ebaõnnestus", + "ToastLibraryDeleteSuccess": "Raamatukogu kustutatud", + "ToastLibraryScanFailedToStart": "Skanneerimine ei käivitunud", + "ToastLibraryScanStarted": "Raamatukogu skaneerimine alustatud", + "ToastLibraryUpdateFailed": "Raamatukogu värskendamine ebaõnnestus", + "ToastLibraryUpdateSuccess": "Raamatukogu \"{0}\" värskendatud", + "ToastPlaylistCreateFailed": "Esitusloendi loomine ebaõnnestus", + "ToastPlaylistCreateSuccess": "Esitusloend loodud", + "ToastPlaylistRemoveFailed": "Esitusloendi eemaldamine ebaõnnestus", + "ToastPlaylistRemoveSuccess": "Esitusloend eemaldatud", + "ToastPlaylistUpdateFailed": "Esitusloendi värskendamine ebaõnnestus", + "ToastPlaylistUpdateSuccess": "Esitusloend värskendatud", + "ToastPodcastCreateFailed": "Podcasti loomine ebaõnnestus", + "ToastPodcastCreateSuccess": "Podcast loodud edukalt", + "ToastRemoveItemFromCollectionFailed": "Üksuse eemaldamine kogumist ebaõnnestus", + "ToastRemoveItemFromCollectionSuccess": "Üksus eemaldatud kogumist", + "ToastRSSFeedCloseFailed": "RSS-voogu sulgemine ebaõnnestus", + "ToastRSSFeedCloseSuccess": "RSS-voog suletud", + "ToastSendEbookToDeviceFailed": "E-raamatu saatmine seadmesse ebaõnnestus", + "ToastSendEbookToDeviceSuccess": "E-raamat saadetud seadmesse \"{0}\"", + "ToastSeriesUpdateFailed": "Sarja värskendamine ebaõnnestus", + "ToastSeriesUpdateSuccess": "Sarja värskendamine õnnestus", + "ToastSessionDeleteFailed": "Seansi kustutamine ebaõnnestus", + "ToastSessionDeleteSuccess": "Sessioon kustutatud", + "ToastSocketConnected": "Pesa ühendatud", + "ToastSocketDisconnected": "Pesa ühendus katkenud", + "ToastSocketFailedToConnect": "Pesa ühendamine ebaõnnestus", + "ToastUserDeleteFailed": "Kasutaja kustutamine ebaõnnestus", + "ToastUserDeleteSuccess": "Kasutaja kustutatud" +} \ No newline at end of file From e368ffe29f837ee00787b41012e9a01e9862b970 Mon Sep 17 00:00:00 2001 From: Teekeks Date: Thu, 22 Feb 2024 19:20:49 +0100 Subject: [PATCH 008/289] feat(i18n): added missing translatable string in player ui --- client/components/player/PlayerUi.vue | 2 +- client/strings/en-us.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/client/components/player/PlayerUi.vue b/client/components/player/PlayerUi.vue index e1b0f96d..bca3e7ee 100644 --- a/client/components/player/PlayerUi.vue +++ b/client/components/player/PlayerUi.vue @@ -53,7 +53,7 @@

- {{ currentChapterName }}  ({{ currentChapterIndex + 1 }} of {{ chapters.length }}) + {{ currentChapterName }}  {{ $setString('LabelPlayerChaperMarker', [currentChapterIndex + 1, chapters.length]) }}

{{ timeRemainingPretty }}

diff --git a/client/strings/en-us.json b/client/strings/en-us.json index e3349d1f..0df642a7 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -386,6 +386,7 @@ "LabelPermissionsUpdate": "Can Update", "LabelPermissionsUpload": "Can Upload", "LabelPhotoPathURL": "Photo Path/URL", + "LabelPlayerChaperMarker": "({0} of {1})", "LabelPlaylists": "Playlists", "LabelPlayMethod": "Play Method", "LabelPodcast": "Podcast", From def2b6425ba82a7dd50613431fdaa14e7555130e Mon Sep 17 00:00:00 2001 From: advplyr Date: Thu, 22 Feb 2024 16:30:41 -0600 Subject: [PATCH 009/289] Update:Username and password inputs on login page trim whitespace #2628 --- client/pages/login.vue | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/pages/login.vue b/client/pages/login.vue index c7efa0d0..9b7758d8 100644 --- a/client/pages/login.vue +++ b/client/pages/login.vue @@ -10,9 +10,9 @@

Create Root User

- - - + + +

Directory Paths

@@ -34,10 +34,10 @@ - + - +
{{ processing ? 'Checking...' : $strings.ButtonSubmit }}
From 608b25de45e9a02836326686aa85b4fea08228b6 Mon Sep 17 00:00:00 2001 From: advplyr Date: Fri, 23 Feb 2024 16:59:46 -0600 Subject: [PATCH 010/289] Map en-us translations --- client/strings/cs.json | 9 +++++++++ client/strings/da.json | 9 +++++++++ client/strings/de.json | 4 +++- client/strings/en-us.json | 2 ++ client/strings/es.json | 9 +++++++++ client/strings/et.json | 9 +++++++++ client/strings/fr.json | 9 +++++++++ client/strings/gu.json | 9 +++++++++ client/strings/hi.json | 9 +++++++++ client/strings/hr.json | 9 +++++++++ client/strings/hu.json | 9 +++++++++ client/strings/it.json | 11 ++++++++++- client/strings/lt.json | 9 +++++++++ client/strings/nl.json | 9 +++++++++ client/strings/no.json | 9 +++++++++ client/strings/pl.json | 9 +++++++++ client/strings/pt-br.json | 11 ++++++++++- client/strings/ru.json | 9 +++++++++ client/strings/sv.json | 9 +++++++++ client/strings/zh-cn.json | 9 +++++++++ 20 files changed, 169 insertions(+), 3 deletions(-) diff --git a/client/strings/cs.json b/client/strings/cs.json index 3ab713ef..3134d60d 100644 --- a/client/strings/cs.json +++ b/client/strings/cs.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Spárovat všechny autory", "ButtonMatchBooks": "Spárovat Knihy", "ButtonNevermind": "Nevadí", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Otevřít kanál", @@ -51,6 +52,7 @@ "ButtonPlay": "Přehrát", "ButtonPlaying": "Hraje", "ButtonPlaylists": "Seznamy skladeb", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Vyčistit veškerou mezipaměť", "ButtonPurgeItemsCache": "Vyčistit mezipaměť položek", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Odstranit z fronty", "ButtonQuickMatch": "Rychlé přiřazení", "ButtonRead": "Číst", + "ButtonRefresh": "Refresh", "ButtonRemove": "Odstranit", "ButtonRemoveAll": "Odstranit vše", "ButtonRemoveAllLibraryItems": "Odstranit všechny položky knihovny", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Vybrat cestu ke složce", "ButtonSeries": "Série", "ButtonSetChaptersFromTracks": "Nastavit kapitoly ze stop", + "ButtonShare": "Share", "ButtonShiftTimes": "Časy posunu", "ButtonShow": "Zobrazit", "ButtonStartM4BEncode": "Spustit kódování M4B", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Aktualizovat podrobnosti", "HeaderUpdateLibrary": "Aktualizovat knihovnu", "HeaderUsers": "Uživatelé", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Vaše statistiky", "LabelAbridged": "Zkráceno", "LabelAccountType": "Typ účtu", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Může stahovat", "LabelPermissionsUpdate": "Může aktualizovat", "LabelPermissionsUpload": "Může nahrávat", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Cesta k fotografii/URL", "LabelPlaylists": "Seznamy skladeb", "LabelPlayMethod": "Metoda přehrávání", @@ -436,6 +442,7 @@ "LabelSeries": "Série", "LabelSeriesName": "Název série", "LabelSeriesProgress": "Průběh série", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Nastavit jako primární", "LabelSetEbookAsSupplementary": "Nastavit jako doplňkové", "LabelSettingsAudiobooksOnly": "Pouze audioknihy", @@ -552,6 +559,8 @@ "LabelViewQueue": "Zobrazit frontu přehrávače", "LabelVolume": "Hlasitost", "LabelWeekdaysToRun": "Dny v týdnu ke spuštění", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Doba trvání vaší audioknihy", "LabelYourBookmarks": "Vaše záložky", "LabelYourPlaylists": "Vaše seznamy přehrávání", diff --git a/client/strings/da.json b/client/strings/da.json index d456cd51..f79f19b1 100644 --- a/client/strings/da.json +++ b/client/strings/da.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Match alle forfattere", "ButtonMatchBooks": "Match bøger", "ButtonNevermind": "Glem det", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "OK", "ButtonOpenFeed": "Åbn feed", @@ -51,6 +52,7 @@ "ButtonPlay": "Afspil", "ButtonPlaying": "Afspiller", "ButtonPlaylists": "Afspilningslister", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Ryd al cache", "ButtonPurgeItemsCache": "Ryd elementcache", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Fjern fra kø", "ButtonQuickMatch": "Hurtig Match", "ButtonRead": "Læs", + "ButtonRefresh": "Refresh", "ButtonRemove": "Fjern", "ButtonRemoveAll": "Fjern Alle", "ButtonRemoveAllLibraryItems": "Fjern Alle Bibliotekselementer", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Vælg Mappen Sti", "ButtonSeries": "Serie", "ButtonSetChaptersFromTracks": "Sæt kapitler fra spor", + "ButtonShare": "Share", "ButtonShiftTimes": "Skift Tider", "ButtonShow": "Vis", "ButtonStartM4BEncode": "Start M4B Kode", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Opdater Detaljer", "HeaderUpdateLibrary": "Opdater Bibliotek", "HeaderUsers": "Brugere", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Dine Statistikker", "LabelAbridged": "Abridged", "LabelAccountType": "Kontotype", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Kan downloade", "LabelPermissionsUpdate": "Kan opdatere", "LabelPermissionsUpload": "Kan uploade", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Foto sti/URL", "LabelPlaylists": "Afspilningslister", "LabelPlayMethod": "Afspilningsmetode", @@ -436,6 +442,7 @@ "LabelSeries": "Serie", "LabelSeriesName": "Serienavn", "LabelSeriesProgress": "Seriefremskridt", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Indstil som primær", "LabelSetEbookAsSupplementary": "Indstil som supplerende", "LabelSettingsAudiobooksOnly": "Kun lydbøger", @@ -552,6 +559,8 @@ "LabelViewQueue": "Se afspilningskø", "LabelVolume": "Volumen", "LabelWeekdaysToRun": "Ugedage til kørsel", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Din lydbogsvarighed", "LabelYourBookmarks": "Dine bogmærker", "LabelYourPlaylists": "Dine spillelister", diff --git a/client/strings/de.json b/client/strings/de.json index 546631f3..46467734 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Online Metadaten-Abgleich (alle Autoren)", "ButtonMatchBooks": "Online Metadaten-Abgleich (alle Medien)", "ButtonNevermind": "Abbrechen", + "ButtonNext": "Next", "ButtonNextChapter": "Nächstes Kapitel", "ButtonOk": "Ok", "ButtonOpenFeed": "Feed öffnen", @@ -51,6 +52,7 @@ "ButtonPlay": "Abspielen", "ButtonPlaying": "Spielt", "ButtonPlaylists": "Wiedergabelisten", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Vorheriges Kapitel", "ButtonPurgeAllCache": "Cache leeren", "ButtonPurgeItemsCache": "Lösche Medien-Cache", @@ -772,4 +774,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 faa8cdcc..b8860ffa 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Match All Authors", "ButtonMatchBooks": "Match Books", "ButtonNevermind": "Nevermind", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Open Feed", @@ -51,6 +52,7 @@ "ButtonPlay": "Play", "ButtonPlaying": "Playing", "ButtonPlaylists": "Playlists", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Purge All Cache", "ButtonPurgeItemsCache": "Purge Items Cache", diff --git a/client/strings/es.json b/client/strings/es.json index 4b85106c..75052413 100644 --- a/client/strings/es.json +++ b/client/strings/es.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Encontrar Todos los Autores", "ButtonMatchBooks": "Encontrar Libros", "ButtonNevermind": "Olvidar", + "ButtonNext": "Next", "ButtonNextChapter": "Siguiente Capítulo", "ButtonOk": "Ok", "ButtonOpenFeed": "Abrir Fuente", @@ -51,6 +52,7 @@ "ButtonPlay": "Reproducir", "ButtonPlaying": "Reproduciendo", "ButtonPlaylists": "Listas de Reproducción", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Capítulo Anterior", "ButtonPurgeAllCache": "Purgar Todo el Cache", "ButtonPurgeItemsCache": "Purgar Elementos de Cache", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Remover de la Fila", "ButtonQuickMatch": "Encontrar Rápido", "ButtonRead": "Leer", + "ButtonRefresh": "Refresh", "ButtonRemove": "Remover", "ButtonRemoveAll": "Remover Todos", "ButtonRemoveAllLibraryItems": "Remover Todos los Elementos de la Biblioteca", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Seleccionar Ruta de Carpeta", "ButtonSeries": "Series", "ButtonSetChaptersFromTracks": "Seleccionar Capítulos Según las Pistas", + "ButtonShare": "Share", "ButtonShiftTimes": "Desplazar Tiempos", "ButtonShow": "Mostrar", "ButtonStartM4BEncode": "Iniciar Codificación M4B", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Actualizar Detalles", "HeaderUpdateLibrary": "Actualizar Biblioteca", "HeaderUsers": "Usuarios", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Tus Estadísticas", "LabelAbridged": "Abreviado", "LabelAccountType": "Tipo de Cuenta", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Puede Descargar", "LabelPermissionsUpdate": "Puede Actualizar", "LabelPermissionsUpload": "Puede Subir", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Ruta de Acceso/URL de Foto", "LabelPlaylists": "Lista de Reproducción", "LabelPlayMethod": "Método de Reproducción", @@ -436,6 +442,7 @@ "LabelSeries": "Series", "LabelSeriesName": "Nombre de la Serie", "LabelSeriesProgress": "Progreso de la Serie", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Establecer como primario", "LabelSetEbookAsSupplementary": "Establecer como suplementario", "LabelSettingsAudiobooksOnly": "Sólo Audiolibros", @@ -552,6 +559,8 @@ "LabelViewQueue": "Ver Fila del Reproductor", "LabelVolume": "Volumen", "LabelWeekdaysToRun": "Correr en Días de la Semana", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Duración de tu Audiolibro", "LabelYourBookmarks": "Tus Marcadores", "LabelYourPlaylists": "Tus Listas", diff --git a/client/strings/et.json b/client/strings/et.json index f0641705..07f9eef0 100644 --- a/client/strings/et.json +++ b/client/strings/et.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Sobita kõik autorid", "ButtonMatchBooks": "Sobita raamatud", "ButtonNevermind": "Pole tähtis", + "ButtonNext": "Next", "ButtonNextChapter": "Järgmine peatükk", "ButtonOk": "Ok", "ButtonOpenFeed": "Ava voog", @@ -51,6 +52,7 @@ "ButtonPlay": "Mängi", "ButtonPlaying": "Mängib", "ButtonPlaylists": "Esitusloendid", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Eelmine peatükk", "ButtonPurgeAllCache": "Tühjenda kogu vahemälu", "ButtonPurgeItemsCache": "Tühjenda esemete vahemälu", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Eemalda järjekorrast", "ButtonQuickMatch": "Kiire sobitamine", "ButtonRead": "Loe", + "ButtonRefresh": "Refresh", "ButtonRemove": "Eemalda", "ButtonRemoveAll": "Eemalda kõik", "ButtonRemoveAllLibraryItems": "Eemalda kõik raamatukogu esemed", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Vali kaustatee", "ButtonSeries": "Sarjad", "ButtonSetChaptersFromTracks": "Määra peatükid lugudest", + "ButtonShare": "Share", "ButtonShiftTimes": "Nihke ajad", "ButtonShow": "Näita", "ButtonStartM4BEncode": "Alusta M4B kodeerimist", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Uuenda detaile", "HeaderUpdateLibrary": "Uuenda raamatukogu", "HeaderUsers": "Kasutajad", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Sinu statistika", "LabelAbridged": "Kärbitud", "LabelAccountType": "Konto tüüp", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Saab alla laadida", "LabelPermissionsUpdate": "Saab uuendada", "LabelPermissionsUpload": "Saab üles laadida", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Foto tee/URL", "LabelPlaylists": "Mänguloendid", "LabelPlayMethod": "Esitusmeetod", @@ -436,6 +442,7 @@ "LabelSeries": "Seeria", "LabelSeriesName": "Seeria nimi", "LabelSeriesProgress": "Seeria edenemine", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Määra peamiseks", "LabelSetEbookAsSupplementary": "Määra täiendavaks", "LabelSettingsAudiobooksOnly": "Ainult heliraamatud", @@ -552,6 +559,8 @@ "LabelViewQueue": "Vaata esitusjärjekorda", "LabelVolume": "Heli tugevus", "LabelWeekdaysToRun": "Päevad nädalas käivitamiseks", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Teie heliraamatu kestus", "LabelYourBookmarks": "Teie järjehoidjad", "LabelYourPlaylists": "Teie esitusloendid", diff --git a/client/strings/fr.json b/client/strings/fr.json index 3f04fab8..bbf38e18 100644 --- a/client/strings/fr.json +++ b/client/strings/fr.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Chercher tous les auteurs", "ButtonMatchBooks": "Chercher les livres", "ButtonNevermind": "Non merci", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Ouvrir le flux", @@ -51,6 +52,7 @@ "ButtonPlay": "Écouter", "ButtonPlaying": "En lecture", "ButtonPlaylists": "Listes de lecture", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Purger le cache", "ButtonPurgeItemsCache": "Purger le cache des articles", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Supprimer de la liste de lecture", "ButtonQuickMatch": "Recherche rapide", "ButtonRead": "Lire", + "ButtonRefresh": "Refresh", "ButtonRemove": "Supprimer", "ButtonRemoveAll": "Supprimer tout", "ButtonRemoveAllLibraryItems": "Supprimer tous les articles de la bibliothèque", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Sélectionner le chemin du dossier", "ButtonSeries": "Séries", "ButtonSetChaptersFromTracks": "Positionner les chapitres par rapports aux pistes", + "ButtonShare": "Share", "ButtonShiftTimes": "Décaler l’horodatage du livre", "ButtonShow": "Afficher", "ButtonStartM4BEncode": "Démarrer l’encodage M4B", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Mettre à jour les détails", "HeaderUpdateLibrary": "Mettre à jour la bibliothèque", "HeaderUsers": "Utilisateurs", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Vos statistiques", "LabelAbridged": "Version courte", "LabelAccountType": "Type de compte", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Peut télécharger", "LabelPermissionsUpdate": "Peut mettre à jour", "LabelPermissionsUpload": "Peut téléverser", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Chemin / URL des photos", "LabelPlaylists": "Listes de lecture", "LabelPlayMethod": "Méthode d’écoute", @@ -436,6 +442,7 @@ "LabelSeries": "Séries", "LabelSeriesName": "Nom de la série", "LabelSeriesProgress": "Progression de séries", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Définir comme principale", "LabelSetEbookAsSupplementary": "Définir comme supplémentaire", "LabelSettingsAudiobooksOnly": "Livres audios seulement", @@ -552,6 +559,8 @@ "LabelViewQueue": "Afficher la liste de lecture", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Jours de la semaine à exécuter", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Durée de vos livres audios", "LabelYourBookmarks": "Vos signets", "LabelYourPlaylists": "Vos listes de lecture", diff --git a/client/strings/gu.json b/client/strings/gu.json index daa923db..2f3d9cd8 100644 --- a/client/strings/gu.json +++ b/client/strings/gu.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "બધા મેળ ખાતા લેખકો શોધો", "ButtonMatchBooks": "મેળ ખાતી પુસ્તકો શોધો", "ButtonNevermind": "કંઈ વાંધો નહીં", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "ઓકે", "ButtonOpenFeed": "ફીડ ખોલો", @@ -51,6 +52,7 @@ "ButtonPlay": "ચલાવો", "ButtonPlaying": "ચલાવી રહ્યું છે", "ButtonPlaylists": "પ્લેલિસ્ટ", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "બધો Cache કાઢી નાખો", "ButtonPurgeItemsCache": "વસ્તુઓનો Cache કાઢી નાખો", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "કતારથી કાઢી નાખો", "ButtonQuickMatch": "ઝડપી મેળ ખવડાવો", "ButtonRead": "વાંચો", + "ButtonRefresh": "Refresh", "ButtonRemove": "કાઢી નાખો", "ButtonRemoveAll": "બધું કાઢી નાખો", "ButtonRemoveAllLibraryItems": "બધું પુસ્તકાલય વસ્તુઓ કાઢી નાખો", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "ફોલ્ડર પથ પસંદ કરો", "ButtonSeries": "સિરીઝ", "ButtonSetChaptersFromTracks": "ટ્રેક્સથી પ્રકરણો સેટ કરો", + "ButtonShare": "Share", "ButtonShiftTimes": "સમય શિફ્ટ કરો", "ButtonShow": "બતાવો", "ButtonStartM4BEncode": "M4B એન્કોડ શરૂ કરો", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Update Details", "HeaderUpdateLibrary": "Update Library", "HeaderUsers": "Users", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Your Stats", "LabelAbridged": "Abridged", "LabelAccountType": "Account Type", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Can Download", "LabelPermissionsUpdate": "Can Update", "LabelPermissionsUpload": "Can Upload", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Photo Path/URL", "LabelPlaylists": "Playlists", "LabelPlayMethod": "Play Method", @@ -436,6 +442,7 @@ "LabelSeries": "Series", "LabelSeriesName": "Series Name", "LabelSeriesProgress": "Series Progress", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Set as primary", "LabelSetEbookAsSupplementary": "Set as supplementary", "LabelSettingsAudiobooksOnly": "Audiobooks only", @@ -552,6 +559,8 @@ "LabelViewQueue": "View player queue", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Weekdays to run", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Your audiobook duration", "LabelYourBookmarks": "Your Bookmarks", "LabelYourPlaylists": "Your Playlists", diff --git a/client/strings/hi.json b/client/strings/hi.json index a59b43ec..01667b59 100644 --- a/client/strings/hi.json +++ b/client/strings/hi.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "सभी लेखकों को तलाश करें", "ButtonMatchBooks": "संबंधित पुस्तकों का मिलान करें", "ButtonNevermind": "कोई बात नहीं", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "ठीक है", "ButtonOpenFeed": "फ़ीड खोलें", @@ -51,6 +52,7 @@ "ButtonPlay": "चलाएँ", "ButtonPlaying": "चल रही है", "ButtonPlaylists": "प्लेलिस्ट्स", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "सभी Cache मिटाएं", "ButtonPurgeItemsCache": "आइटम Cache मिटाएं", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "कतार से हटाएं", "ButtonQuickMatch": "जल्दी से समानता की तलाश करें", "ButtonRead": "पढ़ लिया", + "ButtonRefresh": "Refresh", "ButtonRemove": "हटाएं", "ButtonRemoveAll": "सभी हटाएं", "ButtonRemoveAllLibraryItems": "पुस्तकालय की सभी आइटम हटाएं", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "फ़ोल्डर का पथ चुनें", "ButtonSeries": "सीरीज", "ButtonSetChaptersFromTracks": "ट्रैक्स से अध्याय बनाएं", + "ButtonShare": "Share", "ButtonShiftTimes": "समय खिसकाए", "ButtonShow": "दिखाएं", "ButtonStartM4BEncode": "M4B एन्कोडिंग शुरू करें", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Update Details", "HeaderUpdateLibrary": "Update Library", "HeaderUsers": "Users", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Your Stats", "LabelAbridged": "Abridged", "LabelAccountType": "Account Type", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Can Download", "LabelPermissionsUpdate": "Can Update", "LabelPermissionsUpload": "Can Upload", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Photo Path/URL", "LabelPlaylists": "Playlists", "LabelPlayMethod": "Play Method", @@ -436,6 +442,7 @@ "LabelSeries": "Series", "LabelSeriesName": "Series Name", "LabelSeriesProgress": "Series Progress", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Set as primary", "LabelSetEbookAsSupplementary": "Set as supplementary", "LabelSettingsAudiobooksOnly": "Audiobooks only", @@ -552,6 +559,8 @@ "LabelViewQueue": "View player queue", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Weekdays to run", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Your audiobook duration", "LabelYourBookmarks": "Your Bookmarks", "LabelYourPlaylists": "Your Playlists", diff --git a/client/strings/hr.json b/client/strings/hr.json index 6e105ca2..8aa933c7 100644 --- a/client/strings/hr.json +++ b/client/strings/hr.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Matchaj sve autore", "ButtonMatchBooks": "Matchaj knjige", "ButtonNevermind": "Nije bitno", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Otvori feed", @@ -51,6 +52,7 @@ "ButtonPlay": "Pokreni", "ButtonPlaying": "Playing", "ButtonPlaylists": "Playlists", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Isprazni sav cache", "ButtonPurgeItemsCache": "Isprazni Items Cache", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Remove from queue", "ButtonQuickMatch": "Brzi match", "ButtonRead": "Pročitaj", + "ButtonRefresh": "Refresh", "ButtonRemove": "Ukloni", "ButtonRemoveAll": "Ukloni sve", "ButtonRemoveAllLibraryItems": "Ukloni sve stvari iz biblioteke", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Odaberi putanju do folder", "ButtonSeries": "Serije", "ButtonSetChaptersFromTracks": "Set chapters from tracks", + "ButtonShare": "Share", "ButtonShiftTimes": "Pomakni vremena", "ButtonShow": "Prikaži", "ButtonStartM4BEncode": "Pokreni M4B kodiranje", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Aktualiziraj detalje", "HeaderUpdateLibrary": "Aktualiziraj biblioteku", "HeaderUsers": "Korinici", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Tvoja statistika", "LabelAbridged": "Abridged", "LabelAccountType": "Vrsta korisničkog računa", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Smije preuzimati", "LabelPermissionsUpdate": "Smije aktualizirati", "LabelPermissionsUpload": "Smije uploadati", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Slika putanja/URL", "LabelPlaylists": "Playlists", "LabelPlayMethod": "Vrsta reprodukcije", @@ -436,6 +442,7 @@ "LabelSeries": "Serije", "LabelSeriesName": "Ime serije", "LabelSeriesProgress": "Series Progress", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Set as primary", "LabelSetEbookAsSupplementary": "Set as supplementary", "LabelSettingsAudiobooksOnly": "Audiobooks only", @@ -552,6 +559,8 @@ "LabelViewQueue": "View player queue", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Radnih dana da radi", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Tvoje trajanje audiobooka", "LabelYourBookmarks": "Tvoje knjižne oznake", "LabelYourPlaylists": "Your Playlists", diff --git a/client/strings/hu.json b/client/strings/hu.json index 9d79f28e..d52957e1 100644 --- a/client/strings/hu.json +++ b/client/strings/hu.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Minden szerző egyeztetése", "ButtonMatchBooks": "Könyvek egyeztetése", "ButtonNevermind": "Mindegy", + "ButtonNext": "Next", "ButtonNextChapter": "Következő fejezet", "ButtonOk": "Oké", "ButtonOpenFeed": "Hírcsatorna megnyitása", @@ -51,6 +52,7 @@ "ButtonPlay": "Lejátszás", "ButtonPlaying": "Lejátszás folyamatban", "ButtonPlaylists": "Lejátszási listák", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Előző fejezet", "ButtonPurgeAllCache": "Összes gyorsítótár törlése", "ButtonPurgeItemsCache": "Elemek gyorsítótárának törlése", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Eltávolítás a sorból", "ButtonQuickMatch": "Gyors egyeztetés", "ButtonRead": "Olvasás", + "ButtonRefresh": "Refresh", "ButtonRemove": "Eltávolítás", "ButtonRemoveAll": "Összes eltávolítása", "ButtonRemoveAllLibraryItems": "Összes könyvtárelem eltávolítása", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Mappa útvonalának kiválasztása", "ButtonSeries": "Sorozatok", "ButtonSetChaptersFromTracks": "Fejezetek beállítása sávokból", + "ButtonShare": "Share", "ButtonShiftTimes": "Idők eltolása", "ButtonShow": "Megjelenítés", "ButtonStartM4BEncode": "M4B kódolás indítása", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Részletek frissítése", "HeaderUpdateLibrary": "Könyvtár frissítése", "HeaderUsers": "Felhasználók", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Saját statisztikák", "LabelAbridged": "Tömörített", "LabelAccountType": "Fióktípus", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Letölthet", "LabelPermissionsUpdate": "Frissíthet", "LabelPermissionsUpload": "Feltölthet", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Fénykép útvonal/URL", "LabelPlaylists": "Lejátszási listák", "LabelPlayMethod": "Lejátszási módszer", @@ -436,6 +442,7 @@ "LabelSeries": "Sorozat", "LabelSeriesName": "Sorozat neve", "LabelSeriesProgress": "Sorozat haladása", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Beállítás elsődlegesként", "LabelSetEbookAsSupplementary": "Beállítás kiegészítőként", "LabelSettingsAudiobooksOnly": "Csak hangoskönyvek", @@ -552,6 +559,8 @@ "LabelViewQueue": "Lejátszó sor megtekintése", "LabelVolume": "Hangerő", "LabelWeekdaysToRun": "Futás napjai", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Hangoskönyv időtartama", "LabelYourBookmarks": "Könyvjelzőid", "LabelYourPlaylists": "Lejátszási listáid", diff --git a/client/strings/it.json b/client/strings/it.json index 11865aad..26a61fda 100644 --- a/client/strings/it.json +++ b/client/strings/it.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Aggiungi metadata agli Autori", "ButtonMatchBooks": "Aggiungi metadata della Libreria", "ButtonNevermind": "Nevermind", + "ButtonNext": "Next", "ButtonNextChapter": "Prossimo Capitolo", "ButtonOk": "Ok", "ButtonOpenFeed": "Apri Feed", @@ -51,6 +52,7 @@ "ButtonPlay": "Play", "ButtonPlaying": "In Riproduzione", "ButtonPlaylists": "Playlists", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Capitolo Precendente", "ButtonPurgeAllCache": "Elimina tutta la Cache", "ButtonPurgeItemsCache": "Elimina la Cache selezionata", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Rimuovi dalla Coda", "ButtonQuickMatch": "Controlla Metadata Auto", "ButtonRead": "Leggi", + "ButtonRefresh": "Refresh", "ButtonRemove": "Rimuovi", "ButtonRemoveAll": "Rimuovi Tutto", "ButtonRemoveAllLibraryItems": "Rimuovi tutto il contenuto della libreria", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Seleziona percorso cartella", "ButtonSeries": "Serie", "ButtonSetChaptersFromTracks": "Impostare i capitoli dalle tracce", + "ButtonShare": "Share", "ButtonShiftTimes": "Ricerca veloce", "ButtonShow": "Mostra", "ButtonStartM4BEncode": "Inizia L'Encode del M4B", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Aggiorna Dettagli", "HeaderUpdateLibrary": "Aggiorna Libreria", "HeaderUsers": "Utenti", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Statistiche Personali", "LabelAbridged": "Abbreviato", "LabelAccountType": "Tipo di Account", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Può Scaricare", "LabelPermissionsUpdate": "Può Aggiornare", "LabelPermissionsUpload": "Può caricare", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "foto Path/URL", "LabelPlaylists": "Playlists", "LabelPlayMethod": "Metodo di riproduzione", @@ -436,6 +442,7 @@ "LabelSeries": "Serie", "LabelSeriesName": "Nome Serie", "LabelSeriesProgress": "Cominciato", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Immposta come Primario", "LabelSetEbookAsSupplementary": "Imposta come Suplementare", "LabelSettingsAudiobooksOnly": "Solo Audiolibri", @@ -552,6 +559,8 @@ "LabelViewQueue": "Visualizza coda", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Giorni feriali da eseguire", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "La durata dell'audiolibro", "LabelYourBookmarks": "I tuoi Preferiti", "LabelYourPlaylists": "le tue Playlist", @@ -765,4 +774,4 @@ "ToastSocketFailedToConnect": "Socket non riesce a connettersi", "ToastUserDeleteFailed": "Errore eliminazione utente", "ToastUserDeleteSuccess": "Utente eliminato" -} +} \ No newline at end of file diff --git a/client/strings/lt.json b/client/strings/lt.json index f98d5aee..1c2558c9 100644 --- a/client/strings/lt.json +++ b/client/strings/lt.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Pritaikyti visus autorius", "ButtonMatchBooks": "Pritaikyti knygas", "ButtonNevermind": "Nesvarbu", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Atidaryti srautą", @@ -51,6 +52,7 @@ "ButtonPlay": "Groti", "ButtonPlaying": "Grojama", "ButtonPlaylists": "Grojaraščiai", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Valyti visą saugyklą", "ButtonPurgeItemsCache": "Valyti elementų saugyklą", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Pašalinti iš eilės", "ButtonQuickMatch": "Greitas pritaikymas", "ButtonRead": "Skaityti", + "ButtonRefresh": "Refresh", "ButtonRemove": "Pašalinti", "ButtonRemoveAll": "Pašalinti viską", "ButtonRemoveAllLibraryItems": "Pašalinti visus bibliotekos elementus", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Pasirinkti aplanko kelią", "ButtonSeries": "Serijos", "ButtonSetChaptersFromTracks": "Nustatyti skyrius iš takelių", + "ButtonShare": "Share", "ButtonShiftTimes": "Perstumti laikus", "ButtonShow": "Rodyti", "ButtonStartM4BEncode": "Pradėti M4B kodavimą", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Atnaujinti informaciją", "HeaderUpdateLibrary": "Atnaujinti biblioteką", "HeaderUsers": "Naudotojai", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Jūsų statistika", "LabelAbridged": "Santrauka", "LabelAccountType": "Paskyros tipas", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Gali atsisiųsti", "LabelPermissionsUpdate": "Gali atnaujinti", "LabelPermissionsUpload": "Gali įkelti", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Nuotraukos kelias/URL", "LabelPlaylists": "Grojaraščiai", "LabelPlayMethod": "Grojimo metodas", @@ -436,6 +442,7 @@ "LabelSeries": "Serija", "LabelSeriesName": "Serijos pavadinimas", "LabelSeriesProgress": "Serijos progresas", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Nustatyti kaip pagrindinę", "LabelSetEbookAsSupplementary": "Nustatyti kaip papildomą", "LabelSettingsAudiobooksOnly": "Tik garso knygos", @@ -552,6 +559,8 @@ "LabelViewQueue": "Peržiūrėti grotuvo eilę", "LabelVolume": "Garsumas", "LabelWeekdaysToRun": "Dienos, kuriomis vykdyti", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Jūsų garso knygos trukmė", "LabelYourBookmarks": "Jūsų skirtukai", "LabelYourPlaylists": "Jūsų grojaraščiai", diff --git a/client/strings/nl.json b/client/strings/nl.json index 1c1ffa1b..dd06146d 100644 --- a/client/strings/nl.json +++ b/client/strings/nl.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Alle auteurs matchen", "ButtonMatchBooks": "Alle boeken matchen", "ButtonNevermind": "Laat maar", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Feed openen", @@ -51,6 +52,7 @@ "ButtonPlay": "Afspelen", "ButtonPlaying": "Speelt", "ButtonPlaylists": "Afspeellijsten", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Volledige cache legen", "ButtonPurgeItemsCache": "Onderdelen-cache legen", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Uit wachtrij verwijderen", "ButtonQuickMatch": "Snelle match", "ButtonRead": "Lees", + "ButtonRefresh": "Refresh", "ButtonRemove": "Verwijder", "ButtonRemoveAll": "Alles verwijderen", "ButtonRemoveAllLibraryItems": "Verwijder volledige bibliotheekinhoud", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Maplocatie selecteren", "ButtonSeries": "Series", "ButtonSetChaptersFromTracks": "Maak hoofdstukken op basis van tracks", + "ButtonShare": "Share", "ButtonShiftTimes": "Tijden verschuiven", "ButtonShow": "Toon", "ButtonStartM4BEncode": "Start M4B-encoding", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Details bijwerken", "HeaderUpdateLibrary": "Bibliotheek bijwerken", "HeaderUsers": "Gebruikers", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Je statistieken", "LabelAbridged": "Verkort", "LabelAccountType": "Accounttype", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Kan downloaden", "LabelPermissionsUpdate": "Kan bijwerken", "LabelPermissionsUpload": "Kan uploaden", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Foto pad/URL", "LabelPlaylists": "Afspeellijsten", "LabelPlayMethod": "Afspeelwijze", @@ -436,6 +442,7 @@ "LabelSeries": "Serie", "LabelSeriesName": "Naam serie", "LabelSeriesProgress": "Voortgang serie", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Stel in als primair", "LabelSetEbookAsSupplementary": "Stel in als supplementair", "LabelSettingsAudiobooksOnly": "Alleen audiobooks", @@ -552,6 +559,8 @@ "LabelViewQueue": "Bekijk afspeelwachtrij", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Weekdagen om te draaien", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Je audioboekduur", "LabelYourBookmarks": "Je boekwijzers", "LabelYourPlaylists": "Je afspeellijsten", diff --git a/client/strings/no.json b/client/strings/no.json index 432115df..a29a7ef2 100644 --- a/client/strings/no.json +++ b/client/strings/no.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Søk opp alle forfattere", "ButtonMatchBooks": "Søk opp bøker", "ButtonNevermind": "Avbryt", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Åpne Feed", @@ -51,6 +52,7 @@ "ButtonPlay": "Spill av", "ButtonPlaying": "Spiller av", "ButtonPlaylists": "Spilleliste", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Tøm alle mellomlager", "ButtonPurgeItemsCache": "Tøm mellomlager", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Fjern fra kø", "ButtonQuickMatch": "Kjapt søk", "ButtonRead": "Les", + "ButtonRefresh": "Refresh", "ButtonRemove": "Fjern", "ButtonRemoveAll": "Fjern alle", "ButtonRemoveAllLibraryItems": "Fjern alle bibliotekobjekter", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Velg mappe", "ButtonSeries": "Serier", "ButtonSetChaptersFromTracks": "Sett kapittel fra spor", + "ButtonShare": "Share", "ButtonShiftTimes": "Forskyv tider", "ButtonShow": "Vis", "ButtonStartM4BEncode": "Start M4B Koding", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Oppdater detaljer", "HeaderUpdateLibrary": "Oppdater bibliotek", "HeaderUsers": "Brukere", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Din statistikk", "LabelAbridged": "Forkortet", "LabelAccountType": "Kontotype", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Kan laste ned", "LabelPermissionsUpdate": "Kan oppdatere", "LabelPermissionsUpload": "Kan laste opp", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Bilde sti/URL", "LabelPlaylists": "Spilleliste", "LabelPlayMethod": "Avspillingsmetode", @@ -436,6 +442,7 @@ "LabelSeries": "Serier", "LabelSeriesName": "Serier Navn", "LabelSeriesProgress": "Serier fremgang", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Sett som primær", "LabelSetEbookAsSupplementary": "Sett som supplerende", "LabelSettingsAudiobooksOnly": "Kun lydbøker", @@ -552,6 +559,8 @@ "LabelViewQueue": "Vis spillerkø", "LabelVolume": "Volum", "LabelWeekdaysToRun": "Ukedager å kjøre", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Din lydbok lengde", "LabelYourBookmarks": "Dine bokmerker", "LabelYourPlaylists": "Dine spillelister", diff --git a/client/strings/pl.json b/client/strings/pl.json index 7f0e4497..3189ccb7 100644 --- a/client/strings/pl.json +++ b/client/strings/pl.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Dopasuj wszystkich autorów", "ButtonMatchBooks": "Dopasuj książki", "ButtonNevermind": "Anuluj", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Otwórz feed", @@ -51,6 +52,7 @@ "ButtonPlay": "Odtwarzaj", "ButtonPlaying": "Odtwarzane", "ButtonPlaylists": "Playlists", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Wyczyść dane tymczasowe", "ButtonPurgeItemsCache": "Wyczyść dane tymczasowe pozycji", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Usuń z kolejki", "ButtonQuickMatch": "Szybkie dopasowanie", "ButtonRead": "Czytaj", + "ButtonRefresh": "Refresh", "ButtonRemove": "Usuń", "ButtonRemoveAll": "Usuń wszystko", "ButtonRemoveAllLibraryItems": "Usuń wszystkie elementy z biblioteki", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Wybierz ścieżkę folderu", "ButtonSeries": "Seria", "ButtonSetChaptersFromTracks": "Set chapters from tracks", + "ButtonShare": "Share", "ButtonShiftTimes": "Przesunięcie czasowe", "ButtonShow": "Pokaż", "ButtonStartM4BEncode": "Eksportuj jako plik M4B", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Zaktualizuj szczegóły", "HeaderUpdateLibrary": "Zaktualizuj bibliotekę", "HeaderUsers": "Użytkownicy", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Twoje statystyki", "LabelAbridged": "Abridged", "LabelAccountType": "Typ konta", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Ma możliwość pobierania", "LabelPermissionsUpdate": "Ma możliwość aktualizowania", "LabelPermissionsUpload": "Ma możliwość dodawania", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Scieżka/URL do zdjęcia", "LabelPlaylists": "Playlists", "LabelPlayMethod": "Metoda odtwarzania", @@ -436,6 +442,7 @@ "LabelSeries": "Serie", "LabelSeriesName": "Nazwy serii", "LabelSeriesProgress": "Postęp w serii", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Set as primary", "LabelSetEbookAsSupplementary": "Set as supplementary", "LabelSettingsAudiobooksOnly": "Audiobooks only", @@ -552,6 +559,8 @@ "LabelViewQueue": "Wyświetlaj kolejkę odtwarzania", "LabelVolume": "Głośność", "LabelWeekdaysToRun": "Dni tygodnia", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Czas trwania audiobooka", "LabelYourBookmarks": "Twoje zakładki", "LabelYourPlaylists": "Your Playlists", diff --git a/client/strings/pt-br.json b/client/strings/pt-br.json index fc626aff..14e7f52a 100644 --- a/client/strings/pt-br.json +++ b/client/strings/pt-br.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Consultar Todos os Autores", "ButtonMatchBooks": "Consultar Livros", "ButtonNevermind": "Cancelar", + "ButtonNext": "Next", "ButtonNextChapter": "Próximo Capítulo", "ButtonOk": "Ok", "ButtonOpenFeed": "Abrir Feed", @@ -51,6 +52,7 @@ "ButtonPlay": "Reproduzir", "ButtonPlaying": "Reproduzindo", "ButtonPlaylists": "Lista de Reprodução", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Capítulo Anterior", "ButtonPurgeAllCache": "Apagar Todo o Cache", "ButtonPurgeItemsCache": "Apagar o Cache de Itens", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Remover da Lista", "ButtonQuickMatch": "Consulta rápida", "ButtonRead": "Ler", + "ButtonRefresh": "Refresh", "ButtonRemove": "Remover", "ButtonRemoveAll": "Remover Todos", "ButtonRemoveAllLibraryItems": "Remover Todos os Itens da Biblioteca", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Selecionar Caminho da Pasta", "ButtonSeries": "Séries", "ButtonSetChaptersFromTracks": "Definir Capítulos Segundo Faixas", + "ButtonShare": "Share", "ButtonShiftTimes": "Deslocar tempos", "ButtonShow": "Exibir", "ButtonStartM4BEncode": "Iniciar Codificação M4B", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Atualizar Detalhes", "HeaderUpdateLibrary": "Atualizar Biblioteca", "HeaderUsers": "Usuários", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Suas Estatísticas", "LabelAbridged": "Versão Abreviada", "LabelAccountType": "Tipo de Conta", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Pode Fazer Download", "LabelPermissionsUpdate": "Pode Atualizar", "LabelPermissionsUpload": "Pode Fazer Upload", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Caminho/URL para Foto", "LabelPlaylists": "Listas de Reprodução", "LabelPlayMethod": "Método de Reprodução", @@ -436,6 +442,7 @@ "LabelSeries": "Série", "LabelSeriesName": "Nome da Série", "LabelSeriesProgress": "Progresso da Série", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Definir como principal", "LabelSetEbookAsSupplementary": "Definir como complementar", "LabelSettingsAudiobooksOnly": "Apenas Audiobooks", @@ -552,6 +559,8 @@ "LabelViewQueue": "Ver fila do reprodutor", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Dias da semana para executar", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Duração do seu audiobook", "LabelYourBookmarks": "Seus Marcadores", "LabelYourPlaylists": "Suas Listas de Reprodução", @@ -765,4 +774,4 @@ "ToastSocketFailedToConnect": "Falha na conexão do socket", "ToastUserDeleteFailed": "Falha ao apagar usuário", "ToastUserDeleteSuccess": "Usuário apagado" -} +} \ No newline at end of file diff --git a/client/strings/ru.json b/client/strings/ru.json index 3657b596..adc3b48b 100644 --- a/client/strings/ru.json +++ b/client/strings/ru.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Найти всех авторов", "ButtonMatchBooks": "Найти книги", "ButtonNevermind": "Не важно", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Ok", "ButtonOpenFeed": "Открыть канал", @@ -51,6 +52,7 @@ "ButtonPlay": "Слушать", "ButtonPlaying": "Проигрывается", "ButtonPlaylists": "Плейлисты", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Очистить весь кэш", "ButtonPurgeItemsCache": "Очистить кэш элементов", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Удалить из очереди", "ButtonQuickMatch": "Быстрый поиск", "ButtonRead": "Читать", + "ButtonRefresh": "Refresh", "ButtonRemove": "Удалить", "ButtonRemoveAll": "Удалить всё", "ButtonRemoveAllLibraryItems": "Удалить все элементы библиотеки", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Выберите путь папки", "ButtonSeries": "Серии", "ButtonSetChaptersFromTracks": "Установить главы из треков", + "ButtonShare": "Share", "ButtonShiftTimes": "Смещение", "ButtonShow": "Показать", "ButtonStartM4BEncode": "Начать кодирование M4B", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Обновить детали", "HeaderUpdateLibrary": "Обновить библиотеку", "HeaderUsers": "Пользователи", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Ваша статистика", "LabelAbridged": "Сокращенное издание", "LabelAccountType": "Тип учетной записи", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Может скачивать", "LabelPermissionsUpdate": "Может обновлять", "LabelPermissionsUpload": "Может закачивать", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Путь к фото/URL", "LabelPlaylists": "Плейлисты", "LabelPlayMethod": "Метод воспроизведения", @@ -436,6 +442,7 @@ "LabelSeries": "Серия", "LabelSeriesName": "Имя серии", "LabelSeriesProgress": "Прогресс серии", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Установить как основную", "LabelSetEbookAsSupplementary": "Установить как дополнительную", "LabelSettingsAudiobooksOnly": "Только аудиокниги", @@ -552,6 +559,8 @@ "LabelViewQueue": "Очередь воспроизведения", "LabelVolume": "Громкость", "LabelWeekdaysToRun": "Дни недели для запуска", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Продолжительность Вашей книги", "LabelYourBookmarks": "Ваши закладки", "LabelYourPlaylists": "Ваши плейлисты", diff --git a/client/strings/sv.json b/client/strings/sv.json index 986f2c4b..9560e765 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "Matcha alla författare", "ButtonMatchBooks": "Matcha böcker", "ButtonNevermind": "Glöm det", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "Okej", "ButtonOpenFeed": "Öppna flöde", @@ -51,6 +52,7 @@ "ButtonPlay": "Spela", "ButtonPlaying": "Spelar", "ButtonPlaylists": "Spellistor", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "Rensa all cache", "ButtonPurgeItemsCache": "Rensa föremåls-cache", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "Ta bort från kön", "ButtonQuickMatch": "Snabb matchning", "ButtonRead": "Läs", + "ButtonRefresh": "Refresh", "ButtonRemove": "Ta bort", "ButtonRemoveAll": "Ta bort alla", "ButtonRemoveAllLibraryItems": "Ta bort alla biblioteksobjekt", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "Välj mappens sökväg", "ButtonSeries": "Serie", "ButtonSetChaptersFromTracks": "Ställ in kapitel från spår", + "ButtonShare": "Share", "ButtonShiftTimes": "Förskjut tider", "ButtonShow": "Visa", "ButtonStartM4BEncode": "Starta M4B-kodning", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "Uppdatera detaljer", "HeaderUpdateLibrary": "Uppdatera bibliotek", "HeaderUsers": "Användare", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "Dina statistik", "LabelAbridged": "Förkortad", "LabelAccountType": "Kontotyp", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "Kan ladda ner", "LabelPermissionsUpdate": "Kan uppdatera", "LabelPermissionsUpload": "Kan ladda upp", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "Bildsökväg/URL", "LabelPlaylists": "Spellistor", "LabelPlayMethod": "Spelläge", @@ -436,6 +442,7 @@ "LabelSeries": "Serie", "LabelSeriesName": "Serienamn", "LabelSeriesProgress": "Serieframsteg", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "Ange som primär", "LabelSetEbookAsSupplementary": "Ange som kompletterande", "LabelSettingsAudiobooksOnly": "Endast ljudböcker", @@ -552,6 +559,8 @@ "LabelViewQueue": "Visa spellista", "LabelVolume": "Volym", "LabelWeekdaysToRun": "Vardagar att köra", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "Din ljudboks varaktighet", "LabelYourBookmarks": "Dina bokmärken", "LabelYourPlaylists": "Dina spellistor", diff --git a/client/strings/zh-cn.json b/client/strings/zh-cn.json index fd7fe290..c1d9345f 100644 --- a/client/strings/zh-cn.json +++ b/client/strings/zh-cn.json @@ -43,6 +43,7 @@ "ButtonMatchAllAuthors": "匹配所有作者", "ButtonMatchBooks": "匹配图书", "ButtonNevermind": "没有关系", + "ButtonNext": "Next", "ButtonNextChapter": "Next Chapter", "ButtonOk": "确定", "ButtonOpenFeed": "打开源", @@ -51,6 +52,7 @@ "ButtonPlay": "播放", "ButtonPlaying": "正在播放", "ButtonPlaylists": "播放列表", + "ButtonPrevious": "Previous", "ButtonPreviousChapter": "Previous Chapter", "ButtonPurgeAllCache": "清理所有缓存", "ButtonPurgeItemsCache": "清理项目缓存", @@ -59,6 +61,7 @@ "ButtonQueueRemoveItem": "从队列中移除", "ButtonQuickMatch": "快速匹配", "ButtonRead": "读取", + "ButtonRefresh": "Refresh", "ButtonRemove": "移除", "ButtonRemoveAll": "移除所有", "ButtonRemoveAllLibraryItems": "移除所有媒体库项目", @@ -78,6 +81,7 @@ "ButtonSelectFolderPath": "选择文件夹路径", "ButtonSeries": "系列", "ButtonSetChaptersFromTracks": "将音轨设置为章节", + "ButtonShare": "Share", "ButtonShiftTimes": "快速调整时间", "ButtonShow": "显示", "ButtonStartM4BEncode": "开始 M4B 编码", @@ -180,6 +184,7 @@ "HeaderUpdateDetails": "更新详情", "HeaderUpdateLibrary": "更新媒体库", "HeaderUsers": "用户", + "HeaderYearReview": "Year {0} in Review", "HeaderYourStats": "你的统计数据", "LabelAbridged": "概要", "LabelAccountType": "帐户类型", @@ -391,6 +396,7 @@ "LabelPermissionsDownload": "可以下载", "LabelPermissionsUpdate": "可以更新", "LabelPermissionsUpload": "可以上传", + "LabelPersonalYearReview": "Your Year in Review ({0})", "LabelPhotoPathURL": "图片路径或 URL", "LabelPlaylists": "播放列表", "LabelPlayMethod": "播放方法", @@ -436,6 +442,7 @@ "LabelSeries": "系列", "LabelSeriesName": "系列名称", "LabelSeriesProgress": "系列进度", + "LabelServerYearReview": "Server Year in Review ({0})", "LabelSetEbookAsPrimary": "设置为主", "LabelSetEbookAsSupplementary": "设置为补充", "LabelSettingsAudiobooksOnly": "只有有声读物", @@ -552,6 +559,8 @@ "LabelViewQueue": "查看播放列表", "LabelVolume": "音量", "LabelWeekdaysToRun": "工作日运行", + "LabelYearReviewHide": "Hide Year in Review", + "LabelYearReviewShow": "See Year in Review", "LabelYourAudiobookDuration": "你的有声读物持续时间", "LabelYourBookmarks": "你的书签", "LabelYourPlaylists": "你的播放列表", From c799379a5486e2999fb95b5a0c16fea877d91272 Mon Sep 17 00:00:00 2001 From: JBlond Date: Sat, 24 Feb 2024 20:23:51 +0100 Subject: [PATCH 011/289] Update de strings --- client/strings/de.json | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client/strings/de.json b/client/strings/de.json index 46467734..5b2711c1 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -43,7 +43,7 @@ "ButtonMatchAllAuthors": "Online Metadaten-Abgleich (alle Autoren)", "ButtonMatchBooks": "Online Metadaten-Abgleich (alle Medien)", "ButtonNevermind": "Abbrechen", - "ButtonNext": "Next", + "ButtonNext": "Vor", "ButtonNextChapter": "Nächstes Kapitel", "ButtonOk": "Ok", "ButtonOpenFeed": "Feed öffnen", @@ -52,7 +52,7 @@ "ButtonPlay": "Abspielen", "ButtonPlaying": "Spielt", "ButtonPlaylists": "Wiedergabelisten", - "ButtonPrevious": "Previous", + "ButtonPrevious": "Zurück", "ButtonPreviousChapter": "Vorheriges Kapitel", "ButtonPurgeAllCache": "Cache leeren", "ButtonPurgeItemsCache": "Lösche Medien-Cache", @@ -292,11 +292,11 @@ "LabelFinished": "Beendet", "LabelFolder": "Ordner", "LabelFolders": "Verzeichnisse", - "LabelFontBold": "Bold", + "LabelFontBold": "Fett", "LabelFontFamily": "Schriftfamilie", - "LabelFontItalic": "Italic", + "LabelFontItalic": "Kursiv", "LabelFontScale": "Schriftgröße", - "LabelFontStrikethrough": "Strikethrough", + "LabelFontStrikethrough": "Durchgestrichen", "LabelFormat": "Format", "LabelGenre": "Kategorie", "LabelGenres": "Kategorien", @@ -419,7 +419,7 @@ "LabelRecentlyAdded": "Kürzlich hinzugefügt", "LabelRecentSeries": "Aktuelle Serien", "LabelRecommended": "Empfohlen", - "LabelRedo": "Redo", + "LabelRedo": "Wiederholen", "LabelRegion": "Region", "LabelReleaseDate": "Veröffentlichungsdatum", "LabelRemoveCover": "Lösche Titelbild", From e6735e042e8f61559cf35992d50cecbee7b30aee Mon Sep 17 00:00:00 2001 From: mikiher Date: Sun, 25 Feb 2024 09:01:26 +0200 Subject: [PATCH 012/289] Fix dup author addition logic --- server/models/LibraryItem.js | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/server/models/LibraryItem.js b/server/models/LibraryItem.js index c7da31f6..49b44f9a 100644 --- a/server/models/LibraryItem.js +++ b/server/models/LibraryItem.js @@ -312,17 +312,18 @@ class LibraryItem extends Model { const existingAuthors = libraryItemExpanded.media.authors || [] const existingSeriesAll = libraryItemExpanded.media.series || [] const updatedAuthors = oldLibraryItem.media.metadata.authors || [] + const uniqueUpdatedAuthors = updatedAuthors.filter((au, idx) => updatedAuthors.findIndex(a => a.id === au.id) === idx) const updatedSeriesAll = oldLibraryItem.media.metadata.series || [] for (const existingAuthor of existingAuthors) { // Author was removed from Book - if (!updatedAuthors.some(au => au.id === existingAuthor.id)) { + if (!uniqueUpdatedAuthors.some(au => au.id === existingAuthor.id)) { Logger.debug(`[LibraryItem] "${libraryItemExpanded.media.title}" author "${existingAuthor.name}" was removed`) await this.sequelize.models.bookAuthor.removeByIds(existingAuthor.id, libraryItemExpanded.media.id) hasUpdates = true } } - for (const updatedAuthor of updatedAuthors) { + for (const updatedAuthor of uniqueUpdatedAuthors) { // Author was added if (!existingAuthors.some(au => au.id === updatedAuthor.id)) { Logger.debug(`[LibraryItem] "${libraryItemExpanded.media.title}" author "${updatedAuthor.name}" was added`) From 3a99cc56b7a992793dd61ffb31e5a75ef575abcb Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 25 Feb 2024 12:56:04 -0600 Subject: [PATCH 013/289] Update:Debian packager script to use xz compression instead of zstd --- build/linuxpackager | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/build/linuxpackager b/build/linuxpackager index a43d4ed1..5f03a2e8 100755 --- a/build/linuxpackager +++ b/build/linuxpackager @@ -50,9 +50,8 @@ echo "$controlfile" > dist/debian/DEBIAN/control; # Package debian pkg -t node18-linux-x64 -o dist/debian/usr/share/audiobookshelf/audiobookshelf . -fakeroot dpkg-deb --build dist/debian +fakeroot dpkg-deb -Zxz --build dist/debian mv dist/debian.deb "dist/$OUTPUT_FILE" -chmod +x "dist/$OUTPUT_FILE" echo "Finished! Filename: $OUTPUT_FILE" From b47793c365aaafee08db3cb4fe0b5a070029fb4f Mon Sep 17 00:00:00 2001 From: mikiher Date: Mon, 26 Feb 2024 14:00:25 +0200 Subject: [PATCH 014/289] Add cache control header for timestamped cover image requests --- server/controllers/LibraryItemController.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/controllers/LibraryItemController.js b/server/controllers/LibraryItemController.js index dfa1daea..3fa7743a 100644 --- a/server/controllers/LibraryItemController.js +++ b/server/controllers/LibraryItemController.js @@ -283,6 +283,9 @@ class LibraryItemController { return res.sendStatus(404) } + if (req.query.ts) + res.set('Cache-Control', 'private, max-age=86400') + if (raw) { // any value if (global.XAccel) { const encodedURI = encodeUriPath(global.XAccel + libraryItem.media.coverPath) From def2988e120b162da1f3e9df586813bccf156f63 Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 26 Feb 2024 17:20:11 -0600 Subject: [PATCH 015/289] Update:Passport openid-client request timeout set to 10s (default was 3.5s) #2669 --- server/Auth.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/server/Auth.js b/server/Auth.js index cec3bc33..ad219dc2 100644 --- a/server/Auth.js +++ b/server/Auth.js @@ -76,6 +76,9 @@ class Auth { return } + // Custom req timeout see: https://github.com/panva/node-openid-client/blob/main/docs/README.md#customizing + OpenIDClient.custom.setHttpOptionsDefaults({ timeout: 10000 }) + const openIdIssuerClient = new OpenIDClient.Issuer({ issuer: global.ServerSettings.authOpenIDIssuerURL, authorization_endpoint: global.ServerSettings.authOpenIDAuthorizationURL, From 72172dcb331f73864abccee1b6aed44416fd207e Mon Sep 17 00:00:00 2001 From: Machou Date: Tue, 27 Feb 2024 08:56:31 +0100 Subject: [PATCH 016/289] Update fr.json --- client/strings/fr.json | 52 +++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/client/strings/fr.json b/client/strings/fr.json index bbf38e18..81b6fa1b 100644 --- a/client/strings/fr.json +++ b/client/strings/fr.json @@ -7,7 +7,7 @@ "ButtonAddUser": "Ajouter un utilisateur", "ButtonAddYourFirstLibrary": "Ajouter votre première bibliothèque", "ButtonApply": "Appliquer", - "ButtonApplyChapters": "Appliquer les chapitres", + "ButtonApplyChapters": "Appliquer aux chapitres", "ButtonAuthors": "Auteurs", "ButtonBrowseForFolder": "Naviguer vers le répertoire", "ButtonCancel": "Annuler", @@ -32,8 +32,8 @@ "ButtonHide": "Cacher", "ButtonHome": "Accueil", "ButtonIssues": "Parutions", - "ButtonJumpBackward": "Jump Backward", - "ButtonJumpForward": "Jump Forward", + "ButtonJumpBackward": "Retour", + "ButtonJumpForward": "Avancer", "ButtonLatest": "Dernière version", "ButtonLibrary": "Bibliothèque", "ButtonLogout": "Me déconnecter", @@ -43,8 +43,8 @@ "ButtonMatchAllAuthors": "Chercher tous les auteurs", "ButtonMatchBooks": "Chercher les livres", "ButtonNevermind": "Non merci", - "ButtonNext": "Next", - "ButtonNextChapter": "Next Chapter", + "ButtonNext": "Suivant", + "ButtonNextChapter": "Chapitre suivant", "ButtonOk": "Ok", "ButtonOpenFeed": "Ouvrir le flux", "ButtonOpenManager": "Ouvrir le gestionnaire", @@ -52,8 +52,8 @@ "ButtonPlay": "Écouter", "ButtonPlaying": "En lecture", "ButtonPlaylists": "Listes de lecture", - "ButtonPrevious": "Previous", - "ButtonPreviousChapter": "Previous Chapter", + "ButtonPrevious": "Précédent", + "ButtonPreviousChapter": "Chapitre précédent", "ButtonPurgeAllCache": "Purger le cache", "ButtonPurgeItemsCache": "Purger le cache des articles", "ButtonPurgeMediaProgress": "Purger la progression des médias", @@ -61,7 +61,7 @@ "ButtonQueueRemoveItem": "Supprimer de la liste de lecture", "ButtonQuickMatch": "Recherche rapide", "ButtonRead": "Lire", - "ButtonRefresh": "Refresh", + "ButtonRefresh": "Rafraîchir", "ButtonRemove": "Supprimer", "ButtonRemoveAll": "Supprimer tout", "ButtonRemoveAllLibraryItems": "Supprimer tous les articles de la bibliothèque", @@ -81,7 +81,7 @@ "ButtonSelectFolderPath": "Sélectionner le chemin du dossier", "ButtonSeries": "Séries", "ButtonSetChaptersFromTracks": "Positionner les chapitres par rapports aux pistes", - "ButtonShare": "Share", + "ButtonShare": "Partager", "ButtonShiftTimes": "Décaler l’horodatage du livre", "ButtonShow": "Afficher", "ButtonStartM4BEncode": "Démarrer l’encodage M4B", @@ -92,7 +92,7 @@ "ButtonUploadBackup": "Téléverser une sauvegarde", "ButtonUploadCover": "Téléverser une couverture", "ButtonUploadOPMLFile": "Téléverser un fichier OPML", - "ButtonUserDelete": "Effacer l’utilisateur {0}", + "ButtonUserDelete": "Supprimer l’utilisateur {0}", "ButtonUserEdit": "Modifier l’utilisateur {0}", "ButtonViewAll": "Afficher tout", "ButtonYes": "Oui", @@ -101,8 +101,8 @@ "ErrorUploadLacksTitle": "Doit avoir un titre", "HeaderAccount": "Compte", "HeaderAdvanced": "Avancé", - "HeaderAppriseNotificationSettings": "Configuration des Notifications Apprise", - "HeaderAudiobookTools": "Outils de Gestion de Fichier Audiobook", + "HeaderAppriseNotificationSettings": "Configuration des notifications Apprise", + "HeaderAudiobookTools": "Outils de gestion de fichiers de livres audio", "HeaderAudioTracks": "Pistes audio", "HeaderAuthentication": "Authentication", "HeaderBackups": "Sauvegardes", @@ -113,7 +113,7 @@ "HeaderCollectionItems": "Entrées de la collection", "HeaderCover": "Couverture", "HeaderCurrentDownloads": "Téléchargements en cours", - "HeaderCustomMetadataProviders": "Custom Metadata Providers", + "HeaderCustomMetadataProviders": "Fournisseurs de métadonnées personnalisés", "HeaderDetails": "Détails", "HeaderDownloadQueue": "File d’attente de téléchargements", "HeaderEbookFiles": "Fichier des livres numériques", @@ -292,11 +292,11 @@ "LabelFinished": "Terminé le", "LabelFolder": "Dossier", "LabelFolders": "Dossiers", - "LabelFontBold": "Bold", + "LabelFontBold": "Gras", "LabelFontFamily": "Polices de caractères", - "LabelFontItalic": "Italic", + "LabelFontItalic": "Italique", "LabelFontScale": "Taille de la police de caractère", - "LabelFontStrikethrough": "Strikethrough", + "LabelFontStrikethrough": "Barrer", "LabelFormat": "Format", "LabelGenre": "Genre", "LabelGenres": "Genres", @@ -419,7 +419,7 @@ "LabelRecentlyAdded": "Derniers ajouts", "LabelRecentSeries": "Séries récentes", "LabelRecommended": "Recommandé", - "LabelRedo": "Redo", + "LabelRedo": "Refaire", "LabelRegion": "Région", "LabelReleaseDate": "Date de parution", "LabelRemoveCover": "Supprimer la couverture", @@ -509,10 +509,10 @@ "LabelTagsAccessibleToUser": "Étiquettes accessibles à l’utilisateur", "LabelTagsNotAccessibleToUser": "Étiquettes non accessibles à l’utilisateur", "LabelTasks": "Tâches en cours", - "LabelTextEditorBulletedList": "Bulleted list", - "LabelTextEditorLink": "Link", - "LabelTextEditorNumberedList": "Numbered list", - "LabelTextEditorUnlink": "Unlink", + "LabelTextEditorBulletedList": "Liste à puces", + "LabelTextEditorLink": "Lien", + "LabelTextEditorNumberedList": "Liste numérotée", + "LabelTextEditorUnlink": "Dissocier", "LabelTheme": "Thème", "LabelThemeDark": "Sombre", "LabelThemeLight": "Clair", @@ -538,7 +538,7 @@ "LabelTracksSingleTrack": "Piste simple", "LabelType": "Type", "LabelUnabridged": "Version intégrale", - "LabelUndo": "Undo", + "LabelUndo": "Annuler", "LabelUnknown": "Inconnu", "LabelUpdateCover": "Mettre à jour la couverture", "LabelUpdateCoverHelp": "Autoriser la mise à jour de la couverture existante lorsqu’une correspondance est trouvée", @@ -559,8 +559,8 @@ "LabelViewQueue": "Afficher la liste de lecture", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Jours de la semaine à exécuter", - "LabelYearReviewHide": "Hide Year in Review", - "LabelYearReviewShow": "See Year in Review", + "LabelYearReviewHide": "Masquer le bilan de l’année", + "LabelYearReviewShow": "Afficher le bilan de l’année", "LabelYourAudiobookDuration": "Durée de vos livres audios", "LabelYourBookmarks": "Vos signets", "LabelYourPlaylists": "Vos listes de lecture", @@ -692,7 +692,7 @@ "MessageYourAudiobookDurationIsShorter": "La durée de votre livre audio est plus courte que la durée trouvée", "NoteChangeRootPassword": "seul l’utilisateur « root » peut utiliser un mot de passe vide", "NoteChapterEditorTimes": "Information : l’horodatage du premier chapitre doit être à 0:00 et celui du dernier chapitre ne peut se situer au-delà de la durée du livre audio.", - "NoteFolderPicker": "Information : Les dossiers déjà surveillés ne sont pas affichés", + "NoteFolderPicker": "Information : les dossiers déjà surveillés ne sont pas affichés", "NoteRSSFeedPodcastAppsHttps": "Attention : la majorité des application de podcast nécessite une adresse de flux en HTTPS.", "NoteRSSFeedPodcastAppsPubDate": "Attention : un ou plusieurs de vos épisodes ne possèdent pas de date de publication. Certaines applications de podcast le requièrent.", "NoteUploaderFoldersWithMediaFiles": "Les dossiers contenant des fichiers multimédias seront traités comme des éléments distincts de la bibliothèque.", @@ -774,4 +774,4 @@ "ToastSocketFailedToConnect": "Échec de la connexion WebSocket", "ToastUserDeleteFailed": "Échec de la suppression de l’utilisateur", "ToastUserDeleteSuccess": "Utilisateur supprimé" -} \ No newline at end of file +} From 655bebfec4c6ba71751a7aa4a0f3e7af7f5e4789 Mon Sep 17 00:00:00 2001 From: Teekeks Date: Tue, 27 Feb 2024 18:30:05 +0100 Subject: [PATCH 017/289] feat: Expanded filter to include "has no ebook" and "has no supplementary ebooks" options --- client/components/controls/LibraryFilterSelect.vue | 8 ++++++++ client/strings/de.json | 2 ++ client/strings/en-us.json | 2 ++ server/utils/queries/libraryItemsBookFilters.js | 8 ++++++++ 4 files changed, 20 insertions(+) diff --git a/client/components/controls/LibraryFilterSelect.vue b/client/components/controls/LibraryFilterSelect.vue index 5ed4400b..04dd11af 100644 --- a/client/components/controls/LibraryFilterSelect.vue +++ b/client/components/controls/LibraryFilterSelect.vue @@ -368,9 +368,17 @@ export default { id: 'ebook', name: this.$strings.LabelHasEbook }, + { + id: 'no-ebook', + name: this.$strings.LabelMissingEbook + }, { id: 'supplementary', name: this.$strings.LabelHasSupplementaryEbook + }, + { + id: 'no-supplementary', + name: this.$strings.LabelMissingSupplementaryEbook } ] }, diff --git a/client/strings/de.json b/client/strings/de.json index 5b2711c1..33b0fb1b 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -356,7 +356,9 @@ "LabelMetaTags": "Meta Tags", "LabelMinute": "Minute", "LabelMissing": "Fehlend", + "LabelMissingEbook": "E-Book fehlt", "LabelMissingParts": "Fehlende Teile", + "LabelMissingSupplementaryEbook": "Ergänzendes E-Book fehlt", "LabelMobileRedirectURIs": "Erlaubte Weiterleitungs-URIs für die mobile App", "LabelMobileRedirectURIsDescription": "Dies ist eine Whitelist gültiger Umleitungs-URIs für mobile Apps. Der Standardwert ist audiobookshelf://oauth, den du entfernen oder durch zusätzliche URIs für die Integration von Drittanbieter-Apps ergänzen kannst. Die Verwendung eines Sternchens (*) als alleiniger Eintrag erlaubt jede URI.", "LabelMore": "Mehr", diff --git a/client/strings/en-us.json b/client/strings/en-us.json index b8860ffa..2465f873 100644 --- a/client/strings/en-us.json +++ b/client/strings/en-us.json @@ -356,7 +356,9 @@ "LabelMetaTags": "Meta Tags", "LabelMinute": "Minute", "LabelMissing": "Missing", + "LabelMissingEbook": "Has no ebook", "LabelMissingParts": "Missing Parts", + "LabelMissingSupplementaryEbook": "Has no supplementary ebook", "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs", "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.", "LabelMore": "More", diff --git a/server/utils/queries/libraryItemsBookFilters.js b/server/utils/queries/libraryItemsBookFilters.js index d23459b4..16a25847 100644 --- a/server/utils/queries/libraryItemsBookFilters.js +++ b/server/utils/queries/libraryItemsBookFilters.js @@ -204,6 +204,10 @@ module.exports = { mediaWhere['ebookFile'] = { [Sequelize.Op.not]: null } + } else if (value == 'no-ebook') { + mediaWhere['ebookFile'] = { + [Sequelize.Op.eq]: null + } } } else if (group === 'missing') { if (['asin', 'isbn', 'subtitle', 'publishedYear', 'description', 'publisher', 'language', 'cover'].includes(value)) { @@ -421,6 +425,10 @@ module.exports = { libraryItemWhere['libraryFiles'] = { [Sequelize.Op.substring]: `"isSupplementary":true` } + } else if (filterGroup === 'ebooks' && filterValue === 'no-supplementary') { + libraryItemWhere['libraryFiles'] = { + [Sequelize.Op.notLike]: Sequelize.literal(`\'%"isSupplementary":true%\'`), + } } else if (filterGroup === 'missing' && filterValue === 'authors') { authorInclude = { model: Database.authorModel, From 20ec54e085ef0d7491ddfe0b40bbcc50a2ba4852 Mon Sep 17 00:00:00 2001 From: pmangro <160148596+pmangro@users.noreply.github.com> Date: Tue, 27 Feb 2024 14:31:21 -0300 Subject: [PATCH 018/289] [PT-BR] Updated strings --- client/strings/pt-br.json | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/client/strings/pt-br.json b/client/strings/pt-br.json index 14e7f52a..1d88c209 100644 --- a/client/strings/pt-br.json +++ b/client/strings/pt-br.json @@ -43,7 +43,7 @@ "ButtonMatchAllAuthors": "Consultar Todos os Autores", "ButtonMatchBooks": "Consultar Livros", "ButtonNevermind": "Cancelar", - "ButtonNext": "Next", + "ButtonNext": "Próximo", "ButtonNextChapter": "Próximo Capítulo", "ButtonOk": "Ok", "ButtonOpenFeed": "Abrir Feed", @@ -52,7 +52,7 @@ "ButtonPlay": "Reproduzir", "ButtonPlaying": "Reproduzindo", "ButtonPlaylists": "Lista de Reprodução", - "ButtonPrevious": "Previous", + "ButtonPrevious": "Anterior", "ButtonPreviousChapter": "Capítulo Anterior", "ButtonPurgeAllCache": "Apagar Todo o Cache", "ButtonPurgeItemsCache": "Apagar o Cache de Itens", @@ -61,7 +61,7 @@ "ButtonQueueRemoveItem": "Remover da Lista", "ButtonQuickMatch": "Consulta rápida", "ButtonRead": "Ler", - "ButtonRefresh": "Refresh", + "ButtonRefresh": "Atualizar", "ButtonRemove": "Remover", "ButtonRemoveAll": "Remover Todos", "ButtonRemoveAllLibraryItems": "Remover Todos os Itens da Biblioteca", @@ -81,7 +81,7 @@ "ButtonSelectFolderPath": "Selecionar Caminho da Pasta", "ButtonSeries": "Séries", "ButtonSetChaptersFromTracks": "Definir Capítulos Segundo Faixas", - "ButtonShare": "Share", + "ButtonShare": "Compartilhar", "ButtonShiftTimes": "Deslocar tempos", "ButtonShow": "Exibir", "ButtonStartM4BEncode": "Iniciar Codificação M4B", @@ -184,7 +184,7 @@ "HeaderUpdateDetails": "Atualizar Detalhes", "HeaderUpdateLibrary": "Atualizar Biblioteca", "HeaderUsers": "Usuários", - "HeaderYearReview": "Year {0} in Review", + "HeaderYearReview": "Retrospectiva de {0} ", "HeaderYourStats": "Suas Estatísticas", "LabelAbridged": "Versão Abreviada", "LabelAccountType": "Tipo de Conta", @@ -396,13 +396,13 @@ "LabelPermissionsDownload": "Pode Fazer Download", "LabelPermissionsUpdate": "Pode Atualizar", "LabelPermissionsUpload": "Pode Fazer Upload", - "LabelPersonalYearReview": "Your Year in Review ({0})", + "LabelPersonalYearReview": "Sua Retrospectiva Anual ({0})", "LabelPhotoPathURL": "Caminho/URL para Foto", "LabelPlaylists": "Listas de Reprodução", "LabelPlayMethod": "Método de Reprodução", "LabelPodcast": "Podcast", "LabelPodcasts": "Podcasts", - "LabelPodcastSearchRegion": "Podcast search region", + "LabelPodcastSearchRegion": "Região de busca do podcast", "LabelPodcastType": "Tipo de Podcast", "LabelPort": "Porta", "LabelPrefixesToIgnore": "Prefixos para Ignorar (sem distinção entre maiúsculas e minúsculas)", @@ -442,7 +442,7 @@ "LabelSeries": "Série", "LabelSeriesName": "Nome da Série", "LabelSeriesProgress": "Progresso da Série", - "LabelServerYearReview": "Server Year in Review ({0})", + "LabelServerYearReview": "Retrospectiva Anual do Servidor ({0})", "LabelSetEbookAsPrimary": "Definir como principal", "LabelSetEbookAsSupplementary": "Definir como complementar", "LabelSettingsAudiobooksOnly": "Apenas Audiobooks", @@ -559,8 +559,8 @@ "LabelViewQueue": "Ver fila do reprodutor", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Dias da semana para executar", - "LabelYearReviewHide": "Hide Year in Review", - "LabelYearReviewShow": "See Year in Review", + "LabelYearReviewHide": "Ocultar Retrospectiva Anual", + "LabelYearReviewShow": "Exibir Retrospectiva Anual", "LabelYourAudiobookDuration": "Duração do seu audiobook", "LabelYourBookmarks": "Seus Marcadores", "LabelYourPlaylists": "Suas Listas de Reprodução", @@ -774,4 +774,4 @@ "ToastSocketFailedToConnect": "Falha na conexão do socket", "ToastUserDeleteFailed": "Falha ao apagar usuário", "ToastUserDeleteSuccess": "Usuário apagado" -} \ No newline at end of file +} From 38f12f47950713557a92def0f6871fef2482c7cc Mon Sep 17 00:00:00 2001 From: advplyr Date: Tue, 27 Feb 2024 17:17:33 -0600 Subject: [PATCH 019/289] Fix:Podcast schedule max new episodes to download setting to 0 and fix input blurs #2680 --- client/components/modals/item/tabs/Schedule.vue | 11 ++++++++--- server/objects/mediaTypes/Podcast.js | 8 +++++++- server/utils/index.js | 4 +++- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/client/components/modals/item/tabs/Schedule.vue b/client/components/modals/item/tabs/Schedule.vue index 032936d1..819ede19 100644 --- a/client/components/modals/item/tabs/Schedule.vue +++ b/client/components/modals/item/tabs/Schedule.vue @@ -20,7 +20,7 @@
- +

Max new episodes to download per check @@ -129,9 +129,12 @@ export default { return } } - if (this.$refs.maxEpisodesInput && this.$refs.maxEpisodesInput.isFocused) { + + if (this.$refs.maxEpisodesInput?.isFocused) { this.$refs.maxEpisodesInput.blur() - return + } + if (this.$refs.maxEpisodesToDownloadInput?.isFocused) { + this.$refs.maxEpisodesToDownloadInput.blur() } const updatePayload = { @@ -140,9 +143,11 @@ export default { if (this.enableAutoDownloadEpisodes) { updatePayload.autoDownloadSchedule = this.cronExpression } + this.newMaxEpisodesToKeep = Number(this.newMaxEpisodesToKeep) if (this.newMaxEpisodesToKeep !== this.maxEpisodesToKeep) { updatePayload.maxEpisodesToKeep = this.newMaxEpisodesToKeep } + this.newMaxNewEpisodesToDownload = Number(this.newMaxNewEpisodesToDownload) if (this.newMaxNewEpisodesToDownload !== this.maxNewEpisodesToDownload) { updatePayload.maxNewEpisodesToDownload = this.newMaxNewEpisodesToDownload } diff --git a/server/objects/mediaTypes/Podcast.js b/server/objects/mediaTypes/Podcast.js index a0e5de04..6f7ca337 100644 --- a/server/objects/mediaTypes/Podcast.js +++ b/server/objects/mediaTypes/Podcast.js @@ -42,7 +42,13 @@ class Podcast { this.autoDownloadSchedule = podcast.autoDownloadSchedule || '0 * * * *' // Added in 2.1.3 so default to hourly this.lastEpisodeCheck = podcast.lastEpisodeCheck || 0 this.maxEpisodesToKeep = podcast.maxEpisodesToKeep || 0 - this.maxNewEpisodesToDownload = podcast.maxNewEpisodesToDownload || 3 + + // Default is 3 but 0 is allowed + if (typeof podcast.maxNewEpisodesToDownload !== 'number') { + this.maxNewEpisodesToDownload = 3 + } else { + this.maxNewEpisodesToDownload = podcast.maxNewEpisodesToDownload + } } toJSON() { diff --git a/server/utils/index.js b/server/utils/index.js index f75572ba..6a89621b 100644 --- a/server/utils/index.js +++ b/server/utils/index.js @@ -114,7 +114,9 @@ module.exports.reqSupportsWebp = (req) => { module.exports.areEquivalent = areEquivalent module.exports.copyValue = (val) => { - if (!val) return val === false ? false : null + if (val === undefined || val === '') return null + else if (!val) return val + if (!this.isObject(val)) return val if (Array.isArray(val)) { From f4a19e48ad21241c27f0b0f4c07cf3d758f37b45 Mon Sep 17 00:00:00 2001 From: mfcar Date: Wed, 28 Feb 2024 19:21:11 +0000 Subject: [PATCH 020/289] Update login page --- client/pages/login.vue | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/pages/login.vue b/client/pages/login.vue index 9b7758d8..efdbba4d 100644 --- a/client/pages/login.vue +++ b/client/pages/login.vue @@ -1,5 +1,5 @@