From 20eb573897becad9052ba0a5dfbe5b821b044626 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 5 Aug 2024 13:34:56 +0200 Subject: [PATCH 1/4] Fix unicode.so loading `unicode.so` is dynamically linked against glibc but Alpine only comes with musl. Installing the compatibility layer fixes it. Fix https://github.com/advplyr/audiobookshelf/issues/3231 Fix https://github.com/advplyr/audiobookshelf/issues/3234 Close https://github.com/advplyr/audiobookshelf/pull/3235 --- Dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/Dockerfile b/Dockerfile index fe68b304db..0d586710ef 100644 --- a/Dockerfile +++ b/Dockerfile @@ -16,6 +16,7 @@ RUN apk update && \ tzdata \ ffmpeg \ make \ + gcompat \ python3 \ g++ \ tini From e0877803e37a83d1ba706b69324a549078ea2124 Mon Sep 17 00:00:00 2001 From: Vito0912 Date: Sun, 4 Aug 2024 14:44:25 +0000 Subject: [PATCH 2/4] Translated using Weblate (German) Currently translated at 100.0% (853 of 853 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/de/ --- client/strings/de.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/strings/de.json b/client/strings/de.json index cb6cc6fcfe..749a0973d8 100644 --- a/client/strings/de.json +++ b/client/strings/de.json @@ -229,7 +229,7 @@ "LabelBackupLocation": "Backup-Ort", "LabelBackupsEnableAutomaticBackups": "Automatische Sicherung aktivieren", "LabelBackupsEnableAutomaticBackupsHelp": "Backups werden in /metadata/backups gespeichert", - "LabelBackupsMaxBackupSize": "Maximale Sicherungsgröße (in GB)(0 gleich ohne Begrenzung)", + "LabelBackupsMaxBackupSize": "Maximale Sicherungsgröße (in GB) (0 gleich ohne Begrenzung)", "LabelBackupsMaxBackupSizeHelp": "Zum Schutz vor Fehlkonfigurationen schlagen Sicherungen fehl, wenn sie die konfigurierte Größe überschreiten.", "LabelBackupsNumberToKeep": "Anzahl der aufzubewahrenden Sicherungen", "LabelBackupsNumberToKeepHelp": "Es wird immer nur 1 Sicherung auf einmal entfernt. Wenn du bereits mehrere Sicherungen als die definierte max. Anzahl hast, solltest du diese manuell entfernen.", From f545b3e745b9f4d67a2eae5cdec00f37a45ea342 Mon Sep 17 00:00:00 2001 From: Charlie Date: Mon, 5 Aug 2024 08:09:45 +0000 Subject: [PATCH 3/4] Translated using Weblate (French) Currently translated at 99.7% (851 of 853 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/fr/ --- client/strings/fr.json | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/client/strings/fr.json b/client/strings/fr.json index afab77a184..ed5e5ae634 100644 --- a/client/strings/fr.json +++ b/client/strings/fr.json @@ -1,6 +1,6 @@ { "ButtonAdd": "Ajouter", - "ButtonAddChapters": "Ajouter le chapitre", + "ButtonAddChapters": "Ajouter des chapitres", "ButtonAddDevice": "Ajouter un appareil", "ButtonAddLibrary": "Ajouter une bibliothèque", "ButtonAddPodcasts": "Ajouter des podcasts", @@ -59,6 +59,7 @@ "ButtonPurgeItemsCache": "Purger le cache des éléments", "ButtonQueueAddItem": "Ajouter à la liste de lecture", "ButtonQueueRemoveItem": "Supprimer de la liste de lecture", + "ButtonQuickEmbedMetadata": "Ajoutez rapidement des métadonnées", "ButtonQuickMatch": "Recherche rapide", "ButtonReScan": "Nouvelle analyse", "ButtonRead": "Lire", @@ -88,6 +89,7 @@ "ButtonShow": "Afficher", "ButtonStartM4BEncode": "Démarrer l’encodage M4B", "ButtonStartMetadataEmbed": "Démarrer les Métadonnées intégrées", + "ButtonStats": "Statistiques", "ButtonSubmit": "Soumettre", "ButtonTest": "Test", "ButtonUpload": "Téléverser", @@ -154,6 +156,7 @@ "HeaderPasswordAuthentication": "Authentification par mot de passe", "HeaderPermissions": "Permissions", "HeaderPlayerQueue": "Liste d’écoute", + "HeaderPlayerSettings": "Paramètres du lecteur", "HeaderPlaylist": "Liste de lecture", "HeaderPlaylistItems": "Éléments de la liste de lecture", "HeaderPodcastsToAdd": "Podcasts à ajouter", @@ -226,7 +229,7 @@ "LabelBackupLocation": "Emplacement de la sauvegarde", "LabelBackupsEnableAutomaticBackups": "Activer les sauvegardes automatiques", "LabelBackupsEnableAutomaticBackupsHelp": "Sauvegardes enregistrées dans /metadata/backups", - "LabelBackupsMaxBackupSize": "Taille maximale de la sauvegarde (en Go)", + "LabelBackupsMaxBackupSize": "Taille maximale de la sauvegarde (en Go) (0 pour illimité)", "LabelBackupsMaxBackupSizeHelp": "Afin de prévenir les mauvaises configuration, la sauvegarde échouera si elle excède la taille limite.", "LabelBackupsNumberToKeep": "Nombre de sauvegardes à conserver", "LabelBackupsNumberToKeepHelp": "Seule une sauvegarde sera supprimée à la fois. Si vous avez déjà plus de sauvegardes à effacer, vous devez les supprimer manuellement.", @@ -289,13 +292,16 @@ "LabelEmbeddedCover": "Couverture du livre intégrée", "LabelEnable": "Activer", "LabelEnd": "Fin", + "LabelEndOfChapter": "Fin du chapitre", "LabelEpisode": "Épisode", "LabelEpisodeTitle": "Titre de l’épisode", "LabelEpisodeType": "Type de l’épisode", "LabelExample": "Exemple", + "LabelExpandSeries": "Développer la série", "LabelExplicit": "Restriction", "LabelExplicitChecked": "Explicite (vérifié)", "LabelExplicitUnchecked": "Non explicite (non vérifié)", + "LabelExportOPML": "Exporter OPML", "LabelFeedURL": "URL du flux", "LabelFetchingMetadata": "Récupération des métadonnées", "LabelFile": "Fichier", @@ -319,6 +325,7 @@ "LabelHardDeleteFile": "Suppression du fichier", "LabelHasEbook": "A un livre numérique", "LabelHasSupplementaryEbook": "A un livre numérique supplémentaire", + "LabelHideSubtitles": "Masquer les sous-titres", "LabelHighestPriority": "Priorité la plus élevée", "LabelHost": "Hôte", "LabelHour": "Heure", @@ -446,6 +453,8 @@ "LabelRSSFeedPreventIndexing": "Empêcher l’indexation", "LabelRSSFeedSlug": "Balise URL du flux RSS", "LabelRSSFeedURL": "Adresse du flux RSS", + "LabelRandomly": "Au hasard", + "LabelReAddSeriesToContinueListening": "Ajoutez à nouveau la série pour continuer à l’écouter", "LabelRead": "Lire", "LabelReadAgain": "Lire à nouveau", "LabelReadEbookWithoutProgress": "Lire le livre numérique sans sauvegarder la progression", @@ -516,6 +525,7 @@ "LabelShareURL": "Partager l’URL", "LabelShowAll": "Tout afficher", "LabelShowSeconds": "Afficher les seondes", + "LabelShowSubtitles": "Afficher les sous-titres", "LabelSize": "Taille", "LabelSleepTimer": "Minuterie de mise en veille", "LabelSlug": "Balise", @@ -553,6 +563,10 @@ "LabelThemeDark": "Sombre", "LabelThemeLight": "Clair", "LabelTimeBase": "Base de temps", + "LabelTimeDurationXHours": "{0} heures", + "LabelTimeDurationXMinutes": "{0} minutes", + "LabelTimeDurationXSeconds": "{0} secondes", + "LabelTimeInMinutes": "Temps en minutes", "LabelTimeListened": "Temps d’écoute", "LabelTimeListenedToday": "Nombres d’écoutes aujourd’hui", "LabelTimeRemaining": "{0} restantes", @@ -592,9 +606,12 @@ "LabelVersion": "Version", "LabelViewBookmarks": "Afficher les favoris", "LabelViewChapters": "Afficher les chapitres", + "LabelViewPlayerSettings": "Afficher les paramètres du lecteur", "LabelViewQueue": "Afficher la liste de lecture", "LabelVolume": "Volume", "LabelWeekdaysToRun": "Jours de la semaine à exécuter", + "LabelXBooks": "{0} livres", + "LabelXItems": "{0} éléments", "LabelYearReviewHide": "Masquer le bilan de l’année", "LabelYearReviewShow": "Afficher le bilan de l’année", "LabelYourAudiobookDuration": "Durée de vos livres audios", @@ -652,6 +669,7 @@ "MessageConfirmSendEbookToDevice": "Êtes-vous sûr de vouloir envoyer {0} livre numérique « {1} » à l'appareil « {2} » ?", "MessageDownloadingEpisode": "Téléchargement de l’épisode", "MessageDragFilesIntoTrackOrder": "Faites glisser les fichiers dans l’ordre correct des pistes", + "MessageEmbedFailed": "Échec de l’intégration !", "MessageEmbedFinished": "Intégration terminée !", "MessageEpisodesQueuedForDownload": "{0} épisode(s) mis en file pour téléchargement", "MessageEreaderDevices": "Pour garantir l’envoie des livres électroniques, il se peut que vous deviez ajouter l’adresse électronique ci-dessus en tant qu’expéditeur valide pour chaque appareil répertorié ci-dessous.", @@ -706,6 +724,7 @@ "MessageNoUpdatesWereNecessary": "Aucune mise à jour n’était nécessaire", "MessageNoUserPlaylists": "Vous n’avez aucune liste de lecture", "MessageNotYetImplemented": "Non implémenté", + "MessageOpmlPreviewNote": "Remarque : Il s’agit d’un aperçu du fichier OPML analysé. Le titre réel du podcast provient du flux RSS.", "MessageOr": "ou", "MessagePauseChapter": "Suspendre la lecture du chapitre", "MessagePlayChapter": "Écouter depuis le début du chapitre", From a5e18e99bcbe59c252a1760fe7f932b0db54407d Mon Sep 17 00:00:00 2001 From: SunSpring Date: Mon, 5 Aug 2024 13:21:30 +0000 Subject: [PATCH 4/4] Translated using Weblate (Chinese (Simplified)) Currently translated at 100.0% (853 of 853 strings) Translation: Audiobookshelf/Abs Web Client Translate-URL: https://hosted.weblate.org/projects/audiobookshelf/abs-web-client/zh_Hans/ --- client/strings/zh-cn.json | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/client/strings/zh-cn.json b/client/strings/zh-cn.json index 3f37714dc6..ee85d000ae 100644 --- a/client/strings/zh-cn.json +++ b/client/strings/zh-cn.json @@ -49,7 +49,7 @@ "ButtonOk": "确定", "ButtonOpenFeed": "打开源", "ButtonOpenManager": "打开管理器", - "ButtonPause": "Pause", + "ButtonPause": "暂停", "ButtonPlay": "播放", "ButtonPlaying": "正在播放", "ButtonPlaylists": "播放列表", @@ -59,6 +59,7 @@ "ButtonPurgeItemsCache": "清理项目缓存", "ButtonQueueAddItem": "添加到队列", "ButtonQueueRemoveItem": "从队列中移除", + "ButtonQuickEmbedMetadata": "快速嵌入元数据", "ButtonQuickMatch": "快速匹配", "ButtonReScan": "重新扫描", "ButtonRead": "读取", @@ -88,6 +89,7 @@ "ButtonShow": "显示", "ButtonStartM4BEncode": "开始 M4B 编码", "ButtonStartMetadataEmbed": "开始嵌入元数据", + "ButtonStats": "状态", "ButtonSubmit": "提交", "ButtonTest": "测试", "ButtonUpload": "上传", @@ -154,6 +156,7 @@ "HeaderPasswordAuthentication": "密码认证", "HeaderPermissions": "权限", "HeaderPlayerQueue": "播放队列", + "HeaderPlayerSettings": "播放器设置", "HeaderPlaylist": "播放列表", "HeaderPlaylistItems": "播放列表项目", "HeaderPodcastsToAdd": "要添加的播客", @@ -226,7 +229,7 @@ "LabelBackupLocation": "备份位置", "LabelBackupsEnableAutomaticBackups": "启用自动备份", "LabelBackupsEnableAutomaticBackupsHelp": "备份保存到 /metadata/backups", - "LabelBackupsMaxBackupSize": "最大备份大小 (GB)", + "LabelBackupsMaxBackupSize": "最大备份大小 (GB) (0 为无限制)", "LabelBackupsMaxBackupSizeHelp": "为了防止错误配置, 如果备份超过配置的大小, 备份将失败.", "LabelBackupsNumberToKeep": "要保留的备份个数", "LabelBackupsNumberToKeepHelp": "一次只能删除一个备份, 因此如果你已经有超过此数量的备份, 则应手动删除它们.", @@ -258,6 +261,7 @@ "LabelCurrently": "当前:", "LabelCustomCronExpression": "自定义计划任务表达式:", "LabelDatetime": "日期时间", + "LabelDays": "天", "LabelDeleteFromFileSystemCheckbox": "从文件系统删除 (取消选中仅从数据库中删除)", "LabelDescription": "描述", "LabelDeselectAll": "全部取消选择", @@ -288,13 +292,16 @@ "LabelEmbeddedCover": "嵌入封面", "LabelEnable": "启用", "LabelEnd": "结束", + "LabelEndOfChapter": "章节结束", "LabelEpisode": "剧集", "LabelEpisodeTitle": "剧集标题", "LabelEpisodeType": "剧集类型", "LabelExample": "示例", + "LabelExpandSeries": "展开系列", "LabelExplicit": "信息准确", "LabelExplicitChecked": "明确(已选中)", "LabelExplicitUnchecked": "不明确 (未选中)", + "LabelExportOPML": "导出 OPML", "LabelFeedURL": "源 URL", "LabelFetchingMetadata": "正在获取元数据", "LabelFile": "文件", @@ -318,9 +325,11 @@ "LabelHardDeleteFile": "完全删除文件", "LabelHasEbook": "有电子书", "LabelHasSupplementaryEbook": "有补充电子书", + "LabelHideSubtitles": "隐藏标题", "LabelHighestPriority": "最高优先级", "LabelHost": "主机", "LabelHour": "小时", + "LabelHours": "小时", "LabelIcon": "图标", "LabelImageURLFromTheWeb": "来自 Web 图像的 URL", "LabelInProgress": "正在听", @@ -337,6 +346,8 @@ "LabelIntervalEveryHour": "每小时", "LabelInvert": "倒转", "LabelItem": "项目", + "LabelJumpBackwardAmount": "向后跳转时间", + "LabelJumpForwardAmount": "向前跳转时间", "LabelLanguage": "语言", "LabelLanguageDefaultServer": "默认服务器语言", "LabelLanguages": "语言", @@ -371,6 +382,7 @@ "LabelMetadataOrderOfPrecedenceDescription": "较高优先级的元数据源将覆盖较低优先级的元数据源", "LabelMetadataProvider": "元数据提供者", "LabelMinute": "分钟", + "LabelMinutes": "分钟", "LabelMissing": "丢失", "LabelMissingEbook": "没有电子书", "LabelMissingSupplementaryEbook": "没有补充电子书", @@ -410,6 +422,7 @@ "LabelOverwrite": "覆盖", "LabelPassword": "密码", "LabelPath": "路径", + "LabelPermanent": "永久的", "LabelPermissionsAccessAllLibraries": "可以访问所有媒体库", "LabelPermissionsAccessAllTags": "可以访问所有标签", "LabelPermissionsAccessExplicitContent": "可以访问显式内容", @@ -442,6 +455,8 @@ "LabelRSSFeedPreventIndexing": "防止索引", "LabelRSSFeedSlug": "RSS 源段", "LabelRSSFeedURL": "RSS 源 URL", + "LabelRandomly": "随机", + "LabelReAddSeriesToContinueListening": "重新添加系列以继续收听", "LabelRead": "阅读", "LabelReadAgain": "再次阅读", "LabelReadEbookWithoutProgress": "阅读电子书而不保存进度", @@ -507,8 +522,12 @@ "LabelSettingsStoreMetadataWithItem": "存储项目元数据", "LabelSettingsStoreMetadataWithItemHelp": "默认情况下元数据文件存储在/metadata/items文件夹中, 启用此设置将存储元数据在你媒体项目文件夹中", "LabelSettingsTimeFormat": "时间格式", + "LabelShare": "分享", + "LabelShareOpen": "打开分享", + "LabelShareURL": "分享 URL", "LabelShowAll": "全部显示", "LabelShowSeconds": "显示秒数", + "LabelShowSubtitles": "显示标题", "LabelSize": "文件大小", "LabelSleepTimer": "睡眠定时", "LabelSlug": "Slug", @@ -546,6 +565,10 @@ "LabelThemeDark": "黑暗", "LabelThemeLight": "明亮", "LabelTimeBase": "时间基准", + "LabelTimeDurationXHours": "{0} 小时", + "LabelTimeDurationXMinutes": "{0} 分钟", + "LabelTimeDurationXSeconds": "{0} 秒", + "LabelTimeInMinutes": "时间 (分钟)", "LabelTimeListened": "收听时间", "LabelTimeListenedToday": "今日收听的时间", "LabelTimeRemaining": "剩余 {0}", @@ -585,9 +608,12 @@ "LabelVersion": "版本", "LabelViewBookmarks": "查看书签", "LabelViewChapters": "查看章节", + "LabelViewPlayerSettings": "查看播放器设置", "LabelViewQueue": "查看播放列表", "LabelVolume": "音量", "LabelWeekdaysToRun": "工作日运行", + "LabelXBooks": "{0} 本书", + "LabelXItems": "{0} 项目", "LabelYearReviewHide": "隐藏年度回顾", "LabelYearReviewShow": "查看年度回顾", "LabelYourAudiobookDuration": "你的有声读物持续时间", @@ -598,6 +624,7 @@ "MessageAppriseDescription": "要使用此功能,你需要运行一个 Apprise API 实例或一个可以处理这些相同请求的 API.
Apprise API Url 应该是发送通知的完整 URL 路径, 例如: 如果你的 API 实例运行在 http://192.168.1.1:8337, 那么你可以输入 http://192.168.1.1:8337/notify.", "MessageBackupsDescription": "备份包括用户, 用户进度, 媒体库项目详细信息, 服务器设置和图像, 存储在 /metadata/items & /metadata/authors. 备份不包括存储在你的媒体库文件夹中的任何文件.", "MessageBackupsLocationEditNote": "注意: 更新备份位置不会移动或修改现有备份", + "MessageBackupsLocationNoEditNote": "注意: 备份位置是通过环境变量设置的, 不能在此处更改.", "MessageBackupsLocationPathEmpty": "备份位置路径不能为空", "MessageBatchQuickMatchDescription": "快速匹配将尝试为所选项目添加缺少的封面和元数据. 启用以下选项以允许快速匹配覆盖现有封面和或元数据.", "MessageBookshelfNoCollections": "你尚未进行任何收藏", @@ -644,6 +671,7 @@ "MessageConfirmSendEbookToDevice": "你确定要发送 {0} 电子书 \"{1}\" 到设备 \"{2}\"?", "MessageDownloadingEpisode": "正在下载剧集", "MessageDragFilesIntoTrackOrder": "将文件拖动到正确的音轨顺序", + "MessageEmbedFailed": "嵌入失败!", "MessageEmbedFinished": "嵌入完成!", "MessageEpisodesQueuedForDownload": "{0} 个剧集排队等待下载", "MessageEreaderDevices": "为了确保电子书的送达, 你可能需要将上述电子邮件地址添加为下列每台设备的有效发件人.", @@ -698,6 +726,7 @@ "MessageNoUpdatesWereNecessary": "无需更新", "MessageNoUserPlaylists": "你没有播放列表", "MessageNotYetImplemented": "尚未实施", + "MessageOpmlPreviewNote": "注意: 这是解析的OPML文件的预览. 实际的播客标题将从 RSS 提要中获取.", "MessageOr": "或", "MessagePauseChapter": "暂停章节播放", "MessagePlayChapter": "开始章节播放", @@ -716,6 +745,9 @@ "MessageSelected": "{0} 已选择", "MessageServerCouldNotBeReached": "无法访问服务器", "MessageSetChaptersFromTracksDescription": "把每个音频文件设置为章节并将章节标题设置为音频文件名", + "MessageShareExpirationWillBe": "到期日期为 {0}", + "MessageShareExpiresIn": "到期时间 {0}", + "MessageShareURLWillBe": "分享网址是 {0}", "MessageStartPlaybackAtTime": "开始播放 \"{0}\" 在 {1}?", "MessageThinking": "正在查找...", "MessageUploaderItemFailed": "上传失败",