From 6de640f53f8a25334c1793420d821d41474862f1 Mon Sep 17 00:00:00 2001 From: Nicholas Wallace Date: Sun, 27 Apr 2025 16:47:44 -0700 Subject: [PATCH 01/22] Add: settings for gradle project in subfolder --- android/.vscode/settings.json | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 android/.vscode/settings.json diff --git a/android/.vscode/settings.json b/android/.vscode/settings.json new file mode 100644 index 00000000..b6212536 --- /dev/null +++ b/android/.vscode/settings.json @@ -0,0 +1,6 @@ +{ + "java.project.root": "android", + "java.import.gradle.enabled": true, + "java.import.gradle.wrapper.enabled": true, + "java.import.gradle.user.home": "${workspaceFolder}/.gradle" +} From 3e682dfe500a80ed4d66d5edc5567770baedab79 Mon Sep 17 00:00:00 2001 From: advplyr Date: Sun, 4 May 2025 16:19:16 -0500 Subject: [PATCH 02/22] Fix local cover images not showing in android auto #1565 --- .../app/player/AbMediaDescriptionAdapter.kt | 9 ++++++-- .../app/player/PlayerNotificationService.kt | 22 ++++++++++++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/AbMediaDescriptionAdapter.kt b/android/app/src/main/java/com/audiobookshelf/app/player/AbMediaDescriptionAdapter.kt index eaf580bd..8a19db5e 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/AbMediaDescriptionAdapter.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/AbMediaDescriptionAdapter.kt @@ -14,7 +14,7 @@ import com.google.android.exoplayer2.Player import com.google.android.exoplayer2.ui.PlayerNotificationManager import kotlinx.coroutines.* -class AbMediaDescriptionAdapter constructor(private val controller: MediaControllerCompat, private val playerNotificationService: PlayerNotificationService) : PlayerNotificationManager.MediaDescriptionAdapter { +class AbMediaDescriptionAdapter (private val controller: MediaControllerCompat, private val playerNotificationService: PlayerNotificationService) : PlayerNotificationManager.MediaDescriptionAdapter { private val tag = "MediaDescriptionAdapter" private var currentIconUri: Uri? = null @@ -35,6 +35,12 @@ class AbMediaDescriptionAdapter constructor(private val controller: MediaControl callback: PlayerNotificationManager.BitmapCallback ): Bitmap? { val albumArtUri = controller.metadata.description.iconUri + val albumBitmap = controller.metadata.description.iconBitmap + + // For local cover images, bitmap is set in PlayerNotificationService TimelineQueueNavigator.getMediaDescription + if (albumBitmap != null) { + return albumBitmap + } return if (currentIconUri != albumArtUri || currentBitmap == null) { // Cache the bitmap for the current audiobook so that successive calls to @@ -59,7 +65,6 @@ class AbMediaDescriptionAdapter constructor(private val controller: MediaControl } null } - } else { currentBitmap } diff --git a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt index cf61c145..e37e7147 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/player/PlayerNotificationService.kt @@ -4,11 +4,14 @@ import android.annotation.SuppressLint import android.app.* import android.content.Context import android.content.Intent +import android.graphics.Bitmap import android.graphics.Color +import android.graphics.ImageDecoder import android.hardware.Sensor import android.hardware.SensorManager import android.net.* import android.os.* +import android.provider.MediaStore import android.provider.Settings import android.support.v4.media.MediaBrowserCompat import android.support.v4.media.MediaDescriptionCompat @@ -308,6 +311,22 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { val coverUri = currentPlaybackSession!!.getCoverUri(ctx) + + var bitmap: Bitmap? = null + // Local covers get bitmap + // Note: In Android Auto for local cover images, setting the icon uri to a local path does not work (cover is blank) + // so we create and set the bitmap here instead of AbMediaDescriptionAdapter + if (currentPlaybackSession!!.localLibraryItem?.coverContentUrl != null) { + bitmap = + if (Build.VERSION.SDK_INT < 28) { + MediaStore.Images.Media.getBitmap(ctx.contentResolver, coverUri) + } else { + val source: ImageDecoder.Source = + ImageDecoder.createSource(ctx.contentResolver, coverUri) + ImageDecoder.decodeBitmap(source) + } + } + // Fix for local images crashing on Android 11 for specific devices // https://stackoverflow.com/questions/64186578/android-11-mediastyle-notification-crash/64232958#64232958 try { @@ -331,7 +350,8 @@ class PlayerNotificationService : MediaBrowserServiceCompat() { .setExtras(extra) .setTitle(currentPlaybackSession!!.displayTitle) - mediaDescriptionBuilder.setIconUri(coverUri) + bitmap?.let { mediaDescriptionBuilder.setIconBitmap(it) } + ?: mediaDescriptionBuilder.setIconUri(coverUri) return mediaDescriptionBuilder.build() } From 7d6c30e73334edfc05dd4800203eb660a0f238c3 Mon Sep 17 00:00:00 2001 From: kuci-JK Date: Fri, 25 Apr 2025 23:08:11 +0200 Subject: [PATCH 03/22] Translated using Weblate (Czech) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/cs/ --- strings/cs.json | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/strings/cs.json b/strings/cs.json index 289aa5a7..3edeead6 100644 --- a/strings/cs.json +++ b/strings/cs.json @@ -6,6 +6,7 @@ "ButtonCancel": "Zrušit", "ButtonCancelTimer": "Zrušit časovač", "ButtonClearFilter": "Vymazat filtr", + "ButtonClearLogs": "Vyčistit logy", "ButtonCloseFeed": "Zavřít kanál", "ButtonCollections": "Kolekce", "ButtonConnect": "Připojit", @@ -28,6 +29,7 @@ "ButtonLocalMedia": "Místní média", "ButtonLogs": "Záznamy", "ButtonManageLocalFiles": "Spravovat místní soubory", + "ButtonMaskServerAddress": "Skrýt adresu serveru", "ButtonNewFolder": "Nová složka", "ButtonNextEpisode": "Další epizoda", "ButtonOk": "Ok", @@ -51,6 +53,7 @@ "ButtonStream": "Streamovat", "ButtonSubmit": "Odeslat", "ButtonSwitchServerUser": "Přepnout server/uživatele", + "ButtonUnmaskServerAddress": "Odkrýt adresu serveru", "ButtonUserStats": "Statistiky uživatele", "ButtonYes": "Ano", "HeaderAccount": "Účet", @@ -238,6 +241,8 @@ "LabelShowAll": "Zobrazit vše", "LabelSize": "Velikost", "LabelSleepTimer": "Spánek po", + "LabelSleepTimerAlmostDoneChime": "Přehrát zvukové upozornění téměř před dokončením", + "LabelSleepTimerAlmostDoneChimeHelp": "Přehrát zvukové upozornění 30 sekund před uplynutím časovače spánku", "LabelStart": "Spustit", "LabelStartTime": "Od", "LabelStatsBestDay": "Nejlepší den", @@ -311,6 +316,7 @@ "MessageNoItems": "Žádné položky", "MessageNoItemsFound": "Nebyly nalezeny žádné položky", "MessageNoListeningSessions": "Žádné poslechové relace", + "MessageNoLogs": "Žádné logy", "MessageNoMediaFolders": "Žádné složky médií", "MessageNoNetworkConnection": "Žádné připojení k síti", "MessageNoPodcastsFound": "Nebyly nalezeny žádné podcasty", From 734328dd1ffed3986ccce86bc1821dd02c014d11 Mon Sep 17 00:00:00 2001 From: johes00 Date: Fri, 25 Apr 2025 17:55:15 +0200 Subject: [PATCH 04/22] Translated using Weblate (German) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/de/ --- strings/de.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/strings/de.json b/strings/de.json index 05ee1c5f..f9e297b6 100644 --- a/strings/de.json +++ b/strings/de.json @@ -241,6 +241,8 @@ "LabelShowAll": "Alles anzeigen", "LabelSize": "Größe", "LabelSleepTimer": "Schlummerfunktion", + "LabelSleepTimerAlmostDoneChime": "Spiel ein Ton kurz vor dem Ende", + "LabelSleepTimerAlmostDoneChimeHelp": "Spiel ein Ton wenn 30 Sekunden auf dem Timer verbleiben", "LabelStart": "Start", "LabelStartTime": "Startzeit", "LabelStatsBestDay": "Bester Tag", From 7aa3c333482e7d970aa16582258b3d1fb0203675 Mon Sep 17 00:00:00 2001 From: biuklija Date: Fri, 25 Apr 2025 07:26:18 +0200 Subject: [PATCH 05/22] Translated using Weblate (Croatian) Currently translated at 99.7% (350 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/hr/ --- strings/hr.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/strings/hr.json b/strings/hr.json index 52a6ddda..2eb5ef7d 100644 --- a/strings/hr.json +++ b/strings/hr.json @@ -240,6 +240,8 @@ "LabelShowAll": "Prikaži sve", "LabelSize": "Veličina", "LabelSleepTimer": "Timer za spavanje", + "LabelSleepTimerAlmostDoneChime": "Zvučno upozorenje prije isteka", + "LabelSleepTimerAlmostDoneChimeHelp": "Reproduciraj zvučno upozorenje 30 sekundi prije isteka timera za spavanje", "LabelStart": "Početak", "LabelStartTime": "Vrijeme pokretanja", "LabelStatsBestDay": "Najbolji dan", From 69ab395798ac6b8b780317d1770020b46491fa4a Mon Sep 17 00:00:00 2001 From: Kabika82 Date: Fri, 25 Apr 2025 09:34:19 +0200 Subject: [PATCH 06/22] Translated using Weblate (Hungarian) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/hu/ --- strings/hu.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/strings/hu.json b/strings/hu.json index c00613e5..d3f92000 100644 --- a/strings/hu.json +++ b/strings/hu.json @@ -241,6 +241,8 @@ "LabelShowAll": "Összes megjelenítése", "LabelSize": "Méret", "LabelSleepTimer": "Alvásidőzítő", + "LabelSleepTimerAlmostDoneChime": "Jelezze hanggal, ha majdnem lejárt", + "LabelSleepTimerAlmostDoneChimeHelp": "Jelezze hanggal, ha az elalvásidőzítőből 30 másodperc maradt", "LabelStart": "Kezdés", "LabelStartTime": "Kezdési idő", "LabelStatsBestDay": "Legjobb nap", From 9b986a7b15350ab35279c49630c0eb07a80f05ab Mon Sep 17 00:00:00 2001 From: dvc05 Date: Fri, 25 Apr 2025 13:14:06 +0200 Subject: [PATCH 07/22] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegian?= =?UTF-8?q?=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 71.5% (251 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/nb_NO/ --- strings/no.json | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/strings/no.json b/strings/no.json index ec6dcce8..b5b058a7 100644 --- a/strings/no.json +++ b/strings/no.json @@ -5,7 +5,8 @@ "ButtonBack": "Tilbake", "ButtonCancel": "Avbryt", "ButtonCancelTimer": "Avbryt tidsur", - "ButtonClearFilter": "Bytt filter", + "ButtonClearFilter": "Fjern filter", + "ButtonClearLogs": "Tøm logger", "ButtonCloseFeed": "Lukk Feed", "ButtonCollections": "Samlinger", "ButtonConnect": "Koble til", @@ -15,14 +16,20 @@ "ButtonCreateNewPlaylist": "Opprett ny spilleliste", "ButtonDelete": "Slett", "ButtonDeleteLocalEpisode": "Slett episode på enheten", + "ButtonDeleteLocalFile": "Slett fil på enheten", + "ButtonDeleteLocalItem": "Slett element på enheten", "ButtonDisableAutoTimer": "Skru av automatisk tidsur", "ButtonDisconnect": "Koble fra", + "ButtonGoToWebClient": "Gå til webklient", "ButtonHistory": "Historikk", "ButtonHome": "Hjem", "ButtonIssues": "Problemer", "ButtonLatest": "Siste", "ButtonLibrary": "Bibliotek", + "ButtonLocalMedia": "Lokal media", + "ButtonLogs": "Logger", "ButtonManageLocalFiles": "Administrer Lokale Filer", + "ButtonMaskServerAddress": "Skjul serveradresse", "ButtonNewFolder": "Ny mappe", "ButtonNextEpisode": "Neste episode", "ButtonOk": "Ok", @@ -33,6 +40,8 @@ "ButtonPlayEpisode": "Spill episode", "ButtonPlaylists": "Spillelister", "ButtonRead": "Les", + "ButtonReadLess": "Vis mindre", + "ButtonReadMore": "Vis mer", "ButtonRemove": "Fjern", "ButtonRemoveFromServer": "Fjern fra tjeneren", "ButtonSave": "Lagre", @@ -40,12 +49,16 @@ "ButtonSearch": "Søk", "ButtonSendEbookToDevice": "Send e-bok til enhet", "ButtonSeries": "Serier", + "ButtonSetTimer": "Sett tidsur", "ButtonStream": "Strøm", "ButtonSubmit": "Send inn", "ButtonSwitchServerUser": "Bytt tjener/bruker", + "ButtonUnmaskServerAddress": "Vis serveradresse", + "ButtonUserStats": "Brukerstatistikk", "ButtonYes": "Ja", "HeaderAccount": "Konto", "HeaderAdvanced": "Avansert", + "HeaderAndroidAutoSettings": "Android Auto-innstillinger", "HeaderAudioTracks": "Lydspor", "HeaderChapters": "Kapittel", "HeaderCollection": "Samlinger", @@ -53,6 +66,7 @@ "HeaderConnectionStatus": "Tilkoblingsstatus", "HeaderDataSettings": "Datainnstillinger", "HeaderDetails": "Detaljer", + "HeaderDownloads": "Nedlastinger", "HeaderEbookFiles": "Ebook filer", "HeaderEpisodes": "Episoder", "HeaderEreaderSettings": "Ereader innstillinger", From 3a8998081c2712ba69d72d8034f763ca6d1dbfe2 Mon Sep 17 00:00:00 2001 From: Fredrik Lindqvist Date: Fri, 25 Apr 2025 11:05:57 +0200 Subject: [PATCH 08/22] Translated using Weblate (Swedish) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/sv/ --- strings/sv.json | 1 + 1 file changed, 1 insertion(+) diff --git a/strings/sv.json b/strings/sv.json index 7a06e4dc..6837ac68 100644 --- a/strings/sv.json +++ b/strings/sv.json @@ -94,6 +94,7 @@ "LabelAll": "Alla", "LabelAllowSeekingOnMediaControls": "Tillåt positionssökning på medieaviseringskontroller", "LabelAlways": "Alltid", + "LabelAndroidAutoBrowseLimitForGrouping": "Alfabetisk neddragningsgräns", "LabelAndroidAutoBrowseLimitForGroupingHelp": "Använd inte alfabetisk neddragning när det finns mindre än denna mängd objekt att visa", "LabelAskConfirmation": "Fråga efter bekräftelse", "LabelAuthor": "Författare", From 8b939e8a022aec3a874cb4d10d373119640e467c Mon Sep 17 00:00:00 2001 From: Robin Stolpe Date: Fri, 25 Apr 2025 11:06:18 +0200 Subject: [PATCH 09/22] Translated using Weblate (Swedish) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/sv/ --- strings/sv.json | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/strings/sv.json b/strings/sv.json index 6837ac68..f8b5f3a3 100644 --- a/strings/sv.json +++ b/strings/sv.json @@ -6,6 +6,7 @@ "ButtonCancel": "Avbryt", "ButtonCancelTimer": "Inaktivera Timer", "ButtonClearFilter": "Rensa filter", + "ButtonClearLogs": "Rensa Loggar", "ButtonCloseFeed": "Stäng flöde", "ButtonCollections": "Samlingar", "ButtonConnect": "Anslut", @@ -20,13 +21,15 @@ "ButtonDisableAutoTimer": "Inaktivera Automatisk Timer", "ButtonDisconnect": "Koppla ur", "ButtonGoToWebClient": "Öppna i webbläsare", - "ButtonHistory": "Histora", + "ButtonHistory": "Historik", "ButtonHome": "Hem", "ButtonIssues": "Objekt med problem", "ButtonLatest": "Senaste", "ButtonLibrary": "Bibliotek", "ButtonLocalMedia": "Lokal media", + "ButtonLogs": "Loggar", "ButtonManageLocalFiles": "Hantera Lokal Filer", + "ButtonMaskServerAddress": "Dölj server adress", "ButtonNewFolder": "Ny Katalog", "ButtonNextEpisode": "Ny Episod", "ButtonOk": "OK", @@ -50,6 +53,7 @@ "ButtonStream": "Ström", "ButtonSubmit": "Skicka", "ButtonSwitchServerUser": "Byt Server/Användare", + "ButtonUnmaskServerAddress": "Visa server adress", "ButtonUserStats": "Användarstatistik", "ButtonYes": "Ja", "HeaderAccount": "Konto", @@ -96,6 +100,7 @@ "LabelAlways": "Alltid", "LabelAndroidAutoBrowseLimitForGrouping": "Alfabetisk neddragningsgräns", "LabelAndroidAutoBrowseLimitForGroupingHelp": "Använd inte alfabetisk neddragning när det finns mindre än denna mängd objekt att visa", + "LabelAndroidAutoBrowseSeriesSequenceOrder": "Serier bokföljd", "LabelAskConfirmation": "Fråga efter bekräftelse", "LabelAuthor": "Författare", "LabelAuthorFirstLast": "Författare (Förnamn Efternamn)", @@ -227,6 +232,7 @@ "LabelSeason": "Säsong", "LabelSelectADevice": "Välj en enhet", "LabelSequenceAscending": "Stigande", + "LabelSequenceDescending": "Sekvens Fallande", "LabelSeries": "Serie", "LabelServerAddress": "Server-adress", "LabelSetEbookAsPrimary": "Ange som primär", @@ -235,6 +241,8 @@ "LabelShowAll": "Visa alla", "LabelSize": "Storlek", "LabelSleepTimer": "Sovtimer", + "LabelSleepTimerAlmostDoneChime": "Spela ett ljud när det är nästan klart", + "LabelSleepTimerAlmostDoneChimeHelp": "Spela ett ljud när sovtimern har 30 sekunder kvar", "LabelStart": "Start", "LabelStartTime": "Starttid", "LabelStatsBestDay": "Bästa dag", @@ -250,6 +258,7 @@ "LabelTag": "Tagg", "LabelTags": "Taggar", "LabelTheme": "Tema", + "LabelThemeBlack": "Svart", "LabelThemeDark": "Mörkt", "LabelThemeLight": "Ljust", "LabelTimeRemaining": "{0} kvar", @@ -291,8 +300,10 @@ "MessageFetching": "Hämtar...", "MessageFollowTheProjectOnGithub": "Följ projektet på Github", "MessageItemDownloadCompleteFailedToCreate": "Objektet laddades ned men det gick inte att skapa ett biblioteksobjekt", + "MessageItemMissing": "Objekt saknas och måste fixas på servern. Vanligast när ett objekt är makerad som saknad beror det på att sökvägen inte är nåbar.", "MessageLoading": "Laddar...", "MessageLoadingServerData": "Läser in serverdata...", + "MessageLocalFolderDescription": "'Intern lagring för appen' är endast tillgänglig för denna app. Denna app stöder endast media som har laddats ner direkt via appen. Delade lagringsmappar kan användas för att tillåta andra appar att få åtkomst till media som laddats ner av denna app.", "MessageMarkAsFinished": "Markera som avslutad", "MessageMediaLinkedToADifferentServer": "Detta media är länkat till en Audiobookshelf-server på annan adress ({0}). Uppspelningspositioner kommer synkas nästa gång appen kan ansluta till servern.", "MessageMediaLinkedToADifferentUser": "Detta media är länkat till den här servern men laddades ned av en annan användare. Uppspelningspositioner kommer endast synkas för den användaren som laddade ned objektet.", @@ -305,17 +316,26 @@ "MessageNoItems": "Inga objekt", "MessageNoItemsFound": "Inga objekt hittades", "MessageNoListeningSessions": "Inga lyssningstillfällen", + "MessageNoLogs": "Inga loggar", "MessageNoMediaFolders": "Inga Mediamappar", "MessageNoNetworkConnection": "Ingen nätverksanslutning", "MessageNoPodcastsFound": "Inga podcasts hittade", "MessageNoSeries": "Inga serier", "MessageNoUpdatesWereNecessary": "Inga uppdateringar var nödvändiga", "MessageNoUserPlaylists": "Du har inga spellistor", + "MessageOldServerConnectionWarning": "Serveranslutningskonfigurationen använder ett gammalt användar-ID. Vänligen ta bort och lägg till denna serveranslutning igen.", + "MessageOldServerConnectionWarningHelp": "Du ställde ursprungligen in anslutningen till denna server före databasflytten i version 2.3.0, som släpptes i juni 2023. En framtida serveruppdatering kommer att ta bort möjligheten att logga in med denna gamla anslutning. Vänligen ta bort den befintliga serveranslutningen och anslut igen (med samma serveradress och inloggningsuppgifter). Om du har nedladdad media på den här enheten måste den laddas ner igen för att synkroniseras med servern.", "MessagePodcastSearchField": "Skriv sökfrågan eller URL-adressen för RSS-flödet", + "MessageProgressSyncFailed": "Det senaste försöket att rapportera din lyssningsprogress till servern misslyckades. Försök att synkronisera progressen kommer att fortsätta göras var 15:e sekund till 1 minut medan media spelas.", "MessageReportBugsAndContribute": "Rapportera buggar, begär funktioner och bidra på", "MessageSeriesAlreadyDownloaded": "Du har redan laddat ner alla böcker i den här serien.", + "MessageSeriesDownloadConfirm": "Vill du ladda ner de saknade {0} boken/böckerna med {1} fil(er), totalt {2}, till mappen {3}?", + "MessageSeriesDownloadConfirmIos": "Vill du ladda ner de saknade {0} boken/böckerna med {1} fil(er), totalt {2}?", + "MessageSocketConnectedOverMeteredCellular": "Socket ansluten via mätad mobilanslutning", "MessageSocketConnectedOverMeteredWifi": "Socket connected over metered Wi-Fi", - "MessageSocketConnectedOverUnmeteredWifi": "Socket connected over unmetered Wi-Fi", + "MessageSocketConnectedOverUnmeteredCellular": "Socket ansluten via omättad mobilanslutning", + "MessageSocketConnectedOverUnmeteredWifi": "Socket ansluten via omättat Wi-Fi", + "MessageSocketNotConnected": "Socket inte ansluten", "NoteRSSFeedPodcastAppsHttps": "VARNING: De flesta applikationer för podcasts kräver att URL:en för RSS-flödet använder HTTPS", "NoteRSSFeedPodcastAppsPubDate": "VARNING: Ett eller flera av dina avsnitt saknar publiceringsdatum. Vissa applikationer för podcasts kräver detta.", "ToastBookmarkCreateFailed": "Det gick inte att skapa bokmärket", From 3360f1a3f6b0c15ca054c53226f09fb5064f7182 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: Fri, 25 Apr 2025 06:53:36 +0200 Subject: [PATCH 10/22] Translated using Weblate (Ukrainian) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/uk/ --- strings/uk.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/strings/uk.json b/strings/uk.json index eb630b30..b23c4af4 100644 --- a/strings/uk.json +++ b/strings/uk.json @@ -241,6 +241,8 @@ "LabelShowAll": "Показати все", "LabelSize": "Розмір", "LabelSleepTimer": "Таймер вимкнення", + "LabelSleepTimerAlmostDoneChime": "Увімкніть дзвінок, коли майже закінчите", + "LabelSleepTimerAlmostDoneChimeHelp": "Увімкніть дзвінок, коли на таймері вимкнення залишиться 30 секунд", "LabelStart": "Початок", "LabelStartTime": "Час Початку", "LabelStatsBestDay": "Найкращий день", From 461a6c8be545c5a231b6d12a2b62ead2b7e2d333 Mon Sep 17 00:00:00 2001 From: Sergey Ponomarev Date: Sun, 27 Apr 2025 11:03:09 +0200 Subject: [PATCH 11/22] Translated using Weblate (Russian) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/ru/ --- strings/ru.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/strings/ru.json b/strings/ru.json index bfe8bf0b..6fb0608f 100644 --- a/strings/ru.json +++ b/strings/ru.json @@ -241,6 +241,8 @@ "LabelShowAll": "Показать все", "LabelSize": "Размер", "LabelSleepTimer": "Таймер сна", + "LabelSleepTimerAlmostDoneChime": "Звуковое предупреждение перед истечением срока", + "LabelSleepTimerAlmostDoneChimeHelp": "Воспроизвести звуковой сигнал за 30 секунд до истечения таймера сна", "LabelStart": "Начало", "LabelStartTime": "Время начала", "LabelStatsBestDay": "Лучший День", From e716cfd19b1428664a47fa7e946fab8d2baff8d6 Mon Sep 17 00:00:00 2001 From: SunSpring Date: Sun, 27 Apr 2025 08:27:06 +0200 Subject: [PATCH 12/22] Translated using Weblate (Chinese (Simplified Han script)) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/zh_Hans/ --- strings/zh-cn.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/strings/zh-cn.json b/strings/zh-cn.json index c86d2fb7..e7ef21ef 100644 --- a/strings/zh-cn.json +++ b/strings/zh-cn.json @@ -241,6 +241,8 @@ "LabelShowAll": "全部显示", "LabelSize": "文件大小", "LabelSleepTimer": "睡眠定时", + "LabelSleepTimerAlmostDoneChime": "快结束时播放铃声", + "LabelSleepTimerAlmostDoneChimeHelp": "当睡眠定时器还剩30秒时播放铃声", "LabelStart": "开始", "LabelStartTime": "开始时间", "LabelStatsBestDay": "最好的一天", From 7c010895e06c9cd1544701b85d1cfd34474dc5d0 Mon Sep 17 00:00:00 2001 From: ABS translator Date: Tue, 29 Apr 2025 01:07:11 +0200 Subject: [PATCH 13/22] Translated using Weblate (Arabic) Currently translated at 59.8% (210 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/ar/ --- strings/ar.json | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/strings/ar.json b/strings/ar.json index 44c68dde..122e8a5b 100644 --- a/strings/ar.json +++ b/strings/ar.json @@ -179,5 +179,35 @@ "LabelLockPlayer": "قفل المشغل", "LabelLow": "منخفض", "LabelMediaType": "نوع الوسائط", - "LabelMedium": "متوسط" + "LabelMedium": "متوسط", + "LabelMissing": "مفقود", + "LabelMore": "أكثر", + "LabelMoreInfo": "معلومات أكثر", + "LabelName": "الاسم", + "LabelNarrator": "الراوي", + "LabelNarrators": "الرواة", + "LabelNavigateWithVolume": "التنقل بمفاتيح التحكم بالصوت", + "LabelNavigateWithVolumeMirrored": "معكوس", + "LabelNavigateWithVolumeWhilePlaying": "السماح لمفاتيح التحكم بالصوت بالتنقل أثناء التشغيل", + "LabelNavigateWithVolumeWhilePlayingDisabled": "إيقاف", + "LabelNavigateWithVolumeWhilePlayingEnabled": "تشغيل", + "LabelNever": "أبداً", + "LabelNewestAuthors": "أجدد المؤلفين", + "LabelNewestEpisodes": "أجدد الحلقات", + "LabelNo": "لا", + "LabelNotFinished": "لم يتم الانتهاء", + "LabelNotStarted": "لم يتم البدء", + "LabelNumEpisodes": "{0} حلقات", + "LabelNumEpisodesIncomplete": "{0} حلقات، {1} غير مكتمل", + "LabelNumberOfEpisodes": "# من الحلقات", + "LabelOff": "ايقاف", + "LabelOn": "تشغيل", + "LabelPassword": "كلمة المرور", + "LabelPath": "مسار", + "LabelPlaybackDirect": "مباشر", + "LabelPlaybackLocal": "محلي", + "LabelPlaybackSpeed": "سرعة التشغيل", + "LabelPlaybackTranscode": "تحويل الترميز", + "LabelPodcast": "مدونة صوتية", + "LabelPodcasts": "مدونات صوتية" } From 345c8ab2171248e6d58d412896df56c9fd9a3036 Mon Sep 17 00:00:00 2001 From: burghy86 Date: Wed, 30 Apr 2025 18:31:40 +0200 Subject: [PATCH 14/22] Translated using Weblate (Italian) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/it/ --- strings/it.json | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/strings/it.json b/strings/it.json index 4886e5af..df12812e 100644 --- a/strings/it.json +++ b/strings/it.json @@ -6,6 +6,7 @@ "ButtonCancel": "Cancella", "ButtonCancelTimer": "Annulla il timer", "ButtonClearFilter": "Elimina filtri", + "ButtonClearLogs": "Pulisci i Log", "ButtonCloseFeed": "Chiudi flusso", "ButtonCollections": "Raccolte", "ButtonConnect": "Connetti", @@ -26,7 +27,9 @@ "ButtonLatest": "Ultimi", "ButtonLibrary": "Biblioteca", "ButtonLocalMedia": "Media locali", + "ButtonLogs": "Log", "ButtonManageLocalFiles": "Gestisci file locali", + "ButtonMaskServerAddress": "Nascondi Indirizzo Server", "ButtonNewFolder": "Nuova cartella", "ButtonNextEpisode": "Prossimo episodio", "ButtonOk": "D'accordo", @@ -50,6 +53,7 @@ "ButtonStream": "Stream", "ButtonSubmit": "Invia", "ButtonSwitchServerUser": "Cambia Server/Utente", + "ButtonUnmaskServerAddress": "Mostra Indirizzo Server", "ButtonUserStats": "Statistiche utente", "ButtonYes": "Sì", "HeaderAccount": "Account", @@ -137,7 +141,7 @@ "LabelEbooks": "Libri digitali", "LabelEnable": "Abilita", "LabelEnableMp3IndexSeeking": "Abilita la ricerca dell'indice mp3", - "LabelEnableMp3IndexSeekingHelp": "Questa impostazione dovrebbe essere abilitata solo se hai file mp3 che non vengono ricercati correttamente. La ricerca imprecisa è molto probabilmente dovuta ai file MP3 a birate variabile (VBR). Questa impostazione imporrà la ricerca dell'indice, in cui viene creata una mappatura tempo-byte durante la lettura del file. In alcuni casi, con file MP3 di grandi dimensioni, si verificherà un ritardo durante la ricerca verso la fine del file.", + "LabelEnableMp3IndexSeekingHelp": "Questa impostazione dovrebbe essere abilitata solo se si dispone di file mp3 la cui ricerca non viene eseguita correttamente. Una ricerca imprecisa è molto probabilmente dovuta a file MP3 con bitrate variabile (VBR). Questa impostazione forza la ricerca dell'indice, in cui viene creata una mappatura tempo-byte durante la lettura del file. In alcuni casi, con file MP3 di grandi dimensioni, si verificherà un ritardo nella ricerca verso la fine del file.", "LabelEnd": "Fine", "LabelEndOfChapter": "Fine Capitolo", "LabelEndTime": "Tempo alla fine", @@ -237,6 +241,8 @@ "LabelShowAll": "Mostra tutto", "LabelSize": "Dimensione", "LabelSleepTimer": "Temporizzatore", + "LabelSleepTimerAlmostDoneChime": "Riproduci un suono quando è quasi finito", + "LabelSleepTimerAlmostDoneChimeHelp": "Riproduci un suono quando mancano 30 secondi al timer di spegnimento", "LabelStart": "Inizo", "LabelStartTime": "Tempo di inizio", "LabelStatsBestDay": "Giorno migliore", @@ -310,6 +316,7 @@ "MessageNoItems": "Nessun oggetto", "MessageNoItemsFound": "Nessun oggetto trovato", "MessageNoListeningSessions": "Nessuna sessione di ascolto", + "MessageNoLogs": "Nessun Log", "MessageNoMediaFolders": "Nessuna cartella media", "MessageNoNetworkConnection": "Nessuna connessione di rete", "MessageNoPodcastsFound": "Nessun podcast trovato", From 8a2814b391042baa10ab85cbbdc14be6aaf8b154 Mon Sep 17 00:00:00 2001 From: ABS translator Date: Thu, 1 May 2025 15:31:52 +0200 Subject: [PATCH 15/22] Translated using Weblate (Arabic) Currently translated at 69.8% (245 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/ar/ --- strings/ar.json | 37 ++++++++++++++++++++++++++++++++++++- 1 file changed, 36 insertions(+), 1 deletion(-) diff --git a/strings/ar.json b/strings/ar.json index 122e8a5b..b4a4555b 100644 --- a/strings/ar.json +++ b/strings/ar.json @@ -209,5 +209,40 @@ "LabelPlaybackSpeed": "سرعة التشغيل", "LabelPlaybackTranscode": "تحويل الترميز", "LabelPodcast": "مدونة صوتية", - "LabelPodcasts": "مدونات صوتية" + "LabelPodcasts": "مدونات صوتية", + "LabelPreventIndexing": "منع فهرسة تغذيتك بواسطة دليل آيتونز وقوقل بودكاست", + "LabelProgress": "تقدم", + "LabelPubDate": "تاريخ النشر", + "LabelPublishYear": "سنة النشر", + "LabelPublishedDate": "منشور {0}", + "LabelRSSFeedCustomOwnerEmail": "البريد الالكتروني المخصص للمالك", + "LabelRSSFeedCustomOwnerName": "الاسم المخصص للمالك", + "LabelRSSFeedPreventIndexing": "منع الفهرسة", + "LabelRSSFeedSlug": "رابط تغذية RSS", + "LabelRandomly": "عشوائياً", + "LabelRead": "اقرأ", + "LabelReadAgain": "اقرأ مرة أخرى", + "LabelRecentSeries": "المسلسلات الحديثة", + "LabelRecentlyAdded": "المضافة حديثاً", + "LabelRemoveFromPlaylist": "إزالة من قائمة التشغيل", + "LabelScaleElapsedTimeBySpeed": "تعديل الوقت المنصرم حسب السرعة", + "LabelSeason": "الموسم", + "LabelSelectADevice": "اختيار جهاز", + "LabelSequenceAscending": "تسلسل تصاعدي", + "LabelSequenceDescending": "تسلسل تنازلي", + "LabelSeries": "المسلسلات", + "LabelServerAddress": "عنوان الخادم", + "LabelSetEbookAsPrimary": "تعيين كرئيسي", + "LabelSetEbookAsSupplementary": "تعيين كتكميلي", + "LabelShakeSensitivity": "حساسية الرج", + "LabelShowAll": "اظهار الكل", + "LabelSize": "الحجم", + "LabelSleepTimer": "مؤقت النوم", + "LabelSleepTimerAlmostDoneChime": "تشغيل نغمة عند اقتراب النهاية", + "LabelSleepTimerAlmostDoneChimeHelp": "تشغيل نغمة عندما يتبقى 30 ثانية على مؤقت النوم", + "LabelStart": "ابدأ", + "LabelStartTime": "وقت البدء", + "LabelStatsBestDay": "أفضل يوم", + "LabelStatsDailyAverage": "المتوسط اليومي", + "LabelStatsDays": "أيام" } From 53eaca8724800c683a4335bdb0947d208351762d Mon Sep 17 00:00:00 2001 From: Adolfo Jayme Barrientos Date: Sun, 4 May 2025 12:51:28 +0200 Subject: [PATCH 16/22] Translated using Weblate (Spanish) Currently translated at 96.8% (340 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/es/ --- strings/es.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/strings/es.json b/strings/es.json index 02c965d1..4ee3d668 100644 --- a/strings/es.json +++ b/strings/es.json @@ -290,7 +290,7 @@ "MessageDownloadingEpisode": "Descargando episodio", "MessageEpisodesQueuedForDownload": "{0} Episodio(s) en cola para descargar", "MessageFeedURLWillBe": "El URL del suministro será {0}", - "MessageFetching": "Buscando...", + "MessageFetching": "Recuperando...", "MessageFollowTheProjectOnGithub": "Sigue el proyecto en GitHub", "MessageItemDownloadCompleteFailedToCreate": "Se ha completado la descarga del elemento, pero no se ha podido crear el elemento de la biblioteca", "MessageLoading": "Cargando...", @@ -317,7 +317,7 @@ "MessageOldServerConnectionWarningHelp": "Usted configuró originalmente la conexión a este servidor antes de la migración de la base de datos en la versión 2.3.0, publicada en junio de 2023. Una futura actualización del servidor eliminará la posibilidad de iniciar sesión con esta conexión antigua. Por favor, elimine la conexión existente al servidor y conéctese de nuevo (utilizando la misma dirección del servidor y las mismas credenciales). Si tiene algún medio descargado en este dispositivo, será necesario descargarlo de nuevo para sincronizarlo con el servidor.", "MessagePodcastSearchField": "Introduzca el término de búsqueda o el URL del suministro RSS", "MessageProgressSyncFailed": "El último intento de informar al servidor sobre el progreso de la escucha ha fallado. Las solicitudes de sincronización de progreso seguirán intentándose cada 15 segundos a 1 minuto mientras se reproduce el contenido multimedia.", - "MessageReportBugsAndContribute": "Reporte erres, solicite funciones y contribuya en", + "MessageReportBugsAndContribute": "Informe de defectos, solicite funciones y contribuya en", "MessageSeriesAlreadyDownloaded": "Ya has descargado todos los libros de esta serie.", "MessageSeriesDownloadConfirm": "¿Descargar {0} libro(s) faltante(s) con {1} archivo(s), totalizando {2} a la carpeta {3}?", "MessageSeriesDownloadConfirmIos": "¿Descargar {0} libro(s) faltantes con {1} archivo(s), con un total de {2}?", From 47cc0c34ebe2ab5e63f48658a8f507dbb9659b22 Mon Sep 17 00:00:00 2001 From: Adolfo Jayme Barrientos Date: Mon, 5 May 2025 12:00:17 +0200 Subject: [PATCH 17/22] Translated using Weblate (Spanish) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/es/ --- strings/es.json | 68 ++++++++++++++++++++++++++++--------------------- 1 file changed, 39 insertions(+), 29 deletions(-) diff --git a/strings/es.json b/strings/es.json index 4ee3d668..7e3b1813 100644 --- a/strings/es.json +++ b/strings/es.json @@ -6,6 +6,7 @@ "ButtonCancel": "Cancelar", "ButtonCancelTimer": "Cancelar temporizador", "ButtonClearFilter": "Quitar filtros", + "ButtonClearLogs": "Vaciar registros", "ButtonCloseFeed": "Cerrar suministro", "ButtonCollections": "Colecciones", "ButtonConnect": "Conectar", @@ -26,7 +27,9 @@ "ButtonLatest": "Más recientes", "ButtonLibrary": "Biblioteca", "ButtonLocalMedia": "Medios locales", + "ButtonLogs": "Registros", "ButtonManageLocalFiles": "Gestionar archivos locales", + "ButtonMaskServerAddress": "Enmascarar dirección de servidor", "ButtonNewFolder": "Carpeta nueva", "ButtonNextEpisode": "Próximo episodio", "ButtonOk": "Aceptar", @@ -50,6 +53,7 @@ "ButtonStream": "En directo", "ButtonSubmit": "Enviar", "ButtonSwitchServerUser": "Cambiar servidor/usuario", + "ButtonUnmaskServerAddress": "Desenmascarar dirección de servidor", "ButtonUserStats": "Estadísticas de usuario", "ButtonYes": "Sí", "HeaderAccount": "Cuenta", @@ -137,7 +141,7 @@ "LabelEbooks": "Libros electrónicos", "LabelEnable": "Activar", "LabelEnableMp3IndexSeeking": "Activar la búsqueda de índices mp3", - "LabelEnableMp3IndexSeekingHelp": "Esta configuración solo debe habilitarse si tienes archivos mp3 que no se están buscando correctamente. La búsqueda inexacta probablemente se deba a archivos MP3 de tasa de bits variable (VBR). Esta configuración forzará la búsqueda de índice, en la que se construye un mapeo de tiempo a bytes mientras se lee el archivo. En algunos casos, con archivos MP3 grandes, puede haber un retraso al buscar hacia el final del archivo.", + "LabelEnableMp3IndexSeekingHelp": "Esta configuración solo debe activarse si tiene archivos MP3 en los que no se puede buscar correctamente. La búsqueda inexacta probablemente se deba a archivos MP3 con tasas de bits variables (VBR). Esta configuración forzará la búsqueda de índice, en la que se construye una asignación de tiempo a bytes mientras se lee el archivo. En algunos casos, con archivos MP3 grandes, puede haber un retraso al buscar hacia el final del archivo.", "LabelEnd": "Fin", "LabelEndOfChapter": "Fin del capítulo", "LabelEndTime": "Hora de finalización", @@ -223,31 +227,33 @@ "LabelReadAgain": "Volver a leer", "LabelRecentSeries": "Series recientes", "LabelRecentlyAdded": "Añadidos recientemente", - "LabelRemoveFromPlaylist": "Eliminar de la Lista de Reproducción", + "LabelRemoveFromPlaylist": "Quitar de la lista de reproducción", "LabelScaleElapsedTimeBySpeed": "Escala el tiempo transcurrido según la velocidad", "LabelSeason": "Temporada", - "LabelSelectADevice": "Selecciona un dispositivo", - "LabelSequenceAscending": "Secuencia Ascendente", - "LabelSequenceDescending": "Secuencia Descendente", + "LabelSelectADevice": "Seleccione un dispositivo", + "LabelSequenceAscending": "Secuencia ascendente", + "LabelSequenceDescending": "Secuencia descendente", "LabelSeries": "Serie", "LabelServerAddress": "Dirección del servidor", "LabelSetEbookAsPrimary": "Establecer como primario", "LabelSetEbookAsSupplementary": "Establecer como suplementario", "LabelShakeSensitivity": "Sensibilidad a la sacudida", - "LabelShowAll": "Mostrar Todos", + "LabelShowAll": "Mostrar todo", "LabelSize": "Tamaño", "LabelSleepTimer": "Temporizador de apagado", + "LabelSleepTimerAlmostDoneChime": "Timbrar casi al terminar", + "LabelSleepTimerAlmostDoneChimeHelp": "Reproducir una señal acústica cuando queden 30 segundos en el temporizador", "LabelStart": "Iniciar", - "LabelStartTime": "Tiempo de Inicio", - "LabelStatsBestDay": "Mejor Día", - "LabelStatsDailyAverage": "Promedio Diario", + "LabelStartTime": "Tiempo de inicio", + "LabelStatsBestDay": "Mejor día", + "LabelStatsDailyAverage": "Promedio diario", "LabelStatsDays": "Días", - "LabelStatsDaysListened": "Días Escuchando", + "LabelStatsDaysListened": "Días escuchando", "LabelStatsInARow": "seguidos", - "LabelStatsItemsFinished": "Elementos Terminados", + "LabelStatsItemsFinished": "Elementos terminados", "LabelStatsMinutes": "minutos", - "LabelStatsMinutesListening": "Minutos Escuchando", - "LabelStatsWeekListening": "Tiempo escuchando en la Semana", + "LabelStatsMinutesListening": "Minutos escuchando", + "LabelStatsWeekListening": "Tiempo escuchando en la semana", "LabelStreamingUsingCellular": "Streaming por móvil", "LabelTag": "Etiqueta", "LabelTags": "Etiquetas", @@ -263,14 +269,14 @@ "LabelType": "Tipo", "LabelUnknown": "Desconocido", "LabelUnlockPlayer": "Desbloquear reproductor", - "LabelUseBookshelfView": "Usar la Vista de Estantería", + "LabelUseBookshelfView": "Usar vista de estantería", "LabelUser": "Usuario", - "LabelUsername": "Nombre de Usuario", - "LabelVeryHigh": "Muy Alto", - "LabelVeryLow": "Muy Bajo", - "LabelYearReviewHide": "Ocultar Resumen del año", - "LabelYearReviewShow": "Resumen del año", - "LabelYourBookmarks": "Tus Marcadores", + "LabelUsername": "Nombre de usuario", + "LabelVeryHigh": "Muy alto", + "LabelVeryLow": "Muy bajo", + "LabelYearReviewHide": "Ocultar resumen del año", + "LabelYearReviewShow": "Ver resumen del año", + "LabelYourBookmarks": "Sus marcadores", "LabelYourProgress": "Su progreso", "MessageAndroid10Downloads": "Android 10 e inferiores utilizarán el almacenamiento interno de aplicaciones para las descargas.", "MessageAttemptingServerConnection": "Intentando conectar con el servidor...", @@ -279,26 +285,29 @@ "MessageBookshelfEmpty": "Estantería vacía", "MessageConfirmDeleteLocalEpisode": "¿Quiere eliminar el episodio local «{0}» del dispositivo? El archivo en el servidor no se verá afectado.", "MessageConfirmDeleteLocalFiles": "¿Quiere quitar los archivos locales de este elemento del dispositivo? Los archivos del servidor y su progreso no se verán afectados.", + "MessageConfirmDisableAutoTimer": "¿Confirma que quiere desactivar el temporizador automático por el resto del día? El temporizador volverá a activarse al final de este periodo de temporizador de apagado automático, o si reinicia la aplicación.", "MessageConfirmDiscardProgress": "¿Confirma que quiere restablecer su progreso?", - "MessageConfirmDownloadUsingCellular": "Estas a punto de realizar una descarga utilizando datos móviles. Esto puede incluir cargos de datos del operador. ¿Deseas continuar?", + "MessageConfirmDownloadUsingCellular": "Está a punto de efectuar una descarga con datos móviles. Esto puede conllevar tarifas de datos de la operadora. ¿Quiere continuar?", "MessageConfirmMarkAsFinished": "¿Confirma que quiere marcar este elemento como terminado?", "MessageConfirmRemoveBookmark": "¿Confirma que quiere quitar el marcador?", - "MessageConfirmStreamingUsingCellular": "Estás a punto de hacer streaming utilizando datos móviles. Esto puede incluir cargos de datos del operador. ¿Deseas continuar?", + "MessageConfirmStreamingUsingCellular": "Está a punto de hacer una transmisión con datos móviles. Esto puede conllevar tarifas de datos de la operadora. ¿Quiere continuar?", "MessageDiscardProgress": "Descartar progreso", - "MessageDownloadCompleteProcessing": "Descarga Completada. Procesando...", + "MessageDownloadCompleteProcessing": "Descarga completada. Procesando...", "MessageDownloading": "Descargando...", "MessageDownloadingEpisode": "Descargando episodio", - "MessageEpisodesQueuedForDownload": "{0} Episodio(s) en cola para descargar", + "MessageEpisodesQueuedForDownload": "{0} episodio(s) en cola para descargar", "MessageFeedURLWillBe": "El URL del suministro será {0}", "MessageFetching": "Recuperando...", - "MessageFollowTheProjectOnGithub": "Sigue el proyecto en GitHub", + "MessageFollowTheProjectOnGithub": "Siga el proyecto en GitHub", "MessageItemDownloadCompleteFailedToCreate": "Se ha completado la descarga del elemento, pero no se ha podido crear el elemento de la biblioteca", + "MessageItemMissing": "Falta un elemento y debe corregirse en el servidor. Normalmente, un elemento se marca como faltante porque no se puede acceder a las rutas de los archivos.", "MessageLoading": "Cargando...", "MessageLoadingServerData": "Cargando datos del servidor...", + "MessageLocalFolderDescription": "Solo se puede acceder al «Almacenamiento interno de la aplicación» a través de esta aplicación. Esta aplicación solo admite multimedia descargada directamente a través de ella. Las carpetas de almacenamiento compartido se pueden utilizar para permitir que otras aplicaciones accedan a los archivos descargados por esta aplicación.", "MessageMarkAsFinished": "Marcar como terminado", "MessageMediaLinkedToADifferentServer": "El contenido está vinculado a un servidor de Audiobookshelf en una dirección diferente ({0}). El progreso se sincronizará cuando se conecte a esta dirección de servidor.", "MessageMediaLinkedToADifferentUser": "El contenido está vinculado a este servidor pero fue descargado por otro usuario. El progreso solo se sincronizará con el usuario que lo descargó.", - "MessageMediaLinkedToServer": "Vinculado al servidor {0}", + "MessageMediaLinkedToServer": "Enlazado al servidor {0}", "MessageMediaLinkedToThisServer": "El contenido descargado está vinculado a este servidor", "MessageMediaNotLinkedToServer": "El contenido multimedia no está vinculado a un servidor de Audiobookshelf. No se sincronizará ningún progreso.", "MessageNoBookmarks": "Sin marcadores", @@ -306,19 +315,20 @@ "MessageNoCollections": "Sin colecciones", "MessageNoItems": "Sin elementos", "MessageNoItemsFound": "Ningún elemento encontrado", - "MessageNoListeningSessions": "Ninguna sesión escuchada", + "MessageNoListeningSessions": "Ninguna sesión de escucha", + "MessageNoLogs": "Ningún registro", "MessageNoMediaFolders": "Sin carpetas multimedia", "MessageNoNetworkConnection": "Sin conexión de red", "MessageNoPodcastsFound": "No se encontró ningún pódcast", "MessageNoSeries": "Ninguna serie", "MessageNoUpdatesWereNecessary": "No fue necesario actualizar", "MessageNoUserPlaylists": "No tiene ninguna lista de reproducción", - "MessageOldServerConnectionWarning": "La configuración de la conexión al servidor está utilizando un ID de usuario antiguo. Por favor, elimine y vuelva a añadir esta conexión al servidor.", + "MessageOldServerConnectionWarning": "La configuración de la conexión al servidor utiliza un identificador de usuario antiguo. Elimine y vuelva a añadir esta conexión al servidor.", "MessageOldServerConnectionWarningHelp": "Usted configuró originalmente la conexión a este servidor antes de la migración de la base de datos en la versión 2.3.0, publicada en junio de 2023. Una futura actualización del servidor eliminará la posibilidad de iniciar sesión con esta conexión antigua. Por favor, elimine la conexión existente al servidor y conéctese de nuevo (utilizando la misma dirección del servidor y las mismas credenciales). Si tiene algún medio descargado en este dispositivo, será necesario descargarlo de nuevo para sincronizarlo con el servidor.", "MessagePodcastSearchField": "Introduzca el término de búsqueda o el URL del suministro RSS", "MessageProgressSyncFailed": "El último intento de informar al servidor sobre el progreso de la escucha ha fallado. Las solicitudes de sincronización de progreso seguirán intentándose cada 15 segundos a 1 minuto mientras se reproduce el contenido multimedia.", "MessageReportBugsAndContribute": "Informe de defectos, solicite funciones y contribuya en", - "MessageSeriesAlreadyDownloaded": "Ya has descargado todos los libros de esta serie.", + "MessageSeriesAlreadyDownloaded": "Ya ha descargado todos los libros de esta serie.", "MessageSeriesDownloadConfirm": "¿Descargar {0} libro(s) faltante(s) con {1} archivo(s), totalizando {2} a la carpeta {3}?", "MessageSeriesDownloadConfirmIos": "¿Descargar {0} libro(s) faltantes con {1} archivo(s), con un total de {2}?", "MessageSocketConnectedOverMeteredCellular": "Conexión de socket a través de red celular de tarifa por consumo", From 36ba98920ad244f4191cdce11b551d061731fdde Mon Sep 17 00:00:00 2001 From: thehijacker Date: Mon, 5 May 2025 11:46:14 +0200 Subject: [PATCH 18/22] Translated using Weblate (Slovenian) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/sl/ --- strings/sl.json | 2 ++ 1 file changed, 2 insertions(+) diff --git a/strings/sl.json b/strings/sl.json index 44a36a43..d6cff288 100644 --- a/strings/sl.json +++ b/strings/sl.json @@ -241,6 +241,8 @@ "LabelShowAll": "Prikaži vse", "LabelSize": "Velikost", "LabelSleepTimer": "Časovnik za spanje", + "LabelSleepTimerAlmostDoneChime": "Predvajaj zvonec tik pred koncem", + "LabelSleepTimerAlmostDoneChimeHelp": "Predvajaj zvonec, ko časovnik za spanje preostane še 30 sekund", "LabelStart": "Začetek", "LabelStartTime": "Začetni čas", "LabelStatsBestDay": "Najboljši dan", From a82dd88b1fe55a9b2feca90e920238cef87fcb6d Mon Sep 17 00:00:00 2001 From: Adolfo Jayme Barrientos Date: Thu, 8 May 2025 19:10:10 +0200 Subject: [PATCH 19/22] Translated using Weblate (Spanish) Currently translated at 100.0% (351 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/es/ --- strings/es.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/strings/es.json b/strings/es.json index 7e3b1813..153af2f2 100644 --- a/strings/es.json +++ b/strings/es.json @@ -313,7 +313,7 @@ "MessageNoBookmarks": "Sin marcadores", "MessageNoChapters": "Sin capítulos", "MessageNoCollections": "Sin colecciones", - "MessageNoItems": "Sin elementos", + "MessageNoItems": "Ningún elemento", "MessageNoItemsFound": "Ningún elemento encontrado", "MessageNoListeningSessions": "Ninguna sesión de escucha", "MessageNoLogs": "Ningún registro", From 579a07baa2b8d5496db684d967652c1c1bfb1daa Mon Sep 17 00:00:00 2001 From: Adolfo Jayme Barrientos Date: Thu, 8 May 2025 15:44:57 +0200 Subject: [PATCH 20/22] Translated using Weblate (Catalan) Currently translated at 78.6% (276 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/ca/ --- strings/ca.json | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/strings/ca.json b/strings/ca.json index 18dfba34..3ada823b 100644 --- a/strings/ca.json +++ b/strings/ca.json @@ -1,19 +1,20 @@ { - "ButtonAdd": "Afegir", - "ButtonAddNewServer": "Afegir un nou servidor", + "ButtonAdd": "Afegeix", + "ButtonAddNewServer": "Afegeix un servidor nou", "ButtonAuthors": "Autors", "ButtonBack": "Enrere", - "ButtonCancel": "Cancel·lar", - "ButtonCancelTimer": "Cancel·lar el temporitzador", - "ButtonClearFilter": "Eliminar filtres", - "ButtonCloseFeed": "Tancar font", + "ButtonCancel": "Cancel·la", + "ButtonCancelTimer": "Cancel·la el temporitzador", + "ButtonClearFilter": "Neteja el filtre", + "ButtonClearLogs": "Neteja els registres", + "ButtonCloseFeed": "Tanca el canal", "ButtonCollections": "Col·leccions", - "ButtonConnect": "Connectar", - "ButtonConnectToServer": "Connectar al servidor", - "ButtonCreate": "Crear", + "ButtonConnect": "Connecta", + "ButtonConnectToServer": "Connecta al servidor", + "ButtonCreate": "Crea", "ButtonCreateBookmark": "Crear marcador", "ButtonCreateNewPlaylist": "Crear una nova llista de reproducció", - "ButtonDelete": "Eliminar", + "ButtonDelete": "Suprimeix", "ButtonDeleteLocalEpisode": "Esborrar episodi local", "ButtonDeleteLocalFile": "Esborrar fitxer local", "ButtonDeleteLocalItem": "Esborrar element local", @@ -26,7 +27,9 @@ "ButtonLatest": "Últims", "ButtonLibrary": "Biblioteca", "ButtonLocalMedia": "Mitjans locals", + "ButtonLogs": "Registres", "ButtonManageLocalFiles": "Gestionar fitxers locals", + "ButtonMaskServerAddress": "Emmascara l'adreça del servidor", "ButtonNewFolder": "Nova carpeta", "ButtonNextEpisode": "Pròxim episodi", "ButtonOk": "D’acord", @@ -50,6 +53,7 @@ "ButtonStream": "En directe", "ButtonSubmit": "Enviar", "ButtonSwitchServerUser": "Canviar servidor/usuari", + "ButtonUnmaskServerAddress": "Desemmascara l'adreça del servidor", "ButtonUserStats": "Estadístiques de l'usuari", "ButtonYes": "Sí", "HeaderAccount": "Compte", @@ -194,6 +198,7 @@ "LabelPlaybackSpeed": "Velocitat de reproducció", "LabelPodcast": "Pòdcast", "LabelPodcasts": "Pòdcasts", + "LabelPreventIndexing": "Evita que el vostre canal l'indexin els directoris de pòdcasts de l'iTunes i Google", "LabelProgress": "Progrés", "LabelPubDate": "Data de publicació", "LabelPublishYear": "Any de publicació", @@ -242,6 +247,7 @@ "MessageDownloadCompleteProcessing": "S'ha completat la baixada. S'està processant...", "MessageDownloading": "S'està baixant...", "MessageDownloadingEpisode": "S'està baixant l'episodi", + "MessageFeedURLWillBe": "L'URL del canal serà {0}", "MessageFetching": "S'està recuperant...", "MessageFollowTheProjectOnGithub": "Seguiu el projecte al GitHub", "MessageLoading": "S'està carregant...", @@ -254,15 +260,19 @@ "MessageNoItems": "Cap element", "MessageNoItemsFound": "Cap element trobat", "MessageNoListeningSessions": "Cap sessió d'escolta", + "MessageNoLogs": "Cap registre", "MessageNoMediaFolders": "Cap carpeta multimèdia", "MessageNoNetworkConnection": "Cap connexió de xarxa", "MessageNoPodcastsFound": "No s'ha trobat cap pòdcast", "MessageNoSeries": "Cap sèrie", "MessageNoUpdatesWereNecessary": "No calia cap actualització", "MessageNoUserPlaylists": "No teniu cap llista de reproducció", + "MessagePodcastSearchField": "Introduïu el terme de cerca o l'URL del canal RSS", "ToastItemMarkedAsFinishedFailed": "No s'ha pogut marcar com a finalitzat", "ToastItemMarkedAsNotFinishedFailed": "No s'ha pogut marcar com a no finalitzat", "ToastPlaylistCreateFailed": "No s'ha pogut crear la llista de reproducció", "ToastPodcastCreateFailed": "No s'ha pogut crear el pòdcast", - "ToastPodcastCreateSuccess": "S'ha creat el pòdcast correctament" + "ToastPodcastCreateSuccess": "S'ha creat el pòdcast correctament", + "ToastRSSFeedCloseFailed": "No s'ha pogut tancar el canal RSS", + "ToastRSSFeedCloseSuccess": "Canal RSS tancat" } From a200ee1310a2db1b69d2022d3b6db05521f5a24a Mon Sep 17 00:00:00 2001 From: Adolfo Jayme Barrientos Date: Sat, 10 May 2025 14:21:18 +0200 Subject: [PATCH 21/22] Translated using Weblate (Catalan) Currently translated at 78.9% (277 of 351 strings) Translation: Audiobookshelf/Abs Mobile App Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-mobile-app/ca/ --- strings/ca.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/strings/ca.json b/strings/ca.json index 3ada823b..3c72dc54 100644 --- a/strings/ca.json +++ b/strings/ca.json @@ -92,7 +92,7 @@ "HeaderTableOfContents": "Sumari", "HeaderUserInterfaceSettings": "Paràmetres de la interfície d'usuari", "HeaderYourStats": "Les vostres estadístiques", - "LabelAddToPlaylist": "Afegit a la llista de reproducció", + "LabelAddToPlaylist": "Afegeix a la llista de reproducció", "LabelAddedAt": "Afegit a", "LabelAddedDate": "Afegits {0}", "LabelAll": "Tots", @@ -146,6 +146,7 @@ "LabelEpisode": "Episodi", "LabelFeedURL": "Font URL", "LabelFile": "Fitxer", + "LabelFileBirthtime": "Fitxer creat a", "LabelFileModified": "Fitxer modificat", "LabelFilename": "Nom del fitxer", "LabelFinished": "Acabat", From 01522eda4398c4b8d62bb8e0233488ea9db09309 Mon Sep 17 00:00:00 2001 From: Nicholas W Date: Sat, 10 May 2025 15:44:43 +0200 Subject: [PATCH 22/22] Added translation using Weblate (Slovak) --- strings/sk.json | 1 + 1 file changed, 1 insertion(+) create mode 100644 strings/sk.json diff --git a/strings/sk.json b/strings/sk.json new file mode 100644 index 00000000..0967ef42 --- /dev/null +++ b/strings/sk.json @@ -0,0 +1 @@ +{}