diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile index ddd7c5f3..16ae302c 100644 --- a/.devcontainer/Dockerfile +++ b/.devcontainer/Dockerfile @@ -10,6 +10,3 @@ RUN apt-get update && \ DEBIAN_FRONTEND=noninteractive apt-get -y install --no-install-recommends \ curl tzdata ffmpeg && \ rm -rf /var/lib/apt/lists/* - -# Move tone executable to appropriate directory -COPY --from=sandreas/tone:v0.1.5 /usr/local/bin/tone /usr/local/bin/ diff --git a/.github/workflows/integration-test.yml b/.github/workflows/integration-test.yml index df639ef7..3e499468 100644 --- a/.github/workflows/integration-test.yml +++ b/.github/workflows/integration-test.yml @@ -4,7 +4,7 @@ on: pull_request: push: branches-ignore: - - 'dependabot/**' # Don't run dependabot branches, as they are already covered by pull requests + - 'dependabot/**' # Don't run dependabot branches, as they are already covered by pull requests jobs: build: @@ -18,8 +18,8 @@ jobs: with: node-version: 20 - - name: install pkg - run: npm install -g pkg + - name: install pkg (using yao-pkg fork for targetting node20) + run: npm install -g @yao-pkg/pkg - name: get client dependencies working-directory: client @@ -33,7 +33,7 @@ jobs: run: npm ci --only=production - name: build binary - run: pkg -t node18-linux-x64 -o audiobookshelf . + run: pkg -t node20-linux-x64 -o audiobookshelf . - name: run audiobookshelf run: | diff --git a/Dockerfile b/Dockerfile index 97bb4732..fe68b304 100644 --- a/Dockerfile +++ b/Dockerfile @@ -6,7 +6,6 @@ RUN npm ci && npm cache clean --force RUN npm run generate ### STAGE 1: Build server ### -FROM sandreas/tone:v0.1.5 AS tone FROM node:20-alpine ENV NODE_ENV=production @@ -21,7 +20,6 @@ RUN apk update && \ g++ \ tini -COPY --from=tone /usr/local/bin/tone /usr/local/bin/ COPY --from=build /client/dist /client/dist COPY index.js package* / COPY server server diff --git a/build/debian/DEBIAN/preinst b/build/debian/DEBIAN/preinst index f43f2683..c4692ed3 100644 --- a/build/debian/DEBIAN/preinst +++ b/build/debian/DEBIAN/preinst @@ -50,7 +50,6 @@ install_ffmpeg() { echo "Starting FFMPEG Install" WGET="wget https://johnvansickle.com/ffmpeg/builds/ffmpeg-git-amd64-static.tar.xz --output-document=ffmpeg-git-amd64-static.tar.xz" - WGET_TONE="wget https://github.com/sandreas/tone/releases/download/v0.1.5/tone-0.1.5-linux-x64.tar.gz --output-document=tone-0.1.5-linux-x64.tar.gz" if ! cd "$FFMPEG_INSTALL_DIR"; then echo "Creating ffmpeg install dir at $FFMPEG_INSTALL_DIR" @@ -63,13 +62,7 @@ install_ffmpeg() { tar xvf ffmpeg-git-amd64-static.tar.xz --strip-components=1 --no-same-owner rm ffmpeg-git-amd64-static.tar.xz - # Temp downloading tone library to the ffmpeg dir - echo "Getting tone.." - $WGET_TONE - tar xvf tone-0.1.5-linux-x64.tar.gz --strip-components=1 --no-same-owner - rm tone-0.1.5-linux-x64.tar.gz - - echo "Good to go on Ffmpeg (& tone)... hopefully" + echo "Good to go on Ffmpeg... hopefully" } setup_config() { @@ -77,12 +70,6 @@ setup_config() { echo "Existing config found." cat $CONFIG_PATH - # TONE_PATH variable added in 2.1.6, if it doesnt exist then add it - if ! grep -q "TONE_PATH" "$CONFIG_PATH"; then - echo "Adding TONE_PATH to existing config" - echo "TONE_PATH=$FFMPEG_INSTALL_DIR/tone" >> "$CONFIG_PATH" - fi - else if [ ! -d "$DEFAULT_DATA_DIR" ]; then @@ -98,7 +85,6 @@ setup_config() { CONFIG_PATH=$DEFAULT_DATA_DIR/config FFMPEG_PATH=$FFMPEG_INSTALL_DIR/ffmpeg FFPROBE_PATH=$FFMPEG_INSTALL_DIR/ffprobe -TONE_PATH=$FFMPEG_INSTALL_DIR/tone PORT=$DEFAULT_PORT HOST=$DEFAULT_HOST" diff --git a/build/linuxpackager b/build/linuxpackager index 5f03a2e8..52a9beba 100755 --- a/build/linuxpackager +++ b/build/linuxpackager @@ -48,7 +48,7 @@ Description: $DESCRIPTION" echo "$controlfile" > dist/debian/DEBIAN/control; # Package debian -pkg -t node18-linux-x64 -o dist/debian/usr/share/audiobookshelf/audiobookshelf . +pkg -t node20-linux-x64 -o dist/debian/usr/share/audiobookshelf/audiobookshelf . fakeroot dpkg-deb -Zxz --build dist/debian diff --git a/client/components/app/BookShelfCategorized.vue b/client/components/app/BookShelfCategorized.vue index ff0c5ff7..c8a70a2a 100644 --- a/client/components/app/BookShelfCategorized.vue +++ b/client/components/app/BookShelfCategorized.vue @@ -408,6 +408,36 @@ export default { } }) }, + shareOpen(mediaItemShare) { + this.shelves.forEach((shelf) => { + if (shelf.type == 'book') { + shelf.entities = shelf.entities.map((ent) => { + if (ent.media.id === mediaItemShare.mediaItemId) { + return { + ...ent, + mediaItemShare + } + } + return ent + }) + } + }) + }, + shareClosed(mediaItemShare) { + this.shelves.forEach((shelf) => { + if (shelf.type == 'book') { + shelf.entities = shelf.entities.map((ent) => { + if (ent.media.id === mediaItemShare.mediaItemId) { + return { + ...ent, + mediaItemShare: null + } + } + return ent + }) + } + }) + }, initListeners() { if (this.$root.socket) { this.$root.socket.on('user_updated', this.userUpdated) @@ -419,6 +449,8 @@ export default { this.$root.socket.on('items_updated', this.libraryItemsUpdated) this.$root.socket.on('items_added', this.libraryItemsAdded) this.$root.socket.on('episode_added', this.episodeAdded) + this.$root.socket.on('share_open', this.shareOpen) + this.$root.socket.on('share_closed', this.shareClosed) } else { console.error('Error socket not initialized') } @@ -434,6 +466,8 @@ export default { this.$root.socket.off('items_updated', this.libraryItemsUpdated) this.$root.socket.off('items_added', this.libraryItemsAdded) this.$root.socket.off('episode_added', this.episodeAdded) + this.$root.socket.off('share_open', this.shareOpen) + this.$root.socket.off('share_closed', this.shareClosed) } else { console.error('Error socket not initialized') } diff --git a/client/components/app/LazyBookshelf.vue b/client/components/app/LazyBookshelf.vue index fa47ce99..6137cdca 100644 --- a/client/components/app/LazyBookshelf.vue +++ b/client/components/app/LazyBookshelf.vue @@ -601,6 +601,30 @@ export default { this.executeRebuild() } }, + shareOpen(mediaItemShare) { + if (this.entityName === 'items' || this.entityName === 'series-books') { + var indexOf = this.entities.findIndex((ent) => ent?.media?.id === mediaItemShare.mediaItemId) + if (indexOf >= 0) { + if (this.entityComponentRefs[indexOf]) { + const libraryItem = { ...this.entityComponentRefs[indexOf].libraryItem } + libraryItem.mediaItemShare = mediaItemShare + this.entityComponentRefs[indexOf].setEntity?.(libraryItem) + } + } + } + }, + shareClosed(mediaItemShare) { + if (this.entityName === 'items' || this.entityName === 'series-books') { + var indexOf = this.entities.findIndex((ent) => ent?.media?.id === mediaItemShare.mediaItemId) + if (indexOf >= 0) { + if (this.entityComponentRefs[indexOf]) { + const libraryItem = { ...this.entityComponentRefs[indexOf].libraryItem } + libraryItem.mediaItemShare = null + this.entityComponentRefs[indexOf].setEntity?.(libraryItem) + } + } + } + }, updatePagesLoaded() { let numPages = Math.ceil(this.totalEntities / this.booksPerFetch) for (let page = 0; page < numPages; page++) { @@ -703,6 +727,8 @@ export default { this.$root.socket.on('playlist_added', this.playlistAdded) this.$root.socket.on('playlist_updated', this.playlistUpdated) this.$root.socket.on('playlist_removed', this.playlistRemoved) + this.$root.socket.on('share_open', this.shareOpen) + this.$root.socket.on('share_closed', this.shareClosed) } else { console.error('Bookshelf - Socket not initialized') } @@ -730,6 +756,8 @@ export default { this.$root.socket.off('playlist_added', this.playlistAdded) this.$root.socket.off('playlist_updated', this.playlistUpdated) this.$root.socket.off('playlist_removed', this.playlistRemoved) + this.$root.socket.off('share_open', this.shareOpen) + this.$root.socket.off('share_closed', this.shareClosed) } else { console.error('Bookshelf - Socket not initialized') } diff --git a/client/components/app/SideRail.vue b/client/components/app/SideRail.vue index 56207526..9720bc6b 100644 --- a/client/components/app/SideRail.vue +++ b/client/components/app/SideRail.vue @@ -121,7 +121,7 @@
{{ Source }}
-{{ $strings.HeaderAudiobookTools }}
- -{{ $strings.LabelToolsMakeM4b }}
@@ -23,7 +20,7 @@{{ $strings.LabelToolsEmbedMetadata }}
@@ -111,12 +108,6 @@ export default { }, isEncodeTaskRunning() { return this.encodeTask && !this.encodeTask?.isFinished - }, - isWindowsInstall() { - return this.Source == 'windows' - }, - Source() { - return this.$store.state.Source } }, methods: { @@ -141,4 +132,4 @@ export default { } } } - \ No newline at end of file + diff --git a/client/components/tables/BackupsTable.vue b/client/components/tables/BackupsTable.vue index 380394bd..a8fbade6 100644 --- a/client/components/tables/BackupsTable.vue +++ b/client/components/tables/BackupsTable.vue @@ -171,7 +171,7 @@ export default { this.$axios .$get('/api/backups') .then((data) => { - this.$emit('loaded', data.backupLocation) + this.$emit('loaded', data) this.setBackups(data.backups || []) }) .catch((error) => { diff --git a/client/layouts/default.vue b/client/layouts/default.vue index 6d5e0230..483ade70 100644 --- a/client/layouts/default.vue +++ b/client/layouts/default.vue @@ -20,6 +20,7 @@{{ $strings.HeaderMetadataToEmbed }}
-audiobookshelf uses tone to write metadata.
+{{ $strings.HeaderMetadataToEmbed }}
{{ $strings.MessageBackupsLocationEditNote }}
+{{ canEditBackup ? $strings.MessageBackupsLocationEditNote : $strings.MessageBackupsLocationNoEditNote }}
http://192.168.1.1:8337
läuft, würdest du http://192.168.1.1:8337/notify
eingeben.",
"MessageBackupsDescription": "In einer Sicherung werden Benutzer, Benutzerfortschritte, Details zu den Bibliotheksobjekten, Servereinstellungen und Bilder welche in /metadata/items
& /metadata/authors
gespeichert sind gespeichert. Sicherungen enthalten keine Dateien welche in den einzelnen Bibliotheksordnern (Medien-Ordnern) gespeichert sind.",
"MessageBackupsLocationEditNote": "Hinweis: Durch das Aktualisieren des Backup-Speicherorts werden vorhandene Sicherungen nicht verschoben oder geändert",
+ "MessageBackupsLocationNoEditNote": "Hinweis: Der Sicherungsspeicherort wird über eine Umgebungsvariable festgelegt und kann hier nicht geändert werden.",
"MessageBackupsLocationPathEmpty": "Der Backup-Pfad darf nicht leer sein",
"MessageBatchQuickMatchDescription": "Der Schnellabgleich versucht, fehlende Titelbilder und Metadaten für die ausgewählten Artikel hinzuzufügen. Aktiviere die nachstehenden Optionen, damit der Schnellabgleich vorhandene Titelbilder und/oder Metadaten überschreiben kann.",
"MessageBookshelfNoCollections": "Es wurden noch keine Sammlungen erstellt",
@@ -716,6 +724,9 @@
"MessageSelected": "{0} ausgewählt",
"MessageServerCouldNotBeReached": "Server kann nicht erreicht werden",
"MessageSetChaptersFromTracksDescription": "Kaitelerstellung basiert auf den existierenden einzelnen Audiodateien. Pro existierende Audiodatei wird 1 Kapitel erstellt, wobei deren Kapitelname aus dem Audiodateinamen extrahiert wird",
+ "MessageShareExpirationWillBe": "Läuft am {0} ab",
+ "MessageShareExpiresIn": "Läuft in {0} ab",
+ "MessageShareURLWillBe": "Der geteilte Link wird {0} sein.",
"MessageStartPlaybackAtTime": "Start der Wiedergabe für \"{0}\" bei {1}?",
"MessageThinking": "Nachdenken...",
"MessageUploaderItemFailed": "Hochladen fehlgeschlagen",
diff --git a/client/strings/en-us.json b/client/strings/en-us.json
index 42f08ef3..f713cb11 100644
--- a/client/strings/en-us.json
+++ b/client/strings/en-us.json
@@ -611,6 +611,7 @@
"MessageAppriseDescription": "To use this feature you will need to have an instance of Apprise API running or an api that will handle those same requests. http://192.168.1.1:8337
then you would put http://192.168.1.1:8337/notify
.",
"MessageBackupsDescription": "Backups include users, user progress, library item details, server settings, and images stored in /metadata/items
& /metadata/authors
. Backups do not include any files stored in your library folders.",
"MessageBackupsLocationEditNote": "Note: Updating the backup location will not move or modify existing backups",
+ "MessageBackupsLocationNoEditNote": "Note: The backup location is set through an environment variable and cannot be changed here.",
"MessageBackupsLocationPathEmpty": "Backup location path cannot be empty",
"MessageBatchQuickMatchDescription": "Quick Match will attempt to add missing covers and metadata for the selected items. Enable the options below to allow Quick Match to overwrite existing covers and/or metadata.",
"MessageBookshelfNoCollections": "You haven't made any collections yet",
diff --git a/client/strings/es.json b/client/strings/es.json
index db2801d3..93a99abc 100644
--- a/client/strings/es.json
+++ b/client/strings/es.json
@@ -258,6 +258,7 @@
"LabelCurrently": "En este momento:",
"LabelCustomCronExpression": "Expresión de Cron Personalizada:",
"LabelDatetime": "Hora y Fecha",
+ "LabelDays": "Días",
"LabelDeleteFromFileSystemCheckbox": "Eliminar archivos del sistema (desmarcar para eliminar sólo de la base de datos)",
"LabelDescription": "Descripción",
"LabelDeselectAll": "Deseleccionar Todos",
@@ -321,6 +322,7 @@
"LabelHighestPriority": "Mayor prioridad",
"LabelHost": "Host",
"LabelHour": "Hora",
+ "LabelHours": "Horas",
"LabelIcon": "Icono",
"LabelImageURLFromTheWeb": "URL de la imagen",
"LabelInProgress": "En proceso",
@@ -371,6 +373,7 @@
"LabelMetadataOrderOfPrecedenceDescription": "Las fuentes de metadatos de mayor prioridad prevalecerán sobre las de menor prioridad",
"LabelMetadataProvider": "Proveedor de Metadatos",
"LabelMinute": "Minuto",
+ "LabelMinutes": "Minutos",
"LabelMissing": "Ausente",
"LabelMissingEbook": "No tiene ebook",
"LabelMissingSupplementaryEbook": "No tiene ebook suplementario",
@@ -410,6 +413,7 @@
"LabelOverwrite": "Sobrescribir",
"LabelPassword": "Contraseña",
"LabelPath": "Ruta de carpeta",
+ "LabelPermanent": "Permanente",
"LabelPermissionsAccessAllLibraries": "Puede Accesar a Todas las bibliotecas",
"LabelPermissionsAccessAllTags": "Pueda Accesar a Todas las Etiquetas",
"LabelPermissionsAccessExplicitContent": "Puede Accesar a Contenido Explicito",
@@ -507,6 +511,8 @@
"LabelSettingsStoreMetadataWithItem": "Guardar metadatos con elementos",
"LabelSettingsStoreMetadataWithItemHelp": "Por defecto, los archivos de metadatos se almacenan en /metadata/items. Si habilita esta opción, los archivos de metadatos se guardarán en la carpeta de elementos de su biblioteca",
"LabelSettingsTimeFormat": "Formato de Tiempo",
+ "LabelShare": "Compartir",
+ "LabelShareURL": "Compartir la URL",
"LabelShowAll": "Mostrar Todos",
"LabelShowSeconds": "Mostrar segundos",
"LabelSize": "Tamaño",
@@ -598,6 +604,7 @@
"MessageAppriseDescription": "Para usar esta función deberás tener la API de Apprise corriendo o una API que maneje los mismos resultados. http://192.168.1.1:8337
entonces pondría http://192.168.1.1:8337/notify
.",
"MessageBackupsDescription": "Los respaldos incluyen: usuarios, el progreso del los usuarios, los detalles de los elementos de la biblioteca, la configuración del servidor y las imágenes en /metadata/items
y /metadata/authors
. Los Respaldos NO incluyen ningún archivo guardado en la carpeta de tu biblioteca.",
"MessageBackupsLocationEditNote": "Nota: Actualizar la ubicación de la copia de seguridad no moverá ni modificará las copias de seguridad existentes",
+ "MessageBackupsLocationNoEditNote": "Nota: La ubicación de la copia de seguridad se establece a través de una variable de entorno y no se puede cambiar aquí.",
"MessageBackupsLocationPathEmpty": "La ruta de la copia de seguridad no puede estar vacía",
"MessageBatchQuickMatchDescription": "\"Encontrar Rápido\" tratará de agregar portadas y metadatos faltantes de los elementos seleccionados. Habilite la opción de abajo para que \"Encontrar Rápido\" pueda sobrescribir portadas y/o metadatos existentes.",
"MessageBookshelfNoCollections": "No tienes ninguna colección.",
@@ -716,6 +723,9 @@
"MessageSelected": "{0} seleccionado(s)",
"MessageServerCouldNotBeReached": "No se pudo establecer la conexión con el servidor",
"MessageSetChaptersFromTracksDescription": "Establecer capítulos usando cada archivo de audio como un capítulo y el título del capítulo como el nombre del archivo de audio",
+ "MessageShareExpirationWillBe": "La caducidad será {0}",
+ "MessageShareExpiresIn": "Caduduca en {0}",
+ "MessageShareURLWillBe": "La URL para compartir será {0} ",
"MessageStartPlaybackAtTime": "Iniciar reproducción para \"{0}\" en {1}?",
"MessageThinking": "Pensando...",
"MessageUploaderItemFailed": "Error al Subir",
diff --git a/client/strings/pl.json b/client/strings/pl.json
index 9d1b0c62..92dd2735 100644
--- a/client/strings/pl.json
+++ b/client/strings/pl.json
@@ -9,7 +9,7 @@
"ButtonApply": "Zatwierdź",
"ButtonApplyChapters": "Zatwierdź rozdziały",
"ButtonAuthors": "Autorzy",
- "ButtonBack": "Back",
+ "ButtonBack": "Wstecz",
"ButtonBrowseForFolder": "Wyszukaj folder",
"ButtonCancel": "Anuluj",
"ButtonCancelEncode": "Anuluj enkodowanie",
@@ -25,7 +25,7 @@
"ButtonCreateBackup": "Utwórz kopię zapasową",
"ButtonDelete": "Usuń",
"ButtonDownloadQueue": "Kolejka",
- "ButtonEdit": "Edit",
+ "ButtonEdit": "Edycja",
"ButtonEditChapters": "Edytuj rozdziały",
"ButtonEditPodcast": "Edytuj podcast",
"ButtonForceReScan": "Wymuś ponowne skanowanie",
@@ -35,7 +35,7 @@
"ButtonIssues": "Błędy",
"ButtonJumpBackward": "Skocz do tyłu",
"ButtonJumpForward": "Skocz do przodu",
- "ButtonLatest": "Aktualna wersja:",
+ "ButtonLatest": "Aktualna wersja",
"ButtonLibrary": "Biblioteka",
"ButtonLogout": "Wyloguj",
"ButtonLookup": "Importuj",
@@ -83,7 +83,7 @@
"ButtonSelectFolderPath": "Wybierz ścieżkę folderu",
"ButtonSeries": "Seria",
"ButtonSetChaptersFromTracks": "Ustawiaj rozdziały na podstawie utworów",
- "ButtonShare": "Share",
+ "ButtonShare": "Udostępnij",
"ButtonShiftTimes": "Przesunięcie czasowe",
"ButtonShow": "Pokaż",
"ButtonStartM4BEncode": "Eksportuj jako plik M4B",
@@ -114,17 +114,17 @@
"HeaderCollection": "Kolekcja",
"HeaderCollectionItems": "Elementy kolekcji",
"HeaderCover": "Okładka",
- "HeaderCurrentDownloads": "Current Downloads",
- "HeaderCustomMessageOnLogin": "Custom Message on Login",
- "HeaderCustomMetadataProviders": "Custom Metadata Providers",
+ "HeaderCurrentDownloads": "Obecnie ściągane",
+ "HeaderCustomMessageOnLogin": "Własny tekst podczas logowania",
+ "HeaderCustomMetadataProviders": "Niestandardowi dostawcy metadanych",
"HeaderDetails": "Szczegóły",
- "HeaderDownloadQueue": "Download Queue",
- "HeaderEbookFiles": "Ebook Files",
+ "HeaderDownloadQueue": "Kolejka do ściągania",
+ "HeaderEbookFiles": "Pliki Ebook",
"HeaderEmail": "Email",
- "HeaderEmailSettings": "Email Settings",
+ "HeaderEmailSettings": "Ustawienia e-mail",
"HeaderEpisodes": "Rozdziały",
- "HeaderEreaderDevices": "Ereader Devices",
- "HeaderEreaderSettings": "Ereader Settings",
+ "HeaderEreaderDevices": "Czytniki",
+ "HeaderEreaderSettings": "Ustawienia czytnika",
"HeaderFiles": "Pliki",
"HeaderFindChapters": "Wyszukaj rozdziały",
"HeaderIgnoredFiles": "Zignoruj pliki",
@@ -141,9 +141,9 @@
"HeaderLogs": "Logi",
"HeaderManageGenres": "Zarządzaj gatunkami",
"HeaderManageTags": "Zarządzaj tagami",
- "HeaderMapDetails": "Map details",
+ "HeaderMapDetails": "Szczegóły mapowania",
"HeaderMatch": "Dopasuj",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
+ "HeaderMetadataOrderOfPrecedence": "Kolejność metadanych",
"HeaderMetadataToEmbed": "Osadź metadane",
"HeaderNewAccount": "Nowe konto",
"HeaderNewLibrary": "Nowa biblioteka",
@@ -153,9 +153,9 @@
"HeaderOtherFiles": "Inne pliki",
"HeaderPasswordAuthentication": "Uwierzytelnianie hasłem",
"HeaderPermissions": "Uprawnienia",
- "HeaderPlayerQueue": "Player Queue",
- "HeaderPlaylist": "Playlist",
- "HeaderPlaylistItems": "Playlist Items",
+ "HeaderPlayerQueue": "Kolejka odtwarzania",
+ "HeaderPlaylist": "Playlista",
+ "HeaderPlaylistItems": "Pozycje listy odtwarzania",
"HeaderPodcastsToAdd": "Podcasty do dodania",
"HeaderPreviewCover": "Podgląd okładki",
"HeaderRSSFeedGeneral": "RSS Details",
@@ -174,25 +174,25 @@
"HeaderSettingsGeneral": "Ogólne",
"HeaderSettingsScanner": "Skanowanie",
"HeaderSleepTimer": "Wyłącznik czasowy",
- "HeaderStatsLargestItems": "Largest Items",
+ "HeaderStatsLargestItems": "Największe pozycje",
"HeaderStatsLongestItems": "Najdłuższe pozycje (hrs)",
"HeaderStatsMinutesListeningChart": "Czas słuchania w minutach (ostatnie 7 dni)",
"HeaderStatsRecentSessions": "Ostatnie sesje",
"HeaderStatsTop10Authors": "Top 10 Autorów",
"HeaderStatsTop5Genres": "Top 5 Gatunków",
- "HeaderTableOfContents": "Table of Contents",
+ "HeaderTableOfContents": "Spis treści",
"HeaderTools": "Narzędzia",
"HeaderUpdateAccount": "Zaktualizuj konto",
"HeaderUpdateAuthor": "Zaktualizuj autorów",
"HeaderUpdateDetails": "Zaktualizuj szczegóły",
"HeaderUpdateLibrary": "Zaktualizuj bibliotekę",
"HeaderUsers": "Użytkownicy",
- "HeaderYearReview": "Year {0} in Review",
+ "HeaderYearReview": "Podsumowanie roku {0}",
"HeaderYourStats": "Twoje statystyki",
- "LabelAbridged": "Abridged",
- "LabelAbridgedChecked": "Abridged (checked)",
- "LabelAbridgedUnchecked": "Unabridged (unchecked)",
- "LabelAccessibleBy": "Accessible by",
+ "LabelAbridged": "Skrócony",
+ "LabelAbridgedChecked": "Skrócony (zaznaczono)",
+ "LabelAbridgedUnchecked": "Nieskrócony (nie zaznaczone)",
+ "LabelAccessibleBy": "Dostęp przez",
"LabelAccountType": "Typ konta",
"LabelAccountTypeAdmin": "Administrator",
"LabelAccountTypeGuest": "Gość",
@@ -202,28 +202,28 @@
"LabelAddToCollectionBatch": "Dodaj {0} książki do kolekcji",
"LabelAddToPlaylist": "Add to Playlist",
"LabelAddToPlaylistBatch": "Add {0} Items to Playlist",
- "LabelAdded": "Added",
+ "LabelAdded": "Dodane",
"LabelAddedAt": "Dodano",
"LabelAdminUsersOnly": "Tylko użytkownicy administracyjni",
- "LabelAll": "All",
+ "LabelAll": "Wszystkie",
"LabelAllUsers": "Wszyscy użytkownicy",
"LabelAllUsersExcludingGuests": "Wszyscy użytkownicy z wyłączeniem gości",
"LabelAllUsersIncludingGuests": "Wszyscy użytkownicy, łącznie z gośćmi",
- "LabelAlreadyInYourLibrary": "Already in your library",
- "LabelAppend": "Append",
+ "LabelAlreadyInYourLibrary": "Już istnieje w twojej bibliotece",
+ "LabelAppend": "Dołącz",
"LabelAuthor": "Autor",
"LabelAuthorFirstLast": "Autor (Rosnąco)",
"LabelAuthorLastFirst": "Author (Malejąco)",
"LabelAuthors": "Autorzy",
"LabelAutoDownloadEpisodes": "Automatyczne pobieranie odcinków",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
+ "LabelAutoFetchMetadata": "Automatycznie pobierz metadane",
"LabelAutoFetchMetadataHelp": "Pobiera metadane dotyczące tytułu, autora i serii, aby usprawnić przesyłanie. Po przesłaniu może być konieczne dopasowanie dodatkowych metadanych.",
- "LabelAutoLaunch": "Auto Launch",
+ "LabelAutoLaunch": "Uruchom automatycznie",
"LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0
)",
"LabelAutoRegister": "Auto Register",
"LabelAutoRegisterDescription": "Automatically create new users after logging in",
"LabelBackToUser": "Powrót",
- "LabelBackupLocation": "Backup Location",
+ "LabelBackupLocation": "Lokalizacja kopii zapasowej",
"LabelBackupsEnableAutomaticBackups": "Włącz automatyczne kopie zapasowe",
"LabelBackupsEnableAutomaticBackupsHelp": "Kopie zapasowe są zapisywane w folderze /metadata/backups",
"LabelBackupsMaxBackupSize": "Maksymalny łączny rozmiar backupów (w GB)",
@@ -235,20 +235,20 @@
"LabelButtonText": "Button Text",
"LabelByAuthor": "by {0}",
"LabelChangePassword": "Zmień hasło",
- "LabelChannels": "Channels",
+ "LabelChannels": "Kanały",
"LabelChapterTitle": "Tytuł rozdziału",
- "LabelChapters": "Chapters",
+ "LabelChapters": "Rozdziały",
"LabelChaptersFound": "Znalezione rozdziały",
- "LabelClickForMoreInfo": "Click for more info",
+ "LabelClickForMoreInfo": "Kliknij po więcej szczegółów",
"LabelClosePlayer": "Zamknij odtwarzacz",
"LabelCodec": "Codec",
"LabelCollapseSeries": "Podsumuj serię",
- "LabelCollection": "Collection",
+ "LabelCollection": "Kolekcja",
"LabelCollections": "Kolekcje",
"LabelComplete": "Ukończone",
"LabelConfirmPassword": "Potwierdź hasło",
"LabelContinueListening": "Kontynuuj odtwarzanie",
- "LabelContinueReading": "Continue Reading",
+ "LabelContinueReading": "Kontynuuj czytanie",
"LabelContinueSeries": "Kontynuuj serię",
"LabelCover": "Okładka",
"LabelCoverImageURL": "URL okładki",
@@ -258,6 +258,7 @@
"LabelCurrently": "Obecnie:",
"LabelCustomCronExpression": "Custom Cron Expression:",
"LabelDatetime": "Data i godzina",
+ "LabelDays": "Dni",
"LabelDeleteFromFileSystemCheckbox": "Usuń z systemu plików (odznacz, aby usunąć tylko z bazy danych)",
"LabelDescription": "Opis",
"LabelDeselectAll": "Odznacz wszystko",
@@ -269,34 +270,34 @@
"LabelDiscFromMetadata": "Oznaczenie dysku z metadanych",
"LabelDiscover": "Odkrywaj",
"LabelDownload": "Pobierz",
- "LabelDownloadNEpisodes": "Download {0} episodes",
+ "LabelDownloadNEpisodes": "Ściąganie {0} odcinków",
"LabelDuration": "Czas trwania",
"LabelDurationComparisonExactMatch": "(exact match)",
- "LabelDurationComparisonLonger": "({0} longer)",
- "LabelDurationComparisonShorter": "({0} shorter)",
+ "LabelDurationComparisonLonger": "({0} dłużej)",
+ "LabelDurationComparisonShorter": "({0} krócej)",
"LabelDurationFound": "Znaleziona długość:",
"LabelEbook": "Ebook",
- "LabelEbooks": "Ebooks",
+ "LabelEbooks": "Ebooki",
"LabelEdit": "Edytuj",
"LabelEmail": "Email",
- "LabelEmailSettingsFromAddress": "From Address",
- "LabelEmailSettingsRejectUnauthorized": "Reject unauthorized certificates",
- "LabelEmailSettingsRejectUnauthorizedHelp": "Disabling SSL certificate validation may expose your connection to security risks, such as man-in-the-middle attacks. Only disable this option if you understand the implications and trust the mail server you are connecting to.",
- "LabelEmailSettingsSecure": "Secure",
- "LabelEmailSettingsSecureHelp": "If true the connection will use TLS when connecting to server. If false then TLS is used if server supports the STARTTLS extension. In most cases set this value to true if you are connecting to port 465. For port 587 or 25 keep it false. (from nodemailer.com/smtp/#authentication)",
+ "LabelEmailSettingsFromAddress": "Z adresu",
+ "LabelEmailSettingsRejectUnauthorized": "Odrzuć nieautoryzowane certyfikaty",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Wyłączenie walidacji certyfikatów SSL może narazić cię na ryzyka bezpieczeństwa, takie jak ataki man-in-the-middle. Wyłącz tą opcję wyłącznie jeśli rozumiesz tego skutki i ufasz serwerowi pocztowemu, do którego się podłączasz.",
+ "LabelEmailSettingsSecure": "Bezpieczeństwo",
+ "LabelEmailSettingsSecureHelp": "Jeśli włączysz, połączenie będzie korzystać z TLS podczas łączenia do serwera. Jeśli wyłączysz, TLS będzie wykorzystane jeśli serwer wspiera rozszerzenie STARTTLS. W większości przypadków włącz to ustawienie jeśli łączysz się do portu 465. Dla portów 587 lub 25 pozostaw to ustawienie wyłączone. (na podstawie nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Test Address",
- "LabelEmbeddedCover": "Embedded Cover",
+ "LabelEmbeddedCover": "Wbudowana okładka",
"LabelEnable": "Włącz",
"LabelEnd": "Zakończ",
"LabelEpisode": "Odcinek",
"LabelEpisodeTitle": "Tytuł odcinka",
"LabelEpisodeType": "Typ odcinka",
- "LabelExample": "Example",
+ "LabelExample": "Przykład",
"LabelExplicit": "Nieprzyzwoite",
"LabelExplicitChecked": "Explicit (checked)",
"LabelExplicitUnchecked": "Not Explicit (unchecked)",
"LabelFeedURL": "URL kanału",
- "LabelFetchingMetadata": "Fetching Metadata",
+ "LabelFetchingMetadata": "Pobieranie metadanych",
"LabelFile": "Plik",
"LabelFileBirthtime": "Data utworzenia pliku",
"LabelFileModified": "Data modyfikacji pliku",
@@ -304,25 +305,26 @@
"LabelFilterByUser": "Filtruj według danego użytkownika",
"LabelFindEpisodes": "Znajdź odcinki",
"LabelFinished": "Zakończone",
- "LabelFolder": "Folder",
+ "LabelFolder": "Katalog",
"LabelFolders": "Foldery",
- "LabelFontBold": "Bold",
- "LabelFontBoldness": "Font Boldness",
+ "LabelFontBold": "Pogrubiony",
+ "LabelFontBoldness": "Grubość czcionki",
"LabelFontFamily": "Rodzina czcionek",
"LabelFontItalic": "Italic",
- "LabelFontScale": "Font scale",
- "LabelFontStrikethrough": "Strikethrough",
+ "LabelFontScale": "Rozmiar czcionki",
+ "LabelFontStrikethrough": "Przekreślony",
"LabelFormat": "Format",
"LabelGenre": "Gatunek",
"LabelGenres": "Gatunki",
"LabelHardDeleteFile": "Usuń trwale plik",
- "LabelHasEbook": "Has ebook",
- "LabelHasSupplementaryEbook": "Has supplementary ebook",
- "LabelHighestPriority": "Highest priority",
+ "LabelHasEbook": "Ma ebooka",
+ "LabelHasSupplementaryEbook": "Posiada dodatkowy ebook",
+ "LabelHighestPriority": "Najwyższy priorytet",
"LabelHost": "Host",
"LabelHour": "Godzina",
+ "LabelHours": "Godziny",
"LabelIcon": "Ikona",
- "LabelImageURLFromTheWeb": "Image URL from the web",
+ "LabelImageURLFromTheWeb": "Link do obrazu w sieci",
"LabelInProgress": "W trakcie",
"LabelIncludeInTracklist": "Dołącz do listy odtwarzania",
"LabelIncomplete": "Nieukończone",
@@ -335,19 +337,19 @@
"LabelIntervalEvery6Hours": "Co 6 godzin",
"LabelIntervalEveryDay": "Każdego dnia",
"LabelIntervalEveryHour": "Każdej godziny",
- "LabelInvert": "Invert",
+ "LabelInvert": "Inversja",
"LabelItem": "Pozycja",
"LabelLanguage": "Język",
"LabelLanguageDefaultServer": "Domyślny język serwera",
- "LabelLanguages": "Languages",
- "LabelLastBookAdded": "Last Book Added",
- "LabelLastBookUpdated": "Last Book Updated",
+ "LabelLanguages": "Języki",
+ "LabelLastBookAdded": "Ostatnio dodana książka",
+ "LabelLastBookUpdated": "Ostatnio modyfikowana książka",
"LabelLastSeen": "Ostatnio widziany",
"LabelLastTime": "Ostatni czas",
"LabelLastUpdate": "Ostatnia aktualizacja",
- "LabelLayout": "Layout",
- "LabelLayoutSinglePage": "Single page",
- "LabelLayoutSplitPage": "Split page",
+ "LabelLayout": "Układ",
+ "LabelLayoutSinglePage": "Pojedyncza strona",
+ "LabelLayoutSplitPage": "Podział strony",
"LabelLess": "Mniej",
"LabelLibrariesAccessibleToUser": "Biblioteki dostępne dla użytkownika",
"LabelLibrary": "Biblioteka",
@@ -355,42 +357,43 @@
"LabelLibraryItem": "Element biblioteki",
"LabelLibraryName": "Nazwa biblioteki",
"LabelLimit": "Limit",
- "LabelLineSpacing": "Line spacing",
+ "LabelLineSpacing": "Odstęp między wierszami",
"LabelListenAgain": "Słuchaj ponownie",
"LabelLogLevelDebug": "Debug",
"LabelLogLevelInfo": "Informacja",
"LabelLogLevelWarn": "Ostrzeżenie",
"LabelLookForNewEpisodesAfterDate": "Szukaj nowych odcinków po dacie",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
+ "LabelLowestPriority": "Najniższy priorytet",
+ "LabelMatchExistingUsersBy": "Dopasuje istniejących użytkowników poprzez",
+ "LabelMatchExistingUsersByDescription": "Służy do łączenia istniejących użytkowników. Po połączeniu użytkownicy zostaną dopasowani za pomocą unikalnego identyfikatora od dostawcy SSO",
"LabelMediaPlayer": "Odtwarzacz",
"LabelMediaType": "Typ mediów",
"LabelMetaTag": "Tag",
"LabelMetaTags": "Meta Tags",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
+ "LabelMetadataOrderOfPrecedenceDescription": "Źródła metadanych o wyższym priorytecie będą zastępują źródła o niższym priorytecie",
"LabelMetadataProvider": "Dostawca metadanych",
"LabelMinute": "Minuta",
+ "LabelMinutes": "Minuty",
"LabelMissing": "Brakujący",
- "LabelMissingEbook": "Has no ebook",
- "LabelMissingSupplementaryEbook": "Has no supplementary ebook",
+ "LabelMissingEbook": "Nie posiada ebooka",
+ "LabelMissingSupplementaryEbook": "Nie posiada dodatkowego ebooka",
"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": "Więcej",
- "LabelMoreInfo": "More Info",
+ "LabelMoreInfo": "Więcej informacji",
"LabelName": "Nazwa",
- "LabelNarrator": "Narrator",
+ "LabelNarrator": "Lektor",
"LabelNarrators": "Lektorzy",
"LabelNew": "Nowy",
"LabelNewPassword": "Nowe hasło",
"LabelNewestAuthors": "Najnowsi autorzy",
"LabelNewestEpisodes": "Najnowsze odcinki",
- "LabelNextBackupDate": "Next backup date",
- "LabelNextScheduledRun": "Next scheduled run",
- "LabelNoCustomMetadataProviders": "No custom metadata providers",
- "LabelNoEpisodesSelected": "No episodes selected",
+ "LabelNextBackupDate": "Data kolejnej kopii zapasowej",
+ "LabelNextScheduledRun": "Następne uruchomienie",
+ "LabelNoCustomMetadataProviders": "Brak niestandardowych dostawców metadanych",
+ "LabelNoEpisodesSelected": "Nie wybrano żadnych odcinków",
"LabelNotFinished": "Nieukończone",
- "LabelNotStarted": "Nie rozpoęczto",
+ "LabelNotStarted": "Nie rozpoczęto",
"LabelNotes": "Uwagi",
"LabelNotificationAppriseURL": "URLe Apprise",
"LabelNotificationAvailableVariables": "Dostępne zmienne",
@@ -407,9 +410,10 @@
"LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
"LabelOpenIDGroupClaimDescription": "Name of the OpenID claim that contains a list of the user's groups. Commonly referred to as groups
. If configured, the application will automatically assign roles based on the user's group memberships, provided that these groups are named case-insensitively 'admin', 'user', or 'guest' in the claim. The claim should contain a list, and if a user belongs to multiple groups, the application will assign the role corresponding to the highest level of access. If no group matches, access will be denied.",
"LabelOpenRSSFeed": "Otwórz kanał RSS",
- "LabelOverwrite": "Overwrite",
+ "LabelOverwrite": "Nadpisz",
"LabelPassword": "Hasło",
"LabelPath": "Ścieżka",
+ "LabelPermanent": "Trwały",
"LabelPermissionsAccessAllLibraries": "Ma dostęp do wszystkich bibliotek",
"LabelPermissionsAccessAllTags": "Ma dostęp do wszystkich tagów",
"LabelPermissionsAccessExplicitContent": "Ma dostęp do treści oznacznych jako nieprzyzwoite",
@@ -417,77 +421,77 @@
"LabelPermissionsDownload": "Ma możliwość pobierania",
"LabelPermissionsUpdate": "Ma możliwość aktualizowania",
"LabelPermissionsUpload": "Ma możliwość dodawania",
- "LabelPersonalYearReview": "Your Year in Review ({0})",
+ "LabelPersonalYearReview": "Podsumowanie twojego roku ({0})",
"LabelPhotoPathURL": "Scieżka/URL do zdjęcia",
"LabelPlayMethod": "Metoda odtwarzania",
"LabelPlayerChapterNumberMarker": "{0} of {1}",
- "LabelPlaylists": "Playlists",
+ "LabelPlaylists": "Listy odtwarzania",
"LabelPodcast": "Podcast",
"LabelPodcastSearchRegion": "Obszar wyszukiwania podcastów",
"LabelPodcastType": "Podcast Type",
"LabelPodcasts": "Podcasty",
"LabelPort": "Port",
"LabelPrefixesToIgnore": "Ignorowane prefiksy (wielkość liter nie ma znaczenia)",
- "LabelPreventIndexing": "Prevent your feed from being indexed by iTunes and Google podcast directories",
- "LabelPrimaryEbook": "Primary ebook",
+ "LabelPreventIndexing": "Zapobiega indeksowaniu przez iTunes i Google",
+ "LabelPrimaryEbook": "Główny ebook",
"LabelProgress": "Postęp",
"LabelProvider": "Dostawca",
"LabelPubDate": "Data publikacji",
"LabelPublishYear": "Rok publikacji",
"LabelPublisher": "Wydawca",
- "LabelPublishers": "Publishers",
+ "LabelPublishers": "Wydawcy",
"LabelRSSFeedCustomOwnerEmail": "Custom owner Email",
"LabelRSSFeedCustomOwnerName": "Custom owner Name",
"LabelRSSFeedOpen": "RSS Feed otwarty",
- "LabelRSSFeedPreventIndexing": "Prevent Indexing",
+ "LabelRSSFeedPreventIndexing": "Zapobiegaj indeksowaniu",
"LabelRSSFeedSlug": "RSS Feed Slug",
"LabelRSSFeedURL": "URL kanały RSS",
- "LabelRead": "Read",
- "LabelReadAgain": "Read Again",
- "LabelReadEbookWithoutProgress": "Read ebook without keeping progress",
+ "LabelRead": "Czytaj",
+ "LabelReadAgain": "Czytaj ponownie",
+ "LabelReadEbookWithoutProgress": "Czytaj książkę bez zapamiętywania postępu",
"LabelRecentSeries": "Ostatnie serie",
"LabelRecentlyAdded": "Niedawno dodany",
- "LabelRecommended": "Recommended",
- "LabelRedo": "Redo",
+ "LabelRecommended": "Polecane",
+ "LabelRedo": "Wycofaj",
"LabelRegion": "Region",
"LabelReleaseDate": "Data wydania",
- "LabelRemoveCover": "Remove cover",
- "LabelRowsPerPage": "Rows per page",
+ "LabelRemoveCover": "Usuń okładkę",
+ "LabelRowsPerPage": "Wierszy na stronę",
"LabelSearchTerm": "Wyszukiwanie frazy",
"LabelSearchTitle": "Wyszukaj tytuł",
"LabelSearchTitleOrASIN": "Szukaj tytuł lub ASIN",
"LabelSeason": "Sezon",
- "LabelSelectAll": "Select all",
- "LabelSelectAllEpisodes": "Select all episodes",
+ "LabelSelectAll": "Wybierz wszystko",
+ "LabelSelectAllEpisodes": "Wybierz wszystkie odcinki",
"LabelSelectEpisodesShowing": "Select {0} episodes showing",
- "LabelSelectUsers": "Select users",
- "LabelSendEbookToDevice": "Send Ebook to...",
+ "LabelSelectUsers": "Wybór użytkowników",
+ "LabelSendEbookToDevice": "Wyślij ebook do...",
"LabelSequence": "Kolejność",
"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",
- "LabelSettingsAudiobooksOnlyHelp": "Enabling this setting will ignore ebook files unless they are inside an audiobook folder in which case they will be set as supplementary ebooks",
- "LabelSettingsBookshelfViewHelp": "Widok półki z ksiązkami",
+ "LabelServerYearReview": "Podsumowanie serwera w roku ({0})",
+ "LabelSetEbookAsPrimary": "Ustaw jako pierwszy",
+ "LabelSetEbookAsSupplementary": "Ustaw jako dodatkowy",
+ "LabelSettingsAudiobooksOnly": "Wyłącznie audiobooki",
+ "LabelSettingsAudiobooksOnlyHelp": "Włączenie tej funkcji spowoduje ignorowanie plików ebooków, chyba że znajdują się wewnątrz folderu audiobooka kiedy to będą pokazywane jako dodatkowe ebooki",
+ "LabelSettingsBookshelfViewHelp": "Widok półki z książkami",
"LabelSettingsChromecastSupport": "Wsparcie Chromecast",
"LabelSettingsDateFormat": "Format daty",
"LabelSettingsDisableWatcher": "Wyłącz monitorowanie",
"LabelSettingsDisableWatcherForLibrary": "Wyłącz monitorowanie folderów dla biblioteki",
"LabelSettingsDisableWatcherHelp": "Wyłącz automatyczne dodawanie/aktualizowanie elementów po wykryciu zmian w plikach. *Wymaga restartu serwera",
- "LabelSettingsEnableWatcher": "Enable Watcher",
- "LabelSettingsEnableWatcherForLibrary": "Enable folder watcher for library",
- "LabelSettingsEnableWatcherHelp": "Enables the automatic adding/updating of items when file changes are detected. *Requires server restart",
- "LabelSettingsEpubsAllowScriptedContent": "Allow scripted content in epubs",
- "LabelSettingsEpubsAllowScriptedContentHelp": "Allow epub files to execute scripts. It is recommended to keep this setting disabled unless you trust the source of the epub files.",
+ "LabelSettingsEnableWatcher": "Włącz monitorowanie",
+ "LabelSettingsEnableWatcherForLibrary": "Włącz monitorowanie folderów dla biblioteki",
+ "LabelSettingsEnableWatcherHelp": "Włącza automatyczne dodawanie/aktualizację pozycji gdy wykryte zostaną zmiany w plikach. Wymaga restartu serwera",
+ "LabelSettingsEpubsAllowScriptedContent": "Zezwalanie na skrypty w plikach epub",
+ "LabelSettingsEpubsAllowScriptedContentHelp": "Zezwala plikom epub na wykonywanie skryptów. Zaleca się mieć to ustawienie wyłączone, chyba że ma się zaufanie do źródła plików epub.",
"LabelSettingsExperimentalFeatures": "Funkcje eksperymentalne",
"LabelSettingsExperimentalFeaturesHelp": "Funkcje w trakcie rozwoju, które mogą zyskanć na Twojej opinii i pomocy w testowaniu. Kliknij, aby otworzyć dyskusję na githubie.",
"LabelSettingsFindCovers": "Szukanie okładek",
"LabelSettingsFindCoversHelp": "Jeśli audiobook nie posiada zintegrowanej okładki albo w folderze nie zostanie znaleziony plik okładki, skaner podejmie próbę pobrania okładki z sieci. http://192.168.1.1:8337
to wpisany tutaj URL powinien mieć postać: http://192.168.1.1:8337/notify
.",
"MessageBackupsDescription": "Kopie zapasowe obejmują użytkowników, postępy użytkowników, szczegóły pozycji biblioteki, ustawienia serwera i obrazy przechowywane w /metadata/items
& /metadata/authors
. Kopie zapasowe nie obejmują żadnych plików przechowywanych w folderach biblioteki.",
+ "MessageBackupsLocationEditNote": "Uwaga: Zmiana lokalizacji kopii zapasowej nie przenosi ani nie modyfikuje istniejących kopii zapasowych",
+ "MessageBackupsLocationNoEditNote": "Uwaga: Lokalizacja kopii zapasowej jest ustawiona poprzez zmienną środowiskową i nie może być tutaj zmieniona.",
+ "MessageBackupsLocationPathEmpty": "Ścieżka do kopii zapasowej nie może być pusta",
"MessageBatchQuickMatchDescription": "Quick Match będzie próbował dodać brakujące okładki i metadane dla wybranych elementów. Włącz poniższe opcje, aby umożliwić Quick Match nadpisanie istniejących okładek i/lub metadanych.",
"MessageBookshelfNoCollections": "Nie posiadasz jeszcze żadnych kolekcji",
"MessageBookshelfNoRSSFeeds": "Nie posiadasz żadnych otwartych feedów RSS",
"MessageBookshelfNoResultsForFilter": "Nie znaleziono żadnych pozycji przy aktualnym filtrowaniu \"{0}: {1}\"",
- "MessageBookshelfNoResultsForQuery": "No results for query",
+ "MessageBookshelfNoResultsForQuery": "Brak wyników zapytania",
"MessageBookshelfNoSeries": "Nie masz jeszcze żadnych serii",
"MessageChapterEndIsAfter": "Koniec rozdziału następuje po zakończeniu audiobooka",
- "MessageChapterErrorFirstNotZero": "First chapter must start at 0",
+ "MessageChapterErrorFirstNotZero": "Pierwszy rozdział musi rozpoczynać się na 0",
"MessageChapterErrorStartGteDuration": "Invalid start time must be less than audiobook duration",
"MessageChapterErrorStartLtPrev": "Invalid start time must be greater than or equal to previous chapter start time",
"MessageChapterStartIsAfter": "Początek rozdziału następuje po zakończeniu audiobooka",
"MessageCheckingCron": "Sprawdzanie cron...",
"MessageConfirmCloseFeed": "Are you sure you want to close this feed?",
"MessageConfirmDeleteBackup": "Czy na pewno chcesz usunąć kopię zapasową dla {0}?",
- "MessageConfirmDeleteFile": "This will delete the file from your file system. Are you sure?",
+ "MessageConfirmDeleteFile": "Ta operacja usunie plik z twojego dysku. Jesteś pewien?",
"MessageConfirmDeleteLibrary": "Czy na pewno chcesz trwale usunąć bibliotekę \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
+ "MessageConfirmDeleteLibraryItem": "Ta operacja usunie pozycję biblioteki z bazy danych i z dysku. Czy jesteś pewien?",
"MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
"MessageConfirmDeleteSession": "Czy na pewno chcesz usunąć tę sesję?",
"MessageConfirmForceReScan": "Czy na pewno chcesz wymusić ponowne skanowanie?",
- "MessageConfirmMarkAllEpisodesFinished": "Are you sure you want to mark all episodes as finished?",
- "MessageConfirmMarkAllEpisodesNotFinished": "Are you sure you want to mark all episodes as not finished?",
- "MessageConfirmMarkSeriesFinished": "Are you sure you want to mark all books in this series as finished?",
- "MessageConfirmMarkSeriesNotFinished": "Are you sure you want to mark all books in this series as not finished?",
+ "MessageConfirmMarkAllEpisodesFinished": "Czy na pewno chcesz oznaczyć wszystkie odcinki jako ukończone?",
+ "MessageConfirmMarkAllEpisodesNotFinished": "Czy na pewno chcesz oznaczyć wszystkie odcinki jako nieukończone?",
+ "MessageConfirmMarkSeriesFinished": "Czy na pewno chcesz oznaczyć wszystkie książki w tej serii jako ukończone?",
+ "MessageConfirmMarkSeriesNotFinished": "Czy na pewno chcesz oznaczyć wszystkie książki w tej serii jako nieukończone?",
"MessageConfirmPurgeCache": "Purge cache will delete the entire directory at /metadata/cache
. /metadata/cache/items
./metadata/logs
as JSON files. Crash logs are stored in /metadata/logs/crash_logs.txt
.",
- "MessageM4BFailed": "Tworzenie pliku M4B nie powiodło się",
+ "MessageLogsDescription": "Logi zapisane są w /metadata/logs
jako pliki JSON. Logi awaryjne są zapisane w /metadata/logs/crash_logs.txt
.",
+ "MessageM4BFailed": "Tworzenie pliku M4B nie powiodło się!",
"MessageM4BFinished": "Tworzenie pliku M4B zakończyło się!",
"MessageMapChapterTitles": "Mapowanie tytułów rozdziałów do istniejących rozdziałów audiobooka bez dostosowywania znaczników czasu",
- "MessageMarkAllEpisodesFinished": "Mark all episodes finished",
- "MessageMarkAllEpisodesNotFinished": "Mark all episodes not finished",
+ "MessageMarkAllEpisodesFinished": "Oznacz wszystkie odcinki jako ukończone",
+ "MessageMarkAllEpisodesNotFinished": "Oznacz wszystkie odcinki jako nieukończone",
"MessageMarkAsFinished": "Oznacz jako ukończone",
"MessageMarkAsNotFinished": "Oznacz jako nieukończone",
"MessageMatchBooksDescription": "spróbuje dopasować książki w bibliotece bez plików audio, korzystając z wybranego dostawcy wyszukiwania i wypełnić puste szczegóły i okładki. Nie nadpisuje informacji.",
@@ -681,7 +691,7 @@
"MessageNoGenres": "Brak gatunków",
"MessageNoIssues": "Brak problemów",
"MessageNoItems": "Brak elementów",
- "MessageNoItemsFound": "Nie znaleziono żadnych elemntów",
+ "MessageNoItemsFound": "Nie znaleziono żadnych elementów",
"MessageNoListeningSessions": "Brak sesji odtwarzania",
"MessageNoLogs": "Brak logów",
"MessageNoMediaProgress": "Brak postępu",
@@ -691,29 +701,31 @@
"MessageNoSearchResultsFor": "Brak wyników wyszukiwania dla \"{0}\"",
"MessageNoSeries": "No Series",
"MessageNoTags": "No Tags",
- "MessageNoTasksRunning": "No Tasks Running",
+ "MessageNoTasksRunning": "Brak uruchomionych zadań",
"MessageNoUpdateNecessary": "Brak konieczności aktualizacji",
"MessageNoUpdatesWereNecessary": "Brak aktualizacji",
- "MessageNoUserPlaylists": "You have no playlists",
+ "MessageNoUserPlaylists": "Nie masz żadnych list odtwarzania",
"MessageNotYetImplemented": "Jeszcze nie zaimplementowane",
"MessageOr": "lub",
"MessagePauseChapter": "Zatrzymaj odtwarzanie rozdziały",
"MessagePlayChapter": "Rozpocznij odtwarzanie od początku rozdziału",
- "MessagePlaylistCreateFromCollection": "Create playlist from collection",
+ "MessagePlaylistCreateFromCollection": "Utwórz listę odtwarznia na podstawie kolekcji",
"MessagePodcastHasNoRSSFeedForMatching": "Podcast nie ma adresu url kanału RSS, który mógłby zostać użyty do dopasowania",
"MessageQuickMatchDescription": "Wypełnij puste informacje i okładkę pierwszym wynikiem dopasowania z '{0}'. Nie nadpisuje szczegółów, chyba że włączone jest ustawienie serwera 'Preferuj dopasowane metadane'.",
"MessageRemoveChapter": "Usuń rozdział",
"MessageRemoveEpisodes": "Usuń {0} odcinków",
- "MessageRemoveFromPlayerQueue": "Remove from player queue",
+ "MessageRemoveFromPlayerQueue": "Usuń z kolejki odtwarzacza",
"MessageRemoveUserWarning": "Czy na pewno chcesz trwale usunąć użytkownika \"{0}\"?",
"MessageReportBugsAndContribute": "Zgłoś błędy, pomysły i pomóż rozwijać aplikację na",
"MessageResetChaptersConfirm": "Are you sure you want to reset chapters and undo the changes you made?",
"MessageRestoreBackupConfirm": "Czy na pewno chcesz przywrócić kopię zapasową utworzoną w dniu",
- "MessageRestoreBackupWarning": "Przywrócenie kopii zapasowej spowoduje nadpisane bazy danych w folderze /config oraz okładke w folderze /metadata/items & /metadata/authors.