diff --git a/client/components/modals/item/tabs/Match.vue b/client/components/modals/item/tabs/Match.vue
index 1c682919f..b57e96122 100644
--- a/client/components/modals/item/tabs/Match.vue
+++ b/client/components/modals/item/tabs/Match.vue
@@ -332,6 +332,7 @@ export default {
if (this.isPodcast) return `term=${encodeURIComponent(this.searchTitle)}`
var searchQuery = `provider=${this.provider}&fallbackTitleOnly=1&title=${encodeURIComponent(this.searchTitle)}`
if (this.searchAuthor) searchQuery += `&author=${encodeURIComponent(this.searchAuthor)}`
+ if (this.libraryItemId) searchQuery += `&id=${this.libraryItemId}`
return searchQuery
},
submitSearch() {
diff --git a/client/strings/de.json b/client/strings/de.json
index 3fa189607..6975b794b 100644
--- a/client/strings/de.json
+++ b/client/strings/de.json
@@ -1,10 +1,10 @@
{
"ButtonAdd": "Hinzufügen",
"ButtonAddChapters": "Kapitel hinzufügen",
- "ButtonAddDevice": "Add Device",
- "ButtonAddLibrary": "Add Library",
+ "ButtonAddDevice": "Gerät hinzufügen",
+ "ButtonAddLibrary": "Bibliothek hinzufügen",
"ButtonAddPodcasts": "Podcasts hinzufügen",
- "ButtonAddUser": "Add User",
+ "ButtonAddUser": "Benutzer hinzufügen",
"ButtonAddYourFirstLibrary": "Erstelle deine erste Bibliothek",
"ButtonApply": "Übernehmen",
"ButtonApplyChapters": "Kapitel anwenden",
@@ -58,11 +58,11 @@
"ButtonRemoveAll": "Alles löschen",
"ButtonRemoveAllLibraryItems": "Lösche alle Bibliothekseinträge",
"ButtonRemoveFromContinueListening": "Lösche den Eintrag aus der Fortsetzungsliste",
- "ButtonRemoveFromContinueReading": "Remove from Continue Reading",
+ "ButtonRemoveFromContinueReading": "Lösche die Serie aus der Lesefortsetzungsliste",
"ButtonRemoveSeriesFromContinueSeries": "Lösche die Serie aus der Serienfortsetzungsliste",
"ButtonReScan": "Neu scannen",
"ButtonReset": "Zurücksetzen",
- "ButtonResetToDefault": "Reset to default",
+ "ButtonResetToDefault": "Zurücksetzen auf Standard",
"ButtonRestore": "Wiederherstellen",
"ButtonSave": "Speichern",
"ButtonSaveAndClose": "Speichern & Schließen",
@@ -221,7 +221,7 @@
"LabelChapters": "Kapitel",
"LabelChaptersFound": "gefundene Kapitel",
"LabelChapterTitle": "Kapitelüberschrift",
- "LabelClickForMoreInfo": "Click for more info",
+ "LabelClickForMoreInfo": "Klicken für mehr Informationen",
"LabelClosePlayer": "Player schließen",
"LabelCodec": "Codec",
"LabelCollapseSeries": "Serien zusammenfassen",
@@ -251,7 +251,7 @@
"LabelDiscFromMetadata": "CD aus den Metadaten",
"LabelDiscover": "Entdecken",
"LabelDownload": "Herunterladen",
- "LabelDownloadNEpisodes": "Download {0} episodes",
+ "LabelDownloadNEpisodes": "Download {0} Episoden",
"LabelDuration": "Laufzeit",
"LabelDurationFound": "Gefundene Laufzeit:",
"LabelEbook": "E-Book",
@@ -747,4 +747,4 @@
"ToastSocketFailedToConnect": "Verbindung zum WebSocket fehlgeschlagen",
"ToastUserDeleteFailed": "Benutzer konnte nicht gelöscht werden",
"ToastUserDeleteSuccess": "Benutzer gelöscht"
-}
\ No newline at end of file
+}
diff --git a/client/strings/ru.json b/client/strings/ru.json
index b48e0dbd2..03e7385fa 100644
--- a/client/strings/ru.json
+++ b/client/strings/ru.json
@@ -1,10 +1,10 @@
{
"ButtonAdd": "Добавить",
"ButtonAddChapters": "Добавить главы",
- "ButtonAddDevice": "Add Device",
- "ButtonAddLibrary": "Add Library",
+ "ButtonAddDevice": "Добавить устройство",
+ "ButtonAddLibrary": "Добавить библиотеку",
"ButtonAddPodcasts": "Добавить подкасты",
- "ButtonAddUser": "Add User",
+ "ButtonAddUser": "Добавить пользователя",
"ButtonAddYourFirstLibrary": "Добавьте Вашу первую библиотеку",
"ButtonApply": "Применить",
"ButtonApplyChapters": "Применить главы",
@@ -62,7 +62,7 @@
"ButtonRemoveSeriesFromContinueSeries": "Удалить серию из Продолжить серию",
"ButtonReScan": "Пересканировать",
"ButtonReset": "Сбросить",
- "ButtonResetToDefault": "Reset to default",
+ "ButtonResetToDefault": "Сборосить по умолчанию",
"ButtonRestore": "Восстановить",
"ButtonSave": "Сохранить",
"ButtonSaveAndClose": "Сохранить и закрыть",
@@ -78,7 +78,7 @@
"ButtonStartM4BEncode": "Начать кодирование M4B",
"ButtonStartMetadataEmbed": "Начать встраивание метаданных",
"ButtonSubmit": "Применить",
- "ButtonTest": "Test",
+ "ButtonTest": "Тест",
"ButtonUpload": "Загрузить",
"ButtonUploadBackup": "Загрузить бэкап",
"ButtonUploadCover": "Загрузить обложку",
@@ -87,15 +87,15 @@
"ButtonUserEdit": "Редактировать пользователя {0}",
"ButtonViewAll": "Посмотреть все",
"ButtonYes": "Да",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
+ "ErrorUploadFetchMetadataAPI": "Ошибка при получении метаданных",
+ "ErrorUploadFetchMetadataNoResults": "Не удалось получить метаданные - попробуйте обновить название и/или автора",
+ "ErrorUploadLacksTitle": "Название должно быть заполнено",
"HeaderAccount": "Учетная запись",
"HeaderAdvanced": "Дополнительно",
"HeaderAppriseNotificationSettings": "Настройки оповещений",
"HeaderAudiobookTools": "Инструменты файлов аудиокниг",
"HeaderAudioTracks": "Аудио треки",
- "HeaderAuthentication": "Authentication",
+ "HeaderAuthentication": "Аутентификация",
"HeaderBackups": "Бэкапы",
"HeaderChangePassword": "Изменить пароль",
"HeaderChapters": "Главы",
@@ -130,15 +130,15 @@
"HeaderManageTags": "Редактировать теги",
"HeaderMapDetails": "Найти подробности",
"HeaderMatch": "Поиск",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
+ "HeaderMetadataOrderOfPrecedence": "Порядок приоритета метаданных",
"HeaderMetadataToEmbed": "Метаинформация для встраивания",
"HeaderNewAccount": "Новая учетная запись",
"HeaderNewLibrary": "Новая библиотека",
"HeaderNotifications": "Уведомления",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
+ "HeaderOpenIDConnectAuthentication": "Аутентификация OpenID Connect",
"HeaderOpenRSSFeed": "Открыть RSS-канал",
"HeaderOtherFiles": "Другие файлы",
- "HeaderPasswordAuthentication": "Password Authentication",
+ "HeaderPasswordAuthentication": "Аутентификация по паролю",
"HeaderPermissions": "Разрешения",
"HeaderPlayerQueue": "Очередь воспроизведения",
"HeaderPlaylist": "Плейлист",
@@ -187,11 +187,11 @@
"LabelAddToCollectionBatch": "Добавить {0} книг в коллекцию",
"LabelAddToPlaylist": "Добавить в плейлист",
"LabelAddToPlaylistBatch": "Добавить {0} элементов в плейлист",
- "LabelAdminUsersOnly": "Admin users only",
+ "LabelAdminUsersOnly": "Только для пользователей с правами администратора",
"LabelAll": "Все",
"LabelAllUsers": "Все пользователи",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
+ "LabelAllUsersExcludingGuests": "Все пользователи, кроме гостей",
+ "LabelAllUsersIncludingGuests": "Все пользователи, включая гостей",
"LabelAlreadyInYourLibrary": "Уже в Вашей библиотеке",
"LabelAppend": "Добавить",
"LabelAuthor": "Автор",
@@ -199,14 +199,14 @@
"LabelAuthorLastFirst": "Автор (Фамилия, Имя)",
"LabelAuthors": "Авторы",
"LabelAutoDownloadEpisodes": "Скачивать эпизоды автоматически",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
+ "LabelAutoFetchMetadata": "Автоматическое извлечение метаданных",
+ "LabelAutoFetchMetadataHelp": "Извлекает метаданные для названия, автора и серии для упрощения загрузки. После загрузки может потребоваться сопоставление дополнительных метаданных.",
+ "LabelAutoLaunch": "Автозапуск",
+ "LabelAutoLaunchDescription": "Редирект на провайдера аутентификации автоматически при переходе на страницу входа (путь ручного переопределения /login?autoLaunch=0)",
+ "LabelAutoRegister": "Автоматическая регистрация",
+ "LabelAutoRegisterDescription": "Автоматическое создание новых пользователей после входа в систему",
"LabelBackToUser": "Назад к пользователю",
- "LabelBackupLocation": "Backup Location",
+ "LabelBackupLocation": "Путь для бэкапов",
"LabelBackupsEnableAutomaticBackups": "Включить автоматическое бэкапирование",
"LabelBackupsEnableAutomaticBackupsHelp": "Бэкапы сохраняются в /metadata/backups",
"LabelBackupsMaxBackupSize": "Максимальный размер бэкапа (в GB)",
@@ -215,13 +215,13 @@
"LabelBackupsNumberToKeepHelp": "За один раз только 1 бэкап будет удален, так что если у вас будет больше бэкапов, то их нужно удалить вручную.",
"LabelBitrate": "Битрейт",
"LabelBooks": "Книги",
- "LabelButtonText": "Button Text",
+ "LabelButtonText": "Текст кнопки",
"LabelChangePassword": "Изменить пароль",
"LabelChannels": "Каналы",
"LabelChapters": "Главы",
"LabelChaptersFound": "глав найдено",
"LabelChapterTitle": "Название главы",
- "LabelClickForMoreInfo": "Click for more info",
+ "LabelClickForMoreInfo": "Нажмите, чтобы узнать больше",
"LabelClosePlayer": "Закрыть проигрыватель",
"LabelCodec": "Кодек",
"LabelCollapseSeries": "Свернуть серии",
@@ -240,12 +240,12 @@
"LabelCurrently": "Текущее:",
"LabelCustomCronExpression": "Пользовательское выражение Cron:",
"LabelDatetime": "Дата и время",
- "LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
+ "LabelDeleteFromFileSystemCheckbox": "Удалить из файловой системы (снимите флажок, чтобы удалить только из базы данных)",
"LabelDescription": "Описание",
"LabelDeselectAll": "Снять выделение",
"LabelDevice": "Устройство",
"LabelDeviceInfo": "Информация об устройстве",
- "LabelDeviceIsAvailableTo": "Device is available to...",
+ "LabelDeviceIsAvailableTo": "Устройство доступно для...",
"LabelDirectory": "Каталог",
"LabelDiscFromFilename": "Диск из Имени файла",
"LabelDiscFromMetadata": "Диск из Метаданных",
@@ -271,7 +271,7 @@
"LabelExample": "Пример",
"LabelExplicit": "Явный",
"LabelFeedURL": "URL канала",
- "LabelFetchingMetadata": "Fetching Metadata",
+ "LabelFetchingMetadata": "Извлечение метаданных",
"LabelFile": "Файл",
"LabelFileBirthtime": "Дата создания",
"LabelFileModified": "Дата модификации",
@@ -289,11 +289,11 @@
"LabelHardDeleteFile": "Жесткое удаление файла",
"LabelHasEbook": "Есть e-книга",
"LabelHasSupplementaryEbook": "Есть дополнительная e-книга",
- "LabelHighestPriority": "Highest priority",
+ "LabelHighestPriority": "Наивысший приоритет",
"LabelHost": "Хост",
"LabelHour": "Часы",
"LabelIcon": "Иконка",
- "LabelImageURLFromTheWeb": "Image URL from the web",
+ "LabelImageURLFromTheWeb": "URL-адрес изображения из Интернета",
"LabelIncludeInTracklist": "Включать в список воспроизведения",
"LabelIncomplete": "Не завершен",
"LabelInProgress": "В процессе",
@@ -331,20 +331,20 @@
"LabelLogLevelInfo": "Info",
"LabelLogLevelWarn": "Warn",
"LabelLookForNewEpisodesAfterDate": "Искать новые эпизоды после этой даты",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
+ "LabelLowestPriority": "Самый низкий приоритет",
+ "LabelMatchExistingUsersBy": "Сопоставление существующих пользователей по",
+ "LabelMatchExistingUsersByDescription": "Используется для подключения существующих пользователей. После подключения пользователям будет присвоен уникальный идентификатор от поставщика единого входа",
"LabelMediaPlayer": "Медиа проигрыватель",
"LabelMediaType": "Тип медиа",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
+ "LabelMetadataOrderOfPrecedenceDescription": "Источники метаданных с более высоким приоритетом будут переопределять источники метаданных с более низким приоритетом",
"LabelMetadataProvider": "Провайдер",
"LabelMetaTag": "Мета тег",
"LabelMetaTags": "Мета теги",
"LabelMinute": "Минуты",
"LabelMissing": "Потеряно",
"LabelMissingParts": "Потерянные части",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
+ "LabelMobileRedirectURIs": "Разрешенные URI перенаправления с мобильных устройств",
+ "LabelMobileRedirectURIsDescription": "Это белый список допустимых URI перенаправления для мобильных приложений. По умолчанию используется audiobookshelf://oauth, который можно удалить или дополнить дополнительными URI для интеграции со сторонними приложениями. Использование звездочки (*) в качестве единственной записи разрешает любой URI.",
"LabelMore": "Еще",
"LabelMoreInfo": "Больше информации",
"LabelName": "Имя",
@@ -523,7 +523,7 @@
"LabelUpdateDetailsHelp": "Позволяет перезаписывать текущие подробности для выбранных книг если будут найдены",
"LabelUploaderDragAndDrop": "Перетащите файлы или каталоги",
"LabelUploaderDropFiles": "Перетащите файлы",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
+ "LabelUploaderItemFetchMetadataHelp": "Автоматическое извлечение названия, автора и серии",
"LabelUseChapterTrack": "Показывать время главы",
"LabelUseFullTrack": "Показывать время книги",
"LabelUser": "Пользователь",
@@ -557,17 +557,17 @@
"MessageConfirmDeleteBackup": "Вы уверены, что хотите удалить бэкап для {0}?",
"MessageConfirmDeleteFile": "Это удалит файл из Вашей файловой системы. Вы уверены?",
"MessageConfirmDeleteLibrary": "Вы уверены, что хотите навсегда удалить библиотеку \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
+ "MessageConfirmDeleteLibraryItem": "Это приведет к удалению элемента библиотеки из базы данных и файловой системы. Вы уверены?",
+ "MessageConfirmDeleteLibraryItems": "Это приведет к удалению {0} элементов библиотеки из базы данных и файловой системы. Вы уверены?",
"MessageConfirmDeleteSession": "Вы уверены, что хотите удалить этот сеанс?",
"MessageConfirmForceReScan": "Вы уверены, что хотите принудительно выполнить повторное сканирование?",
"MessageConfirmMarkAllEpisodesFinished": "Вы уверены, что хотите отметить все эпизоды как завершенные?",
"MessageConfirmMarkAllEpisodesNotFinished": "Вы уверены, что хотите отметить все эпизоды как не завершенные?",
"MessageConfirmMarkSeriesFinished": "Вы уверены, что хотите отметить все книги этой серии как завершенные?",
"MessageConfirmMarkSeriesNotFinished": "Вы уверены, что хотите отметить все книги этой серии как не завершенные?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
+ "MessageConfirmQuickEmbed": "Предупреждение! Быстрое встраивание не позволяет создавать резервные копии аудиофайлов. Убедитесь, что у вас есть резервная копия аудиофайлов.
Хотите продолжить?",
"MessageConfirmRemoveAllChapters": "Вы уверены, что хотите удалить все главы?",
- "MessageConfirmRemoveAuthor": "Are you sure you want to remove author \"{0}\"?",
+ "MessageConfirmRemoveAuthor": "Вы уверены, что хотите удалить автора \"{0}\"?",
"MessageConfirmRemoveCollection": "Вы уверены, что хотите удалить коллекцию \"{0}\"?",
"MessageConfirmRemoveEpisode": "Вы уверены, что хотите удалить эпизод \"{0}\"?",
"MessageConfirmRemoveEpisodes": "Вы уверены, что хотите удалить {0} эпизодов?",
@@ -579,7 +579,7 @@
"MessageConfirmRenameTag": "Вы уверены, что хотите переименовать тег \"{0}\" в \"{1}\" для всех элементов?",
"MessageConfirmRenameTagMergeNote": "Примечание: Этот тег уже существует, поэтому они будут объединены.",
"MessageConfirmRenameTagWarning": "Предупреждение! Похожий тег с другими начальными буквами уже существует \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
+ "MessageConfirmReScanLibraryItems": "Вы уверены, что хотите пересканировать {0} элементов?",
"MessageConfirmSendEbookToDevice": "Вы уверены, что хотите отправить {0} e-книгу \"{1}\" на устройство \"{2}\"?",
"MessageDownloadingEpisode": "Эпизод скачивается",
"MessageDragFilesIntoTrackOrder": "Перетащите файлы для исправления порядка треков",
diff --git a/client/strings/zh-cn.json b/client/strings/zh-cn.json
index 7c5594897..edf09040b 100644
--- a/client/strings/zh-cn.json
+++ b/client/strings/zh-cn.json
@@ -1,10 +1,10 @@
{
"ButtonAdd": "增加",
"ButtonAddChapters": "添加章节",
- "ButtonAddDevice": "Add Device",
- "ButtonAddLibrary": "Add Library",
+ "ButtonAddDevice": "添加设备",
+ "ButtonAddLibrary": "添加库",
"ButtonAddPodcasts": "添加播客",
- "ButtonAddUser": "Add User",
+ "ButtonAddUser": "添加用户",
"ButtonAddYourFirstLibrary": "添加第一个媒体库",
"ButtonApply": "应用",
"ButtonApplyChapters": "应用到章节",
@@ -62,7 +62,7 @@
"ButtonRemoveSeriesFromContinueSeries": "从继续收听系列中删除",
"ButtonReScan": "重新扫描",
"ButtonReset": "重置",
- "ButtonResetToDefault": "Reset to default",
+ "ButtonResetToDefault": "重置为默认",
"ButtonRestore": "恢复",
"ButtonSave": "保存",
"ButtonSaveAndClose": "保存并关闭",
@@ -87,15 +87,15 @@
"ButtonUserEdit": "编辑用户 {0}",
"ButtonViewAll": "查看全部",
"ButtonYes": "确定",
- "ErrorUploadFetchMetadataAPI": "Error fetching metadata",
- "ErrorUploadFetchMetadataNoResults": "Could not fetch metadata - try updating title and/or author",
- "ErrorUploadLacksTitle": "Must have a title",
+ "ErrorUploadFetchMetadataAPI": "获取元数据时出错",
+ "ErrorUploadFetchMetadataNoResults": "无法获取元数据 - 尝试更新标题和/或作者",
+ "ErrorUploadLacksTitle": "必须有标题",
"HeaderAccount": "帐户",
"HeaderAdvanced": "高级",
"HeaderAppriseNotificationSettings": "测试通知设置",
"HeaderAudiobookTools": "有声读物文件管理工具",
"HeaderAudioTracks": "音轨",
- "HeaderAuthentication": "Authentication",
+ "HeaderAuthentication": "身份验证",
"HeaderBackups": "备份",
"HeaderChangePassword": "更改密码",
"HeaderChapters": "章节",
@@ -130,15 +130,15 @@
"HeaderManageTags": "管理标签",
"HeaderMapDetails": "编辑详情",
"HeaderMatch": "匹配",
- "HeaderMetadataOrderOfPrecedence": "Metadata order of precedence",
+ "HeaderMetadataOrderOfPrecedence": "元数据优先级",
"HeaderMetadataToEmbed": "嵌入元数据",
"HeaderNewAccount": "新建帐户",
"HeaderNewLibrary": "新建媒体库",
"HeaderNotifications": "通知",
- "HeaderOpenIDConnectAuthentication": "OpenID Connect Authentication",
+ "HeaderOpenIDConnectAuthentication": "OpenID 连接身份验证",
"HeaderOpenRSSFeed": "打开 RSS 源",
"HeaderOtherFiles": "其他文件",
- "HeaderPasswordAuthentication": "Password Authentication",
+ "HeaderPasswordAuthentication": "密码认证",
"HeaderPermissions": "权限",
"HeaderPlayerQueue": "播放队列",
"HeaderPlaylist": "播放列表",
@@ -187,11 +187,11 @@
"LabelAddToCollectionBatch": "批量添加 {0} 个媒体到收藏",
"LabelAddToPlaylist": "添加到播放列表",
"LabelAddToPlaylistBatch": "添加 {0} 个项目到播放列表",
- "LabelAdminUsersOnly": "Admin users only",
+ "LabelAdminUsersOnly": "仅限管理员用户",
"LabelAll": "全部",
"LabelAllUsers": "所有用户",
- "LabelAllUsersExcludingGuests": "All users excluding guests",
- "LabelAllUsersIncludingGuests": "All users including guests",
+ "LabelAllUsersExcludingGuests": "除访客外的所有用户",
+ "LabelAllUsersIncludingGuests": "包括访客的所有用户",
"LabelAlreadyInYourLibrary": "已存在你的库中",
"LabelAppend": "附加",
"LabelAuthor": "作者",
@@ -199,12 +199,12 @@
"LabelAuthorLastFirst": "作者 (名, 姓)",
"LabelAuthors": "作者",
"LabelAutoDownloadEpisodes": "自动下载剧集",
- "LabelAutoFetchMetadata": "Auto Fetch Metadata",
- "LabelAutoFetchMetadataHelp": "Fetches metadata for title, author, and series to streamline uploading. Additional metadata may have to be matched after upload.",
- "LabelAutoLaunch": "Auto Launch",
- "LabelAutoLaunchDescription": "Redirect to the auth provider automatically when navigating to the login page (manual override path /login?autoLaunch=0)",
- "LabelAutoRegister": "Auto Register",
- "LabelAutoRegisterDescription": "Automatically create new users after logging in",
+ "LabelAutoFetchMetadata": "自动获取元数据",
+ "LabelAutoFetchMetadataHelp": "获取标题, 作者和系列的元数据以简化上传. 上传后可能需要匹配其他元数据.",
+ "LabelAutoLaunch": "自动启动",
+ "LabelAutoLaunchDescription": "导航到登录页面时自动重定向到身份验证提供程序 (手动覆盖路径 /login?autoLaunch=0)",
+ "LabelAutoRegister": "自动注册",
+ "LabelAutoRegisterDescription": "登录后自动创建新用户",
"LabelBackToUser": "返回到用户",
"LabelBackupLocation": "备份位置",
"LabelBackupsEnableAutomaticBackups": "启用自动备份",
@@ -215,13 +215,13 @@
"LabelBackupsNumberToKeepHelp": "一次只能删除一个备份, 因此如果你已经有超过此数量的备份, 则应手动删除它们.",
"LabelBitrate": "比特率",
"LabelBooks": "图书",
- "LabelButtonText": "Button Text",
+ "LabelButtonText": "按钮文本",
"LabelChangePassword": "修改密码",
"LabelChannels": "声道",
"LabelChapters": "章节",
"LabelChaptersFound": "找到的章节",
"LabelChapterTitle": "章节标题",
- "LabelClickForMoreInfo": "Click for more info",
+ "LabelClickForMoreInfo": "点击了解更多信息",
"LabelClosePlayer": "关闭播放器",
"LabelCodec": "编解码",
"LabelCollapseSeries": "折叠系列",
@@ -240,12 +240,12 @@
"LabelCurrently": "当前:",
"LabelCustomCronExpression": "自定义计划任务表达式:",
"LabelDatetime": "日期时间",
- "LabelDeleteFromFileSystemCheckbox": "Delete from file system (uncheck to only remove from database)",
+ "LabelDeleteFromFileSystemCheckbox": "从文件系统删除 (取消选中仅从数据库中删除)",
"LabelDescription": "描述",
"LabelDeselectAll": "全部取消选择",
"LabelDevice": "设备",
"LabelDeviceInfo": "设备信息",
- "LabelDeviceIsAvailableTo": "Device is available to...",
+ "LabelDeviceIsAvailableTo": "设备可用于...",
"LabelDirectory": "目录",
"LabelDiscFromFilename": "从文件名获取光盘",
"LabelDiscFromMetadata": "从元数据获取光盘",
@@ -271,7 +271,7 @@
"LabelExample": "示例",
"LabelExplicit": "信息准确",
"LabelFeedURL": "源 URL",
- "LabelFetchingMetadata": "Fetching Metadata",
+ "LabelFetchingMetadata": "正在获取元数据",
"LabelFile": "文件",
"LabelFileBirthtime": "文件创建时间",
"LabelFileModified": "文件修改时间",
@@ -289,7 +289,7 @@
"LabelHardDeleteFile": "完全删除文件",
"LabelHasEbook": "有电子书",
"LabelHasSupplementaryEbook": "有补充电子书",
- "LabelHighestPriority": "Highest priority",
+ "LabelHighestPriority": "最高优先级",
"LabelHost": "主机",
"LabelHour": "小时",
"LabelIcon": "图标",
@@ -331,20 +331,20 @@
"LabelLogLevelInfo": "信息",
"LabelLogLevelWarn": "警告",
"LabelLookForNewEpisodesAfterDate": "在此日期后查找新剧集",
- "LabelLowestPriority": "Lowest Priority",
- "LabelMatchExistingUsersBy": "Match existing users by",
- "LabelMatchExistingUsersByDescription": "Used for connecting existing users. Once connected, users will be matched by a unique id from your SSO provider",
+ "LabelLowestPriority": "最低优先级",
+ "LabelMatchExistingUsersBy": "匹配现有用户",
+ "LabelMatchExistingUsersByDescription": "用于连接现有用户. 连接后, 用户将通过SSO提供商提供的唯一 id 进行匹配",
"LabelMediaPlayer": "媒体播放器",
"LabelMediaType": "媒体类型",
- "LabelMetadataOrderOfPrecedenceDescription": "Higher priority metadata sources will override lower priority metadata sources",
+ "LabelMetadataOrderOfPrecedenceDescription": "较高优先级的元数据源将覆盖较低优先级的元数据源",
"LabelMetadataProvider": "元数据提供者",
"LabelMetaTag": "元数据标签",
"LabelMetaTags": "元标签",
"LabelMinute": "分钟",
"LabelMissing": "丢失",
"LabelMissingParts": "丢失的部分",
- "LabelMobileRedirectURIs": "Allowed Mobile Redirect URIs",
- "LabelMobileRedirectURIsDescription": "This is a whitelist of valid redirect URIs for mobile apps. The default one is audiobookshelf://oauth, which you can remove or supplement with additional URIs for third-party app integration. Using an asterisk (*) as the sole entry permits any URI.",
+ "LabelMobileRedirectURIs": "允许移动应用重定向 URI",
+ "LabelMobileRedirectURIsDescription": "这是移动应用程序的有效重定向 URI 白名单. 默认值为 audiobookshelf://oauth,您可以删除它或添加其他 URI 以进行第三方应用集成. 使用星号 (*) 作为唯一条目允许任何 URI.",
"LabelMore": "更多",
"LabelMoreInfo": "更多..",
"LabelName": "名称",
@@ -523,7 +523,7 @@
"LabelUpdateDetailsHelp": "找到匹配项时允许覆盖所选书籍存在的详细信息",
"LabelUploaderDragAndDrop": "拖放文件或文件夹",
"LabelUploaderDropFiles": "删除文件",
- "LabelUploaderItemFetchMetadataHelp": "Automatically fetch title, author, and series",
+ "LabelUploaderItemFetchMetadataHelp": "自动获取标题, 作者和系列",
"LabelUseChapterTrack": "使用章节音轨",
"LabelUseFullTrack": "使用完整音轨",
"LabelUser": "用户",
@@ -557,15 +557,15 @@
"MessageConfirmDeleteBackup": "你确定要删除备份 {0}?",
"MessageConfirmDeleteFile": "这将从文件系统中删除该文件. 你确定吗?",
"MessageConfirmDeleteLibrary": "你确定要永久删除媒体库 \"{0}\"?",
- "MessageConfirmDeleteLibraryItem": "This will delete the library item from the database and your file system. Are you sure?",
- "MessageConfirmDeleteLibraryItems": "This will delete {0} library items from the database and your file system. Are you sure?",
+ "MessageConfirmDeleteLibraryItem": "这将从数据库和文件系统中删除库项目. 你确定吗?",
+ "MessageConfirmDeleteLibraryItems": "这将从数据库和文件系统中删除 {0} 个库项目. 你确定吗?",
"MessageConfirmDeleteSession": "你确定要删除此会话吗?",
"MessageConfirmForceReScan": "你确定要强制重新扫描吗?",
"MessageConfirmMarkAllEpisodesFinished": "你确定要将所有剧集都标记为已完成吗?",
"MessageConfirmMarkAllEpisodesNotFinished": "你确定要将所有剧集都标记为未完成吗?",
"MessageConfirmMarkSeriesFinished": "你确定要将此系列中的所有书籍都标记为已听完吗?",
"MessageConfirmMarkSeriesNotFinished": "你确定要将此系列中的所有书籍都标记为未听完吗?",
- "MessageConfirmQuickEmbed": "Warning! Quick embed will not backup your audio files. Make sure that you have a backup of your audio files.
Would you like to continue?",
+ "MessageConfirmQuickEmbed": "警告! 快速嵌入不会备份你的音频文件. 确保你有音频文件的备份.
你是否想继续吗?",
"MessageConfirmRemoveAllChapters": "你确定要移除所有章节吗?",
"MessageConfirmRemoveAuthor": "你确定要删除作者 \"{0}\"?",
"MessageConfirmRemoveCollection": "你确定要移除收藏 \"{0}\"?",
@@ -579,7 +579,7 @@
"MessageConfirmRenameTag": "你确定要将所有项目标签 \"{0}\" 重命名到 \"{1}\"?",
"MessageConfirmRenameTagMergeNote": "注意: 该标签已经存在, 因此它们将被合并.",
"MessageConfirmRenameTagWarning": "警告! 已经存在有大小写不同的类似标签 \"{0}\".",
- "MessageConfirmReScanLibraryItems": "Are you sure you want to re-scan {0} items?",
+ "MessageConfirmReScanLibraryItems": "你确定要重新扫描 {0} 个项目吗?",
"MessageConfirmSendEbookToDevice": "你确定要发送 {0} 电子书 \"{1}\" 到设备 \"{2}\"?",
"MessageDownloadingEpisode": "正在下载剧集",
"MessageDragFilesIntoTrackOrder": "将文件拖动到正确的音轨顺序",
@@ -747,4 +747,4 @@
"ToastSocketFailedToConnect": "网络连接失败",
"ToastUserDeleteFailed": "删除用户失败",
"ToastUserDeleteSuccess": "用户已删除"
-}
\ No newline at end of file
+}
diff --git a/docker-compose.yml b/docker-compose.yml
index da3fa1f2c..68e012fb8 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -3,12 +3,28 @@ version: "3.7"
services:
audiobookshelf:
- image: ghcr.io/advplyr/audiobookshelf
+ image: ghcr.io/advplyr/audiobookshelf:latest
+ # ABS runs on port 13378 by default. If you want to change
+ # the port, only change the external port, not the internal port
ports:
- 13378:80
volumes:
+ # These volumes are needed to keep your library persistent
+ # and allow media to be accessed by the ABS server.
+ # The path to the left of the colon is the path on your computer,
+ # and the path to the right of the colon is where the data is
+ # available to ABS in Docker.
+ # You can change these media directories or add as many as you want
- ./audiobooks:/audiobooks
- ./podcasts:/podcasts
+ # The metadata directory can be stored anywhere on your computer
- ./metadata:/metadata
+ # The config directory needs to be on the same physical machine
+ # you are running ABS on
- ./config:/config
restart: unless-stopped
+ # You can use the following environment variable to run the ABS
+ # docker container as a specific user. You will need to change
+ # the UID and GID to the correct values for your user.
+ #environment:
+ # - user=1000:1000
diff --git a/server/controllers/SearchController.js b/server/controllers/SearchController.js
index 93587bc4f..e52e69734 100644
--- a/server/controllers/SearchController.js
+++ b/server/controllers/SearchController.js
@@ -3,15 +3,18 @@ const BookFinder = require('../finders/BookFinder')
const PodcastFinder = require('../finders/PodcastFinder')
const AuthorFinder = require('../finders/AuthorFinder')
const MusicFinder = require('../finders/MusicFinder')
+const Database = require("../Database")
class SearchController {
constructor() { }
async findBooks(req, res) {
+ const id = req.query.id
+ const libraryItem = await Database.libraryItemModel.getOldById(id)
const provider = req.query.provider || 'google'
const title = req.query.title || ''
const author = req.query.author || ''
- const results = await BookFinder.search(provider, title, author)
+ const results = await BookFinder.search(libraryItem, provider, title, author)
res.json(results)
}
diff --git a/server/finders/BookFinder.js b/server/finders/BookFinder.js
index 7d26b6bfc..466c8701f 100644
--- a/server/finders/BookFinder.js
+++ b/server/finders/BookFinder.js
@@ -167,6 +167,7 @@ class BookFinder {
[/ (2nd|3rd|\d+th)\s+ed(\.|ition)?/g, ''], // Remove edition
[/(^| |\.)(m4b|m4a|mp3)( |$)/g, ''], // Remove file-type
[/ a novel.*$/g, ''], // Remove "a novel"
+ [/(^| )(un)?abridged( |$)/g, ' '], // Remove "unabridged/abridged"
[/^\d+ | \d+$/g, ''], // Remove preceding/trailing numbers
]
@@ -298,6 +299,7 @@ class BookFinder {
/**
* Search for books including fuzzy searches
*
+ * @param {Object} libraryItem
* @param {string} provider
* @param {string} title
* @param {string} author
@@ -306,7 +308,7 @@ class BookFinder {
* @param {{titleDistance:number, authorDistance:number, maxFuzzySearches:number}} options
* @returns {Promise