diff --git a/client/components/cards/LazyBookCard.vue b/client/components/cards/LazyBookCard.vue
index 955e18d92..fbb50bb14 100644
--- a/client/components/cards/LazyBookCard.vue
+++ b/client/components/cards/LazyBookCard.vue
@@ -353,6 +353,14 @@ export default {
if (!this.userProgressLastUpdated) return '\u00A0'
return this.$getString('LabelLastProgressDate', [this.$formatDatetime(this.userProgressLastUpdated, this.dateFormat, this.timeFormat)])
}
+ if (this.orderBy === 'progress.createdAt') {
+ if (!this.userProgressStartedDate) return '\u00A0'
+ return this.$getString('LabelStartedDate', [this.$formatDatetime(this.userProgressStartedDate, this.dateFormat, this.timeFormat)])
+ }
+ if (this.orderBy === 'progress.finishedAt') {
+ if (!this.userProgressFinishedDate) return '\u00A0'
+ return this.$getString('LabelFinishedDate', [this.$formatDatetime(this.userProgressFinishedDate, this.dateFormat, this.timeFormat)])
+ }
return null
},
episodeProgress() {
@@ -389,6 +397,14 @@ export default {
if (!this.userProgress) return null
return this.userProgress.lastUpdate
},
+ userProgressStartedDate() {
+ if (!this.userProgress) return null
+ return this.userProgress.startedAt
+ },
+ userProgressFinishedDate() {
+ if (!this.userProgress) return null
+ return this.userProgress.finishedAt
+ },
itemIsFinished() {
if (this.booksInSeries) return this.seriesIsFinished
return this.userProgress ? !!this.userProgress.isFinished : false
diff --git a/client/components/controls/LibrarySortSelect.vue b/client/components/controls/LibrarySortSelect.vue
index 536c93f12..a0734d6a4 100644
--- a/client/components/controls/LibrarySortSelect.vue
+++ b/client/components/controls/LibrarySortSelect.vue
@@ -134,6 +134,14 @@ export default {
text: this.$strings.LabelLibrarySortByProgress,
value: 'progress'
},
+ {
+ text: this.$strings.LabelLibrarySortByProgressStarted,
+ value: 'progress.createdAt'
+ },
+ {
+ text: this.$strings.LabelLibrarySortByProgressFinished,
+ value: 'progress.finishedAt'
+ },
{
text: this.$strings.LabelRandomly,
value: 'random'
@@ -200,4 +208,4 @@ export default {
.librarySortMenu {
max-height: calc(100vh - 125px);
}
-
\ No newline at end of file
+
diff --git a/client/components/modals/item/tabs/Match.vue b/client/components/modals/item/tabs/Match.vue
index 41043be71..3faa26b27 100644
--- a/client/components/modals/item/tabs/Match.vue
+++ b/client/components/modals/item/tabs/Match.vue
@@ -77,8 +77,8 @@
- {{ $strings.LabelCurrently }} {{ mediaMetadata.authorName }} +
+ {{ $strings.LabelCurrently }} {{ isPodcast ? mediaMetadata.author : mediaMetadata.authorName }}
{{ track.metadata.filename }}
-{{ $secondsToTimestamp(Math.round(track.duration), false, true) }}
-{{ track.metadata.filename }}
{{ $secondsToTimestamp(Math.round(track.duration), false, true) }}
+
- {{ $strings.LabelDurationFound }} {{ $secondsToTimestamp(chapterData.runtimeLengthSec) }}
+ {{ $strings.LabelDurationFound }} {{ $secondsToTimestamp(chapterData.runtimeLengthSec) }}
+
{{ chapterData.chapters.length }} {{ $strings.LabelChaptersFound }}
{{ $strings.LabelYourAudiobookDuration }}: {{ $secondsToTimestamp(mediaDurationRounded) }}
@@ -198,17 +249,49 @@
{{ $strings.MessageChapterStartIsAfter }}
{{ $strings.HeaderBulkChapterModal }}
+{{ $strings.MessageBulkChapterPattern }}
+ +/metadata/cache. /metadata/cache/items. /metadata/logs у фармаце JSON. Журналы памылак захоўваюцца ў файле /metadata/logs/crashlogs.txt.",
"MessageMapChapterTitles": "Супаставіць назвы раздзелаў з вашымі існуючымі раздзеламі аўдыякнігі без змянення часовых метак",
@@ -641,13 +647,13 @@
"MessageNoUpdatesWereNecessary": "Абнаўленні не патрабаваліся",
"MessageNoUserPlaylists": "У вас няма спісаў прайгравання",
"MessageNoUserPlaylistsHelp": "Спісы прайгравання прыватныя. Толькі карыстальнік, які іх стварыў, можа іх бачыць.",
- "MessageOpmlPreviewNote": "Заўвага: гэта папярэдні прагляд разабранага OPML-файла. Фактычная назва падкаста будзе ўзятая з RSS-стужкі.",
+ "MessageOpmlPreviewNote": "Заўвага: гэта папярэдні прагляд разабранага файла OPML. Фактычная назва падкаста будзе ўзятая з RSS-стужкі.",
"MessagePlaylistCreateFromCollection": "Стварыць спіс прайгравання з калекцыі",
"MessagePodcastHasNoRSSFeedForMatching": "У падкаста няма URL RSS-стужкі для супадзення",
"MessagePodcastSearchField": "Увядзіце пошукавы запыт або URL RSS-стужкі",
"MessageQuickMatchDescription": "Запоўніць пустыя дэталі элемента і вокладку першым вынікам супадзення з '{0}'. Не замяняе дэталі, калі опцыя «Аддаваць перавагу супадаючым метададзеным» на серверы не ўключана.",
"MessageReportBugsAndContribute": "Паведамляйце пра памылкі, прапануйце новыя функцыі і ўдзельнічайце на",
- "MessageRestoreBackupWarning": "Аднаўленне рэзервовай копіі перазапіша ўсю базу даных, размешчаную ў /config, а таксама вокладкі ў /metadata/items і /metadata/authors. false. Уверете се, че твърдението на доставчика на идентичност съответства на очакваната структура:",
"LabelOpenIDClaims": "Оставете следните опции празни, за да деактивирате разширеното присвояване на групи, като автоматично ще бъде присвоена групата 'Потребител'.",
@@ -513,7 +537,7 @@
"LabelPublishers": "Издателство",
"LabelRSSFeedCustomOwnerEmail": "Персонализиран имейл на собственика",
"LabelRSSFeedCustomOwnerName": "Персонализирано име на собственика",
- "LabelRSSFeedOpen": "RSS Feed Оптворен",
+ "LabelRSSFeedOpen": "RSS Feed е отворен",
"LabelRSSFeedPreventIndexing": "Предотвратете индексиране",
"LabelRSSFeedSlug": "идентификатор на RSS емисия",
"LabelRSSFeedURL": "URL на RSS емисия",
@@ -543,6 +567,7 @@
"LabelSelectAll": "Избери всичко",
"LabelSelectAllEpisodes": "Избери всички епизоди",
"LabelSelectEpisodesShowing": "Избери {0} епизоди показани",
+ "LabelSelectUser": "Избери потребител",
"LabelSelectUsers": "Избери Потребители",
"LabelSendEbookToDevice": "Изпрати електронна книга до ...",
"LabelSequence": "Последователност",
@@ -639,6 +664,7 @@
"LabelTheme": "Тема",
"LabelThemeDark": "Тъмна",
"LabelThemeLight": "Светла",
+ "LabelThemeSepia": "Сепия",
"LabelTimeBase": "Времева Основа",
"LabelTimeDurationXHours": "{0} часа",
"LabelTimeDurationXMinutes": "{0} минути",
@@ -693,7 +719,11 @@
"LabelViewPlayerSettings": "Виж настройки на плеъра",
"LabelViewQueue": "Виж Опашка",
"LabelVolume": "Сила на Звука",
+ "LabelWebRedirectURLsDescription": "Разрешете тези URL-и във вашият OAuth доставчик, за да позволите пренасочването обратно към уеб приложението след вход:",
+ "LabelWebRedirectURLsSubfolder": "Подпапка за URL адреси за пренасочване",
"LabelWeekdaysToRun": "Делници за изпълнение",
+ "LabelXBooks": "{0} книги",
+ "LabelXItems": "{0} елемента",
"LabelYearReviewHide": "Скрий ревю на годината ти",
"LabelYearReviewShow": "Виж ревю на годината ти",
"LabelYourAudiobookDuration": "Продължителност на вашата аудиокнига",
@@ -702,31 +732,51 @@
"LabelYourProgress": "Твоят прогрес",
"MessageAddToPlayerQueue": "Добави към опашката на плейъра",
"MessageAppriseDescription": "За да ползвате тази функция трябва да имате активна инстанция на Apprise API или на друго АПИ което да обработва тези заявки. http://192.168.1.1:8337 трябва да сложитев http://192.168.1.1:8337/notify.",
+ "MessageAsinCheck": "Уверете се, че използвате ASIN от правилния Audible регион, а не от Amazon.",
+ "MessageAuthenticationLegacyTokenWarning": "Остарелите API токени ще бъдат премахнати в бъдеще. Вместо това използвайте API ключове.",
+ "MessageAuthenticationOIDCChangesRestart": "Рестартирайте сървърът след записването на настройките, за да активирате OIDC промените.",
+ "MessageAuthenticationSecurityMessage": "За осигуряването на по-добра сигурност, автентикацията беше подобрена. Всеки потребител ще трябва да се автентикира наново.",
"MessageBackupsDescription": "Резервните копия включват потребители, напредък на потребителите, подробности за елементите в библиотеката, настройки на сървъра и изображения, съхранени в /metadata/items и /metadata/authors. Резервните копия не включват никакви файлове, съхранени в папките на вашата библиотека.",
+ "MessageBackupsLocationEditNote": "Забележка: Актуализирането на местоположението за архивиране няма да премести или промени съществуващите архиви",
+ "MessageBackupsLocationNoEditNote": "Забележка: Местоположението за архивиране се задава с помощта на променлива на средата и не може бъде променена от тук.",
+ "MessageBackupsLocationPathEmpty": "Пътят към местоположението за архивиране не може да бъде празен",
+ "MessageBatchEditPopulateMapDetailsAllHelp": "Популирайте активираните полета с данни от всички елементи. Полетата със няколко стоайности ще бъдат обединени",
+ "MessageBatchEditPopulateMapDetailsItemHelp": "Попълнете активираните полета с информация за картата с данни от този елемент",
"MessageBatchQuickMatchDescription": "Бързото Съпоставяне ще опита да добави липсващи корици и метаданни за избраните елементи. Активирайте опциите по-долу, за да позволите на Бързото съпоставяне да презапише съществуващите корици и/или метаданни.",
"MessageBookshelfNoCollections": "Все още нямате създадени колекции",
+ "MessageBookshelfNoCollectionsHelp": "Колекциите са публични. Всички потребители с достъп до библиотеката ще могат да ги виждат.",
"MessageBookshelfNoRSSFeeds": "Няма отворени RSS feed-ове",
"MessageBookshelfNoResultsForFilter": "Няма резултат за филтер \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "Няма резултати от заявката",
"MessageBookshelfNoSeries": "Нямаш сеЗЙ",
+ "MessageBulkChapterPattern": "Колко глави искате да добавите, използвайки тази схема за номериране?",
"MessageChapterEndIsAfter": "Краят на главата е след края на вашата аудиокнига",
"MessageChapterErrorFirstNotZero": "Първата глава трябва да започва от 0",
"MessageChapterErrorStartGteDuration": "Началото на главата трябва да бъде по-малко от продължителността на аудиокнигата",
"MessageChapterErrorStartLtPrev": "Началото на главата трябва да бъде по-голямо или равно на края на предишната глава",
"MessageChapterStartIsAfter": "Началото на главата е след края на вашата аудиокнига",
+ "MessageChaptersNotFound": "Главите не са намерени",
"MessageCheckingCron": "Проверяване на cron...",
"MessageConfirmCloseFeed": "Сигурни ли сте, че искате да затворите този feed?",
+ "MessageConfirmDeleteApiKey": "Сигурни ли сте, че искате да изтриете API ключ \"{0}\"?",
"MessageConfirmDeleteBackup": "Сигурни ли сте, че искате да изтриете този архив {0}?",
+ "MessageConfirmDeleteDevice": "Сигурни ли сте, че искате да изтриете е-четец \"{0}\"?",
"MessageConfirmDeleteFile": "Това ще изтрие файла от файловата Ви система. Сигурни ли сте?",
"MessageConfirmDeleteLibrary": "Сигурни ли сте, че искате да изтриете за винаги библиотека \"{0}\"?",
"MessageConfirmDeleteLibraryItem": "Това ще изтрие елемента от базата данни и файловата Ви система. Сигурни ли сте?",
"MessageConfirmDeleteLibraryItems": "Това ще изтрие {0} елемента от базата данни и файловата Ви система. Сигурни ли сте?",
+ "MessageConfirmDeleteMetadataProvider": "Сигурни ли сте, че искате да изтриете доставчика нa метаданни \"{0}\"?",
+ "MessageConfirmDeleteNotification": "Сигурни ли сте, че искате да изтриете това уведомление?",
"MessageConfirmDeleteSession": "Сигурни ли сте, че искате да изтриете тази сесия?",
+ "MessageConfirmEmbedMetadataInAudioFiles": "Сигурнли ли сте, че искате да вградите метаданните в {0} аудио файла?",
"MessageConfirmForceReScan": "Сигурни ли сте, че искате да принудите повторно сканиране?",
"MessageConfirmMarkAllEpisodesFinished": "Сигурни ли сте, че искате да маркирате всички епизоди като завършени?",
"MessageConfirmMarkAllEpisodesNotFinished": "Сигурни ли сте, че искате да маркирате всички епизоди като незавършени?",
+ "MessageConfirmMarkItemFinished": "Сигурни ли сте, че искате да маркирате \"{0}\" като приключено?",
+ "MessageConfirmMarkItemNotFinished": "Сигурни ли сте, че искате да маркирате \"{0}\" като неприключено?",
"MessageConfirmMarkSeriesFinished": "Сигурни ли сте, че искате да маркирате всички книги в тази серия като завършени?",
"MessageConfirmMarkSeriesNotFinished": "Сигурни ли сте, че искате да маркирате всички книги в тази серия като незавършени?",
+ "MessageConfirmNotificationTestTrigger": "Пуснете това уведомление с тестови данни?",
"MessageConfirmPurgeCache": "Изчистването на кеша ще изтрие цялата директория в /metadata/cache. /metadata/cache/items. false behandelt. Stelle sicher, dass der Claim des Identitätsanbieters der erwarteten Struktur entspricht:",
"LabelOpenIDClaims": "Lass die folgenden Optionen leer, um die erweiterte Zuweisung von Gruppen und Berechtigungen zu deaktivieren und automatisch die 'User'-Gruppe zuzuweisen.",
@@ -728,7 +732,7 @@
"LabelYourProgress": "Fortschritt",
"MessageAddToPlayerQueue": "Zur Abspielwarteliste hinzufügen",
"MessageAppriseDescription": "Um diese Funktion nutzen zu können, musst du eine Instanz von Apprise API laufen haben oder eine API verwenden welche dieselbe Anfragen bearbeiten kann. http://192.168.1.1:8337 läuft, würdest du http://192.168.1.1:8337/notify eingeben.",
- "MessageAsinCheck": "Stellen Sie sicher, dass Sie die ASIN aus der richtigen Audible Region verwenden, nicht Amazon.",
+ "MessageAsinCheck": "Stelle sicher, dass die ASIN aus der richtigen Audible Region verwendet wird, nicht Amazon.",
"MessageAuthenticationLegacyTokenWarning": "Alte API tokens werden in Zukunft entfernt. Benutze stattdessen API Keys.",
"MessageAuthenticationOIDCChangesRestart": "Nach dem Speichern muss der Server neugestartet werden um die OIDC Änderungen zu übernehmen.",
"MessageAuthenticationSecurityMessage": "Die Anmeldung wurde abgesichert. Benutzersitzungen werden getrennt, alle Benutzer müssen sich erneut anmelden.",
@@ -745,6 +749,7 @@
"MessageBookshelfNoResultsForFilter": "Keine Ergebnisse für Filter \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "Keine Ergebnisse für die Abfrage",
"MessageBookshelfNoSeries": "Keine Serien vorhanden",
+ "MessageBulkChapterPattern": "Wie viele Kapitel mit diesem Nummerierungs-Muster sollen hinzugefügt werden?",
"MessageChapterEndIsAfter": "Ungültige Kapitelendzeit: Kapitelende > Mediumende (Kapitelende liegt nach dem Ende des Mediums)",
"MessageChapterErrorFirstNotZero": "Ungültige Kapitelstartzeit: Das erste Kapitel muss bei 0 beginnen",
"MessageChapterErrorStartGteDuration": "Ungültige Kapitelstartzeit: Kapitelanfang > Mediumlänge (Kapitelanfang liegt zeitlich nach dem Ende des Mediums -> Lösung: Kapitelanfang < Mediumlänge)",
@@ -807,6 +812,7 @@
"MessageFeedURLWillBe": "Feed-URL wird {0} sein",
"MessageFetching": "Wird abgerufen …",
"MessageForceReScanDescription": "Durchsucht alle Dateien erneut, wie bei einem frischen Scan. ID3-Tags von Audiodateien, OPF-Dateien und Textdateien werden neu durchsucht.",
+ "MessageHeatmapListeningTimeTooltip": "{0} auf {1} gehört",
"MessageHeatmapNoListeningSessions": "Keine Hörsitzungen am {0}",
"MessageImportantNotice": "Wichtiger Hinweis!",
"MessageInsertChapterBelow": "Kapitel unten einfügen",
@@ -947,6 +953,7 @@
"NotificationOnRSSFeedDisabledDescription": "Wird ausgeführt wenn automatische Downloads von Episoden wegen zu vielen fehlgeschlagenen Versuchen deaktiviert sind",
"NotificationOnRSSFeedFailedDescription": "Wird ausgelöst, wenn die RSS-Feed-Anforderung für einen automatischen Episoden-Download fehlschlägt",
"NotificationOnTestDescription": "Wird ausgeführt wenn das Benachrichtigungssystem getestet wird",
+ "PlaceholderBulkChapterInput": "Kapitelbezeichnung eingeben oder Nummerierung verwenden (z.B. 'Episode 1', 'Kapitel 10', '1.')",
"PlaceholderNewCollection": "Neuer Sammlungsname",
"PlaceholderNewFolderPath": "Neuer Ordnerpfad",
"PlaceholderNewPlaylist": "Neuer Wiedergabelistenname",
@@ -1000,11 +1007,15 @@
"ToastBookmarkCreateFailed": "Lesezeichen konnte nicht erstellt werden",
"ToastBookmarkCreateSuccess": "Lesezeichen hinzugefügt",
"ToastBookmarkRemoveSuccess": "Lesezeichen entfernt",
+ "ToastBulkChapterInvalidCount": "Gebe eine Zahl zwischen 1 und 150 ein",
"ToastCachePurgeFailed": "Cache leeren fehlgeschlagen",
"ToastCachePurgeSuccess": "Cache geleert",
+ "ToastChapterLocked": "Kapitel ist freigegeben.",
+ "ToastChapterStartTimeAdjusted": "Kapitelbeginn um {0} Sekunden angepasst",
+ "ToastChaptersAllLocked": "Alle Kapitel sind gesperrt. Gebe einige Kapitel frei um die Zeiten anzupassen.",
"ToastChaptersHaveErrors": "Kapitel sind fehlerhaft",
"ToastChaptersInvalidShiftAmountLast": "Die Verschiebung ist nicht möglich, da die Startzeit des letzten Kapitels über die Gesamtdauer dieses Hörbuchs hinausgehen würde.",
- "ToastChaptersInvalidShiftAmountStart": "Ungültige Höhe der Verschiebung. Das erste Kapitel hätte eine Länge von Null oder eine negative Länge und würde vom zweiten Kapitel überschrieben werden. Erhöhen Sie die Startdauer des zweiten Kapitels.",
+ "ToastChaptersInvalidShiftAmountStart": "Ungültige Höhe der Verschiebung. Das erste Kapitel hätte eine Länge von Null oder eine negative Länge und würde vom zweiten Kapitel überschrieben werden. Erhöhe die Startdauer des zweiten Kapitels.",
"ToastChaptersMustHaveTitles": "Kapitel benötigen eindeutige Namen",
"ToastChaptersRemoved": "Kapitel entfernt",
"ToastChaptersUpdated": "Kapitel aktualisiert",
@@ -1035,7 +1046,7 @@
"ToastInvalidImageUrl": "Ungültiger Bild URL",
"ToastInvalidMaxEpisodesToDownload": "Ungültige Max. Anzahl an Episoden zum Herunterladen",
"ToastInvalidUrl": "Ungültiger URL",
- "ToastInvalidUrls": "Eine oder mehrere URLs sind in einem falschen Format",
+ "ToastInvalidUrls": "Eine oder mehrere URLs sind ungültig",
"ToastItemCoverUpdateSuccess": "Titelbild aktualisiert",
"ToastItemDeletedFailed": "Fehler beim löschen des Artikels",
"ToastItemDeletedSuccess": "Artikel gelöscht",
@@ -1135,5 +1146,13 @@
"ToastUserPasswordChangeSuccess": "Passwort erfolgreich verändert",
"ToastUserPasswordMismatch": "Passwörter stimmen nicht überein",
"ToastUserPasswordMustChange": "Neues Passwort muss sich von altem Passwort unterscheiden",
- "ToastUserRootRequireName": "Root Benutzername muss angegeben werden"
+ "ToastUserRootRequireName": "Root Benutzername muss angegeben werden",
+ "TooltipAddChapters": "Kapitel hinzufügen",
+ "TooltipAddOneSecond": "1 Sekunde hinzufügen",
+ "TooltipAdjustChapterStart": "Klicke um die Startzeit anzupassen",
+ "TooltipLockAllChapters": "Alle Kapitel sperren",
+ "TooltipLockChapter": "Kapitel sperren (Shift+Klick für mehrere)",
+ "TooltipSubtractOneSecond": "1 Sekunde abziehen",
+ "TooltipUnlockAllChapters": "Alle Kapitel freigeben",
+ "TooltipUnlockChapter": "Kapitel freigeben (Shift+Klick für mehrere)"
}
diff --git a/client/strings/en-us.json b/client/strings/en-us.json
index 70ac874d2..42832e37a 100644
--- a/client/strings/en-us.json
+++ b/client/strings/en-us.json
@@ -127,6 +127,7 @@
"HeaderAudiobookTools": "Audiobook File Management Tools",
"HeaderAuthentication": "Authentication",
"HeaderBackups": "Backups",
+ "HeaderBulkChapterModal": "Add Multiple Chapters",
"HeaderChangePassword": "Change Password",
"HeaderChapters": "Chapters",
"HeaderChooseAFolder": "Choose a Folder",
@@ -308,6 +309,7 @@
"LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
"LabelDescription": "Description",
"LabelDeselectAll": "Deselect All",
+ "LabelDetectedPattern": "Detected pattern:",
"LabelDevice": "Device",
"LabelDeviceInfo": "Device Info",
"LabelDeviceIsAvailableTo": "Device is available to...",
@@ -376,6 +378,7 @@
"LabelFilterByUser": "Filter by User",
"LabelFindEpisodes": "Find Episodes",
"LabelFinished": "Finished",
+ "LabelFinishedDate": "Finished {0}",
"LabelFolder": "Folder",
"LabelFolders": "Folders",
"LabelFontBold": "Bold",
@@ -433,7 +436,9 @@
"LabelLibraryFilterSublistEmpty": "No {0}",
"LabelLibraryItem": "Library Item",
"LabelLibraryName": "Library Name",
- "LabelLibrarySortByProgress": "Progress Updated",
+ "LabelLibrarySortByProgress": "Progress: Last Updated",
+ "LabelLibrarySortByProgressFinished": "Progress: Finished",
+ "LabelLibrarySortByProgressStarted": "Progress: Started",
"LabelLimit": "Limit",
"LabelLineSpacing": "Line spacing",
"LabelListenAgain": "Listen Again",
@@ -472,6 +477,7 @@
"LabelNewestAuthors": "Newest Authors",
"LabelNewestEpisodes": "Newest Episodes",
"LabelNextBackupDate": "Next backup date",
+ "LabelNextChapters": "Next chapters will be:",
"LabelNextScheduledRun": "Next scheduled run",
"LabelNoApiKeys": "No API keys",
"LabelNoCustomMetadataProviders": "No custom metadata providers",
@@ -489,6 +495,7 @@
"LabelNotificationsMaxQueueSize": "Max queue size for notification events",
"LabelNotificationsMaxQueueSizeHelp": "Events are limited to firing 1 per second. Events will be ignored if the queue is at max size. This prevents notification spamming.",
"LabelNumberOfBooks": "Number of Books",
+ "LabelNumberOfChapters": "Number of chapters:",
"LabelNumberOfEpisodes": "# of Episodes",
"LabelOpenIDAdvancedPermsClaimDescription": "Name of the OpenID claim that contains advanced permissions for user actions within the application which will apply to non-admin roles (if configured). If the claim is missing from the response, access to ABS will be denied. If a single option is missing, it will be treated as false. Ensure the identity provider's claim matches the expected structure:",
"LabelOpenIDClaims": "Leave the following options empty to disable advanced group and permissions assignment, automatically assigning 'User' group then.",
@@ -631,6 +638,7 @@
"LabelStartTime": "Start Time",
"LabelStarted": "Started",
"LabelStartedAt": "Started At",
+ "LabelStartedDate": "Started {0}",
"LabelStatsAudioTracks": "Audio Tracks",
"LabelStatsAuthors": "Authors",
"LabelStatsBestDay": "Best Day",
@@ -745,6 +753,7 @@
"MessageBookshelfNoResultsForFilter": "No results for filter \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "No results for query",
"MessageBookshelfNoSeries": "You have no series",
+ "MessageBulkChapterPattern": "How many chapters would you like to add with this numbering pattern?",
"MessageChapterEndIsAfter": "Chapter end is after the end of your audiobook",
"MessageChapterErrorFirstNotZero": "First chapter must start at 0",
"MessageChapterErrorStartGteDuration": "Invalid start time must be less than audiobook duration",
@@ -948,6 +957,7 @@
"NotificationOnRSSFeedDisabledDescription": "Triggered when automatic episode downloads are disabled due to too many failed attempts",
"NotificationOnRSSFeedFailedDescription": "Triggered when the RSS feed request fails for an automatic episode download",
"NotificationOnTestDescription": "Event for testing the notification system",
+ "PlaceholderBulkChapterInput": "Enter chapter title or use numbering (e.g., 'Episode 1', 'Chapter 10', '1.')",
"PlaceholderNewCollection": "New collection name",
"PlaceholderNewFolderPath": "New folder path",
"PlaceholderNewPlaylist": "New playlist name",
@@ -1001,8 +1011,12 @@
"ToastBookmarkCreateFailed": "Failed to create bookmark",
"ToastBookmarkCreateSuccess": "Bookmark added",
"ToastBookmarkRemoveSuccess": "Bookmark removed",
+ "ToastBulkChapterInvalidCount": "Enter a number between 1 and 150",
"ToastCachePurgeFailed": "Failed to purge cache",
"ToastCachePurgeSuccess": "Cache purged successfully",
+ "ToastChapterLocked": "Chapter is locked.",
+ "ToastChapterStartTimeAdjusted": "Chapter start time adjusted by {0} seconds",
+ "ToastChaptersAllLocked": "All chapters are locked. Unlock some chapters to shift their times.",
"ToastChaptersHaveErrors": "Chapters have errors",
"ToastChaptersInvalidShiftAmountLast": "Invalid shift amount. The last chapter start time would extend beyond the duration of this audiobook.",
"ToastChaptersInvalidShiftAmountStart": "Invalid shift amount. The first chapter would have zero or negative length and would be overwritten by the second chapter. Increase the start duration of second chapter.",
@@ -1086,6 +1100,7 @@
"ToastPlaylistUpdateSuccess": "Playlist updated",
"ToastPodcastCreateFailed": "Failed to create podcast",
"ToastPodcastCreateSuccess": "Podcast created successfully",
+ "ToastPodcastEpisodeUpdated": "Episode updated",
"ToastPodcastGetFeedFailed": "Failed to get podcast feed",
"ToastPodcastNoEpisodesInFeed": "No episodes found in RSS feed",
"ToastPodcastNoRssFeed": "Podcast does not have an RSS feed",
@@ -1136,5 +1151,13 @@
"ToastUserPasswordChangeSuccess": "Password changed successfully",
"ToastUserPasswordMismatch": "Passwords do not match",
"ToastUserPasswordMustChange": "New password cannot match old password",
- "ToastUserRootRequireName": "Must enter a root username"
+ "ToastUserRootRequireName": "Must enter a root username",
+ "TooltipAddChapters": "Add chapter(s)",
+ "TooltipAddOneSecond": "Add 1 second",
+ "TooltipAdjustChapterStart": "Click to adjust start time",
+ "TooltipLockAllChapters": "Lock all chapters",
+ "TooltipLockChapter": "Lock chapter (Shift+click for range)",
+ "TooltipSubtractOneSecond": "Subtract 1 second",
+ "TooltipUnlockAllChapters": "Unlock all chapters",
+ "TooltipUnlockChapter": "Unlock chapter (Shift+click for range)"
}
diff --git a/client/strings/es.json b/client/strings/es.json
index 4dac82720..53bfad693 100644
--- a/client/strings/es.json
+++ b/client/strings/es.json
@@ -1,5 +1,6 @@
{
"ButtonAdd": "Añadir",
+ "ButtonAddApiKey": "Añadir clave API",
"ButtonAddChapters": "Añadir capítulos",
"ButtonAddDevice": "Añadir dispositivo",
"ButtonAddLibrary": "Añadir biblioteca",
@@ -20,6 +21,7 @@
"ButtonChooseAFolder": "Elegir una carpeta",
"ButtonChooseFiles": "Elegir archivos",
"ButtonClearFilter": "Quitar filtros",
+ "ButtonClose": "Cerrar",
"ButtonCloseFeed": "Cerrar suministro",
"ButtonCloseSession": "Cerrar la sesión abierta",
"ButtonCollections": "Colecciones",
@@ -119,11 +121,13 @@
"HeaderAccount": "Cuenta",
"HeaderAddCustomMetadataProvider": "Añadir proveedor de metadatos personalizado",
"HeaderAdvanced": "Avanzado",
+ "HeaderApiKeys": "Claves API",
"HeaderAppriseNotificationSettings": "Configuración de notificaciones de Apprise",
"HeaderAudioTracks": "Pistas de audio",
"HeaderAudiobookTools": "Herramientas de Gestión de Archivos de Audiolibro",
"HeaderAuthentication": "Autenticación",
"HeaderBackups": "Respaldos",
+ "HeaderBulkChapterModal": "Añadir Múltiples Capítulos",
"HeaderChangePassword": "Cambiar contraseña",
"HeaderChapters": "Capítulos",
"HeaderChooseAFolder": "Escoger una Carpeta",
@@ -162,6 +166,7 @@
"HeaderMetadataOrderOfPrecedence": "Orden de precedencia de metadatos",
"HeaderMetadataToEmbed": "Metadatos para Insertar",
"HeaderNewAccount": "Cuenta nueva",
+ "HeaderNewApiKey": "Nueva clave API",
"HeaderNewLibrary": "Biblioteca nueva",
"HeaderNotificationCreate": "Crear notificación",
"HeaderNotificationUpdate": "Notificación de actualización",
@@ -195,6 +200,7 @@
"HeaderSettingsExperimental": "Funcionalidades experimentales",
"HeaderSettingsGeneral": "Generales",
"HeaderSettingsScanner": "Escáner",
+ "HeaderSettingsSecurity": "Seguridad",
"HeaderSettingsWebClient": "Cliente web",
"HeaderSleepTimer": "Temporizador de apagado",
"HeaderStatsLargestItems": "Elementos más grandes",
@@ -206,6 +212,7 @@
"HeaderTableOfContents": "Sumario",
"HeaderTools": "Herramientas",
"HeaderUpdateAccount": "Actualizar cuenta",
+ "HeaderUpdateApiKey": "Actualizar clave API",
"HeaderUpdateAuthor": "Actualizar autor",
"HeaderUpdateDetails": "Actualizar detalles",
"HeaderUpdateLibrary": "Actualizar biblioteca",
@@ -297,6 +304,7 @@
"LabelDeleteFromFileSystemCheckbox": "Eliminar del sistema de archivos (desmarque para quitar de la base de datos solamente)",
"LabelDescription": "Descripción",
"LabelDeselectAll": "Deseleccionar Todos",
+ "LabelDetectedPattern": "Patrón detectado:",
"LabelDevice": "Dispositivo",
"LabelDeviceInfo": "Información del dispositivo",
"LabelDeviceIsAvailableTo": "El dispositivo está disponible para...",
@@ -454,6 +462,7 @@
"LabelNewestAuthors": "Autores más nuevos",
"LabelNewestEpisodes": "Episodios más nuevos",
"LabelNextBackupDate": "Fecha del siguiente respaldo",
+ "LabelNextChapters": "Los próximos capítulos serán:",
"LabelNextScheduledRun": "Próxima ejecución programada",
"LabelNoCustomMetadataProviders": "Sin proveedores de metadatos personalizados",
"LabelNoEpisodesSelected": "Ningún Episodio Seleccionado",
@@ -470,6 +479,7 @@
"LabelNotificationsMaxQueueSize": "Tamaño máximo de la cola de notificaciones",
"LabelNotificationsMaxQueueSizeHelp": "Las notificaciones están limitadas a 1 por segundo. Las notificaciones serán ignoradas si llegan al numero máximo de cola para prevenir spam de eventos.",
"LabelNumberOfBooks": "Número de libros",
+ "LabelNumberOfChapters": "Número de capítulos:",
"LabelNumberOfEpisodes": "N.º de episodios",
"LabelOpenIDAdvancedPermsClaimDescription": "Nombre de la notificación de OpenID que contiene permisos avanzados para acciones de usuario dentro de la aplicación que se aplicarán a roles que no sean de administrador (si están configurados). Si el reclamo no aparece en la respuesta, se denegará el acceso a ABS. Si falta una sola opción, se tratará como falsa. Asegúrese de que la notificación del proveedor de identidades coincida con la estructura esperada:",
"LabelOpenIDClaims": "Deje las siguientes opciones vacías para desactivar la asignación avanzada de grupos y permisos, lo que asignaría de manera automática al grupo «Usuario».",
@@ -722,6 +732,7 @@
"MessageBookshelfNoResultsForFilter": "El filtro «{0}: {1}» no produjo ningún resultado",
"MessageBookshelfNoResultsForQuery": "No hay resultados para la consulta",
"MessageBookshelfNoSeries": "No tiene ninguna serie",
+ "MessageBulkChapterPattern": "¿Cuántos capítulos desea añadir con este patrón de numeración?",
"MessageChapterEndIsAfter": "El final del capítulo es después del final de tu audiolibro",
"MessageChapterErrorFirstNotZero": "El primer capítulo debe iniciar en 0",
"MessageChapterErrorStartGteDuration": "El tiempo de inicio no es válido: debe ser inferior a la duración del audiolibro",
@@ -919,6 +930,7 @@
"NotificationOnBackupFailedDescription": "Se activa cuando falla una copia de seguridad",
"NotificationOnEpisodeDownloadedDescription": "Se activa cuando se descarga automáticamente un episodio de un podcast",
"NotificationOnTestDescription": "Evento para probar el sistema de notificaciones",
+ "PlaceholderBulkChapterInput": "Ingrese título de capítulo o use numeración (ej. 'Episodio 1', 'Capítulo 10', '1.')",
"PlaceholderNewCollection": "Nuevo nombre de la colección",
"PlaceholderNewFolderPath": "Nueva ruta de carpeta",
"PlaceholderNewPlaylist": "Nuevo nombre de la lista de reproducción",
@@ -972,8 +984,10 @@
"ToastBookmarkCreateFailed": "No se pudo crear el marcador",
"ToastBookmarkCreateSuccess": "Marcador añadido",
"ToastBookmarkRemoveSuccess": "Marcador eliminado",
+ "ToastBulkChapterInvalidCount": "Por favor ingrese un número válido entre 1 y 150",
"ToastCachePurgeFailed": "No se pudo purgar la antememoria",
"ToastCachePurgeSuccess": "Se purgó la antememoria correctamente",
+ "ToastChaptersAllLocked": "Todos los capítulos están bloqueados. Desbloquee algunos capítulos para cambiar sus tiempos.",
"ToastChaptersHaveErrors": "Los capítulos tienen errores",
"ToastChaptersInvalidShiftAmountLast": "Cantidad de desplazamiento no válida. La hora de inicio del último capítulo se extendería más allá de la duración de este audiolibro.",
"ToastChaptersInvalidShiftAmountStart": "Cantidad de desplazamiento no válida. El primer capítulo tendría una duración cero o negativa y lo sobrescribiría el segundo capítulo. Aumente la duración inicial del segundo capítulo.",
@@ -1103,5 +1117,12 @@
"ToastUserPasswordChangeSuccess": "Contraseña modificada correctamente",
"ToastUserPasswordMismatch": "No coinciden las contraseñas",
"ToastUserPasswordMustChange": "La nueva contraseña no puede ser igual que la anterior",
- "ToastUserRootRequireName": "Debe introducir un nombre de usuario administrativo"
+ "ToastUserRootRequireName": "Debe introducir un nombre de usuario administrativo",
+ "TooltipAddChapters": "Añadir capítulo(s)",
+ "TooltipAddOneSecond": "Añadir 1 segundo",
+ "TooltipLockAllChapters": "Bloquear todos los capítulos",
+ "TooltipLockChapter": "Bloquear capítulo (Mayús+clic para rango)",
+ "TooltipSubtractOneSecond": "Restar 1 segundo",
+ "TooltipUnlockAllChapters": "Desbloquear todos los capítulos",
+ "TooltipUnlockChapter": "Desbloquear capítulo (Mayús+clic para rango)"
}
diff --git a/client/strings/eu.json b/client/strings/eu.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/client/strings/eu.json
@@ -0,0 +1 @@
+{}
diff --git a/client/strings/fr.json b/client/strings/fr.json
index 8193c41c6..796b549c5 100644
--- a/client/strings/fr.json
+++ b/client/strings/fr.json
@@ -127,6 +127,7 @@
"HeaderAudiobookTools": "Outils de gestion de fichiers de livres audio",
"HeaderAuthentication": "Authentification",
"HeaderBackups": "Sauvegardes",
+ "HeaderBulkChapterModal": "Ajouter Plusieurs Chapitres",
"HeaderChangePassword": "Modifier le mot de passe",
"HeaderChapters": "Chapitres",
"HeaderChooseAFolder": "Sélectionner un dossier",
@@ -308,6 +309,7 @@
"LabelDeleteFromFileSystemCheckbox": "Supprimer du système de fichiers (décocher pour ne supprimer que de la base de données)",
"LabelDescription": "Description",
"LabelDeselectAll": "Tout déselectionner",
+ "LabelDetectedPattern": "Motif détecté :",
"LabelDevice": "Appareil",
"LabelDeviceInfo": "Détail de l’appareil",
"LabelDeviceIsAvailableTo": "L’appareil est disponible pour…",
@@ -472,6 +474,7 @@
"LabelNewestAuthors": "Auteurs récents",
"LabelNewestEpisodes": "Épisodes récents",
"LabelNextBackupDate": "Date de la prochaine sauvegarde",
+ "LabelNextChapters": "Les prochains chapitres seront :",
"LabelNextScheduledRun": "Prochain lancement prévu",
"LabelNoApiKeys": "Aucune clé API",
"LabelNoCustomMetadataProviders": "Aucun fournisseurs de métadonnées personnalisés",
@@ -489,6 +492,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",
+ "LabelNumberOfChapters": "Nombre de chapitres :",
"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 ».",
@@ -745,6 +749,7 @@
"MessageBookshelfNoResultsForFilter": "Aucun résultat pour le filtre « {0} : {1} »",
"MessageBookshelfNoResultsForQuery": "Aucun résultat pour la requête",
"MessageBookshelfNoSeries": "Vous n’avez aucune série",
+ "MessageBulkChapterPattern": "Combien de chapitres souhaitez-vous ajouter avec ce motif de numérotation ?",
"MessageChapterEndIsAfter": "La fin du chapitre se situe après la fin de votre livre audio",
"MessageChapterErrorFirstNotZero": "Le premier capitre doit débuter à 0",
"MessageChapterErrorStartGteDuration": "Horodatage invalide car il doit débuter avant la fin du livre",
@@ -948,6 +953,7 @@
"NotificationOnRSSFeedDisabledDescription": "Déclenché lorsque les téléchargements automatiques d’épisodes sont désactivés en raison d’un trop grand nombre de tentatives infructueuses",
"NotificationOnRSSFeedFailedDescription": "Déclenché lorsque la demande de flux RSS échoue pour un téléchargement automatique d’épisode",
"NotificationOnTestDescription": "Événement pour tester le système de notification",
+ "PlaceholderBulkChapterInput": "Entrez le titre du chapitre ou utilisez la numérotation (ex. 'Épisode 1', 'Chapitre 10', '1.')",
"PlaceholderNewCollection": "Nom de la nouvelle collection",
"PlaceholderNewFolderPath": "Nouveau chemin de dossier",
"PlaceholderNewPlaylist": "Nouveau nom de liste de lecture",
@@ -1001,8 +1007,10 @@
"ToastBookmarkCreateFailed": "Échec de la création de signet",
"ToastBookmarkCreateSuccess": "Signet ajouté",
"ToastBookmarkRemoveSuccess": "Signet supprimé",
+ "ToastBulkChapterInvalidCount": "Veuillez entrer un nombre valide entre 1 et 150",
"ToastCachePurgeFailed": "Échec de la purge du cache",
"ToastCachePurgeSuccess": "Cache purgé avec succès",
+ "ToastChaptersAllLocked": "Tous les chapitres sont verrouillés. Déverrouillez certains chapitres pour décaler leurs temps.",
"ToastChaptersHaveErrors": "Les chapitres contiennent des erreurs",
"ToastChaptersInvalidShiftAmountLast": "Durée de décalage non valide. L’heure de début du dernier chapitre pourrait dépasser la durée de ce livre audio.",
"ToastChaptersInvalidShiftAmountStart": "Durée de décalage non valide. Le premier chapitre aurait une longueur nulle ou négative et serait écrasé par le second. Augmentez la durée de début du second chapitre.",
@@ -1136,5 +1144,12 @@
"ToastUserPasswordChangeSuccess": "Mot de passe modifié avec succès",
"ToastUserPasswordMismatch": "Les mots de passe ne correspondent pas",
"ToastUserPasswordMustChange": "Le nouveau mot de passe ne peut pas être identique à l’ancien",
- "ToastUserRootRequireName": "Vous devez entrer un nom d’utilisateur root"
+ "ToastUserRootRequireName": "Vous devez entrer un nom d’utilisateur root",
+ "TooltipAddChapters": "Ajouter chapitre(s)",
+ "TooltipAddOneSecond": "Ajouter 1 seconde",
+ "TooltipLockAllChapters": "Verrouiller tous les chapitres",
+ "TooltipLockChapter": "Verrouiller le chapitre (Maj+clic pour plage)",
+ "TooltipSubtractOneSecond": "Soustraire 1 seconde",
+ "TooltipUnlockAllChapters": "Déverrouiller tous les chapitres",
+ "TooltipUnlockChapter": "Déverrouiller le chapitre (Maj+clic pour plage)"
}
diff --git a/client/strings/hr.json b/client/strings/hr.json
index 7ef3f68e6..e1317908a 100644
--- a/client/strings/hr.json
+++ b/client/strings/hr.json
@@ -127,6 +127,7 @@
"HeaderAudiobookTools": "Alati za upravljanje datotekama zvučnih knjiga",
"HeaderAuthentication": "Provjera autentičnosti",
"HeaderBackups": "Sigurnosne kopije",
+ "HeaderBulkChapterModal": "Dodaj više poglavlja",
"HeaderChangePassword": "Promjena zaporke",
"HeaderChapters": "Poglavlja",
"HeaderChooseAFolder": "Odaberi mapu",
@@ -308,6 +309,7 @@
"LabelDeleteFromFileSystemCheckbox": "Izbriši datoteke (uklonite kvačicu ako stavku želite izbrisati samo iz baze podataka)",
"LabelDescription": "Opis",
"LabelDeselectAll": "Odznači sve",
+ "LabelDetectedPattern": "Prepoznat obrazac:",
"LabelDevice": "Uređaj",
"LabelDeviceInfo": "O uređaju",
"LabelDeviceIsAvailableTo": "Uređaj je dostupan...",
@@ -472,6 +474,7 @@
"LabelNewestAuthors": "Najnoviji autori",
"LabelNewestEpisodes": "Najnoviji nastavci",
"LabelNextBackupDate": "Sljedeća izrada sigurnosne kopije",
+ "LabelNextChapters": "Sljedeća poglavlja bit će:",
"LabelNextScheduledRun": "Sljedeće zakazano izvođenje",
"LabelNoApiKeys": "Nema API ključeva",
"LabelNoCustomMetadataProviders": "Nema prilagođenih pružatelja meta-podataka",
@@ -489,6 +492,7 @@
"LabelNotificationsMaxQueueSize": "Najveći broj događaja za obavijest u redu čekanja",
"LabelNotificationsMaxQueueSizeHelp": "Događaji se mogu okinuti samo jednom u sekundi. Događaji će se zanemariti ako je red čekanja pun. Ovo sprečava prekomjerno slanje obavijesti.",
"LabelNumberOfBooks": "Broj knjiga",
+ "LabelNumberOfChapters": "Broj poglavljâ:",
"LabelNumberOfEpisodes": "broj nastavaka",
"LabelOpenIDAdvancedPermsClaimDescription": "Naziv OpenID zahtjeva koji sadrži napredna dopuštenja za korisničke radnje u aplikaciji koje će se primijeniti na ne-administratorske uloge (ako su konfigurirane). Ako zahtjev nedostaje u odgovoru, pristup ABS-u neće se odobriti. Ako i jedna opcija nedostaje, smatrat će se da je false. Pripazite da zahtjev pružatelja identiteta uvijek odgovara očekivanoj strukturi:",
"LabelOpenIDClaims": "Sljedeće opcije ostavite praznima ako želite onemogućiti napredno dodjeljivanje grupa i dozvola, odnosno ako želite automatski dodijeliti grupu 'korisnik'.",
@@ -745,6 +749,7 @@
"MessageBookshelfNoResultsForFilter": "Nema rezultata za filter \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "Vaš upit nema rezultata",
"MessageBookshelfNoSeries": "Nemate niti jedan serijal",
+ "MessageBulkChapterPattern": "Koliko poglavlja želite dodati s ovim obrascem numeracije?",
"MessageChapterEndIsAfter": "Kraj poglavlja je nakon kraja zvučne knjige",
"MessageChapterErrorFirstNotZero": "Prvo poglavlje mora započeti u 0",
"MessageChapterErrorStartGteDuration": "Netočno vrijeme početka, mora biti manje od trajanja zvučne knjige",
@@ -948,6 +953,7 @@
"NotificationOnRSSFeedDisabledDescription": "Pokreće se kada su automatska preuzimanja nastavaka onemogućena zbog previše neuspjelih pokušaja",
"NotificationOnRSSFeedFailedDescription": "Pokreće se u slučaju pogreške pri pokušaju automatskog preuzimanja nastavka s RSS izvora",
"NotificationOnTestDescription": "Događaj za testiranje sustava obavijesti",
+ "PlaceholderBulkChapterInput": "Upišite naslov poglavlja ili ga numerirajte (npr. '1. nastavak', 'Poglavlje 10', '1.')",
"PlaceholderNewCollection": "Ime nove zbirke",
"PlaceholderNewFolderPath": "Nova putanja mape",
"PlaceholderNewPlaylist": "Naziv novog popisa za izvođenje",
@@ -1001,8 +1007,12 @@
"ToastBookmarkCreateFailed": "Izrada knjižne oznake nije uspjela",
"ToastBookmarkCreateSuccess": "Knjižna oznaka dodana",
"ToastBookmarkRemoveSuccess": "Knjižna oznaka uklonjena",
+ "ToastBulkChapterInvalidCount": "Upišite broj od 1 i 150",
"ToastCachePurgeFailed": "Čišćenje predmemorije nije uspjelo",
"ToastCachePurgeSuccess": "Predmemorija uspješno očišćena",
+ "ToastChapterLocked": "Poglavlje je zaključano.",
+ "ToastChapterStartTimeAdjusted": "Vrijeme početka poglavlja prilagođeno za {0} sekundi",
+ "ToastChaptersAllLocked": "Sva su poglavlja zaključana. Otključajte neka poglavlja za pomicanje njihovog vremena.",
"ToastChaptersHaveErrors": "Poglavlja imaju pogreške",
"ToastChaptersInvalidShiftAmountLast": "Neispravna vrijednost pomaka. Početak zadnjeg poglavlja bio bi nakon duljine trajanja ove zvučne knjige.",
"ToastChaptersInvalidShiftAmountStart": "Neispravna vrijednost pomaka. Trajanje prvog poglavlja bilo bi nula ili negativno i drugo poglavlje bi ga prepisalo. Povećajte vrijeme početka drugog poglavlja.",
@@ -1136,5 +1146,13 @@
"ToastUserPasswordChangeSuccess": "Zaporka je uspješno promijenjena",
"ToastUserPasswordMismatch": "Zaporke se ne podudaraju",
"ToastUserPasswordMustChange": "Nova zaporka ne smije biti jednaka staroj",
- "ToastUserRootRequireName": "Obavezan je unos korisničkog imena root korisnika"
+ "ToastUserRootRequireName": "Obavezan je unos korisničkog imena root korisnika",
+ "TooltipAddChapters": "Dodavanje poglavlja",
+ "TooltipAddOneSecond": "Dodaj 1 sekundu",
+ "TooltipAdjustChapterStart": "Kliknite za uređivanje početnog vremena",
+ "TooltipLockAllChapters": "Zaključaj sva poglavlja",
+ "TooltipLockChapter": "Zaključaj poglavlje (Shift + klik za raspon)",
+ "TooltipSubtractOneSecond": "Oduzmi 1 sekundu",
+ "TooltipUnlockAllChapters": "Otključaj sva poglavlja",
+ "TooltipUnlockChapter": "Otključaj poglavlje (Shift+klik za raspon)"
}
diff --git a/client/strings/hu.json b/client/strings/hu.json
index 8fdbe52b4..fc7fa8b7f 100644
--- a/client/strings/hu.json
+++ b/client/strings/hu.json
@@ -127,6 +127,7 @@
"HeaderAudiobookTools": "Hangoskönyv fájlkezelő eszközök",
"HeaderAuthentication": "Hitelesítés",
"HeaderBackups": "Biztonsági másolatok",
+ "HeaderBulkChapterModal": "Több fejezet hozzáadása",
"HeaderChangePassword": "Jelszó megváltoztatása",
"HeaderChapters": "Fejezetek",
"HeaderChooseAFolder": "Válasszon egy mappát",
@@ -199,6 +200,7 @@
"HeaderSettingsExperimental": "Kísérleti funkciók",
"HeaderSettingsGeneral": "Általános",
"HeaderSettingsScanner": "Szkenner",
+ "HeaderSettingsSecurity": "Biztonság",
"HeaderSettingsWebClient": "Webkliens",
"HeaderSleepTimer": "Alvásidőzítő",
"HeaderStatsLargestItems": "Legnagyobb elemek",
@@ -293,6 +295,7 @@
"LabelContinueListening": "Hallgatás folytatása",
"LabelContinueReading": "Olvasás folytatása",
"LabelContinueSeries": "Sorozat folytatása",
+ "LabelCorsAllowed": "Megengedett CORS Originek",
"LabelCover": "Borító",
"LabelCoverImageURL": "Borítókép URL",
"LabelCoverProvider": "Borító Szolgáltató",
@@ -306,6 +309,7 @@
"LabelDeleteFromFileSystemCheckbox": "Törlés a fájlrendszerről (ne jelölje be, ha csak az adatbázisból szeretné eltávolítani)",
"LabelDescription": "Leírás",
"LabelDeselectAll": "Minden kijelölés megszüntetése",
+ "LabelDetectedPattern": "Észlelt minta:",
"LabelDevice": "Eszköz",
"LabelDeviceInfo": "Eszköz információ",
"LabelDeviceIsAvailableTo": "Eszköz elérhető a következő számára...",
@@ -470,6 +474,7 @@
"LabelNewestAuthors": "A legújabb szerzők",
"LabelNewestEpisodes": "Legújabb epizódok",
"LabelNextBackupDate": "Következő biztonsági másolat dátuma",
+ "LabelNextChapters": "A következő fejezetek:",
"LabelNextScheduledRun": "Következő ütemezett futtatás",
"LabelNoApiKeys": "Nincs API kulcs",
"LabelNoCustomMetadataProviders": "Nincsenek egyedi metaadat szolgáltatók",
@@ -487,6 +492,7 @@
"LabelNotificationsMaxQueueSize": "Maximális értesítési események sorának mérete",
"LabelNotificationsMaxQueueSizeHelp": "Az események korlátozva vannak, hogy másodpercenként 1-szer történjenek. Ha a sor maximális méretű, akkor az események figyelmen kívül lesznek hagyva. Ez megakadályozza az értesítések spamelését.",
"LabelNumberOfBooks": "Könyvek száma",
+ "LabelNumberOfChapters": "Fejezetek száma:",
"LabelNumberOfEpisodes": "Epizódok száma",
"LabelOpenIDAdvancedPermsClaimDescription": "Az OpenID-igény neve, amely a felhasználói műveletekre vonatkozó haladó jogosultságokat tartalmazza az alkalmazáson belül, és amely a nem adminisztrátori szerepkörökre vonatkozik (ha konfigurálva van). Ha az igény hiányzik a válaszból, az ABS-hez való hozzáférés megtagadásra kerül. Ha egyetlen opció hiányzik, azt false-ként fogja kezelni. Győződj meg arról, hogy az identitásszolgáltató igénye megfelel a várt struktúrának:",
"LabelOpenIDClaims": "Hagyd üresen a következő opciókat, hogy letiltsd a haladó csoport- és jogosultság-hozzárendelést, ekkor automatikusan a ‘Felhasználó’ csoport kerül hozzárendelésre.",
@@ -743,6 +749,7 @@
"MessageBookshelfNoResultsForFilter": "Nincs eredmény a \"{0}: {1}\" szűrőre",
"MessageBookshelfNoResultsForQuery": "Nincs eredmény a lekérdezéshez",
"MessageBookshelfNoSeries": "Nincsenek sorozatai",
+ "MessageBulkChapterPattern": "Hány fejezetet szeretne hozzáadni ezzel a számozási mintával?",
"MessageChapterEndIsAfter": "A fejezet vége a hangoskönyv végét követi",
"MessageChapterErrorFirstNotZero": "Az első fejezetnek 0:00-kor kell kezdődnie",
"MessageChapterErrorStartGteDuration": "Érvénytelen kezdési idő, kevesebbnek kell lennie, mint a hangoskönyv időtartama",
@@ -805,6 +812,8 @@
"MessageFeedURLWillBe": "A hírcsatorna URL-je {0} lesz",
"MessageFetching": "Lekérdezés...",
"MessageForceReScanDescription": "minden fájlt újra szkennel, mint egy friss szkennelés. Az audiofájlok ID3 címkéi, OPF fájlok és szövegfájlok újként lesznek szkennelve.",
+ "MessageHeatmapListeningTimeTooltip": "{0} hallgatja ezen {1}",
+ "MessageHeatmapNoListeningSessions": "Nincs hallgatás folyamatban ezen: {0}",
"MessageImportantNotice": "Fontos közlemény!",
"MessageInsertChapterBelow": "Fejezet beszúrása alulra",
"MessageInvalidAsin": "Érvénytelen ASIN",
@@ -944,6 +953,7 @@
"NotificationOnRSSFeedDisabledDescription": "Akkor lép működésbe, ha az automatikus epizódletöltés a túl sok sikertelen próbálkozás miatt letiltásra kerül",
"NotificationOnRSSFeedFailedDescription": "Akkor aktiválódik, ha az RSS feed kérés sikertelen az automatikus epizódletöltésnél",
"NotificationOnTestDescription": "Esemény az értesítési rendszer teszteléséhez",
+ "PlaceholderBulkChapterInput": "Írja be a fejezet címét vagy használjon számozást (pl. „1. epizód”, „10. fejezet”, „1.”)",
"PlaceholderNewCollection": "Új gyűjtemény neve",
"PlaceholderNewFolderPath": "Új mappa útvonala",
"PlaceholderNewPlaylist": "Új lejátszási lista neve",
@@ -997,8 +1007,12 @@
"ToastBookmarkCreateFailed": "Könyvjelző létrehozása sikertelen",
"ToastBookmarkCreateSuccess": "Könyvjelző hozzáadva",
"ToastBookmarkRemoveSuccess": "Könyvjelző eltávolítva",
+ "ToastBulkChapterInvalidCount": "Írjon be egy számot 1 és 150 között",
"ToastCachePurgeFailed": "A gyorsítótár törlése sikertelen",
"ToastCachePurgeSuccess": "A gyorsítótár sikeresen törölve",
+ "ToastChapterLocked": "A fejezet zárolt.",
+ "ToastChapterStartTimeAdjusted": "A fejezet kezdési ideje {0} másodperccel módosítva",
+ "ToastChaptersAllLocked": "Minden fejezet zárolt. Nyisson meg néhány fejezetet, hogy módosítsa azok idejét.",
"ToastChaptersHaveErrors": "A fejezetek hibákat tartalmaznak",
"ToastChaptersInvalidShiftAmountLast": "Érvénytelen eltolási érték. Az utolsó fejezet kezdési időpontja túlnyúlna a hangoskönyv időtartamán.",
"ToastChaptersInvalidShiftAmountStart": "Érvénytelen eltolási érték. Az első fejezet hossza nulla vagy negatív lenne, és a második fejezet felülírná. Növelje a második fejezet kezdő időtartamát.",
@@ -1032,6 +1046,7 @@
"ToastInvalidImageUrl": "Érvénytelen a kép URL címe",
"ToastInvalidMaxEpisodesToDownload": "A letölthető epizódok száma érvénytelen",
"ToastInvalidUrl": "Érvénytelen URL",
+ "ToastInvalidUrls": "Egy vagy több URL érvénytelen",
"ToastItemCoverUpdateSuccess": "Elem borítója frissítve",
"ToastItemDeletedFailed": "Nem sikerült törölni az elemet",
"ToastItemDeletedSuccess": "Elem törölve",
@@ -1081,6 +1096,7 @@
"ToastPlaylistUpdateSuccess": "Lejátszási lista frissítve",
"ToastPodcastCreateFailed": "Podcast létrehozása sikertelen",
"ToastPodcastCreateSuccess": "A podcast sikeresen létrehozva",
+ "ToastPodcastEpisodeUpdated": "Epizód frissítve",
"ToastPodcastGetFeedFailed": "Nem sikerült podcast feedet kapni",
"ToastPodcastNoEpisodesInFeed": "Nincsenek epizódok az RSS hírcsatornában",
"ToastPodcastNoRssFeed": "A podcastnak nincs RSS-hírcsatornája",
@@ -1131,5 +1147,13 @@
"ToastUserPasswordChangeSuccess": "Jelszó sikeresen megváltoztatva",
"ToastUserPasswordMismatch": "A jelszavak nem egyeznek",
"ToastUserPasswordMustChange": "Az új jelszó nem egyezik a régi jelszóval",
- "ToastUserRootRequireName": "Egy root felhasználónevet kell megadnia"
+ "ToastUserRootRequireName": "Egy root felhasználónevet kell megadnia",
+ "TooltipAddChapters": "Fejezet(ek) hozzáadása",
+ "TooltipAddOneSecond": "1 másodperc hozzáadása",
+ "TooltipAdjustChapterStart": "Kattintson a kezdési idő beállításához",
+ "TooltipLockAllChapters": "Az összes fejezet zárolása",
+ "TooltipLockChapter": "Fejezet zárolása (Shift+kattintás a tartományhoz)",
+ "TooltipSubtractOneSecond": "1 másodperc levonása",
+ "TooltipUnlockAllChapters": "Az összes fejezet feloldása",
+ "TooltipUnlockChapter": "Fejezet feloldása (Shift+kattintás a tartományhoz)"
}
diff --git a/client/strings/it.json b/client/strings/it.json
index 7f4fd7c7a..a032a3c95 100644
--- a/client/strings/it.json
+++ b/client/strings/it.json
@@ -1,6 +1,6 @@
{
"ButtonAdd": "Aggiungi",
- "ButtonAddApiKey": "Aggiungi chiave API",
+ "ButtonAddApiKey": "Aggiungi la chiave API",
"ButtonAddChapters": "Aggiungi Capitoli",
"ButtonAddDevice": "Aggiungi Dispositivo",
"ButtonAddLibrary": "Aggiungi Libreria",
@@ -121,11 +121,13 @@
"HeaderAccount": "Account",
"HeaderAddCustomMetadataProvider": "Aggiungi fornitori di metadati personalizzati",
"HeaderAdvanced": "Avanzate",
+ "HeaderApiKeys": "Le chiavi API",
"HeaderAppriseNotificationSettings": "Apprendi le impostazioni di Notifica",
"HeaderAudioTracks": "Tracce audio",
"HeaderAudiobookTools": "Strumenti di gestione file audiolibri",
"HeaderAuthentication": "Authenticazione",
"HeaderBackups": "Backup",
+ "HeaderBulkChapterModal": "Aggiungere più capitoli",
"HeaderChangePassword": "Cambia la password",
"HeaderChapters": "Capitoli",
"HeaderChooseAFolder": "Seleziona la cartella",
@@ -164,6 +166,7 @@
"HeaderMetadataOrderOfPrecedence": "Priorità ordine Metadata",
"HeaderMetadataToEmbed": "Metadata da incorporare",
"HeaderNewAccount": "Nuovo Account",
+ "HeaderNewApiKey": "Nuova chiave API",
"HeaderNewLibrary": "Nuova Libreria",
"HeaderNotificationCreate": "Crea una notifica",
"HeaderNotificationUpdate": "Aggiornamento della notifica",
@@ -197,6 +200,7 @@
"HeaderSettingsExperimental": "Opzioni Sperimentali",
"HeaderSettingsGeneral": "Generale",
"HeaderSettingsScanner": "Scanner",
+ "HeaderSettingsSecurity": "Sicurezza",
"HeaderSettingsWebClient": "Web Client",
"HeaderSleepTimer": "Sveglia",
"HeaderStatsLargestItems": "File pesanti",
@@ -208,6 +212,7 @@
"HeaderTableOfContents": "Indice",
"HeaderTools": "Strumenti",
"HeaderUpdateAccount": "Aggiorna Account",
+ "HeaderUpdateApiKey": "Aggiornamento chiave API",
"HeaderUpdateAuthor": "Aggiorna Autore",
"HeaderUpdateDetails": "Aggiorna Dettagli",
"HeaderUpdateLibrary": "Aggiorna Libreria",
@@ -237,6 +242,10 @@
"LabelAllUsersExcludingGuests": "Tutti gli Utenti Esclusi gli ospiti",
"LabelAllUsersIncludingGuests": "Tutti gli Utenti Inclusi gli ospiti",
"LabelAlreadyInYourLibrary": "Già esistente nella libreria",
+ "LabelApiKeyCreated": "API Key \"{0}\" creato con successo.",
+ "LabelApiKeyCreatedDescription": "Assicurarsi di copiare la chiave API ora poiché non si potrà rivederla.",
+ "LabelApiKeyUser": "Agisce per conto dell'utente",
+ "LabelApiKeyUserDescription": "Questa chiave API avrà le stesse autorizzazioni dell'utente per conto del quale agisce. Apparirà nei registri come se l'utente stesse facendo la richiesta.",
"LabelApiToken": "API Token",
"LabelAppend": "Appese",
"LabelAudioBitrate": "Audio Bitrate (es. 128k)",
@@ -286,6 +295,7 @@
"LabelContinueListening": "Continua l'ascolto",
"LabelContinueReading": "Continua la lettura",
"LabelContinueSeries": "Continua serie",
+ "LabelCorsAllowed": "CORS consentiti Origine",
"LabelCover": "Copertina",
"LabelCoverImageURL": "Indirizzo della cover URL",
"LabelCoverProvider": "Cover Sorgente",
@@ -348,6 +358,10 @@
"LabelExample": "Esempio",
"LabelExpandSeries": "Espandi Serie",
"LabelExpandSubSeries": "Espandi Sub Serie",
+ "LabelExpired": "Scadenza",
+ "LabelExpiresAt": "Scade a",
+ "LabelExpiresInSeconds": "Scade in (secondi)",
+ "LabelExpiresNever": "Mai",
"LabelExplicit": "Esplicito",
"LabelExplicitChecked": "Esplicito (selezionato)",
"LabelExplicitUnchecked": "Non Esplicito (selezionato)",
@@ -407,6 +421,7 @@
"LabelLanguages": "Lingua",
"LabelLastBookAdded": "Ultimo Libro Aggiunto",
"LabelLastBookUpdated": "Ultimo Libro Aggiornato",
+ "LabelLastProgressDate": "Ultimi progressi: Si'",
"LabelLastSeen": "Ultimi Visti",
"LabelLastTime": "Ultima Volta",
"LabelLastUpdate": "Ultimo Aggiornamento",
@@ -419,6 +434,8 @@
"LabelLibraryFilterSublistEmpty": "Nessuno {0}",
"LabelLibraryItem": "Elementi della biblioteca",
"LabelLibraryName": "Nome della biblioteca",
+ "LabelLibrarySortByProgress": "Aggiornamento dei progressi",
+ "LabelLibrarySortByProgressStarted": "Data di inizio",
"LabelLimit": "Limiti",
"LabelLineSpacing": "Interlinea",
"LabelListenAgain": "Ascolta ancora",
@@ -427,6 +444,7 @@
"LabelLogLevelWarn": "Allarme",
"LabelLookForNewEpisodesAfterDate": "Cerca nuovi episodi dopo questa data",
"LabelLowestPriority": "Priorità Minima",
+ "LabelMatchConfidence": "Fiducia",
"LabelMatchExistingUsersBy": "Abbina gli utenti esistenti per",
"LabelMatchExistingUsersByDescription": "Utilizzato per connettere gli utenti esistenti. Una volta connessi, gli utenti verranno abbinati a un ID univoco dal tuo provider SSO",
"LabelMaxEpisodesToDownload": "Max # di episodi da scaricare. Usa 0 per illimitati.",
@@ -456,7 +474,9 @@
"LabelNewestAuthors": "Nuovi autori",
"LabelNewestEpisodes": "Nuovi episodi",
"LabelNextBackupDate": "Data Prossimo Backup",
+ "LabelNextChapters": "I prossimi capitoli saranno:",
"LabelNextScheduledRun": "Data prossima esecuzione schedulata",
+ "LabelNoApiKeys": "Nessuna chiave API",
"LabelNoCustomMetadataProviders": "Nessun provider di metadati personalizzato",
"LabelNoEpisodesSelected": "Nessun Episodio Selezionato",
"LabelNotFinished": "Da completare",
@@ -472,6 +492,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",
+ "LabelNumberOfChapters": "Numero di capitoli:",
"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\".",
@@ -546,6 +567,7 @@
"LabelSelectAll": "Seleziona tutto",
"LabelSelectAllEpisodes": "Seleziona tutti gli Episodi",
"LabelSelectEpisodesShowing": "Selezionati {0} episodi da visualizzare",
+ "LabelSelectUser": "Seleziona l'utente",
"LabelSelectUsers": "Selezione Utenti",
"LabelSendEbookToDevice": "Invia il libro a...",
"LabelSequence": "Sequenza",
@@ -642,6 +664,7 @@
"LabelTheme": "Tema",
"LabelThemeDark": "Scuro",
"LabelThemeLight": "Chiaro",
+ "LabelThemeSepia": "Seppia",
"LabelTimeBase": "Tempo base",
"LabelTimeDurationXHours": "{0} Ore",
"LabelTimeDurationXMinutes": "{0} minuti",
@@ -710,7 +733,9 @@
"MessageAddToPlayerQueue": "Aggiungi alla coda di riproduzione",
"MessageAppriseDescription": "Per utilizzare questa funzione è necessario disporre di un'istanza di Apprise API in esecuzione o un'API che gestirà quelle stesse richieste. http://192.168.1.1:8337 Allora dovrai mettere http://192.168.1.1:8337/notify.",
"MessageAsinCheck": "Assicurati di utilizzare l'ASIN della regione Audible corretta, non di Amazon.",
+ "MessageAuthenticationLegacyTokenWarning": "I token API legacy verranno rimossi in futuro. Utilizzare piuttosto le chiavi API.",
"MessageAuthenticationOIDCChangesRestart": "Riavvia il tuo server dopo aver salvato per applicare le modifiche OIDC.",
+ "MessageAuthenticationSecurityMessage": "L'autenticazione è stata migliorata per incrementare la sicurezza. Tutti gli utenti sono tenuti a rieffettuare il login.",
"MessageBackupsDescription": "I backup includono utenti, progressi degli utenti, dettagli sugli elementi della libreria, impostazioni del server e immagini archiviate in /metadata/items & /metadata/authors. I backup non includono i file archiviati nelle cartelle della libreria.",
"MessageBackupsLocationEditNote": "Nota: l'aggiornamento della posizione di backup non sposterà o modificherà i backup esistenti",
"MessageBackupsLocationNoEditNote": "Nota: la posizione del backup viene impostata tramite una variabile di ambiente e non può essere modificata qui.",
@@ -724,6 +749,7 @@
"MessageBookshelfNoResultsForFilter": "Nessun risultato per il filtro \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "Nessun risultato per la query",
"MessageBookshelfNoSeries": "Non c'è nessuna Serie",
+ "MessageBulkChapterPattern": "Quanti capitoli vuoi aggiungere con questo motivo di numerazione?",
"MessageChapterEndIsAfter": "La fine del capitolo è dopo la fine del tuo audiolibro",
"MessageChapterErrorFirstNotZero": "Il primo capitolo deve iniziare da 0",
"MessageChapterErrorStartGteDuration": "L'ora di inizio non valida deve essere inferiore alla durata dell'audiolibro",
@@ -732,6 +758,7 @@
"MessageChaptersNotFound": "Capitoli non trovati",
"MessageCheckingCron": "Controllo cron...",
"MessageConfirmCloseFeed": "Sei sicuro di voler chiudere questo feed?",
+ "MessageConfirmDeleteApiKey": "Sei sicuro di voler eliminare la chiave API \"{0}\"?",
"MessageConfirmDeleteBackup": "Sei sicuro di voler eliminare il backup {0}?",
"MessageConfirmDeleteDevice": "Sei sicuro/sicura di voler eliminare il lettore di libri {0}?",
"MessageConfirmDeleteFile": "Questo eliminerà il file dal tuo file system. Sei sicuro?",
@@ -759,6 +786,7 @@
"MessageConfirmRemoveAuthor": "Sei sicuro di voler rimuovere l'autore? \"{0}\"?",
"MessageConfirmRemoveCollection": "Sei sicuro di voler rimuovere la Raccolta \"{0}\"?",
"MessageConfirmRemoveEpisode": "Sei sicuro di voler rimuovere l'episodio \"{0}\"?",
+ "MessageConfirmRemoveEpisodeNote": "Nota: Questo non cancella il file audio a meno che non toggling \"Hard delete file\"",
"MessageConfirmRemoveEpisodes": "Sei sicuro di voler rimuovere {0} episodi?",
"MessageConfirmRemoveListeningSessions": "Sei sicuro di voler rimuovere {0} sessioni di Ascolto?",
"MessageConfirmRemoveMetadataFiles": "Vuoi davvero rimuovere tutti i metadati.{0} file nelle cartelle degli elementi della tua libreria?",
@@ -784,6 +812,8 @@
"MessageFeedURLWillBe": "l’URL del flusso sarà {0}",
"MessageFetching": "Recupero info…",
"MessageForceReScanDescription": "eseguirà nuovamente la scansione di tutti i file come una nuova scansione. I tag ID3 dei file audio, i file OPF e i file di testo verranno scansionati come nuovi.",
+ "MessageHeatmapListeningTimeTooltip": "{0} in ascolto su {1}",
+ "MessageHeatmapNoListeningSessions": "Nessuna sessione di ascolto su {0}",
"MessageImportantNotice": "Avviso Importante!",
"MessageInsertChapterBelow": "Inserisci capitolo sotto",
"MessageInvalidAsin": "ASIN non Valido",
@@ -923,6 +953,7 @@
"NotificationOnRSSFeedDisabledDescription": "Attivato quando i download automatici degli episodi vengono disabilitati a causa di troppi tentativi falliti",
"NotificationOnRSSFeedFailedDescription": "Attivato quando la richiesta del feed RSS per il download automatico di un episodio fallisce",
"NotificationOnTestDescription": "test il sistema di notifica",
+ "PlaceholderBulkChapterInput": "Inserire il titolo del capitolo o utilizzate la numerazione (es. 'Episodio 1', 'Capitolo 10', '1.')",
"PlaceholderNewCollection": "Nome Nuova Raccolta",
"PlaceholderNewFolderPath": "Nuovo Percorso Cartella",
"PlaceholderNewPlaylist": "Nome nuova playlist",
@@ -976,8 +1007,12 @@
"ToastBookmarkCreateFailed": "Creazione segnalibro fallita",
"ToastBookmarkCreateSuccess": "Segnalibro creato",
"ToastBookmarkRemoveSuccess": "Segnalibro Rimosso",
+ "ToastBulkChapterInvalidCount": "Inserire un numero tra 1 e 150",
"ToastCachePurgeFailed": "Impossibile eliminare la cache",
"ToastCachePurgeSuccess": "Cache eliminata correttamente",
+ "ToastChapterLocked": "Il capitolo è bloccato.",
+ "ToastChapterStartTimeAdjusted": "Tempo di inizio del capitolo modificato di {0} secondi",
+ "ToastChaptersAllLocked": "Tutti i capitoli sono bloccati. Sblocca alcuni capitoli per modificarne i tempi.",
"ToastChaptersHaveErrors": "I capitoli contengono errori",
"ToastChaptersInvalidShiftAmountLast": "Quantità di spostamento non valida. L'orario di inizio dell'ultimo capitolo si estenderebbe oltre la durata di questo audiolibro.",
"ToastChaptersInvalidShiftAmountStart": "Quantità di spostamento non valida. Il primo capitolo avrebbe una lunghezza pari a zero o negativa e verrebbe sovrascritto dal secondo capitolo. Aumentare la durata iniziale del secondo capitolo.",
@@ -1002,6 +1037,8 @@
"ToastEpisodeDownloadQueueClearSuccess": "Coda di download degli episodi cancellata",
"ToastEpisodeUpdateSuccess": "{0} episodi aggiornati",
"ToastErrorCannotShare": "Impossibile condividere in modo nativo su questo dispositivo",
+ "ToastFailedToCreate": "Non creato",
+ "ToastFailedToDelete": "Non eliminata",
"ToastFailedToLoadData": "Impossibile caricare i dati",
"ToastFailedToMatch": "Impossibile abbinare",
"ToastFailedToShare": "Impossibile condividere",
@@ -1009,6 +1046,7 @@
"ToastInvalidImageUrl": "URL dell'immagine non valido",
"ToastInvalidMaxEpisodesToDownload": "Numero massimo di episodi non valido da scaricare",
"ToastInvalidUrl": "URL non valido",
+ "ToastInvalidUrls": "Uno o più URL sono invalidi",
"ToastItemCoverUpdateSuccess": "Cover aggiornata",
"ToastItemDeletedFailed": "Impossibile eliminare l'elemento",
"ToastItemDeletedSuccess": "Elemento eliminato",
@@ -1033,6 +1071,7 @@
"ToastMustHaveAtLeastOnePath": "Deve avere almeno un percorso",
"ToastNameEmailRequired": "Nome ed email sono obbligatori",
"ToastNameRequired": "Il nome è obbligatorio",
+ "ToastNewApiKeyUserError": "Deve selezionare un utente",
"ToastNewEpisodesFound": "{0} nuovi episodi trovati",
"ToastNewUserCreatedFailed": "Impossibile creare l'account: \"{0}\"",
"ToastNewUserCreatedSuccess": "Nuovo account creato",
@@ -1057,6 +1096,7 @@
"ToastPlaylistUpdateSuccess": "Playlist Aggiornata",
"ToastPodcastCreateFailed": "Errore creazione podcast",
"ToastPodcastCreateSuccess": "Podcast creato correttamente",
+ "ToastPodcastEpisodeUpdated": "Episodio aggiornato",
"ToastPodcastGetFeedFailed": "Impossibile ottenere il feed del podcast",
"ToastPodcastNoEpisodesInFeed": "Nessun episodio trovato nel feed RSS",
"ToastPodcastNoRssFeed": "Il podcast non ha un feed RSS",
@@ -1107,5 +1147,13 @@
"ToastUserPasswordChangeSuccess": "Password modificata con successo",
"ToastUserPasswordMismatch": "Le password non corrispondono",
"ToastUserPasswordMustChange": "La nuova password non può corrispondere alla vecchia password",
- "ToastUserRootRequireName": "È necessario immettere un nome utente root"
+ "ToastUserRootRequireName": "È necessario immettere un nome utente root",
+ "TooltipAddChapters": "Aggiungere capitolo/i",
+ "TooltipAddOneSecond": "Aggiungere 1 secondo",
+ "TooltipAdjustChapterStart": "Clicca per modificare il tempo di inizio",
+ "TooltipLockAllChapters": "Bloccare tutti i capitoli",
+ "TooltipLockChapter": "Bloccare capitolo (Shift+click per intervallo)",
+ "TooltipSubtractOneSecond": "Sottrarre 1 secondo",
+ "TooltipUnlockAllChapters": "Sbloccare tutti i capitoli",
+ "TooltipUnlockChapter": "Sbloccare capitolo (Shift+click per intervallo)"
}
diff --git a/client/strings/ja.json b/client/strings/ja.json
index 3284d8a1f..c78ac0444 100644
--- a/client/strings/ja.json
+++ b/client/strings/ja.json
@@ -11,13 +11,17 @@
"ButtonApplyChapters": "チャプターを確定する",
"ButtonAuthors": "作者",
"ButtonBack": "戻る",
+ "ButtonBrowseForFolder": "フォルダーを選択する",
"ButtonCancel": "キャンセル",
+ "ButtonCancelEncode": "エンコードを取り消す",
"ButtonChangeRootPassword": "Rootのパスワードを変更する",
"ButtonChooseAFolder": "フォルダーを選ぶ",
"ButtonChooseFiles": "ファイルを選ぶ",
"ButtonClearFilter": "絞り込みを解除",
"ButtonClose": "閉じる",
+ "ButtonCloseFeed": "フィードを閉じる",
"ButtonCollections": "コレクション",
+ "ButtonConfigureScanner": "スキャナーの設定",
"ButtonCreate": "作成",
"ButtonCreateBackup": "バックアップを作成する",
"ButtonDelete": "削除",
@@ -26,20 +30,35 @@
"ButtonEditChapters": "チャプターの編集",
"ButtonEditPodcast": "ポッドキャストの編集",
"ButtonEnable": "オンにする",
+ "ButtonForceReScan": "強制的に再スキャンする",
+ "ButtonFullPath": "絶対パス",
"ButtonHide": "非表示",
"ButtonHome": "ホーム",
"ButtonJumpBackward": "巻き戻し",
"ButtonJumpForward": "早送り",
+ "ButtonLatest": "最新",
"ButtonLibrary": "ライブラリー",
"ButtonLogout": "ログアウト",
+ "ButtonManageTracks": "トラックの管理",
+ "ButtonNevermind": "中止",
+ "ButtonNext": "次",
+ "ButtonNextChapter": "次のチャプター",
"ButtonOk": "はい",
- "ButtonPlay": "プレイ",
+ "ButtonOpenFeed": "フィードを開く",
+ "ButtonPause": "一時停止",
+ "ButtonPlay": "再生",
+ "ButtonPlayAll": "全て再生",
"ButtonPlaying": "プレイ中",
+ "ButtonPlaylists": "プレイリスト",
"ButtonPrevious": "先",
+ "ButtonPreviousChapter": "前のチャプター",
+ "ButtonPurgeAllCache": "全てのキャッシュを削除",
+ "ButtonPurgeItemsCache": "項目のキャッシュを削除",
"ButtonQueueAddItem": "次に再生する",
"ButtonQueueRemoveItem": "次に再生から削除",
+ "ButtonQuickEmbed": "クイック埋め込み",
"ButtonReScan": "再スキャン",
- "ButtonRead": "野村",
+ "ButtonRead": "読む",
"ButtonReadLess": "閉じる",
"ButtonReadMore": "もっと見る",
"ButtonRefresh": "再読み込み",
@@ -56,8 +75,21 @@
"ButtonScrollLeft": "左にスクロール",
"ButtonScrollRight": "右にスクロール",
"ButtonSearch": "検索",
+ "ButtonSeries": "シリーズ",
"ButtonYes": "はい",
+ "HeaderAccount": "アカウント",
+ "HeaderChapters": "チャプター",
+ "HeaderCollection": "コレクション",
+ "HeaderCollectionItems": "コレクションの項目",
+ "HeaderDetails": "詳細",
+ "HeaderEbookFiles": "電子書籍ファイル",
+ "HeaderEpisodes": "エピソード",
+ "HeaderEreaderSettings": "電子書籍リーダーの設定",
+ "HeaderLatestEpisodes": "最新のエピソード",
+ "HeaderLibraries": "ライブラリー",
"HeaderPlayerSettings": "プレーヤーの設定",
+ "HeaderSettingsGeneral": "一般",
+ "HeaderSettingsScanner": "スキャナー",
"LabelBooks": "ほん",
"LabelContinueListening": "続きから聞く",
"LabelLanguage": "言語",
@@ -67,5 +99,17 @@
"LabelNewPassword": "新しいのパスワード",
"LabelPassword": "パスワード",
"LabelPlaylists": "プレイリスト",
- "LabelPodcast": "ポッドキャスト"
+ "LabelPodcast": "ポッドキャスト",
+ "LabelSettingsFindCovers": "表紙を探す",
+ "LabelSettingsFindCoversHelp": "もしオーディオブックに表紙が埋め込まれていない、もしくは表紙画像がフォルダー内に見つからなければ、スキャナーは表紙を探そうとします。false. Zorg ervoor dat de claim van de identiteitsprovider overeenkomt met de verwachte structuur:",
"LabelOpenIDClaims": "Laat de volgende opties leeg om geavanceerde groeps- en machtigingstoewijzing uit te schakelen en de groep 'Gebruiker' automatisch toe te wijzen.",
@@ -629,6 +638,7 @@
"LabelStartTime": "Starttijd",
"LabelStarted": "Gestart",
"LabelStartedAt": "Gestart op",
+ "LabelStartedDate": "Gestart {0}",
"LabelStatsAudioTracks": "Audiotracks",
"LabelStatsAuthors": "Auteurs",
"LabelStatsBestDay": "Beste dag",
@@ -743,6 +753,7 @@
"MessageBookshelfNoResultsForFilter": "Geen resultaten voor filter \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "Geen resultaten voor query",
"MessageBookshelfNoSeries": "Je hebt geen series",
+ "MessageBulkChapterPattern": "Hoeveel hoofdstukken wilt u met dit nummeringspatroon toevoegen?",
"MessageChapterEndIsAfter": "Hoofdstukeinde is na het einde van je audioboek",
"MessageChapterErrorFirstNotZero": "Eerste hoofdstuk moet starten op 0",
"MessageChapterErrorStartGteDuration": "Ongeldig: starttijd moet kleiner zijn dan duur van audioboek",
@@ -805,6 +816,8 @@
"MessageFeedURLWillBe": "Feed URL zal {0} zijn",
"MessageFetching": "Aan het ophalen...",
"MessageForceReScanDescription": "zal alle bestanden opnieuw scannen als een verse scan. Audiobestanden ID3-tags, OPF-bestanden en textbestanden zullen als nieuw worden gescand.",
+ "MessageHeatmapListeningTimeTooltip": "{0} luistert op {1}",
+ "MessageHeatmapNoListeningSessions": "Geen luistersessies op {0}",
"MessageImportantNotice": "Belangrijke opmerking!",
"MessageInsertChapterBelow": "Hoofdstuk hieronder invoegen",
"MessageInvalidAsin": "Ongeldige ASIN",
@@ -944,6 +957,7 @@
"NotificationOnRSSFeedDisabledDescription": "Wordt geactiveerd wanneer automatische afleveringsdownloads zijn uitgeschakeld vanwege te veel mislukte pogingen",
"NotificationOnRSSFeedFailedDescription": "Getriggerd wanneer de RSS feed aanvraag faalt voor een automatische aflevering download",
"NotificationOnTestDescription": "Event voor het testen van het notificatiesysteem",
+ "PlaceholderBulkChapterInput": "Voer een hoofdstuktitel in of gebruik nummering (bijv. 'Aflevering 1', 'Hoofdstuk 10', '1.')",
"PlaceholderNewCollection": "Nieuwe naam collectie",
"PlaceholderNewFolderPath": "Nieuwe locatie map",
"PlaceholderNewPlaylist": "Nieuwe naam afspeellijst",
@@ -997,8 +1011,12 @@
"ToastBookmarkCreateFailed": "Aanmaken boekwijzer mislukt",
"ToastBookmarkCreateSuccess": "boekwijzer toegevoegd",
"ToastBookmarkRemoveSuccess": "Boekwijzer verwijderd",
+ "ToastBulkChapterInvalidCount": "Voer een nummer in tussen 1 en 150",
"ToastCachePurgeFailed": "Cache wissen is mislukt",
"ToastCachePurgeSuccess": "Cache succesvol verwijderd",
+ "ToastChapterLocked": "Hoofdstuk is vergrendeld.",
+ "ToastChapterStartTimeAdjusted": "Hoofdstukstarttijd aangepast met {0} seconden",
+ "ToastChaptersAllLocked": "Alle hoofdstukken zijn vergrendeld. Ontgrendel sommige hoofdstukken om hun tijd te verschuiven.",
"ToastChaptersHaveErrors": "Hoofdstukken bevatten fouten",
"ToastChaptersInvalidShiftAmountLast": "Ongeldige shift-tijd. De starttijd van het laatste hoofdstuk zou langer zijn dan de duur van dit audioboek.",
"ToastChaptersInvalidShiftAmountStart": "Ongeldige shift-lengte. Het eerste hoofdstuk zou nul of een negatieve lengte hebben en zou worden overschreven door het tweede hoofdstuk. Verleng de startduur van het tweede hoofdstuk.",
@@ -1032,6 +1050,7 @@
"ToastInvalidImageUrl": "Ongeldige afbeeldings-URL",
"ToastInvalidMaxEpisodesToDownload": "Ongeldig maximum aantal afleveringen om te downloaden",
"ToastInvalidUrl": "Ongeldige URL",
+ "ToastInvalidUrls": "Een of meerdere URLs zijn ongeldig",
"ToastItemCoverUpdateSuccess": "Omslag bijgewerkt",
"ToastItemDeletedFailed": "Item verwijderen mislukt",
"ToastItemDeletedSuccess": "Verwijderd item",
@@ -1081,6 +1100,7 @@
"ToastPlaylistUpdateSuccess": "Afspeellijst bijgewerkt",
"ToastPodcastCreateFailed": "Podcast aanmaken mislukt",
"ToastPodcastCreateSuccess": "Podcast aangemaakt",
+ "ToastPodcastEpisodeUpdated": "Aflevering bijgewerkt",
"ToastPodcastGetFeedFailed": "Podcast feed ophalen mislukt",
"ToastPodcastNoEpisodesInFeed": "Geen afleveringen gevonden in RSS feed",
"ToastPodcastNoRssFeed": "Podcast heeft geen RSS feed",
@@ -1131,5 +1151,13 @@
"ToastUserPasswordChangeSuccess": "Wachtwoord succesvol gewijzigd",
"ToastUserPasswordMismatch": "Wachtwoorden komen niet overeen",
"ToastUserPasswordMustChange": "Het nieuwe wachtwoord kan niet overeenkomen met het oude wachtwoord",
- "ToastUserRootRequireName": "U moet een root-gebruikersnaam invoeren"
+ "ToastUserRootRequireName": "U moet een root-gebruikersnaam invoeren",
+ "TooltipAddChapters": "Hoofdstuk(ken) toevoegen",
+ "TooltipAddOneSecond": "1 seconde toevoegen",
+ "TooltipAdjustChapterStart": "Klik om de starttijd aan te passen",
+ "TooltipLockAllChapters": "Alle hoofdstukken vergrendelen",
+ "TooltipLockChapter": "Hoofdstuk vergrendelen (Shift+klikken voor bereik)",
+ "TooltipSubtractOneSecond": "Trek 1 seconde af",
+ "TooltipUnlockAllChapters": "Alle hoofdstukken ontgrendelen",
+ "TooltipUnlockChapter": "Hoofdstuk ontgrendelen (Shift+klikken voor bereik)"
}
diff --git a/client/strings/ru.json b/client/strings/ru.json
index c8eed308b..4dd99fd41 100644
--- a/client/strings/ru.json
+++ b/client/strings/ru.json
@@ -17,12 +17,12 @@
"ButtonCancel": "Отмена",
"ButtonCancelEncode": "Отменить кодирование",
"ButtonChangeRootPassword": "Поменять мастер пароль",
- "ButtonCheckAndDownloadNewEpisodes": "Проверка и Загрузка новых эпизодов",
+ "ButtonCheckAndDownloadNewEpisodes": "Скачать новые выпуски",
"ButtonChooseAFolder": "Выбор папки",
"ButtonChooseFiles": "Выбор файлов",
"ButtonClearFilter": "Очистить фильтр",
"ButtonClose": "Закрыть",
- "ButtonCloseFeed": "Закрыть канал",
+ "ButtonCloseFeed": "Закрыть ленту",
"ButtonCloseSession": "Закрыть открытый сеанс",
"ButtonCollections": "Коллекции",
"ButtonConfigureScanner": "Конфигурация сканера",
@@ -56,7 +56,7 @@
"ButtonNextChapter": "Следующая глава",
"ButtonNextItemInQueue": "Следующий элемент в очереди",
"ButtonOk": "Ок",
- "ButtonOpenFeed": "Открыть канал",
+ "ButtonOpenFeed": "Открыть ленту",
"ButtonOpenManager": "Открыть менеджер",
"ButtonPause": "Пауза",
"ButtonPlay": "Слушать",
@@ -127,6 +127,7 @@
"HeaderAudiobookTools": "Инструменты файлов аудиокниг",
"HeaderAuthentication": "Аутентификация",
"HeaderBackups": "Бэкапы",
+ "HeaderBulkChapterModal": "Добавление нескольких глав",
"HeaderChangePassword": "Изменить пароль",
"HeaderChapters": "Главы",
"HeaderChooseAFolder": "Выберите папку",
@@ -141,7 +142,7 @@
"HeaderEbookFiles": "Файлы e-книг",
"HeaderEmail": "E-mail",
"HeaderEmailSettings": "Настройки Email",
- "HeaderEpisodes": "Эпизоды",
+ "HeaderEpisodes": "Выпуски",
"HeaderEreaderDevices": "Устройства E-книга",
"HeaderEreaderSettings": "Настройки E-ридера",
"HeaderFiles": "Файлы",
@@ -150,7 +151,7 @@
"HeaderItemFiles": "Файлы элемента",
"HeaderItemMetadataUtils": "Утилиты",
"HeaderLastListeningSession": "Последний сеанс прослушивания",
- "HeaderLatestEpisodes": "Последние эпизоды",
+ "HeaderLatestEpisodes": "Последние выпуски",
"HeaderLibraries": "Библиотеки",
"HeaderLibraryFiles": "Файлы библиотеки",
"HeaderLibraryStats": "Статистика библиотеки",
@@ -172,7 +173,7 @@
"HeaderNotifications": "Уведомления",
"HeaderOpenIDConnectAuthentication": "Аутентификация OpenID Connect",
"HeaderOpenListeningSessions": "Открытые сеансы прослушивания",
- "HeaderOpenRSSFeed": "Открыть RSS-канал",
+ "HeaderOpenRSSFeed": "Открыть RSS-ленту",
"HeaderOtherFiles": "Другие файлы",
"HeaderPasswordAuthentication": "Аутентификация по паролю",
"HeaderPermissions": "Разрешения",
@@ -184,13 +185,13 @@
"HeaderPresets": "Пресеты",
"HeaderPreviewCover": "Предпросмотр обложки",
"HeaderRSSFeedGeneral": "Сведения о RSS",
- "HeaderRSSFeedIsOpen": "RSS-канал открыт",
- "HeaderRSSFeeds": "RSS-каналы",
- "HeaderRemoveEpisode": "Удалить эпизод",
- "HeaderRemoveEpisodes": "Удалить {0} эпизодов",
+ "HeaderRSSFeedIsOpen": "RSS-лента открыта",
+ "HeaderRSSFeeds": "RSS-ленты",
+ "HeaderRemoveEpisode": "Удалить выпуск",
+ "HeaderRemoveEpisodes": "Удалить {0} выпусков",
"HeaderSavedMediaProgress": "Прогресс медиа сохранен",
"HeaderSchedule": "Планировщик",
- "HeaderScheduleEpisodeDownloads": "Запланируйте автоматическую загрузку эпизодов",
+ "HeaderScheduleEpisodeDownloads": "Запланировать автоматическое скачивание выпусков",
"HeaderScheduleLibraryScans": "Планировщик автоматического сканирования библиотеки",
"HeaderSession": "Сеансы",
"HeaderSetBackupSchedule": "Установить планировщик бэкапов",
@@ -236,7 +237,7 @@
"LabelAddedDate": "Добавлено {0}",
"LabelAdminUsersOnly": "Только для пользователей с правами администратора",
"LabelAll": "Все",
- "LabelAllEpisodesDownloaded": "Все эпизоды загружены",
+ "LabelAllEpisodesDownloaded": "Все выпуски скачаны",
"LabelAllUsers": "Все пользователи",
"LabelAllUsersExcludingGuests": "Все пользователи, кроме гостей",
"LabelAllUsersIncludingGuests": "Все пользователи, включая гостей",
@@ -254,7 +255,7 @@
"LabelAuthorFirstLast": "Автор (Имя Фамилия)",
"LabelAuthorLastFirst": "Автор (Фамилия, Имя)",
"LabelAuthors": "Авторы",
- "LabelAutoDownloadEpisodes": "Скачивать эпизоды автоматически",
+ "LabelAutoDownloadEpisodes": "Скачивать выпуски автоматически",
"LabelAutoFetchMetadata": "Автоматическое извлечение метаданных",
"LabelAutoFetchMetadataHelp": "Извлекает метаданные для названия, автора и серии для упрощения загрузки. После загрузки может потребоваться сопоставление дополнительных метаданных.",
"LabelAutoLaunch": "Автозапуск",
@@ -276,7 +277,7 @@
"LabelButtonText": "Текст кнопки",
"LabelByAuthor": "{0}",
"LabelChangePassword": "Изменить пароль",
- "LabelChannels": "Каналы",
+ "LabelChannels": "Ленты",
"LabelChapterCount": "{0} Главы",
"LabelChapterTitle": "Название главы",
"LabelChapters": "Главы",
@@ -308,6 +309,7 @@
"LabelDeleteFromFileSystemCheckbox": "Удалить из файловой системы (снимите флажок, чтобы удалить только из базы данных)",
"LabelDescription": "Описание",
"LabelDeselectAll": "Снять выделение",
+ "LabelDetectedPattern": "Обнаруженный образец:",
"LabelDevice": "Устройство",
"LabelDeviceInfo": "Информация об устройстве",
"LabelDeviceIsAvailableTo": "Устройство доступно для...",
@@ -316,7 +318,7 @@
"LabelDiscFromMetadata": "Диск из Метаданных",
"LabelDiscover": "Не начато",
"LabelDownload": "Скачать",
- "LabelDownloadNEpisodes": "Скачать {0} эпизодов",
+ "LabelDownloadNEpisodes": "Скачать {0} выпусков",
"LabelDownloadable": "Загружаемый",
"LabelDuration": "Длительность",
"LabelDurationComparisonExactMatch": "(точное совпадение)",
@@ -330,7 +332,7 @@
"LabelEmailSettingsFromAddress": "Адрес От",
"LabelEmailSettingsRejectUnauthorized": "Отклонение неавторизованных сертификатов",
"LabelEmailSettingsRejectUnauthorizedHelp": "Отключение проверки SSL-сертификата может подвергнуть ваше подключение рискам безопасности, таким как атаки типа \"man-in-the-middle\". Отключайте эту опцию только в том случае, если вы понимаете последствия и доверяете почтовому серверу, к которому подключаетесь.",
- "LabelEmailSettingsSecure": "Безопасность",
+ "LabelEmailSettingsSecure": "Безопасно",
"LabelEmailSettingsSecureHelp": "Если значение истинно, то соединение будет использовать TLS при подключении к серверу. Если значение ложно, то TLS будет использован, если сервер поддерживает расширение STARTTLS. В большинстве случаев установите это значение в истину, если вы подключаетесь к порту 465. Для порта 587 или 25 оставьте значение ложным. (из nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "Тестовый адрес",
"LabelEmbeddedCover": "Встроенная обложка",
@@ -346,13 +348,13 @@
"LabelEncodingWatcherDisabled": "Если у вас отключено наблюдение за папкой, вам нужно будет повторно пересканировать эту аудиокнигу.",
"LabelEnd": "Конец",
"LabelEndOfChapter": "Конец главы",
- "LabelEpisode": "Эпизод",
- "LabelEpisodeNotLinkedToRssFeed": "Эпизод, не связанный с RSS-каналом",
- "LabelEpisodeNumber": "Эпизод #{0}",
- "LabelEpisodeTitle": "Имя эпизода",
- "LabelEpisodeType": "Тип эпизода",
- "LabelEpisodeUrlFromRssFeed": "URL-адрес эпизода из RSS-ленты",
- "LabelEpisodes": "Эпизодов",
+ "LabelEpisode": "Выпуск",
+ "LabelEpisodeNotLinkedToRssFeed": "Выпуск, не связанный с RSS-лентой",
+ "LabelEpisodeNumber": "Выпуск #{0}",
+ "LabelEpisodeTitle": "Название выпуска",
+ "LabelEpisodeType": "Тип выпуска",
+ "LabelEpisodeUrlFromRssFeed": "URL-адрес выпуска из RSS-ленты",
+ "LabelEpisodes": "Выпуски",
"LabelEpisodic": "Эпизодический",
"LabelExample": "Пример",
"LabelExpandSeries": "Развернуть серию",
@@ -365,7 +367,7 @@
"LabelExplicitChecked": "18+ (отмечено)",
"LabelExplicitUnchecked": "+18 (не отмечено)",
"LabelExportOPML": "Экспорт OPML",
- "LabelFeedURL": "URL канала",
+ "LabelFeedURL": "URL-адрес ленты",
"LabelFetchingMetadata": "Извлечение метаданных",
"LabelFile": "Файл",
"LabelFileBirthtime": "Дата создания",
@@ -374,8 +376,9 @@
"LabelFileModifiedDate": "Изменено {0}",
"LabelFilename": "Имя файла",
"LabelFilterByUser": "Фильтр по пользователю",
- "LabelFindEpisodes": "Найти эпизоды",
+ "LabelFindEpisodes": "Найти выпуски",
"LabelFinished": "Закончен",
+ "LabelFinishedDate": "Завершено {0}",
"LabelFolder": "Папка",
"LabelFolders": "Папки",
"LabelFontBold": "Жирный",
@@ -434,21 +437,23 @@
"LabelLibraryItem": "Элемент библиотеки",
"LabelLibraryName": "Имя библиотеки",
"LabelLibrarySortByProgress": "Прогресс обновлён",
+ "LabelLibrarySortByProgressFinished": "Дата завершения",
+ "LabelLibrarySortByProgressStarted": "Дата начала",
"LabelLimit": "Лимит",
"LabelLineSpacing": "Межстрочный интервал",
"LabelListenAgain": "Послушать снова",
"LabelLogLevelDebug": "Debug",
"LabelLogLevelInfo": "Info",
"LabelLogLevelWarn": "Предупреждение",
- "LabelLookForNewEpisodesAfterDate": "Искать новые эпизоды после этой даты",
+ "LabelLookForNewEpisodesAfterDate": "Искать новые выпуски после этой даты",
"LabelLowestPriority": "Самый низкий приоритет",
"LabelMatchConfidence": "Уверенность",
"LabelMatchExistingUsersBy": "Сопоставление существующих пользователей по",
"LabelMatchExistingUsersByDescription": "Используется для подключения существующих пользователей. После подключения пользователям будет присвоен уникальный идентификатор от поставщика единого входа",
- "LabelMaxEpisodesToDownload": "Максимальное количество эпизодов для загрузки. Используйте 0 для неограниченного количества.",
- "LabelMaxEpisodesToDownloadPerCheck": "Максимальное количество новых эпизодов для загрузки за одну проверку",
- "LabelMaxEpisodesToKeep": "Максимальное количество сохраняемых эпизодов",
- "LabelMaxEpisodesToKeepHelp": "Значение 0 не устанавливает максимального ограничения. После автоматической загрузки нового эпизода самый старый эпизод будет удален, если у вас более X эпизодов. При этом будет удален только 1 эпизод за каждую новую загрузку.",
+ "LabelMaxEpisodesToDownload": "Максимальное количество выпусков для скачивания. Используйте 0 для неограниченного количества.",
+ "LabelMaxEpisodesToDownloadPerCheck": "Максимальное количество новых выпусков для скачивания за один раз",
+ "LabelMaxEpisodesToKeep": "Максимальное количество сохраняемых выпусков",
+ "LabelMaxEpisodesToKeepHelp": "Значение 0 не устанавливает максимального ограничения. После автоматической скачивании нового выпуска самый старый будет удалён, если у вас их уже более X выпусков. При этом будет удалён только 1 выпуск за каждое новое скачивание.",
"LabelMediaPlayer": "Медиа проигрыватель",
"LabelMediaType": "Тип медиа",
"LabelMetaTag": "Мета тег",
@@ -470,12 +475,13 @@
"LabelNew": "Новый",
"LabelNewPassword": "Новый пароль",
"LabelNewestAuthors": "Новые авторы",
- "LabelNewestEpisodes": "Новые эпизоды",
+ "LabelNewestEpisodes": "Новые выпуски",
"LabelNextBackupDate": "Следующая дата бэкапирования",
+ "LabelNextChapters": "Следующие главы будут:",
"LabelNextScheduledRun": "Следущий запланированный запуск",
"LabelNoApiKeys": "API ключи отсутствуют",
"LabelNoCustomMetadataProviders": "Нет пользовательских поставщиков метаданных",
- "LabelNoEpisodesSelected": "Эпизоды не выбраны",
+ "LabelNoEpisodesSelected": "Нет выбранных выпусков",
"LabelNotFinished": "Не завершено",
"LabelNotStarted": "Не запущено",
"LabelNotes": "Заметки",
@@ -489,11 +495,12 @@
"LabelNotificationsMaxQueueSize": "Макс. размер очереди для событий уведомлений",
"LabelNotificationsMaxQueueSizeHelp": "События ограничены 1 в секунду. События будут игнорированы если в очереди максимальное количество. Это предотвращает спам сообщениями.",
"LabelNumberOfBooks": "Количество книг",
- "LabelNumberOfEpisodes": "# из эпизодов",
+ "LabelNumberOfChapters": "Кол-во глав:",
+ "LabelNumberOfEpisodes": "# из выпусков",
"LabelOpenIDAdvancedPermsClaimDescription": "Имя утверждения OpenID, содержащего расширенные разрешения на действия пользователя в приложении, которые будут применяться к ролям, не являющимся администраторами (если они настроены). Если утверждение отсутствует в ответе, в доступе к ABS будет отказано. Если одна опция отсутствует, она будет рассматриваться как false. Убедитесь, что утверждение поставщика удостоверений соответствует ожидаемой структуре:",
"LabelOpenIDClaims": "Оставьте следующие параметры пустыми, чтобы отключить расширенное назначение групп и разрешений, будет автоматически присвоена группа «Пользователь».",
"LabelOpenIDGroupClaimDescription": "Имя утверждения OpenID, содержащего список групп пользователя. Обычно их называют groups. Если эта настройка настроена, приложение будет автоматически назначать роли на основе членства пользователя в группах при условии, что эти группы названы в утверждении без учета регистра \"admin\", \"user\" или \"guest\". Утверждение должно содержать список, и если пользователь принадлежит к нескольким группам, то приложение назначит роль, соответствующую самому высокому уровню доступа. Если ни одна из групп не совпадает, доступ будет запрещен.",
- "LabelOpenRSSFeed": "Открыть RSS-канал",
+ "LabelOpenRSSFeed": "Открыть RSS-ленту",
"LabelOverwrite": "Перезаписать",
"LabelPaginationPageXOfY": "Страница {0} из {1}",
"LabelPassword": "Пароль",
@@ -535,8 +542,8 @@
"LabelRSSFeedCustomOwnerName": "Пользовательское Имя владельца",
"LabelRSSFeedOpen": "Открыть RSS-ленту",
"LabelRSSFeedPreventIndexing": "Запретить индексирование",
- "LabelRSSFeedSlug": "Встроить RSS-канал",
- "LabelRSSFeedURL": "URL RSS-канала",
+ "LabelRSSFeedSlug": "Ключевое слово RSS-ленты",
+ "LabelRSSFeedURL": "URL-адрес RSS-ленты",
"LabelRandomly": "Случайно",
"LabelReAddSeriesToContinueListening": "Повторно добавить серию в «Продолжить слушать»",
"LabelRead": "Читать",
@@ -561,8 +568,8 @@
"LabelSeason": "Сезон",
"LabelSeasonNumber": "Сезон #{0}",
"LabelSelectAll": "Выбрать все",
- "LabelSelectAllEpisodes": "Выбрать все эпизоды",
- "LabelSelectEpisodesShowing": "Выберите {0} эпизодов для показа",
+ "LabelSelectAllEpisodes": "Выбрать все выпуски",
+ "LabelSelectEpisodesShowing": "Выберите {0} выпусков для отображения",
"LabelSelectUser": "Выбрать пользователя",
"LabelSelectUsers": "Выбор пользователей",
"LabelSendEbookToDevice": "Отправить e-книгу в...",
@@ -631,6 +638,7 @@
"LabelStartTime": "Время начала",
"LabelStarted": "Начат",
"LabelStartedAt": "Начато В",
+ "LabelStartedDate": "Начато {0}",
"LabelStatsAudioTracks": "Аудио треки",
"LabelStatsAuthors": "Авторы",
"LabelStatsBestDay": "Лучший День",
@@ -741,10 +749,11 @@
"MessageBatchQuickMatchDescription": "Быстрый Поиск попытается добавить отсутствующие обложки и метаданные для выбранных элементов. Включите параметры ниже, чтобы разрешить Быстрому Поиску перезаписывать существующие обложки и/или метаданные.",
"MessageBookshelfNoCollections": "Вы еще не создали ни одной коллекции",
"MessageBookshelfNoCollectionsHelp": "Коллекции являются общедоступными. Все пользователи, имеющие доступ к библиотеке, могут их просматривать.",
- "MessageBookshelfNoRSSFeeds": "Нет открытых RSS-каналов",
+ "MessageBookshelfNoRSSFeeds": "Нет открытых RSS-лент",
"MessageBookshelfNoResultsForFilter": "Нет Результатов для фильтра \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "Нет результатов для запроса",
"MessageBookshelfNoSeries": "У вас нет серий",
+ "MessageBulkChapterPattern": "Сколько глав вы хотели бы добавить, используя эту схему нумерации?",
"MessageChapterEndIsAfter": "Конец главы после окончания вашей аудиокниги",
"MessageChapterErrorFirstNotZero": "Первая глава должна начинаться с 0",
"MessageChapterErrorStartGteDuration": "Неверное время начала, должно быть меньше продолжительности аудиокниги",
@@ -752,7 +761,7 @@
"MessageChapterStartIsAfter": "Глава начинается после окончания аудиокниги",
"MessageChaptersNotFound": "Главы не найденны",
"MessageCheckingCron": "Проверка cron...",
- "MessageConfirmCloseFeed": "Вы уверены, что хотите закрыть этот канал?",
+ "MessageConfirmCloseFeed": "Вы уверены, что хотите закрыть эту ленту?",
"MessageConfirmDeleteApiKey": "Вы уверены, что хотите удалить API ключ \"{0}\"?",
"MessageConfirmDeleteBackup": "Вы уверены, что хотите удалить бэкап для {0}?",
"MessageConfirmDeleteDevice": "Вы уверены, что хотите удалить устройство для чтения электронных книг \"{0}\"?",
@@ -765,8 +774,8 @@
"MessageConfirmDeleteSession": "Вы уверены, что хотите удалить этот сеанс?",
"MessageConfirmEmbedMetadataInAudioFiles": "Вы уверены, что хотите вставить метаданные в {0} аудиофайлов?",
"MessageConfirmForceReScan": "Вы уверены, что хотите принудительно выполнить повторное сканирование?",
- "MessageConfirmMarkAllEpisodesFinished": "Вы уверены, что хотите отметить все эпизоды как завершенные?",
- "MessageConfirmMarkAllEpisodesNotFinished": "Вы уверены, что хотите отметить все эпизоды как не завершенные?",
+ "MessageConfirmMarkAllEpisodesFinished": "Вы уверены, что хотите отметить все выпуски как прослушанные?",
+ "MessageConfirmMarkAllEpisodesNotFinished": "Вы уверены, что хотите отметить все выпуски как непрослушанные?",
"MessageConfirmMarkItemFinished": "Вы уверены, что хотите отметить «{0}» как завершенную?",
"MessageConfirmMarkItemNotFinished": "Вы уверены, что хотите отметить «{0}» как не завершенную?",
"MessageConfirmMarkSeriesFinished": "Вы уверены, что хотите отметить все книги этой серии как завершенные?",
@@ -775,14 +784,14 @@
"MessageConfirmPurgeCache": "Очистка кэша удалит весь каталог в /metadata/cache. /metadata/cache/items.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'.",
@@ -743,6 +749,7 @@
"MessageBookshelfNoResultsForFilter": "Ni rezultatov za filter \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "Ni rezultatov za poizvedbo",
"MessageBookshelfNoSeries": "Nimate serij",
+ "MessageBulkChapterPattern": "Koliko poglavij želite dodati s tem vzorcem oštevilčenja?",
"MessageChapterEndIsAfter": "Konec poglavja je po koncu zvočne knjige",
"MessageChapterErrorFirstNotZero": "Prvo poglavje se mora začeti pri 0",
"MessageChapterErrorStartGteDuration": "Neveljaven začetni čas, mora biti krajši od trajanja zvočne knjige",
@@ -805,6 +812,8 @@
"MessageFeedURLWillBe": "URL vira bo {0}",
"MessageFetching": "Pridobivam...",
"MessageForceReScanDescription": "bo znova pregledal vse datoteke kot pregled od začetka. Oznake ID3 zvočnih datotek, datoteke OPF in besedilne datoteke bodo pregledane kot nove.",
+ "MessageHeatmapListeningTimeTooltip": "{0} posluša na {1}",
+ "MessageHeatmapNoListeningSessions": "Ni sej poslušanj na {0}",
"MessageImportantNotice": "Pomembno obvestilo!",
"MessageInsertChapterBelow": "Spodaj vstavite poglavje",
"MessageInvalidAsin": "Neveljaven ASIN",
@@ -944,6 +953,7 @@
"NotificationOnRSSFeedDisabledDescription": "Sproži se, ko so samodejni prenosi epizod onemogočeni zaradi preveč neuspelih poskusov",
"NotificationOnRSSFeedFailedDescription": "Sproži se, ko zahteva za vir RSS za samodejni prenos epizode ne uspe",
"NotificationOnTestDescription": "Dogodek za testiranje sistema obveščanja",
+ "PlaceholderBulkChapterInput": "Vnesite naslov poglavja ali uporabite oštevilčenje (npr. 'Epizoda 1', 'Poglavje 10', '1.')",
"PlaceholderNewCollection": "Novo ime zbirke",
"PlaceholderNewFolderPath": "Pot nove mape",
"PlaceholderNewPlaylist": "Novo ime seznama predvajanja",
@@ -997,8 +1007,12 @@
"ToastBookmarkCreateFailed": "Zaznamka ni bilo mogoče ustvariti",
"ToastBookmarkCreateSuccess": "Zaznamek dodan",
"ToastBookmarkRemoveSuccess": "Zaznamek odstranjen",
+ "ToastBulkChapterInvalidCount": "Vnesite število med 1 in 150",
"ToastCachePurgeFailed": "Čiščenje predpomnilnika ni uspelo",
"ToastCachePurgeSuccess": "Predpomnilnik je bil uspešno očiščen",
+ "ToastChapterLocked": "Poglavje je zaklenjeno.",
+ "ToastChapterStartTimeAdjusted": "Začetni čas poglavja je bil prilagojen za {0} sekund",
+ "ToastChaptersAllLocked": "Vsa poglavja so zaklenjena. Odklenite nekatera poglavja, da premaknete njihove čase.",
"ToastChaptersHaveErrors": "Poglavja imajo napake",
"ToastChaptersInvalidShiftAmountLast": "Neveljavna vrednost zamika. Začetni čas zadnjega poglavja bi presegel trajanje te zvočne knjige.",
"ToastChaptersInvalidShiftAmountStart": "Neveljavna vrednost zamika. Prvo poglavje bi imelo ničelno ali negativno dolžino in bi ga prepisalo drugo poglavje. Povečajte začetno trajanje drugega poglavja.",
@@ -1032,6 +1046,7 @@
"ToastInvalidImageUrl": "Neveljaven URL slike",
"ToastInvalidMaxEpisodesToDownload": "Neveljavno največje število epizod za prenos",
"ToastInvalidUrl": "Neveljaven URL",
+ "ToastInvalidUrls": "Eden ali več URL-jev je neveljavnih",
"ToastItemCoverUpdateSuccess": "Naslovnica elementa je bila posodobljena",
"ToastItemDeletedFailed": "Elementa ni bilo mogoče izbrisati",
"ToastItemDeletedSuccess": "Element je bil izbrisan",
@@ -1081,6 +1096,7 @@
"ToastPlaylistUpdateSuccess": "Seznam predvajanja je bil posodobljen",
"ToastPodcastCreateFailed": "Podcasta ni bilo mogoče ustvariti",
"ToastPodcastCreateSuccess": "Podcast je bil uspešno ustvarjen",
+ "ToastPodcastEpisodeUpdated": "Epizoda je bila posodobljena",
"ToastPodcastGetFeedFailed": "Vira podcasta ni bilo mogoče pridobiti",
"ToastPodcastNoEpisodesInFeed": "V viru RSS ni bilo mogoče najti nobene epizode",
"ToastPodcastNoRssFeed": "Podcast nima vira RSS",
@@ -1131,5 +1147,13 @@
"ToastUserPasswordChangeSuccess": "Geslo je bilo uspešno spremenjeno",
"ToastUserPasswordMismatch": "Gesli se ne ujemata",
"ToastUserPasswordMustChange": "Novo geslo se ne sme ujemati s starim geslom",
- "ToastUserRootRequireName": "Vnesti morate korensko uporabniško ime"
+ "ToastUserRootRequireName": "Vnesti morate korensko uporabniško ime",
+ "TooltipAddChapters": "Dodaj poglavje(-a)",
+ "TooltipAddOneSecond": "Dodaj 1 sekundo",
+ "TooltipAdjustChapterStart": "Kliknite za prilagoditev začetnega časa",
+ "TooltipLockAllChapters": "Zakleni vsa poglavja",
+ "TooltipLockChapter": "Zakleni poglavje (Shift+klik za obseg)",
+ "TooltipSubtractOneSecond": "Odštej 1 sekundo",
+ "TooltipUnlockAllChapters": "Odkleni vsa poglavja",
+ "TooltipUnlockChapter": "Odkleni poglavje (Shift+klik za obseg)"
}
diff --git a/client/strings/sv.json b/client/strings/sv.json
index 208329460..459174017 100644
--- a/client/strings/sv.json
+++ b/client/strings/sv.json
@@ -106,7 +106,7 @@
"ButtonStats": "Statistik",
"ButtonSubmit": "Skicka",
"ButtonTest": "Testa",
- "ButtonUnlinkOpenId": "Koppla från OpenID",
+ "ButtonUnlinkOpenId": "Koppla ifrån OpenID",
"ButtonUpload": "Ladda upp",
"ButtonUploadBackup": "Läs in säkerhetskopia",
"ButtonUploadCover": "Ladda upp omslag",
@@ -127,6 +127,7 @@
"HeaderAudiobookTools": "Hantering av ljudboksfiler",
"HeaderAuthentication": "Autentisering",
"HeaderBackups": "Säkerhetskopior",
+ "HeaderBulkChapterModal": "Addera flera kapitel",
"HeaderChangePassword": "Ändra lösenord",
"HeaderChapters": "Kapitel",
"HeaderChooseAFolder": "Välj en mapp",
@@ -181,6 +182,7 @@
"HeaderPlaylist": "Spellista",
"HeaderPlaylistItems": "Böcker i spellistan",
"HeaderPodcastsToAdd": "Podcaster att lägga till",
+ "HeaderPresets": "Förinställningar",
"HeaderPreviewCover": "Förhandsgranska omslag",
"HeaderRSSFeedGeneral": "RSS-information",
"HeaderRSSFeedIsOpen": "RSS-flödet är öppet",
@@ -198,6 +200,7 @@
"HeaderSettingsExperimental": "Experimentella funktioner",
"HeaderSettingsGeneral": "Allmänt",
"HeaderSettingsScanner": "Skanner",
+ "HeaderSettingsSecurity": "Säkerhet",
"HeaderSettingsWebClient": "Webklient",
"HeaderSleepTimer": "Timer för att sova",
"HeaderStatsLargestItems": "Största objekten",
@@ -241,6 +244,7 @@
"LabelAlreadyInYourLibrary": "Finns redan i samlingen",
"LabelApiKeyCreated": "API-nyckel \"{0}\" har adderats.",
"LabelApiKeyCreatedDescription": "Se till att kopiera API-nyckeln omedelbart eftersom du inte kommer att kunna se den igen.",
+ "LabelApiKeyUser": "Utför på uppdrag av användare",
"LabelApiKeyUserDescription": "Denna API-nyckel kommer att ha samma behörigheter som användaren den agerar på uppdrag av. Detta kommer att visas på samma sätt i loggarna som om användaren gjorde begäran.",
"LabelApiToken": "API-token",
"LabelAppend": "Lägg till",
@@ -291,12 +295,13 @@
"LabelContinueListening": "Fortsätt att lyssna",
"LabelContinueReading": "Fortsätt att läsa",
"LabelContinueSeries": "Fortsätt med serien",
+ "LabelCorsAllowed": "Godkänd CORS Origins",
"LabelCover": "Omslag",
"LabelCoverImageURL": "URL till omslagsbild",
"LabelCoverProvider": "Källa för omslag",
"LabelCreatedAt": "Skapad",
"LabelCronExpression": "Schemaläggning med hjälp av Cron (Cron Expression)",
- "LabelCurrent": "Nuvarande plats",
+ "LabelCurrent": "Nuvarande omslag",
"LabelCurrently": "För närvarande:",
"LabelCustomCronExpression": "Anpassat Cron-uttryck:",
"LabelDatetime": "Datum och klockslag",
@@ -304,6 +309,7 @@
"LabelDeleteFromFileSystemCheckbox": "Ta även bort från filsystem (avmarkera = raderar endast från databasen)",
"LabelDescription": "Beskrivning",
"LabelDeselectAll": "Avmarkera alla",
+ "LabelDetectedPattern": "Identifierat mönster:",
"LabelDevice": "Enhet",
"LabelDeviceInfo": "Enhetsinformation",
"LabelDeviceIsAvailableTo": "Enhet är tillgänglig för...",
@@ -325,9 +331,9 @@
"LabelEmail": "E-post",
"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.",
+ "LabelEmailSettingsRejectUnauthorizedHelp": "Om valideringen av SSL-certifikat stängs av kan det exponera din anslutning för säkerhetsrisker, som attacker av typen 'man-in-the-middle'. Stäng endast av denna inställning om du förstår konsekvenserna och litar på den epostserver du är ansluten 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)",
+ "LabelEmailSettingsSecureHelp": "Om aktiverad kommer anslutningen att använda TLS vid anslutning till servern. Annars används TLS om servern stöder STARTTLS-tillägget. I de flesta fall, om du ansluter till port 465, bör detta alternativ vara aktiverat. För port 587 eller 25, bör det vara avstängt. (från nodemailer.com/smtp/#authentication)",
"LabelEmailSettingsTestAddress": "E-postadress för test",
"LabelEmbeddedCover": "Infogat omslag",
"LabelEnable": "Aktivera",
@@ -364,14 +370,15 @@
"LabelFeedURL": "URL-adress för flödet",
"LabelFetchingMetadata": "Hämtar metadata",
"LabelFile": "Fil",
- "LabelFileBirthtime": "Tidpunkt, fil skapad",
+ "LabelFileBirthtime": "Tidpunkt, adderad",
"LabelFileBornDate": "Skapad {0}",
- "LabelFileModified": "Tidpunkt, fil ändrad",
+ "LabelFileModified": "Tidpunkt, ändrad",
"LabelFileModifiedDate": "Ändrad {0}",
"LabelFilename": "Filnamn",
"LabelFilterByUser": "Välj användare",
"LabelFindEpisodes": "Sök avsnitt",
"LabelFinished": "Avslutad",
+ "LabelFinishedDate": "Avslutad {0}",
"LabelFolder": "Mapp",
"LabelFolders": "Mappar",
"LabelFontBold": "Fetstil",
@@ -416,6 +423,7 @@
"LabelLanguages": "Språk",
"LabelLastBookAdded": "Bok senast adderad",
"LabelLastBookUpdated": "Bok senast uppdaterad",
+ "LabelLastProgressDate": "Senaste framsteg: {0}",
"LabelLastSeen": "Senast inloggad",
"LabelLastTime": "Senaste tillfället",
"LabelLastUpdate": "Senast uppdaterad",
@@ -428,6 +436,9 @@
"LabelLibraryFilterSublistEmpty": "Ingen {0}",
"LabelLibraryItem": "Objekt",
"LabelLibraryName": "Biblioteksnamn",
+ "LabelLibrarySortByProgress": "Framsteg uppdaterat",
+ "LabelLibrarySortByProgressFinished": "Avslutsdag",
+ "LabelLibrarySortByProgressStarted": "Startdag",
"LabelLimit": "Begränsning",
"LabelLineSpacing": "Radavstånd",
"LabelListenAgain": "Lyssna igen",
@@ -438,7 +449,7 @@
"LabelLowestPriority": "Lägst prioritet",
"LabelMatchConfidence": "Förtroende",
"LabelMatchExistingUsersBy": "Matcha befintliga användare med",
- "LabelMatchExistingUsersByDescription": "Används för att koppla existerande användare. När kopplingen sker kommer användaren att matchas med ett unikt ID från SSO-leverantören.",
+ "LabelMatchExistingUsersByDescription": "Används för att ansluta befintlig användare. När anslutningen sker kommer användaren att matchas med ett unikt ID från SSO-leverantören.",
"LabelMaxEpisodesToDownload": "Maximalt antal avsnitt att ladda ner (0 = obegränsat).",
"LabelMaxEpisodesToDownloadPerCheck": "Maximalt antal nya avsnitt att ladda ner per tillfälle",
"LabelMaxEpisodesToKeep": "Maximalt antal avsnitt att behålla",
@@ -451,7 +462,7 @@
"LabelMetadataProvider": "Källa för metadata",
"LabelMinute": "Minut",
"LabelMinutes": "Minuter",
- "LabelMissing": "Saknar",
+ "LabelMissing": "Saknas",
"LabelMissingEbook": "Saknar e-bok",
"LabelMissingSupplementaryEbook": "Saknar kompletterande e-bok",
"LabelMobileRedirectURIs": "Tillåtna mobila omdirigerings-URI:er",
@@ -461,11 +472,12 @@
"LabelName": "Namn",
"LabelNarrator": "Uppläsare",
"LabelNarrators": "Uppläsare",
- "LabelNew": "Ny plats",
+ "LabelNew": "Nytt omslag",
"LabelNewPassword": "Nytt lösenord",
"LabelNewestAuthors": "Senaste författarna",
"LabelNewestEpisodes": "Senaste avsnitten",
"LabelNextBackupDate": "Nästa tillfälle för säkerhetskopiering",
+ "LabelNextChapters": "Nästa kapitel kommer att vara:",
"LabelNextScheduledRun": "Nästa schemalagda körning",
"LabelNoApiKeys": "Ingen API-nyckel",
"LabelNoCustomMetadataProviders": "Ingen egen källa för metadata",
@@ -473,16 +485,17 @@
"LabelNotFinished": "Ej avslutad",
"LabelNotStarted": "Ej påbörjad",
"LabelNotes": "Anteckningar",
- "LabelNotificationAppriseURL": "Apprise URL(er)",
+ "LabelNotificationAppriseURL": "Apprise URL-adress(er)",
"LabelNotificationAvailableVariables": "Tillgängliga variabler",
"LabelNotificationBodyTemplate": "Kroppsmall",
- "LabelNotificationEvent": "Aviseringshändelse",
+ "LabelNotificationEvent": "Händelser som skickar ett meddelande",
"LabelNotificationTitleTemplate": "Titelsmall",
"LabelNotificationsMaxFailedAttempts": "Max antal misslyckade försök",
"LabelNotificationsMaxFailedAttemptsHelp": "Aviseringar inaktiveras när de misslyckas med att skickas så många gånger",
"LabelNotificationsMaxQueueSize": "Max köstorlek för aviseringsevenemang",
"LabelNotificationsMaxQueueSizeHelp": "Evenemang är begränsade till att utlösa ett per sekund. Evenemang kommer att ignoreras om kön är full. Detta förhindrar aviseringsspam.",
"LabelNumberOfBooks": "Antal böcker",
+ "LabelNumberOfChapters": "Antal kapitel:",
"LabelNumberOfEpisodes": "# av Avsnitt",
"LabelOpenIDAdvancedPermsClaimDescription": "Namn på OpenID-anspråket som innehåller avancerade behörigheter för användaråtgärder i applikationen, vilka gäller för icke-administratörsroller (om konfigurerat). Om anspråket saknas i svaret kommer åtkomst till ABS att nekas. Om ett enskilt alternativ saknas kommer det att behandlas som falskt. Se till att identitetsleverantörens anspråk matchar den förväntade strukturen:",
"LabelOpenIDClaims": "Lämna följande alternativ tomma för att inaktivera avancerad grupp- och behörighetstilldelning, och tilldela då automatiskt gruppen 'Användare'.",
@@ -517,6 +530,7 @@
"LabelPrimaryEbook": "Primär e-bok",
"LabelProgress": "Framsteg",
"LabelProvider": "Källa",
+ "LabelProviderAuthorizationValue": "Värde för auktoriseringsheader",
"LabelPubDate": "Publiceringsdatum",
"LabelPublishYear": "Utgivningsår",
"LabelPublishedDate": "Publicerad {0}",
@@ -526,7 +540,7 @@
"LabelPublishers": "Utgivare",
"LabelRSSFeedCustomOwnerEmail": "Anpassad ägarens e-post",
"LabelRSSFeedCustomOwnerName": "Anpassat ägarnamn",
- "LabelRSSFeedOpen": "Öppna RSS-flöde",
+ "LabelRSSFeedOpen": "RSS-flöde öppet",
"LabelRSSFeedPreventIndexing": "Förhindra indexering",
"LabelRSSFeedSlug": "RSS-flödesslag",
"LabelRSSFeedURL": "URL-adress för RSS-flödet",
@@ -609,18 +623,22 @@
"LabelSettingsTimeFormat": "Tidsformat",
"LabelShare": "Dela",
"LabelShareDownloadableHelp": "Tillåt att användare som fått en delad länk att ladda ner ett komprimerat objekt från biblioteket.",
+ "LabelShareOpen": "Delning öppet",
"LabelShareURL": "Dela URL-länk",
"LabelShowAll": "Visa alla",
"LabelShowSeconds": "Visa i sekunder",
"LabelShowSubtitles": "Visa underrubriker",
"LabelSize": "Storlek",
"LabelSleepTimer": "Sovtimer",
+ "LabelSlug": "Kortnamn",
"LabelSortAscending": "Stigande",
"LabelSortDescending": "Fallande",
+ "LabelSortPubDate": "Sortera efter publiceringsdatum",
"LabelStart": "Start",
"LabelStartTime": "Starttid",
"LabelStarted": "Startad",
"LabelStartedAt": "Startades",
+ "LabelStartedDate": "Påbörjad {0}",
"LabelStatsAudioTracks": "Ljudfiler",
"LabelStatsAuthors": "Författare",
"LabelStatsBestDay": "Bästa dag",
@@ -673,10 +691,10 @@
"LabelTotalTimeListened": "Total tid lyssnad",
"LabelTrackFromFilename": "Plats från filnamnet",
"LabelTrackFromMetadata": "Plats från metadata",
- "LabelTracks": "Spår",
- "LabelTracksMultiTrack": "Flerspårigt",
- "LabelTracksNone": "Inga spår",
- "LabelTracksSingleTrack": "Enspårigt",
+ "LabelTracks": "Ljudspår",
+ "LabelTracksMultiTrack": "Flera ljudspår",
+ "LabelTracksNone": "Inga ljudspår",
+ "LabelTracksSingleTrack": "Ett ljudspår",
"LabelTrailer": "Trailer",
"LabelType": "Typ",
"LabelUnabridged": "Oavkortad",
@@ -705,6 +723,7 @@
"LabelViewPlayerSettings": "Visa inställningar för uppspelning",
"LabelViewQueue": "Visa spellista",
"LabelVolume": "Volym",
+ "LabelWebRedirectURLsDescription": "Auktorisera dessa URLer i din OAuth-leverantör för att tillåta omdirigering tillbaka till webbappen efter inloggning:",
"LabelWeekdaysToRun": "Veckodagar att köra skanning",
"LabelXBooks": "{0} böcker",
"LabelXItems": "{0} objekt",
@@ -715,7 +734,8 @@
"LabelYourPlaylists": "Dina spellistor",
"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. http://192.168.1.1:8337, bör du ange http://192.168.1.1:8337/notify.",
+ "MessageAppriseDescription": "För att använda den här funktionen behöver du ha en instans av Apprise API startad eller ett API som hanterar dessa förfrågningar. http://192.168.1.1:8337, bör du ange http://192.168.1.1:8337/notify.",
+ "MessageAsinCheck": "Säkerställ att du använder ASIN-kod för rätt region/område.",
"MessageAuthenticationLegacyTokenWarning": "Legacy API-koder kommer att raderas i framtiden. Använd denna istället: API Keys.",
"MessageAuthenticationOIDCChangesRestart": "Du måste starta om servern efter att du ändrat eller adderat OIDC (OpenID Connect).",
"MessageAuthenticationSecurityMessage": "Identifieringen av användare har förbättrats av säkerhetsskäl. Alla användare måste därför logga in på nytt.",
@@ -759,7 +779,7 @@
"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 katalogen /metadata/cache att raderas. /metadata/cache/items att raderas. /metadata/cache/items att raderas. /metadata/logs som JSON-filer./metadata/logs/crash_logs.txt.",
- "MessageM4BFailed": "M4B misslyckades!",
- "MessageM4BFinished": "M4B klar!",
+ "MessageM4BFailed": "Skapandet av en M4B-fil misslyckades!",
+ "MessageM4BFinished": "Omkodningen till M4B är genomförd!",
"MessageMapChapterTitles": "Kartlägg kapitelrubriker till dina befintliga ljudbokskapitel utan att justera tidstämplar",
"MessageMarkAllEpisodesFinished": "Markera alla avsnitt som avslutade",
"MessageMarkAllEpisodesNotFinished": "Markera alla avsnitt som ej avslutade",
"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 omslag. 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 omslag som saknas. Inga befintliga uppgifter kommer att ersättas.",
"MessageNoAudioTracks": "Inga ljudfiler har hittats",
"MessageNoAuthors": "Inga författare",
"MessageNoBackups": "Inga säkerhetskopior",
@@ -867,7 +887,7 @@
"MessageSetChaptersFromTracksDescription": "Använd varje ljudfil som ett kapitel och ljudfilens namn som kapitlets rubrik",
"MessageShareExpirationWillBe": "Giltig till kommer att bli {0}",
"MessageShareExpiresIn": "Upphör om {0}",
- "MessageStartPlaybackAtTime": "Starta uppspelning av \"{0}\" vid tidpunkt {1}?",
+ "MessageStartPlaybackAtTime": "Starta uppspelning av \"{0}\" från tidpunkt {1}?",
"MessageTaskAudioFileNotWritable": "Det går inte att skriva till ljudfilen \"{0}\"",
"MessageTaskCanceledByUser": "Uppgiften avslutades av användaren",
"MessageTaskDownloadingEpisodeDescription": "Laddar ner avsnitt \"{0}\"",
@@ -901,7 +921,7 @@
"MessageTaskTargetDirectoryNotWritable": "Det är inte tillåtet att skriva i den angivna katalogen",
"MessageThinking": "Tänker...",
"MessageUploaderItemFailed": "Misslyckades med att ladda upp",
- "MessageUploaderItemSuccess": "har blivit uppladdad!",
+ "MessageUploaderItemSuccess": "har blivit uppladdat!",
"MessageUploading": "Laddar upp...",
"MessageValidCronExpression": "Giltigt cron-uttryck",
"MessageWatcherIsDisabledGlobally": "Automatisk bevakning av förändringar är inaktiverad under rubriken 'Inställningar'",
@@ -919,6 +939,10 @@
"NotificationOnBackupCompletedDescription": "Aktiveras när en backup är genomförd",
"NotificationOnBackupFailedDescription": "Aktiveras när en backup misslyckas",
"NotificationOnEpisodeDownloadedDescription": "Aktiveras när avsnitt i en podcast automatiskt har hämtats",
+ "NotificationOnRSSFeedDisabledDescription": "Aktiveras när den automatiska nedladdningen av avsnitt i en podcast stängts av pga för många misslyckade försök",
+ "NotificationOnRSSFeedFailedDescription": "Aktiveras när den automatiska nedladdningen av avsnitt i en podcast misslyckats",
+ "NotificationOnTestDescription": "Händelse för att testa meddelandesystemet",
+ "PlaceholderBulkChapterInput": "Addera kapitlets titel eller numrera kapitlen (t.ex. 'Avsnitt 1', 'Kapitel 10', '1.)",
"PlaceholderNewCollection": "Nytt namn på samlingen",
"PlaceholderNewFolderPath": "Ny sökväg till mappen",
"PlaceholderNewPlaylist": "Nytt namn på spellistan",
@@ -943,7 +967,7 @@
"StatsTotalDuration": "Med den totala längden…",
"StatsYearInReview": "- SAMMANSTÄLLNING AV ÅRET",
"ToastAccountUpdateSuccess": "Kontot har uppdaterats",
- "ToastAppriseUrlRequired": "En adress till Apprise måste anges",
+ "ToastAppriseUrlRequired": "En URL-adress till Apprise API måste anges",
"ToastAsinRequired": "En ASIN-kod krävs",
"ToastAuthorImageRemoveSuccess": "Författarens bild borttagen",
"ToastAuthorNotFound": "Författaren \"{0}\" kunde inte identifieras",
@@ -961,7 +985,7 @@
"ToastBackupInvalidMaxSize": "Felaktig storlek på backup har angivits",
"ToastBackupRestoreFailed": "Det gick inte att återställa säkerhetskopian",
"ToastBackupUploadFailed": "Det gick inte att ladda upp säkerhetskopian",
- "ToastBackupUploadSuccess": "Säkerhetskopian uppladdad",
+ "ToastBackupUploadSuccess": "Säkerhetskopian har laddats upp",
"ToastBatchApplyDetailsToItemsSuccess": "Informationen har adderats till alla objekt",
"ToastBatchQuickMatchStarted": "Snabbmatchning av {0} böcker har påbörjats!",
"ToastBatchUpdateFailed": "Batchuppdateringen misslyckades",
@@ -969,9 +993,15 @@
"ToastBookmarkCreateFailed": "Det gick inte att skapa bokmärket",
"ToastBookmarkCreateSuccess": "Bokmärket har adderats",
"ToastBookmarkRemoveSuccess": "Bokmärket har raderats",
+ "ToastBulkChapterInvalidCount": "Ange ett nummer mellan 1 och 150",
"ToastCachePurgeFailed": "Misslyckades med att rensa cachen",
"ToastCachePurgeSuccess": "Rensning av cachen har genomförts",
+ "ToastChapterLocked": "Kapitlet är låst.",
+ "ToastChapterStartTimeAdjusted": "Kapitlets starttid justerades med {0} sekunder",
+ "ToastChaptersAllLocked": "Alla kapitel är låsta. Lås upp några av dem för att kunna ändra deras tider.",
"ToastChaptersHaveErrors": "Kapitlen har fel",
+ "ToastChaptersInvalidShiftAmountLast": "Felaktig ändring. Det sista kapitlets starttid kommer att hamna efter den totala längden på ljudboken.",
+ "ToastChaptersInvalidShiftAmountStart": "Felaktig ändring. Det första kapitlets längd kommer att vara 0 eller ha ett negativt värde. Det kommer därför att skrivas över av det andra kapitlet. Öka starttiden för det andra kapitlet.",
"ToastChaptersMustHaveTitles": "Kapitel måste ha titlar",
"ToastChaptersRemoved": "Kapitlen har raderats",
"ToastChaptersUpdated": "Kapitlen har uppdaterats",
@@ -999,8 +1029,9 @@
"ToastFailedToShare": "Misslyckades med att dela",
"ToastFailedToUpdate": "Misslyckades med att uppdatera",
"ToastInvalidImageUrl": "Felaktig URL-adress till omslagsbilden",
- "ToastInvalidMaxEpisodesToDownload": "Ogiltigt maximalt antal avsnitt att ladda ner",
+ "ToastInvalidMaxEpisodesToDownload": "Felaktigt värde angivet för maximalt antal avsnitt att ladda ner",
"ToastInvalidUrl": "Felaktig URL-adress",
+ "ToastInvalidUrls": "En eller flera URL-adresser är felaktig",
"ToastItemCoverUpdateSuccess": "Objektets omslag har uppdaterats",
"ToastItemDeletedFailed": "Misslyckades med att radera objektet",
"ToastItemDeletedSuccess": "Objektet har raderats",
@@ -1029,7 +1060,7 @@
"ToastNewUserCreatedFailed": "Misslyckades med att skapa kontot \"{0}\"",
"ToastNewUserCreatedSuccess": "Ett nytt konto har skapats",
"ToastNewUserLibraryError": "Minst ett bibliotek måste anges",
- "ToastNewUserPasswordError": "Ett lösenord måste anges. Endast användaren 'root' kan vara utan lösenord.",
+ "ToastNewUserPasswordError": "Ett lösenord måste anges. Endast användaren 'root' tillåts sakna lösenord.",
"ToastNewUserTagError": "Minst en tagg måste läggas till",
"ToastNewUserUsernameError": "Ange ett användarnamn",
"ToastNoNewEpisodesFound": "Inga nya avsnitt kunde hittas",
@@ -1037,7 +1068,9 @@
"ToastNoUpdatesNecessary": "Inga uppdateringar var nödvändiga",
"ToastNotificationCreateFailed": "Misslyckades med att skapa meddelandet",
"ToastNotificationDeleteFailed": "Misslyckades med att radera meddelandet",
+ "ToastNotificationFailedMaximum": "Maximalt antal misslyckade försök måste vara större än eller lika med 0",
"ToastNotificationSettingsUpdateSuccess": "Inställningarna för meddelanden har ändrats",
+ "ToastNotificationTestTriggerFailed": "Misslyckades med att skicka testmeddelandet",
"ToastNotificationUpdateSuccess": "Meddelandet har uppdaterats",
"ToastPlaylistCreateFailed": "Det gick inte att skapa spellistan",
"ToastPlaylistCreateSuccess": "Spellistan skapad",
@@ -1045,6 +1078,7 @@
"ToastPlaylistUpdateSuccess": "Spellistan har uppdaterats",
"ToastPodcastCreateFailed": "Misslyckades med att skapa podcasten",
"ToastPodcastCreateSuccess": "Podcasten skapades framgångsrikt",
+ "ToastPodcastEpisodeUpdated": "Avsnittet har uppdaterats",
"ToastPodcastNoEpisodesInFeed": "Inga avsnitt finns i RSS-flödet",
"ToastPodcastNoRssFeed": "Denna podcast har ingen RSS-flöde",
"ToastProviderCreatedFailed": "Misslyckades med att addera en källa",
@@ -1068,7 +1102,7 @@
"ToastSendEbookToDeviceFailed": "Misslyckades med att skicka e-boken till enheten",
"ToastSendEbookToDeviceSuccess": "E-boken skickad till enheten \"{0}\"",
"ToastSeriesSubmitFailedSameName": "Det är inte möjligt att addera två serier med samma namn",
- "ToastSeriesUpdateFailed": "Uppdateringen av serier misslyckades",
+ "ToastSeriesUpdateFailed": "Misslyckades med att uppdatera serien",
"ToastSeriesUpdateSuccess": "Uppdateringen av serierna lyckades",
"ToastServerSettingsUpdateSuccess": "Inställningarna för servern har uppdaterats",
"ToastSessionDeleteFailed": "Misslyckades med att ta bort sessionen",
@@ -1089,5 +1123,13 @@
"ToastUserPasswordChangeSuccess": "Lösenordet har ändrats",
"ToastUserPasswordMismatch": "Lösenorden är inte identiska",
"ToastUserPasswordMustChange": "Det nya lösenordet kan inte vara samma som det gamla",
- "ToastUserRootRequireName": "Ett användarnamn för 'root' måste anges"
+ "ToastUserRootRequireName": "Ett användarnamn för 'root' måste anges",
+ "TooltipAddChapters": "Addera kapitel",
+ "TooltipAddOneSecond": "Öka med 1 sekund",
+ "TooltipAdjustChapterStart": "Klicka för att ändra starttiden",
+ "TooltipLockAllChapters": "Lås alla kapitel",
+ "TooltipLockChapter": "Lås kapitel (Tryck på Shift + Klick för att markera flera)",
+ "TooltipSubtractOneSecond": "Minska med 1 sekund",
+ "TooltipUnlockAllChapters": "Lås upp alla kapitel",
+ "TooltipUnlockChapter": "Lås upp kapitel (Tryck på Shift + Klick för att markera flera)"
}
diff --git a/client/strings/uk.json b/client/strings/uk.json
index f07c34045..6f2ed2930 100644
--- a/client/strings/uk.json
+++ b/client/strings/uk.json
@@ -76,7 +76,7 @@
"ButtonReScan": "Пересканувати",
"ButtonRead": "Читати",
"ButtonReadLess": "Згорнути",
- "ButtonReadMore": "Читати далі",
+ "ButtonReadMore": "Читати більше",
"ButtonRefresh": "Оновити",
"ButtonRemove": "Видалити",
"ButtonRemoveAll": "Видалити все",
@@ -127,6 +127,7 @@
"HeaderAudiobookTools": "Інструменти керування файлами книг",
"HeaderAuthentication": "Автентифікація",
"HeaderBackups": "Резервні копії",
+ "HeaderBulkChapterModal": "Додати кілька розділів",
"HeaderChangePassword": "Змінити пароль",
"HeaderChapters": "Глави",
"HeaderChooseAFolder": "Обрати теку",
@@ -292,7 +293,7 @@
"LabelComplete": "Завершити",
"LabelConfirmPassword": "Підтвердити пароль",
"LabelContinueListening": "Слухати далі",
- "LabelContinueReading": "Читати далі",
+ "LabelContinueReading": "Продовжити читання",
"LabelContinueSeries": "Продовжити серії",
"LabelCorsAllowed": "Дозволені джерела CORS",
"LabelCover": "Обкладинка",
@@ -308,6 +309,7 @@
"LabelDeleteFromFileSystemCheckbox": "Видалити з файлової системи (зніміть прапорець, щоб видалити лише з бази даних)",
"LabelDescription": "Опис",
"LabelDeselectAll": "Скасувати вибір",
+ "LabelDetectedPattern": "Виявлений візерунок:",
"LabelDevice": "Пристрій",
"LabelDeviceInfo": "Про пристрій",
"LabelDeviceIsAvailableTo": "Пристрій доступний для...",
@@ -376,6 +378,7 @@
"LabelFilterByUser": "Фільтрувати за користувачем",
"LabelFindEpisodes": "Знайти епізоди",
"LabelFinished": "Завершено",
+ "LabelFinishedDate": "Завершено {0}",
"LabelFolder": "Тека",
"LabelFolders": "Теки",
"LabelFontBold": "Жирний",
@@ -434,6 +437,8 @@
"LabelLibraryItem": "Елемент бібліотеки",
"LabelLibraryName": "Назва бібліотеки",
"LabelLibrarySortByProgress": "Прогрес оновлено",
+ "LabelLibrarySortByProgressFinished": "Дата завершення",
+ "LabelLibrarySortByProgressStarted": "Дата початку",
"LabelLimit": "Обмеження",
"LabelLineSpacing": "Відстань між рядками",
"LabelListenAgain": "Слухати знову",
@@ -472,6 +477,7 @@
"LabelNewestAuthors": "Нові автори",
"LabelNewestEpisodes": "Нові епізоди",
"LabelNextBackupDate": "Дата наступного резервного копіювання",
+ "LabelNextChapters": "Наступні розділи будуть:",
"LabelNextScheduledRun": "Наступний запланований запуск",
"LabelNoApiKeys": "Без ключів API",
"LabelNoCustomMetadataProviders": "Без постачальників метаданих",
@@ -489,6 +495,7 @@
"LabelNotificationsMaxQueueSize": "Ліміт розміру черги сповіщень",
"LabelNotificationsMaxQueueSizeHelp": "Події обмежені до 1 на секунду. Події буде проігноровано, якщо ліміт черги досягнуто. Це запобігає спаму сповіщеннями.",
"LabelNumberOfBooks": "Кількість книг",
+ "LabelNumberOfChapters": "Кількість розділів:",
"LabelNumberOfEpisodes": "Кількість серій",
"LabelOpenIDAdvancedPermsClaimDescription": "Назва OpenID claim, що містить розширені дозволи на дії користувачів у додатку, які будуть застосовуватися до ролей, що не є адміністраторами (якщо налаштовано). Якщо у відповіді нема claim, у доступі до Audiobookshelf буде відмовлено. Якщо відсутня хоча б одна опція, відповідь буде вважатися хибною. Переконайтеся, що запит постачальника ідентифікаційних даних відповідає очікуваній структурі:",
"LabelOpenIDClaims": "Не змінюйте наступні параметри, аби вимкнути розширене призначення груп і дозволів, автоматично призначаючи групу 'Користувач'.",
@@ -631,6 +638,7 @@
"LabelStartTime": "Час початку",
"LabelStarted": "Стартував",
"LabelStartedAt": "Почато з",
+ "LabelStartedDate": "Розпочато {0}",
"LabelStatsAudioTracks": "Аудіодоріжки",
"LabelStatsAuthors": "Автори",
"LabelStatsBestDay": "Найкращий день",
@@ -745,6 +753,7 @@
"MessageBookshelfNoResultsForFilter": "Немає результатів з фільтром \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "Немає результатів за запитом",
"MessageBookshelfNoSeries": "У вас немає серій",
+ "MessageBulkChapterPattern": "Скільки розділів ви хочете додати за допомогою цієї схеми нумерації?",
"MessageChapterEndIsAfter": "Кінець глави після завершення аудіокниги",
"MessageChapterErrorFirstNotZero": "Перша глава повинна починатися з 0",
"MessageChapterErrorStartGteDuration": "Час початку має бути меншим за тривалість аудіокниги",
@@ -948,6 +957,7 @@
"NotificationOnRSSFeedDisabledDescription": "Виконується, коли автоматичне завантаження епізодів вимкнено через забагато невдалих спроб",
"NotificationOnRSSFeedFailedDescription": "Виконується, коли запит RSS-каналу не вдається для автоматичного завантаження епізоду",
"NotificationOnTestDescription": "Подія для тестування системи сповіщень",
+ "PlaceholderBulkChapterInput": "Введіть назву розділу або використовуйте нумерацію (наприклад, «Епізод 1», «Розділ 10», «1.»)",
"PlaceholderNewCollection": "Нова назва добірки",
"PlaceholderNewFolderPath": "Новий шлях до теки",
"PlaceholderNewPlaylist": "Нова назва списку",
@@ -1001,8 +1011,12 @@
"ToastBookmarkCreateFailed": "Не вдалося створити закладку",
"ToastBookmarkCreateSuccess": "Закладку додано",
"ToastBookmarkRemoveSuccess": "Закладку видалено",
+ "ToastBulkChapterInvalidCount": "Введіть число від 1 до 150",
"ToastCachePurgeFailed": "Не вдалося очистити кеш",
"ToastCachePurgeSuccess": "Кеш очищено",
+ "ToastChapterLocked": "Розділ заблоковано.",
+ "ToastChapterStartTimeAdjusted": "Час початку розділу змінено на {0} секунд",
+ "ToastChaptersAllLocked": "Усі розділи заблоковано. Розблокуйте деякі розділи, щоб змістити їхній час.",
"ToastChaptersHaveErrors": "Глави містять помилки",
"ToastChaptersInvalidShiftAmountLast": "Недійсна тривалість зсуву. Час початку останнього розділу перевищує тривалість цієї аудіокниги.",
"ToastChaptersInvalidShiftAmountStart": "Недійсна величина зсуву. Перший розділ матиме нульову або від’ємну тривалість і буде перезаписаний другим розділом. Збільште початкову тривалість другого розділу.",
@@ -1086,6 +1100,7 @@
"ToastPlaylistUpdateSuccess": "Список відтворення оновлено",
"ToastPodcastCreateFailed": "Не вдалося створити подкаст",
"ToastPodcastCreateSuccess": "Подкаст успішно створено",
+ "ToastPodcastEpisodeUpdated": "Епізод оновлено",
"ToastPodcastGetFeedFailed": "Не вдалося отримати фід подкасту",
"ToastPodcastNoEpisodesInFeed": "У RSS-каналі не знайдено епізодів",
"ToastPodcastNoRssFeed": "Подкаст не має RSS-каналу",
@@ -1136,5 +1151,13 @@
"ToastUserPasswordChangeSuccess": "Пароль успішно змінено",
"ToastUserPasswordMismatch": "Паролі не збігаються",
"ToastUserPasswordMustChange": "Новий пароль не може співпадати з попереднім",
- "ToastUserRootRequireName": "Потрібно ввести ім'я користувача root"
+ "ToastUserRootRequireName": "Потрібно ввести ім'я користувача root",
+ "TooltipAddChapters": "Додати розділ(и)",
+ "TooltipAddOneSecond": "Додати 1 секунду",
+ "TooltipAdjustChapterStart": "Натисніть, щоб налаштувати час початку",
+ "TooltipLockAllChapters": "Заблокувати всі розділи",
+ "TooltipLockChapter": "Заблокувати розділ (Shift+клацання для діапазону)",
+ "TooltipSubtractOneSecond": "Відніміть 1 секунду",
+ "TooltipUnlockAllChapters": "Розблокувати всі розділи",
+ "TooltipUnlockChapter": "Розблокувати розділ (Shift+клацання для діапазону)"
}
diff --git a/client/strings/vi-vn.json b/client/strings/vi-vn.json
index 7dd46d4ae..b8a257209 100644
--- a/client/strings/vi-vn.json
+++ b/client/strings/vi-vn.json
@@ -1,5 +1,6 @@
{
"ButtonAdd": "Thêm",
+ "ButtonAddApiKey": "Thêm API Key",
"ButtonAddChapters": "Thêm Chương",
"ButtonAddDevice": "Thêm Thiết Bị",
"ButtonAddLibrary": "Thêm Thư Viện",
@@ -9,6 +10,7 @@
"ButtonApply": "Áp Dụng",
"ButtonApplyChapters": "Áp Dụng Chương",
"ButtonAuthors": "Tác Giả",
+ "ButtonBack": "Quay lại",
"ButtonBrowseForFolder": "Duyệt Thư Mục",
"ButtonCancel": "Hủy",
"ButtonCancelEncode": "Hủy Mã Hóa",
@@ -17,7 +19,9 @@
"ButtonChooseAFolder": "Chọn một thư mục",
"ButtonChooseFiles": "Chọn tập tin",
"ButtonClearFilter": "Xóa Bộ Lọc",
+ "ButtonClose": "Đóng",
"ButtonCloseFeed": "Đóng Feed",
+ "ButtonCloseSession": "Đóng phiên hiện tại",
"ButtonCollections": "Bộ Sưu Tập",
"ButtonConfigureScanner": "Cấu Hình Bộ Quét",
"ButtonCreate": "Tạo",
@@ -27,6 +31,10 @@
"ButtonEdit": "Chỉnh Sửa",
"ButtonEditChapters": "Chỉnh Sửa Chương",
"ButtonEditPodcast": "Chỉnh Sửa Podcast",
+ "ButtonEnable": "Kích hoạt",
+ "ButtonFireAndFail": "Chạy và báo lỗi",
+ "ButtonFireOnTest": "Chạy thử",
+ "ButtonForceReScan": "Quét lại",
"ButtonFullPath": "Đường Dẫn Đầy Đủ",
"ButtonHide": "Ẩn",
"ButtonHome": "Trang Chủ",
@@ -44,21 +52,28 @@
"ButtonNevermind": "Không Sao",
"ButtonNext": "Tiếp Theo",
"ButtonNextChapter": "Chương Tiếp Theo",
+ "ButtonNextItemInQueue": "Mục tiếp theo trong hàng đợi",
+ "ButtonOk": "Chấp nhận",
"ButtonOpenFeed": "Mở Feed",
"ButtonOpenManager": "Mở Quản Lý",
"ButtonPause": "Tạm Dừng",
"ButtonPlay": "Phát",
+ "ButtonPlayAll": "Phát tất cả",
"ButtonPlaying": "Đang Phát",
"ButtonPlaylists": "Danh Sách Phát",
"ButtonPrevious": "Trước",
"ButtonPreviousChapter": "Chương Trước",
+ "ButtonProbeAudioFile": "Kiểm tra tệp âm thanh",
"ButtonPurgeAllCache": "Xóa Sạch Tất Cả Bộ Nhớ Cache",
"ButtonPurgeItemsCache": "Xóa Sạch Bộ Nhớ Cache Các Mục",
"ButtonQueueAddItem": "Thêm vào hàng đợi",
"ButtonQueueRemoveItem": "Xóa khỏi hàng đợi",
+ "ButtonQuickEmbed": "Nhúng nhanh",
"ButtonQuickMatch": "Khớp Nhanh",
"ButtonReScan": "Quét Lại",
"ButtonRead": "Đọc",
+ "ButtonReadLess": "Thu gọn",
+ "ButtonReadMore": "Đọc thêm",
"ButtonRefresh": "Làm Mới",
"ButtonRemove": "Xóa",
"ButtonRemoveAll": "Xóa Tất Cả",
@@ -74,6 +89,8 @@
"ButtonSaveTracklist": "Lưu Danh Sách Track",
"ButtonScan": "Quét",
"ButtonScanLibrary": "Quét Thư Viện",
+ "ButtonScrollLeft": "Cuộn trái",
+ "ButtonScrollRight": "Cuộn phải",
"ButtonSearch": "Tìm Kiếm",
"ButtonSelectFolderPath": "Chọn Đường Dẫn Thư Mục",
"ButtonSetChaptersFromTracks": "Đặt chương từ các track",
@@ -82,8 +99,10 @@
"ButtonShow": "Hiện",
"ButtonStartM4BEncode": "Bắt đầu Mã Hóa M4B",
"ButtonStartMetadataEmbed": "Bắt đầu Nhúng Dữ Liệu",
+ "ButtonStats": "Dữ liệu",
"ButtonSubmit": "Gửi",
"ButtonTest": "Kiểm Tra",
+ "ButtonUnlinkOpenId": "Huỷ liên kết OpenID",
"ButtonUpload": "Tải Lên",
"ButtonUploadBackup": "Tải Lên Bản Sao Lưu",
"ButtonUploadCover": "Tải Lên Bìa",
@@ -98,7 +117,7 @@
"HeaderAccount": "Tài Khoản",
"HeaderAdvanced": "Nâng Cao",
"HeaderAppriseNotificationSettings": "Cài Đặt Thông Báo Apprise",
- "HeaderAudioTracks": "Các Track Âm Thanh",
+ "HeaderAudioTracks": "Danh Sách Âm Thanh",
"HeaderAudiobookTools": "Công Cụ Quản Lý Tệp Truyện Nói",
"HeaderAuthentication": "Xác Thực",
"HeaderBackups": "Bản Sao Lưu",
@@ -106,9 +125,10 @@
"HeaderChapters": "Chương",
"HeaderChooseAFolder": "Chọn Một Thư Mục",
"HeaderCollection": "Bộ Sưu Tập",
- "HeaderCollectionItems": "Các Mục Bộ Sưu Tập",
+ "HeaderCollectionItems": "Danh sách Bộ Sưu Tập",
"HeaderCover": "Bìa",
"HeaderCurrentDownloads": "Tải Xuống Hiện Tại",
+ "HeaderCustomMessageOnLogin": "Tin nhắn tuỳ chọn khi đăng nhập",
"HeaderCustomMetadataProviders": "Các Nhà Cung Cấp Metadata Tùy Chỉnh",
"HeaderDetails": "Chi Tiết",
"HeaderDownloadQueue": "Hàng Đợi Tải Xuống",
@@ -139,6 +159,8 @@
"HeaderMetadataToEmbed": "Metadata để nhúng",
"HeaderNewAccount": "Tài Khoản Mới",
"HeaderNewLibrary": "Thư Viện Mới",
+ "HeaderNotificationCreate": "Tạo thông báo",
+ "HeaderNotificationUpdate": "Cập nhập thông báo",
"HeaderNotifications": "Thông Báo",
"HeaderOpenIDConnectAuthentication": "Xác Thực Mở ID Connect",
"HeaderOpenRSSFeed": "Mở RSS Feed",
@@ -146,6 +168,7 @@
"HeaderPasswordAuthentication": "Xác Thực Mật Khẩu",
"HeaderPermissions": "Quyền Hạn",
"HeaderPlayerQueue": "Hàng Đợi Người Chơi",
+ "HeaderPlayerSettings": "Cài đặt trình phát",
"HeaderPlaylist": "Danh Sách Phát",
"HeaderPlaylistItems": "Các Mục Danh Sách Phát",
"HeaderPodcastsToAdd": "Podcasts để Thêm",
@@ -156,6 +179,7 @@
"HeaderRemoveEpisodes": "Xóa {0} Tập",
"HeaderSavedMediaProgress": "Tiến Trình Phương Tiện Đã Lưu",
"HeaderSchedule": "Lịch Trình",
+ "HeaderScheduleEpisodeDownloads": "Đặt lịch tự động tải tập",
"HeaderScheduleLibraryScans": "Lên Lịch Quét Tự Động Thư Viện",
"HeaderSession": "Phiên",
"HeaderSetBackupSchedule": "Đặt Lịch Sao Lưu",
@@ -164,6 +188,7 @@
"HeaderSettingsExperimental": "Tính Năng Thử Nghiệm",
"HeaderSettingsGeneral": "Chung",
"HeaderSettingsScanner": "Máy Quét",
+ "HeaderSettingsSecurity": "Bảo mật",
"HeaderSleepTimer": "Hẹn Giờ Tắt",
"HeaderStatsLargestItems": "Các Mục Lớn Nhất",
"HeaderStatsLongestItems": "Các Mục Dài Nhất (giờ)",
@@ -174,6 +199,7 @@
"HeaderTableOfContents": "Mục Lục",
"HeaderTools": "Công Cụ",
"HeaderUpdateAccount": "Cập Nhật Tài Khoản",
+ "HeaderUpdateApiKey": "Cập nhập API Key",
"HeaderUpdateAuthor": "Cập Nhật Tác Giả",
"HeaderUpdateDetails": "Cập Nhật Chi Tiết",
"HeaderUpdateLibrary": "Cập Nhật Thư Viện",
@@ -190,6 +216,8 @@
"LabelAddToCollectionBatch": "Thêm {0} Sách vào Bộ Sưu Tập",
"LabelAddToPlaylist": "Thêm vào Danh Sách Phát",
"LabelAddedAt": "Đã Thêm Lúc",
+ "LabelAddedDate": "Đã thêm {0}",
+ "LabelAutoDownloadEpisodes": "Tự Động Tải Xuống Các Tập",
"LabelBackupsMaxBackupSize": "Maximum backup size (in GB)",
"LabelBooks": "Sách",
"LabelButtonText": "Nút Văn Bản",
@@ -231,7 +259,7 @@
"LabelDownloadNEpisodes": "Tải Xuống {0} Tập",
"LabelDuration": "Thời Lượng",
"LabelDurationFound": "Thời lượng được tìm thấy:",
- "LabelEbooks": "Các Ebook",
+ "LabelEbooks": "",
"LabelEdit": "Chỉnh Sửa",
"LabelEmailSettingsFromAddress": "Địa chỉ Gửi từ",
"LabelEmailSettingsSecure": "Bảo Mật",
@@ -257,6 +285,7 @@
"LabelFolder": "Thư Mục",
"LabelFolders": "Các Thư Mục",
"LabelFontBold": "Đậm",
+ "LabelFontBoldness": "Chữ đậm",
"LabelFontFamily": "Gia đình font",
"LabelFontItalic": "Nghiêng",
"LabelFontScale": "Tỷ lệ font",
@@ -268,7 +297,7 @@
"LabelHasEbook": "Có ebook",
"LabelHasSupplementaryEbook": "Có ebook bổ sung",
"LabelHighestPriority": "Ưu tiên cao nhất",
- "LabelHost": "Máy chủ",
+ "LabelHost": "Máy Chủ",
"LabelHour": "Giờ",
"LabelIcon": "Biểu tượng",
"LabelImageURLFromTheWeb": "URL hình ảnh từ web",
@@ -303,7 +332,7 @@
"LabelLibraryName": "Tên thư viện",
"LabelLimit": "Giới hạn",
"LabelLineSpacing": "Khoảng cách dòng",
- "LabelListenAgain": "Nghe lại",
+ "LabelListenAgain": "Nghe Lại",
"LabelLogLevelDebug": "Gỡ lỗi",
"LabelLogLevelInfo": "Thông tin",
"LabelLogLevelWarn": "Cảnh báo",
@@ -312,13 +341,13 @@
"LabelMatchExistingUsersBy": "Kết hợp người dùng hiện có theo",
"LabelMatchExistingUsersByDescription": "Sử dụng để kết nối người dùng hiện có. Khi kết nối, người dùng sẽ được kết hợp bằng một ID duy nhất từ nhà cung cấp SSO của bạn",
"LabelMediaPlayer": "Trình phát đa phương tiện",
- "LabelMediaType": "Loại phương tiện",
+ "LabelMediaType": "Loại Phương Tiện",
"LabelMetaTag": "Thẻ Meta",
"LabelMetaTags": "Các thẻ Meta",
"LabelMetadataOrderOfPrecedenceDescription": "Nguồn siêu dữ liệu ưu tiên cao hơn sẽ ghi đè lên các nguồn siêu dữ liệu ưu tiên thấp hơn",
"LabelMetadataProvider": "Nhà cung cấp siêu dữ liệu",
"LabelMinute": "Phút",
- "LabelMissing": "Thiếu",
+ "LabelMissing": "",
"LabelMissingEbook": "Không có ebook",
"LabelMissingSupplementaryEbook": "Không có ebook bổ sung",
"LabelMobileRedirectURIs": "URI chuyển hướng di động được cho phép",
@@ -335,7 +364,7 @@
"LabelNextBackupDate": "Ngày sao lưu tiếp theo",
"LabelNextScheduledRun": "Chạy tiếp theo theo lịch trình",
"LabelNoEpisodesSelected": "Không có tập nào được chọn",
- "LabelNotFinished": "Chưa hoàn thành",
+ "LabelNotFinished": "Chưa Hoàn Thành",
"LabelNotStarted": "Chưa bắt đầu",
"LabelNotes": "Ghi chú",
"LabelNotificationAppriseURL": "URL(s) thông báo",
@@ -348,7 +377,7 @@
"LabelNotificationsMaxQueueSize": "Kích thước hàng đợi tối đa cho sự kiện thông báo",
"LabelNotificationsMaxQueueSizeHelp": "Các sự kiện bị giới hạn mỗi giây chỉ gửi 1 lần. Các sự kiện sẽ bị bỏ qua nếu hàng đợi đạt kích thước tối đa. Điều này ngăn chặn spam thông báo.",
"LabelNumberOfBooks": "Số lượng Sách",
- "LabelNumberOfEpisodes": "# của Tập",
+ "LabelNumberOfEpisodes": "Số lượng tập",
"LabelOpenRSSFeed": "Mở RSS Feed",
"LabelOverwrite": "Ghi đè",
"LabelPassword": "Mật khẩu",
@@ -364,17 +393,19 @@
"LabelPhotoPathURL": "Đường dẫn/URL ảnh",
"LabelPlayMethod": "Phương pháp phát",
"LabelPlaylists": "Danh sách phát",
+ "LabelPodcast": "Podcast",
"LabelPodcastSearchRegion": "Vùng tìm kiếm podcast",
"LabelPodcastType": "Loại Podcast",
- "LabelPodcasts": "Các podcast",
+ "LabelPodcasts": "Podcasts",
"LabelPort": "Cổng",
"LabelPrefixesToIgnore": "Tiền tố để bỏ qua (không phân biệt chữ hoa/chữ thường)",
- "LabelPreventIndexing": "Ngăn chặn feed của bạn được chỉ mục bởi thư mục podcast của iTunes và Google",
+ "LabelPreventIndexing": "Ngăn Chặn Feed của bạn bị truy xuất bởi thư mục iTunes và Google podcast",
"LabelPrimaryEbook": "Ebook chính",
"LabelProgress": "Tiến độ",
"LabelProvider": "Nhà cung cấp",
"LabelPubDate": "Ngày Xuất bản",
- "LabelPublishYear": "Năm Xuất bản",
+ "LabelPublishYear": "Năm Xuất Bản",
+ "LabelPublishedDate": "Xuất bản vào {0}",
"LabelPublisher": "Nhà xuất bản",
"LabelRSSFeedCustomOwnerEmail": "Email chủ sở hữu tùy chỉnh",
"LabelRSSFeedCustomOwnerName": "Tên chủ sở hữu tùy chỉnh",
diff --git a/client/strings/zh-cn.json b/client/strings/zh-cn.json
index 68994e7a1..0cfc63d00 100644
--- a/client/strings/zh-cn.json
+++ b/client/strings/zh-cn.json
@@ -127,6 +127,7 @@
"HeaderAudiobookTools": "有声读物文件管理工具",
"HeaderAuthentication": "身份验证",
"HeaderBackups": "备份",
+ "HeaderBulkChapterModal": "添加多个章节",
"HeaderChangePassword": "更改密码",
"HeaderChapters": "章节",
"HeaderChooseAFolder": "选择文件夹",
@@ -308,6 +309,7 @@
"LabelDeleteFromFileSystemCheckbox": "从文件系统删除 (取消选中仅从数据库中删除)",
"LabelDescription": "描述",
"LabelDeselectAll": "全部取消选择",
+ "LabelDetectedPattern": "检测到的编号格式:",
"LabelDevice": "设备",
"LabelDeviceInfo": "设备信息",
"LabelDeviceIsAvailableTo": "设备可用于...",
@@ -376,6 +378,7 @@
"LabelFilterByUser": "按用户筛选",
"LabelFindEpisodes": "查找剧集",
"LabelFinished": "已听完",
+ "LabelFinishedDate": "完成于 {0}",
"LabelFolder": "文件夹",
"LabelFolders": "文件夹",
"LabelFontBold": "加粗",
@@ -434,6 +437,8 @@
"LabelLibraryItem": "媒体库项目",
"LabelLibraryName": "媒体库名称",
"LabelLibrarySortByProgress": "进度更新时间",
+ "LabelLibrarySortByProgressFinished": "完成日期",
+ "LabelLibrarySortByProgressStarted": "开始日期",
"LabelLimit": "限制",
"LabelLineSpacing": "行间距",
"LabelListenAgain": "再次收听",
@@ -472,6 +477,7 @@
"LabelNewestAuthors": "最新作者",
"LabelNewestEpisodes": "最新剧集",
"LabelNextBackupDate": "下次备份日期",
+ "LabelNextChapters": "后续章节示例:",
"LabelNextScheduledRun": "下次任务运行",
"LabelNoApiKeys": "无 API 密钥",
"LabelNoCustomMetadataProviders": "没有自定义元数据提供商",
@@ -489,6 +495,7 @@
"LabelNotificationsMaxQueueSize": "通知事件的最大队列大小",
"LabelNotificationsMaxQueueSizeHelp": "通知事件被限制为每秒触发 1 个. 如果队列处于最大大小, 则将忽略事件. 这可以防止通知垃圾邮件.",
"LabelNumberOfBooks": "图书数量",
+ "LabelNumberOfChapters": "章节数量:",
"LabelNumberOfEpisodes": "# 集数",
"LabelOpenIDAdvancedPermsClaimDescription": "OpenID 声明的名称, 该声明包含应用程序内用户操作的高级权限, 该权限将应用于非管理员角色(如果已配置). 如果响应中缺少声明, 获取 ABS 的权限将被拒绝. 如果缺少单个选项, 它将被视为 禁用. 确保身份提供商的声明与预期结构匹配:",
"LabelOpenIDClaims": "将以下选项留空以禁用高级组和权限分配, 然后自动分配 'User' 组.",
@@ -631,6 +638,7 @@
"LabelStartTime": "开始时间",
"LabelStarted": "开始于",
"LabelStartedAt": "收听始于",
+ "LabelStartedDate": "开始于 {0}",
"LabelStatsAudioTracks": "音轨",
"LabelStatsAuthors": "作者",
"LabelStatsBestDay": "单日最高",
@@ -745,6 +753,7 @@
"MessageBookshelfNoResultsForFilter": "过滤器无结果 \"{0}: {1}\"",
"MessageBookshelfNoResultsForQuery": "没有可查询的结果",
"MessageBookshelfNoSeries": "你没有系列",
+ "MessageBulkChapterPattern": "您想用此编号模式添加多少个章节?",
"MessageChapterEndIsAfter": "章节结束是在有声读物结束之后",
"MessageChapterErrorFirstNotZero": "第一章节必须从 0 开始",
"MessageChapterErrorStartGteDuration": "无效的开始时间, 必须小于有声读物持续时间",
@@ -948,6 +957,7 @@
"NotificationOnRSSFeedDisabledDescription": "由于尝试失败次数过多而导致剧集自动下载被禁用时触发",
"NotificationOnRSSFeedFailedDescription": "当用于自动下载剧集的 RSS 源请求失败时触发",
"NotificationOnTestDescription": "测试通知系统的事件",
+ "PlaceholderBulkChapterInput": "请输入章节标题, 或使用编号格式 (例如: \"Episode 1\", \"Chapter 10\", \"1.\")",
"PlaceholderNewCollection": "输入收藏夹名称",
"PlaceholderNewFolderPath": "输入文件夹路径",
"PlaceholderNewPlaylist": "输入播放列表名称",
@@ -1001,8 +1011,12 @@
"ToastBookmarkCreateFailed": "创建书签失败",
"ToastBookmarkCreateSuccess": "书签已添加",
"ToastBookmarkRemoveSuccess": "书签已删除",
+ "ToastBulkChapterInvalidCount": "输入一个1到150之间的整数",
"ToastCachePurgeFailed": "清除缓存失败",
"ToastCachePurgeSuccess": "缓存清除成功",
+ "ToastChapterLocked": "章节已锁定.",
+ "ToastChapterStartTimeAdjusted": "章节开始时间已调整 {0} 秒",
+ "ToastChaptersAllLocked": "所有章节均已锁定. 请解锁要调整时间的章节.",
"ToastChaptersHaveErrors": "章节有错误",
"ToastChaptersInvalidShiftAmountLast": "偏移量无效. 最后一章的开始时间将超过这本有声读物的持续时间.",
"ToastChaptersInvalidShiftAmountStart": "偏移量无效. 第一章的长度将为零或负数, 并会被第二章覆盖. 请增加第二章的起始时长.",
@@ -1086,6 +1100,7 @@
"ToastPlaylistUpdateSuccess": "播放列表已更新",
"ToastPodcastCreateFailed": "创建播客失败",
"ToastPodcastCreateSuccess": "已成功创建播客",
+ "ToastPodcastEpisodeUpdated": "剧集已更新",
"ToastPodcastGetFeedFailed": "无法获取播客信息",
"ToastPodcastNoEpisodesInFeed": "RSS 订阅中未找到任何剧集",
"ToastPodcastNoRssFeed": "播客没有 RSS 源",
@@ -1136,5 +1151,13 @@
"ToastUserPasswordChangeSuccess": "密码修改成功",
"ToastUserPasswordMismatch": "密码不匹配",
"ToastUserPasswordMustChange": "新密码不能与旧密码相同",
- "ToastUserRootRequireName": "必须输入 root 用户名"
+ "ToastUserRootRequireName": "必须输入 root 用户名",
+ "TooltipAddChapters": "添加章节",
+ "TooltipAddOneSecond": "加 1 秒",
+ "TooltipAdjustChapterStart": "点击调整开始时间",
+ "TooltipLockAllChapters": "锁定所有章节",
+ "TooltipLockChapter": "锁定章节 (按住 Shift再点击, 可进行范围选择)",
+ "TooltipSubtractOneSecond": "减 1 秒",
+ "TooltipUnlockAllChapters": "解锁所有章节",
+ "TooltipUnlockChapter": "解锁章节 (按住 Shift再点击, 可进行范围选择)"
}
diff --git a/package-lock.json b/package-lock.json
index 31d6f2e84..af2d40d12 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,12 +1,12 @@
{
"name": "audiobookshelf",
- "version": "2.28.0",
+ "version": "2.29.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "audiobookshelf",
- "version": "2.28.0",
+ "version": "2.29.0",
"license": "GPL-3.0",
"dependencies": {
"axios": "^0.27.2",
diff --git a/readme.md b/readme.md
index 3eb4cef7a..877ea091c 100644
--- a/readme.md
+++ b/readme.md
@@ -355,7 +355,7 @@ This application is built using [NodeJs](https://nodejs.org/).
### Localization
-Thank you to [Weblate](https://hosted.weblate.org/engage/audiobookshelf/) for hosting our localization infrastructure pro-bono. If you want to see Audiobookshelf in your language, please help us localize. Additional information on helping with the translations [here](https://www.audiobookshelf.org/faq#how-do-i-help-with-translations).