diff --git a/client/strings/en-us.json b/client/strings/en-us.json
index 39726ff08..64c7d99cb 100644
--- a/client/strings/en-us.json
+++ b/client/strings/en-us.json
@@ -124,6 +124,7 @@
"HeaderAudiobookTools": "Audiobook File Management Tools",
"HeaderAuthentication": "Authentication",
"HeaderBackups": "Backups",
+ "HeaderBulkChapterModal": "Add Multiple Chapters",
"HeaderChangePassword": "Change Password",
"HeaderChapters": "Chapters",
"HeaderChooseAFolder": "Choose a Folder",
@@ -297,6 +298,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...",
@@ -454,6 +456,7 @@
"LabelNewestAuthors": "Newest Authors",
"LabelNewestEpisodes": "Newest Episodes",
"LabelNextBackupDate": "Next backup date",
+ "LabelNextChapters": "Next chapters will be:",
"LabelNextScheduledRun": "Next scheduled run",
"LabelNoCustomMetadataProviders": "No custom metadata providers",
"LabelNoEpisodesSelected": "No episodes selected",
@@ -470,6 +473,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.",
@@ -722,6 +726,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",
@@ -919,6 +924,7 @@
"NotificationOnBackupFailedDescription": "Triggered when a backup fails",
"NotificationOnEpisodeDownloadedDescription": "Triggered when a podcast episode is auto-downloaded",
"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",
@@ -972,8 +978,11 @@
"ToastBookmarkCreateFailed": "Failed to create bookmark",
"ToastBookmarkCreateSuccess": "Bookmark added",
"ToastBookmarkRemoveSuccess": "Bookmark removed",
+ "ToastBulkChapterInvalidCount": "Please enter a valid number between 1 and 150",
"ToastCachePurgeFailed": "Failed to purge cache",
"ToastCachePurgeSuccess": "Cache purged successfully",
+ "ToastChapterInvalidShiftAmount": "Invalid shift amount. First chapter would have zero or negative length.",
+ "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.",
@@ -1104,15 +1113,6 @@
"ToastUserPasswordMismatch": "Passwords do not match",
"ToastUserPasswordMustChange": "New password cannot match old password",
"ToastUserRootRequireName": "Must enter a root username",
- "ToastChaptersAllLocked": "All chapters are locked. Unlock some chapters to shift their times.",
- "ToastChapterInvalidShiftAmount": "Invalid shift amount. First chapter would have zero or negative length.",
- "ToastBulkChapterInvalidCount": "Please enter a valid number between 1 and 150",
- "PlaceholderBulkChapterInput": "Enter chapter title or use numbering (e.g., 'Episode 1', 'Chapter 10', '1.')",
- "HeaderBulkChapterModal": "Add Multiple Chapters",
- "MessageBulkChapterPattern": "How many chapters would you like to add with this numbering pattern?",
- "LabelDetectedPattern": "Detected pattern:",
- "LabelNextChapters": "Next chapters will be:",
- "LabelNumberOfChapters": "Number of chapters:",
"TooltipAddChapters": "Add chapter(s)",
"TooltipAddOneSecond": "Add 1 second",
"TooltipLockAllChapters": "Lock all chapters",
diff --git a/client/strings/es.json b/client/strings/es.json
index d81236f0c..ca0fc91c2 100644
--- a/client/strings/es.json
+++ b/client/strings/es.json
@@ -124,6 +124,7 @@
"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",
@@ -297,6 +298,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 +456,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 +473,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 +726,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 +924,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 +978,11 @@
"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",
+ "ToastChapterInvalidShiftAmount": "Cantidad de desplazamiento inválida. El primer capítulo tendría duración cero o negativa.",
+ "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.",
@@ -1104,15 +1113,6 @@
"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",
- "ToastChaptersAllLocked": "Todos los capítulos están bloqueados. Desbloquee algunos capítulos para cambiar sus tiempos.",
- "ToastChapterInvalidShiftAmount": "Cantidad de desplazamiento inválida. El primer capítulo tendría duración cero o negativa.",
- "ToastBulkChapterInvalidCount": "Por favor ingrese un número válido entre 1 y 150",
- "PlaceholderBulkChapterInput": "Ingrese título de capítulo o use numeración (ej. 'Episodio 1', 'Capítulo 10', '1.')",
- "HeaderBulkChapterModal": "Añadir Múltiples Capítulos",
- "MessageBulkChapterPattern": "¿Cuántos capítulos desea añadir con este patrón de numeración?",
- "LabelDetectedPattern": "Patrón detectado:",
- "LabelNextChapters": "Los próximos capítulos serán:",
- "LabelNumberOfChapters": "Número de capítulos:",
"TooltipAddChapters": "Añadir capítulo(s)",
"TooltipAddOneSecond": "Añadir 1 segundo",
"TooltipLockAllChapters": "Bloquear todos los capítulos",
diff --git a/client/strings/fr.json b/client/strings/fr.json
index 88666f580..1d5f88597 100644
--- a/client/strings/fr.json
+++ b/client/strings/fr.json
@@ -124,6 +124,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",
@@ -296,6 +297,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…",
@@ -453,6 +455,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",
"LabelNoCustomMetadataProviders": "Aucun fournisseurs de métadonnées personnalisés",
"LabelNoEpisodesSelected": "Aucun épisode sélectionné",
@@ -469,6 +472,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 ».",
@@ -721,6 +725,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",
@@ -918,6 +923,7 @@
"NotificationOnBackupFailedDescription": "Déclenché lorsqu'une sauvegarde échoue",
"NotificationOnEpisodeDownloadedDescription": "Déclenché lorsqu’un épisode de podcast est téléchargé automatiquement",
"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",
@@ -971,8 +977,11 @@
"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",
+ "ToastChapterInvalidShiftAmount": "Montant de décalage invalide. Le premier chapitre aurait une durée nulle ou négative.",
+ "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.",
@@ -1103,15 +1112,6 @@
"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",
- "ToastChaptersAllLocked": "Tous les chapitres sont verrouillés. Déverrouillez certains chapitres pour décaler leurs temps.",
- "ToastChapterInvalidShiftAmount": "Montant de décalage invalide. Le premier chapitre aurait une durée nulle ou négative.",
- "ToastBulkChapterInvalidCount": "Veuillez entrer un nombre valide entre 1 et 150",
- "PlaceholderBulkChapterInput": "Entrez le titre du chapitre ou utilisez la numérotation (ex. 'Épisode 1', 'Chapitre 10', '1.')",
- "HeaderBulkChapterModal": "Ajouter Plusieurs Chapitres",
- "MessageBulkChapterPattern": "Combien de chapitres souhaitez-vous ajouter avec ce motif de numérotation ?",
- "LabelDetectedPattern": "Motif détecté :",
- "LabelNextChapters": "Les prochains chapitres seront :",
- "LabelNumberOfChapters": "Nombre de chapitres :",
"TooltipAddChapters": "Ajouter chapitre(s)",
"TooltipAddOneSecond": "Ajouter 1 seconde",
"TooltipLockAllChapters": "Verrouiller tous les chapitres",
@@ -1119,4 +1119,4 @@
"TooltipSubtractOneSecond": "Soustraire 1 seconde",
"TooltipUnlockAllChapters": "Déverrouiller tous les chapitres",
"TooltipUnlockChapter": "Déverrouiller le chapitre (Maj+clic pour plage)"
-}
\ No newline at end of file
+}