From 4d2241769ec9a7d77926f99cd1986412da4eb0eb Mon Sep 17 00:00:00 2001 From: Toni Barth Date: Wed, 18 Dec 2024 19:15:09 +0100 Subject: [PATCH 01/62] also check for mrss item enclosures when extracting items --- server/utils/podcastUtils.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/server/utils/podcastUtils.js b/server/utils/podcastUtils.js index 627e24b2..0d362593 100644 --- a/server/utils/podcastUtils.js +++ b/server/utils/podcastUtils.js @@ -75,15 +75,19 @@ function extractPodcastMetadata(channel) { function extractEpisodeData(item) { // Episode must have url - if (!item.enclosure?.[0]?.['$']?.url) { + let enclosure + + if (item.enclosure?.[0]?.['$']?.url) { + enclosure = item.enclosure[0]['$'] + } else if(item['media:content']?.find(c => c?.['$']?.url && (c?.['$']?.type ?? "").startsWith("audio"))) { + enclosure = item['media:content'].find(c => (c['$']?.type ?? "").startsWith("audio"))['$'] + } else { Logger.error(`[podcastUtils] Invalid podcast episode data`) return null } const episode = { - enclosure: { - ...item.enclosure[0]['$'] - } + enclosure: enclosure, } episode.enclosure.url = episode.enclosure.url.trim() From 9668b49df95454f19081942e7481afd7451a14e4 Mon Sep 17 00:00:00 2001 From: mikiher Date: Thu, 9 Jan 2025 07:41:09 +0200 Subject: [PATCH 02/62] Enable subdirectory support --- client/nuxt.config.js | 2 +- index.js | 2 +- prod.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/client/nuxt.config.js b/client/nuxt.config.js index c687f400..bb595477 100644 --- a/client/nuxt.config.js +++ b/client/nuxt.config.js @@ -1,6 +1,6 @@ const pkg = require('./package.json') -const routerBasePath = process.env.ROUTER_BASE_PATH || '' +const routerBasePath = process.env.ROUTER_BASE_PATH || '/audiobookshelf' const serverHostUrl = process.env.NODE_ENV === 'production' ? '' : 'http://localhost:3333' const serverPaths = ['api/', 'public/', 'hls/', 'auth/', 'feed/', 'status', 'login', 'logout', 'init'] const proxy = Object.fromEntries(serverPaths.map((path) => [`${routerBasePath}/${path}`, { target: process.env.NODE_ENV !== 'production' ? serverHostUrl : '/' }])) diff --git a/index.js b/index.js index 4b3a2648..35dcc588 100644 --- a/index.js +++ b/index.js @@ -41,7 +41,7 @@ const CONFIG_PATH = inputConfig || process.env.CONFIG_PATH || Path.resolve('conf const METADATA_PATH = inputMetadata || process.env.METADATA_PATH || Path.resolve('metadata') const SOURCE = options.source || process.env.SOURCE || 'debian' -const ROUTER_BASE_PATH = process.env.ROUTER_BASE_PATH || '' +const ROUTER_BASE_PATH = process.env.ROUTER_BASE_PATH || '/audiobookshelf' console.log(`Running in ${process.env.NODE_ENV} mode.`) console.log(`Options: CONFIG_PATH=${CONFIG_PATH}, METADATA_PATH=${METADATA_PATH}, PORT=${PORT}, HOST=${HOST}, SOURCE=${SOURCE}, ROUTER_BASE_PATH=${ROUTER_BASE_PATH}`) diff --git a/prod.js b/prod.js index 70633d5b..24a0c3f7 100644 --- a/prod.js +++ b/prod.js @@ -25,7 +25,7 @@ const CONFIG_PATH = inputConfig || process.env.CONFIG_PATH || Path.resolve('conf const METADATA_PATH = inputMetadata || process.env.METADATA_PATH || Path.resolve('metadata') const SOURCE = options.source || process.env.SOURCE || 'debian' -const ROUTER_BASE_PATH = process.env.ROUTER_BASE_PATH || '' +const ROUTER_BASE_PATH = process.env.ROUTER_BASE_PATH || '/audiobookshelf' console.log(process.env.NODE_ENV, 'Config', CONFIG_PATH, METADATA_PATH) From 07264544ef0a782e61d7e15b9a2d7f3f15cbca7c Mon Sep 17 00:00:00 2001 From: D0ckW0rka Date: Sun, 12 Jan 2025 19:12:35 +0000 Subject: [PATCH 03/62] Translated using Weblate (German) Currently translated at 100.0% (1083 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/de/ --- client/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/de.json b/client/strings/de.json index 77554af2..dea7fb85 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -912,7 +912,7 @@ "StatsBooksFinished": "Beendete Bücher", "StatsBooksFinishedThisYear": "Einige Bücher, die dieses Jahr beendet wurden…", "StatsBooksListenedTo": "gehörte Bücher", - "StatsCollectionGrewTo": "Deine Bückersammlung ist gewachsen auf…", + "StatsCollectionGrewTo": "Deine Büchersammlung ist gewachsen auf…", "StatsSessions": "Sitzungen", "StatsSpentListening": "zugehört", "StatsTopAuthor": "TOP AUTOR", From 5995c52ab777898824c7a783991a78fae97d0dc5 Mon Sep 17 00:00:00 2001 From: Stefan Ha Date: Mon, 13 Jan 2025 05:39:38 +0000 Subject: [PATCH 04/62] Translated using Weblate (German) Currently translated at 100.0% (1083 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/de/ --- client/strings/de.json | 1 + 1 file changed, 1 insertion(+) diff --git a/client/strings/de.json b/client/strings/de.json index dea7fb85..0379b858 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -1017,6 +1017,7 @@ "ToastNewUserTagError": "Mindestens ein Tag muss ausgewählt sein", "ToastNewUserUsernameError": "Nutzername eingeben", "ToastNoNewEpisodesFound": "Keine neuen Episoden gefunden", + "ToastNoRSSFeed": "Podcast hat keinen RSS Feed", "ToastNoUpdatesNecessary": "Keine Änderungen nötig", "ToastNotificationCreateFailed": "Fehler beim erstellen der Benachrichtig", "ToastNotificationDeleteFailed": "Fehler beim löschen der Benachrichtigung", From 89247f17865b5f9c0f632580a2cec3e49140dc14 Mon Sep 17 00:00:00 2001 From: Vito0912 <86927734+Vito0912@users.noreply.github.com> Date: Mon, 13 Jan 2025 11:54:44 +0000 Subject: [PATCH 05/62] Translated using Weblate (German) Currently translated at 100.0% (1083 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/de/ --- client/strings/de.json | 1 + 1 file changed, 1 insertion(+) diff --git a/client/strings/de.json b/client/strings/de.json index 0379b858..646337e7 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -837,6 +837,7 @@ "MessageResetChaptersConfirm": "Kapitel und vorgenommenen Änderungen werden zurückgesetzt und rückgängig gemacht! Bist du dir sicher?", "MessageRestoreBackupConfirm": "Bist du dir sicher, dass du die Sicherung wiederherstellen willst, welche am", "MessageRestoreBackupWarning": "Bei der Wiederherstellung einer Sicherung wird die gesamte Datenbank unter /config und die Titelbilder in /metadata/items und /metadata/authors überschrieben.

Bei der Sicherung werden keine Dateien in deinen Bibliotheksordnern verändert. Wenn du die Servereinstellungen aktiviert hast, um Cover und Metadaten in deinen Bibliotheksordnern zu speichern, werden diese nicht gesichert oder überschrieben.

Alle Clients, die Ihren Server nutzen, werden automatisch aktualisiert.", + "MessageScheduleLibraryScanNote": "Für die meisten Nutzer wird empfohlen, diese Funktion deaktiviert zu lassen und stattdessen die Ordnerüberwachung aktiviert zu lassen. Die Ordnerüberwachung erkennt automatisch Änderungen in deinen Bibliotheksordnern. Da die Ordnerüberwachung jedoch nicht mit jedem Dateisystem (z.B. NFS) funktioniert, können alternativ hier geplante Bibliotheks-Scans aktiviert werden.", "MessageSearchResultsFor": "Suchergebnisse für", "MessageSelected": "{0} ausgewählt", "MessageServerCouldNotBeReached": "Server kann nicht erreicht werden", From 1856d68299473664d6455ca4bae965572de49353 Mon Sep 17 00:00:00 2001 From: David Date: Mon, 13 Jan 2025 10:28:33 +0000 Subject: [PATCH 06/62] Translated using Weblate (Spanish) Currently translated at 99.9% (1082 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/es/ --- client/strings/es.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/strings/es.json b/client/strings/es.json index 6cae35a8..115a9122 100644 --- a/client/strings/es.json +++ b/client/strings/es.json @@ -964,6 +964,7 @@ "ToastCollectionRemoveSuccess": "Colección removida", "ToastCollectionUpdateSuccess": "Colección actualizada", "ToastCoverUpdateFailed": "Error al actualizar la cubierta", + "ToastDateTimeInvalidOrIncomplete": "Fecha y hora inválidas o incompletas", "ToastDeleteFileFailed": "Error el eliminar archivo", "ToastDeleteFileSuccess": "Archivo eliminado", "ToastDeviceAddFailed": "Error al añadir dispositivo", @@ -1016,6 +1017,7 @@ "ToastNewUserTagError": "Debes seleccionar al menos una etiqueta", "ToastNewUserUsernameError": "Introduce un nombre de usuario", "ToastNoNewEpisodesFound": "No se encontraron nuevos episodios", + "ToastNoRSSFeed": "El Podcast no tiene una fuente RSS", "ToastNoUpdatesNecessary": "No es necesario actualizar", "ToastNotificationCreateFailed": "Error al crear notificación", "ToastNotificationDeleteFailed": "Error al borrar la notificación", From d8da793bca0c4ee59940aa423825948f57513af2 Mon Sep 17 00:00:00 2001 From: Mathias Franco Date: Mon, 13 Jan 2025 08:32:11 +0000 Subject: [PATCH 07/62] Translated using Weblate (Dutch) Currently translated at 100.0% (1083 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/nl/ --- client/strings/nl.json | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/client/strings/nl.json b/client/strings/nl.json index 33e330e1..d7c5abac 100644 --- a/client/strings/nl.json +++ b/client/strings/nl.json @@ -88,6 +88,8 @@ "ButtonSaveTracklist": "Afspeellijst opslaan", "ButtonScan": "Scannen", "ButtonScanLibrary": "Scan bibliotheek", + "ButtonScrollLeft": "Scroll Links", + "ButtonScrollRight": "Scroll Rechts", "ButtonSearch": "Zoeken", "ButtonSelectFolderPath": "Maplocatie selecteren", "ButtonSeries": "Series", @@ -153,7 +155,7 @@ "HeaderLogs": "Logboek", "HeaderManageGenres": "Genres beheren", "HeaderManageTags": "Tags beheren", - "HeaderMapDetails": "Map details", + "HeaderMapDetails": "Details map", "HeaderMatch": "Vergelijken", "HeaderMetadataOrderOfPrecedence": "Metadata volgorde", "HeaderMetadataToEmbed": "In te sluiten metadata", @@ -190,6 +192,7 @@ "HeaderSettingsExperimental": "Experimentele functies", "HeaderSettingsGeneral": "Algemeen", "HeaderSettingsScanner": "Scanner", + "HeaderSettingsWebClient": "Web Client", "HeaderSleepTimer": "Slaaptimer", "HeaderStatsLargestItems": "Grootste items", "HeaderStatsLongestItems": "Langste items (uren)", @@ -297,6 +300,7 @@ "LabelDiscover": "Ontdekken", "LabelDownload": "Download", "LabelDownloadNEpisodes": "Download {0} afleveringen", + "LabelDownloadable": "Downloadbaar", "LabelDuration": "Duur", "LabelDurationComparisonExactMatch": "(exacte overeenkomst)", "LabelDurationComparisonLonger": "({0} langer)", @@ -472,6 +476,7 @@ "LabelPermissionsAccessAllLibraries": "Heeft toegang tot all bibliotheken", "LabelPermissionsAccessAllTags": "Heeft toegang tot alle tags", "LabelPermissionsAccessExplicitContent": "Heeft toegang tot expliciete inhoud", + "LabelPermissionsCreateEreader": "Kan Ereader Aanmaken", "LabelPermissionsDelete": "Kan verwijderen", "LabelPermissionsDownload": "Kan downloaden", "LabelPermissionsUpdate": "Kan bijwerken", @@ -541,6 +546,7 @@ "LabelServerYearReview": "Server Jaar in Review ({0})", "LabelSetEbookAsPrimary": "Stel in als primair", "LabelSetEbookAsSupplementary": "Stel in als supplementair", + "LabelSettingsAllowIframe": "Insluiten in iframe toestaan", "LabelSettingsAudiobooksOnly": "Alleen audiobooks", "LabelSettingsAudiobooksOnlyHelp": "Deze instelling inschakelen zorgt ervoor dat ebook-bestanden genegeerd worden tenzij ze in een audiobook-map staan, in welk geval ze worden ingesteld als supplementaire ebooks", "LabelSettingsBookshelfViewHelp": "Skeumorphisch design met houten planken", @@ -562,6 +568,9 @@ "LabelSettingsHideSingleBookSeriesHelp": "Series die slechts een enkel boek bevatten worden verborgen op de seriespagina en de homepagina-planken.", "LabelSettingsHomePageBookshelfView": "Boekenplank-view voor homepagina", "LabelSettingsLibraryBookshelfView": "Boekenplank-view voor bibliotheek", + "LabelSettingsLibraryMarkAsFinishedPercentComplete": "Voltooid percentage is groter dan", + "LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Resterende tijd is kleiner dan (seconden)", + "LabelSettingsLibraryMarkAsFinishedWhen": "Markeer media item wanneer voltooid", "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Sla eedere boeken in Serie Verderzetten over", "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "De Continue Series home page shelf toont het eerste boek dat nog niet is begonnen in series waarvan er minstens één is voltooid en er geen boeken in uitvoering zijn. Als u deze instelling inschakelt, wordt de serie voortgezet vanaf het boek dat het verst is voltooid in plaats van het eerste boek dat nog niet is begonnen.", "LabelSettingsParseSubtitles": "Parseer subtitel", @@ -580,6 +589,7 @@ "LabelSettingsStoreMetadataWithItemHelp": "Standaard worden metadata-bestanden bewaard in /metadata/items, door deze instelling in te schakelen zullen metadata bestanden in de map van je bibliotheekonderdeel bewaard worden", "LabelSettingsTimeFormat": "Tijdformat", "LabelShare": "Delen", + "LabelShareDownloadableHelp": "Gebruikers toestaan met share link om zip bestand te downloaden van het bibliotheek item.", "LabelShareOpen": "Delen Open", "LabelShareURL": "URL Delen", "LabelShowAll": "Toon alle", @@ -588,6 +598,8 @@ "LabelSize": "Grootte", "LabelSleepTimer": "Slaaptimer", "LabelSlug": "Slak", + "LabelSortAscending": "Oplopend", + "LabelSortDescending": "Aflopend", "LabelStart": "Start", "LabelStartTime": "Starttijd", "LabelStarted": "Gestart", @@ -659,6 +671,7 @@ "LabelUpdateDetailsHelp": "Sta overschrijven van bestaande details toe voor de geselecteerde boeken wanneer een match is gevonden", "LabelUpdatedAt": "Bijgewerkt op", "LabelUploaderDragAndDrop": "Slepen & neerzeten van bestanden of mappen", + "LabelUploaderDragAndDropFilesOnly": "Drag & drop bestanden", "LabelUploaderDropFiles": "Bestanden neerzetten", "LabelUploaderItemFetchMetadataHelp": "Automatisch titel, auteur en serie ophalen", "LabelUseAdvancedOptions": "Gebruik Geavanceerde Instellingen", @@ -674,6 +687,8 @@ "LabelViewPlayerSettings": "Laat spelerinstellingen zien", "LabelViewQueue": "Bekijk afspeelwachtrij", "LabelVolume": "Volume", + "LabelWebRedirectURLsDescription": "Autoriseer deze URL's in uw OAuth-provider om na het inloggen omleiding terug naar de web-app toe te staan:", + "LabelWebRedirectURLsSubfolder": "Subfolder voor Redirect URLs", "LabelWeekdaysToRun": "Weekdagen om te draaien", "LabelXBooks": "{0} boeken", "LabelXItems": "{0} items", @@ -743,6 +758,7 @@ "MessageConfirmResetProgress": "Bet u zeker dat u uw voortgang wil resetten?", "MessageConfirmSendEbookToDevice": "Weet je zeker dat je {0} ebook \"{1}\" naar apparaat \"{2}\" wil sturen?", "MessageConfirmUnlinkOpenId": "Bent u zeker dat u deze gebruiker wil ontkoppelen van OpenID?", + "MessageDaysListenedInTheLastYear": "{0} dagen geluisterd in het voorbije jaar", "MessageDownloadingEpisode": "Aflevering aan het dowloaden", "MessageDragFilesIntoTrackOrder": "Sleep bestanden in de juiste trackvolgorde", "MessageEmbedFailed": "Insluiten Mislukt!", @@ -821,6 +837,7 @@ "MessageResetChaptersConfirm": "Weet je zeker dat je de hoofdstukken wil resetten en de wijzigingen die je gemaakt hebt ongedaan wil maken?", "MessageRestoreBackupConfirm": "Weet je zeker dat je wil herstellen met behulp van de back-up gemaakt op", "MessageRestoreBackupWarning": "Herstellen met een back-up zal de volledige database in /config en de covers in /metadata/items & /metadata/authors overschrijven.

Back-ups wijzigen geen bestanden in je bibliotheekmappen. Als je de serverinstelling gebruikt om covers en metadata in je bibliotheekmappen te bewaren dan worden deze niet geback-upt of overschreven.

Alle clients die van je server gebruik maken zullen automatisch worden ververst.", + "MessageScheduleLibraryScanNote": "Voor de meeste gebruikers is het raadzaam om deze functie uitgeschakeld te laten en de folder watcher-instelling ingeschakeld te houden. De folder watcher detecteert automatisch wijzigingen in uw bibliotheekmappen. De folder watcher werkt niet voor elk bestandssysteem (zoals NFS), dus geplande bibliotheekscans kunnen in plaats daarvan worden gebruikt.", "MessageSearchResultsFor": "Zoekresultaten voor", "MessageSelected": "{0} geselecteerd", "MessageServerCouldNotBeReached": "Server niet bereikbaar", @@ -948,6 +965,7 @@ "ToastCollectionRemoveSuccess": "Collectie verwijderd", "ToastCollectionUpdateSuccess": "Collectie bijgewerkt", "ToastCoverUpdateFailed": "Cover update mislukt", + "ToastDateTimeInvalidOrIncomplete": "Datum en tijd ongeldig of onvolledig", "ToastDeleteFileFailed": "Bestand verwijderen mislukt", "ToastDeleteFileSuccess": "Bestand verwijderd", "ToastDeviceAddFailed": "Apparaat toevoegen mislukt", @@ -1000,6 +1018,7 @@ "ToastNewUserTagError": "Moet ten minste een tag selecteren", "ToastNewUserUsernameError": "Voer een gebruikersnaam in", "ToastNoNewEpisodesFound": "Geen nieuwe afleveringen gevonden", + "ToastNoRSSFeed": "Podcast heeft geen RSS Feed", "ToastNoUpdatesNecessary": "Geen updates nodig", "ToastNotificationCreateFailed": "Nieuwe melding aanmaken mislukt", "ToastNotificationDeleteFailed": "Melding verwijderen mislukt", From b8afcd166466e509666ec59a095166f726cf2212 Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Mon, 13 Jan 2025 09:23:33 +0000 Subject: [PATCH 08/62] Translated using Weblate (Swedish) Currently translated at 72.0% (780 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 107 +++++++++++++++++++++++------------------ 1 file changed, 61 insertions(+), 46 deletions(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index cc75d43d..ff799867 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -61,7 +61,7 @@ "ButtonPreviousChapter": "Föregående kapitel", "ButtonProbeAudioFile": "Analysera ljudfil", "ButtonPurgeAllCache": "Rensa all cache", - "ButtonPurgeItemsCache": "Rensa föremåls-cache", + "ButtonPurgeItemsCache": "Rensa cache för föremål", "ButtonQueueAddItem": "Lägg till i kön", "ButtonQueueRemoveItem": "Ta bort från kön", "ButtonQuickMatch": "Snabb matchning", @@ -73,9 +73,9 @@ "ButtonRemove": "Ta bort", "ButtonRemoveAll": "Ta bort alla", "ButtonRemoveAllLibraryItems": "Ta bort alla biblioteksobjekt", - "ButtonRemoveFromContinueListening": "Ta bort från Fortsätt lyssna", + "ButtonRemoveFromContinueListening": "Radera från 'Fortsätt läsa/lyssna'", "ButtonRemoveFromContinueReading": "Ta bort från Fortsätt läsa", - "ButtonRemoveSeriesFromContinueSeries": "Ta bort serie från Fortsätt serie", + "ButtonRemoveSeriesFromContinueSeries": "Radera från 'Fortsätt med serie'", "ButtonReset": "Återställ", "ButtonResetToDefault": "Återställ till standard", "ButtonRestore": "Återställ", @@ -97,7 +97,7 @@ "ButtonTest": "Testa", "ButtonUpload": "Ladda upp", "ButtonUploadBackup": "Ladda upp säkerhetskopia", - "ButtonUploadCover": "Ladda upp omslag", + "ButtonUploadCover": "Ladda upp bokomslag", "ButtonUploadOPMLFile": "Ladda upp OPML-fil", "ButtonUserDelete": "Radera användare {0}", "ButtonUserEdit": "Redigera användare {0}", @@ -114,7 +114,7 @@ "HeaderChooseAFolder": "Välj en mapp", "HeaderCollection": "Samling", "HeaderCollectionItems": "Samlingselement", - "HeaderCover": "Omslag", + "HeaderCover": "Bokomslag", "HeaderCurrentDownloads": "Aktuella nedladdningar", "HeaderDetails": "Detaljer", "HeaderDownloadQueue": "Nedladdningskö", @@ -154,7 +154,7 @@ "HeaderPlaylist": "Spellista", "HeaderPlaylistItems": "Spellistobjekt", "HeaderPodcastsToAdd": "Podcaster att lägga till", - "HeaderPreviewCover": "Förhandsgranska omslag", + "HeaderPreviewCover": "Förhandsgranska bokomslag", "HeaderRSSFeedGeneral": "RSS-information", "HeaderRSSFeedIsOpen": "RSS-flödet är öppet", "HeaderRSSFeeds": "RSS-flöden", @@ -191,8 +191,8 @@ "LabelAccountTypeGuest": "Gäst", "LabelAccountTypeUser": "Användare", "LabelActivity": "Aktivitet", - "LabelAddToCollection": "Lägg till i Samling", - "LabelAddToCollectionBatch": "Lägg till {0} böcker i Samlingen", + "LabelAddToCollection": "Lägg till i en Samling", + "LabelAddToCollectionBatch": "Lägg till {0} böcker i en Samling", "LabelAddToPlaylist": "Lägg till i Spellista", "LabelAddToPlaylistBatch": "Lägg till {0} objekt i Spellistan", "LabelAddedAt": "Tillagd vid", @@ -235,10 +235,10 @@ "LabelCollections": "Samlingar", "LabelComplete": "Komplett", "LabelConfirmPassword": "Bekräfta lösenord", - "LabelContinueListening": "Fortsätt Lyssna", + "LabelContinueListening": "Fortsätt läsa/lyssna", "LabelContinueReading": "Fortsätt Läsa", - "LabelContinueSeries": "Fortsätt Serie", - "LabelCover": "Omslag", + "LabelContinueSeries": "Fortsätt med serie", + "LabelCover": "Bokomslag", "LabelCoverImageURL": "URL till omslagsbild", "LabelCreatedAt": "Skapad vid", "LabelCronExpression": "Cron-uttryck", @@ -268,7 +268,7 @@ "LabelEmailSettingsSecure": "Säker", "LabelEmailSettingsSecureHelp": "Om sant kommer anslutningen att använda TLS vid anslutning till servern. Om falskt används TLS om servern stöder STARTTLS-tillägget. I de flesta fall, om du ansluter till port 465, bör du ställa in detta värde till sant. För port 587 eller 25, låt det vara falskt. (från nodemailer.com/smtp/#authentication)", "LabelEmailSettingsTestAddress": "Testadress", - "LabelEmbeddedCover": "Inbäddat omslag", + "LabelEmbeddedCover": "Inbäddat bokomslag", "LabelEnable": "Aktivera", "LabelEnd": "Slut", "LabelEndOfChapter": "Slut av kapitel", @@ -294,6 +294,7 @@ "LabelHardDeleteFile": "Hård radering av fil", "LabelHasEbook": "Har E-bok", "LabelHasSupplementaryEbook": "Har komplimenterande E-bok", + "LabelHighestPriority": "Högst prioritet", "LabelHost": "Värd", "LabelHour": "Timme", "LabelIcon": "Ikon", @@ -329,11 +330,12 @@ "LabelLibraryName": "Biblioteksnamn", "LabelLimit": "Begränsning", "LabelLineSpacing": "Radavstånd", - "LabelListenAgain": "Lyssna igen", + "LabelListenAgain": "Läs/Lyssna igen", "LabelLogLevelDebug": "Felsökningsnivå: Felsökning", "LabelLogLevelInfo": "Felsökningsnivå: Information", "LabelLogLevelWarn": "Felsökningsnivå: Varning", "LabelLookForNewEpisodesAfterDate": "Sök efter nya avsnitt efter detta datum", + "LabelLowestPriority": "Lägst prioritet", "LabelMediaPlayer": "Mediaspelare", "LabelMediaType": "Mediatyp", "LabelMetaTag": "Metamärke", @@ -348,7 +350,7 @@ "LabelNarrators": "Uppläsare", "LabelNew": "Ny", "LabelNewPassword": "Nytt lösenord", - "LabelNewestAuthors": "Senast tillagda författare", + "LabelNewestAuthors": "Senast adderade författare", "LabelNewestEpisodes": "Senast tillagda avsnitt", "LabelNextBackupDate": "Nästa datum för säkerhetskopia", "LabelNextScheduledRun": "Nästa schemalagda körning", @@ -407,7 +409,7 @@ "LabelRecentlyAdded": "Nyligen tillagd", "LabelRecommended": "Rekommenderad", "LabelReleaseDate": "Utgivningsdatum", - "LabelRemoveCover": "Ta bort omslag", + "LabelRemoveCover": "Ta bort bokomslag", "LabelSearchTerm": "Sökterm", "LabelSearchTitle": "Sök titel", "LabelSearchTitleOrASIN": "Sök titel eller ASIN-kod", @@ -420,41 +422,48 @@ "LabelSeries": "Serier", "LabelSeriesName": "Serienamn", "LabelSeriesProgress": "Serieframsteg", - "LabelSetEbookAsPrimary": "Ange som primär", + "LabelSetEbookAsPrimary": "Ange som primär fil", "LabelSetEbookAsSupplementary": "Ange som kompletterande", + "LabelSettingsAllowIframe": "Tillåt att Audiobookshelf får visas i en iframe", "LabelSettingsAudiobooksOnly": "Endast ljudböcker", - "LabelSettingsAudiobooksOnlyHelp": "Aktivera detta alternativ kommer att ignorera e-boksfiler om de inte finns inom en ljudboksmapp, i vilket fall de kommer att anges som kompletterande e-böcker", + "LabelSettingsAudiobooksOnlyHelp": "När detta alternativ aktiveras kommer filer med e-böcker
att ignoreras om de inte lagras i en mapp med en ljudbok.
I det fallet kommer de att anges som en kompletterande e-bok", "LabelSettingsBookshelfViewHelp": "Skeumorfisk design med trähyllor", "LabelSettingsChromecastSupport": "Stöd för Chromecast", "LabelSettingsDateFormat": "Datumformat", "LabelSettingsDisableWatcher": "Inaktivera Watcher", - "LabelSettingsDisableWatcherForLibrary": "Inaktivera mappbevakning för bibliotek", - "LabelSettingsDisableWatcherHelp": "Inaktiverar automatiskt lägga till/uppdatera objekt när filändringar upptäcks. *Kräver omstart av servern", + "LabelSettingsDisableWatcherForLibrary": "Inaktivera bevakning med Watcher för biblioteket", + "LabelSettingsDisableWatcherHelp": "Inaktiverar automatik att addera/uppdatera objekt
när ändringar av filer genomförs.
OBS: Kräver en omstart av servern", "LabelSettingsEnableWatcher": "Aktivera Watcher", - "LabelSettingsEnableWatcherForLibrary": "Aktivera mappbevakning för bibliotek", - "LabelSettingsEnableWatcherHelp": "Aktiverar automatiskt lägga till/uppdatera objekt när filändringar upptäcks. *Kräver omstart av servern", + "LabelSettingsEnableWatcherForLibrary": "Aktivera bevakning med Watcher för biblioteket", + "LabelSettingsEnableWatcherHelp": "Aktiverar automatik att addera/uppdatera objekt
när ändringar av filer genomförs.
OBS: Kräver en omstart av servern", + "LabelSettingsEpubsAllowScriptedContent": "Tillåt e-böcker i epubs-format som innehåller script", "LabelSettingsExperimentalFeatures": "Experimentella funktioner", "LabelSettingsExperimentalFeaturesHelp": "Funktioner under utveckling som behöver din feedback och hjälp med testning. Klicka för att öppna diskussionen på GitHub.", - "LabelSettingsFindCovers": "Hitta omslag", - "LabelSettingsFindCoversHelp": "Om din ljudbok inte har ett inbäddat omslag eller en omslagsbild i mappen kommer skannern att försöka hitta ett omslag.
Observera: Detta kommer att förlänga skannningstiden", - "LabelSettingsHideSingleBookSeries": "Dölj serier med en bok", - "LabelSettingsHideSingleBookSeriesHelp": "Serier som har en enda bok kommer att döljas från seriesidan och hyllsidan på startsidan.", - "LabelSettingsHomePageBookshelfView": "Startsida använd bokhyllvy", - "LabelSettingsLibraryBookshelfView": "Bibliotek använd bokhyllvy", - "LabelSettingsParseSubtitles": "Analysera undertexter", - "LabelSettingsParseSubtitlesHelp": "Extrahera undertitlar från namnet på mappar för ljudböcker.
Undertiteln måste vara åtskilda med ett bindestreck \" - \".
Mappen \"Boktitel - En undertitel här\" har undertiteln \"En undertitel här\"", - "LabelSettingsPreferMatchedMetadata": "Föredra matchad metadata", + "LabelSettingsFindCovers": "Hitta ett bokomslag", + "LabelSettingsFindCoversHelp": "Om din bok inte har ett bokomslag inbäddat i filen eller
en fil med bokomslaget i mappen kommer
skannern att försöka hitta ett omslag.
OBS: Detta kommer att förlänga inläsningstiden", + "LabelSettingsHideSingleBookSeries": "Dölj serier som endast innehåller en bok", + "LabelSettingsHideSingleBookSeriesHelp": "Serier som endast har en bok kommer att
döljas från sidan 'Serier' och hyllorna på startsidan.", + "LabelSettingsHomePageBookshelfView": "Använd vy liknande en bokhylla på startsidan", + "LabelSettingsLibraryBookshelfView": "Använd vy liknande en bokhylla i biblioteket", + "LabelSettingsLibraryMarkAsFinishedPercentComplete": "Procent genomfört är större än", + "LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Återstående tid är mindre än (sekunder)", + "LabelSettingsLibraryMarkAsFinishedWhen": "Markera objekt som avslutade när", + "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Hoppa över tidigare böcker i en serie", + "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Sektionen 'Fortsätt med serie' på startsidan visar \"nästa bok\" i serien,
där åtminstone en bok avslutats, och ingen bok i serien har påbörjats.
Om detta alternativ aktiveras kommer efterföljande bok till den
avslutade att föreslås - istället för den första ej avslutade boken i serien.", + "LabelSettingsParseSubtitles": "Hämta undertitel från bokens mapp", + "LabelSettingsParseSubtitlesHelp": "Hämtar undertiteln från namnet på mappen där boken lagras.
Undertiteln måste vara åtskilda med ett bindestreck ' - '.
En mapp med namnet 'Boktitel - Bokens undertitel'
får undertiteln \"Bokens undertitel\"", + "LabelSettingsPreferMatchedMetadata": "Prioritera matchad metadata", "LabelSettingsPreferMatchedMetadataHelp": "Matchad data kommer att åsidosätta objektdetaljer vid snabbmatchning. Som standard kommer snabbmatchning endast att fylla i saknade detaljer.", - "LabelSettingsSkipMatchingBooksWithASIN": "Hoppa över matchande böcker med ASIN-kod", - "LabelSettingsSkipMatchingBooksWithISBN": "Hoppa över matchande böcker med ISBN", + "LabelSettingsSkipMatchingBooksWithASIN": "Hoppa över matchande böcker som har en ASIN-kod", + "LabelSettingsSkipMatchingBooksWithISBN": "Hoppa över matchande böcker som har en ISBN-kod", "LabelSettingsSortingIgnorePrefixes": "Ignorera prefix vid sortering", "LabelSettingsSortingIgnorePrefixesHelp": "För prefix som t.ex. \"the\" kommer boktiteln \"The Book Title\" att sorteras som \"Book Title, The\"", - "LabelSettingsSquareBookCovers": "Använd fyrkantiga bokomslag", - "LabelSettingsSquareBookCoversHelp": "Föredrar att använda fyrkantiga omslag över standard 1.6:1 bokomslag", - "LabelSettingsStoreCoversWithItem": "Lagra omslag med objekt", - "LabelSettingsStoreCoversWithItemHelp": "Som standard lagras bokomslag i mappen /metadata/items. Genom att aktivera detta alternativ kommer omslagen att lagra i din biblioteksmapp. Endast en fil med namnet \"cover\" kommer att behållas", - "LabelSettingsStoreMetadataWithItem": "Lagra metadata med objekt", - "LabelSettingsStoreMetadataWithItemHelp": "Som standard lagras metadatafiler i mappen /metadata/items. Genom att aktivera detta alternativ kommer metadatafilerna att lagras i dina biblioteksmappar", + "LabelSettingsSquareBookCovers": "Använd kvadratiska bokomslag", + "LabelSettingsSquareBookCoversHelp": "Föredrar att använda kvadratiska bokomslag
före standardformatet 1.6:1", + "LabelSettingsStoreCoversWithItem": "Lagra bokomslag med objektet", + "LabelSettingsStoreCoversWithItemHelp": "Som standard lagras bokomslag i mappen '/metadata/items'. Genom att aktivera detta alternativ kommer omslagen att lagra i din biblioteksmapp. Endast en fil med namnet 'cover' kommer att behållas", + "LabelSettingsStoreMetadataWithItem": "Lagra metadata med objektet", + "LabelSettingsStoreMetadataWithItemHelp": "Som standard lagras metadatafiler i mappen '/metadata/items'. Genom att aktivera detta alternativ kommer metadatafilerna att lagra i din biblioteksmapp", "LabelSettingsTimeFormat": "Tidsformat", "LabelShowAll": "Visa alla", "LabelSize": "Storlek", @@ -502,7 +511,7 @@ "LabelToolsEmbedMetadata": "Bädda in metadata", "LabelToolsEmbedMetadataDescription": "Bädda in metadata i ljudfiler, inklusive omslagsbild och kapitel.", "LabelToolsMakeM4b": "Skapa M4B ljudbok", - "LabelToolsMakeM4bDescription": "Skapa en .M4B ljudboksfil med inbäddad metadata, omslagsbild och kapitel.", + "LabelToolsMakeM4bDescription": "Skapa en ljudboksfil i M4B-format med inbäddad metadata, omslagsbild och kapitel.", "LabelToolsSplitM4b": "Dela upp M4B-fil i MP3-filer", "LabelToolsSplitM4bDescription": "Skapa MP3-filer från en M4B-fil uppdelad i kapitel med inbäddad metadata, omslagsbild och kapitel.", "LabelTotalDuration": "Total varaktighet", @@ -517,10 +526,10 @@ "LabelType": "Typ", "LabelUnabridged": "Oavkortad", "LabelUnknown": "Okänd", - "LabelUpdateCover": "Uppdatera omslag", - "LabelUpdateCoverHelp": "Tillåt överskrivning av befintliga omslag för de valda böckerna när en matchning hittas", + "LabelUpdateCover": "Uppdatera bokomslag", + "LabelUpdateCoverHelp": "Tillåt att befintliga bokomslag för de valda böckerna ersätts när en matchning hittas", "LabelUpdateDetails": "Uppdatera detaljer", - "LabelUpdateDetailsHelp": "Tillåt överskrivning av befintliga detaljer för de valda böckerna när en matchning hittas", + "LabelUpdateDetailsHelp": "Tillåt att befintliga detaljer för de valda böckerna ersätts när en matchning hittas", "LabelUpdatedAt": "Uppdaterad vid", "LabelUploaderDragAndDrop": "Dra och släpp filer eller mappar", "LabelUploaderDropFiles": "Släpp filer", @@ -568,6 +577,8 @@ "MessageConfirmMarkAllEpisodesNotFinished": "Är du säker på att du vill markera alla avsnitt som inte avslutade?", "MessageConfirmMarkSeriesFinished": "Är du säker på att du vill markera alla böcker i denna serie som avslutade?", "MessageConfirmMarkSeriesNotFinished": "Är du säker på att du vill markera alla böcker i denna serie som ej avslutade?", + "MessageConfirmPurgeCache": "När du rensar cashen kommer biblioteket /metadata/cache att raderas.

Är du säker på att du vill radera biblioteket?", + "MessageConfirmPurgeItemsCache": "När du rensar cashen för föremål kommer biblioteket /metadata/cache/items att raderas.

Är du säker på att du vill radera biblioteket?", "MessageConfirmQuickEmbed": "VARNING! Quick embed kommer inte att säkerhetskopiera dina ljudfiler. Se till att du har en säkerhetskopia av dina ljudfiler.

Vill du fortsätta?", "MessageConfirmReScanLibraryItems": "Är du säker på att du vill göra omgenomsökning för {0} objekt?", "MessageConfirmRemoveAllChapters": "Är du säker på att du vill ta bort alla kapitel?", @@ -612,7 +623,7 @@ "MessageNoBookmarks": "Inga bokmärken", "MessageNoChapters": "Inga kapitel", "MessageNoCollections": "Inga samlingar", - "MessageNoCoversFound": "Inga omslag hittade", + "MessageNoCoversFound": "Inga bokomslag hittades", "MessageNoDescription": "Ingen beskrivning", "MessageNoDownloadsInProgress": "Inga nedladdningar pågår för närvarande", "MessageNoDownloadsQueued": "Inga nedladdningar i kö", @@ -641,7 +652,7 @@ "MessagePlayChapter": "Lyssna på kapitlets början", "MessagePlaylistCreateFromCollection": "Skapa spellista från samling", "MessagePodcastHasNoRSSFeedForMatching": "Podcasten har ingen RSS-flödes-URL att använda för matchning", - "MessageQuickMatchDescription": "Fyll tomma objektdetaljer och omslag med första matchningsresultat från '{0}'. Överskriver inte detaljer om inte serverinställningen 'Föredra matchad metadata' är aktiverad.", + "MessageQuickMatchDescription": "Adderar uppgifter som saknas samt en omslagsbild från
första träffen i resultatet vid sökningen från '{0}'.
Skriver inte över befintliga uppgifter om inte
inställningen 'Prioritera matchad metadata' är aktiverad.", "MessageRemoveChapter": "Ta bort kapitel", "MessageRemoveEpisodes": "Ta bort {0} avsnitt", "MessageRemoveFromPlayerQueue": "Ta bort från spellistan", @@ -654,12 +665,13 @@ "MessageServerCouldNotBeReached": "Servern kunde inte nås", "MessageSetChaptersFromTracksDescription": "Ställ in kapitel med varje ljudfil som ett kapitel och kapitelrubrik som ljudfilens namn", "MessageStartPlaybackAtTime": "Starta uppspelning för \"{0}\" kl. {1}?", + "MessageTaskFailedToCreateCacheDirectory": "Misslyckades med att skapa bibliotek för cachen", "MessageThinking": "Tänker...", "MessageUploaderItemFailed": "Misslyckades med att ladda upp", "MessageUploaderItemSuccess": "Uppladdning lyckades!", "MessageUploading": "Laddar upp...", "MessageValidCronExpression": "Giltigt cron-uttryck", - "MessageWatcherIsDisabledGlobally": "Vakten är inaktiverad globalt i serverinställningarna", + "MessageWatcherIsDisabledGlobally": "Watcher är inaktiverad centralt under rubriken 'Inställningar'", "MessageXLibraryIsEmpty": "{0} biblioteket är tomt!", "MessageYourAudiobookDurationIsLonger": "Varaktigheten på din ljudbok är längre än den hittade varaktigheten", "MessageYourAudiobookDurationIsShorter": "Varaktigheten på din ljudbok är kortare än den hittade varaktigheten", @@ -708,11 +720,14 @@ "ToastBookmarkCreateSuccess": "Bokmärket har adderats", "ToastBookmarkRemoveSuccess": "Bokmärket har raderats", "ToastBookmarkUpdateSuccess": "Bokmärket har uppdaterats", + "ToastCachePurgeFailed": "Misslyckades med att rensa cachen", + "ToastCachePurgeSuccess": "Rensning av cachen har genomförts", "ToastChaptersHaveErrors": "Kapitlen har fel", "ToastChaptersMustHaveTitles": "Kapitel måste ha titlar", "ToastCollectionRemoveSuccess": "Samlingen har raderats", "ToastCollectionUpdateSuccess": "Samlingen har uppdaterats", - "ToastItemCoverUpdateSuccess": "Objektets omslag uppdaterat", + "ToastCoverUpdateFailed": "Uppdatering av bokomslag misslyckades", + "ToastItemCoverUpdateSuccess": "Objektets bokomslag har uppdaterats", "ToastItemDetailsUpdateSuccess": "Objektdetaljer uppdaterade", "ToastItemMarkedAsFinishedFailed": "Misslyckades med att markera som färdig", "ToastItemMarkedAsFinishedSuccess": "Objekt markerat som färdig", From adef6ede12d3d61a857326c740221bcbe25934f6 Mon Sep 17 00:00:00 2001 From: Marcus skoding Date: Mon, 13 Jan 2025 17:51:52 +0000 Subject: [PATCH 09/62] Translated using Weblate (Swedish) Currently translated at 72.0% (780 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/client/strings/sv.json b/client/strings/sv.json index ff799867..38e6c138 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -88,6 +88,7 @@ "ButtonSelectFolderPath": "Välj mappens sökväg", "ButtonSeries": "Serier", "ButtonSetChaptersFromTracks": "Ställ in kapitel från spår", + "ButtonShare": "Dela", "ButtonShiftTimes": "Förskjut tider", "ButtonShow": "Visa", "ButtonStartM4BEncode": "Starta M4B-kodning", @@ -108,6 +109,7 @@ "HeaderAppriseNotificationSettings": "Apprise Meddelandeinställningar", "HeaderAudioTracks": "Ljudspår", "HeaderAudiobookTools": "Ljudbokshantering", + "HeaderAuthentication": "Autentisering", "HeaderBackups": "Säkerhetskopior", "HeaderChangePassword": "Ändra lösenord", "HeaderChapters": "Kapitel", @@ -149,8 +151,10 @@ "HeaderNotifications": "Meddelanden", "HeaderOpenRSSFeed": "Öppna RSS-flöde", "HeaderOtherFiles": "Andra filer", + "HeaderPasswordAuthentication": "Lösenordsautentisering", "HeaderPermissions": "Behörigheter", "HeaderPlayerQueue": "Spelarkö", + "HeaderPlayerSettings": "Spelarinställningar", "HeaderPlaylist": "Spellista", "HeaderPlaylistItems": "Spellistobjekt", "HeaderPodcastsToAdd": "Podcaster att lägga till", @@ -162,7 +166,9 @@ "HeaderRemoveEpisodes": "Ta bort {0} avsnitt", "HeaderSavedMediaProgress": "Sparad medieförlopp", "HeaderSchedule": "Schema", + "HeaderScheduleEpisodeDownloads": "Schemalägg automatiska avsnittsnedladdningar", "HeaderScheduleLibraryScans": "Schemalagda biblioteksskanningar", + "HeaderSession": "Session", "HeaderSetBackupSchedule": "Ange schemaläggning för säkerhetskopia", "HeaderSettings": "Inställningar", "HeaderSettingsDisplay": "Visning", @@ -188,6 +194,7 @@ "HeaderYourStats": "Din statistik", "LabelAbridged": "Förkortad", "LabelAccountType": "Kontotyp", + "LabelAccountTypeAdmin": "Admin", "LabelAccountTypeGuest": "Gäst", "LabelAccountTypeUser": "Användare", "LabelActivity": "Aktivitet", @@ -202,6 +209,7 @@ "LabelAllUsersExcludingGuests": "Alla användare utom gäster", "LabelAllUsersIncludingGuests": "Alla användare inklusive gäster", "LabelAlreadyInYourLibrary": "Redan i din samling", + "LabelApiToken": "API-token", "LabelAppend": "Lägg till", "LabelAuthor": "Författare", "LabelAuthorFirstLast": "Författare (Förnamn Efternamn)", @@ -210,7 +218,9 @@ "LabelAutoDownloadEpisodes": "Automatisk nedladdning av avsnitt", "LabelAutoFetchMetadata": "Automatisk nedladdning av metadata", "LabelAutoFetchMetadataHelp": "Hämtar metadata för titel, författare och serier. Kompletterande metadata får adderas efter uppladdningen.", + "LabelAutoRegisterDescription": "Skapa automatiskt nya användare efter inloggning", "LabelBackToUser": "Tillbaka till användaren", + "LabelBackupAudioFiles": "Säkerhetskopiera ljudfiler", "LabelBackupLocation": "Plats för säkerhetskopia", "LabelBackupsEnableAutomaticBackups": "Aktivera automatiska säkerhetskopior", "LabelBackupsEnableAutomaticBackupsHelp": "Säkerhetskopior sparas i \"/metadata/backups\"", @@ -219,6 +229,7 @@ "LabelBackupsNumberToKeep": "Antal säkerhetskopior att behålla", "LabelBackupsNumberToKeepHelp": "Endast en säkerhetskopia tas bort åt gången, så om du redan har fler säkerhetskopior än detta bör du ta bort dem manuellt.", "LabelBitrate": "Bitfrekvens", + "LabelBonus": "Bonus", "LabelBooks": "Böcker", "LabelButtonText": "Knapptext", "LabelByAuthor": "av {0}", @@ -229,6 +240,7 @@ "LabelChapters": "Kapitel", "LabelChaptersFound": "hittade kapitel", "LabelClickForMoreInfo": "Klicka för mer information", + "LabelClickToUseCurrentValue": "Klicka för att använda aktuellt värde", "LabelClosePlayer": "Stäng spelaren", "LabelCollapseSeries": "Fäll ihop serie", "LabelCollection": "Samling", @@ -246,6 +258,7 @@ "LabelCurrently": "För närvarande:", "LabelCustomCronExpression": "Anpassat Cron-uttryck:", "LabelDatetime": "Datum och tid", + "LabelDays": "Dagar", "LabelDeleteFromFileSystemCheckbox": "Ta bort från filsystem (avmarkera för att endast ta bort från databasen)", "LabelDescription": "Beskrivning", "LabelDeselectAll": "Avmarkera alla", @@ -258,18 +271,23 @@ "LabelDiscover": "Upptäck", "LabelDownload": "Ladda ner", "LabelDownloadNEpisodes": "Ladda ner {0} avsnitt", + "LabelDownloadable": "Nedladdningsbar", "LabelDuration": "Varaktighet", + "LabelDurationComparisonExactMatch": "(exakt matchning)", "LabelDurationFound": "Varaktighet hittad:", "LabelEbook": "E-bok", "LabelEbooks": "Eböcker", "LabelEdit": "Redigera", "LabelEmail": "E-post", "LabelEmailSettingsFromAddress": "Från adress", + "LabelEmailSettingsRejectUnauthorized": "Avvisa icke-autentiserade certifikat", + "LabelEmailSettingsRejectUnauthorizedHelp": "Inaktivering av SSL-certifikatsvalidering kan exponera din anslutning för säkerhetsrisker, såsom man-in-the-middle-attacker. Inaktivera bara denna inställning om du förstår implikationerna och litar på den epostserver du ansluter till.", "LabelEmailSettingsSecure": "Säker", "LabelEmailSettingsSecureHelp": "Om sant kommer anslutningen att använda TLS vid anslutning till servern. Om falskt används TLS om servern stöder STARTTLS-tillägget. I de flesta fall, om du ansluter till port 465, bör du ställa in detta värde till sant. För port 587 eller 25, låt det vara falskt. (från nodemailer.com/smtp/#authentication)", "LabelEmailSettingsTestAddress": "Testadress", "LabelEmbeddedCover": "Inbäddat bokomslag", "LabelEnable": "Aktivera", + "LabelEncodingBackupLocation": "En säkerhetskopia av dina orginalljudfiler kommer att lagras i:", "LabelEnd": "Slut", "LabelEndOfChapter": "Slut av kapitel", "LabelEpisode": "Avsnitt", From 9360165f6bd7b5fad0198afe590f8298f677f8b5 Mon Sep 17 00:00:00 2001 From: SunSpring Date: Mon, 13 Jan 2025 13:42:41 +0000 Subject: [PATCH 10/62] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1083 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/zh_Hans/ --- client/strings/zh-cn.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/strings/zh-cn.json b/client/strings/zh-cn.json index fad6fc7a..01ffe241 100644 --- a/client/strings/zh-cn.json +++ b/client/strings/zh-cn.json @@ -300,6 +300,7 @@ "LabelDiscover": "发现", "LabelDownload": "下载", "LabelDownloadNEpisodes": "下载 {0} 集", + "LabelDownloadable": "可下载", "LabelDuration": "持续时间", "LabelDurationComparisonExactMatch": "(完全匹配)", "LabelDurationComparisonLonger": "({0} 更长)", @@ -588,6 +589,7 @@ "LabelSettingsStoreMetadataWithItemHelp": "默认情况下元数据文件存储在/metadata/items文件夹中, 启用此设置将存储元数据在你媒体项目文件夹中", "LabelSettingsTimeFormat": "时间格式", "LabelShare": "分享", + "LabelShareDownloadableHelp": "允许用户通过共享链接的下载库项目为 zip 文件.", "LabelShareOpen": "打开分享", "LabelShareURL": "分享 URL", "LabelShowAll": "全部显示", @@ -756,6 +758,7 @@ "MessageConfirmResetProgress": "你确定要重置进度吗?", "MessageConfirmSendEbookToDevice": "你确定要发送 {0} 电子书 \"{1}\" 到设备 \"{2}\"?", "MessageConfirmUnlinkOpenId": "你确定要取消该用户与 OpenID 的链接吗?", + "MessageDaysListenedInTheLastYear": "去年收听了 {0} 天", "MessageDownloadingEpisode": "正在下载剧集", "MessageDragFilesIntoTrackOrder": "将文件拖动到正确的音轨顺序", "MessageEmbedFailed": "嵌入失败!", @@ -834,6 +837,7 @@ "MessageResetChaptersConfirm": "你确定要重置章节并撤消你所做的更改吗?", "MessageRestoreBackupConfirm": "你确定要恢复创建的这个备份", "MessageRestoreBackupWarning": "恢复备份将覆盖位于 /config 的整个数据库并覆盖 /metadata/items & /metadata/authors 中的图像.

备份不会修改媒体库文件夹中的任何文件. 如果你已启用服务器设置将封面和元数据存储在库文件夹中,则不会备份或覆盖这些内容.

将自动刷新使用服务器的所有客户端.", + "MessageScheduleLibraryScanNote": "对于大多数用户, 建议禁用此功能并保持文件夹监视程序设置启用. 文件夹监视程序将自动检测库文件夹中的更改. 文件夹监视程序不适用于每个文件系统 (如 NFS), 因此可以使用计划库扫描.", "MessageSearchResultsFor": "搜索结果", "MessageSelected": "{0} 已选择", "MessageServerCouldNotBeReached": "无法访问服务器", @@ -961,6 +965,7 @@ "ToastCollectionRemoveSuccess": "收藏夹已删除", "ToastCollectionUpdateSuccess": "收藏夹已更新", "ToastCoverUpdateFailed": "封面更新失败", + "ToastDateTimeInvalidOrIncomplete": "日期和时间无效或不完整", "ToastDeleteFileFailed": "删除文件失败", "ToastDeleteFileSuccess": "文件已删除", "ToastDeviceAddFailed": "添加设备失败", @@ -1013,6 +1018,7 @@ "ToastNewUserTagError": "必须至少选择一个标签", "ToastNewUserUsernameError": "输入用户名", "ToastNoNewEpisodesFound": "没有找到新剧集", + "ToastNoRSSFeed": "播客没有 RSS 订阅", "ToastNoUpdatesNecessary": "无需更新", "ToastNotificationCreateFailed": "无法创建通知", "ToastNotificationDeleteFailed": "删除通知失败", From 56cba441547984b647dfaf6769f4aea6dac5c35d Mon Sep 17 00:00:00 2001 From: thehijacker Date: Sun, 12 Jan 2025 07:56:35 +0000 Subject: [PATCH 11/62] Translated using Weblate (Slovenian) Currently translated at 100.0% (1083 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sl/ --- client/strings/sl.json | 1 + 1 file changed, 1 insertion(+) diff --git a/client/strings/sl.json b/client/strings/sl.json index ece4570b..77152bbe 100644 --- a/client/strings/sl.json +++ b/client/strings/sl.json @@ -1018,6 +1018,7 @@ "ToastNewUserTagError": "Izbrati morate vsaj eno oznako", "ToastNewUserUsernameError": "Vnesite uporabniško ime", "ToastNoNewEpisodesFound": "Ni novih epizod", + "ToastNoRSSFeed": "Podcast nima RSS vira", "ToastNoUpdatesNecessary": "Posodobitve niso potrebne", "ToastNotificationCreateFailed": "Obvestila ni bilo mogoče ustvariti", "ToastNotificationDeleteFailed": "Brisanje obvestila ni uspelo", From 24705ca06a23de9305f162d8df317cd02be4bcfa Mon Sep 17 00:00:00 2001 From: Rasmus Enevoldsen Date: Mon, 13 Jan 2025 21:47:44 +0000 Subject: [PATCH 12/62] Translated using Weblate (Danish) Currently translated at 68.3% (740 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/da/ --- client/strings/da.json | 58 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/client/strings/da.json b/client/strings/da.json index d9c510af..20fa1af6 100644 --- a/client/strings/da.json +++ b/client/strings/da.json @@ -37,6 +37,8 @@ "ButtonHide": "Skjul", "ButtonHome": "Hjem", "ButtonIssues": "Problemer", + "ButtonJumpBackward": "Hop Tilbage", + "ButtonJumpForward": "Hop Fremad", "ButtonLatest": "Seneste", "ButtonLibrary": "Bibliotek", "ButtonLogout": "Log ud", @@ -46,20 +48,30 @@ "ButtonMatchAllAuthors": "Match alle forfattere", "ButtonMatchBooks": "Match bøger", "ButtonNevermind": "Glem det", + "ButtonNext": "Næste", + "ButtonNextChapter": "Næste Kapitel", + "ButtonNextItemInQueue": "Næste Element i Køen", "ButtonOk": "OK", "ButtonOpenFeed": "Åbn feed", "ButtonOpenManager": "Åbn manager", "ButtonPause": "Pause", "ButtonPlay": "Afspil", + "ButtonPlayAll": "Afspil Alle", "ButtonPlaying": "Afspiller", "ButtonPlaylists": "Afspilningslister", + "ButtonPrevious": "Sidste", + "ButtonPreviousChapter": "Sidste Kapitel", + "ButtonProbeAudioFile": "Undersøg Lydfil", "ButtonPurgeAllCache": "Ryd al cache", "ButtonPurgeItemsCache": "Ryd elementcache", "ButtonQueueAddItem": "Tilføj til kø", "ButtonQueueRemoveItem": "Fjern fra kø", + "ButtonQuickEmbed": "Hurtig Indlejring", + "ButtonQuickEmbedMetadata": "Hurtig Indlejring af Metadata", "ButtonQuickMatch": "Hurtig Match", "ButtonReScan": "Gen-scan", "ButtonRead": "Læs", + "ButtonRefresh": "Genindlæs", "ButtonRemove": "Fjern", "ButtonRemoveAll": "Fjern Alle", "ButtonRemoveAllLibraryItems": "Fjern Alle Bibliotekselementer", @@ -67,31 +79,46 @@ "ButtonRemoveFromContinueReading": "Fjern fra Fortsæt Læsning", "ButtonRemoveSeriesFromContinueSeries": "Fjern Serie fra Fortsæt Serie", "ButtonReset": "Nulstil", + "ButtonResetToDefault": "Nulstil til standard", "ButtonRestore": "Gendan", "ButtonSave": "Gem", "ButtonSaveAndClose": "Gem & Luk", "ButtonSaveTracklist": "Gem Sporliste", + "ButtonScan": "Scan", "ButtonScanLibrary": "Scan Bibliotek", + "ButtonScrollLeft": "Rul til Venstre", + "ButtonScrollRight": "Rul til Højre", "ButtonSearch": "Søg", "ButtonSelectFolderPath": "Vælg Mappen Sti", "ButtonSeries": "Serier", "ButtonSetChaptersFromTracks": "Sæt kapitler fra spor", + "ButtonShare": "Del", "ButtonShiftTimes": "Skift Tider", "ButtonShow": "Vis", "ButtonStartM4BEncode": "Start M4B Kode", "ButtonStartMetadataEmbed": "Start Metadata Indlejring", + "ButtonStats": "Statistik", "ButtonSubmit": "Send", + "ButtonTest": "Test", + "ButtonUnlinkOpenId": "Afkobl OpenID", + "ButtonUpload": "Upload", + "ButtonUploadBackup": "Upload Backup", "ButtonUploadCover": "Upload Omslag", "ButtonUploadOPMLFile": "Upload OPML Fil", "ButtonUserDelete": "Slet bruger {0}", "ButtonUserEdit": "Rediger bruger {0}", "ButtonViewAll": "Vis Alle", "ButtonYes": "Ja", + "ErrorUploadFetchMetadataAPI": "Fejl henter metadata", + "ErrorUploadFetchMetadataNoResults": "Kunne ikke hente metadata - prøv at uploade title og/eller forfatter", + "ErrorUploadLacksTitle": "Skal have en title", "HeaderAccount": "Konto", + "HeaderAddCustomMetadataProvider": "Tilføj Brugerdefineret Metadataudbyder", "HeaderAdvanced": "Avanceret", "HeaderAppriseNotificationSettings": "Apprise Notifikationsindstillinger", "HeaderAudioTracks": "Lydspor", "HeaderAudiobookTools": "Audiobog Filhåndteringsværktøjer", + "HeaderAuthentication": "Autentificering", "HeaderBackups": "Sikkerhedskopier", "HeaderChangePassword": "Skift Adgangskode", "HeaderChapters": "Kapitler", @@ -100,9 +127,12 @@ "HeaderCollectionItems": "Samlingselementer", "HeaderCover": "Omslag", "HeaderCurrentDownloads": "Nuværende Downloads", + "HeaderCustomMessageOnLogin": "Brugerdefineret Besked ved Login", + "HeaderCustomMetadataProviders": "Brugerdefineret Metadataudbyder", "HeaderDetails": "Detaljer", "HeaderDownloadQueue": "Download Kø", "HeaderEbookFiles": "E-bogsfiler", + "HeaderEmail": "Email", "HeaderEmailSettings": "Email Indstillinger", "HeaderEpisodes": "Episoder", "HeaderEreaderDevices": "E-læser Enheder", @@ -120,33 +150,47 @@ "HeaderListeningSessions": "Lyttesessioner", "HeaderListeningStats": "Lyttestatistik", "HeaderLogin": "Log ind", + "HeaderLogs": "Logs", "HeaderManageGenres": "Administrer Genrer", "HeaderManageTags": "Administrer Tags", "HeaderMapDetails": "Kort Detaljer", + "HeaderMatch": "Match", + "HeaderMetadataOrderOfPrecedence": "Metadata-prioritet", "HeaderMetadataToEmbed": "Metadata til indlejring", "HeaderNewAccount": "Ny Konto", "HeaderNewLibrary": "Nyt Bibliotek", + "HeaderNotificationCreate": "Opret Notifikation", + "HeaderNotificationUpdate": "Updater Notifikation", "HeaderNotifications": "Meddelelser", + "HeaderOpenIDConnectAuthentication": "OpenID Connect-autentificering", + "HeaderOpenListeningSessions": "Åbne lyttesessioner", "HeaderOpenRSSFeed": "Åbn RSS Feed", "HeaderOtherFiles": "Andre Filer", + "HeaderPasswordAuthentication": "Adgangskodeautentificering", "HeaderPermissions": "Tilladelser", "HeaderPlayerQueue": "Afspilningskø", + "HeaderPlayerSettings": "Afspiller Indstillinger", "HeaderPlaylist": "Afspilningsliste", "HeaderPlaylistItems": "Afspilningsliste Elementer", "HeaderPodcastsToAdd": "Podcasts til Tilføjelse", "HeaderPreviewCover": "Forhåndsvis Omslag", "HeaderRSSFeedGeneral": "RSS Detaljer", "HeaderRSSFeedIsOpen": "RSS Feed er Åben", + "HeaderRSSFeeds": "RSS-Feeds", "HeaderRemoveEpisode": "Fjern Episode", "HeaderRemoveEpisodes": "Fjern {0} Episoder", "HeaderSavedMediaProgress": "Gemt Medieforløb", "HeaderSchedule": "Planlæg", + "HeaderScheduleEpisodeDownloads": "Planlæg Automatisk Episode-Download", "HeaderScheduleLibraryScans": "Planlæg Automatiske Biblioteksscanninger", + "HeaderSession": "Session", "HeaderSetBackupSchedule": "Indstil Sikkerhedskopieringsplan", "HeaderSettings": "Indstillinger", "HeaderSettingsDisplay": "Skærm", "HeaderSettingsExperimental": "Eksperimentelle Funktioner", "HeaderSettingsGeneral": "Generelt", + "HeaderSettingsScanner": "Scanner", + "HeaderSettingsWebClient": "Webklient", "HeaderSleepTimer": "Søvntimer", "HeaderStatsLargestItems": "Største Elementer", "HeaderStatsLongestItems": "Længste Elementer (timer)", @@ -161,7 +205,12 @@ "HeaderUpdateDetails": "Opdater Detaljer", "HeaderUpdateLibrary": "Opdater Bibliotek", "HeaderUsers": "Brugere", + "HeaderYearReview": "Gennemgang af År {0}", "HeaderYourStats": "Dine Statistikker", + "LabelAbridged": "Forkortet", + "LabelAbridgedChecked": "Forkortet (kontrolleret)", + "LabelAbridgedUnchecked": "Uforkortet (ikke kontrolleret)", + "LabelAccessibleBy": "Tilgængelig af", "LabelAccountType": "Kontotype", "LabelAccountTypeAdmin": "Administrator", "LabelAccountTypeGuest": "Gæst", @@ -172,15 +221,24 @@ "LabelAddToPlaylist": "Tilføj til Afspilningsliste", "LabelAddToPlaylistBatch": "Tilføj {0} Elementer til Afspilningsliste", "LabelAddedAt": "Tilføjet Kl.", + "LabelAdminUsersOnly": "Kun Administratorbrugere", "LabelAll": "Alle", "LabelAllUsers": "Alle Brugere", + "LabelAllUsersExcludingGuests": "Alle bruger eksklusiv gæster", + "LabelAllUsersIncludingGuests": "Alle bruger inklusiv gæster", "LabelAlreadyInYourLibrary": "Allerede i dit bibliotek", + "LabelApiToken": "API Token", "LabelAppend": "Tilføj", + "LabelAudioBitrate": "Lydbitrate (f.eks. 128k)", + "LabelAudioChannels": "Lydkanaler (1 eller 2)", + "LabelAudioCodec": "Lydkodek", "LabelAuthor": "Forfatter", "LabelAuthorFirstLast": "Forfatter (Fornavn Efternavn)", "LabelAuthorLastFirst": "Forfatter (Efternavn, Fornavn)", "LabelAuthors": "Forfattere", "LabelAutoDownloadEpisodes": "Auto Download Episoder", + "LabelAutoFetchMetadata": "Automatisk Hent Metadata", + "LabelAutoFetchMetadataHelp": "Henter metadata for titler, forfatter og serier for at strømligne uploading. Ekstra metadata har måske brug for at blive matchet efter upload.", "LabelBackToUser": "Tilbage til Bruger", "LabelBackupLocation": "Backup Placering", "LabelBackupsEnableAutomaticBackups": "Aktivér automatisk sikkerhedskopiering", From 760af51c5d21e6077e1f3c8858bc5c4bdfae69a3 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Mon, 13 Jan 2025 21:18:06 +0000 Subject: [PATCH 13/62] Translated using Weblate (Croatian) Currently translated at 99.9% (1082 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/hr/ --- client/strings/hr.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/strings/hr.json b/client/strings/hr.json index 524d0d4f..c2f20ae4 100644 --- a/client/strings/hr.json +++ b/client/strings/hr.json @@ -964,6 +964,7 @@ "ToastCollectionRemoveSuccess": "Zbirka izbrisana", "ToastCollectionUpdateSuccess": "Zbirka ažurirana", "ToastCoverUpdateFailed": "Ažuriranje naslovnice nije uspjelo", + "ToastDateTimeInvalidOrIncomplete": "Datum i vrijeme su neispravni ili nepotpuni", "ToastDeleteFileFailed": "Brisanje datoteke nije uspjelo", "ToastDeleteFileSuccess": "Datoteka izbrisana", "ToastDeviceAddFailed": "Dodavanje uređaja nije uspjelo", @@ -1016,6 +1017,7 @@ "ToastNewUserTagError": "Potrebno je odabrati najmanje jednu oznaku", "ToastNewUserUsernameError": "Upišite korisničko ime", "ToastNoNewEpisodesFound": "Nisu pronađeni novi nastavci", + "ToastNoRSSFeed": "Podcast nema RSS izvor", "ToastNoUpdatesNecessary": "Ažuriranja nisu potrebna", "ToastNotificationCreateFailed": "Stvaranje obavijesti nije uspjelo", "ToastNotificationDeleteFailed": "Brisanje obavijesti nije uspjelo", From 1e5e507eb0fd0f86b5a928c20936dd7eddbdfabe Mon Sep 17 00:00:00 2001 From: Rasmus Enevoldsen Date: Tue, 14 Jan 2025 10:12:37 +0000 Subject: [PATCH 14/62] Translated using Weblate (Danish) Currently translated at 68.6% (743 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/da/ --- client/strings/da.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/strings/da.json b/client/strings/da.json index 20fa1af6..b75301d5 100644 --- a/client/strings/da.json +++ b/client/strings/da.json @@ -239,6 +239,8 @@ "LabelAutoDownloadEpisodes": "Auto Download Episoder", "LabelAutoFetchMetadata": "Automatisk Hent Metadata", "LabelAutoFetchMetadataHelp": "Henter metadata for titler, forfatter og serier for at strømligne uploading. Ekstra metadata har måske brug for at blive matchet efter upload.", + "LabelAutoLaunch": "Åben Automatisk", + "LabelAutoLaunchDescription": "Viderestil automatisk til login-udbyderen ved navigation til login-siden (manuel overstyring via /login?autoLaunch=0)", "LabelBackToUser": "Tilbage til Bruger", "LabelBackupLocation": "Backup Placering", "LabelBackupsEnableAutomaticBackups": "Aktivér automatisk sikkerhedskopiering", @@ -248,6 +250,7 @@ "LabelBackupsNumberToKeep": "Antal sikkerhedskopier at beholde", "LabelBackupsNumberToKeepHelp": "Kun 1 sikkerhedskopi fjernes ad gangen, så hvis du allerede har flere sikkerhedskopier end dette, skal du fjerne dem manuelt.", "LabelBooks": "Bøger", + "LabelByAuthor": "af {0}", "LabelChangePassword": "Ændre Adgangskode", "LabelChannels": "Kanaler", "LabelChapterTitle": "Kapitel Titel", From 5897aee3b7b2259474cf1f42471404e70dca3ce0 Mon Sep 17 00:00:00 2001 From: Milo Ivir Date: Tue, 14 Jan 2025 12:57:11 +0000 Subject: [PATCH 15/62] Translated using Weblate (Croatian) Currently translated at 100.0% (1083 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/hr/ --- client/strings/hr.json | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/client/strings/hr.json b/client/strings/hr.json index c2f20ae4..230683f1 100644 --- a/client/strings/hr.json +++ b/client/strings/hr.json @@ -367,7 +367,7 @@ "LabelFull": "Cijeli", "LabelGenre": "Žanr", "LabelGenres": "Žanrovi", - "LabelHardDeleteFile": "Obriši datoteku zauvijek", + "LabelHardDeleteFile": "Izbriši datoteku zauvijek", "LabelHasEbook": "Ima e-knjigu", "LabelHasSupplementaryEbook": "Ima dopunsku e-knjigu", "LabelHideSubtitles": "Skrij podnaslove", @@ -717,15 +717,15 @@ "MessageChapterStartIsAfter": "Početak poglavlja je nakon kraja zvučne knjige", "MessageCheckingCron": "Provjeravam cron...", "MessageConfirmCloseFeed": "Sigurno želite zatvoriti ovaj izvor?", - "MessageConfirmDeleteBackup": "Jeste li sigurni da želite obrisati backup za {0}?", + "MessageConfirmDeleteBackup": "Sigurno želite izbrisati sigurnosnu kopiju za {0}?", "MessageConfirmDeleteDevice": "Sigurno želite izbrisati e-čitač \"{0}\"?", "MessageConfirmDeleteFile": "Ovo će izbrisati datoteke s datotečnog sustava. Jeste li sigurni?", - "MessageConfirmDeleteLibrary": "Sigurno želite trajno obrisati knjižnicu \"{0}\"?", + "MessageConfirmDeleteLibrary": "Sigurno želite trajno izbrisati knjižnicu \"{0}\"?", "MessageConfirmDeleteLibraryItem": "Ovo će izbrisati knjižničku stavku iz datoteke i vašeg datotečnog sustava. Jeste li sigurni?", "MessageConfirmDeleteLibraryItems": "Ovo će izbrisati {0} knjižničkih stavki iz baze podataka i datotečnog sustava. Jeste li sigurni?", "MessageConfirmDeleteMetadataProvider": "Sigurno želite izbrisati prilagođenog pružatelja meta-podataka \"{0}\"?", "MessageConfirmDeleteNotification": "Sigurno želite izbrisati ovu obavijest?", - "MessageConfirmDeleteSession": "Sigurno želite obrisati ovu sesiju?", + "MessageConfirmDeleteSession": "Sigurno želite izbrisati ovu sesiju?", "MessageConfirmEmbedMetadataInAudioFiles": "Sigurno želite ugraditi meta-podatke u {0} zvučnih datoteka?", "MessageConfirmForceReScan": "Sigurno želite ponovno pokrenuti skeniranje?", "MessageConfirmMarkAllEpisodesFinished": "Sigurno želite označiti sve nastavke dovršenima?", @@ -756,7 +756,7 @@ "MessageConfirmRenameTagMergeNote": "Napomena: Ova oznaka već postoji, stoga će biti pripojena.", "MessageConfirmRenameTagWarning": "Pažnja! Slična oznaka s drugačijim velikim i malim slovima već postoji \"{0}\".", "MessageConfirmResetProgress": "Sigurno želite resetirati napredak?", - "MessageConfirmSendEbookToDevice": "Sigurno želite poslati {0} e-knjiga/u \"{1}\" na uređaj \"{2}\"?", + "MessageConfirmSendEbookToDevice": "Sigurno želite poslati {0} e-knjigu \"{1}\" na uređaj \"{2}\"?", "MessageConfirmUnlinkOpenId": "Sigurno želite odspojiti ovog korisnika s OpenID-ja?", "MessageDaysListenedInTheLastYear": "{0} dana slušanja u posljednjih godinu dana", "MessageDownloadingEpisode": "Preuzimam nastavak", @@ -832,11 +832,12 @@ "MessageRemoveChapter": "Ukloni poglavlje", "MessageRemoveEpisodes": "Ukloni {0} nastavaka", "MessageRemoveFromPlayerQueue": "Ukloni iz redoslijeda izvođenja", - "MessageRemoveUserWarning": "Sigurno želite trajno obrisati korisnika \"{0}\"?", + "MessageRemoveUserWarning": "Sigurno želite trajno izbrisati korisnika \"{0}\"?", "MessageReportBugsAndContribute": "Prijavite pogreške, zatražite funkcionalnosti i doprinesite na", "MessageResetChaptersConfirm": "Sigurno želite vratiti poglavlja na prethodno stanje i poništiti učinjene promjene?", "MessageRestoreBackupConfirm": "Sigurno želite vratiti sigurnosnu kopiju izrađenu", "MessageRestoreBackupWarning": "Vraćanjem sigurnosne kopije prepisat ćete cijelu bazu podataka koja se nalazi u /config i slike naslovnice u /metadata/items i /metadata/authors.

Sigurnosne kopije ne mijenjaju datoteke koje se nalaze u mapama vaših knjižnica. Ako ste u postavkama poslužitelja uključili mogućnost spremanja naslovnica i meta-podataka u mape knjižnice, te se datoteke neće niti sigurnosno pohraniti niti prepisati.

Svi klijenti koji se spajaju na vaš poslužitelj automatski će se osvježiti.", + "MessageScheduleLibraryScanNote": "Za većinu korisnika se preporučuje ostaviti ovu funkciju deaktiviranom i ostaviti postavku promatrača mape aktiviranom. Promatrač mapa će automatski otkriti promjene u mapama vaše knjižnice. Promatrač mapa ne radi na svakom datotečnom sustavu (kao što je NFS) pa se umjesto njega mogu koristiti planirana pretraživanja knjižnice.", "MessageSearchResultsFor": "Rezultati pretrage za", "MessageSelected": "{0} odabrano", "MessageServerCouldNotBeReached": "Nije moguće pristupiti poslužitelju", @@ -912,7 +913,7 @@ "StatsBooksFinished": "knjiga dovršeno", "StatsBooksFinishedThisYear": "Neke knjige dovršene ove godine…", "StatsBooksListenedTo": "knjiga slušano", - "StatsCollectionGrewTo": "Vaša zbirka knjiga narasla je na…", + "StatsCollectionGrewTo": "Vaša je zbirka knjiga narasla na…", "StatsSessions": "sesija", "StatsSpentListening": "provedeno u slušanju", "StatsTopAuthor": "NAJPOPULARNIJI AUTOR", @@ -935,7 +936,7 @@ "ToastAuthorUpdateSuccess": "Autor ažuriran", "ToastAuthorUpdateSuccessNoImageFound": "Autor ažuriran (slika nije pronađena)", "ToastBackupAppliedSuccess": "Sigurnosna kopija vraćena", - "ToastBackupCreateFailed": "Neuspješno kreiranje backupa", + "ToastBackupCreateFailed": "Izrada sigurnosne kopije nije uspjela", "ToastBackupCreateSuccess": "Izrađena sigurnosna kopija", "ToastBackupDeleteFailed": "Brisanje sigurnosne kopije nije uspjelo", "ToastBackupDeleteSuccess": "Sigurnosna kopija izbrisana", @@ -945,7 +946,7 @@ "ToastBackupUploadFailed": "Učitavanje sigurnosne kopije nije uspjelo", "ToastBackupUploadSuccess": "Sigurnosna kopija učitana", "ToastBatchDeleteFailed": "Grupno brisanje nije uspjelo", - "ToastBatchDeleteSuccess": "Grupno brisanje je uspješno dovršeno", + "ToastBatchDeleteSuccess": "Grupno brisanje je uspjelo", "ToastBatchQuickMatchFailed": "Grupno brzo prepoznavanje nije uspjelo!", "ToastBatchQuickMatchStarted": "Započelo je brzo prepoznavanje {0} knjiga!", "ToastBatchUpdateFailed": "Skupno ažuriranje nije uspjelo", @@ -1044,7 +1045,7 @@ "ToastRSSFeedCloseFailed": "RSS izvor nije uspješno zatvoren", "ToastRSSFeedCloseSuccess": "RSS izvor zatvoren", "ToastRemoveFailed": "Uklanjanje nije uspjelo", - "ToastRemoveItemFromCollectionFailed": "Neuspješno uklanjanje stavke iz zbirke", + "ToastRemoveItemFromCollectionFailed": "Uklanjanje stavke iz zbirke nije uspjelo", "ToastRemoveItemFromCollectionSuccess": "Stavka uklonjena iz zbirke", "ToastRemoveItemsWithIssuesFailed": "Uklanjanje knjižničkih stavki s problemima nije uspjelo", "ToastRemoveItemsWithIssuesSuccess": "Uspješno uklonjene knjižničke stavke s problemima", @@ -1061,8 +1062,8 @@ "ToastSeriesUpdateSuccess": "Serijal uspješno ažuriran", "ToastServerSettingsUpdateSuccess": "Postavke poslužitelja ažurirane", "ToastSessionCloseFailed": "Zatvaranje sesije nije uspjelo", - "ToastSessionDeleteFailed": "Neuspješno brisanje serije", - "ToastSessionDeleteSuccess": "Sesija obrisana", + "ToastSessionDeleteFailed": "Brisanje sesije nije uspjelo", + "ToastSessionDeleteSuccess": "Sesija izbrisana", "ToastSleepTimerDone": "Timer za spavanje istječe... zZzzZz", "ToastSlugMustChange": "Slug sadrži nedozvoljene znakove", "ToastSlugRequired": "Slug je obavezan", @@ -1075,8 +1076,8 @@ "ToastUnknownError": "Nepoznata pogreška", "ToastUnlinkOpenIdFailed": "Uklanjanje OpenID veze korisnika nije uspjelo", "ToastUnlinkOpenIdSuccess": "Korisnik odspojen od OpenID-ja", - "ToastUserDeleteFailed": "Neuspješno brisanje korisnika", - "ToastUserDeleteSuccess": "Korisnik obrisan", + "ToastUserDeleteFailed": "Brisanje korisnika nije uspjelo", + "ToastUserDeleteSuccess": "Korisnik izbrisan", "ToastUserPasswordChangeSuccess": "Zaporka je uspješno promijenjena", "ToastUserPasswordMismatch": "Zaporke se ne podudaraju", "ToastUserPasswordMustChange": "Nova zaporka ne smije biti jednaka staroj", From 804b446dae1c582569bd8e7be0a4b80bd1184b30 Mon Sep 17 00:00:00 2001 From: ugyes Date: Tue, 14 Jan 2025 18:34:50 +0000 Subject: [PATCH 16/62] Translated using Weblate (Hungarian) Currently translated at 97.8% (1060 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/hu/ --- client/strings/hu.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/strings/hu.json b/client/strings/hu.json index 6bf908a3..fb5e8e97 100644 --- a/client/strings/hu.json +++ b/client/strings/hu.json @@ -837,6 +837,7 @@ "MessageResetChaptersConfirm": "Biztosan alaphelyzetbe szeretné állítani a fejezeteket és visszavonni a módosításokat?", "MessageRestoreBackupConfirm": "Biztosan vissza szeretné állítani a biztonsági másolatot, amely ekkor készült:", "MessageRestoreBackupWarning": "A biztonsági mentés visszaállítása felülírja az egész adatbázist, amely a /config mappában található, valamint a borítóképeket a /metadata/items és /metadata/authors mappákban.

A biztonsági mentések nem módosítják a könyvtár mappáiban található fájlokat. Ha engedélyezte a szerverbeállításokat a borítóképek és a metaadatok könyvtármappákban való tárolására, akkor ezek nem kerülnek biztonsági mentésre vagy felülírásra.

A szerver használó összes kliens automatikusan frissül.", + "MessageScheduleLibraryScanNote": "A legtöbb felhasználó számára ajánlott ezt a funkciót kikapcsolva hagyni, és engedélyezni a mappafigyelő beállítást. A mappafigyelő automatikusan észleli a könyvtári mappák változásait. A mappafigyelő nem működik minden fájlrendszernél (mint például az NFS), ezért helyette ütemezett könyvtárellenőrzéseket lehet használni.", "MessageSearchResultsFor": "Keresési eredmények", "MessageSelected": "{0} kiválasztva", "MessageServerCouldNotBeReached": "A szervert nem lehet elérni", @@ -959,6 +960,7 @@ "ToastCollectionRemoveSuccess": "Gyűjtemény eltávolítva", "ToastCollectionUpdateSuccess": "Gyűjtemény frissítve", "ToastCoverUpdateFailed": "A borító frissítése nem sikerült", + "ToastDateTimeInvalidOrIncomplete": "A dátum és az időpont érvénytelen vagy hiányos", "ToastDeleteFileFailed": "Nem sikerült törölni a fájlt", "ToastDeleteFileSuccess": "Fájl törölve", "ToastDeviceAddFailed": "Nem sikerült eszközt hozzáadni", @@ -1009,6 +1011,7 @@ "ToastNewUserTagError": "Legalább egy címkét ki kell választania", "ToastNewUserUsernameError": "Adjon meg egy felhasználónevet", "ToastNoNewEpisodesFound": "Nincs új epizód", + "ToastNoRSSFeed": "A podcastnak nincs RSS hírcsatornája", "ToastNoUpdatesNecessary": "Nincs szükség frissítésre", "ToastNotificationCreateFailed": "Értesítés létrehozása sikertelen", "ToastNotificationDeleteFailed": "Értesítés törlése sikertelen", From be5dc6d2ec35d6babc2c2cdb1cd45e137755b647 Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Tue, 14 Jan 2025 09:53:36 +0000 Subject: [PATCH 17/62] Translated using Weblate (Swedish) Currently translated at 73.7% (799 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 97 +++++++++++++++++++++++++----------------- 1 file changed, 58 insertions(+), 39 deletions(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index 38e6c138..6bffa6e2 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -72,7 +72,7 @@ "ButtonRefresh": "Uppdatera", "ButtonRemove": "Ta bort", "ButtonRemoveAll": "Ta bort alla", - "ButtonRemoveAllLibraryItems": "Ta bort alla biblioteksobjekt", + "ButtonRemoveAllLibraryItems": "Ta bort alla objekt i biblioteket", "ButtonRemoveFromContinueListening": "Radera från 'Fortsätt läsa/lyssna'", "ButtonRemoveFromContinueReading": "Ta bort från Fortsätt läsa", "ButtonRemoveSeriesFromContinueSeries": "Radera från 'Fortsätt med serie'", @@ -94,7 +94,7 @@ "ButtonStartM4BEncode": "Starta M4B-kodning", "ButtonStartMetadataEmbed": "Starta inbäddning av metadata", "ButtonStats": "Statistik", - "ButtonSubmit": "Skicka", + "ButtonSubmit": "Spara", "ButtonTest": "Testa", "ButtonUpload": "Ladda upp", "ButtonUploadBackup": "Ladda upp säkerhetskopia", @@ -121,8 +121,8 @@ "HeaderDetails": "Detaljer", "HeaderDownloadQueue": "Nedladdningskö", "HeaderEbookFiles": "E-boksfiler", - "HeaderEmail": "E-post", - "HeaderEmailSettings": "E-postinställningar", + "HeaderEmail": "E-postadress", + "HeaderEmailSettings": "Inställningar för e-post", "HeaderEpisodes": "Avsnitt", "HeaderEreaderDevices": "E-boksläsarenheter", "HeaderEreaderSettings": "E-boksinställningar", @@ -134,9 +134,9 @@ "HeaderLastListeningSession": "Senaste lyssningssession", "HeaderLatestEpisodes": "Senaste avsnitt", "HeaderLibraries": "Bibliotek", - "HeaderLibraryFiles": "Biblioteksfiler", + "HeaderLibraryFiles": "Filer i biblioteket", "HeaderLibraryStats": "Biblioteksstatistik", - "HeaderListeningSessions": "Lyssningssessioner", + "HeaderListeningSessions": "Lyssningstillfällen", "HeaderListeningStats": "Lyssningsstatistik", "HeaderLogin": "Logga in", "HeaderLogs": "Loggar", @@ -144,7 +144,7 @@ "HeaderManageTags": "Hantera taggar", "HeaderMapDetails": "Karta detaljer", "HeaderMatch": "Matcha", - "HeaderMetadataOrderOfPrecedence": "Metadataordning av företräde", + "HeaderMetadataOrderOfPrecedence": "Prioriteringsordning vid inläsning av metadata", "HeaderMetadataToEmbed": "Metadata att bädda in", "HeaderNewAccount": "Nytt konto", "HeaderNewLibrary": "Nytt bibliotek", @@ -167,7 +167,7 @@ "HeaderSavedMediaProgress": "Sparad medieförlopp", "HeaderSchedule": "Schema", "HeaderScheduleEpisodeDownloads": "Schemalägg automatiska avsnittsnedladdningar", - "HeaderScheduleLibraryScans": "Schemalagda biblioteksskanningar", + "HeaderScheduleLibraryScans": "Schema för skanning av biblioteket", "HeaderSession": "Session", "HeaderSetBackupSchedule": "Ange schemaläggning för säkerhetskopia", "HeaderSettings": "Inställningar", @@ -194,7 +194,7 @@ "HeaderYourStats": "Din statistik", "LabelAbridged": "Förkortad", "LabelAccountType": "Kontotyp", - "LabelAccountTypeAdmin": "Admin", + "LabelAccountTypeAdmin": "Administratör", "LabelAccountTypeGuest": "Gäst", "LabelAccountTypeUser": "Användare", "LabelActivity": "Aktivitet", @@ -222,12 +222,12 @@ "LabelBackToUser": "Tillbaka till användaren", "LabelBackupAudioFiles": "Säkerhetskopiera ljudfiler", "LabelBackupLocation": "Plats för säkerhetskopia", - "LabelBackupsEnableAutomaticBackups": "Aktivera automatiska säkerhetskopior", + "LabelBackupsEnableAutomaticBackups": "Aktivera automatisk säkerhetskopiering", "LabelBackupsEnableAutomaticBackupsHelp": "Säkerhetskopior sparas i \"/metadata/backups\"", "LabelBackupsMaxBackupSize": "Maximal storlek på säkerhetskopia (i GB) (0 = obegränsad)", - "LabelBackupsMaxBackupSizeHelp": "Som ett skydd mot felkonfiguration kommer säkerhetskopior att misslyckas om de överskrider den konfigurerade storleken.", + "LabelBackupsMaxBackupSizeHelp": "Som ett skydd mot en felaktig konfiguration kommer säkerhetskopior inte att genomföras om de överskrider den konfigurerade storleken.", "LabelBackupsNumberToKeep": "Antal säkerhetskopior att behålla", - "LabelBackupsNumberToKeepHelp": "Endast en säkerhetskopia tas bort åt gången, så om du redan har fler säkerhetskopior än detta bör du ta bort dem manuellt.", + "LabelBackupsNumberToKeepHelp": "Endast en gammal säkerhetskopia tas bort åt gången, så om du redan har fler säkerhetskopior än det angivna beloppet bör du ta bort dem manuellt.", "LabelBitrate": "Bitfrekvens", "LabelBonus": "Bonus", "LabelBooks": "Böcker", @@ -252,12 +252,12 @@ "LabelContinueSeries": "Fortsätt med serie", "LabelCover": "Bokomslag", "LabelCoverImageURL": "URL till omslagsbild", - "LabelCreatedAt": "Skapad vid", - "LabelCronExpression": "Cron-uttryck", + "LabelCreatedAt": "Skapad", + "LabelCronExpression": "Schemaläggning med hjälp av Cron (Cron Expression)", "LabelCurrent": "Nuvarande", "LabelCurrently": "För närvarande:", "LabelCustomCronExpression": "Anpassat Cron-uttryck:", - "LabelDatetime": "Datum och tid", + "LabelDatetime": "Datum och klockslag", "LabelDays": "Dagar", "LabelDeleteFromFileSystemCheckbox": "Ta bort från filsystem (avmarkera för att endast ta bort från databasen)", "LabelDescription": "Beskrivning", @@ -278,7 +278,7 @@ "LabelEbook": "E-bok", "LabelEbooks": "Eböcker", "LabelEdit": "Redigera", - "LabelEmail": "E-post", + "LabelEmail": "E-postadress", "LabelEmailSettingsFromAddress": "Från adress", "LabelEmailSettingsRejectUnauthorized": "Avvisa icke-autentiserade certifikat", "LabelEmailSettingsRejectUnauthorizedHelp": "Inaktivering av SSL-certifikatsvalidering kan exponera din anslutning för säkerhetsrisker, såsom man-in-the-middle-attacker. Inaktivera bara denna inställning om du förstår implikationerna och litar på den epostserver du ansluter till.", @@ -299,7 +299,7 @@ "LabelFileBirthtime": "Födelse-tidpunkt för fil", "LabelFileModified": "Fil ändrad", "LabelFilename": "Filnamn", - "LabelFilterByUser": "Filtrera efter användare", + "LabelFilterByUser": "Välj användare", "LabelFindEpisodes": "Hitta avsnitt", "LabelFinished": "Avslutad", "LabelFolder": "Mapp", @@ -321,10 +321,10 @@ "LabelIncludeInTracklist": "Inkludera i spårlista", "LabelIncomplete": "Ofullständig", "LabelInterval": "Intervall", - "LabelIntervalCustomDailyWeekly": "Anpassat dagligt/veckovis", + "LabelIntervalCustomDailyWeekly": "Anpassad daglig/veckovis", "LabelIntervalEvery12Hours": "Var 12:e timme", "LabelIntervalEvery15Minutes": "Var 15:e minut", - "LabelIntervalEvery2Hours": "Var 2:e timme", + "LabelIntervalEvery2Hours": "Varannan timme", "LabelIntervalEvery30Minutes": "Var 30:e minut", "LabelIntervalEvery6Hours": "Var 6:e timme", "LabelIntervalEveryDay": "Varje dag", @@ -335,8 +335,8 @@ "LabelLanguageDefaultServer": "Standardspråk för server", "LabelLastBookAdded": "Senaste bok tillagd", "LabelLastBookUpdated": "Senaste bok uppdaterad", - "LabelLastSeen": "Senast sedd", - "LabelLastTime": "Senaste gången", + "LabelLastSeen": "Senast inloggad", + "LabelLastTime": "Senaste tillfället", "LabelLastUpdate": "Senaste uppdatering", "LabelLayout": "Layout", "LabelLayoutSinglePage": "En sida", @@ -344,20 +344,21 @@ "LabelLess": "Mindre", "LabelLibrariesAccessibleToUser": "Åtkomliga bibliotek för användare", "LabelLibrary": "Bibliotek", - "LabelLibraryItem": "Biblioteksobjekt", + "LabelLibraryItem": "Objekt", "LabelLibraryName": "Biblioteksnamn", "LabelLimit": "Begränsning", "LabelLineSpacing": "Radavstånd", "LabelListenAgain": "Läs/Lyssna igen", - "LabelLogLevelDebug": "Felsökningsnivå: Felsökning", - "LabelLogLevelInfo": "Felsökningsnivå: Information", - "LabelLogLevelWarn": "Felsökningsnivå: Varning", + "LabelLogLevelDebug": "Felsökning", + "LabelLogLevelInfo": "Information", + "LabelLogLevelWarn": "Varningar", "LabelLookForNewEpisodesAfterDate": "Sök efter nya avsnitt efter detta datum", "LabelLowestPriority": "Lägst prioritet", "LabelMediaPlayer": "Mediaspelare", "LabelMediaType": "Mediatyp", "LabelMetaTag": "Metamärke", "LabelMetaTags": "Metamärken", + "LabelMetadataOrderOfPrecedenceDescription": "Källor för metadata med högre prioritet har företräde före källor med lägre prioritet", "LabelMetadataProvider": "Källa för metadata", "LabelMinute": "Minut", "LabelMissing": "Saknad", @@ -370,7 +371,7 @@ "LabelNewPassword": "Nytt lösenord", "LabelNewestAuthors": "Senast adderade författare", "LabelNewestEpisodes": "Senast tillagda avsnitt", - "LabelNextBackupDate": "Nästa datum för säkerhetskopia", + "LabelNextBackupDate": "Nästa datum för säkerhetskopiering", "LabelNextScheduledRun": "Nästa schemalagda körning", "LabelNoEpisodesSelected": "Inga avsnitt valda", "LabelNotFinished": "Ej avslutad", @@ -389,6 +390,7 @@ "LabelNumberOfEpisodes": "Antal avsnitt", "LabelOpenRSSFeed": "Öppna RSS-flöde", "LabelOverwrite": "Skriv över", + "LabelPaginationPageXOfY": "Sida {0} av {1}", "LabelPassword": "Lösenord", "LabelPath": "Sökväg", "LabelPermissionsAccessAllLibraries": "Kan komma åt alla bibliotek", @@ -427,8 +429,13 @@ "LabelRecentlyAdded": "Nyligen tillagd", "LabelRecommended": "Rekommenderad", "LabelReleaseDate": "Utgivningsdatum", + "LabelRemoveAllMetadataAbs": "Radera alla 'metadata.abs' filer", + "LabelRemoveAllMetadataJson": "Radera alla 'metadata.json' filer", "LabelRemoveCover": "Ta bort bokomslag", - "LabelSearchTerm": "Sökterm", + "LabelRemoveMetadataFile": "Radera metadata-filer i alla mappar i biblioteket", + "LabelRemoveMetadataFileHelp": "Radera alla 'metadata.json' och 'metadata.abs' filer i dina {0} mappar.", + "LabelRowsPerPage": "Antal rader per sida", + "LabelSearchTerm": "Sökbegrepp", "LabelSearchTitle": "Sök titel", "LabelSearchTitleOrASIN": "Sök titel eller ASIN-kod", "LabelSeason": "Säsong", @@ -440,6 +447,7 @@ "LabelSeries": "Serier", "LabelSeriesName": "Serienamn", "LabelSeriesProgress": "Serieframsteg", + "LabelServerLogLevel": "Nivå på loggning", "LabelSetEbookAsPrimary": "Ange som primär fil", "LabelSetEbookAsSupplementary": "Ange som kompletterande", "LabelSettingsAllowIframe": "Tillåt att Audiobookshelf får visas i en iframe", @@ -455,6 +463,7 @@ "LabelSettingsEnableWatcherForLibrary": "Aktivera bevakning med Watcher för biblioteket", "LabelSettingsEnableWatcherHelp": "Aktiverar automatik att addera/uppdatera objekt
när ändringar av filer genomförs.
OBS: Kräver en omstart av servern", "LabelSettingsEpubsAllowScriptedContent": "Tillåt e-böcker i epubs-format som innehåller script", + "LabelSettingsEpubsAllowScriptedContentHelp": "Tillåt att epub-filer får använda script.
Det rekommenderas att denna inställning är
avstängd när du inte litar på källan för epub-filerna.", "LabelSettingsExperimentalFeatures": "Experimentella funktioner", "LabelSettingsExperimentalFeaturesHelp": "Funktioner under utveckling som behöver din feedback och hjälp med testning. Klicka för att öppna diskussionen på GitHub.", "LabelSettingsFindCovers": "Hitta ett bokomslag", @@ -479,7 +488,7 @@ "LabelSettingsSquareBookCovers": "Använd kvadratiska bokomslag", "LabelSettingsSquareBookCoversHelp": "Föredrar att använda kvadratiska bokomslag
före standardformatet 1.6:1", "LabelSettingsStoreCoversWithItem": "Lagra bokomslag med objektet", - "LabelSettingsStoreCoversWithItemHelp": "Som standard lagras bokomslag i mappen '/metadata/items'. Genom att aktivera detta alternativ kommer omslagen att lagra i din biblioteksmapp. Endast en fil med namnet 'cover' kommer att behållas", + "LabelSettingsStoreCoversWithItemHelp": "Som standard lagras bokomslag i mappen '/metadata/items'.
Genom att aktivera detta alternativ kommer
omslagen att lagra i din biblioteksmapp.
Endast en fil med namnet 'cover' kommer att behållas", "LabelSettingsStoreMetadataWithItem": "Lagra metadata med objektet", "LabelSettingsStoreMetadataWithItemHelp": "Som standard lagras metadatafiler i mappen '/metadata/items'. Genom att aktivera detta alternativ kommer metadatafilerna att lagra i din biblioteksmapp", "LabelSettingsTimeFormat": "Tidsformat", @@ -489,7 +498,7 @@ "LabelStart": "Starta", "LabelStartTime": "Starttid", "LabelStarted": "Startad", - "LabelStartedAt": "Startad vid", + "LabelStartedAt": "Startades", "LabelStatsAudioTracks": "Ljudspår", "LabelStatsAuthors": "Författare", "LabelStatsBestDay": "Bästa dag", @@ -548,7 +557,7 @@ "LabelUpdateCoverHelp": "Tillåt att befintliga bokomslag för de valda böckerna ersätts när en matchning hittas", "LabelUpdateDetails": "Uppdatera detaljer", "LabelUpdateDetailsHelp": "Tillåt att befintliga detaljer för de valda böckerna ersätts när en matchning hittas", - "LabelUpdatedAt": "Uppdaterad vid", + "LabelUpdatedAt": "Uppdaterades", "LabelUploaderDragAndDrop": "Dra och släpp filer eller mappar", "LabelUploaderDropFiles": "Släpp filer", "LabelUploaderItemFetchMetadataHelp": "Hämtar automatiskt titel, författare och serier.", @@ -562,7 +571,7 @@ "LabelViewChapters": "Visa kapitel", "LabelViewQueue": "Visa spellista", "LabelVolume": "Volym", - "LabelWeekdaysToRun": "Vardagar att köra", + "LabelWeekdaysToRun": "Veckodagar att köra skanning", "LabelYearReviewHide": "Dölj sammanställning för året", "LabelYearReviewShow": "Visa sammanställning för året", "LabelYourAudiobookDuration": "Din ljudboks varaktighet", @@ -571,7 +580,7 @@ "LabelYourProgress": "Din framsteg", "MessageAddToPlayerQueue": "Lägg till i spellistan", "MessageAppriseDescription": "För att använda den här funktionen behöver du ha en instans av Apprise API igång eller en API som hanterar dessa begäranden.
Apprise API-urlen bör vara hela URL-sökvägen för att skicka meddelandet, t.ex., om din API-instans är tillgänglig på http://192.168.1.1:8337, bör du ange http://192.168.1.1:8337/notify.", - "MessageBackupsDescription": "Säkerhetskopieringar inkluderar användare, användares framsteg, biblioteksföremål, serverinställningar och bilder lagrade i /metadata/items & /metadata/authors. Säkerhetskopieringar inkluderar inte några filer lagrade i dina biblioteksmappar.", + "MessageBackupsDescription": "Säkerhetskopior inkluderar användare, användarnas framsteg, biblioteksobjekt, serverinställningar
och bilder lagrade i /metadata/items & /metadata/authors.
De inkluderar INTE några filer lagrade i dina biblioteksmappar.", "MessageBatchQuickMatchDescription": "Quick Match kommer försöka lägga till saknade omslag och metadata för de valda föremålen. Aktivera alternativen nedan för att tillåta Quick Match att överskriva befintliga omslag och/eller metadata.", "MessageBookshelfNoCollections": "Du har ännu inte skapat några samlingar", "MessageBookshelfNoRSSFeeds": "Inga RSS-flöden är öppna", @@ -579,14 +588,14 @@ "MessageBookshelfNoSeries": "Du har inga serier", "MessageChapterEndIsAfter": "Kapitelns slut är efter din ljudboks slut", "MessageChapterErrorFirstNotZero": "Första kapitlet måste börja vid 0", - "MessageChapterErrorStartGteDuration": "Ogiltig starttid måste vara mindre än ljudbokens varaktighet", - "MessageChapterErrorStartLtPrev": "Ogiltig starttid måste vara större än eller lika med tidigare kapitels starttid", + "MessageChapterErrorStartGteDuration": "Ogiltig starttid, måste vara mindre än ljudbokens varaktighet", + "MessageChapterErrorStartLtPrev": "Ogiltig starttid, måste vara större än eller lika med föregående kapitlets starttid", "MessageChapterStartIsAfter": "Kapitlets start är efter din ljudboks slut", "MessageCheckingCron": "Kontrollerar cron...", "MessageConfirmCloseFeed": "Är du säker på att du vill stänga detta flöde?", "MessageConfirmDeleteBackup": "Är du säker på att du vill radera säkerhetskopian för {0}?", "MessageConfirmDeleteFile": "Detta kommer att radera filen från ditt filsystem. Är du säker?", - "MessageConfirmDeleteLibrary": "Är du säker på att du vill radera biblioteket \"{0}\"?", + "MessageConfirmDeleteLibrary": "Är du säker på att du vill radera biblioteket '{0}'?", "MessageConfirmDeleteLibraryItem": "Detta kommer att radera biblioteksföremålet från databasen och ditt filsystem. Är du säker?", "MessageConfirmDeleteLibraryItems": "Detta kommer att radera {0} biblioteksföremål från databasen och ditt filsystem. Är du säker?", "MessageConfirmDeleteSession": "Är du säker på att du vill radera denna session?", @@ -604,6 +613,7 @@ "MessageConfirmRemoveCollection": "Är du säker på att du vill ta bort samlingen \"{0}\"?", "MessageConfirmRemoveEpisode": "Är du säker på att du vill ta bort avsnittet \"{0}\"?", "MessageConfirmRemoveEpisodes": "Är du säker på att du vill ta bort {0} avsnitt?", + "MessageConfirmRemoveMetadataFiles": "Är du säker på att du vill radera 'metadata.{0}' filerna i alla mappar i ditt bibliotek?", "MessageConfirmRemoveNarrator": "Är du säker på att du vill ta bort uppläsaren \"{0}\"?", "MessageConfirmRemovePlaylist": "Är du säker på att du vill ta bort din spellista \"{0}\"?", "MessageConfirmRenameGenre": "Är du säker på att du vill byta namn på kategori \"{0}\" till \"{1}\" för alla objekt?", @@ -627,6 +637,7 @@ "MessageJoinUsOn": "Anslut dig till oss på", "MessageLoading": "Laddar...", "MessageLoadingFolders": "Laddar mappar...", + "MessageLogsDescription": "Filer med loggar sparas i mappen /metadata/logs som JSON-filer.
Filer med information om krascher sparas i /metadata/logs/crash_logs.txt.", "MessageM4BFailed": "M4B misslyckades!", "MessageM4BFinished": "M4B klar!", "MessageMapChapterTitles": "Kartlägg kapitelrubriker till dina befintliga ljudbokskapitel utan att justera tidstämplar", @@ -690,11 +701,11 @@ "MessageUploading": "Laddar upp...", "MessageValidCronExpression": "Giltigt cron-uttryck", "MessageWatcherIsDisabledGlobally": "Watcher är inaktiverad centralt under rubriken 'Inställningar'", - "MessageXLibraryIsEmpty": "{0} biblioteket är tomt!", + "MessageXLibraryIsEmpty": "Biblioteket {0} är tomt!", "MessageYourAudiobookDurationIsLonger": "Varaktigheten på din ljudbok är längre än den hittade varaktigheten", "MessageYourAudiobookDurationIsShorter": "Varaktigheten på din ljudbok är kortare än den hittade varaktigheten", "NoteChangeRootPassword": "Rotanvändaren är den enda användaren som kan ha ett tomt lösenord", - "NoteChapterEditorTimes": "Obs: Starttiden för första kapitlet måste förbli 0:00 och starttiden för det sista kapitlet får inte överstiga ljudbokens varaktighet.", + "NoteChapterEditorTimes": "OBS: Starttiden för första kapitlet måste vara 0:00 och starttiden för det sista kapitlet får inte överstiga ljudbokens totala varaktighet.", "NoteFolderPicker": "Obs: Mappar som redan är kartlagda kommer inte att visas", "NoteRSSFeedPodcastAppsHttps": "Varning: De flesta podcastappar kräver att RSS-flödets URL används med HTTPS", "NoteRSSFeedPodcastAppsPubDate": "Varning: 1 eller flera av dina avsnitt har inte ett publiceringsdatum. Vissa podcastappar kräver detta.", @@ -745,6 +756,10 @@ "ToastCollectionRemoveSuccess": "Samlingen har raderats", "ToastCollectionUpdateSuccess": "Samlingen har uppdaterats", "ToastCoverUpdateFailed": "Uppdatering av bokomslag misslyckades", + "ToastDateTimeInvalidOrIncomplete": "Datum och klockslag är felaktigt eller ej komplett", + "ToastInvalidImageUrl": "Felaktig URL-adress till omslagsbilden", + "ToastInvalidMaxEpisodesToDownload": "Ogiltigt maximalt antal avsnitt att ladda ner", + "ToastInvalidUrl": "Felaktig URL-adress", "ToastItemCoverUpdateSuccess": "Objektets bokomslag har uppdaterats", "ToastItemDetailsUpdateSuccess": "Objektdetaljer uppdaterade", "ToastItemMarkedAsFinishedFailed": "Misslyckades med att markera som färdig", @@ -752,12 +767,16 @@ "ToastItemMarkedAsNotFinishedFailed": "Misslyckades med att markera som ej färdig", "ToastItemMarkedAsNotFinishedSuccess": "Objekt markerat som ej färdig", "ToastLibraryCreateFailed": "Det gick inte att skapa biblioteket", - "ToastLibraryCreateSuccess": "Biblioteket \"{0}\" skapat", + "ToastLibraryCreateSuccess": "Biblioteket \"{0}\" har skapats", "ToastLibraryDeleteFailed": "Det gick inte att ta bort biblioteket", "ToastLibraryDeleteSuccess": "Biblioteket borttaget", "ToastLibraryScanFailedToStart": "Misslyckades med att starta skanningen", "ToastLibraryScanStarted": "Skanning av biblioteket påbörjad", - "ToastLibraryUpdateSuccess": "Biblioteket \"{0}\" uppdaterat", + "ToastLibraryUpdateSuccess": "Biblioteket \"{0}\" har uppdaterats", + "ToastMetadataFilesRemovedError": "Misslyckades med att radera 'metadata.{0}' filerna", + "ToastMetadataFilesRemovedNoneFound": "Inga 'metadata.{0}' filer hittades i biblioteket", + "ToastMetadataFilesRemovedNoneRemoved": "Inga 'metadata.{0}' filer raderades", + "ToastMetadataFilesRemovedSuccess": "{0} 'metadata.{1}' raderades", "ToastPlaylistCreateFailed": "Det gick inte att skapa spellistan", "ToastPlaylistCreateSuccess": "Spellistan skapad", "ToastPlaylistRemoveSuccess": "Spellistan borttagen", From 222ce6ca003a6f2e6ac1fb96b7540fad846b2179 Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Wed, 15 Jan 2025 07:25:35 +0000 Subject: [PATCH 18/62] Translated using Weblate (Swedish) Currently translated at 74.5% (807 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 42 +++++++++++++++++++++++++----------------- 1 file changed, 25 insertions(+), 17 deletions(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index 6bffa6e2..9daeb601 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -108,7 +108,7 @@ "HeaderAdvanced": "Avancerad", "HeaderAppriseNotificationSettings": "Apprise Meddelandeinställningar", "HeaderAudioTracks": "Ljudspår", - "HeaderAudiobookTools": "Ljudbokshantering", + "HeaderAudiobookTools": "Hantering av ljudboksfil", "HeaderAuthentication": "Autentisering", "HeaderBackups": "Säkerhetskopior", "HeaderChangePassword": "Ändra lösenord", @@ -305,18 +305,20 @@ "LabelFolder": "Mapp", "LabelFolders": "Mappar", "LabelFontBoldness": "Fetstil", - "LabelFontFamily": "Teckensnittsfamilj", - "LabelFontScale": "Teckensnittsskala", + "LabelFontFamily": "Typsnittsfamilj", + "LabelFontScale": "Skala på typsnitt", "LabelGenre": "Kategori", "LabelGenres": "Kategorier", "LabelHardDeleteFile": "Hård radering av fil", "LabelHasEbook": "Har E-bok", "LabelHasSupplementaryEbook": "Har komplimenterande E-bok", + "LabelHideSubtitles": "Dölj underrubriker", "LabelHighestPriority": "Högst prioritet", "LabelHost": "Värd", "LabelHour": "Timme", + "LabelHours": "Timmar", "LabelIcon": "Ikon", - "LabelImageURLFromTheWeb": "Bild-URL från webben", + "LabelImageURLFromTheWeb": "Skriv URL-adressen till bilden på webben", "LabelInProgress": "Pågående", "LabelIncludeInTracklist": "Inkludera i spårlista", "LabelIncomplete": "Ofullständig", @@ -340,7 +342,7 @@ "LabelLastUpdate": "Senaste uppdatering", "LabelLayout": "Layout", "LabelLayoutSinglePage": "En sida", - "LabelLayoutSplitPage": "Dela sida", + "LabelLayoutSplitPage": "Uppslag", "LabelLess": "Mindre", "LabelLibrariesAccessibleToUser": "Åtkomliga bibliotek för användare", "LabelLibrary": "Bibliotek", @@ -436,7 +438,7 @@ "LabelRemoveMetadataFileHelp": "Radera alla 'metadata.json' och 'metadata.abs' filer i dina {0} mappar.", "LabelRowsPerPage": "Antal rader per sida", "LabelSearchTerm": "Sökbegrepp", - "LabelSearchTitle": "Sök titel", + "LabelSearchTitle": "Titel", "LabelSearchTitleOrASIN": "Sök titel eller ASIN-kod", "LabelSeason": "Säsong", "LabelSelectAllEpisodes": "Välj alla avsnitt", @@ -493,6 +495,7 @@ "LabelSettingsStoreMetadataWithItemHelp": "Som standard lagras metadatafiler i mappen '/metadata/items'. Genom att aktivera detta alternativ kommer metadatafilerna att lagra i din biblioteksmapp", "LabelSettingsTimeFormat": "Tidsformat", "LabelShowAll": "Visa alla", + "LabelShowSubtitles": "Visa underrubriker", "LabelSize": "Storlek", "LabelSleepTimer": "Sleeptimer", "LabelStart": "Starta", @@ -521,7 +524,7 @@ "LabelTagsAccessibleToUser": "Taggar tillgängliga för användaren", "LabelTagsNotAccessibleToUser": "Taggar inte tillgängliga för användaren", "LabelTasks": "Körande uppgifter", - "LabelTheme": "Tema", + "LabelTheme": "Utseende", "LabelThemeDark": "Mörkt", "LabelThemeLight": "Ljust", "LabelTimeBase": "Tidsbas", @@ -577,7 +580,7 @@ "LabelYourAudiobookDuration": "Din ljudboks varaktighet", "LabelYourBookmarks": "Dina bokmärken", "LabelYourPlaylists": "Dina spellistor", - "LabelYourProgress": "Din framsteg", + "LabelYourProgress": "Ditt framsteg", "MessageAddToPlayerQueue": "Lägg till i spellistan", "MessageAppriseDescription": "För att använda den här funktionen behöver du ha en instans av Apprise API igång eller en API som hanterar dessa begäranden.
Apprise API-urlen bör vara hela URL-sökvägen för att skicka meddelandet, t.ex., om din API-instans är tillgänglig på http://192.168.1.1:8337, bör du ange http://192.168.1.1:8337/notify.", "MessageBackupsDescription": "Säkerhetskopior inkluderar användare, användarnas framsteg, biblioteksobjekt, serverinställningar
och bilder lagrade i /metadata/items & /metadata/authors.
De inkluderar INTE några filer lagrade i dina biblioteksmappar.", @@ -596,16 +599,18 @@ "MessageConfirmDeleteBackup": "Är du säker på att du vill radera säkerhetskopian för {0}?", "MessageConfirmDeleteFile": "Detta kommer att radera filen från ditt filsystem. Är du säker?", "MessageConfirmDeleteLibrary": "Är du säker på att du vill radera biblioteket '{0}'?", - "MessageConfirmDeleteLibraryItem": "Detta kommer att radera biblioteksföremålet från databasen och ditt filsystem. Är du säker?", - "MessageConfirmDeleteLibraryItems": "Detta kommer att radera {0} biblioteksföremål från databasen och ditt filsystem. Är du säker?", + "MessageConfirmDeleteLibraryItem": "Detta kommer att radera biblioteksobjektet från databasen och ditt filsystem. Är du säker?", + "MessageConfirmDeleteLibraryItems": "Detta kommer att radera {0} biblioteksobjekt från databasen och ditt filsystem. Är du säker?", "MessageConfirmDeleteSession": "Är du säker på att du vill radera denna session?", "MessageConfirmForceReScan": "Är du säker på att du vill tvinga omgenomsökning?", "MessageConfirmMarkAllEpisodesFinished": "Är du säker på att du vill markera alla avsnitt som avslutade?", - "MessageConfirmMarkAllEpisodesNotFinished": "Är du säker på att du vill markera alla avsnitt som inte avslutade?", + "MessageConfirmMarkAllEpisodesNotFinished": "Är du säker på att du vill markera alla avsnitt som ej avslutade?", + "MessageConfirmMarkItemFinished": "Är du säker på att du vill markera \"{0}\" som avslutad?", + "MessageConfirmMarkItemNotFinished": "Är du säker på att du vill markera \"{0}\" som ej avslutad?", "MessageConfirmMarkSeriesFinished": "Är du säker på att du vill markera alla böcker i denna serie som avslutade?", "MessageConfirmMarkSeriesNotFinished": "Är du säker på att du vill markera alla böcker i denna serie som ej avslutade?", - "MessageConfirmPurgeCache": "När du rensar cashen kommer biblioteket /metadata/cache att raderas.

Är du säker på att du vill radera biblioteket?", - "MessageConfirmPurgeItemsCache": "När du rensar cashen för föremål kommer biblioteket /metadata/cache/items att raderas.

Är du säker på att du vill radera biblioteket?", + "MessageConfirmPurgeCache": "När du rensar cashen kommer katalogen /metadata/cache att raderas.

Är du säker på att du vill radera katalogen?", + "MessageConfirmPurgeItemsCache": "När du rensar cashen för föremål kommer katalogen /metadata/cache/items att raderas.

Är du säker på att du vill radera katalogen?", "MessageConfirmQuickEmbed": "VARNING! Quick embed kommer inte att säkerhetskopiera dina ljudfiler. Se till att du har en säkerhetskopia av dina ljudfiler.

Vill du fortsätta?", "MessageConfirmReScanLibraryItems": "Är du säker på att du vill göra omgenomsökning för {0} objekt?", "MessageConfirmRemoveAllChapters": "Är du säker på att du vill ta bort alla kapitel?", @@ -613,15 +618,17 @@ "MessageConfirmRemoveCollection": "Är du säker på att du vill ta bort samlingen \"{0}\"?", "MessageConfirmRemoveEpisode": "Är du säker på att du vill ta bort avsnittet \"{0}\"?", "MessageConfirmRemoveEpisodes": "Är du säker på att du vill ta bort {0} avsnitt?", + "MessageConfirmRemoveListeningSessions": "Är du säker på att du vill radera {0} lyssningstillfällen?", "MessageConfirmRemoveMetadataFiles": "Är du säker på att du vill radera 'metadata.{0}' filerna i alla mappar i ditt bibliotek?", "MessageConfirmRemoveNarrator": "Är du säker på att du vill ta bort uppläsaren \"{0}\"?", "MessageConfirmRemovePlaylist": "Är du säker på att du vill ta bort din spellista \"{0}\"?", - "MessageConfirmRenameGenre": "Är du säker på att du vill byta namn på kategori \"{0}\" till \"{1}\" för alla objekt?", + "MessageConfirmRenameGenre": "Är du säker på att du vill byta namn på kategorin \"{0}\" till \"{1}\" för alla objekt?", "MessageConfirmRenameGenreMergeNote": "OBS: Den här kategorin finns redan, så de kommer att slås samman.", "MessageConfirmRenameGenreWarning": "Varning! En liknande kategori med annat skrivsätt finns redan \"{0}\".", "MessageConfirmRenameTag": "Är du säker på att du vill byta namn på taggen \"{0}\" till \"{1}\" för alla objekt?", "MessageConfirmRenameTagMergeNote": "OBS: Den här taggen finns redan, så de kommer att slås samman.", "MessageConfirmRenameTagWarning": "VARNING! En liknande tagg med annat skrivsätt finns redan \"{0}\".", + "MessageConfirmResetProgress": "Är du säker på att du vill nollställa ditt framsteg?", "MessageConfirmSendEbookToDevice": "Är du säker på att du vill skicka {0} e-bok \"{1}\" till enheten \"{2}\"?", "MessageDownloadingEpisode": "Laddar ner avsnitt", "MessageDragFilesIntoTrackOrder": "Dra filer till rätt spårordning", @@ -685,10 +692,10 @@ "MessageRemoveChapter": "Ta bort kapitel", "MessageRemoveEpisodes": "Ta bort {0} avsnitt", "MessageRemoveFromPlayerQueue": "Ta bort från spellistan", - "MessageRemoveUserWarning": "Är du säker på att du vill radera användaren \"{0}\" permanent?", + "MessageRemoveUserWarning": "Är du säker på att du vill radera användaren \"{0}\"?", "MessageReportBugsAndContribute": "Rapportera buggar, begär funktioner och bidra på", - "MessageResetChaptersConfirm": "Är du säker på att du vill återställa kapitel och ångra ändringarna du gjort?", - "MessageRestoreBackupConfirm": "Är du säker på att du vill återställa säkerhetskopian som skapades den", + "MessageResetChaptersConfirm": "Är du säker på att du vill återställa alla kapitel och ångra de ändringarna du gjort?", + "MessageRestoreBackupConfirm": "Är du säker på att du vill läsa in säkerhetskopian som skapades den", "MessageRestoreBackupWarning": "Att återställa en säkerhetskopia kommer att skriva över hela databasen som finns i /config och omslagsbilder i /metadata/items & /metadata/authors.

Säkerhetskopior ändrar inte några filer i dina biblioteksmappar. Om du har aktiverat serverinställningar för att lagra omslagskonst och metadata i dina biblioteksmappar säkerhetskopieras eller skrivs de inte över.

Alla klienter som använder din server kommer att uppdateras automatiskt.", "MessageSearchResultsFor": "Sökresultat för", "MessageServerCouldNotBeReached": "Servern kunde inte nås", @@ -777,6 +784,7 @@ "ToastMetadataFilesRemovedNoneFound": "Inga 'metadata.{0}' filer hittades i biblioteket", "ToastMetadataFilesRemovedNoneRemoved": "Inga 'metadata.{0}' filer raderades", "ToastMetadataFilesRemovedSuccess": "{0} 'metadata.{1}' raderades", + "ToastNoUpdatesNecessary": "Inga uppdateringar var nödvändiga", "ToastPlaylistCreateFailed": "Det gick inte att skapa spellistan", "ToastPlaylistCreateSuccess": "Spellistan skapad", "ToastPlaylistRemoveSuccess": "Spellistan borttagen", From d55faabb6d37389929964f9a15279a89539308fa Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Thu, 16 Jan 2025 09:57:17 +0000 Subject: [PATCH 19/62] Translated using Weblate (Swedish) Currently translated at 77.4% (839 of 1083 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 66 +++++++++++++++++++++++++++++++----------- 1 file changed, 49 insertions(+), 17 deletions(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index 9daeb601..187bea02 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -75,7 +75,7 @@ "ButtonRemoveAllLibraryItems": "Ta bort alla objekt i biblioteket", "ButtonRemoveFromContinueListening": "Radera från 'Fortsätt läsa/lyssna'", "ButtonRemoveFromContinueReading": "Ta bort från Fortsätt läsa", - "ButtonRemoveSeriesFromContinueSeries": "Radera från 'Fortsätt med serie'", + "ButtonRemoveSeriesFromContinueSeries": "Radera från 'Fortsätt med serien'", "ButtonReset": "Återställ", "ButtonResetToDefault": "Återställ till standard", "ButtonRestore": "Återställ", @@ -104,7 +104,11 @@ "ButtonUserEdit": "Redigera användare {0}", "ButtonViewAll": "Visa alla", "ButtonYes": "Ja", + "ErrorUploadFetchMetadataAPI": "Fel vid hämtning av metadata", + "ErrorUploadFetchMetadataNoResults": "Metadata kunde inte hämtas - försök att ändra titel och/eller författare", + "ErrorUploadLacksTitle": "En titel måste anges", "HeaderAccount": "Konto", + "HeaderAddCustomMetadataProvider": "Addera egen källa för metadata", "HeaderAdvanced": "Avancerad", "HeaderAppriseNotificationSettings": "Apprise Meddelandeinställningar", "HeaderAudioTracks": "Ljudspår", @@ -118,6 +122,7 @@ "HeaderCollectionItems": "Samlingselement", "HeaderCover": "Bokomslag", "HeaderCurrentDownloads": "Aktuella nedladdningar", + "HeaderCustomMetadataProviders": "Egen källa för metadata", "HeaderDetails": "Detaljer", "HeaderDownloadQueue": "Nedladdningskö", "HeaderEbookFiles": "E-boksfiler", @@ -177,8 +182,8 @@ "HeaderSettingsScanner": "Skanner", "HeaderSettingsWebClient": "Webklient", "HeaderSleepTimer": "Sovtidtagare", - "HeaderStatsLargestItems": "Största objekt", - "HeaderStatsLongestItems": "Längsta objekt (tim)", + "HeaderStatsLargestItems": "Största objekten", + "HeaderStatsLongestItems": "Längsta objekten (timmar)", "HeaderStatsMinutesListeningChart": "Minuters lyssning (senaste 7 dagar)", "HeaderStatsRecentSessions": "Senaste sessioner", "HeaderStatsTop10Authors": "10 populäraste författarna", @@ -202,7 +207,7 @@ "LabelAddToCollectionBatch": "Lägg till {0} böcker i en Samling", "LabelAddToPlaylist": "Lägg till i Spellista", "LabelAddToPlaylistBatch": "Lägg till {0} objekt i Spellistan", - "LabelAddedAt": "Tillagd vid", + "LabelAddedAt": "Datum adderad", "LabelAdminUsersOnly": "Endast administratörer", "LabelAll": "Alla", "LabelAllUsers": "Alla användare", @@ -212,12 +217,12 @@ "LabelApiToken": "API-token", "LabelAppend": "Lägg till", "LabelAuthor": "Författare", - "LabelAuthorFirstLast": "Författare (Förnamn Efternamn)", - "LabelAuthorLastFirst": "Författare (Efternamn, Förnamn)", + "LabelAuthorFirstLast": "Författare (För-, Efternamn)", + "LabelAuthorLastFirst": "Författare (Efter-, Förnamn)", "LabelAuthors": "Författare", "LabelAutoDownloadEpisodes": "Automatisk nedladdning av avsnitt", "LabelAutoFetchMetadata": "Automatisk nedladdning av metadata", - "LabelAutoFetchMetadataHelp": "Hämtar metadata för titel, författare och serier. Kompletterande metadata får adderas efter uppladdningen.", + "LabelAutoFetchMetadataHelp": "Hämtar metadata för titel, författare och serier. Kompletterande metadata kan manuellt adderas efter uppladdningen.", "LabelAutoRegisterDescription": "Skapa automatiskt nya användare efter inloggning", "LabelBackToUser": "Tillbaka till användaren", "LabelBackupAudioFiles": "Säkerhetskopiera ljudfiler", @@ -249,7 +254,7 @@ "LabelConfirmPassword": "Bekräfta lösenord", "LabelContinueListening": "Fortsätt läsa/lyssna", "LabelContinueReading": "Fortsätt Läsa", - "LabelContinueSeries": "Fortsätt med serie", + "LabelContinueSeries": "Fortsätt med serien", "LabelCover": "Bokomslag", "LabelCoverImageURL": "URL till omslagsbild", "LabelCreatedAt": "Skapad", @@ -295,6 +300,7 @@ "LabelEpisodeType": "Avsnittstyp", "LabelExample": "Exempel", "LabelFeedURL": "Flödes-URL", + "LabelFetchingMetadata": "Hämtar metadata", "LabelFile": "Fil", "LabelFileBirthtime": "Födelse-tidpunkt för fil", "LabelFileModified": "Fil ändrad", @@ -304,9 +310,11 @@ "LabelFinished": "Avslutad", "LabelFolder": "Mapp", "LabelFolders": "Mappar", + "LabelFontBold": "Fetstil", "LabelFontBoldness": "Fetstil", "LabelFontFamily": "Typsnittsfamilj", "LabelFontScale": "Skala på typsnitt", + "LabelFontStrikethrough": "Genomstruken", "LabelGenre": "Kategori", "LabelGenres": "Kategorier", "LabelHardDeleteFile": "Hård radering av fil", @@ -335,8 +343,9 @@ "LabelItem": "Objekt", "LabelLanguage": "Språk", "LabelLanguageDefaultServer": "Standardspråk för server", - "LabelLastBookAdded": "Senaste bok tillagd", - "LabelLastBookUpdated": "Senaste bok uppdaterad", + "LabelLanguages": "Språk", + "LabelLastBookAdded": "Bok senast tillagd", + "LabelLastBookUpdated": "Bok senast uppdaterad", "LabelLastSeen": "Senast inloggad", "LabelLastTime": "Senaste tillfället", "LabelLastUpdate": "Senaste uppdatering", @@ -364,6 +373,7 @@ "LabelMetadataProvider": "Källa för metadata", "LabelMinute": "Minut", "LabelMissing": "Saknad", + "LabelMissingEbook": "Saknar e-bok", "LabelMore": "Mer", "LabelMoreInfo": "Mer information", "LabelName": "Namn", @@ -375,6 +385,7 @@ "LabelNewestEpisodes": "Senast tillagda avsnitt", "LabelNextBackupDate": "Nästa datum för säkerhetskopiering", "LabelNextScheduledRun": "Nästa schemalagda körning", + "LabelNoCustomMetadataProviders": "Ingen egen källa för metadata", "LabelNoEpisodesSelected": "Inga avsnitt valda", "LabelNotFinished": "Ej avslutad", "LabelNotStarted": "Inte påbörjad", @@ -402,6 +413,7 @@ "LabelPermissionsDownload": "Kan ladda ner", "LabelPermissionsUpdate": "Kan uppdatera", "LabelPermissionsUpload": "Kan ladda upp", + "LabelPersonalYearReview": "Överblick av ditt år {0}", "LabelPhotoPathURL": "Bildsökväg/URL", "LabelPlayMethod": "Spelläge", "LabelPlaylists": "Spellistor", @@ -428,7 +440,7 @@ "LabelReadAgain": "Läs igen", "LabelReadEbookWithoutProgress": "Läs e-bok utan att behålla framsteg", "LabelRecentSeries": "Senaste serier", - "LabelRecentlyAdded": "Nyligen tillagd", + "LabelRecentlyAdded": "Nyligen tillagda", "LabelRecommended": "Rekommenderad", "LabelReleaseDate": "Utgivningsdatum", "LabelRemoveAllMetadataAbs": "Radera alla 'metadata.abs' filer", @@ -441,6 +453,7 @@ "LabelSearchTitle": "Titel", "LabelSearchTitleOrASIN": "Sök titel eller ASIN-kod", "LabelSeason": "Säsong", + "LabelSelectAll": "Välj alla", "LabelSelectAllEpisodes": "Välj alla avsnitt", "LabelSelectEpisodesShowing": "Välj {0} avsnitt som visas", "LabelSelectUsers": "Välj användare", @@ -448,7 +461,7 @@ "LabelSequence": "Sekvens", "LabelSeries": "Serier", "LabelSeriesName": "Serienamn", - "LabelSeriesProgress": "Serieframsteg", + "LabelSeriesProgress": "Status för serier", "LabelServerLogLevel": "Nivå på loggning", "LabelSetEbookAsPrimary": "Ange som primär fil", "LabelSetEbookAsSupplementary": "Ange som kompletterande", @@ -478,7 +491,7 @@ "LabelSettingsLibraryMarkAsFinishedTimeRemaining": "Återstående tid är mindre än (sekunder)", "LabelSettingsLibraryMarkAsFinishedWhen": "Markera objekt som avslutade när", "LabelSettingsOnlyShowLaterBooksInContinueSeries": "Hoppa över tidigare böcker i en serie", - "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Sektionen 'Fortsätt med serie' på startsidan visar \"nästa bok\" i serien,
där åtminstone en bok avslutats, och ingen bok i serien har påbörjats.
Om detta alternativ aktiveras kommer efterföljande bok till den
avslutade att föreslås - istället för den första ej avslutade boken i serien.", + "LabelSettingsOnlyShowLaterBooksInContinueSeriesHelp": "Sektionen 'Fortsätt med serien' på startsidan visar \"nästa bok\" i serien,
där åtminstone en bok avslutats, och ingen bok i serien har påbörjats.
Om detta alternativ aktiveras kommer efterföljande bok till den
avslutade att föreslås - istället för den första ej avslutade boken i serien.", "LabelSettingsParseSubtitles": "Hämta undertitel från bokens mapp", "LabelSettingsParseSubtitlesHelp": "Hämtar undertiteln från namnet på mappen där boken lagras.
Undertiteln måste vara åtskilda med ett bindestreck ' - '.
En mapp med namnet 'Boktitel - Bokens undertitel'
får undertiteln \"Bokens undertitel\"", "LabelSettingsPreferMatchedMetadata": "Prioritera matchad metadata", @@ -495,6 +508,7 @@ "LabelSettingsStoreMetadataWithItemHelp": "Som standard lagras metadatafiler i mappen '/metadata/items'. Genom att aktivera detta alternativ kommer metadatafilerna att lagra i din biblioteksmapp", "LabelSettingsTimeFormat": "Tidsformat", "LabelShowAll": "Visa alla", + "LabelShowSeconds": "Visa sekunder", "LabelShowSubtitles": "Visa underrubriker", "LabelSize": "Storlek", "LabelSleepTimer": "Sleeptimer", @@ -524,6 +538,8 @@ "LabelTagsAccessibleToUser": "Taggar tillgängliga för användaren", "LabelTagsNotAccessibleToUser": "Taggar inte tillgängliga för användaren", "LabelTasks": "Körande uppgifter", + "LabelTextEditorBulletedList": "Punktlista", + "LabelTextEditorNumberedList": "Numrerad lista", "LabelTheme": "Utseende", "LabelThemeDark": "Mörkt", "LabelThemeLight": "Ljust", @@ -555,6 +571,7 @@ "LabelTrailer": "Trailer", "LabelType": "Typ", "LabelUnabridged": "Oavkortad", + "LabelUndo": "Ångra", "LabelUnknown": "Okänd", "LabelUpdateCover": "Uppdatera bokomslag", "LabelUpdateCoverHelp": "Tillåt att befintliga bokomslag för de valda böckerna ersätts när en matchning hittas", @@ -563,7 +580,7 @@ "LabelUpdatedAt": "Uppdaterades", "LabelUploaderDragAndDrop": "Dra och släpp filer eller mappar", "LabelUploaderDropFiles": "Släpp filer", - "LabelUploaderItemFetchMetadataHelp": "Hämtar automatiskt titel, författare och serier.", + "LabelUploaderItemFetchMetadataHelp": "Hämtar automatiskt titel, författare och serier", "LabelUseChapterTrack": "Använd kapitelspår", "LabelUseFullTrack": "Använd hela spåret", "LabelUser": "Användare", @@ -580,7 +597,7 @@ "LabelYourAudiobookDuration": "Din ljudboks varaktighet", "LabelYourBookmarks": "Dina bokmärken", "LabelYourPlaylists": "Dina spellistor", - "LabelYourProgress": "Ditt framsteg", + "LabelYourProgress": "Framsteg", "MessageAddToPlayerQueue": "Lägg till i spellistan", "MessageAppriseDescription": "För att använda den här funktionen behöver du ha en instans av Apprise API igång eller en API som hanterar dessa begäranden.
Apprise API-urlen bör vara hela URL-sökvägen för att skicka meddelandet, t.ex., om din API-instans är tillgänglig på http://192.168.1.1:8337, bör du ange http://192.168.1.1:8337/notify.", "MessageBackupsDescription": "Säkerhetskopior inkluderar användare, användarnas framsteg, biblioteksobjekt, serverinställningar
och bilder lagrade i /metadata/items & /metadata/authors.
De inkluderar INTE några filer lagrade i dina biblioteksmappar.", @@ -588,6 +605,7 @@ "MessageBookshelfNoCollections": "Du har ännu inte skapat några samlingar", "MessageBookshelfNoRSSFeeds": "Inga RSS-flöden är öppna", "MessageBookshelfNoResultsForFilter": "Inga resultat för filter \"{0}: {1}\"", + "MessageBookshelfNoResultsForQuery": "Sökningen gav inget resultat", "MessageBookshelfNoSeries": "Du har inga serier", "MessageChapterEndIsAfter": "Kapitelns slut är efter din ljudboks slut", "MessageChapterErrorFirstNotZero": "Första kapitlet måste börja vid 0", @@ -652,7 +670,7 @@ "MessageMarkAllEpisodesNotFinished": "Markera alla avsnitt som inte avslutade", "MessageMarkAsFinished": "Markera som avslutad", "MessageMarkAsNotFinished": "Markera som inte avslutad", - "MessageMatchBooksDescription": "kommer att försöka matcha böcker i biblioteket med en bok från den valda källan och fylla i uppgifter som saknas och bokomslag. Inga befintliga uppgifter kommer att ersättas.", + "MessageMatchBooksDescription": "kommer att försöka matcha böcker i biblioteket med en bok från
den valda källan och fylla i uppgifter som saknas och bokomslag.
Inga befintliga uppgifter kommer att ersättas.", "MessageNoAudioTracks": "Inga ljudspår", "MessageNoAuthors": "Inga författare", "MessageNoBackups": "Inga säkerhetskopior", @@ -687,6 +705,7 @@ "MessagePauseChapter": "Pausa kapiteluppspelning", "MessagePlayChapter": "Lyssna på kapitlets början", "MessagePlaylistCreateFromCollection": "Skapa spellista från samling", + "MessagePleaseWait": "Vänta ett ögonblick...", "MessagePodcastHasNoRSSFeedForMatching": "Podcasten har ingen RSS-flödes-URL att använda för matchning", "MessageQuickMatchDescription": "Adderar uppgifter som saknas samt en omslagsbild från
första träffen i resultatet vid sökningen från '{0}'.
Skriver inte över befintliga uppgifter om inte
inställningen 'Prioritera matchad metadata' är aktiverad.", "MessageRemoveChapter": "Ta bort kapitel", @@ -698,6 +717,7 @@ "MessageRestoreBackupConfirm": "Är du säker på att du vill läsa in säkerhetskopian som skapades den", "MessageRestoreBackupWarning": "Att återställa en säkerhetskopia kommer att skriva över hela databasen som finns i /config och omslagsbilder i /metadata/items & /metadata/authors.

Säkerhetskopior ändrar inte några filer i dina biblioteksmappar. Om du har aktiverat serverinställningar för att lagra omslagskonst och metadata i dina biblioteksmappar säkerhetskopieras eller skrivs de inte över.

Alla klienter som använder din server kommer att uppdateras automatiskt.", "MessageSearchResultsFor": "Sökresultat för", + "MessageSelected": "{0} valda", "MessageServerCouldNotBeReached": "Servern kunde inte nås", "MessageSetChaptersFromTracksDescription": "Ställ in kapitel med varje ljudfil som ett kapitel och kapitelrubrik som ljudfilens namn", "MessageStartPlaybackAtTime": "Starta uppspelning för \"{0}\" kl. {1}?", @@ -764,6 +784,9 @@ "ToastCollectionUpdateSuccess": "Samlingen har uppdaterats", "ToastCoverUpdateFailed": "Uppdatering av bokomslag misslyckades", "ToastDateTimeInvalidOrIncomplete": "Datum och klockslag är felaktigt eller ej komplett", + "ToastDeleteFileFailed": "Misslyckades att radera filen", + "ToastDeleteFileSuccess": "Filen har raderats", + "ToastFailedToLoadData": "Misslyckades med att ladda data", "ToastInvalidImageUrl": "Felaktig URL-adress till omslagsbilden", "ToastInvalidMaxEpisodesToDownload": "Ogiltigt maximalt antal avsnitt att ladda ner", "ToastInvalidUrl": "Felaktig URL-adress", @@ -795,15 +818,24 @@ "ToastRSSFeedCloseSuccess": "RSS-flödet stängt", "ToastRemoveItemFromCollectionFailed": "Misslyckades med att ta bort objektet från samlingen", "ToastRemoveItemFromCollectionSuccess": "Objektet borttaget från samlingen", + "ToastSelectAtLeastOneUser": "Åtminstone en användare måste väljas", "ToastSendEbookToDeviceFailed": "Misslyckades med att skicka e-boken till enheten", "ToastSendEbookToDeviceSuccess": "E-boken skickad till enheten \"{0}\"", "ToastSeriesUpdateFailed": "Uppdateringen av serier misslyckades", "ToastSeriesUpdateSuccess": "Uppdateringen av serierna lyckades", + "ToastServerSettingsUpdateSuccess": "Inställningarna för servern har uppdaterats", "ToastSessionDeleteFailed": "Misslyckades med att ta bort sessionen", "ToastSessionDeleteSuccess": "Sessionen borttagen", "ToastSocketConnected": "Socket ansluten", "ToastSocketDisconnected": "Socket frånkopplad", "ToastSocketFailedToConnect": "Socket misslyckades med att ansluta", + "ToastSortingPrefixesEmptyError": "Åtminstone ett sorteringsbegrepp måste anges", + "ToastSortingPrefixesUpdateSuccess": "{0} begrepp för sortering har uppdateras", + "ToastTitleRequired": "En titel måste anges", + "ToastUnknownError": "Ett okänt fel inträffade", "ToastUserDeleteFailed": "Misslyckades med att ta bort användaren", - "ToastUserDeleteSuccess": "Användaren borttagen" + "ToastUserDeleteSuccess": "Användaren borttagen", + "ToastUserPasswordChangeSuccess": "Lösenordet har ändrats", + "ToastUserPasswordMismatch": "Lösenorden är inte identiska", + "ToastUserPasswordMustChange": "Det nya lösenordet kan inte vara samma som det gamla" } From 2463c62bbf1f8acf0db0e9a3e2d82fe2725218f4 Mon Sep 17 00:00:00 2001 From: advplyr Date: Thu, 16 Jan 2025 16:56:56 -0600 Subject: [PATCH 20/62] Update bookmark modal scrollable with create always visible, make UI consistent, hide create when bookmark already exists --- client/components/modals/BookmarksModal.vue | 41 +++++++------------ .../modals/bookmarks/BookmarkItem.vue | 20 ++++++--- client/strings/bg.json | 1 - client/strings/bn.json | 1 - client/strings/ca.json | 1 - client/strings/cs.json | 1 - client/strings/da.json | 1 - client/strings/de.json | 1 - client/strings/en-us.json | 1 - client/strings/es.json | 1 - client/strings/et.json | 1 - client/strings/fr.json | 1 - client/strings/he.json | 1 - client/strings/hr.json | 1 - client/strings/hu.json | 1 - client/strings/it.json | 1 - client/strings/lt.json | 1 - client/strings/nl.json | 1 - client/strings/no.json | 1 - client/strings/pl.json | 1 - client/strings/pt-br.json | 1 - client/strings/ru.json | 1 - client/strings/sl.json | 1 - client/strings/sv.json | 1 - client/strings/uk.json | 1 - client/strings/vi-vn.json | 1 - client/strings/zh-cn.json | 1 - client/strings/zh-tw.json | 1 - 28 files changed, 29 insertions(+), 58 deletions(-) diff --git a/client/components/modals/BookmarksModal.vue b/client/components/modals/BookmarksModal.vue index 08d800f0..ad0d7343 100644 --- a/client/components/modals/BookmarksModal.vue +++ b/client/components/modals/BookmarksModal.vue @@ -5,24 +5,26 @@

{{ $strings.LabelYourBookmarks }}

-
-
+
+
-
-

{{ $strings.MessageNoBookmarks }}

-
-
-
-
+
+
+

{{ $strings.MessageNoBookmarks }}

+
+ +
+ +

{{ this.$secondsToTimestamp(currentTime) }}

- +
add
@@ -44,8 +46,7 @@ export default { type: Number, default: 0 }, - libraryItemId: String, - hideCreate: Boolean + libraryItemId: String }, data() { return { @@ -57,6 +58,7 @@ export default { watch: { show(newVal) { if (newVal) { + this.selectedBookmark = null this.showBookmarkTitleInput = false this.newBookmarkTitle = '' } @@ -72,7 +74,7 @@ export default { } }, canCreateBookmark() { - return !this.bookmarks.find((bm) => bm.time === this.currentTime) + return !this.bookmarks.find((bm) => Math.abs(this.currentTime - bm.time) < 1) }, dateFormat() { return this.$store.state.serverSettings.dateFormat @@ -102,19 +104,6 @@ export default { clickBookmark(bm) { this.$emit('select', bm) }, - submitUpdateBookmark(updatedBookmark) { - var bookmark = { ...updatedBookmark } - this.$axios - .$patch(`/api/me/item/${this.libraryItemId}/bookmark`, bookmark) - .then(() => { - this.$toast.success(this.$strings.ToastBookmarkUpdateSuccess) - }) - .catch((error) => { - this.$toast.error(this.$strings.ToastFailedToUpdate) - console.error(error) - }) - this.show = false - }, submitCreateBookmark() { if (!this.newBookmarkTitle) { this.newBookmarkTitle = this.$formatDatetime(Date.now(), this.dateFormat, this.timeFormat) diff --git a/client/components/modals/bookmarks/BookmarkItem.vue b/client/components/modals/bookmarks/BookmarkItem.vue index 1be3894a..c4035bc8 100644 --- a/client/components/modals/bookmarks/BookmarkItem.vue +++ b/client/components/modals/bookmarks/BookmarkItem.vue @@ -1,5 +1,5 @@ -
+

{{ $strings.MessageNoBookmarks }}

-
+

- {{ this.$secondsToTimestamp(currentTime) }} + {{ this.$secondsToTimestamp(currentTime / playbackRate) }}

@@ -46,7 +46,9 @@ export default { type: Number, default: 0 }, - libraryItemId: String + libraryItemId: String, + playbackRate: Number, + hideCreate: Boolean }, data() { return { diff --git a/client/components/modals/bookmarks/BookmarkItem.vue b/client/components/modals/bookmarks/BookmarkItem.vue index c4035bc8..538d3115 100644 --- a/client/components/modals/bookmarks/BookmarkItem.vue +++ b/client/components/modals/bookmarks/BookmarkItem.vue @@ -2,7 +2,7 @@

- {{ this.$secondsToTimestamp(bookmark.time) }} + {{ this.$secondsToTimestamp(bookmark.time / playbackRate) }}

@@ -35,7 +35,8 @@ export default { type: Object, default: () => {} }, - highlight: Boolean + highlight: Boolean, + playbackRate: Number }, data() { return { diff --git a/client/pages/item/_id/index.vue b/client/pages/item/_id/index.vue index 139794e5..a0cadc1d 100644 --- a/client/pages/item/_id/index.vue +++ b/client/pages/item/_id/index.vue @@ -141,7 +141,7 @@
- +
From 4701b3ed0ccc8b105eab7a7db16625a1869fccbc Mon Sep 17 00:00:00 2001 From: advplyr Date: Fri, 17 Jan 2025 17:21:35 -0600 Subject: [PATCH 22/62] Update audiobook rss feeds to increment pub dates in 1 minute intervals #3442 --- server/models/FeedEpisode.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/server/models/FeedEpisode.js b/server/models/FeedEpisode.js index 0767577a..4133f691 100644 --- a/server/models/FeedEpisode.js +++ b/server/models/FeedEpisode.js @@ -139,7 +139,8 @@ class FeedEpisode extends Model { */ static getFeedEpisodeObjFromAudiobookTrack(book, pubDateStart, feed, slug, audioTrack, useChapterTitles, existingEpisodeId = null) { // Example: Fri, 04 Feb 2015 00:00:00 GMT - let timeOffset = isNaN(audioTrack.index) ? 0 : Number(audioTrack.index) * 1000 // Offset pubdate to ensure correct order + // Offset pubdate in 1 minute intervals to ensure correct order + let timeOffset = isNaN(audioTrack.index) ? 0 : Number(audioTrack.index) * 60000 let episodeId = existingEpisodeId || uuidv4() // e.g. Track 1 will have a pub date before Track 2 From 4a3254d33885a20c6de42845b116f9090ec976ee Mon Sep 17 00:00:00 2001 From: advplyr Date: Sat, 18 Jan 2025 15:57:44 -0600 Subject: [PATCH 23/62] Fix create library with mark media as finished when setting #3856 --- server/controllers/LibraryController.js | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/server/controllers/LibraryController.js b/server/controllers/LibraryController.js index d73b92d2..0ece483f 100644 --- a/server/controllers/LibraryController.js +++ b/server/controllers/LibraryController.js @@ -100,6 +100,15 @@ class LibraryController { return res.status(400).send(`Invalid request. Settings "${key}" must be a string`) } newLibraryPayload.settings[key] = req.body.settings[key] + } else if (key === 'markAsFinishedPercentComplete' || key === 'markAsFinishedTimeRemaining') { + if (req.body.settings[key] !== null && isNaN(req.body.settings[key])) { + return res.status(400).send(`Invalid request. Setting "${key}" must be a number`) + } else if (key === 'markAsFinishedPercentComplete' && req.body.settings[key] !== null && (Number(req.body.settings[key]) < 0 || Number(req.body.settings[key]) > 100)) { + return res.status(400).send(`Invalid request. Setting "${key}" must be between 0 and 100`) + } else if (key === 'markAsFinishedTimeRemaining' && req.body.settings[key] !== null && Number(req.body.settings[key]) < 0) { + return res.status(400).send(`Invalid request. Setting "${key}" must be greater than or equal to 0`) + } + newLibraryPayload.settings[key] = req.body.settings[key] === null ? null : Number(req.body.settings[key]) } else { if (typeof req.body.settings[key] !== typeof newLibraryPayload.settings[key]) { return res.status(400).send(`Invalid request. Setting "${key}" must be of type ${typeof newLibraryPayload.settings[key]}`) @@ -325,7 +334,7 @@ class LibraryController { } if (req.body.settings[key] !== updatedSettings[key]) { hasUpdates = true - updatedSettings[key] = Number(req.body.settings[key]) + updatedSettings[key] = req.body.settings[key] === null ? null : Number(req.body.settings[key]) Logger.debug(`[LibraryController] Library "${req.library.name}" updating setting "${key}" to "${updatedSettings[key]}"`) } } else if (key === 'markAsFinishedTimeRemaining') { @@ -338,7 +347,7 @@ class LibraryController { } if (req.body.settings[key] !== updatedSettings[key]) { hasUpdates = true - updatedSettings[key] = Number(req.body.settings[key]) + updatedSettings[key] = req.body.settings[key] === null ? null : Number(req.body.settings[key]) Logger.debug(`[LibraryController] Library "${req.library.name}" updating setting "${key}" to "${updatedSettings[key]}"`) } } else { From 77ad9c8a16099effe8c46a1c474f79537bf88973 Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Sat, 18 Jan 2025 08:57:02 +0000 Subject: [PATCH 24/62] Translated using Weblate (Swedish) Currently translated at 78.1% (846 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 56 ++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index b2f5e71b..361a5d33 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -184,7 +184,7 @@ "HeaderSleepTimer": "Sovtidtagare", "HeaderStatsLargestItems": "Största objekten", "HeaderStatsLongestItems": "Längsta objekten (timmar)", - "HeaderStatsMinutesListeningChart": "Minuters lyssning (senaste 7 dagar)", + "HeaderStatsMinutesListeningChart": "Minuters lyssning (senaste 7 dagarna)", "HeaderStatsRecentSessions": "Senaste sessioner", "HeaderStatsTop10Authors": "10 populäraste författarna", "HeaderStatsTop5Genres": "5 populäraste kategorierna", @@ -195,7 +195,7 @@ "HeaderUpdateDetails": "Uppdatera detaljer", "HeaderUpdateLibrary": "Uppdatera bibliotek", "HeaderUsers": "Användare", - "HeaderYearReview": "Sammanställning för {0}", + "HeaderYearReview": "Sammanställning av {0}", "HeaderYourStats": "Din statistik", "LabelAbridged": "Förkortad", "LabelAccountType": "Kontotyp", @@ -247,7 +247,7 @@ "LabelClickForMoreInfo": "Klicka för mer information", "LabelClickToUseCurrentValue": "Klicka för att använda aktuellt värde", "LabelClosePlayer": "Stäng spelaren", - "LabelCollapseSeries": "Fäll ihop serie", + "LabelCollapseSeries": "Komprimera serier", "LabelCollection": "Samling", "LabelCollections": "Samlingar", "LabelComplete": "Komplett", @@ -281,7 +281,7 @@ "LabelDurationComparisonExactMatch": "(exakt matchning)", "LabelDurationFound": "Varaktighet hittad:", "LabelEbook": "E-bok", - "LabelEbooks": "Eböcker", + "LabelEbooks": "E-böcker", "LabelEdit": "Redigera", "LabelEmail": "E-postadress", "LabelEmailSettingsFromAddress": "Från adress", @@ -299,11 +299,12 @@ "LabelEpisodeTitle": "Avsnittsrubrik", "LabelEpisodeType": "Avsnittstyp", "LabelExample": "Exempel", + "LabelExpandSeries": "Expandera serier", "LabelFeedURL": "Flödes-URL", "LabelFetchingMetadata": "Hämtar metadata", "LabelFile": "Fil", - "LabelFileBirthtime": "Födelse-tidpunkt för fil", - "LabelFileModified": "Fil ändrad", + "LabelFileBirthtime": "Tidpunkt, filen skapades", + "LabelFileModified": "Tidpunkt, filen ändrades", "LabelFilename": "Filnamn", "LabelFilterByUser": "Välj användare", "LabelFindEpisodes": "Hitta avsnitt", @@ -318,8 +319,8 @@ "LabelGenre": "Kategori", "LabelGenres": "Kategorier", "LabelHardDeleteFile": "Hård radering av fil", - "LabelHasEbook": "Har E-bok", - "LabelHasSupplementaryEbook": "Har komplimenterande E-bok", + "LabelHasEbook": "Har e-bok", + "LabelHasSupplementaryEbook": "Har kompletterande e-bok", "LabelHideSubtitles": "Dölj underrubriker", "LabelHighestPriority": "Högst prioritet", "LabelHost": "Värd", @@ -372,8 +373,10 @@ "LabelMetadataOrderOfPrecedenceDescription": "Källor för metadata med högre prioritet har företräde före källor med lägre prioritet", "LabelMetadataProvider": "Källa för metadata", "LabelMinute": "Minut", - "LabelMissing": "Saknad", + "LabelMinutes": "Minuter", + "LabelMissing": "Saknar", "LabelMissingEbook": "Saknar e-bok", + "LabelMissingSupplementaryEbook": "Saknar kompletterande e-bok", "LabelMore": "Mer", "LabelMoreInfo": "Mer information", "LabelName": "Namn", @@ -388,7 +391,7 @@ "LabelNoCustomMetadataProviders": "Ingen egen källa för metadata", "LabelNoEpisodesSelected": "Inga avsnitt valda", "LabelNotFinished": "Ej avslutad", - "LabelNotStarted": "Inte påbörjad", + "LabelNotStarted": "Ej påbörjad", "LabelNotes": "Anteckningar", "LabelNotificationAppriseURL": "Apprise URL(er)", "LabelNotificationAvailableVariables": "Tillgängliga variabler", @@ -413,7 +416,7 @@ "LabelPermissionsDownload": "Kan ladda ner", "LabelPermissionsUpdate": "Kan uppdatera", "LabelPermissionsUpload": "Kan ladda upp", - "LabelPersonalYearReview": "Överblick av ditt år {0}", + "LabelPersonalYearReview": "En sammanställning av, sidan {0}", "LabelPhotoPathURL": "Bildsökväg/URL", "LabelPlayMethod": "Spelläge", "LabelPlaylists": "Spellistor", @@ -428,6 +431,7 @@ "LabelProvider": "Källa", "LabelPubDate": "Publiceringsdatum", "LabelPublishYear": "Publiceringsår", + "LabelPublishedDecade": "Årtionde för publicering", "LabelPublisher": "Utgivare", "LabelRSSFeedCustomOwnerEmail": "Anpassad ägarens e-post", "LabelRSSFeedCustomOwnerName": "Anpassat ägarnamn", @@ -521,13 +525,13 @@ "LabelStatsBestDay": "Bästa dag", "LabelStatsDailyAverage": "Dagligt genomsnitt", "LabelStatsDays": "Dagar", - "LabelStatsDaysListened": "Dagar lyssnade", + "LabelStatsDaysListened": "dagars lyssnande", "LabelStatsHours": "Timmar", "LabelStatsInARow": "i rad", - "LabelStatsItemsFinished": "Objekt avslutade", + "LabelStatsItemsFinished": "böcker avslutade", "LabelStatsItemsInLibrary": "Objekt i biblioteket", "LabelStatsMinutes": "minuter", - "LabelStatsMinutesListening": "Minuter av lyssnande", + "LabelStatsMinutesListening": "minuters lyssnande", "LabelStatsOverallDays": "Totalt antal dagar", "LabelStatsOverallHours": "Totalt antal timmar", "LabelStatsWeekListening": "Veckans lyssnande", @@ -592,8 +596,8 @@ "LabelViewQueue": "Visa spellista", "LabelVolume": "Volym", "LabelWeekdaysToRun": "Veckodagar att köra skanning", - "LabelYearReviewHide": "Dölj sammanställning för året", - "LabelYearReviewShow": "Visa sammanställning för året", + "LabelYearReviewHide": "Dölj årets sammanställning", + "LabelYearReviewShow": "Visa årets sammanställning", "LabelYourAudiobookDuration": "Din ljudboks varaktighet", "LabelYourBookmarks": "Dina bokmärken", "LabelYourPlaylists": "Dina spellistor", @@ -648,9 +652,10 @@ "MessageConfirmRenameTagWarning": "VARNING! En liknande tagg med annat skrivsätt finns redan \"{0}\".", "MessageConfirmResetProgress": "Är du säker på att du vill nollställa ditt framsteg?", "MessageConfirmSendEbookToDevice": "Är du säker på att du vill skicka {0} e-bok \"{1}\" till enheten \"{2}\"?", + "MessageDaysListenedInTheLastYear": "{0} dagars lyssnande det senaste året", "MessageDownloadingEpisode": "Laddar ner avsnitt", "MessageDragFilesIntoTrackOrder": "Dra filer till rätt spårordning", - "MessageEmbedFinished": "Inbäddning klar!", + "MessageEmbedFinished": "Inbäddning genomförd!", "MessageEpisodesQueuedForDownload": "{0} avsnitt i kö för nedladdning", "MessageFeedURLWillBe": "Flödes-URL kommer att vara {0}", "MessageFetching": "Hämtar...", @@ -667,9 +672,9 @@ "MessageM4BFinished": "M4B klar!", "MessageMapChapterTitles": "Kartlägg kapitelrubriker till dina befintliga ljudbokskapitel utan att justera tidstämplar", "MessageMarkAllEpisodesFinished": "Markera alla avsnitt som avslutade", - "MessageMarkAllEpisodesNotFinished": "Markera alla avsnitt som inte avslutade", + "MessageMarkAllEpisodesNotFinished": "Markera alla avsnitt som ej avslutade", "MessageMarkAsFinished": "Markera som avslutad", - "MessageMarkAsNotFinished": "Markera som inte avslutad", + "MessageMarkAsNotFinished": "Markera som ej avslutad", "MessageMatchBooksDescription": "kommer att försöka matcha böcker i biblioteket med en bok från
den valda källan och fylla i uppgifter som saknas och bokomslag.
Inga befintliga uppgifter kommer att ersättas.", "MessageNoAudioTracks": "Inga ljudspår", "MessageNoAuthors": "Inga författare", @@ -688,7 +693,7 @@ "MessageNoIssues": "Inga problem", "MessageNoItems": "Inga objekt", "MessageNoItemsFound": "Inga objekt hittades", - "MessageNoListeningSessions": "Inga lyssningssessioner", + "MessageNoListeningSessions": "Inga lyssningstillfällen", "MessageNoLogs": "Inga loggar", "MessageNoMediaProgress": "Ingen medieförlopp", "MessageNoNotifications": "Inga aviseringar", @@ -744,6 +749,9 @@ "PlaceholderNewPlaylist": "Nytt spellistanamn", "PlaceholderSearch": "Sök...", "PlaceholderSearchEpisode": "Sök avsnitt...", + "StatsBooksFinished": "avslutade böcker", + "StatsBooksFinishedThisYear": "Några böcker som avslutats under året…", + "StatsSpentListening": "tillbringat på att lyssna", "StatsTopAuthor": "POPULÄRAST FÖRFATTAREN", "StatsTopAuthors": "POPULÄRASTE FÖRFATTARNA", "StatsTopGenre": "Populäraste kategorin", @@ -791,10 +799,10 @@ "ToastInvalidUrl": "Felaktig URL-adress", "ToastItemCoverUpdateSuccess": "Objektets bokomslag har uppdaterats", "ToastItemDetailsUpdateSuccess": "Objektdetaljer uppdaterade", - "ToastItemMarkedAsFinishedFailed": "Misslyckades med att markera som färdig", - "ToastItemMarkedAsFinishedSuccess": "Objekt markerat som färdig", - "ToastItemMarkedAsNotFinishedFailed": "Misslyckades med att markera som ej färdig", - "ToastItemMarkedAsNotFinishedSuccess": "Objekt markerat som ej färdig", + "ToastItemMarkedAsFinishedFailed": "Misslyckades med att markera den som avslutad", + "ToastItemMarkedAsFinishedSuccess": "Den har markerat som avslutad", + "ToastItemMarkedAsNotFinishedFailed": "Misslyckades med att markera den som ej avslutad", + "ToastItemMarkedAsNotFinishedSuccess": "Den har markerats som ej avslutad", "ToastLibraryCreateFailed": "Det gick inte att skapa biblioteket", "ToastLibraryCreateSuccess": "Biblioteket \"{0}\" har skapats", "ToastLibraryDeleteFailed": "Det gick inte att ta bort biblioteket", From 47247323cf2125b7452f64241f8e419c5d41fe85 Mon Sep 17 00:00:00 2001 From: Kieli Puoli Date: Sat, 18 Jan 2025 09:49:23 +0000 Subject: [PATCH 25/62] Translated using Weblate (Finnish) Currently translated at 44.0% (477 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fi/ --- client/strings/fi.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/fi.json b/client/strings/fi.json index 95cba8c9..276febd9 100644 --- a/client/strings/fi.json +++ b/client/strings/fi.json @@ -69,7 +69,7 @@ "ButtonQuickMatch": "Pikatäsmää", "ButtonReScan": "Uudelleenskannaa", "ButtonRead": "Lue", - "ButtonReadLess": "Näytä vähemmän", + "ButtonReadLess": "Lue vähemmän", "ButtonReadMore": "Näytä enemmän", "ButtonRefresh": "Päivitä", "ButtonRemove": "Poista", From 7d278ebc564b4a76198700e5881da30526efc67a Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Sat, 18 Jan 2025 09:50:20 +0000 Subject: [PATCH 26/62] Translated using Weblate (Swedish) Currently translated at 78.1% (846 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index 361a5d33..a70cf73c 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -136,8 +136,8 @@ "HeaderIgnoredFiles": "Ignorerade filer", "HeaderItemFiles": "Föremålsfiler", "HeaderItemMetadataUtils": "Metadataverktyg för föremål", - "HeaderLastListeningSession": "Senaste lyssningssession", - "HeaderLatestEpisodes": "Senaste avsnitt", + "HeaderLastListeningSession": "Senaste lyssningstillfället", + "HeaderLatestEpisodes": "Senaste avsnitten", "HeaderLibraries": "Bibliotek", "HeaderLibraryFiles": "Filer i biblioteket", "HeaderLibraryStats": "Biblioteksstatistik", @@ -185,7 +185,7 @@ "HeaderStatsLargestItems": "Största objekten", "HeaderStatsLongestItems": "Längsta objekten (timmar)", "HeaderStatsMinutesListeningChart": "Minuters lyssning (senaste 7 dagarna)", - "HeaderStatsRecentSessions": "Senaste sessioner", + "HeaderStatsRecentSessions": "Senaste tillfällena", "HeaderStatsTop10Authors": "10 populäraste författarna", "HeaderStatsTop5Genres": "5 populäraste kategorierna", "HeaderTableOfContents": "Innehållsförteckning", @@ -349,7 +349,7 @@ "LabelLastBookUpdated": "Bok senast uppdaterad", "LabelLastSeen": "Senast inloggad", "LabelLastTime": "Senaste tillfället", - "LabelLastUpdate": "Senaste uppdatering", + "LabelLastUpdate": "Senast uppdaterad", "LabelLayout": "Layout", "LabelLayoutSinglePage": "En sida", "LabelLayoutSplitPage": "Uppslag", @@ -443,7 +443,7 @@ "LabelRead": "Läst", "LabelReadAgain": "Läs igen", "LabelReadEbookWithoutProgress": "Läs e-bok utan att behålla framsteg", - "LabelRecentSeries": "Senaste serier", + "LabelRecentSeries": "Senaste serierna", "LabelRecentlyAdded": "Nyligen tillagda", "LabelRecommended": "Rekommenderad", "LabelReleaseDate": "Utgivningsdatum", From bc2d7ff14dd1a2a94d98bbb85adbf286c5d281b8 Mon Sep 17 00:00:00 2001 From: Kieli Puoli Date: Sat, 18 Jan 2025 09:52:37 +0000 Subject: [PATCH 27/62] Translated using Weblate (Finnish) Currently translated at 44.1% (478 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fi/ --- client/strings/fi.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/strings/fi.json b/client/strings/fi.json index 276febd9..ae9ae306 100644 --- a/client/strings/fi.json +++ b/client/strings/fi.json @@ -66,11 +66,12 @@ "ButtonQueueAddItem": "Lisää jonoon", "ButtonQueueRemoveItem": "Poista jonosta", "ButtonQuickEmbed": "Pikaupota", + "ButtonQuickEmbedMetadata": "Upota kuvailutiedot nopeasti", "ButtonQuickMatch": "Pikatäsmää", "ButtonReScan": "Uudelleenskannaa", "ButtonRead": "Lue", "ButtonReadLess": "Lue vähemmän", - "ButtonReadMore": "Näytä enemmän", + "ButtonReadMore": "Lue enemmän", "ButtonRefresh": "Päivitä", "ButtonRemove": "Poista", "ButtonRemoveAll": "Poista kaikki", From 68af5933e537deea9a968e492e9b80c262e22fc7 Mon Sep 17 00:00:00 2001 From: Kieli Puoli Date: Sat, 18 Jan 2025 09:58:29 +0000 Subject: [PATCH 28/62] Translated using Weblate (Finnish) Currently translated at 44.2% (479 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fi/ --- client/strings/fi.json | 1 + 1 file changed, 1 insertion(+) diff --git a/client/strings/fi.json b/client/strings/fi.json index ae9ae306..3b52c175 100644 --- a/client/strings/fi.json +++ b/client/strings/fi.json @@ -302,6 +302,7 @@ "LabelFinished": "Valmis", "LabelFolder": "Kansio", "LabelFolders": "Kansiot", + "LabelFontBoldness": "Kirjasintyyppien lihavointi", "LabelGenre": "Lajityyppi", "LabelGenres": "Lajityypit", "LabelHost": "Isäntä", From 5294335bca4f709d00f7f0a24f592222f0c0ab4d Mon Sep 17 00:00:00 2001 From: Kieli Puoli Date: Sat, 18 Jan 2025 09:58:48 +0000 Subject: [PATCH 29/62] Translated using Weblate (Finnish) Currently translated at 44.3% (480 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fi/ --- client/strings/fi.json | 1 + 1 file changed, 1 insertion(+) diff --git a/client/strings/fi.json b/client/strings/fi.json index 3b52c175..fa83969f 100644 --- a/client/strings/fi.json +++ b/client/strings/fi.json @@ -303,6 +303,7 @@ "LabelFolder": "Kansio", "LabelFolders": "Kansiot", "LabelFontBoldness": "Kirjasintyyppien lihavointi", + "LabelFontScale": "Kirjasintyyppien skaalautuminen", "LabelGenre": "Lajityyppi", "LabelGenres": "Lajityypit", "LabelHost": "Isäntä", From 318e57170d5f24570227b5a43b65f690313995a8 Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Sat, 18 Jan 2025 10:01:11 +0000 Subject: [PATCH 30/62] Translated using Weblate (Swedish) Currently translated at 78.1% (846 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index a70cf73c..59963c39 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -725,7 +725,7 @@ "MessageSelected": "{0} valda", "MessageServerCouldNotBeReached": "Servern kunde inte nås", "MessageSetChaptersFromTracksDescription": "Ställ in kapitel med varje ljudfil som ett kapitel och kapitelrubrik som ljudfilens namn", - "MessageStartPlaybackAtTime": "Starta uppspelning för \"{0}\" kl. {1}?", + "MessageStartPlaybackAtTime": "Starta uppspelning av \"{0}\" vid tidpunkt {1}?", "MessageTaskFailedToCreateCacheDirectory": "Misslyckades med att skapa bibliotek för cachen", "MessageThinking": "Tänker...", "MessageUploaderItemFailed": "Misslyckades med att ladda upp", From 76b270ddf67f7e1a461a4eb616855425cf68164b Mon Sep 17 00:00:00 2001 From: Kieli Puoli Date: Sat, 18 Jan 2025 10:01:03 +0000 Subject: [PATCH 31/62] Translated using Weblate (Finnish) Currently translated at 44.4% (481 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fi/ --- client/strings/fi.json | 1 + 1 file changed, 1 insertion(+) diff --git a/client/strings/fi.json b/client/strings/fi.json index fa83969f..fc0cace9 100644 --- a/client/strings/fi.json +++ b/client/strings/fi.json @@ -324,6 +324,7 @@ "LabelLastBookAdded": "Viimeisin lisätty kirja", "LabelLastBookUpdated": "Viimeisin päivitetty kirja", "LabelLastUpdate": "Viimeisin päivitys", + "LabelLayout": "Asettelu", "LabelLibrariesAccessibleToUser": "Käyttäjälle saatavilla olevat kirjastot", "LabelLibrary": "Kirjasto", "LabelLibraryName": "Kirjaston nimi", From 6052bb9fda030ff4cf1975c5dd106521e1ff94f4 Mon Sep 17 00:00:00 2001 From: Kieli Puoli Date: Sat, 18 Jan 2025 10:02:03 +0000 Subject: [PATCH 32/62] Translated using Weblate (Finnish) Currently translated at 44.5% (482 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fi/ --- client/strings/fi.json | 1 + 1 file changed, 1 insertion(+) diff --git a/client/strings/fi.json b/client/strings/fi.json index fc0cace9..c0a3ce0b 100644 --- a/client/strings/fi.json +++ b/client/strings/fi.json @@ -325,6 +325,7 @@ "LabelLastBookUpdated": "Viimeisin päivitetty kirja", "LabelLastUpdate": "Viimeisin päivitys", "LabelLayout": "Asettelu", + "LabelLayoutSinglePage": "Yksi sivu", "LabelLibrariesAccessibleToUser": "Käyttäjälle saatavilla olevat kirjastot", "LabelLibrary": "Kirjasto", "LabelLibraryName": "Kirjaston nimi", From 3aa6b358b328a886593bb6bf9381d108a3e222c6 Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Sat, 18 Jan 2025 10:20:58 +0000 Subject: [PATCH 33/62] Translated using Weblate (Swedish) Currently translated at 79.9% (865 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 83 ++++++++++++++++++++++++++---------------- 1 file changed, 51 insertions(+), 32 deletions(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index 59963c39..1b1ae6e2 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -119,7 +119,7 @@ "HeaderChapters": "Kapitel", "HeaderChooseAFolder": "Välj en mapp", "HeaderCollection": "Samling", - "HeaderCollectionItems": "Samlingselement", + "HeaderCollectionItems": "Böcker i samlingen", "HeaderCover": "Bokomslag", "HeaderCurrentDownloads": "Aktuella nedladdningar", "HeaderCustomMetadataProviders": "Egen källa för metadata", @@ -129,7 +129,7 @@ "HeaderEmail": "E-postadress", "HeaderEmailSettings": "Inställningar för e-post", "HeaderEpisodes": "Avsnitt", - "HeaderEreaderDevices": "E-boksläsarenheter", + "HeaderEreaderDevices": "Enheter för att läsa e-böcker", "HeaderEreaderSettings": "E-boksinställningar", "HeaderFiles": "Filer", "HeaderFindChapters": "Hitta kapitel", @@ -158,10 +158,10 @@ "HeaderOtherFiles": "Andra filer", "HeaderPasswordAuthentication": "Lösenordsautentisering", "HeaderPermissions": "Behörigheter", - "HeaderPlayerQueue": "Spelarkö", - "HeaderPlayerSettings": "Spelarinställningar", + "HeaderPlayerQueue": "Spellista", + "HeaderPlayerSettings": "Inställningar för uppspelning", "HeaderPlaylist": "Spellista", - "HeaderPlaylistItems": "Spellistobjekt", + "HeaderPlaylistItems": "Böcker i spellistan", "HeaderPodcastsToAdd": "Podcaster att lägga till", "HeaderPreviewCover": "Förhandsgranska bokomslag", "HeaderRSSFeedGeneral": "RSS-information", @@ -169,7 +169,7 @@ "HeaderRSSFeeds": "RSS-flöden", "HeaderRemoveEpisode": "Ta bort avsnitt", "HeaderRemoveEpisodes": "Ta bort {0} avsnitt", - "HeaderSavedMediaProgress": "Sparad medieförlopp", + "HeaderSavedMediaProgress": "Sparad historik", "HeaderSchedule": "Schema", "HeaderScheduleEpisodeDownloads": "Schemalägg automatiska avsnittsnedladdningar", "HeaderScheduleLibraryScans": "Schema för skanning av biblioteket", @@ -181,7 +181,7 @@ "HeaderSettingsGeneral": "Allmänt", "HeaderSettingsScanner": "Skanner", "HeaderSettingsWebClient": "Webklient", - "HeaderSleepTimer": "Sovtidtagare", + "HeaderSleepTimer": "Timer för att sova", "HeaderStatsLargestItems": "Största objekten", "HeaderStatsLongestItems": "Längsta objekten (timmar)", "HeaderStatsMinutesListeningChart": "Minuters lyssning (senaste 7 dagarna)", @@ -192,12 +192,13 @@ "HeaderTools": "Verktyg", "HeaderUpdateAccount": "Uppdatera konto", "HeaderUpdateAuthor": "Uppdatera författare", - "HeaderUpdateDetails": "Uppdatera detaljer", + "HeaderUpdateDetails": "Uppdatera detaljer om boken", "HeaderUpdateLibrary": "Uppdatera bibliotek", "HeaderUsers": "Användare", "HeaderYearReview": "Sammanställning av {0}", "HeaderYourStats": "Din statistik", "LabelAbridged": "Förkortad", + "LabelAccessibleBy": "Tillgänglig för", "LabelAccountType": "Kontotyp", "LabelAccountTypeAdmin": "Administratör", "LabelAccountTypeGuest": "Gäst", @@ -284,12 +285,12 @@ "LabelEbooks": "E-böcker", "LabelEdit": "Redigera", "LabelEmail": "E-postadress", - "LabelEmailSettingsFromAddress": "Från adress", + "LabelEmailSettingsFromAddress": "Från e-postadress", "LabelEmailSettingsRejectUnauthorized": "Avvisa icke-autentiserade certifikat", "LabelEmailSettingsRejectUnauthorizedHelp": "Inaktivering av SSL-certifikatsvalidering kan exponera din anslutning för säkerhetsrisker, såsom man-in-the-middle-attacker. Inaktivera bara denna inställning om du förstår implikationerna och litar på den epostserver du ansluter till.", "LabelEmailSettingsSecure": "Säker", "LabelEmailSettingsSecureHelp": "Om sant kommer anslutningen att använda TLS vid anslutning till servern. Om falskt används TLS om servern stöder STARTTLS-tillägget. I de flesta fall, om du ansluter till port 465, bör du ställa in detta värde till sant. För port 587 eller 25, låt det vara falskt. (från nodemailer.com/smtp/#authentication)", - "LabelEmailSettingsTestAddress": "Testadress", + "LabelEmailSettingsTestAddress": "E-postadress för test", "LabelEmbeddedCover": "Inbäddat bokomslag", "LabelEnable": "Aktivera", "LabelEncodingBackupLocation": "En säkerhetskopia av dina orginalljudfiler kommer att lagras i:", @@ -342,6 +343,8 @@ "LabelIntervalEveryHour": "Varje timme", "LabelInvert": "Invertera", "LabelItem": "Objekt", + "LabelJumpBackwardAmount": "Inställning för \"hopp bakåt\"", + "LabelJumpForwardAmount": "Inställning för \"hopp framåt\"", "LabelLanguage": "Språk", "LabelLanguageDefaultServer": "Standardspråk för server", "LabelLanguages": "Språk", @@ -354,7 +357,7 @@ "LabelLayoutSinglePage": "En sida", "LabelLayoutSplitPage": "Uppslag", "LabelLess": "Mindre", - "LabelLibrariesAccessibleToUser": "Åtkomliga bibliotek för användare", + "LabelLibrariesAccessibleToUser": "Bibliotek användaren har tillgång till", "LabelLibrary": "Bibliotek", "LabelLibraryItem": "Objekt", "LabelLibraryName": "Biblioteksnamn", @@ -382,7 +385,7 @@ "LabelName": "Namn", "LabelNarrator": "Uppläsare", "LabelNarrators": "Uppläsare", - "LabelNew": "Ny", + "LabelNew": "Nytt", "LabelNewPassword": "Nytt lösenord", "LabelNewestAuthors": "Senast adderade författare", "LabelNewestEpisodes": "Senast tillagda avsnitt", @@ -412,11 +415,12 @@ "LabelPermissionsAccessAllLibraries": "Kan komma åt alla bibliotek", "LabelPermissionsAccessAllTags": "Kan komma åt alla taggar", "LabelPermissionsAccessExplicitContent": "Kan komma åt explicit innehåll", + "LabelPermissionsCreateEreader": "Kan addera e-läsarenhet", "LabelPermissionsDelete": "Kan radera", "LabelPermissionsDownload": "Kan ladda ner", "LabelPermissionsUpdate": "Kan uppdatera", "LabelPermissionsUpload": "Kan ladda upp", - "LabelPersonalYearReview": "En sammanställning av, sidan {0}", + "LabelPersonalYearReview": "En sammanställning av ditt år, sidan {0}", "LabelPhotoPathURL": "Bildsökväg/URL", "LabelPlayMethod": "Spelläge", "LabelPlaylists": "Spellistor", @@ -467,6 +471,7 @@ "LabelSeriesName": "Serienamn", "LabelSeriesProgress": "Status för serier", "LabelServerLogLevel": "Nivå på loggning", + "LabelServerYearReview": "En sammanställning av ditt bibliotek, sidan {0}", "LabelSetEbookAsPrimary": "Ange som primär fil", "LabelSetEbookAsSupplementary": "Ange som kompletterande", "LabelSettingsAllowIframe": "Tillåt att Audiobookshelf får visas i en iframe", @@ -515,7 +520,7 @@ "LabelShowSeconds": "Visa sekunder", "LabelShowSubtitles": "Visa underrubriker", "LabelSize": "Storlek", - "LabelSleepTimer": "Sleeptimer", + "LabelSleepTimer": "Timer för sova", "LabelStart": "Starta", "LabelStartTime": "Starttid", "LabelStarted": "Startad", @@ -539,7 +544,7 @@ "LabelSupportedFileTypes": "Filtyper som accepteras", "LabelTag": "Tagg", "LabelTags": "Taggar", - "LabelTagsAccessibleToUser": "Taggar tillgängliga för användaren", + "LabelTagsAccessibleToUser": "Taggar användaren har tillgång till", "LabelTagsNotAccessibleToUser": "Taggar inte tillgängliga för användaren", "LabelTasks": "Körande uppgifter", "LabelTextEditorBulletedList": "Punktlista", @@ -591,8 +596,9 @@ "LabelUsername": "Användarnamn", "LabelValue": "Värde", "LabelVersion": "Version", - "LabelViewBookmarks": "Visa bokmärken", + "LabelViewBookmarks": "Bokmärken", "LabelViewChapters": "Visa kapitel", + "LabelViewPlayerSettings": "Visa inställningar för uppspelning", "LabelViewQueue": "Visa spellista", "LabelVolume": "Volym", "LabelWeekdaysToRun": "Veckodagar att köra skanning", @@ -619,11 +625,13 @@ "MessageCheckingCron": "Kontrollerar cron...", "MessageConfirmCloseFeed": "Är du säker på att du vill stänga detta flöde?", "MessageConfirmDeleteBackup": "Är du säker på att du vill radera säkerhetskopian för {0}?", + "MessageConfirmDeleteDevice": "Är du säkert på att du vill radera enheten för e-böcker \"{0}\"?", "MessageConfirmDeleteFile": "Detta kommer att radera filen från ditt filsystem. Är du säker?", "MessageConfirmDeleteLibrary": "Är du säker på att du vill radera biblioteket '{0}'?", "MessageConfirmDeleteLibraryItem": "Detta kommer att radera biblioteksobjektet från databasen och ditt filsystem. Är du säker?", "MessageConfirmDeleteLibraryItems": "Detta kommer att radera {0} biblioteksobjekt från databasen och ditt filsystem. Är du säker?", - "MessageConfirmDeleteSession": "Är du säker på att du vill radera denna session?", + "MessageConfirmDeleteMetadataProvider": "Är du säker på att du vill radera din egen källa för metadata \"{0}\"?", + "MessageConfirmDeleteSession": "Är du säker på att du vill radera detta lyssningstillfälle?", "MessageConfirmForceReScan": "Är du säker på att du vill tvinga omgenomsökning?", "MessageConfirmMarkAllEpisodesFinished": "Är du säker på att du vill markera alla avsnitt som avslutade?", "MessageConfirmMarkAllEpisodesNotFinished": "Är du säker på att du vill markera alla avsnitt som ej avslutade?", @@ -634,7 +642,7 @@ "MessageConfirmPurgeCache": "När du rensar cashen kommer katalogen /metadata/cache att raderas.

Är du säker på att du vill radera katalogen?", "MessageConfirmPurgeItemsCache": "När du rensar cashen för föremål kommer katalogen /metadata/cache/items att raderas.

Är du säker på att du vill radera katalogen?", "MessageConfirmQuickEmbed": "VARNING! Quick embed kommer inte att säkerhetskopiera dina ljudfiler. Se till att du har en säkerhetskopia av dina ljudfiler.

Vill du fortsätta?", - "MessageConfirmReScanLibraryItems": "Är du säker på att du vill göra omgenomsökning för {0} objekt?", + "MessageConfirmReScanLibraryItems": "Är du säker på att du vill göra en ny genomsökning för {0} objekt?", "MessageConfirmRemoveAllChapters": "Är du säker på att du vill ta bort alla kapitel?", "MessageConfirmRemoveAuthor": "Är du säker på att du vill ta bort författaren \"{0}\"?", "MessageConfirmRemoveCollection": "Är du säker på att du vill ta bort samlingen \"{0}\"?", @@ -657,6 +665,7 @@ "MessageDragFilesIntoTrackOrder": "Dra filer till rätt spårordning", "MessageEmbedFinished": "Inbäddning genomförd!", "MessageEpisodesQueuedForDownload": "{0} avsnitt i kö för nedladdning", + "MessageEreaderDevices": "För att säkerställa överföring av e-böcker kan du bli tvungen
att addera ovanstående e-postadress som godkänd
avsändare för varje enhet angiven nedan.", "MessageFeedURLWillBe": "Flödes-URL kommer att vara {0}", "MessageFetching": "Hämtar...", "MessageForceReScanDescription": "kommer att göra en omgångssökning av alla filer som en färsk sökning. ID3-taggar för ljudfiler, OPF-filer och textfiler kommer att sökas som nya.", @@ -684,6 +693,7 @@ "MessageNoCollections": "Inga samlingar", "MessageNoCoversFound": "Inga bokomslag hittades", "MessageNoDescription": "Ingen beskrivning", + "MessageNoDevices": "Inga enheter angivna", "MessageNoDownloadsInProgress": "Inga nedladdningar pågår för närvarande", "MessageNoDownloadsQueued": "Inga nedladdningar i kö", "MessageNoEpisodeMatchesFound": "Inga matchande avsnitt hittades", @@ -742,25 +752,32 @@ "NoteRSSFeedPodcastAppsHttps": "Varning: De flesta podcastappar kräver att RSS-flödets URL används med HTTPS", "NoteRSSFeedPodcastAppsPubDate": "Varning: 1 eller flera av dina avsnitt har inte ett publiceringsdatum. Vissa podcastappar kräver detta.", "NoteUploaderFoldersWithMediaFiles": "Mappar med flera mediefiler hanteras som separata objekt i biblioteket.", - "NoteUploaderOnlyAudioFiles": "Om du bara laddar upp ljudfiler kommer varje ljudfil att hanteras som en separat ljudbok.", + "NoteUploaderOnlyAudioFiles": "
Om du bara laddar upp ljudfiler kommer varje ljudfil att hanteras som en separat ljudbok.", "NoteUploaderUnsupportedFiles": "Oaccepterade filer ignoreras. När du väljer eller släpper en mapp ignoreras andra filer som inte finns i ett objektmapp.", "PlaceholderNewCollection": "Nytt samlingsnamn", - "PlaceholderNewFolderPath": "Nytt mappväg", - "PlaceholderNewPlaylist": "Nytt spellistanamn", + "PlaceholderNewFolderPath": "Nytt sökväg till mappen", + "PlaceholderNewPlaylist": "Nytt namn på spellistan", "PlaceholderSearch": "Sök...", "PlaceholderSearchEpisode": "Sök avsnitt...", + "StatsAuthorsAdded": "författare har adderats", + "StatsBooksAdded": "böcker har adderats", + "StatsBooksAdditional": "Några exempel på det som adderats…", "StatsBooksFinished": "avslutade böcker", "StatsBooksFinishedThisYear": "Några böcker som avslutats under året…", - "StatsSpentListening": "tillbringat på att lyssna", - "StatsTopAuthor": "POPULÄRAST FÖRFATTAREN", - "StatsTopAuthors": "POPULÄRASTE FÖRFATTARNA", - "StatsTopGenre": "Populäraste kategorin", + "StatsBooksListenedTo": "böcker, lyssnat på", + "StatsCollectionGrewTo": "Ditt biblioteks storlek ökade till…", + "StatsSessions": "lyssningstillfällen", + "StatsSpentListening": "tid, som lyssnats", + "StatsTopAuthor": "Populäraste författare", + "StatsTopAuthors": "Populäraste författarna", + "StatsTopGenre": "Populäraste kategori", "StatsTopGenres": "Populäraste kategorierna", - "StatsTopMonth": "Bästa månaden", - "StatsTopNarrator": "Populärast uppläsarna", - "StatsTopNarrators": "Populäraste uppläsaren", - "StatsYearInReview": "SAMMANSTÄLLNING AV ÅRET", - "ToastAccountUpdateSuccess": "Kontot uppdaterat", + "StatsTopMonth": "Bästa månad", + "StatsTopNarrator": "Populäraste uppläsare", + "StatsTopNarrators": "Populäraste uppläsarna", + "StatsTotalDuration": "Med en total varaktighet…", + "StatsYearInReview": "- SAMMANSTÄLLNING AV ÅRET", + "ToastAccountUpdateSuccess": "Kontot har uppdaterats", "ToastAsinRequired": "En ASIN-kod krävs", "ToastAuthorImageRemoveSuccess": "Författarens bild borttagen", "ToastAuthorNotFound": "Författaren \"{0}\" kunde inte identifieras", @@ -793,12 +810,13 @@ "ToastDateTimeInvalidOrIncomplete": "Datum och klockslag är felaktigt eller ej komplett", "ToastDeleteFileFailed": "Misslyckades att radera filen", "ToastDeleteFileSuccess": "Filen har raderats", + "ToastEmailSettingsUpdateSuccess": "Inställningarna av e-post har uppdaterats", "ToastFailedToLoadData": "Misslyckades med att ladda data", "ToastInvalidImageUrl": "Felaktig URL-adress till omslagsbilden", "ToastInvalidMaxEpisodesToDownload": "Ogiltigt maximalt antal avsnitt att ladda ner", "ToastInvalidUrl": "Felaktig URL-adress", "ToastItemCoverUpdateSuccess": "Objektets bokomslag har uppdaterats", - "ToastItemDetailsUpdateSuccess": "Objektdetaljer uppdaterade", + "ToastItemDetailsUpdateSuccess": "Detaljerna om boken har uppdaterats", "ToastItemMarkedAsFinishedFailed": "Misslyckades med att markera den som avslutad", "ToastItemMarkedAsFinishedSuccess": "Den har markerat som avslutad", "ToastItemMarkedAsNotFinishedFailed": "Misslyckades med att markera den som ej avslutad", @@ -817,7 +835,7 @@ "ToastNoUpdatesNecessary": "Inga uppdateringar var nödvändiga", "ToastPlaylistCreateFailed": "Det gick inte att skapa spellistan", "ToastPlaylistCreateSuccess": "Spellistan skapad", - "ToastPlaylistRemoveSuccess": "Spellistan borttagen", + "ToastPlaylistRemoveSuccess": "Spellistan har tagits bort", "ToastPlaylistUpdateSuccess": "Spellistan uppdaterad", "ToastPodcastCreateFailed": "Misslyckades med att skapa podcasten", "ToastPodcastCreateSuccess": "Podcasten skapad framgångsrikt", @@ -833,6 +851,7 @@ "ToastServerSettingsUpdateSuccess": "Inställningarna för servern har uppdaterats", "ToastSessionDeleteFailed": "Misslyckades med att ta bort sessionen", "ToastSessionDeleteSuccess": "Sessionen borttagen", + "ToastSleepTimerDone": "Timer har stängt av lyssning. Sov gott... zZzzZz", "ToastSocketConnected": "Socket ansluten", "ToastSocketDisconnected": "Socket frånkopplad", "ToastSocketFailedToConnect": "Socket misslyckades med att ansluta", From 1d1bdb2f0056552a164b69faca910cc2616d188e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Sat, 18 Jan 2025 20:29:23 +0000 Subject: [PATCH 34/62] Translated using Weblate (Ukrainian) Currently translated at 100.0% (1082 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/uk/ --- client/strings/uk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/uk.json b/client/strings/uk.json index 0d0f8891..d4cff07b 100644 --- a/client/strings/uk.json +++ b/client/strings/uk.json @@ -463,7 +463,7 @@ "LabelNotificationsMaxQueueSize": "Ліміт розміру черги сповіщень", "LabelNotificationsMaxQueueSizeHelp": "Події обмежені до 1 на секунду. Події буде проігноровано, якщо ліміт черги досягнуто. Це запобігає спаму сповіщеннями.", "LabelNumberOfBooks": "Кількість книг", - "LabelNumberOfEpisodes": "Кількість епізодів", + "LabelNumberOfEpisodes": "Кількість серій", "LabelOpenIDAdvancedPermsClaimDescription": "Назва OpenID claim, що містить розширені дозволи на дії користувачів у додатку, які будуть застосовуватися до ролей, що не є адміністраторами (якщо налаштовано). Якщо у відповіді нема claim, у доступі до Audiobookshelf буде відмовлено. Якщо відсутня хоча б одна опція, відповідь буде вважатися хибною. Переконайтеся, що запит постачальника ідентифікаційних даних відповідає очікуваній структурі:", "LabelOpenIDClaims": "Не змінюйте наступні параметри, аби вимкнути розширене призначення груп і дозволів, автоматично призначаючи групу 'Користувач'.", "LabelOpenIDGroupClaimDescription": "Ім'я OpenID claim, що містить список груп користувачів. Зазвичай їх називають групами. Якщо налаштовано, застосунок автоматично призначатиме ролі на основі членства користувача в групах, за умови, що ці групи названі в claim'і без урахування реєстру 'admin', 'user' або 'guest'. Claim мусить містити список, і якщо користувач належить до кількох груп, програма призначить йому роль, що відповідає найвищому рівню доступу. Якщо жодна група не збігається, у доступі буде відмовлено.", From 94df14f0cb105cf4f0abb15bf6868584a377232b Mon Sep 17 00:00:00 2001 From: Kieli Puoli Date: Sat, 18 Jan 2025 10:08:37 +0000 Subject: [PATCH 35/62] Translated using Weblate (Finnish) Currently translated at 50.9% (551 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fi/ --- client/strings/fi.json | 85 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 83 insertions(+), 2 deletions(-) diff --git a/client/strings/fi.json b/client/strings/fi.json index c0a3ce0b..07587a13 100644 --- a/client/strings/fi.json +++ b/client/strings/fi.json @@ -185,10 +185,12 @@ "HeaderSettingsGeneral": "Yleiset", "HeaderSettingsScanner": "Skannaaja", "HeaderSleepTimer": "Uniajastin", + "HeaderStatsLargestItems": "Suurimmat kohteet", + "HeaderStatsLongestItems": "Pisimmät kohteet (h)", "HeaderStatsMinutesListeningChart": "Kuunteluminuutit (viim. 7 pv)", "HeaderStatsRecentSessions": "Viimeaikaiset istunnot", - "HeaderStatsTop10Authors": "Top 10 kirjailijat", - "HeaderStatsTop5Genres": "Top 5 lajityypit", + "HeaderStatsTop10Authors": "Suosituimmat 10 kirjailijaa", + "HeaderStatsTop5Genres": "Suosituimmat 5 lajityyppiä", "HeaderTableOfContents": "Sisällysluettelo", "HeaderTools": "Työkalut", "HeaderUpdateAccount": "Päivitä tili", @@ -199,6 +201,8 @@ "HeaderYearReview": "Vuosi {0} tarkasteltuna", "HeaderYourStats": "Tilastosi", "LabelAbridged": "Lyhennetty", + "LabelAbridgedChecked": "Lyhennetty (tarkistettu)", + "LabelAbridgedUnchecked": "Lyhentämätön (tarkistamaton)", "LabelAccountType": "Tilin tyyppi", "LabelAccountTypeAdmin": "Järjestelmänvalvoja", "LabelAccountTypeGuest": "Vieras", @@ -216,6 +220,7 @@ "LabelAllUsersExcludingGuests": "Kaikki käyttäjät vieraita lukuun ottamatta", "LabelAllUsersIncludingGuests": "Kaikki käyttäjät mukaan lukien vieraat", "LabelAlreadyInYourLibrary": "Jo kirjastossasi", + "LabelApiToken": "Sovellusliittymätunnus", "LabelAudioBitrate": "Äänen bittinopeus (esim. 128k)", "LabelAudioChannels": "Äänikanavat (1 tai 2)", "LabelAudioCodec": "Äänikoodekki", @@ -225,19 +230,30 @@ "LabelAuthors": "Tekijät", "LabelAutoDownloadEpisodes": "Lataa jaksot automaattisesti", "LabelAutoFetchMetadata": "Etsi metadata automaattisesti", + "LabelAutoLaunch": "Automaattinen käynnistys", + "LabelAutoRegister": "Automaattinen rekisteröinti", + "LabelAutoRegisterDescription": "Luo automaattisesti uusia käyttäjiä kirjautumisen jälkeen", "LabelBackToUser": "Takaisin käyttäjään", + "LabelBackupAudioFiles": "Varmuuskopioi äänitiedostot", "LabelBackupLocation": "Varmuuskopiointipaikka", "LabelBackupsEnableAutomaticBackups": "Ota automaattinen varmuuskopiointi käyttöön", "LabelBackupsEnableAutomaticBackupsHelp": "Varmuuskopiot tallennettu kansioon /metadata/backups", "LabelBackupsMaxBackupSize": "Varmuuskopion enimmäiskoko (Gt) (0 rajaton)", + "LabelBackupsMaxBackupSizeHelp": "Virheellisten asetusten estämiseksi varmuuskopiot epäonnistuvat, jos ne ovat asetettua kokoa suurempia.", "LabelBackupsNumberToKeep": "Säilytettävien varmuuskopioiden määrä", + "LabelBackupsNumberToKeepHelp": "Varmuuskopiot poistetaan yksi kerrallaan, joten jos niitä on enemmän kuin yksi, ne on poistettava manuaalisesti.", "LabelBitrate": "Bittinopeus", + "LabelBonus": "Bonus", "LabelBooks": "Kirjat", "LabelButtonText": "Painikkeen teksti", "LabelChangePassword": "Vaihda salasana", "LabelChannels": "Kanavat", + "LabelChapterCount": "{0} lukua", + "LabelChapterTitle": "Luvun nimi", "LabelChapters": "Luvut", + "LabelChaptersFound": "lukua löydetty", "LabelClickForMoreInfo": "Napsauta saadaksesi lisätietoja", + "LabelClickToUseCurrentValue": "Käytä nykyistä arvoa napsauttamalla", "LabelClosePlayer": "Sulje soitin", "LabelCodec": "Koodekki", "LabelCollapseSeries": "Pienennä sarja", @@ -252,7 +268,9 @@ "LabelCoverImageURL": "Kansikuvan URL-osoite", "LabelCreatedAt": "Luotu", "LabelCurrent": "Nykyinen", + "LabelCurrently": "Nyt:", "LabelDays": "Päivää", + "LabelDeleteFromFileSystemCheckbox": "Poista tiedostojärjestelmästä (poista merkintä, jos haluat poistaa vain tietokannasta)", "LabelDescription": "Kuvaus", "LabelDeselectAll": "Poista valinta kaikista", "LabelDevice": "Laite", @@ -264,6 +282,7 @@ "LabelDownloadNEpisodes": "Lataa {0} jaksoa", "LabelDownloadable": "Ladattavissa", "LabelDuration": "Kesto", + "LabelDurationComparisonExactMatch": "(tarkka vastaavuus)", "LabelDurationComparisonLonger": "({0} pidempi)", "LabelDurationComparisonShorter": "({0} lyhyempi)", "LabelDurationFound": "Kesto löydetty:", @@ -272,12 +291,15 @@ "LabelEdit": "Muokkaa", "LabelEmail": "Sähköposti", "LabelEmailSettingsFromAddress": "Osoitteesta", + "LabelEmailSettingsRejectUnauthorized": "Hylkää luvattomat sertifikaatit", "LabelEmailSettingsRejectUnauthorizedHelp": "SSL-sertifikaatin varmentamisen käytöstä poistaminen saattaa vaarantaa yhteytesti turvallisuusriskeihin, kuten man-in-the-middle hyökkäyksiin. Poista käytöstä vain jos ymmärrät vaaran ja luotat yhdistämääsi sähköpostipalvelimeen.", "LabelEmailSettingsSecure": "Turvallinen", "LabelEmailSettingsTestAddress": "Testiosoite", "LabelEmbeddedCover": "Upotettu kansikuva", "LabelEnable": "Ota käyttöön", "LabelEncodingBackupLocation": "Alkuperäisistä audiotiedostoistasi tallennetaan varmuuskopio osoitteessa:", + "LabelEncodingChaptersNotEmbedded": "Lukuja ei upoteta moniraitaisiin äänikirjoihin.", + "LabelEncodingInfoEmbedded": "Kuvailutiedot upotetaan äänikirjakansion ääniraitoihin.", "LabelEncodingStartedNavigation": "Voit poistua sivulta kun tehtävä on aloitettu.", "LabelEncodingTimeWarning": "Koodaus saattaa kestää 30 minuuttiin asti.", "LabelEncodingWarningAdvancedSettings": "Varoitus: Älä päivitä näitä asetuksia ellet ymmärrä ffmpeg-koodausasetuksia.", @@ -291,25 +313,40 @@ "LabelEpisodeUrlFromRssFeed": "Jakson URL RSS-syötteestä", "LabelEpisodes": "Jaksot", "LabelExample": "Esimerkki", + "LabelExpandSeries": "Laajenna sarja", + "LabelExpandSubSeries": "Laajenna alisarja", + "LabelExportOPML": "Vie OPML", "LabelFeedURL": "Syötteen URL", + "LabelFetchingMetadata": "Noudetaan kuvailutietoja", "LabelFile": "Tiedosto", "LabelFileBirthtime": "Tiedoston syntymäaika", "LabelFileBornDate": "Syntynyt {0}", "LabelFileModified": "Muutettu tiedosto", "LabelFileModifiedDate": "Muokattu {0}", "LabelFilename": "Tiedostonimi", + "LabelFilterByUser": "Suodata käyttäjien perusteella", "LabelFindEpisodes": "Etsi jaksoja", "LabelFinished": "Valmis", "LabelFolder": "Kansio", "LabelFolders": "Kansiot", + "LabelFontBold": "Lihavoitu", "LabelFontBoldness": "Kirjasintyyppien lihavointi", + "LabelFontFamily": "Kirjasinperhe", + "LabelFontItalic": "Kursiivi", "LabelFontScale": "Kirjasintyyppien skaalautuminen", + "LabelFontStrikethrough": "Yliviivattu", + "LabelFull": "Täynnä", "LabelGenre": "Lajityyppi", "LabelGenres": "Lajityypit", + "LabelHighestPriority": "Tärkein", "LabelHost": "Isäntä", "LabelHours": "Tunnit", + "LabelIcon": "Kuvake", + "LabelImageURLFromTheWeb": "Kuvan verkko-osoite", "LabelInProgress": "Kesken", "LabelIncomplete": "Keskeneräinen", + "LabelInterval": "Väli", + "LabelIntervalCustomDailyWeekly": "Mukautettu päivittäinen/viikoittainen", "LabelIntervalEvery12Hours": "12 tunnin välein", "LabelIntervalEvery15Minutes": "15 minuutin välein", "LabelIntervalEvery2Hours": "2 tunnin välein", @@ -323,20 +360,34 @@ "LabelLanguages": "Kielet", "LabelLastBookAdded": "Viimeisin lisätty kirja", "LabelLastBookUpdated": "Viimeisin päivitetty kirja", + "LabelLastSeen": "Nähty viimeksi", "LabelLastUpdate": "Viimeisin päivitys", "LabelLayout": "Asettelu", "LabelLayoutSinglePage": "Yksi sivu", + "LabelLayoutSplitPage": "Jaa sivu osiin", + "LabelLess": "Vähemmän", "LabelLibrariesAccessibleToUser": "Käyttäjälle saatavilla olevat kirjastot", "LabelLibrary": "Kirjasto", "LabelLibraryName": "Kirjaston nimi", + "LabelLimit": "Raja", "LabelLineSpacing": "Riviväli", "LabelListenAgain": "Kuuntele uudelleen", + "LabelLogLevelInfo": "Tiedot", + "LabelLogLevelWarn": "Varoita", "LabelLookForNewEpisodesAfterDate": "Etsi uusia jaksoja tämän päivämäärän jälkeen", + "LabelLowestPriority": "Vähiten tärkeä", "LabelMaxEpisodesToDownload": "Jaksojen maksimilatausmäärä. 0 poistaa rajoituksen.", + "LabelMaxEpisodesToKeep": "Säilytettävien jaksojen enimmäismäärä", + "LabelMaxEpisodesToKeepHelp": "Jos arvona on 0, enimmäisrajaa ei ole. Kun uusi jakso ladataan automaattisesti, vanhin jakso poistetaan, jos jaksoja on yli X. Tämä poistaa vain yhden jakson uutta latauskertaa kohden.", "LabelMediaPlayer": "Mediasoitin", "LabelMediaType": "Mediatyyppi", + "LabelMetaTag": "Metatunniste", + "LabelMetaTags": "Metatunnisteet", + "LabelMetadataOrderOfPrecedenceDescription": "Tärkeämmät kuvailutietojen lähteet ohittavat vähemmän tärkeät lähteet", + "LabelMetadataProvider": "Kuvailutietojen toimittaja", "LabelMinute": "Minuutti", "LabelMinutes": "Minuutit", + "LabelMissing": "Puuttuu", "LabelMissingEbook": "Ei e-kirjaa", "LabelMore": "Lisää", "LabelMoreInfo": "Lisätietoja", @@ -348,31 +399,61 @@ "LabelNewestAuthors": "Uusimmat kirjailijat", "LabelNewestEpisodes": "Uusimmat jaksot", "LabelNextBackupDate": "Seuraava varmuuskopiointipäivämäärä", + "LabelNextScheduledRun": "Seuraava ajastettu suorittaminen", + "LabelNoCustomMetadataProviders": "Ei mukautettuja kuvailutietojen toimittajia", + "LabelNoEpisodesSelected": "Jaksoja ei ole valittu", + "LabelNotFinished": "Ei valmis", "LabelNotStarted": "Ei aloitettu", + "LabelNotes": "Muistiinpanoja", + "LabelNotificationAvailableVariables": "Käytettävissä olevat muuttujat", + "LabelNotificationEvent": "Ilmoitustapahtuma", + "LabelNotificationsMaxFailedAttempts": "Epäonnistuneiden yritysten enimmäismäärä", + "LabelNotificationsMaxFailedAttemptsHelp": "Ilmoitukset poistetaan käytöstä, jos niiden lähettäminen epäonnistuu näin monta kertaa", + "LabelNotificationsMaxQueueSize": "Ilmoitustapahtumajonon enimmäispituus", + "LabelNumberOfBooks": "Kirjojen määrä", + "LabelNumberOfEpisodes": "Jaksojen määrä", + "LabelOverwrite": "Korvaa", + "LabelPaginationPageXOfY": "Sivu {0}/{1}", "LabelPassword": "Salasana", "LabelPath": "Polku", "LabelPermanent": "Pysyvä", "LabelPermissionsAccessAllLibraries": "Käyttöoikeudet kaikkiin kirjastoihin", + "LabelPermissionsAccessAllTags": "Saa käyttää kaikkia tunnisteita", + "LabelPermissionsAccessExplicitContent": "Saa käyttää aikuisille tarkoitettua sisältöä", "LabelPermissionsDelete": "Voi poistaa", "LabelPermissionsDownload": "Voi ladata", "LabelPermissionsUpdate": "Voi päivittää", "LabelPermissionsUpload": "Voi lähettää", + "LabelPlayMethod": "Toistotapa", + "LabelPlayerChapterNumberMarker": "{0}/{1}", "LabelPlaylists": "Soittolistat", "LabelPodcast": "Podcast", + "LabelPodcastSearchRegion": "Podcastien hakualue", + "LabelPodcastType": "Podcastien tyyppi", "LabelPodcasts": "Podcastit", "LabelPort": "Portti", + "LabelPrimaryEbook": "Ensisijainen e-kirja", + "LabelProgress": "Edistyminen", + "LabelProvider": "Toimittaja", + "LabelPubDate": "Julkaisupäivä", "LabelPublishYear": "Julkaisuvuosi", + "LabelPublishedDate": "Julkaistu {0}", "LabelPublisher": "Julkaisija", "LabelPublishers": "Julkaisijat", "LabelRSSFeedPreventIndexing": "Estä indeksointi", "LabelRandomly": "Satunnaisesti", "LabelRead": "Lue", "LabelReadAgain": "Lue uudelleen", + "LabelReadEbookWithoutProgress": "Lue e-kirja tallentamatta edistymistietoja", "LabelRecentSeries": "Viimeisimmät sarjat", "LabelRecentlyAdded": "Viimeeksi lisätyt", "LabelRecommended": "Suositeltu", + "LabelRedo": "Tee uudelleen", "LabelRegion": "Alue", + "LabelReleaseDate": "Julkaisupäivä", "LabelRemoveCover": "Poista kansikuva", + "LabelRowsPerPage": "Rivejä sivulla", + "LabelSearchTerm": "Hakusana", "LabelSeason": "Kausi", "LabelSelectAll": "Valitse kaikki", "LabelSelectUsers": "Valitse käyttäjät", From 3a33553aec45355822a7b23d14684e5272b50c71 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D0=BA=D1=81=D0=B8=D0=BC=20=D0=93=D0=BE=D1=80?= =?UTF-8?q?=D0=BF=D0=B8=D0=BD=D1=96=D1=87?= Date: Sat, 18 Jan 2025 20:53:25 +0000 Subject: [PATCH 36/62] Translated using Weblate (Ukrainian) Currently translated at 100.0% (1082 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/uk/ --- client/strings/uk.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/uk.json b/client/strings/uk.json index d4cff07b..c88c3405 100644 --- a/client/strings/uk.json +++ b/client/strings/uk.json @@ -51,7 +51,7 @@ "ButtonNext": "Наступний", "ButtonNextChapter": "Наступна глава", "ButtonNextItemInQueue": "Наступний елемент у черзі", - "ButtonOk": "Гаразд", + "ButtonOk": "Добре", "ButtonOpenFeed": "Відкрити стрічку", "ButtonOpenManager": "Відкрити менеджер", "ButtonPause": "Пауза", From 831f9ab9e7238906cf9d6f3b5afea3a3ffa0d0e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=98=D0=BB=D1=8C=D1=8F=20=D0=A7=D0=B5=D1=80=D0=B2=D0=BE?= =?UTF-8?q?=D0=BD=D0=BD=D1=8B=D0=B9?= Date: Sun, 19 Jan 2025 06:38:20 +0000 Subject: [PATCH 37/62] Translated using Weblate (Russian) Currently translated at 100.0% (1082 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/ru/ --- client/strings/ru.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/ru.json b/client/strings/ru.json index 716a09ea..84a176f2 100644 --- a/client/strings/ru.json +++ b/client/strings/ru.json @@ -51,7 +51,7 @@ "ButtonNext": "Следующий", "ButtonNextChapter": "Следующая глава", "ButtonNextItemInQueue": "Следующий элемент в очереди", - "ButtonOk": "Ok", + "ButtonOk": "Ок", "ButtonOpenFeed": "Открыть канал", "ButtonOpenManager": "Открыть менеджер", "ButtonPause": "Пауза", From 0ac92b6dc1556ad1d10ca6d9d40dcbc4bbe53e08 Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Sun, 19 Jan 2025 13:44:01 +0000 Subject: [PATCH 38/62] Translated using Weblate (Swedish) Currently translated at 82.7% (895 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index 1b1ae6e2..ec83a708 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -209,6 +209,7 @@ "LabelAddToPlaylist": "Lägg till i Spellista", "LabelAddToPlaylistBatch": "Lägg till {0} objekt i Spellistan", "LabelAddedAt": "Datum adderad", + "LabelAddedDate": "Adderad {0}", "LabelAdminUsersOnly": "Endast administratörer", "LabelAll": "Alla", "LabelAllUsers": "Alla användare", @@ -248,6 +249,7 @@ "LabelClickForMoreInfo": "Klicka för mer information", "LabelClickToUseCurrentValue": "Klicka för att använda aktuellt värde", "LabelClosePlayer": "Stäng spelaren", + "LabelCodec": "Codec", "LabelCollapseSeries": "Komprimera serier", "LabelCollection": "Samling", "LabelCollections": "Samlingar", @@ -306,6 +308,7 @@ "LabelFile": "Fil", "LabelFileBirthtime": "Tidpunkt, filen skapades", "LabelFileModified": "Tidpunkt, filen ändrades", + "LabelFileModifiedDate": "Ändrad {0}", "LabelFilename": "Filnamn", "LabelFilterByUser": "Välj användare", "LabelFindEpisodes": "Hitta avsnitt", @@ -315,6 +318,7 @@ "LabelFontBold": "Fetstil", "LabelFontBoldness": "Fetstil", "LabelFontFamily": "Typsnittsfamilj", + "LabelFontItalic": "Kursiverad", "LabelFontScale": "Skala på typsnitt", "LabelFontStrikethrough": "Genomstruken", "LabelGenre": "Kategori", @@ -423,11 +427,13 @@ "LabelPersonalYearReview": "En sammanställning av ditt år, sidan {0}", "LabelPhotoPathURL": "Bildsökväg/URL", "LabelPlayMethod": "Spelläge", + "LabelPlayerChapterNumberMarker": "{0} av {1}", "LabelPlaylists": "Spellistor", "LabelPodcast": "Podcast", "LabelPodcastSearchRegion": "Podcast-sökområde", "LabelPodcastType": "Podcasttyp", "LabelPodcasts": "Podcasts", + "LabelPort": "Port", "LabelPrefixesToIgnore": "Prefix att ignorera (skiftlägesokänsligt)", "LabelPreventIndexing": "Förhindra att ditt flöde indexeras av iTunes och Google-podcastsökmotorer", "LabelPrimaryEbook": "Primär e-bok", @@ -450,6 +456,7 @@ "LabelRecentSeries": "Senaste serierna", "LabelRecentlyAdded": "Nyligen tillagda", "LabelRecommended": "Rekommenderad", + "LabelRegion": "Region", "LabelReleaseDate": "Utgivningsdatum", "LabelRemoveAllMetadataAbs": "Radera alla 'metadata.abs' filer", "LabelRemoveAllMetadataJson": "Radera alla 'metadata.json' filer", @@ -477,7 +484,7 @@ "LabelSettingsAllowIframe": "Tillåt att Audiobookshelf får visas i en iframe", "LabelSettingsAudiobooksOnly": "Endast ljudböcker", "LabelSettingsAudiobooksOnlyHelp": "När detta alternativ aktiveras kommer filer med e-böcker
att ignoreras om de inte lagras i en mapp med en ljudbok.
I det fallet kommer de att anges som en kompletterande e-bok", - "LabelSettingsBookshelfViewHelp": "Skeumorfisk design med trähyllor", + "LabelSettingsBookshelfViewHelp": "Bakgrund med ett utseende liknande en bokhylla i trä", "LabelSettingsChromecastSupport": "Stöd för Chromecast", "LabelSettingsDateFormat": "Datumformat", "LabelSettingsDisableWatcher": "Inaktivera Watcher", @@ -516,11 +523,14 @@ "LabelSettingsStoreMetadataWithItem": "Lagra metadata med objektet", "LabelSettingsStoreMetadataWithItemHelp": "Som standard lagras metadatafiler i mappen '/metadata/items'. Genom att aktivera detta alternativ kommer metadatafilerna att lagra i din biblioteksmapp", "LabelSettingsTimeFormat": "Tidsformat", + "LabelShare": "Dela", "LabelShowAll": "Visa alla", "LabelShowSeconds": "Visa sekunder", "LabelShowSubtitles": "Visa underrubriker", "LabelSize": "Storlek", "LabelSleepTimer": "Timer för sova", + "LabelSortAscending": "Stigande", + "LabelSortDescending": "Fallande", "LabelStart": "Starta", "LabelStartTime": "Starttid", "LabelStarted": "Startad", @@ -588,10 +598,13 @@ "LabelUpdateDetailsHelp": "Tillåt att befintliga detaljer för de valda böckerna ersätts när en matchning hittas", "LabelUpdatedAt": "Uppdaterades", "LabelUploaderDragAndDrop": "Dra och släpp filer eller mappar", + "LabelUploaderDragAndDropFilesOnly": "Dra & släpp filer", "LabelUploaderDropFiles": "Släpp filer", "LabelUploaderItemFetchMetadataHelp": "Hämtar automatiskt titel, författare och serier", + "LabelUseAdvancedOptions": "Använd avancerade inställningar", "LabelUseChapterTrack": "Använd kapitelspår", "LabelUseFullTrack": "Använd hela spåret", + "LabelUseZeroForUnlimited": "0 = Obegränsad", "LabelUser": "Användare", "LabelUsername": "Användarnamn", "LabelValue": "Värde", @@ -602,6 +615,8 @@ "LabelViewQueue": "Visa spellista", "LabelVolume": "Volym", "LabelWeekdaysToRun": "Veckodagar att köra skanning", + "LabelXBooks": "{0} böcker", + "LabelXItems": "{0} objekt", "LabelYearReviewHide": "Dölj årets sammanställning", "LabelYearReviewShow": "Visa årets sammanställning", "LabelYourAudiobookDuration": "Din ljudboks varaktighet", @@ -611,6 +626,9 @@ "MessageAddToPlayerQueue": "Lägg till i spellistan", "MessageAppriseDescription": "För att använda den här funktionen behöver du ha en instans av Apprise API igång eller en API som hanterar dessa begäranden.
Apprise API-urlen bör vara hela URL-sökvägen för att skicka meddelandet, t.ex., om din API-instans är tillgänglig på http://192.168.1.1:8337, bör du ange http://192.168.1.1:8337/notify.", "MessageBackupsDescription": "Säkerhetskopior inkluderar användare, användarnas framsteg, biblioteksobjekt, serverinställningar
och bilder lagrade i /metadata/items & /metadata/authors.
De inkluderar INTE några filer lagrade i dina biblioteksmappar.", + "MessageBackupsLocationEditNote": "OBS: När du ändrar plats för säkerhetskopiorna så flyttas INTE gamla säkerhetskopior dit", + "MessageBackupsLocationNoEditNote": "OBS: Platsen där säkerhetskopiorna lagras bestäms av en central inställning och kan inte ändras här.", + "MessageBackupsLocationPathEmpty": "Uppgiften om platsen för lagring av säkerhetskopior kan inte lämnas tom", "MessageBatchQuickMatchDescription": "Quick Match kommer försöka lägga till saknade omslag och metadata för de valda föremålen. Aktivera alternativen nedan för att tillåta Quick Match att överskriva befintliga omslag och/eller metadata.", "MessageBookshelfNoCollections": "Du har ännu inte skapat några samlingar", "MessageBookshelfNoRSSFeeds": "Inga RSS-flöden är öppna", @@ -736,7 +754,10 @@ "MessageServerCouldNotBeReached": "Servern kunde inte nås", "MessageSetChaptersFromTracksDescription": "Ställ in kapitel med varje ljudfil som ett kapitel och kapitelrubrik som ljudfilens namn", "MessageStartPlaybackAtTime": "Starta uppspelning av \"{0}\" vid tidpunkt {1}?", + "MessageTaskCanceledByUser": "Uppgiften avslutades av användaren", + "MessageTaskFailed": "Misslyckades", "MessageTaskFailedToCreateCacheDirectory": "Misslyckades med att skapa bibliotek för cachen", + "MessageTaskMatchingBooksInLibrary": "Matchar böcker i biblioteket \"{0}\"", "MessageThinking": "Tänker...", "MessageUploaderItemFailed": "Misslyckades med att ladda upp", "MessageUploaderItemSuccess": "Uppladdning lyckades!", @@ -810,6 +831,8 @@ "ToastDateTimeInvalidOrIncomplete": "Datum och klockslag är felaktigt eller ej komplett", "ToastDeleteFileFailed": "Misslyckades att radera filen", "ToastDeleteFileSuccess": "Filen har raderats", + "ToastDeviceTestEmailFailed": "Misslyckades med att skicka ett testmail", + "ToastDeviceTestEmailSuccess": "Ett testmail har skickats", "ToastEmailSettingsUpdateSuccess": "Inställningarna av e-post har uppdaterats", "ToastFailedToLoadData": "Misslyckades med att ladda data", "ToastInvalidImageUrl": "Felaktig URL-adress till omslagsbilden", @@ -832,6 +855,10 @@ "ToastMetadataFilesRemovedNoneFound": "Inga 'metadata.{0}' filer hittades i biblioteket", "ToastMetadataFilesRemovedNoneRemoved": "Inga 'metadata.{0}' filer raderades", "ToastMetadataFilesRemovedSuccess": "{0} 'metadata.{1}' raderades", + "ToastNameEmailRequired": "Ett namn och en e-postadress måste anges", + "ToastNameRequired": "Ett namn måste anges", + "ToastNewUserCreatedFailed": "Misslyckades med att skapa kontot \"{0}\"", + "ToastNewUserCreatedSuccess": "Ett nytt konto har skapats", "ToastNoUpdatesNecessary": "Inga uppdateringar var nödvändiga", "ToastPlaylistCreateFailed": "Det gick inte att skapa spellistan", "ToastPlaylistCreateSuccess": "Spellistan skapad", @@ -839,6 +866,9 @@ "ToastPlaylistUpdateSuccess": "Spellistan uppdaterad", "ToastPodcastCreateFailed": "Misslyckades med att skapa podcasten", "ToastPodcastCreateSuccess": "Podcasten skapad framgångsrikt", + "ToastProviderCreatedFailed": "Misslyckades med att addera en källa", + "ToastProviderCreatedSuccess": "En ny källa har adderats", + "ToastProviderRemoveSuccess": "Källan har tagits bort", "ToastRSSFeedCloseFailed": "Misslyckades med att stänga RSS-flödet", "ToastRSSFeedCloseSuccess": "RSS-flödet stängt", "ToastRemoveItemFromCollectionFailed": "Misslyckades med att ta bort objektet från samlingen", From 152683ff9c439f5f095c773359117d57cf2fca1e Mon Sep 17 00:00:00 2001 From: thehijacker Date: Sun, 19 Jan 2025 10:12:18 +0000 Subject: [PATCH 39/62] Translated using Weblate (Slovenian) Currently translated at 100.0% (1082 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sl/ --- client/strings/sl.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/sl.json b/client/strings/sl.json index c0dc9bf3..73c2504b 100644 --- a/client/strings/sl.json +++ b/client/strings/sl.json @@ -463,7 +463,7 @@ "LabelNotificationsMaxQueueSize": "Največja velikost čakalne vrste za dogodke obvestil", "LabelNotificationsMaxQueueSizeHelp": "Dogodki so omejeni na sprožitev 1 na sekundo. Dogodki bodo prezrti, če je čakalna vrsta najvišja. To preprečuje neželeno pošiljanje obvestil.", "LabelNumberOfBooks": "Število knjig", - "LabelNumberOfEpisodes": "število epizod", + "LabelNumberOfEpisodes": "# epizod", "LabelOpenIDAdvancedPermsClaimDescription": "Ime zahtevka OpenID, ki vsebuje napredna dovoljenja za uporabniška dejanja v aplikaciji, ki bodo veljala za neskrbniške vloge (če je konfigurirano). Če trditev manjka v odgovoru, bo dostop do ABS zavrnjen. Če ena možnost manjka, bo obravnavana kot false. Zagotovite, da se zahtevek ponudnika identitete ujema s pričakovano strukturo:", "LabelOpenIDClaims": "Pustite naslednje možnosti prazne, da onemogočite napredno dodeljevanje skupin in dovoljenj, nato pa samodejno dodelite skupino 'Uporabnik'.", "LabelOpenIDGroupClaimDescription": "Ime zahtevka OpenID, ki vsebuje seznam uporabnikovih skupin. Običajno imenovane skupine. Če je konfigurirana, bo aplikacija samodejno dodelila vloge na podlagi članstva v skupini uporabnika, pod pogojem, da so te skupine v zahtevku poimenovane 'admin', 'user' ali 'guest' brez razlikovanja med velikimi in malimi črkami. Zahtevek mora vsebovati seznam in če uporabnik pripada več skupinam, mu aplikacija dodeli vlogo, ki ustreza najvišjemu nivoju dostopa. Če se nobena skupina ne ujema, bo dostop zavrnjen.", From ca5c8a4d419f01cabd2b0010dddaafe0065c8dc0 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sun, 19 Jan 2025 17:49:53 +0000 Subject: [PATCH 40/62] Translated using Weblate (French) Currently translated at 98.8% (1070 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fr/ --- client/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/fr.json b/client/strings/fr.json index a2e46124..d9c97c35 100644 --- a/client/strings/fr.json +++ b/client/strings/fr.json @@ -51,7 +51,7 @@ "ButtonNext": "Suivant", "ButtonNextChapter": "Chapitre suivant", "ButtonNextItemInQueue": "Élément suivant dans la file d’attente", - "ButtonOk": "D’accord", + "ButtonOk": "D'accord", "ButtonOpenFeed": "Ouvrir le flux", "ButtonOpenManager": "Ouvrir le gestionnaire", "ButtonPause": "Pause", From d8de61437cedde8a9f40a28bd6a8ec6553e48f35 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sun, 19 Jan 2025 17:54:58 +0000 Subject: [PATCH 41/62] Translated using Weblate (German) Currently translated at 100.0% (1082 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/de/ --- client/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/de.json b/client/strings/de.json index 0f09df40..db4e0629 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -51,7 +51,7 @@ "ButtonNext": "Vor", "ButtonNextChapter": "Nächstes Kapitel", "ButtonNextItemInQueue": "Das nächste Element in der Warteschlange", - "ButtonOk": "OK", + "ButtonOk": "Einverstanden", "ButtonOpenFeed": "Feed öffnen", "ButtonOpenManager": "Manager öffnen", "ButtonPause": "Pausieren", From 61827643402690ad8e110d88b6396ebd7b541f55 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sun, 19 Jan 2025 17:52:09 +0000 Subject: [PATCH 42/62] Translated using Weblate (French) Currently translated at 98.8% (1070 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fr/ --- client/strings/fr.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/fr.json b/client/strings/fr.json index d9c97c35..2ba75af1 100644 --- a/client/strings/fr.json +++ b/client/strings/fr.json @@ -459,7 +459,7 @@ "LabelNotificationsMaxQueueSize": "Nombres de notifications maximum à mettre en attente", "LabelNotificationsMaxQueueSizeHelp": "La limite de notification est de un évènement par seconde. Les notifications seront ignorées si la file d’attente est à son maximum. Cela empêche un flot trop important.", "LabelNumberOfBooks": "Nombre de livres", - "LabelNumberOfEpisodes": "Nombre d’épisodes", + "LabelNumberOfEpisodes": "Nombre d'épisodes", "LabelOpenIDAdvancedPermsClaimDescription": "Nom de la demande OpenID qui contient des autorisations avancées pour les actions de l’utilisateur dans l’application, qui s’appliqueront à des rôles autres que celui d’administrateur (s’il est configuré). Si la demande est absente de la réponse, l’accès à ABS sera refusé. Si une seule option est manquante, elle sera considérée comme false. Assurez-vous que la demande du fournisseur d’identité correspond à la structure attendue :", "LabelOpenIDClaims": "Laissez les options suivantes vides pour désactiver l’attribution avancée de groupes et d’autorisations, en attribuant alors automatiquement le groupe « Utilisateur ».", "LabelOpenIDGroupClaimDescription": "Nom de la demande OpenID qui contient une liste des groupes de l’utilisateur. Communément appelé groups. Si elle est configurée, l’application attribuera automatiquement des rôles en fonction de l’appartenance de l’utilisateur à un groupe, à condition que ces groupes soient nommés -sensible à la casse- tel que « admin », « user » ou « guest » dans la demande. Elle doit contenir une liste, et si un utilisateur appartient à plusieurs groupes, l’application attribuera le rôle correspondant au niveau d’accès le plus élevé. Si aucun groupe ne correspond, l’accès sera refusé.", From 60add37ba0b4bb6c8f0383c7aacead6f10ee211a Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sun, 19 Jan 2025 17:55:15 +0000 Subject: [PATCH 43/62] Translated using Weblate (Italian) Currently translated at 98.6% (1067 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/it/ --- client/strings/it.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/it.json b/client/strings/it.json index a8f4c329..712320e9 100644 --- a/client/strings/it.json +++ b/client/strings/it.json @@ -51,7 +51,7 @@ "ButtonNext": "Prossimo", "ButtonNextChapter": "Prossimo Capitolo", "ButtonNextItemInQueue": "Elemento successivo in coda", - "ButtonOk": "D’accordo", + "ButtonOk": "D'accordo", "ButtonOpenFeed": "Apri il flusso", "ButtonOpenManager": "Apri Manager", "ButtonPause": "Pausa", From 64992b33087fd77fc94a0a01ba7907ac7d415f72 Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 19 Jan 2025 17:11:36 -0600 Subject: [PATCH 44/62] Version bump v2.18.0 --- client/package-lock.json | 4 ++-- client/package.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index 822fe2cf..f896b938 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "audiobookshelf-client", - "version": "2.17.7", + "version": "2.18.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "audiobookshelf-client", - "version": "2.17.7", + "version": "2.18.0", "license": "ISC", "dependencies": { "@nuxtjs/axios": "^5.13.6", diff --git a/client/package.json b/client/package.json index 8a90d68e..32d40890 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "audiobookshelf-client", - "version": "2.17.7", + "version": "2.18.0", "buildNumber": 1, "description": "Self-hosted audiobook and podcast client", "main": "index.js", diff --git a/package-lock.json b/package-lock.json index 6fd8cc2e..962b7056 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "audiobookshelf", - "version": "2.17.7", + "version": "2.18.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "audiobookshelf", - "version": "2.17.7", + "version": "2.18.0", "license": "GPL-3.0", "dependencies": { "axios": "^0.27.2", diff --git a/package.json b/package.json index ea73669c..8612a17e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "audiobookshelf", - "version": "2.17.7", + "version": "2.18.0", "buildNumber": 1, "description": "Self-hosted audiobook and podcast server", "main": "index.js", From 6c540ad789ece811b15da9255ee2eee50d13e935 Mon Sep 17 00:00:00 2001 From: mikiher Date: Mon, 20 Jan 2025 08:38:58 +0200 Subject: [PATCH 45/62] Fix missing texture image for subdirectory support --- client/assets/app.css | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/assets/app.css b/client/assets/app.css index 7daf74ff..0cd4ac49 100644 --- a/client/assets/app.css +++ b/client/assets/app.css @@ -5,7 +5,7 @@ @import './absicons.css'; :root { - --bookshelf-texture-img: url(/textures/wood_default.jpg); + --bookshelf-texture-img: url(~static/textures/wood_default.jpg); --bookshelf-divider-bg: linear-gradient(180deg, rgba(149, 119, 90, 1) 0%, rgba(103, 70, 37, 1) 17%, rgba(103, 70, 37, 1) 88%, rgba(71, 48, 25, 1) 100%); } @@ -247,4 +247,4 @@ Bookshelf Label .abs-btn:disabled::before { background-color: rgba(0, 0, 0, 0.2); -} \ No newline at end of file +} From 6745efc4d6845f199fc65fa955f8677af9b24f7d Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 20 Jan 2025 08:59:45 -0600 Subject: [PATCH 46/62] Revert case-insensitive cache manager update in #3780 --- server/managers/ApiCacheManager.js | 3 +-- server/routers/ApiRouter.js | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/server/managers/ApiCacheManager.js b/server/managers/ApiCacheManager.js index 81b58c99..2d8eece8 100644 --- a/server/managers/ApiCacheManager.js +++ b/server/managers/ApiCacheManager.js @@ -42,8 +42,7 @@ class ApiCacheManager { Logger.debug(`[ApiCacheManager] Skipping cache for random sort`) return next() } - // Force URL to be lower case for matching against routes - req.url = req.url.toLowerCase() + const key = { user: req.user.username, url: req.url } const stringifiedKey = JSON.stringify(key) Logger.debug(`[ApiCacheManager] count: ${this.cache.size} size: ${this.cache.calculatedSize}`) diff --git a/server/routers/ApiRouter.js b/server/routers/ApiRouter.js index db9e66c5..5d706e65 100644 --- a/server/routers/ApiRouter.js +++ b/server/routers/ApiRouter.js @@ -65,7 +65,7 @@ class ApiRouter { // // Library Routes // - this.router.get(/^\/libraries/i, this.apiCacheManager.middleware) + this.router.get(/^\/libraries/, this.apiCacheManager.middleware) this.router.post('/libraries', LibraryController.create.bind(this)) this.router.get('/libraries', LibraryController.findAll.bind(this)) this.router.get('/libraries/:id', LibraryController.middleware.bind(this), LibraryController.findOne.bind(this)) From 78994b3589e65265cf28be33bff9284306404ffd Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 20 Jan 2025 09:06:45 -0600 Subject: [PATCH 47/62] Update epub ebook url to include routerBasePath --- client/components/readers/EpubReader.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/components/readers/EpubReader.vue b/client/components/readers/EpubReader.vue index 725e9cc1..350d8596 100644 --- a/client/components/readers/EpubReader.vue +++ b/client/components/readers/EpubReader.vue @@ -97,9 +97,9 @@ export default { }, ebookUrl() { if (this.fileId) { - return `/api/items/${this.libraryItemId}/ebook/${this.fileId}` + return `${this.$config.routerBasePath}/api/items/${this.libraryItemId}/ebook/${this.fileId}` } - return `/api/items/${this.libraryItemId}/ebook` + return `${this.$config.routerBasePath}/api/items/${this.libraryItemId}/ebook` }, themeRules() { const isDark = this.ereaderSettings.theme === 'dark' From 54a4b09592eef315d938c6ad384463f0d36fc0ad Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 20 Jan 2025 13:57:56 -0600 Subject: [PATCH 48/62] Update RSS feed to exclude empty tags, format duration, use CDATA --- server/models/Feed.js | 58 +++++++++++++++++++++++------------- server/models/FeedEpisode.js | 27 ++++++++++------- server/utils/index.js | 2 +- 3 files changed, 54 insertions(+), 33 deletions(-) diff --git a/server/models/Feed.js b/server/models/Feed.js index 41bca449..577dedfb 100644 --- a/server/models/Feed.js +++ b/server/models/Feed.js @@ -561,7 +561,42 @@ class Feed extends Model { * @param {string} hostPrefix */ buildXml(hostPrefix) { - const blockTags = [{ 'itunes:block': 'yes' }, { 'googleplay:block': 'yes' }] + const customElements = [ + { language: this.language || 'en' }, + { author: this.author || 'advplyr' }, + { 'itunes:author': this.author || 'advplyr' }, + { 'itunes:type': this.podcastType || 'serial' }, + { + 'itunes:image': { + _attr: { + href: `${hostPrefix}${this.imageURL}` + } + } + }, + { 'itunes:explicit': !!this.explicit } + ] + + if (this.description) { + customElements.push({ 'itunes:summary': { _cdata: this.description } }) + } + + const itunesOwnersData = [] + if (this.ownerName || this.author) { + itunesOwnersData.push({ 'itunes:name': this.ownerName || this.author }) + } + if (this.ownerEmail) { + itunesOwnersData.push({ 'itunes:email': this.ownerEmail }) + } + if (itunesOwnersData.length) { + customElements.push({ + 'itunes:owner': itunesOwnersData + }) + } + + if (this.preventIndexing) { + customElements.push({ 'itunes:block': 'yes' }, { 'googleplay:block': 'yes' }) + } + const rssData = { title: this.title, description: this.description || '', @@ -571,29 +606,10 @@ class Feed extends Model { image_url: `${hostPrefix}${this.imageURL}`, custom_namespaces: { itunes: 'http://www.itunes.com/dtds/podcast-1.0.dtd', - psc: 'http://podlove.org/simple-chapters', podcast: 'https://podcastindex.org/namespace/1.0', googleplay: 'http://www.google.com/schemas/play-podcasts/1.0' }, - custom_elements: [ - { language: this.language || 'en' }, - { author: this.author || 'advplyr' }, - { 'itunes:author': this.author || 'advplyr' }, - { 'itunes:summary': this.description || '' }, - { 'itunes:type': this.podcastType }, - { - 'itunes:image': { - _attr: { - href: `${hostPrefix}${this.imageURL}` - } - } - }, - { - 'itunes:owner': [{ 'itunes:name': this.ownerName || this.author || '' }, { 'itunes:email': this.ownerEmail || '' }] - }, - { 'itunes:explicit': !!this.explicit }, - ...(this.preventIndexing ? blockTags : []) - ] + custom_elements: customElements } const rssfeed = new RSS(rssData) diff --git a/server/models/FeedEpisode.js b/server/models/FeedEpisode.js index 4133f691..a2540a20 100644 --- a/server/models/FeedEpisode.js +++ b/server/models/FeedEpisode.js @@ -305,6 +305,21 @@ class FeedEpisode extends Model { * @param {string} hostPrefix */ getRSSData(hostPrefix) { + const customElements = [ + { 'itunes:author': this.author || null }, + { 'itunes:duration': Math.round(Number(this.duration)) }, + { 'itunes:summary': this.description || null }, + { + 'itunes:explicit': !!this.explicit + }, + { 'itunes:episodeType': this.episodeType || null }, + { 'itunes:season': this.season || null }, + { 'itunes:episode': this.episode || null } + ].filter((element) => { + // Remove empty custom elements + return Object.values(element)[0] !== null + }) + return { title: this.title, description: this.description || '', @@ -317,17 +332,7 @@ class FeedEpisode extends Model { type: this.enclosureType, size: this.enclosureSize }, - custom_elements: [ - { 'itunes:author': this.author }, - { 'itunes:duration': secondsToTimestamp(this.duration) }, - { 'itunes:summary': this.description || '' }, - { - 'itunes:explicit': !!this.explicit - }, - { 'itunes:episodeType': this.episodeType }, - { 'itunes:season': this.season }, - { 'itunes:episode': this.episode } - ] + custom_elements: customElements } } } diff --git a/server/utils/index.js b/server/utils/index.js index fa7ae92e..a8c0ff54 100644 --- a/server/utils/index.js +++ b/server/utils/index.js @@ -112,7 +112,7 @@ function secondsToTimestamp(seconds, includeMs = false, alwaysIncludeHours = fal var ms = _seconds - Math.floor(seconds) _seconds = Math.floor(_seconds) - var msString = '.' + (includeMs ? ms.toFixed(3) : '0.0').split('.')[1] + const msString = includeMs ? '.' + ms.toFixed(3).split('.')[1] : '' if (alwaysIncludeHours) { return `${_hours.toString().padStart(2, '0')}:${_minutes.toString().padStart(2, '0')}:${_seconds.toString().padStart(2, '0')}${msString}` } From a8b92819d1fcc70ae47cd54ec028310835a1cd0f Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 20 Jan 2025 14:04:18 -0600 Subject: [PATCH 49/62] Update feed episode description to use CDATA --- server/models/FeedEpisode.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/server/models/FeedEpisode.js b/server/models/FeedEpisode.js index a2540a20..5a0dbac3 100644 --- a/server/models/FeedEpisode.js +++ b/server/models/FeedEpisode.js @@ -308,7 +308,6 @@ class FeedEpisode extends Model { const customElements = [ { 'itunes:author': this.author || null }, { 'itunes:duration': Math.round(Number(this.duration)) }, - { 'itunes:summary': this.description || null }, { 'itunes:explicit': !!this.explicit }, @@ -319,6 +318,9 @@ class FeedEpisode extends Model { // Remove empty custom elements return Object.values(element)[0] !== null }) + if (this.description) { + customElements.push({ 'itunes:summary': { _cdata: this.description } }) + } return { title: this.title, From b816c0e7c439532d069589f3cf675b9822776b08 Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 20 Jan 2025 14:18:22 -0600 Subject: [PATCH 50/62] Fix opening feed for series and collections --- server/models/FeedEpisode.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/server/models/FeedEpisode.js b/server/models/FeedEpisode.js index 5a0dbac3..a5fa7262 100644 --- a/server/models/FeedEpisode.js +++ b/server/models/FeedEpisode.js @@ -220,7 +220,7 @@ class FeedEpisode extends Model { const feedEpisodeObjs = [] let numExisting = 0 for (const book of books) { - const trackList = book.libraryItem.getTrackList() + const trackList = book.getTracklist(book.libraryItem.id) const useChapterTitles = this.checkUseChapterTitlesForEpisodes(trackList, book) for (const track of trackList) { // Check for existing episode by filepath From 56550157d1266b2780e901318d0ffe0b35c5e1ed Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sun, 19 Jan 2025 18:05:13 +0000 Subject: [PATCH 51/62] Translated using Weblate (German) Currently translated at 100.0% (1082 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/de/ --- client/strings/de.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/strings/de.json b/client/strings/de.json index db4e0629..99d5bb1e 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -964,7 +964,7 @@ "ToastCollectionRemoveSuccess": "Sammlung entfernt", "ToastCollectionUpdateSuccess": "Sammlung aktualisiert", "ToastCoverUpdateFailed": "Cover-Update fehlgeschlagen", - "ToastDateTimeInvalidOrIncomplete": "Datum und Zeit ist ungültig oder unvollständig", + "ToastDateTimeInvalidOrIncomplete": "Datum und Zeit sind ungültig oder unvollständig", "ToastDeleteFileFailed": "Die Datei konnte nicht gelöscht werden", "ToastDeleteFileSuccess": "Datei gelöscht", "ToastDeviceAddFailed": "Gerät konnte nicht hinzugefügt werden", @@ -1017,7 +1017,7 @@ "ToastNewUserTagError": "Mindestens ein Tag muss ausgewählt sein", "ToastNewUserUsernameError": "Nutzername eingeben", "ToastNoNewEpisodesFound": "Keine neuen Episoden gefunden", - "ToastNoRSSFeed": "Podcast hat keinen RSS Feed", + "ToastNoRSSFeed": "Podcast hat keinen RSS-Feed", "ToastNoUpdatesNecessary": "Keine Änderungen nötig", "ToastNotificationCreateFailed": "Fehler beim erstellen der Benachrichtig", "ToastNotificationDeleteFailed": "Fehler beim löschen der Benachrichtigung", From ff537de132dd10d3e6f6b11e9781e17535361910 Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sun, 19 Jan 2025 18:03:22 +0000 Subject: [PATCH 52/62] Translated using Weblate (French) Currently translated at 99.9% (1081 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fr/ --- client/strings/fr.json | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/client/strings/fr.json b/client/strings/fr.json index 2ba75af1..fd5d2182 100644 --- a/client/strings/fr.json +++ b/client/strings/fr.json @@ -88,6 +88,8 @@ "ButtonSaveTracklist": "Sauvegarder la liste de lecture", "ButtonScan": "Analyser", "ButtonScanLibrary": "Analyser la bibliothèque", + "ButtonScrollLeft": "Défiler vers la gauche", + "ButtonScrollRight": "Défiler vers la droite", "ButtonSearch": "Chercher", "ButtonSelectFolderPath": "Sélectionner le chemin du dossier", "ButtonSeries": "Séries", @@ -190,6 +192,7 @@ "HeaderSettingsExperimental": "Fonctionnalités expérimentales", "HeaderSettingsGeneral": "Général", "HeaderSettingsScanner": "Analyseur", + "HeaderSettingsWebClient": "Client Web", "HeaderSleepTimer": "Minuterie", "HeaderStatsLargestItems": "Éléments les plus grands", "HeaderStatsLongestItems": "Éléments les plus long (hrs)", @@ -297,6 +300,7 @@ "LabelDiscover": "Découvrir", "LabelDownload": "Téléchargement", "LabelDownloadNEpisodes": "Télécharger {0} épisode(s)", + "LabelDownloadable": "Téléchargeable", "LabelDuration": "Durée", "LabelDurationComparisonExactMatch": "(correspondance exacte)", "LabelDurationComparisonLonger": "({0} plus long)", @@ -542,6 +546,7 @@ "LabelServerYearReview": "Bilan de l’année du serveur ({0})", "LabelSetEbookAsPrimary": "Définir comme principale", "LabelSetEbookAsSupplementary": "Définir comme supplémentaire", + "LabelSettingsAllowIframe": "Autoriser l'intégration dans une iframe", "LabelSettingsAudiobooksOnly": "Livres audios seulement", "LabelSettingsAudiobooksOnlyHelp": "L’activation de ce paramètre ignorera les fichiers de type « livre numériques », sauf s’ils se trouvent dans un dossier spécifique , auquel cas ils seront définis comme des livres numériques supplémentaires", "LabelSettingsBookshelfViewHelp": "Interface skeumorphique avec étagères en bois", @@ -584,6 +589,7 @@ "LabelSettingsStoreMetadataWithItemHelp": "Par défaut, les fichiers de métadonnées sont stockés dans /metadata/items. En activant ce paramètre, les fichiers de métadonnées seront stockés dans les dossiers des éléments de votre bibliothèque", "LabelSettingsTimeFormat": "Format d’heure", "LabelShare": "Partager", + "LabelShareDownloadableHelp": "Permet aux utilisateurs de télécharger un fichier ZIP de l'élément de la bibliothèque.", "LabelShareOpen": "Ouvrir le partage", "LabelShareURL": "Partager l’URL", "LabelShowAll": "Tout afficher", @@ -681,6 +687,8 @@ "LabelViewPlayerSettings": "Afficher les paramètres du lecteur", "LabelViewQueue": "Afficher la liste de lecture", "LabelVolume": "Volume", + "LabelWebRedirectURLsDescription": "Autoriser ces URL dans votre fournisseur OAuth pour permettre la redirection vers l'application web après la connexion :", + "LabelWebRedirectURLsSubfolder": "Sous-dossier pour les URL de redirection", "LabelWeekdaysToRun": "Jours de la semaine à exécuter", "LabelXBooks": "{0} livres", "LabelXItems": "{0} éléments", @@ -750,6 +758,7 @@ "MessageConfirmResetProgress": "Êtes-vous sûr·e de vouloir réinitialiser votre progression ?", "MessageConfirmSendEbookToDevice": "Êtes-vous sûr·e de vouloir envoyer {0} livre numérique « {1} » à l'appareil « {2} » ?", "MessageConfirmUnlinkOpenId": "Êtes-vous sûr·e de vouloir dissocier cet utilisateur d’OpenID ?", + "MessageDaysListenedInTheLastYear": "{0} jours écoutés l'an dernier", "MessageDownloadingEpisode": "Téléchargement de l’épisode", "MessageDragFilesIntoTrackOrder": "Faites glisser les fichiers dans l’ordre correct des pistes", "MessageEmbedFailed": "Échec de l’intégration !", @@ -828,6 +837,7 @@ "MessageResetChaptersConfirm": "Êtes-vous sûr·e de vouloir réinitialiser les chapitres et annuler les changements effectués ?", "MessageRestoreBackupConfirm": "Êtes-vous sûr·e de vouloir restaurer la sauvegarde créée le", "MessageRestoreBackupWarning": "Restaurer la sauvegarde écrasera la base de donnée située dans le dossier /config ainsi que les images sur /metadata/items et /metadata/authors.

Les sauvegardes ne touchent pas aux fichiers de la bibliothèque. Si vous avez activé le paramètre pour sauvegarder les métadonnées et les images de couverture dans le même dossier que les fichiers, ceux-ci ne ni sauvegardés, ni écrasés lors de la restauration.

Tous les clients utilisant votre serveur seront automatiquement mis à jour.", + "MessageScheduleLibraryScanNote": "Pour la plupart des utilisateurs, il est recommandé de laisser cette fonctionnalité désactivée et de maintenir le réglage du moniteur de dossier activé. Le moniteur de dossier détectera automatiquement les changements dans vos dossiers de bibliothèque. Le moniteur de dossier ne fonctionne pas pour chaque système de fichiers (comme NFS) afin que les scans de bibliothèques programmés puissent être utilisés à la place.", "MessageSearchResultsFor": "Résultats de recherche pour", "MessageSelected": "{0} sélectionnés", "MessageServerCouldNotBeReached": "Serveur inaccessible", @@ -954,6 +964,7 @@ "ToastCollectionRemoveSuccess": "Collection supprimée", "ToastCollectionUpdateSuccess": "Collection mise à jour", "ToastCoverUpdateFailed": "Échec de la mise à jour de la couverture", + "ToastDateTimeInvalidOrIncomplete": "La date et l'heure sont invalides ou incomplètes", "ToastDeleteFileFailed": "Échec de la suppression du fichier", "ToastDeleteFileSuccess": "Fichier supprimé", "ToastDeviceAddFailed": "Échec de l’ajout de l’appareil", @@ -1006,6 +1017,7 @@ "ToastNewUserTagError": "Au moins une étiquette est requise", "ToastNewUserUsernameError": "Entrez un nom d’utilisateur", "ToastNoNewEpisodesFound": "Aucun nouvel épisode trouvé", + "ToastNoRSSFeed": "Le podcast n'a pas de flux RSS", "ToastNoUpdatesNecessary": "Aucune mise à jour nécessaire", "ToastNotificationCreateFailed": "La création de la notification à échouée", "ToastNotificationDeleteFailed": "La suppression de la notification à échouée", From 63dc81972865c397092544e4c5c0a2a1bf213cce Mon Sep 17 00:00:00 2001 From: "J. Lavoie" Date: Sun, 19 Jan 2025 17:59:29 +0000 Subject: [PATCH 53/62] Translated using Weblate (Italian) Currently translated at 98.7% (1068 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/it/ --- client/strings/it.json | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/client/strings/it.json b/client/strings/it.json index 712320e9..1d04521f 100644 --- a/client/strings/it.json +++ b/client/strings/it.json @@ -289,32 +289,33 @@ "LabelDescription": "Descrizione", "LabelDeselectAll": "Deseleziona Tutto", "LabelDevice": "Dispositivo", - "LabelDeviceInfo": "Info Dispositivo", - "LabelDeviceIsAvailableTo": "Il dispositivo e disponibile su...", + "LabelDeviceInfo": "Info dispositivo", + "LabelDeviceIsAvailableTo": "Il dispositivo e disponibile su…", "LabelDirectory": "Elenco", "LabelDiscFromFilename": "Disco dal nome file", - "LabelDiscFromMetadata": "Disco dal Metadata", + "LabelDiscFromMetadata": "Disco dai metadati", "LabelDiscover": "Scopri", "LabelDownload": "Scarica", - "LabelDownloadNEpisodes": "Download {0} episodi", + "LabelDownloadNEpisodes": "Scarica {0} episodi", + "LabelDownloadable": "Scaricabile", "LabelDuration": "Durata", "LabelDurationComparisonExactMatch": "(corrispondenza esatta)", "LabelDurationComparisonLonger": "({0} lungo)", "LabelDurationComparisonShorter": "({0} corto)", - "LabelDurationFound": "Durata Trovata:", + "LabelDurationFound": "Durata trovata:", "LabelEbook": "Libro digitale", "LabelEbooks": "Libri digitali", "LabelEdit": "Modifica", "LabelEmail": "E-mail", - "LabelEmailSettingsFromAddress": "Da Indirizzo", + "LabelEmailSettingsFromAddress": "Indirizzo del mittente", "LabelEmailSettingsRejectUnauthorized": "Rifiuta i certificati non autorizzati", "LabelEmailSettingsRejectUnauthorizedHelp": "La disattivazione della convalida del certificato SSL può esporre la tua connessione a rischi per la sicurezza, come attacchi man-in-the-middle. Disattiva questa opzione solo se ne comprendi le implicazioni e ti fidi del server di posta a cui ti stai connettendo.", - "LabelEmailSettingsSecure": "SSL", + "LabelEmailSettingsSecure": "Sicuro", "LabelEmailSettingsSecureHelp": "Se vero, la connessione utilizzerà TLS durante la connessione al server. Se false, viene utilizzato TLS se il server supporta l'estensione STARTTLS. Nella maggior parte dei casi impostare questo valore su true se ci si connette alla porta 465. Per la porta 587 o 25 mantenerlo false. (da nodemailer.com/smtp/#authentication)", "LabelEmailSettingsTestAddress": "Indirizzo di test", - "LabelEmbeddedCover": "Cover Integrata", + "LabelEmbeddedCover": "Copertina integrata", "LabelEnable": "Abilita", - "LabelEncodingBackupLocation": "il backup dei file audio verrà archiviato in:", + "LabelEncodingBackupLocation": "Un backup dei file audio verrà archiviato in:", "LabelEncodingChaptersNotEmbedded": "Negli audiolibri multitraccia i capitoli non sono incorporati.", "LabelEncodingClearItemCache": "Assicurati di svuotare periodicamente la cache degli oggetti.", "LabelEncodingFinishedM4B": "L'M4B completato verrà inserito nella cartella:", @@ -459,7 +460,7 @@ "LabelNotificationsMaxQueueSize": "Coda Massima di notifiche eventi", "LabelNotificationsMaxQueueSizeHelp": "Le notifiche sono limitate per 1 al secondo, per evitare lo spamming le notifiche verrano ignorare se superano la coda.", "LabelNumberOfBooks": "Numero di libri", - "LabelNumberOfEpisodes": "# degli episodi", + "LabelNumberOfEpisodes": "Numero di episodi", "LabelOpenIDAdvancedPermsClaimDescription": "Nome dell'attestazione OpenID che contiene autorizzazioni avanzate per le azioni dell'utente all'interno dell'applicazione che verranno applicate ai ruoli non amministratori (se configurato). Se il reclamo manca nella risposta, l'accesso ad ABS verrà negato. Se manca una singola opzione, verrà trattata comefalsa. Assicurati che l'attestazione del provider di identità corrisponda alla struttura prevista:", "LabelOpenIDClaims": "Lasciare vuote le seguenti opzioni per disabilitare l'assegnazione avanzata di gruppi e autorizzazioni, assegnando quindi automaticamente il gruppo \"Utente\".", "LabelOpenIDGroupClaimDescription": "Nome dell'attestazione OpenID che contiene un elenco dei gruppi dell'utente. Comunemente indicato come gruppo. se configurato, l'applicazione assegnerà automaticamente i ruoli in base alle appartenenze ai gruppi dell'utente, a condizione che tali gruppi siano denominati \"admin\", \"utente\" o \"ospite\" senza distinzione tra maiuscole e minuscole nell'attestazione. L'attestazione deve contenere un elenco e, se un utente appartiene a più gruppi, l'applicazione assegnerà il ruolo corrispondente al livello di accesso più alto. Se nessun gruppo corrisponde, l'accesso verrà negato.", From eea446e217ef34d0479f35d6d8cb568d512b74a5 Mon Sep 17 00:00:00 2001 From: SunSpring Date: Mon, 20 Jan 2025 02:30:23 +0000 Subject: [PATCH 54/62] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1082 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/zh_Hans/ --- client/strings/zh-cn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/zh-cn.json b/client/strings/zh-cn.json index 7f72ddef..bbd55ac3 100644 --- a/client/strings/zh-cn.json +++ b/client/strings/zh-cn.json @@ -463,7 +463,7 @@ "LabelNotificationsMaxQueueSize": "通知事件的最大队列大小", "LabelNotificationsMaxQueueSizeHelp": "通知事件被限制为每秒触发 1 个. 如果队列处于最大大小, 则将忽略事件. 这可以防止通知垃圾邮件.", "LabelNumberOfBooks": "图书数量", - "LabelNumberOfEpisodes": "# 集", + "LabelNumberOfEpisodes": "# 集数", "LabelOpenIDAdvancedPermsClaimDescription": "OpenID 声明的名称, 该声明包含应用程序内用户操作的高级权限, 该权限将应用于非管理员角色(如果已配置). 如果响应中缺少声明, 获取 ABS 的权限将被拒绝. 如果缺少单个选项, 它将被视为 禁用. 确保身份提供商的声明与预期结构匹配:", "LabelOpenIDClaims": "将以下选项留空以禁用高级组和权限分配, 然后自动分配 'User' 组.", "LabelOpenIDGroupClaimDescription": "OpenID 声明的名称, 该声明包含用户组的列表. 通常称为如果已配置, 应用程序将根据用户的组成员身份自动分配角色, 前提是这些组在声明中以不区分大小写的方式命名为 'Admin', 'User' 或 'Guest'. 声明应包含一个列表, 如果用户属于多个组, 则应用程序将分配与最高访问级别相对应的角色. 如果没有组匹配, 访问将被拒绝.", From 035590236b6031cc09b1523fb2744458edf20f23 Mon Sep 17 00:00:00 2001 From: Losicek Date: Mon, 20 Jan 2025 10:08:57 +0000 Subject: [PATCH 55/62] Translated using Weblate (Czech) Currently translated at 100.0% (1082 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/cs/ --- client/strings/cs.json | 84 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 78 insertions(+), 6 deletions(-) diff --git a/client/strings/cs.json b/client/strings/cs.json index 3844b048..5fbcfb64 100644 --- a/client/strings/cs.json +++ b/client/strings/cs.json @@ -300,6 +300,7 @@ "LabelDiscover": "Objevit", "LabelDownload": "Stáhnout", "LabelDownloadNEpisodes": "Stáhnout {0} epizody", + "LabelDownloadable": "Ke stažení", "LabelDuration": "Délka trvání", "LabelDurationComparisonExactMatch": "(přesná shoda)", "LabelDurationComparisonLonger": "({0} delší)", @@ -588,6 +589,7 @@ "LabelSettingsStoreMetadataWithItemHelp": "Ve výchozím nastavení jsou soubory metadat uloženy v adresáři /metadata/items, povolením tohoto nastavení budou soubory metadat uloženy ve složkách položek knihovny", "LabelSettingsTimeFormat": "Formát času", "LabelShare": "Sdílet", + "LabelShareDownloadableHelp": "Umožňuje uživatelům s odkazem na sdílení stáhnout soubor zip.", "LabelShareOpen": "Otevřít sdílení", "LabelShareURL": "Sdílet URL", "LabelShowAll": "Zobrazit vše", @@ -822,6 +824,7 @@ "MessagePlaylistCreateFromCollection": "Vytvořit seznam skladeb z kolekce", "MessagePleaseWait": "Čekejte prosím...", "MessagePodcastHasNoRSSFeedForMatching": "Podcast nemá žádnou adresu URL kanálu RSS, kterou by mohl použít pro porovnávání", + "MessagePodcastSearchField": "Zadejte hledaný pojem pro RSS feed URL", "MessageQuickEmbedInProgress": "Probíhá rychlé vkládání", "MessageQuickEmbedQueue": "Zařazeno do fronty pro rychlé vložení ({0} ve frontě)", "MessageQuickMatchAllEpisodes": "Rychlá shoda všech epizod", @@ -834,6 +837,7 @@ "MessageResetChaptersConfirm": "Opravdu chcete resetovat kapitoly a vrátit zpět provedené změny?", "MessageRestoreBackupConfirm": "Opravdu chcete obnovit zálohu vytvořenou dne", "MessageRestoreBackupWarning": "Obnovení zálohy přepíše celou databázi umístěnou v /config a obálku obrázků v /metadata/items & /metadata/authors.

Backups nezmění žádné soubory ve složkách knihovny. Pokud jste povolili nastavení serveru pro ukládání obrázků obalu a metadat do složek knihovny, nebudou zálohovány ani přepsány.

Všichni klienti používající váš server budou automaticky obnoveni.", + "MessageScheduleLibraryScanNote": "Většině uživatelů se doporučuje ponechat tuto funkci vypnutou a ponechat zapnuté nastavení sledování složek. Sledování složek automaticky zjistí změny ve složkách vaší knihovny. Sledování složek nefunguje pro každý souborový systém (jako je NFS), takže místo toho lze použít plánované skenování knihoven.", "MessageSearchResultsFor": "Výsledky hledání pro", "MessageSelected": "{0} vybráno", "MessageServerCouldNotBeReached": "Server je nedostupný", @@ -843,7 +847,7 @@ "MessageShareURLWillBe": "Sdílené URL bude {0}", "MessageStartPlaybackAtTime": "Spustit přehrávání pro \"{0}\" v {1}?", "MessageTaskAudioFileNotWritable": "Nelze zapisovat do audio souboru \"{0}\"", - "MessageTaskCanceledByUser": "Task zrušen uživatelem", + "MessageTaskCanceledByUser": "Příkaz zrušen uživatelem", "MessageTaskDownloadingEpisodeDescription": "Stahování epizody \"{0}\"", "MessageTaskEmbeddingMetadata": "Vkládání metadat", "MessageTaskEmbeddingMetadataDescription": "Vkládání metadat do audioknihy \"{0}\"", @@ -857,7 +861,7 @@ "MessageTaskFailedToMoveM4bFile": "Přesunutí m4b souboru selhalo", "MessageTaskFailedToWriteMetadataFile": "Zápis souboru metadat selhal", "MessageTaskMatchingBooksInLibrary": "Párování knih v knihovně „{0}“", - "MessageTaskNoFilesToScan": "Žádné soubory ke skenování", + "MessageTaskNoFilesToScan": "Žádné soubory k prohledání", "MessageTaskOpmlImport": "Import OPML", "MessageTaskOpmlImportDescription": "Vytváření podcastů z {0} RSS feedů", "MessageTaskOpmlImportFeed": "Importní zdroj OPML", @@ -869,6 +873,7 @@ "MessageTaskOpmlImportFinished": "Přidáno {0} podcastů", "MessageTaskOpmlParseFailed": "Selhalo parsování OPML souboru", "MessageTaskOpmlParseFastFail": "Neplatný OPML soubor tag nenalezen NEBO tag nenalezen", + "MessageTaskOpmlParseNoneFound": "Feed nebyl nalezen v OPML souboru", "MessageTaskScanItemsAdded": "{0} přidáno", "MessageTaskScanItemsMissing": "{0} chybí", "MessageTaskScanItemsUpdated": "{0} aktualizováno", @@ -876,7 +881,7 @@ "MessageTaskScanningFileChanges": "Skenování změn souborů v \"{0}\"", "MessageTaskScanningLibrary": "Skenování \"{0}\" knihovny", "MessageTaskTargetDirectoryNotWritable": "Do cílové složky nelze zapisovat", - "MessageThinking": "Přemýšlení...", + "MessageThinking": "Přemýšlím...", "MessageUploaderItemFailed": "Nahrávání selhalo", "MessageUploaderItemSuccess": "Úspěšně nahráno!", "MessageUploading": "Nahrávám...", @@ -892,7 +897,7 @@ "NoteRSSFeedPodcastAppsPubDate": "Upozornění: 1 nebo více epizod nemá datum vydání. Některé podcastové aplikace to vyžadují.", "NoteUploaderFoldersWithMediaFiles": "Se složkami s multimediálními soubory bude zacházeno jako se samostatnými položkami knihovny.", "NoteUploaderOnlyAudioFiles": "Pokud nahráváte pouze zvukové soubory, bude s každým zvukovým souborem zacházeno jako se samostatnou audioknihou.", - "NoteUploaderUnsupportedFiles": "Nepodporované soubory jsou ignorovány. Při výběru nebo přetažení složky jsou ostatní soubory, které nejsou ve složce položek, ignorovány.", + "NoteUploaderUnsupportedFiles": "Nepodporované soubory jsou ignorovány. Při výběru nebo přetažení složky jsou ostatní soubory, které nejsou ve složce, ignorovány.", "NotificationOnBackupCompletedDescription": "Spuštěno po dokončení zálohování", "NotificationOnBackupFailedDescription": "Spuštěno pokud zálohování selže", "NotificationOnEpisodeDownloadedDescription": "Spuštěno při automatickém stažení epizody podcastu", @@ -909,7 +914,7 @@ "StatsBooksFinishedThisYear": "Některé knihy dokončené tento rok…", "StatsBooksListenedTo": "knih poslechnuto", "StatsCollectionGrewTo": "Vaše kolekce knih se rozrostla na…", - "StatsSessions": "sezení", + "StatsSessions": "sezóna", "StatsSpentListening": "stráveno posloucháním", "StatsTopAuthor": "TOP AUTOR", "StatsTopAuthors": "TOP AUTOŘI", @@ -942,6 +947,8 @@ "ToastBackupUploadSuccess": "Záloha nahrána", "ToastBatchDeleteFailed": "Hromadné smazání selhalo", "ToastBatchDeleteSuccess": "Hromadné smazání proběhlo úspěšně", + "ToastBatchQuickMatchFailed": "Rychlá schoda dávky se nezdařila!", + "ToastBatchQuickMatchStarted": "Začala rychlá shoda {0} knih!", "ToastBatchUpdateFailed": "Dávková aktualizace se nezdařila", "ToastBatchUpdateSuccess": "Dávková aktualizace proběhla úspěšně", "ToastBookmarkCreateFailed": "Vytvoření záložky se nezdařilo", @@ -952,9 +959,12 @@ "ToastChaptersHaveErrors": "Kapitoly obsahují chyby", "ToastChaptersMustHaveTitles": "Kapitoly musí mít názvy", "ToastChaptersRemoved": "Kapitoly odstraněny", + "ToastChaptersUpdated": "Kapitola aktualizována", + "ToastCollectionItemsAddFailed": "Přidávání položek do kolekce selhalo", "ToastCollectionRemoveSuccess": "Kolekce odstraněna", "ToastCollectionUpdateSuccess": "Kolekce aktualizována", "ToastCoverUpdateFailed": "Aktualizace obálky selhala", + "ToastDateTimeInvalidOrIncomplete": "Datum a čas jsou chybné nebo nekompletní", "ToastDeleteFileFailed": "Nepodařilo se smazat soubor", "ToastDeleteFileSuccess": "Soubor smazán", "ToastDeviceAddFailed": "Přidání zařízení selhalo", @@ -962,12 +972,18 @@ "ToastDeviceTestEmailFailed": "Odeslání testovacího emailu selhalo", "ToastDeviceTestEmailSuccess": "Testovací email byl odeslán", "ToastEmailSettingsUpdateSuccess": "Nastavení emailu aktualizována", + "ToastEncodeCancelFailed": "Chyba zrušení kódování", + "ToastEncodeCancelSucces": "Kódování zrušeno", "ToastEpisodeDownloadQueueClearFailed": "Vyčištění fronty selhalo", + "ToastEpisodeDownloadQueueClearSuccess": "Fronta stahování epizod je prázdná", + "ToastEpisodeUpdateSuccess": "{0} epizod aktualizováno", "ToastErrorCannotShare": "Na tomto zařízení nelze nativně sdílet", "ToastFailedToLoadData": "Nepodařilo se načíst data", + "ToastFailedToMatch": "Nepodařilo se spárovat", "ToastFailedToShare": "Sdílení selhalo", "ToastFailedToUpdate": "Aktualizace selhala", "ToastInvalidImageUrl": "Neplatná URL obrázku", + "ToastInvalidMaxEpisodesToDownload": "Neplatný maximální počet epizod ke stažení", "ToastInvalidUrl": "Neplatná URL", "ToastItemCoverUpdateSuccess": "Obálka předmětu byl aktualizována", "ToastItemDeletedFailed": "Smazání položky selhalo", @@ -985,28 +1001,84 @@ "ToastLibraryScanFailedToStart": "Nepodařilo se spustit kontrolu", "ToastLibraryScanStarted": "Kontrola knihovny spuštěna", "ToastLibraryUpdateSuccess": "Knihovna \"{0}\" aktualizována", + "ToastMatchAllAuthorsFailed": "Nepodařilo se přiřadit všechny autory", + "ToastMetadataFilesRemovedError": "Při odstraňování souborů metadat.{0} došlo k chybě", + "ToastMetadataFilesRemovedNoneFound": "Žádná metadata.{0} nebyla nalezena v knihovně", + "ToastMetadataFilesRemovedNoneRemoved": "Žádná metadata.{0} počet odstraněných souborů", + "ToastMetadataFilesRemovedSuccess": "{0} metadata.{1} soubor odstraněn", + "ToastMustHaveAtLeastOnePath": "Musí mít minimálně jednu cestu", + "ToastNameEmailRequired": "Jméno a email jsou vyžadovány", + "ToastNameRequired": "Jméno je vyžadováno", + "ToastNewEpisodesFound": "{0} nových epizod bylo nalezeno", + "ToastNewUserCreatedFailed": "Chyba při vytváření účtu: \"{0}\"", + "ToastNewUserCreatedSuccess": "Vytvořen nový účet", + "ToastNewUserLibraryError": "Musíte vybrat alespoň jednu knihovnu", + "ToastNewUserPasswordError": "Musí mít heslo, pouze uživatel root může mít prázdné heslo", + "ToastNewUserTagError": "Musíte vybrat alespoň jeden tag", + "ToastNewUserUsernameError": "Zadej uživatelské jméno", + "ToastNoNewEpisodesFound": "Nebyla nalezena žádná nová epizoda", + "ToastNoRSSFeed": "Podcast nemá RSS Feed", + "ToastNoUpdatesNecessary": "Nejsou potřeba žádné aktualizace", + "ToastNotificationCreateFailed": "Chyba při vytváření upozornění", + "ToastNotificationDeleteFailed": "Chyba při odstranění upozornění", + "ToastNotificationFailedMaximum": "Maximální počet chybných pokusů >= 0", + "ToastNotificationQueueMaximum": "Maximální počet upozornění ve frontě musí být >= 0", + "ToastNotificationSettingsUpdateSuccess": "Nastavení upozornění aktualizováno", + "ToastNotificationTestTriggerFailed": "Chyba při spuštění testovacího upozornění", + "ToastNotificationTestTriggerSuccess": "Spuštěno testovací upozornění", + "ToastNotificationUpdateSuccess": "Upozornění aktualizováno", "ToastPlaylistCreateFailed": "Vytvoření seznamu přehrávání se nezdařilo", "ToastPlaylistCreateSuccess": "Seznam přehrávání vytvořen", "ToastPlaylistRemoveSuccess": "Seznam přehrávání odstraněn", "ToastPlaylistUpdateSuccess": "Seznam přehrávání aktualizován", "ToastPodcastCreateFailed": "Vytvoření podcastu se nezdařilo", "ToastPodcastCreateSuccess": "Podcast byl úspěšně vytvořen", + "ToastPodcastGetFeedFailed": "Chyba při získání podcastového feedu", + "ToastPodcastNoEpisodesInFeed": "Žádné epizody nenalezeny v RSS feedu", + "ToastPodcastNoRssFeed": "Podcast nemá RSS feed", + "ToastProgressIsNotBeingSynced": "Progres není synchronizován, restartujte přehrávání", + "ToastProviderCreatedFailed": "Chyba při zadání poskytovatele", + "ToastProviderCreatedSuccess": "Nový poskytovatel přidán", + "ToastProviderNameAndUrlRequired": "Jméno a Url jsou vyžadovány", + "ToastProviderRemoveSuccess": "Poskytovatel odstraněn", "ToastRSSFeedCloseFailed": "Nepodařilo se zavřít RSS kanál", "ToastRSSFeedCloseSuccess": "RSS kanál uzavřen", + "ToastRemoveFailed": "Chyba při odstranění", "ToastRemoveItemFromCollectionFailed": "Nepodařilo se odebrat položku z kolekce", "ToastRemoveItemFromCollectionSuccess": "Položka odstraněna z kolekce", + "ToastRemoveItemsWithIssuesFailed": "Chyba při odstranění položek v knihovně s chybami", + "ToastRemoveItemsWithIssuesSuccess": "Odstraněny položky knihovny s chybami", + "ToastRenameFailed": "Chyba při přejmenování", + "ToastRescanFailed": "Znovu prohledání selhalo z důvodu {0}", + "ToastRescanRemoved": "Znova skenování komplení - položka byla odsraněna", + "ToastRescanUpToDate": "Znovu prohledání kompletní - položka aktualizována", + "ToastRescanUpdated": "Znovu skenování komplení - položka byla aktualizována", + "ToastScanFailed": "Prohledání položek knihovny selhalo", + "ToastSelectAtLeastOneUser": "Vyberte alespoň jednoho uživatele", "ToastSendEbookToDeviceFailed": "Odeslání e-knihy do zařízení se nezdařilo", "ToastSendEbookToDeviceSuccess": "E-kniha odeslána do zařízení \"{0}\"", "ToastSeriesUpdateFailed": "Aktualizace série se nezdařila", "ToastSeriesUpdateSuccess": "Aktualizace série byla úspěšná", "ToastServerSettingsUpdateSuccess": "Nastavení serveru aktualizováno", + "ToastSessionCloseFailed": "Chyba při ukončení", "ToastSessionDeleteFailed": "Nepodařilo se smazat relaci", "ToastSessionDeleteSuccess": "Relace smazána", + "ToastSleepTimerDone": "Uspání knížky ... zZzzZz", + "ToastSlugMustChange": "Slug (URL) obsahuje chybné znaky", + "ToastSlugRequired": "Slug (URL) je vyžadována", "ToastSocketConnected": "Socket připojen", "ToastSocketDisconnected": "Socket odpojen", "ToastSocketFailedToConnect": "Socket se nepodařilo připojit", "ToastSortingPrefixesEmptyError": "Musí mít alespoň 1 třídicí předponu", "ToastSortingPrefixesUpdateSuccess": "Aktualizovány předpony třídění ({0} položek)", + "ToastTitleRequired": "Titul je vyžadován", + "ToastUnknownError": "Neznámý error", + "ToastUnlinkOpenIdFailed": "Chyba při odpárování uživatele z OpenID", + "ToastUnlinkOpenIdSuccess": "Uživatel odpárován z uživatele z OpenID", "ToastUserDeleteFailed": "Nepodařilo se smazat uživatele", - "ToastUserDeleteSuccess": "Uživatel smazán" + "ToastUserDeleteSuccess": "Uživatel smazán", + "ToastUserPasswordChangeSuccess": "Heslo bylo změněno úspěšně", + "ToastUserPasswordMismatch": "Hesla se neschodují", + "ToastUserPasswordMustChange": "Nové heslo se musí lišit od předchozího", + "ToastUserRootRequireName": "Musíte zadat uživatelské jméno root" } From 1506589ec80d86681edba83d5d378e3e427012cb Mon Sep 17 00:00:00 2001 From: ugyes Date: Mon, 20 Jan 2025 11:56:25 +0000 Subject: [PATCH 56/62] Translated using Weblate (Hungarian) Currently translated at 97.8% (1059 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/hu/ --- client/strings/hu.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/hu.json b/client/strings/hu.json index b36ab440..5d40c3bc 100644 --- a/client/strings/hu.json +++ b/client/strings/hu.json @@ -51,7 +51,7 @@ "ButtonNext": "Következő", "ButtonNextChapter": "Következő fejezet", "ButtonNextItemInQueue": "Következő elem a sorban", - "ButtonOk": "Oké", + "ButtonOk": "Ok", "ButtonOpenFeed": "Hírcsatorna megnyitása", "ButtonOpenManager": "Kezelő megnyitása", "ButtonPause": "Szünet", From 63b2c6a3ea9080befe5cd8eac47ffcd64019ea14 Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Mon, 20 Jan 2025 10:57:14 +0000 Subject: [PATCH 57/62] Translated using Weblate (Swedish) Currently translated at 83.4% (903 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index ec83a708..90020336 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -49,7 +49,7 @@ "ButtonNext": "Nästa", "ButtonNextChapter": "Nästa kapitel", "ButtonNextItemInQueue": "Nästa objekt i Kö", - "ButtonOk": "Ok", + "ButtonOk": "OK", "ButtonOpenFeed": "Öppna flöde", "ButtonOpenManager": "Öppna Manager", "ButtonPause": "Pausa", @@ -173,7 +173,7 @@ "HeaderSchedule": "Schema", "HeaderScheduleEpisodeDownloads": "Schemalägg automatiska avsnittsnedladdningar", "HeaderScheduleLibraryScans": "Schema för skanning av biblioteket", - "HeaderSession": "Session", + "HeaderSession": "Tillfälle", "HeaderSetBackupSchedule": "Ange schemaläggning för säkerhetskopia", "HeaderSettings": "Inställningar", "HeaderSettingsDisplay": "Visning", @@ -267,7 +267,7 @@ "LabelCustomCronExpression": "Anpassat Cron-uttryck:", "LabelDatetime": "Datum och klockslag", "LabelDays": "Dagar", - "LabelDeleteFromFileSystemCheckbox": "Ta bort från filsystem (avmarkera för att endast ta bort från databasen)", + "LabelDeleteFromFileSystemCheckbox": "Ta även bort från filsystem (avmarkera = raderar endast från databasen)", "LabelDescription": "Beskrivning", "LabelDeselectAll": "Avmarkera alla", "LabelDevice": "Enhet", @@ -498,7 +498,7 @@ "LabelSettingsExperimentalFeatures": "Experimentella funktioner", "LabelSettingsExperimentalFeaturesHelp": "Funktioner under utveckling som behöver din feedback och hjälp med testning. Klicka för att öppna diskussionen på GitHub.", "LabelSettingsFindCovers": "Hitta ett bokomslag", - "LabelSettingsFindCoversHelp": "Om din bok inte har ett bokomslag inbäddat i filen eller
en fil med bokomslaget i mappen kommer
skannern att försöka hitta ett omslag.
OBS: Detta kommer att förlänga inläsningstiden", + "LabelSettingsFindCoversHelp": "Om din bok inte har ett bokomslag inbäddat i filen eller en fil med bokomslaget i mappen kommer skannern att försöka hitta ett omslag. OBS: Detta kommer att förlänga inläsningstiden", "LabelSettingsHideSingleBookSeries": "Dölj serier som endast innehåller en bok", "LabelSettingsHideSingleBookSeriesHelp": "Serier som endast har en bok kommer att
döljas från sidan 'Serier' och hyllorna på startsidan.", "LabelSettingsHomePageBookshelfView": "Använd vy liknande en bokhylla på startsidan", @@ -592,6 +592,7 @@ "LabelUnabridged": "Oavkortad", "LabelUndo": "Ångra", "LabelUnknown": "Okänd", + "LabelUnknownPublishDate": "Okänt publiceringsdatum", "LabelUpdateCover": "Uppdatera bokomslag", "LabelUpdateCoverHelp": "Tillåt att befintliga bokomslag för de valda böckerna ersätts när en matchning hittas", "LabelUpdateDetails": "Uppdatera detaljer", @@ -646,7 +647,7 @@ "MessageConfirmDeleteDevice": "Är du säkert på att du vill radera enheten för e-böcker \"{0}\"?", "MessageConfirmDeleteFile": "Detta kommer att radera filen från ditt filsystem. Är du säker?", "MessageConfirmDeleteLibrary": "Är du säker på att du vill radera biblioteket '{0}'?", - "MessageConfirmDeleteLibraryItem": "Detta kommer att radera biblioteksobjektet från databasen och ditt filsystem. Är du säker?", + "MessageConfirmDeleteLibraryItem": "Detta kommer att radera objektet från databasen och ditt filsystem. Är du säker?", "MessageConfirmDeleteLibraryItems": "Detta kommer att radera {0} biblioteksobjekt från databasen och ditt filsystem. Är du säker?", "MessageConfirmDeleteMetadataProvider": "Är du säker på att du vill radera din egen källa för metadata \"{0}\"?", "MessageConfirmDeleteSession": "Är du säker på att du vill radera detta lyssningstillfälle?", @@ -703,7 +704,7 @@ "MessageMarkAsFinished": "Markera som avslutad", "MessageMarkAsNotFinished": "Markera som ej avslutad", "MessageMatchBooksDescription": "kommer att försöka matcha böcker i biblioteket med en bok från
den valda källan och fylla i uppgifter som saknas och bokomslag.
Inga befintliga uppgifter kommer att ersättas.", - "MessageNoAudioTracks": "Inga ljudspår", + "MessageNoAudioTracks": "Inga ljudspår har hittats", "MessageNoAuthors": "Inga författare", "MessageNoBackups": "Inga säkerhetskopior", "MessageNoBookmarks": "Inga bokmärken", @@ -758,6 +759,10 @@ "MessageTaskFailed": "Misslyckades", "MessageTaskFailedToCreateCacheDirectory": "Misslyckades med att skapa bibliotek för cachen", "MessageTaskMatchingBooksInLibrary": "Matchar böcker i biblioteket \"{0}\"", + "MessageTaskScanItemsAdded": "{0} adderades", + "MessageTaskScanItemsUpdated": "{0} uppdaterades", + "MessageTaskScanNoChangesNeeded": "Inget adderades eller uppdaterades", + "MessageTaskScanningLibrary": "Biblioteket \"{0}\" har skannats", "MessageThinking": "Tänker...", "MessageUploaderItemFailed": "Misslyckades med att ladda upp", "MessageUploaderItemSuccess": "Uppladdning lyckades!", @@ -773,7 +778,7 @@ "NoteRSSFeedPodcastAppsHttps": "Varning: De flesta podcastappar kräver att RSS-flödets URL används med HTTPS", "NoteRSSFeedPodcastAppsPubDate": "Varning: 1 eller flera av dina avsnitt har inte ett publiceringsdatum. Vissa podcastappar kräver detta.", "NoteUploaderFoldersWithMediaFiles": "Mappar med flera mediefiler hanteras som separata objekt i biblioteket.", - "NoteUploaderOnlyAudioFiles": "
Om du bara laddar upp ljudfiler kommer varje ljudfil att hanteras som en separat ljudbok.", + "NoteUploaderOnlyAudioFiles": "Om du bara laddar upp ljudfiler kommer varje ljudfil att hanteras som en separat ljudbok.", "NoteUploaderUnsupportedFiles": "Oaccepterade filer ignoreras. När du väljer eller släpper en mapp ignoreras andra filer som inte finns i ett objektmapp.", "PlaceholderNewCollection": "Nytt samlingsnamn", "PlaceholderNewFolderPath": "Nytt sökväg till mappen", @@ -796,7 +801,7 @@ "StatsTopMonth": "Bästa månad", "StatsTopNarrator": "Populäraste uppläsare", "StatsTopNarrators": "Populäraste uppläsarna", - "StatsTotalDuration": "Med en total varaktighet…", + "StatsTotalDuration": "Med en total varaktighet av…", "StatsYearInReview": "- SAMMANSTÄLLNING AV ÅRET", "ToastAccountUpdateSuccess": "Kontot har uppdaterats", "ToastAsinRequired": "En ASIN-kod krävs", @@ -825,6 +830,7 @@ "ToastCachePurgeSuccess": "Rensning av cachen har genomförts", "ToastChaptersHaveErrors": "Kapitlen har fel", "ToastChaptersMustHaveTitles": "Kapitel måste ha titlar", + "ToastCollectionItemsAddFailed": "Misslyckades med att addera böcker till samlingen", "ToastCollectionRemoveSuccess": "Samlingen har raderats", "ToastCollectionUpdateSuccess": "Samlingen har uppdaterats", "ToastCoverUpdateFailed": "Uppdatering av bokomslag misslyckades", @@ -839,6 +845,8 @@ "ToastInvalidMaxEpisodesToDownload": "Ogiltigt maximalt antal avsnitt att ladda ner", "ToastInvalidUrl": "Felaktig URL-adress", "ToastItemCoverUpdateSuccess": "Objektets bokomslag har uppdaterats", + "ToastItemDeletedFailed": "Misslyckades med att radera objektet", + "ToastItemDeletedSuccess": "Objektet har raderats", "ToastItemDetailsUpdateSuccess": "Detaljerna om boken har uppdaterats", "ToastItemMarkedAsFinishedFailed": "Misslyckades med att markera den som avslutad", "ToastItemMarkedAsFinishedSuccess": "Den har markerat som avslutad", From 3fd9721da6f36a8ba10d23b255029f942336d211 Mon Sep 17 00:00:00 2001 From: SunSpring Date: Mon, 20 Jan 2025 03:18:03 +0000 Subject: [PATCH 58/62] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (1082 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/zh_Hans/ --- client/strings/zh-cn.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/zh-cn.json b/client/strings/zh-cn.json index bbd55ac3..1c536275 100644 --- a/client/strings/zh-cn.json +++ b/client/strings/zh-cn.json @@ -196,7 +196,7 @@ "HeaderSleepTimer": "睡眠计时", "HeaderStatsLargestItems": "最大的项目", "HeaderStatsLongestItems": "项目时长(小时)", - "HeaderStatsMinutesListeningChart": "收听分钟数(最近7天)", + "HeaderStatsMinutesListeningChart": "收听分钟数 (最近7天)", "HeaderStatsRecentSessions": "历史会话", "HeaderStatsTop10Authors": "前 10 位作者", "HeaderStatsTop5Genres": "前 5 种流派", From 6d5aeaa42f57a151cd9d0c6dff82e0bc13ff5136 Mon Sep 17 00:00:00 2001 From: Nicky Larstrup Date: Mon, 20 Jan 2025 14:35:50 +0000 Subject: [PATCH 59/62] Translated using Weblate (Danish) Currently translated at 69.4% (751 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/da/ --- client/strings/da.json | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/client/strings/da.json b/client/strings/da.json index 9850e8da..f678fc62 100644 --- a/client/strings/da.json +++ b/client/strings/da.json @@ -71,6 +71,8 @@ "ButtonQuickMatch": "Hurtig Match", "ButtonReScan": "Gen-scan", "ButtonRead": "Læs", + "ButtonReadLess": "Se mindre", + "ButtonReadMore": "Se mere", "ButtonRefresh": "Genindlæs", "ButtonRemove": "Fjern", "ButtonRemoveAll": "Fjern Alle", @@ -220,7 +222,8 @@ "LabelAddToCollectionBatch": "Tilføj {0} Bøger til Samling", "LabelAddToPlaylist": "Tilføj til Afspilningsliste", "LabelAddToPlaylistBatch": "Tilføj {0} Elementer til Afspilningsliste", - "LabelAddedAt": "Tilføjet Kl.", + "LabelAddedAt": "Tilføjet", + "LabelAddedDate": "Tilføjet {0}", "LabelAdminUsersOnly": "Kun Administratorbrugere", "LabelAll": "Alle", "LabelAllUsers": "Alle Brugere", @@ -241,22 +244,31 @@ "LabelAutoFetchMetadataHelp": "Henter metadata for titler, forfatter og serier for at strømligne uploading. Ekstra metadata har måske brug for at blive matchet efter upload.", "LabelAutoLaunch": "Åben Automatisk", "LabelAutoLaunchDescription": "Viderestil automatisk til login-udbyderen ved navigation til login-siden (manuel overstyring via /login?autoLaunch=0)", + "LabelAutoRegister": "Registrer Automatisk", + "LabelAutoRegisterDescription": "Automatisk oprettelse af nye brugere efter login", "LabelBackToUser": "Tilbage til Bruger", + "LabelBackupAudioFiles": "Sikkerhedskopier lydfiler", "LabelBackupLocation": "Backup Placering", "LabelBackupsEnableAutomaticBackups": "Aktivér automatisk sikkerhedskopiering", "LabelBackupsEnableAutomaticBackupsHelp": "Sikkerhedskopier gemt i /metadata/backups", - "LabelBackupsMaxBackupSize": "Maksimal sikkerhedskopistørrelse (i GB)", + "LabelBackupsMaxBackupSize": "Maksimal sikkerhedskopistørrelse (i GB) (0 for ubegrænset)", "LabelBackupsMaxBackupSizeHelp": "Som en beskyttelse mod fejlkonfiguration fejler sikkerhedskopier, hvis de overstiger den konfigurerede størrelse.", "LabelBackupsNumberToKeep": "Antal sikkerhedskopier at beholde", "LabelBackupsNumberToKeepHelp": "Kun 1 sikkerhedskopi fjernes ad gangen, så hvis du allerede har flere sikkerhedskopier end dette, skal du fjerne dem manuelt.", + "LabelBitrate": "Bitrate", + "LabelBonus": "Bonus", "LabelBooks": "Bøger", "LabelByAuthor": "af {0}", "LabelChangePassword": "Ændre Adgangskode", "LabelChannels": "Kanaler", + "LabelChapterCount": "{0} Kapitler", "LabelChapterTitle": "Kapitel Titel", "LabelChapters": "Kapitler", "LabelChaptersFound": "fundne kapitler", + "LabelClickForMoreInfo": "Klik for mere info", + "LabelClickToUseCurrentValue": "Klik for at bruge nuværende værdi", "LabelClosePlayer": "Luk afspiller", + "LabelCodec": "Kodeks", "LabelCollapseSeries": "Fold Serier Sammen", "LabelCollection": "Samling", "LabelCollections": "Samlinger", @@ -273,6 +285,7 @@ "LabelCurrently": "Aktuelt:", "LabelCustomCronExpression": "Brugerdefineret Cron Udtryk:", "LabelDatetime": "Dato og Tid", + "LabelDays": "Dage", "LabelDescription": "Beskrivelse", "LabelDeselectAll": "Fravælg Alle", "LabelDevice": "Enheds", @@ -284,16 +297,22 @@ "LabelDownload": "Download", "LabelDownloadNEpisodes": "Download {0} episoder", "LabelDuration": "Varighed", + "LabelDurationComparisonLonger": "({0} længere)", + "LabelDurationComparisonShorter": "({0} kortere)", "LabelDurationFound": "Fundet varighed:", "LabelEbook": "E-bog", "LabelEbooks": "E-bøger", "LabelEdit": "Rediger", + "LabelEmail": "E-mail", "LabelEmailSettingsFromAddress": "Fra Adresse", + "LabelEmailSettingsRejectUnauthorized": "Afvis uautoriserede certifikater", "LabelEmailSettingsSecure": "Sikker", "LabelEmailSettingsSecureHelp": "Hvis sandt, vil forbindelsen bruge TLS ved tilslutning til serveren. Hvis falsk, bruges TLS, hvis serveren understøtter STARTTLS-udvidelsen. I de fleste tilfælde skal denne værdi sættes til sandt, hvis du tilslutter til port 465. Til port 587 eller 25 skal du holde det falsk. (fra nodemailer.com/smtp/#authentication)", "LabelEmailSettingsTestAddress": "Test Adresse", "LabelEmbeddedCover": "Indlejret Omslag", "LabelEnable": "Aktivér", + "LabelEncodingBackupLocation": "En sikkerhedskopi af dine originale lydfiler vil blive gemt under:", + "LabelEncodingChaptersNotEmbedded": "Kapitler er ikke indlejret i multi spors lydbøger.", "LabelEnd": "Slut", "LabelEndOfChapter": "Slutningen af kapitel", "LabelEpisode": "Episode", From e9d8b6285886c57df746fb57e0314b13763db37f Mon Sep 17 00:00:00 2001 From: Jan-Eric Myhrgren Date: Mon, 20 Jan 2025 18:06:28 +0000 Subject: [PATCH 60/62] Translated using Weblate (Swedish) Currently translated at 83.4% (903 of 1082 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/sv/ --- client/strings/sv.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/strings/sv.json b/client/strings/sv.json index 90020336..908b2b3a 100644 --- a/client/strings/sv.json +++ b/client/strings/sv.json @@ -204,7 +204,7 @@ "LabelAccountTypeGuest": "Gäst", "LabelAccountTypeUser": "Användare", "LabelActivity": "Aktivitet", - "LabelAddToCollection": "Lägg till i en Samling", + "LabelAddToCollection": "Lägg till i en samling", "LabelAddToCollectionBatch": "Lägg till {0} böcker i en Samling", "LabelAddToPlaylist": "Lägg till i Spellista", "LabelAddToPlaylistBatch": "Lägg till {0} objekt i Spellistan", @@ -255,8 +255,8 @@ "LabelCollections": "Samlingar", "LabelComplete": "Komplett", "LabelConfirmPassword": "Bekräfta lösenord", - "LabelContinueListening": "Fortsätt läsa/lyssna", - "LabelContinueReading": "Fortsätt Läsa", + "LabelContinueListening": "Fortsätt att lyssna", + "LabelContinueReading": "Fortsätt att läsa", "LabelContinueSeries": "Fortsätt med serien", "LabelCover": "Bokomslag", "LabelCoverImageURL": "URL till omslagsbild", @@ -690,7 +690,7 @@ "MessageForceReScanDescription": "kommer att göra en omgångssökning av alla filer som en färsk sökning. ID3-taggar för ljudfiler, OPF-filer och textfiler kommer att sökas som nya.", "MessageImportantNotice": "Viktig meddelande!", "MessageInsertChapterBelow": "Infoga kapitel nedanför", - "MessageItemsSelected": "{0} Objekt markerade", + "MessageItemsSelected": "{0} objekt markerade", "MessageItemsUpdated": "{0} Objekt uppdaterade", "MessageJoinUsOn": "Anslut dig till oss på", "MessageLoading": "Laddar...", From 66b90e0841f2b08a4a401fad202605c8fbaf3c48 Mon Sep 17 00:00:00 2001 From: advplyr Date: Mon, 20 Jan 2025 15:45:09 -0600 Subject: [PATCH 61/62] Version bump v2.18.1 --- client/package-lock.json | 4 ++-- client/package.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/package-lock.json b/client/package-lock.json index f896b938..cf6ed862 100644 --- a/client/package-lock.json +++ b/client/package-lock.json @@ -1,12 +1,12 @@ { "name": "audiobookshelf-client", - "version": "2.18.0", + "version": "2.18.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "audiobookshelf-client", - "version": "2.18.0", + "version": "2.18.1", "license": "ISC", "dependencies": { "@nuxtjs/axios": "^5.13.6", diff --git a/client/package.json b/client/package.json index 32d40890..ee50f38d 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "audiobookshelf-client", - "version": "2.18.0", + "version": "2.18.1", "buildNumber": 1, "description": "Self-hosted audiobook and podcast client", "main": "index.js", diff --git a/package-lock.json b/package-lock.json index 962b7056..8d37a6d3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "audiobookshelf", - "version": "2.18.0", + "version": "2.18.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "audiobookshelf", - "version": "2.18.0", + "version": "2.18.1", "license": "GPL-3.0", "dependencies": { "axios": "^0.27.2", diff --git a/package.json b/package.json index 8612a17e..f194b675 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "audiobookshelf", - "version": "2.18.0", + "version": "2.18.1", "buildNumber": 1, "description": "Self-hosted audiobook and podcast server", "main": "index.js", From c3c846f82dd24e51c144f45e9c8e48aefcb690d8 Mon Sep 17 00:00:00 2001 From: advplyr Date: Tue, 21 Jan 2025 17:58:10 -0600 Subject: [PATCH 62/62] Update rss feed copy to clipboard to show checkmark instead of toast --- client/components/modals/rssfeed/OpenCloseModal.vue | 12 ++++++++---- client/components/modals/rssfeed/ViewFeedModal.vue | 12 ++++++++---- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/client/components/modals/rssfeed/OpenCloseModal.vue b/client/components/modals/rssfeed/OpenCloseModal.vue index 4eff9401..86dfeccf 100644 --- a/client/components/modals/rssfeed/OpenCloseModal.vue +++ b/client/components/modals/rssfeed/OpenCloseModal.vue @@ -12,7 +12,7 @@
- content_copy + {{ copiedToClipboard ? 'check' : 'content_copy' }}
@@ -68,7 +68,8 @@ export default { preventIndexing: true, ownerName: '', ownerEmail: '' - } + }, + copiedToClipboard: false } }, watch: { @@ -160,8 +161,11 @@ export default { this.processing = false }) }, - copyToClipboard(str) { - this.$copyToClipboard(str, this) + async copyToClipboard(str) { + this.copiedToClipboard = await this.$copyToClipboard(str) + setTimeout(() => { + this.copiedToClipboard = false + }, 2000) }, closeFeed() { this.processing = true diff --git a/client/components/modals/rssfeed/ViewFeedModal.vue b/client/components/modals/rssfeed/ViewFeedModal.vue index 70412517..ac594ed7 100644 --- a/client/components/modals/rssfeed/ViewFeedModal.vue +++ b/client/components/modals/rssfeed/ViewFeedModal.vue @@ -6,7 +6,7 @@
- content_copy + {{ copiedToClipboard ? 'check' : 'content_copy' }}
@@ -56,7 +56,8 @@ export default { }, data() { return { - processing: false + processing: false, + copiedToClipboard: false } }, computed: { @@ -76,8 +77,11 @@ export default { } }, methods: { - copyToClipboard(str) { - this.$copyToClipboard(str, this) + async copyToClipboard(str) { + this.copiedToClipboard = await this.$copyToClipboard(str) + setTimeout(() => { + this.copiedToClipboard = false + }, 2000) } }, mounted() {}