diff --git a/client/src/locales/de.json b/client/src/locales/de.json index f00469235..f71c32a89 100644 --- a/client/src/locales/de.json +++ b/client/src/locales/de.json @@ -16,7 +16,8 @@ "yes": "Ja", "no": "Nein", "show": "Anzeigen", - "hide": "Ausblenden" + "hide": "Ausblenden", + "undo": "Rückgängig" }, "settings": { "privacySharing": { @@ -1357,6 +1358,10 @@ "oidc": "OIDC / SSO", "server-fonts": "Server-Schriftarten" }, + "tts": { + "deleted": "Anbieter gelöscht", + "saveFailed": "{name} konnte nicht kopiert werden" + }, "serverFonts": { "title": "Server-Schriftarten", "subtitle": "Hochladen von Schriftarten, die jeder Benutzer im eBook-Reader auswählen kann, ohne eigene hochzuladen.", @@ -2847,7 +2852,8 @@ "clientTypes": { "qbittorrent": "qBittorrent", "transmission": "Transmission", - "deluge": "Deluge" + "deluge": "Deluge", + "nzbget": "NZBGet" }, "color": { "label": "Farbe", @@ -2917,21 +2923,36 @@ "testFailed": "Download Programm konnte nicht erreicht werden", "nameAndUrlRequired": "Ein Name und eine Basis-URL sind erforderlich", "nameTaken": "Ein Download Programm mit diesem Namen existiert bereits", + "urlUnsafe": "Diese Basis-URL konnte nicht erreicht werden. Überprüfe die Adresse und ob sie http oder https verwendet.", "urlPrivate": "Diese Adresse ist in einem privaten oder lokalen Netzwerk. Aktivieren Sie \"Private Adressen erlauben\", wenn der Client dort läuft.", + "encryptionKeyMissing": "Setze BOOK_REQUEST_ENCRYPTION_KEY bevor du ein Passwort speicherst. Generiere eins mit: openssl rand -hex 32", + "encryptionKeyChanged": "Das gespeicherte Passwort konnte nicht gelesen werden. BOOK_REQUEST_ENCRYPTION_KEY kann seit dem Speichern geändert worden sein.", + "pathNotAbsolute": "Pfadzuordnungen müssen absolute Pfade auf beiden Seiten sein.", "nameRequired": "Geben Sie diesem Client einen Namen.", - "urlRequired": "Geben Sie die Adresse ein, unter der BookOrbit diesen Client erreichen soll." + "urlRequired": "Geben Sie die Adresse ein, unter der BookOrbit diesen Client erreichen soll.", + "mappingRequired": "Fügen Sie mindestens eine Pfadzuordnung hinzu, so dass BookOrbit weiß, aus welchem Verzeichnis es importieren darf." }, + "encryptionKeyMissing": "BOOK_REQUEST_ENCRYPTION_KEY ist nicht gesetzt, daher kann kein Client-Passwort gespeichert werden. Generieren Sie eins mit: openssl rand -hex 32", "confirmDelete": { "title": "Dieses Download Programm entfernen?", "confirm": "Programm entfernen" }, "indexers": { "title": "Torrent-Indexer", + "hint": "Verbinden Sie einen Torznab-Feed für Torrents oder einen Newznab-Feed für Usenet-Releases.", + "allDisabled": "Jede Quelle unten ist ausgeschaltet, so dass keine Suche Ergebnisse liefern wird. Schalten Sie mindestens eine Suche wieder ein.", "loading": "Lade Indexer...", "empty": { "title": "Noch keine Quellen", + "body": "BookOrbit stellt keine eigenen Quellen bereit, so dass eine Anfrage nichts findet, bis du Quellen hinzufügst. Es gibt zwei Wege.", + "bodyOneWay": "BookOrbit stellt keine eigenen Quellen bereit, so dass eine Anfrage nichts findet, bis du Quellen hinzufügst. ", + "responsibility": "Sie sind verantwortlich für die hinzugefügten Quellen.", "pluginTitle": "Plugin installieren", - "torznabTitle": "Torznab-Indexer hinzufügen" + "pluginBody": "Eine Plugin-Datei, die es BookOrbit ermöglicht, eine bestimmte Seite zu durchsuchen. Sie müssen die Plugin-Datei bereitstellen und die Einstellungen vornehmen.", + "torznabTitle": "Torznab-Indexer hinzufügen", + "torznabBody": "Geben Sie einen bereits bestehenden Feed von Prowlarr, Jackett oder NZBHydra ein.", + "builtInTitle": "Indexer hinzufügen", + "builtInBody": "Geben Sie ein bereits bestehenden Feed von Torznab oder Newznab ein. Eine Konfiguration pro Feed" }, "add": "Indexer hinzufügen", "edit": "Indexer bearbeiten", @@ -2952,10 +2973,15 @@ "network": { "title": "Erweitertes Netzwerk", "resolvers": "DNS-Server", - "proxyUrl": "Proxy-URL" + "proxyUrl": "Proxy-URL", + "proxyHint": "Ein http oder https Proxy um Anfragen dieser Quelle zu senden. SOCKS wird nicht unterstützt.", + "brief": "Nur erforderlich, wenn der Standardpfad zu dieser Quelle nicht funktioniert.", + "resolversBrief": "Komma getrennt. Wird anstelle des System-Resolvers nur für diese Quelle verwendet; leer verwendet das System.", + "proxyBrief": "Ein http oder https Proxy für diese Quelle. SOCKS wird nicht unterstützt." }, "types": { - "torznab": "Torznab (Jackett, Prowlarr, NZBHydra)" + "torznab": "Torznab (Jackett, Prowlarr, NZBHydra)", + "newznab": "Newznab" }, "fields": { "name": "Name", @@ -2999,6 +3025,22 @@ "settings": { "restoreDefault": "Standard wiederherstellen" }, + "seeding": { + "ratio": "Seeding-Verhältnis", + "time": "Seed Zeit (Minuten)", + "reset": "Seeding Einstellungen zurücksetzen", + "summary": { + "title": "Richtlinienzusammenfassung", + "ratio": "Verhältnis", + "time": "Seed Zeit", + "manual": "Manuell: {value}", + "tracker": "Tracker fallback", + "client": "Client-Standard" + }, + "errors": { + "minutes": "Geben Sie eine ganze Zahl von 1 bis 2.147.483.647 ein oder lassen Sie dieses Feld leer." + } + }, "confirmDelete": { "title": "Diese Quelle löschen", "confirm": "Quelle löschen" @@ -3076,7 +3118,12 @@ "mono": "Mono", "multiSelectAny": "Beliebig" }, + "sections": { + "availability": "Verfügbarkeit", + "behaviour": "Verhalten" + }, "continueWithType": "Weiter", + "external": "Extern", "editorDescription": "Einstellungen für dieses Download Programm.", "searchHealth": { "failingStreak": "{count} Suche in einer Zeile fehlgeschlagen" @@ -3089,10 +3136,14 @@ "searchPlaceholder": "Sucheinstellungen", "clearSearch": "Suche zurücksetzen", "noResults": "Keine Einstellungen entsprechen {query}.", + "status": { + "scanning": "Wird gescannt " + }, "groups": { "you": "Du", "library": "Bibliothek", "devices": "Geräte & Synchronisation", + "accounts": "Konten", "server": "Server" }, "descriptions": { @@ -3114,7 +3165,17 @@ "restrictions": "Altersbewertungen und verborgene Inhalte für dieses Konto.", "libraries": "Scanne Pfade, beobachtete Ordner und ErfassungesRegeln.", "accountActivity": "Lese- und Sitzungsaktivität pro Benutzer." - } + }, + "backToApp": "Zurück zur Bibliothek" + }, + "field": { + "required": "(erforderlich)" + }, + "editor": { + "discardTitle": "Änderungen verwerfen?", + "discardConfirm": "Änderungen verwerfen", + "moreActions": "Weitere Aktionen", + "removeQuestion": "Entfernen?" } }, "achievements": { @@ -3309,14 +3370,25 @@ "administration": "Verwaltung", "notifications": "Benachrichtigungen", "restrictions": "Einschränkungen", - "bookDock": "Bücherablage" + "libraryBooks": "Bibliothek & Bücher", + "bookRequests": "Buchanfragen", + "bookDock": "Bücherablage", + "devices": "Geräte", + "readingIntegrations": "Lese Integrationen", + "emailNotifications": "E-Mail & Benachrichtigungen", + "libraryConfiguration": "Bibliothekskonfiguration", + "usersSecurity": "Nutzer & Sicherheit", + "system": "System" }, "permissionLevels": { - "use": "Verwenden" + "use": "Verwenden", + "manage": "Verwalten" }, + "accountRestrictions": "Kontoeinschränkungen ", "superuserTarget": "Superuser-Ziel", "superuserTargetHint": "Inhaltseinschränkungen können nicht auf Superuser angewendet werden.", "superuserAccess": { + "title": "Superuser Zugriff", "enabled": "Aktiviert", "disabled": "Deaktiviert" }, @@ -3346,8 +3418,33 @@ "createUser": "Erstellen des Benutzers fehlgeschlagen" }, "sectionSummary": { - "restrictionsNone": "Keine" - } + "restrictionsNone": "Keine", + "restrictionsContent": "Inhaltsfilter", + "restrictionsBoth": "Filter und Demo Modus" + }, + "account": "Konto", + "status": "Status", + "statusHint": "Gesperrte Benutzer können sich nicht anmelden oder Geräte synchronisieren.", + "signInMethod": "Anmelden", + "signInMethods": { + "password": "Passwort", + "oidc": "Single-Sign-On", + "shared": "Magic Links" + }, + "created": "Erstellt", + "selectAll": "Alle auswählen", + "clearAll": "Zurücksetzen", + "presets": { + "label": "Berechtigungsvorgabe", + "none": "Keine", + "standard": "Standard", + "custom": "Benutzerdefiniert", + "admin": "Administrator", + "customHint": "Diese Auswahl stimmt nicht mit einer Voreinstellung überein." + }, + "filterPermissions": "Filterberechtigungen", + "clearFilters": "Filter zurücksetzen", + "dangerZone": "Gefahrenbereich" }, "usersPage": { "usersTitle": "Benutzer", @@ -3371,6 +3468,8 @@ "statusActive": "Aktiv", "statusInactive": "Inaktiv", "lockedBadge": "Gesperrt", + "unlockAccount": "Konto entsperren", + "unlockAria": "{name} entsperren", "resetPassword": "Passwort zurücksetzen", "resetPasswordOidcHint": "OIDC-Benutzer setzen Passwörter bei ihrem Identitätsanbieter zurück", "resetPasswordSharedHint": "Gemeinsame Konten haben keine Passwörter", @@ -3457,7 +3556,9 @@ "neverSignedIn": "{name} hat sich noch nie angemeldet" }, "action": { - "unlock": "Jetzt freischalten" + "unlock": "Jetzt freischalten", + "sendResetLink": "Link zum Zurücksetzen senden", + "sendNewLink": "Neuen Link senden" }, "collapse": "Ausblenden", "expand": "Anzeigen" @@ -3595,6 +3696,7 @@ "noAnnotations": "Noch keine Markierungen. Im Web oder auf Ihrem E-Reader erstellte Markierungen erscheinen hier.", "readHere": "Hier lesen", "syncKobo": "Mit Kobo synchronisieren", + "syncKoreader": "KOReader synchronisieren", "syncKoreaderBody": "Das Plugin lädt Anmerkungen mit ihren Positionen hoch.", "goToLibrary": "Gehe zur Bibliothek" }, @@ -3714,7 +3816,10 @@ "showing": "Zeige {from}-{to} von {total}", "prev": "Zurück", "chips": { + "search": "Suche: {value}", "action": "Aktion: {value}", + "eventType": "Ereignistyp: {value}", + "resource": "Ressource: {value}", "user": "Benutzer: {value}", "from": "Von: {value}", "to": "Bis: {value}" @@ -3744,6 +3849,7 @@ "ip": "IP" }, "categories": { + "authentication": "Authentifizierung", "books": "Bücher", "users": "Benutzer", "libraries": "Bibliotheken", @@ -3759,7 +3865,9 @@ "Collection": "Sammlung", "SmartScope": "Intelligenter Bereich", "BookDockFile": "Bücherablage-Datei", + "BookRequest": "Buchanfrage", "DownloadClient": "Download Programm", + "RequestIndexer": "Indexer", "Author": "Autor", "AppSettings": "App-Einstellungen", "Genre": "Genre", @@ -3778,19 +3886,69 @@ "ReadingInsightsProfile": "Leseprofil" }, "actionLabels": { + "AuthRegister": "Benutzerkonto erstellen", "AuthLogin": "Anmelden", + "AuthLoginFailed": "Fehler beim Anmelden", "AuthLogout": "Abmelden", + "AuthPasswordChange": "Passwort ändern", + "AuthPasswordResetRequest": "Zurücksetzen des Passworts anfordern", + "AuthPasswordReset": "Passwort zurücksetzen", + "AuthPasswordAdminReset": "Passwort zurücksetzen", "AuthSessionRevoke": "Sitzung widerrufen", + "MagicLinkCreate": "Magic Link erstellen", "UserCreate": "Benutzer erstellen", "UserUpdate": "Benutzer aktualisieren", "UserDelete": "Benutzer löschen", + "LibraryCreate": "Bibliothek erstellen", + "LibraryUpdate": "Bibliothek aktualisieren", + "LibraryDelete": "Bibliothek löschen", + "LibraryFolderAdd": "Bibliothekordner hinzufügen", + "LibraryFolderRemove": "Bibliotheksordner entfernen", + "LibraryAccessGrant": "Bibliothekszugriff gewähren", + "LibraryAccessUpdate": "Bibliothekszugriff aktualisieren", + "LibraryAccessRevoke": "Bibliothekszugriff widerrufen", "BookUpload": "Buch hochladen", "BookDelete": "Buch löschen", "BookBulkDelete": "Bücher löschen", + "BookBulkSetStatus": "Buchstatus festlegen", + "BookBulkSetRating": "Buchbewertung festlegen", + "BookBulkSetMetadata": "Metadaten festlegen", + "BookBulkUpdateTags": "Tags aktualisieren", + "BookBulkSetMetadataLock": "Metadaten-Sperren setzen", + "BookBulkEditMetadata": "Metadaten bearbeiten", + "BookBulkMoveLibrary": "Bücher in eine andere Bibliothek verschieben", + "BookReadingStateReset": "Lesestatus zurücksetzen", + "BookWriteAndRename": "Metadaten schreiben und Datei umbenennen", + "CollectionCreate": "Sammlung erstellen", + "CollectionUpdate": "Sammlung aktualisieren", + "CollectionDelete": "Sammlung löschen", + "CollectionBooksAdd": "Zur Sammlung hinzufügen", + "CollectionBooksRemove": "Aus Sammlung entfernen", + "SmartScopeCreate": "Smart Scope erstellen", + "SmartScopeUpdate": "Smart Scope aktualisieren", + "SmartScopeDelete": "Smart Scope löschen", "BookDockFinalize": "Bücherablage-Datei finalisieren", + "BookRequestCreate": "Anfrage erstellen", + "BookRequestApprove": "Anfrage genehmigen", + "BookRequestReject": "Anfrage ablehnen", + "BookRequestCancel": "Anfrage abbrechen", + "BookRequestFulfill": "Anfrage erfüllen", + "BookRequestGrab": "Anfrage an einen Download-Client senden", + "BookRequestImport": "Download importieren", + "BookRequestRemoveDownload": "Download vom Client entfernen", + "BookRequestDelete": "Anfrage löschen", "DownloadClientCreate": "Download Programm erstellen", "DownloadClientUpdate": "Download Programm aktualisieren", "DownloadClientDelete": "Download Programm löschen", + "RequestIndexerCreate": "Indexer hinzugefügt", + "RequestIndexerUpdate": "Indexer aktualisiert", + "RequestIndexerDelete": "Quelle gelöscht", + "RequestIndexerPluginInspect": "Indexer Plugin überprüft", + "RequestIndexerPluginInstall": "Indexer-Plugin installiert", + "RequestIndexerPluginRemove": "Indexer-Plugin gelöscht", + "AuthorUpdate": "Autor aktualisieren", + "AuthorDelete": "Autor löschen", + "AuthorMerge": "Autoren zusammenführen", "EntityManagerSplit": "Entität aufteilen" } }, @@ -8223,7 +8381,6 @@ "unplayed": "Ungehört", "finished": "Abgeschlossen", "health": "Status", - "feedHealth": "Feed-Status", "search": "Podcasts durchsuchen", "clearSearch": "Podcast-Suche löschen", "import": "Importieren", diff --git a/client/src/locales/es.json b/client/src/locales/es.json index 7bf5c78f3..e17fd61fc 100644 --- a/client/src/locales/es.json +++ b/client/src/locales/es.json @@ -1,6 +1,6 @@ { "common": { - "resetSortAria": "Restablecer orden al predeterminado", + "resetSortAria": "Restablecer orden predeterminado", "save": "Guardar", "cancel": "Cancelar", "delete": "Eliminar", @@ -47,7 +47,7 @@ "books": "Títulos de libros actuales, recientes y más leídos", "authors": "Autores principales", "series": "Series destacadas", - "narrators": "Narradores principales" + "narrators": "Narradores destacados" }, "confirm": { "shareTitle": "¿Habilitar {level}?", @@ -174,7 +174,7 @@ "hint": "Controla aspectos destacados y elementos interactivos." }, "cornerRadius": { - "label": "Radio de esquina", + "label": "Curvatura de las esquinas", "hint": "Redondez de tarjetas y elementos de interfaz de usuario" }, "surfaceBrightness": { @@ -1437,7 +1437,7 @@ "display": "Visualización", "reader": "Lector", "metadata": "Metadatos", - "usersAccess": "Usuarios y Acceso", + "usersAccess": "Usuarios y acceso", "email": "Correo electrónico", "opds": "OPDS", "kobo": "Kobo", @@ -3371,7 +3371,7 @@ "groups": { "you": "Tú", "library": "Biblioteca", - "devices": "Dispositivos y sincronización", + "devices": "Dispositivos", "accounts": "Cuentas", "server": "Servidor" }, @@ -7306,7 +7306,7 @@ "fieldPlaceholder": "Dejar en blanco para borrar", "fieldPlaceholderArray": "Separados por comas (dejar en blanco para borrar)", "deleteConfirm": "{count, plural, =0 {Eliminar # libro?} one {Eliminar # libro?} other {Eliminar # libros?} many {Eliminar # libros?}}", - "typeDelete": "Tipo BORRAR" + "typeDelete": "Escribe BORRAR" }, "viewHeader": { "select": "Seleccionar", diff --git a/client/src/locales/fr.json b/client/src/locales/fr.json index 858300961..053c6b8b0 100644 --- a/client/src/locales/fr.json +++ b/client/src/locales/fr.json @@ -16,7 +16,8 @@ "yes": "Oui", "no": "Non", "show": "Afficher", - "hide": "Masquer" + "hide": "Masquer", + "undo": "Annuler" }, "settings": { "privacySharing": { @@ -310,7 +311,7 @@ "hint": "Icône de couleur affichant l'état de lecture actuel en haut à gauche" }, "seriesPosition": { - "label": "Numéro de série", + "label": "Tome", "hint": "Badge indiquant la position du livre dans sa série en haut à droite (p. ex. #3, #1,5)" }, "lockStatus": { @@ -517,14 +518,14 @@ }, "readingPreferences": { "title": "Préférences de lecture", - "timezoneHint": "Le fuseau horaire sert aux réalisations liées à l'heure comme Early Bird et All-nighter.", + "timezoneHint": "Le fuseau horaire sert aux succès liés à l'heure, comme Early Bird et All-nighter.", "timezone": "Fuseau horaire", "save": "Enregistrer les préférences", - "enableAchievements": "Activer les réalisations", - "enableAchievementsHint": "Suivez la progression des réalisations et affichez l'interface liée aux réalisations. Gérez les notifications de réussite séparément dans Notifications.", - "achievementsEnabled": "Réalisations activées", - "achievementsDisabled": "Réalisations désactivées", - "achievementsSaveFailed": "Échec de la mise à jour de la préférence de réalisations" + "enableAchievements": "Activer les succès", + "enableAchievementsHint": "Suivez la progression des succès et affichez l'interface qui leur est liée. Gérez les notifications de succès séparément dans Notifications.", + "achievementsEnabled": "Succès activés", + "achievementsDisabled": "Succès désactivés", + "achievementsSaveFailed": "Échec de la mise à jour de la préférence des succès" }, "preferences": { "saveFailed": "Échec de l'enregistrement des préférences", @@ -734,6 +735,7 @@ "connected": "Connecté - {issuer}", "connectionFailed": "La connexion a échoué", "privateIssuerAddress": "L'URL de l'émetteur résout à une adresse de réseau privé ou local, donc le serveur a refusé de se connecter. Définissez OIDC_ALLOW_LOCAL_ISSUERS=true sur le serveur BookOrbit pour l'autoriser.", + "tlsCertificateUntrusted": "BookOrbit n'a pas pu vérifier le certificat TLS du fournisseur OIDC. Si le fournisseur utilise une autorité de certification privée, montez son bundle CA PEM, définissez NODE_EXTRA_CA_CERTS sur le chemin du bundle dans le conteneur, puis redémarrez BookOrbit.", "hide": "Masquer", "details": "Détails", "supported": "pris en charge", @@ -781,7 +783,7 @@ "subtitle": "Gérez les tâches en arrière-plan, les index système et les opérations de maintenance.", "importGroup": "Importer", "recommendationsGroup": "Recommandations", - "achievementsGroup": "Réalisations", + "achievementsGroup": "Succès", "updatesGroup": "Mises à jour", "importFromBooklore": "Importer depuis Booklore", "bookloreImportConfigured": "Importation de livres configurée", @@ -806,8 +808,8 @@ "booksQueuedForProcessing": "{count, plural, =0 {aucun livre en attente de traitement} one {# livre en attente de traitement} other {# livres en attente de traitement} many {# livres en attente de traitement}}", "run": "Courir", "running": "Courir...", - "backfillAchievements": "Remplir les réalisations rétroactivement", - "backfillAchievementsHint": "Réévaluez les réalisations de tous les utilisateurs.", + "backfillAchievements": "Remplir les succès rétroactivement", + "backfillAchievementsHint": "Réévaluez les succès de tous les utilisateurs.", "backfillResult": "Utilisateurs {users} traités ; a reçu {awards} récompenses.", "runBackfill": "Exécuter le remplissage", "checkForUpdates": "Vérifier les mises à jour", @@ -819,10 +821,10 @@ "failed": "Échec", "unknownError": "Erreur inconnue", "rebuildEmbeddingsFailed": "Échec de la reconstruction des intégrations : {error}", - "achievementBackfillConfirm": "Exécuter le remplissage des réalisations pour toutes les réalisations de tous les utilisateurs ? Cela peut prendre du temps.", - "achievementBackfillComplete": "Remplissage des réalisations terminé : {count} récompenses accordées", + "achievementBackfillConfirm": "Exécuter le remplissage rétroactif pour tous les succès de tous les utilisateurs ? Cela peut prendre du temps.", + "achievementBackfillComplete": "Remplissage des succès terminé : {count} récompenses accordées", "backfillRunFailed": "Échec de l'exécution du remplissage", - "achievementBackfillFailed": "Échec de l'exécution du remplissage des réalisations : {error}", + "achievementBackfillFailed": "Échec du remplissage des succès : {error}", "uploadsGroup": "Envois", "maxUploadSize": "Limite maximale de taille de fichier d'envoi", "maxUploadSizeHint": "Configurez la limite de taille maximale pour les envois de fichiers sur l'ensemble du système.", @@ -1355,72 +1357,101 @@ "account-activity": "Activité du compte", "magic-links": "Liens magiques", "oidc": "OIDC / SSO", + "tts": "Synthèse vocale", "server-fonts": "Polices du serveur" }, "tts": { - "title": "Providers", - "subtitle": "Speech engines available to readers. Voices are curated per provider.", - "summary": "{providers, plural, one {# provider} many {# providers} other {# providers}} · {enabled} enabled · {voices, plural, one {# voice curated} many {# voices curated} other {# voices curated}}", - "addProvider": "Add provider", - "loadFailed": "Failed to load text-to-speech configuration", - "empty": "No speech providers configured.", - "reorderHint": "Drag to reorder. Readers see providers in this order.", - "dragHandle": "Reorder {name}", - "moveUp": "Move {name} up", - "moveDown": "Move {name} down", - "reorderFailed": "Failed to save the provider order", - "expand": "Show details for {name}", - "collapse": "Hide details for {name}", - "toggleEnabled": "Enable {name}", - "enableFailed": "Failed to update {name}", - "statusConnected": "Connected", - "statusUnreachable": "Unreachable", - "statusUnchecked": "Not checked", - "voiceCount": "{count, plural, one {# voice} many {# voices} other {# voices}}", + "title": "Fournisseurs", + "subtitle": "Moteurs vocaux proposés aux lecteurs. Les voix sont sélectionnées pour chaque fournisseur.", + "summary": "{providers, plural, one {# fournisseur} many {# fournisseurs} other {# fournisseurs}} · activés : {enabled} · {voices, plural, one {# voix sélectionnée} many {# voix sélectionnées} other {# voix sélectionnées}}", + "addProvider": "Ajouter un fournisseur", + "loadFailed": "Impossible de charger la configuration de la synthèse vocale", + "empty": "Aucun fournisseur vocal configuré.", + "reorderHint": "Faites glisser pour réordonner. Les lecteurs voient les fournisseurs dans cet ordre.", + "dragHandle": "Déplacer {name}", + "moveUp": "Monter {name}", + "moveDown": "Descendre {name}", + "reorderFailed": "Impossible d'enregistrer l'ordre des fournisseurs", + "expand": "Afficher les détails de {name}", + "collapse": "Masquer les détails de {name}", + "toggleEnabled": "Activer {name}", + "enableFailed": "Impossible de mettre à jour {name}", + "statusConnected": "Connecté", + "statusUnreachable": "Injoignable", + "statusUnchecked": "Non vérifié", + "voiceCount": "{count, plural, one {# voix} many {# voix} other {# voix}}", "configuration": "Configuration", "fieldType": "Type", - "fieldTypeOpenAi": "OpenAI-compatible", - "fieldApiKey": "API key", - "apiKeySet": "Set", - "apiKeyNotSet": "Not set", - "fieldModel": "Default model", - "fieldModelNone": "Provider default", - "fieldDiscovery": "Voice discovery", - "discoverySupported": "Supported", - "discoveryUnsupported": "Not supported", - "voices": "Voices", - "voicesCurated": "{count} curated", - "voicesTapToPreview": "Tap a voice to preview it", - "voicesNone": "No voices configured yet", - "manageVoices": "Manage voices", - "previewVoice": "Preview {name}", - "previewStop": "Stop preview", - "previewFailed": "Could not play a preview for {name}", - "previewNeedsEnabled": "Enable this provider to preview its voices", - "editConfiguration": "Edit configuration", - "testConnection": "Test connection", - "testPassed": "Connected · {count, plural, one {# voice found} many {# voices found} other {# voices found}}", - "testFailed": "Connection failed", - "delete": "Delete", - "deleteConfirm": "Delete the provider \"{name}\"? Readers using its voices fall back to another provider.", - "deleteFailed": "Failed to delete {name}", - "deleted": "Provider deleted", - "saveFailed": "Failed to save {name}", - "saved": "Provider saved", - "formAddTitle": "New provider", - "formEditTitle": "Edit provider", - "formName": "Name", + "fieldTypeOpenAi": "Compatible OpenAI", + "fieldApiKey": "Clé API", + "apiKeySet": "Définie", + "apiKeyNotSet": "Non définie", + "fieldModel": "Modèle par défaut", + "fieldModelNone": "Valeur par défaut du fournisseur", + "fieldDiscovery": "Découverte des voix", + "discoverySupported": "Prise en charge", + "discoveryUnsupported": "Non prise en charge", + "voices": "Voix", + "voicesCurated": "sélection : {count}", + "voicesTapToPreview": "Touchez une voix pour l'écouter", + "voicesNone": "Aucune voix configurée pour l'instant", + "manageVoices": "Gérer les voix", + "previewVoice": "Écouter {name}", + "previewStop": "Arrêter l'écoute", + "previewFailed": "Impossible de lire un extrait de {name}", + "previewNeedsEnabled": "Activez ce fournisseur pour écouter ses voix", + "editConfiguration": "Modifier la configuration", + "testConnection": "Tester la connexion", + "testPassed": "Connecté · {count, plural, one {# voix trouvée} many {# voix trouvées} other {# voix trouvées}}", + "testFailed": "Échec de la connexion", + "delete": "Supprimer", + "deleteConfirm": "Supprimer le fournisseur « {name} » ? Les lecteurs qui utilisent ses voix basculent sur un autre fournisseur.", + "deleteFailed": "Impossible de supprimer {name}", + "deleted": "Fournisseur supprimé", + "saveFailed": "Impossible d'enregistrer {name}", + "saved": "Fournisseur enregistré", + "formAddTitle": "Nouveau fournisseur", + "formEditTitle": "Modifier le fournisseur", + "formName": "Nom", "formNamePlaceholder": "Kokoro", - "formBaseUrl": "Base URL", + "formBaseUrl": "URL de base", "formBaseUrlPlaceholder": "http://localhost:8880/v1", - "formApiKey": "API key", - "formApiKeyOptional": "Optional", + "formApiKey": "Clé API", + "formApiKeyOptional": "Facultative", "formApiKeyPlaceholder": "sk-...", - "formApiKeyKeep": "Leave blank to keep the current key", - "formModel": "Default model", + "formApiKeyKeep": "Laissez vide pour conserver la clé actuelle", + "formModel": "Modèle par défaut", "formModelPlaceholder": "tts-1", - "formDiscovery": "This provider can list its own voices", - "formRequired": "Name and base URL are required" + "formDiscovery": "Ce fournisseur peut lister ses propres voix", + "formRequired": "Le nom et l'URL de base sont obligatoires", + "curation": { + "title": "Gérer les voix – {provider}", + "summary": "{count, plural, one {# voix configurée} many {# voix configurées} other {# voix configurées}}", + "summaryUnsaved": "{count, plural, one {# voix configurée} many {# voix configurées} other {# voix configurées}} – Modifications non enregistrées", + "importFromProvider": "Importer depuis le fournisseur", + "loadPreset": "Charger le préréglage {preset}", + "importUnsupported": "Ce fournisseur ne prend pas en charge la découverte des voix.", + "importUnsupportedWithPreset": "Ce fournisseur ne prend pas en charge la découverte des voix. Utilisez plutôt le bouton « Charger le préréglage {preset} ».", + "discoveryUnsupported": "Ce fournisseur n'expose pas de point d'accès listant ses voix.", + "discoverFailed": "Impossible de découvrir les voix", + "emptyImportOrPreset": "Aucune voix configurée. Importez-en depuis le fournisseur ou chargez un préréglage.", + "emptyImport": "Aucune voix configurée. Importez-en depuis le fournisseur.", + "emptyPreset": "Aucune voix configurée. Chargez un préréglage pour commencer.", + "emptyManual": "Aucune voix configurée. Ajoutez des voix manuellement.", + "columnId": "ID", + "columnName": "Nom", + "columnLocale": "Langue", + "columnGender": "Genre", + "genderMale": "Masculin", + "genderFemale": "Féminin", + "genderUnknown": "Inconnu", + "cancelEdit": "Annuler la modification", + "editVoice": "Modifier {name}", + "deleteVoice": "Supprimer {name}", + "previewVoice": "Écouter {name}", + "stopPreview": "Arrêter l'écoute de {name}", + "saveVoices": "{count, plural, one {Enregistrer # voix} many {Enregistrer # voix} other {Enregistrer # voix}}" + } }, "serverFonts": { "title": "Polices du serveur", @@ -1441,16 +1472,18 @@ "opds": "OPDS", "kobo": "Kobo", "koreader": "KOReader", + "tts": "Synthèse vocale", "integrations": "Intégrations", "hardcover": "Hardcover", "admin": "Administrateur", "system": "Système", - "account": "Compte" + "account": "Compte", + "podcasts": "Podcasts" } }, "integrations": { "title": "Intégrations", - "subtitle": "Connecter un service externe pour synchroniser vos données de lecture et de surlignage.", + "subtitle": "Connectez des services externes pour synchroniser vos données de lecture et vos passages surlignés.", "noPermission": "Vous n'avez pas la permission d'utiliser des intégrations.", "tabs": { "hardcover": "Hardcover", @@ -1478,7 +1511,7 @@ "pageCount": "Nombre de pages", "communityRating": "Évaluation de la communauté", "seriesName": "Nom de la série", - "seriesIndex": "Indice de série", + "seriesIndex": "Tome", "genres": "Genres", "narrators": "Narrateurs", "duration": "Durée", @@ -2059,7 +2092,7 @@ "ltr": "De gauche à droite", "rtl": "R à L", "spreadAlignment": "Alignement de la propagation", - "spreadAlignmentHint": "Décaler l'appariement d'une page après la couverture pour les numérisations une par une", + "spreadAlignmentHint": "Décaler l'appariement d'une page après la couverture, pour les numérisations mal alignées", "alignmentNormal": "Normale", "alignmentShifted": "Décalé", "spreadGap": "Écart de propagation", @@ -2269,7 +2302,7 @@ "tokenNarrators": "Narrateur(s), séparés par des virgules", "tokenYear": "Année de publication", "tokenSeries": "Nom de la série", - "tokenSeriesIndex": "Index de la série (complété par des zéros)", + "tokenSeriesIndex": "Tome (complété par des zéros)", "tokenPublisher": "Éditeur", "tokenIsbn": "ISBN-13", "tokenLanguage": "Langue", @@ -2611,7 +2644,7 @@ "newPassword": "Nouveau mot de passe", "usernameInvalid": "Le nom d'utilisateur doit contenir entre 3 et 100 caractères.", "passwordPlaceholder": "Laisser vide pour conserver le mot de passe actuel", - "passwordHint": "Laisser ce champ vide pour conserver le mot de passe actuel.", + "passwordHint": "Laissez ce champ vide pour conserver le mot de passe actuel.", "passwordInvalid": "Le mot de passe doit contenir entre 6 et 128 caractères.", "deviceNotice": "Les appareils utilisant les anciens identifiants doivent être reconnectés ou mis à jour avec un nouveau paquet de plugin téléchargé.", "showPassword": "Afficher le nouveau mot de passe", @@ -2911,7 +2944,9 @@ "clientTypes": { "qbittorrent": "qBittorrent", "transmission": "Transmission", - "deluge": "Deluge" + "deluge": "Deluge", + "nzbget": "NZBGet", + "sabnzbd": "SABnzbd" }, "color": { "label": "Couleur", @@ -2924,10 +2959,13 @@ "baseUrl": "URL de base", "username": "Nom d'utilisateur", "password": "Mot de passe", + "apiKey": "Clé API", "passwordKeep": "Laissez vide pour conserver le mot de passe enregistré", + "apiKeyKeep": "Laissez vide pour conserver la clé API enregistrée", "passwordClear": "Effacer", "passwordKeepAction": "Conserver", "passwordWillClear": "Le mot de passe enregistré sera supprimé à l'enregistrement", + "apiKeyWillClear": "La clé API enregistrée sera supprimée à l'enregistrement", "category": "Catégorie", "categoryHint": "Marque les torrents ajoutés par BookOrbit, pour qu'il n'agisse jamais que sur les siens.", "priority": "Priorité", @@ -2936,6 +2974,7 @@ "allowPrivateAddress": "Autoriser les adresses privées", "allowPrivateAddressHint": "Nécessaire lorsque le client tourne sur votre réseau local ou sur la même machine.", "passwordBrief": "Stocké chiffré.", + "apiKeyBrief": "Disponible dans SABnzbd sous Config > General. Stockée chiffrée.", "useHardlinksBrief": "Permet le partage sans occuper le disque deux fois. Revient à une copie d'un système de fichiers à l'autre." }, "mappings": { @@ -2989,7 +3028,8 @@ "pathNotAbsolute": "Les correspondances de chemins doivent utiliser des chemins absolus des deux côtés", "nameRequired": "Donnez un nom à ce client.", "urlRequired": "Saisissez l'adresse à laquelle BookOrbit doit joindre ce client.", - "mappingRequired": "Ajoutez au moins une correspondance de chemins, pour que BookOrbit sache depuis quel répertoire il peut importer." + "mappingRequired": "Ajoutez au moins une correspondance de chemins, pour que BookOrbit sache depuis quel répertoire il peut importer.", + "apiKeyRequired": "Saisissez la clé API SABnzbd indiquée sous Config > General." }, "encryptionKeyMissing": "BOOK_REQUEST_ENCRYPTION_KEY n'est pas définie, un mot de passe de client ne peut donc pas être enregistré. Générez-en une avec : openssl rand -hex 32", "confirmDelete": { @@ -3007,10 +3047,15 @@ "body": "BookOrbit ne fournit aucune source, une recherche de demande ne trouve donc rien tant que vous n'en ajoutez pas une. Il y a deux façons de procéder.", "bodyOneWay": "BookOrbit ne fournit aucune source, une recherche de demande ne trouve donc rien tant que vous n'en ajoutez pas une.", "responsibility": "Ce qu'indexe une source que vous ajoutez relève de votre responsabilité.", + "prowlarrTitle": "Connecter Prowlarr", + "prowlarrBody": "Gérez plusieurs indexeurs torrent et Usenet via une seule connexion.", + "recommended": "Recommandé", "pluginTitle": "Installer un plugin", "pluginBody": "Un fichier unique qui apprend à BookOrbit à interroger un site précis. Vous le fournissez, puis vous renseignez ses paramètres.", "torznabTitle": "Ajouter un indexeur Torznab", - "torznabBody": "Pointez vers un flux Prowlarr, Jackett ou NZBHydra que vous hébergez déjà. Un par flux." + "torznabBody": "Pointez vers un flux Prowlarr, Jackett ou NZBHydra que vous hébergez déjà. Un par flux.", + "builtInTitle": "Ajouter un indexeur", + "builtInBody": "Indiquez un flux Torznab ou Newznab que vous utilisez déjà. Une configuration par flux." }, "add": "Ajouter un indexeur", "edit": "Modifier l'indexeur", @@ -3029,6 +3074,18 @@ "deleted": "Source supprimée", "unavailable": "Cette installation n'a pas de type d'indexeur « {type} ». Changez le type, ou supprimez son plugin et sa configuration enregistrée.", "pluginFailed": "Le plugin situé dans « {directory} » ne s'est pas chargé : {reason}", + "sources": { + "title": "Sources", + "hint": "Tout ce que BookOrbit peut interroger, regroupé par connexion.", + "add": "Ajouter une source", + "prowlarr": "Connecter Prowlarr", + "prowlarrHint": "Gérez plusieurs indexeurs torrent et Usenet ensemble.", + "direct": "Ajouter Torznab ou Newznab", + "directHint": "Connectez directement un flux compatible.", + "plugin": "Installer un plugin", + "pluginHint": "Ajoutez une implémentation de source spécialisée.", + "activeSummary": "{count, plural, one {# source active} many {# sources actives} other {# sources actives}} : {torrent} torrent, {usenet} Usenet, {direct} en direct" + }, "network": { "title": "Réseau avancé", "hint": "Utile seulement lorsque le chemin par défaut vers cette source ne fonctionne pas. Ce qui est autorisé ne change pas : quelle que soit l'adresse jointe, elle est vérifiée de la même manière.", @@ -3040,14 +3097,16 @@ "proxyBrief": "Un proxy http ou https pour cette source. SOCKS n'est pas pris en charge." }, "types": { - "torznab": "Torznab (Jackett, Prowlarr, NZBHydra)" + "torznab": "Torznab (Jackett, Prowlarr, NZBHydra)", + "newznab": "Newznab" }, "fields": { "name": "Nom", "type": "Type d'indexeur", "baseUrl": "URL de base", "baseUrlHint": { - "torznab": "L'URL du flux torznab, sans la chaîne de requête. Jackett l'affiche sur chaque indexeur sous « Torznab Feed »." + "torznab": "L'URL du flux torznab, sans la chaîne de requête. Jackett l'affiche sur chaque indexeur sous « Torznab Feed ».", + "newznab": "L'URL du site Newznab ou le point d'accès de l'API, sans requête de recherche." }, "credential": { "apiKey": "Clé API", @@ -3093,6 +3152,29 @@ "settings": { "restoreDefault": "Rétablir les valeurs par défaut" }, + "seeding": { + "applyTracker": "Appliquer les objectifs de partage du tracker", + "applyTrackerBrief": "Lorsqu'une valeur manuelle est vide, utiliser un objectif valide communiqué par le tracker. Désactivé, les valeurs vides reprennent les réglages par défaut du client de téléchargement. Les valeurs manuelles s'appliquent toujours.", + "ratio": "Ratio de partage", + "ratioBrief": "Un nombre décimal positif. Vide, la valeur est reprise du tracker ou du client.", + "time": "Durée de partage (minutes)", + "timeBrief": "Un nombre entier positif. Vide, la valeur est reprise du tracker ou du client.", + "clientSupport": "qBittorrent accepte un ratio et une durée totale de partage. Deluge et Transmission n'acceptent que le ratio. Les règles globales du client et la première limite atteinte peuvent arrêter le partage : ces valeurs ne garantissent donc pas que chaque minimum de tracker soit respecté.", + "futureGrabs": "Les modifications s'appliquent aux prochaines récupérations. Les torrents existants ou adoptés peuvent conserver des limites propres au client. Désactiver le repli sur le tracker laisse actifs les réglages par défaut du client ; cela ne signifie pas un partage illimité.", + "reset": "Réinitialiser les paramètres de partage", + "summary": { + "title": "Résumé de la politique", + "ratio": "Ratio", + "time": "Durée de partage", + "manual": "Manuel : {value}", + "tracker": "Repli sur le tracker", + "client": "Valeur par défaut du client" + }, + "errors": { + "ratio": "Saisissez un nombre fini supérieur à zéro, ou laissez ce champ vide.", + "minutes": "Saisissez un nombre entier de 1 à 2 147 483 647, ou laissez ce champ vide." + } + }, "confirmDelete": { "title": "Supprimer cette source ?", "description": "L'adresse, les paramètres et l'identifiant enregistré de {name} sont supprimés. Désactivez-la plutôt pour cesser de l'interroger sans les perdre.", @@ -3119,7 +3201,8 @@ "builtIn": "Intégré", "plugin": "Plugin", "typeDescriptions": { - "torznab": "Votre propre Jackett, Prowlarr ou NZBHydra. Utilise les catégories et les objectifs de partage." + "torznab": "Votre propre Jackett, Prowlarr ou NZBHydra. Utilise les catégories et les objectifs de partage.", + "newznab": "Un indexeur Usenet compatible Newznab. Utilise les catégories et nécessite une clé API." }, "plugins": { "title": "Plugins", @@ -3147,6 +3230,25 @@ "usedBy": "{count, plural, one {utilisé par # source} other {utilisé par # sources} many {utilisé par # sources}}", "unused": "aucune source ne l'utilise encore", "update": "Mettre à jour le plugin", + "checkUpdates": "Rechercher des mises à jour", + "updateCheckComplete": "Recherche de mises à jour des plugins terminée.", + "updateCheckFailed": "Impossible de rechercher les mises à jour des plugins.", + "updateInspectFailed": "La mise à jour publiée du plugin n'a pas pu être vérifiée.", + "reviewUpdate": "Examiner la mise à jour", + "updated": "{label} mis à jour en version {version}.", + "autoUpdate": "Installer automatiquement les mises à jour signées", + "autoUpdateFailed": "Impossible de modifier les mises à jour automatiques de ce plugin.", + "installedVersion": "Version installée", + "updateChannel": "Canal de mises à jour signées", + "signatureVerified": "La source téléchargée correspond à la signature Ed25519 de l'éditeur.", + "updateStates": { + "unsupported": "Mises à jour manuelles", + "unchecked": "Pas encore vérifié", + "current": "À jour", + "available": "Version {version} disponible", + "custom": "Build personnalisé", + "failed": "Échec de la recherche de mises à jour" + }, "wrongType": "Ce fichier est le plugin {found}, pas {expected}.", "replaceTitle": "Remplacer ce plugin ?", "replace": "Remplacer le plugin", @@ -3169,6 +3271,61 @@ }, "posture": "BookOrbit ne fournit ni ne cautionne aucune source d'indexation. Chaque source ici est une source que vous avez configurée, et vous êtes responsable de ce que vous recherchez et téléchargez par son intermédiaire." }, + "managers": { + "add": "Ajouter Prowlarr", + "loading": "Chargement des connexions Prowlarr...", + "managedSources": "{count, plural, one {# indexeur géré} many {# indexeurs gérés} other {# indexeurs gérés}}", + "protocol": { + "torrent": "Torrent", + "usenet": "Usenet" + }, + "saved": "Paramètres Prowlarr enregistrés", + "deleted": "Prowlarr supprimé", + "synced": "Sources Prowlarr synchronisées", + "test": "Tester la connexion", + "sync": "Synchroniser", + "testOk": "Connecté à Prowlarr {version}. {count, plural, one {# source trouvée} many {# sources trouvées} other {# sources trouvées}}.", + "unavailable": "Indisponible", + "priority": "Priorité Prowlarr {priority}", + "toggleSource": "Rechercher avec {name}", + "changeColor": "Changer la couleur de {name}", + "sourceColor": "Couleur de la source", + "sourceColorHint": "Signale les releases renvoyées par {name} dans tout BookOrbit.", + "noSources": "Aucun indexeur torrent ou Usenet compatible n'a été découvert. Synchronisez après en avoir ajouté un dans Prowlarr.", + "unknown": "de version inconnue", + "editorDescription": "Paramètres de connexion et de synchronisation des sources pour Prowlarr.", + "confirmDelete": "Supprimer cette connexion Prowlarr ?", + "deleteConsequence": "La connexion, la clé API chiffrée et toutes les sources synchronisées sont supprimées. Les téléchargements déjà en cours ne sont pas supprimés.", + "fields": { + "name": "Nom", + "color": "Couleur de la connexion", + "colorHint": "Signale ici cette connexion Prowlarr. Chaque indexeur géré a sa propre couleur de release.", + "baseUrl": "URL de base", + "apiKey": "Clé API", + "apiKeyHint": "Disponible dans Prowlarr sous Settings > General > Security. Stockée chiffrée.", + "syncNew": "Activer les sources nouvellement découvertes", + "syncNewHint": "Les nouveaux indexeurs Prowlarr sont interrogeables immédiatement. Les sources que vous désactivez ici le restent après les synchronisations suivantes.", + "autoExpand": "Réessayer sans filtre de catégorie", + "autoExpandHint": "Lorsqu'un indexeur répond correctement mais sans résultat, réessayer une fois sans le filtre de catégorie livres de BookOrbit.", + "inheritSeedLimits": "Utiliser les limites de partage de Prowlarr", + "inheritSeedLimitsHint": "Appliquer aux prochains téléchargements le ratio et la durée de partage configurés sur chaque indexeur torrent, lorsqu'aucune valeur BookOrbit ne les remplace.", + "perIndexerTimeout": "Délai d'attente par indexeur (secondes)", + "perIndexerTimeoutHint": "Temps maximal accordé à une source synchronisée. Les indexeurs lents qui passent par FlareSolverr peuvent demander davantage.", + "overallBudget": "Budget Prowlarr (secondes)", + "overallBudgetHint": "Durée réelle maximale partagée par toutes les sources de cette connexion Prowlarr pendant une recherche." + }, + "errors": { + "load": "Impossible de charger les gestionnaires d'indexeurs", + "nameTaken": "Une connexion Prowlarr porte déjà ce nom", + "urlPrivate": "Cette adresse est sur un réseau privé ou local. Activez « Autoriser les adresses privées » si Prowlarr tourne sur ce réseau.", + "required": "Saisissez un nom, une URL de base et une clé API.", + "save": "Impossible d'enregistrer la connexion Prowlarr", + "delete": "Impossible de supprimer la connexion Prowlarr", + "test": "Impossible de joindre Prowlarr", + "sync": "Impossible de synchroniser les sources Prowlarr", + "source": "Impossible de modifier cette source" + } + }, "automation": { "title": "Automatisation", "pipeline": "Quand un téléchargement se termine, il passe par le Book Dock, où son titre et son auteur sont lus pour que le fichier puisse être nommé et classé correctement, puis il rejoint tout seul la bibliothèque de destination de la demande. Il ne s'arrête pour vous que si la vérification des imports est active et que le fichier ne correspond pas à ce qui avait été demandé.", @@ -3197,6 +3354,7 @@ "autoGrabDisabled": "Les téléchargements automatiques sont désactivés", "minScore": "Score minimal d'une release", "minScoreHint": "Une release dont le score est inférieur n'est jamais téléchargée automatiquement. Les scores vont jusqu'à 100, et la correspondance du titre et de l'auteur en constitue l'essentiel, devant le format, la taille du fichier, les seeders et la priorité de la source. Si rien n'atteint un score suffisant, la demande attend qu'une personne choisisse une release à la main, en indiquant ce qui l'a arrêtée.", + "minScoreHintV2": "Une release dont le score est inférieur n'est jamais téléchargée automatiquement. Les scores vont jusqu'à 100. La pertinence du titre et de l'auteur compte le plus, suivie du format et d'une taille de fichier plausible ; l'état de l'essaim et le freeleech entrent en compte lorsqu'une source les fournit. Si rien n'atteint un score suffisant, la demande attend qu'une personne choisisse une release à la main et indique pourquoi elle s'est arrêtée.", "autoRetry": "Essayer la release suivante après un échec", "autoRetryHint": "Quand un téléchargement automatique échoue, la release suivante est essayée plutôt que d'abandonner. Cela couvre une source qui refuse de livrer le fichier comme un téléchargement qui meurt en cours de route. Cela ne vaut que pour les releases choisies par BookOrbit lui-même : une release choisie à la main par un approbateur reste en échec et l'attend.", "maxAttempts": "Tentatives par demande", @@ -3241,6 +3399,9 @@ }, "profiles": { "title": "Profils de release", + "effectiveRule": "Règle de téléchargement automatique : premier palier correspondant, puis meilleur score (minimum {score}).", + "summary": "Les releases hors profil restent disponibles pour une sélection manuelle. Sans palier, les releases sont classées selon leur seul score.", + "howProfiles": "Fonctionnement des profils de release", "hint": "L'édition que vous voulez, la meilleure d'abord. Une release est confrontée à ces paliers de haut en bas et prend le premier auquel elle satisfait. C'est là-dedans que le téléchargement sans surveillance choisit : une release qui ne correspond à aucun palier n'est jamais téléchargée automatiquement, même si elle reste proposée dans le sélecteur pour que vous l'envoyiez à la main. Laissez un support vide et rien n'est filtré ni refusé : les releases sont alors classées par leur seul score.", "bitrateNote": "Un débit plancher écarte une release qui en annonce un plus faible. La plupart des sources ne mesurent que très peu de leurs releases, et une release non mesurée n'est pas écartée : ce réglage restreint donc moins qu'il n'y paraît.", "empty": "Aucun profil. Les releases de ce support sont classées par leur seul score.", @@ -3255,6 +3416,10 @@ "anyLayout": "Indifférent", "minBitrate": "Débit min. (kbps)", "minSeeders": "Seeders min.", + "torrentConditions": "Conditions torrent", + "nonTorrentConditions": "Les conditions de seeders, de freeleech et de VIP ne s'appliquent pas aux sources sélectionnées.", + "incompatibleTorrentConditions": "Ce palier hors torrent conserve des conditions torrent enregistrées. Elles peuvent être ignorées ou empêcher le palier de correspondre.", + "removeTorrentConditions": "Supprimer les conditions torrent", "channels": "Canaux", "anyChannels": "Indifférent", "mono": "Mono", @@ -3280,6 +3445,7 @@ "connection": "Connexion", "search": "Ce qui est recherché", "access": "Accès", + "seeding": "Partage", "availability": "Disponibilité", "behaviour": "Comportement" }, @@ -3291,7 +3457,9 @@ "clientTypeDescriptions": { "qbittorrent": "Votre propre qBittorrent. Demande une adresse et un compte.", "transmission": "Votre propre Transmission. Il n'a pas de catégories : la catégorie devient un sous-dossier de son répertoire de téléchargement.", - "deluge": "Votre propre Deluge. Connectez-vous avec le mot de passe de l'interface web ; la catégorie nécessite le plugin Label activé." + "deluge": "Votre propre Deluge. Connectez-vous avec le mot de passe de l'interface web ; la catégorie nécessite le plugin Label activé.", + "nzbget": "Votre propre NZBGet. BookOrbit envoie les fichiers NZB via son API JSON-RPC.", + "sabnzbd": "Votre propre SABnzbd. BookOrbit envoie les fichiers NZB à l'aide de sa clé API." }, "searchHealth": { "failingOnce": "La dernière recherche a échoué", @@ -3364,12 +3532,12 @@ } }, "achievements": { - "title": "Réalisations", + "title": "Succès", "tiersCount": "Niveaux {earned} / {total}", - "loadFailed": "Échec du chargement des réalisations", + "loadFailed": "Échec du chargement des succès", "tryAgain": "Réessayez", - "noMatchFilter": "Aucune réalisation ne correspond à ce filtre", - "secretAchievement": "Réalisation secrète", + "noMatchFilter": "Aucun succès ne correspond à ce filtre", + "secretAchievement": "Succès secret", "earnedOn": "Vous avez gagné {date}", "whileReading": "En lisant « {title} »", "tierProgress": "Niveau {earned} sur {total}", @@ -3468,8 +3636,11 @@ "trend": "Tendance de lecture quotidienne", "emptyTitle": "Aucune activité de lecture pendant cette période", "noData": "Aucune donnée de lecture enregistrée pour cette période.", + "sessionCount": "{count, plural, one {# session} many {# sessions} other {# sessions}}", "sourceNames": { "web": "Lecteur web", + "ios": "Application iOS", + "watchos": "Apple Watch", "koreader": "KOReader", "manual": "Manuel", "kobo": "Kobo", @@ -3547,6 +3718,7 @@ "presetClearAll": "Tout effacer", "permissionGroups": { "content": "Contenu", + "podcasts": "Podcasts", "devicesAccess": "Appareils et accès", "email": "Courriel", "administration": "Administration", @@ -3616,7 +3788,7 @@ "nameRequired": "Le nom complet est obligatoire", "usernameRequired": "Le nom d'utilisateur est obligatoire" }, - "drawerDescription": "Modifier le profil, les accès aux bibliothèques, les autorisations et les restrictions de ce compte.", + "drawerDescription": "Modifiez le profil, les accès aux bibliothèques, les autorisations et les restrictions de ce compte.", "createHint": "Un nouveau compte ne détient aucune autorisation tant que vous ne lui en accordez pas.", "sectionsLabel": "Paramètres du compte", "sections": { @@ -3717,7 +3889,7 @@ }, "selfRegistration": { "title": "Auto-inscription", - "subtitle": "Définir si les visiteurs peuvent créer leurs propres comptes.", + "subtitle": "Définissez si les visiteurs peuvent créer leur propre compte.", "label": "Autoriser l'auto-inscription", "hint": "Lorsque cette option est activée, la page de connexion affiche un lien pour créer un compte.", "enabledNotice": "Les nouveaux comptes ont par défaut uniquement les accès à la bibliothèque ci-dessous. Définissez les permissions nécessaires pour qu'ils puissent utiliser des fonctionnalités protégées.", @@ -4127,6 +4299,8 @@ "User": "Utilisateur", "Library": "Bibliothèque", "Book": "Livre", + "Podcast": "Podcast", + "PodcastEpisode": "Épisode de podcast", "Collection": "Collection", "SmartScope": "Liste intelligente", "BookDockFile": "Fichier Book Dock", @@ -4190,6 +4364,18 @@ "LibraryAccessRevoke": "Révoquer l'accès à la bibliothèque", "LibraryWriteMetadataToFiles": "Écrire des métadonnées dans des fichiers", "LibraryBulkRename": "Renommer les fichiers de la bibliothèque", + "LibraryRecomputeAddedAt": "Recalculer la date d'ajout", + "PodcastCreate": "Créer un podcast", + "PodcastUpdate": "Mettre à jour un podcast", + "PodcastArchive": "Archiver un podcast", + "PodcastRestore": "Restaurer un podcast", + "PodcastPurge": "Purger un podcast", + "PodcastMerge": "Fusionner des podcasts", + "PodcastDownload": "Télécharger un épisode de podcast", + "PodcastDownloadRemove": "Supprimer un téléchargement de podcast", + "PodcastRetentionUpdate": "Mettre à jour la rétention des podcasts", + "PodcastOpmlImport": "Importer un OPML de podcasts", + "PodcastOpmlExport": "Exporter l'OPML des podcasts", "BookUpload": "Envoyer le livre", "BookMetadataUpdate": "Mettre à jour les métadonnées du livre", "BookMetadataLocksUpdate": "Mettre à jour les verrous des métadonnées", @@ -4345,7 +4531,7 @@ } }, "resetPassword": { - "subtitle": "Définir un nouveau mot de passe", + "subtitle": "Définissez un nouveau mot de passe", "saving": "Sauvegarde...", "setNewPassword": "Définir un nouveau mot de passe", "errors": { @@ -4597,6 +4783,10 @@ "actions": { "read": "Marquer comme lu", "listen": "Écoute", + "startReading": "Commencer la lecture", + "continueReading": "Reprendre la lecture", + "startListening": "Commencer l'écoute", + "continueListening": "Reprendre l'écoute", "peek": "Coup d'œil", "quickView": "Aperçu rapide", "details": "Détails", @@ -4610,7 +4800,8 @@ "setStatus": "Définir le statut", "sendViaEmail": "Envoyer par e-mail", "rate": "Noter {star}", - "openAs": "Ouvrir en tant que {format}" + "openAs": "Ouvrir en tant que {format}", + "openReadAlong": "Ouvrir l'EPUB à lecture synchronisée" }, "readStatus": { "unread": "Non lu", @@ -4640,10 +4831,11 @@ "ascending": "Ascendant", "descending": "Décroissant", "fields": { + "relevance": "Pertinence", "author": "Auteur", "title": "Titre", "series": "Séries", - "seriesIndex": "Séries #", + "seriesIndex": "Tome", "addedAt": "Date d'ajout", "updatedAt": "Date de modification", "publishedDate": "Date de publication", @@ -4679,7 +4871,7 @@ "publisher": "Éditeur", "language": "Langue", "series": "Séries", - "seriesIndex": "Index de la série", + "seriesIndex": "Tome", "publishedDate": "Date de publication", "publishedYear": "Année de publication", "pageCount": "Nombre de pages", @@ -5010,7 +5202,7 @@ }, "coverSearch": { "title": "Recherche en ligne", - "subtitle": "Rechercher des couvertures de livres", + "subtitle": "Recherchez des couvertures de livres", "titleField": "Titre", "authorField": "Auteur", "sourceField": "Source", @@ -5055,6 +5247,26 @@ "untitled": "Sans titre", "metadataScore": "Score des métadonnées", "primaryFormat": "Format principal", + "readAloudSync": { + "title": "Synchronisation de la progression audio-texte", + "state": { + "enabled": "Activée", + "disabled": "Désactivée", + "unavailable": "Indisponible" + }, + "enabledDescription": "Les positions du livre audio, du lecteur web, de Kobo et de KOReader restent synchronisées.", + "disabledDescription": "Chaque format conserve sa propre position de lecture.", + "reason": { + "no_media_overlay_epub": "Un EPUB à lecture synchronisée avec des media overlays est nécessaire.", + "no_audio_files": "Des fichiers de livre audio autonomes correspondants sont nécessaires.", + "missing_duration": "Les métadonnées de durée audio sont incomplètes.", + "durationMismatch": "Les durées ne concordent pas suffisamment : livre audio {audio}, EPUB à lecture synchronisée {overlay}." + }, + "enable": "Activer", + "disable": "Désactiver", + "saving": "Enregistrement...", + "saveFailed": "Impossible de mettre à jour la synchronisation de la progression audio-texte." + }, "openIn": "Ouvrir dans {provider}", "showLess": "Afficher moins", "showMore": "Afficher plus", @@ -5170,8 +5382,8 @@ "autoFillTooltip": "Remplissez automatiquement les champs en utilisant vos préférences de métadonnées", "lockAll": "Verrouiller tout", "lockAllTooltip": "Verrouiller tous les champs", - "unlockAll": "Débloquez tout", - "unlockAllTooltip": "Débloquez tous les champs", + "unlockAll": "Déverrouiller tout", + "unlockAllTooltip": "Déverrouiller tous les champs", "saving": "Sauvegarde...", "fileWriteBackDetails": "Détails de réécriture du fichier", "fileWriteBack": "Réécriture de fichier", @@ -5202,9 +5414,9 @@ "abridgedLabel": "Abrégé", "providerIds": "ID de fournisseur", "comicDetails": "Détails de la bande dessinée", - "comicIssueNumberLabel": "Numéro de problème", + "comicIssueNumberLabel": "Numéro", "comicVolumeLabel": "Volume", - "comicStoryArcsLabel": "Arcs d'histoire", + "comicStoryArcsLabel": "Arcs narratifs", "comicPencillersLabel": "Crayonneurs", "comicInkersLabel": "Encreurs", "comicColoristsLabel": "Coloristes", @@ -5215,7 +5427,7 @@ "comicLocationsLabel": "Emplacements", "customMetadata": "Métadonnées personnalisées", "descriptionLabel": "Descriptif", - "unlockField": "Débloquez {field}", + "unlockField": "Déverrouiller {field}", "lockField": "Verrouiller {field}", "diffPanel": { "untitled": "Sans titre", @@ -5847,6 +6059,8 @@ "table": { "title": "Séances", "sourceWeb": "Web", + "sourceIos": "Application iOS", + "sourceWatchos": "Apple Watch", "sourceManual": "Manuel", "colDate": "Date", "colDateMobile": "Date", @@ -5905,7 +6119,7 @@ "moveUp": "Monter", "moveDown": "Descendre", "removeSeries": "Supprimer la série", - "seriesIndexLabel": "Position dans les séries", + "seriesIndexLabel": "Tome", "invalidSeriesIndex": "Saisissez des chiffres avec au plus un point décimal, par exemple 5.10.", "totalLabel": "Livres dans la série", "totalPlaceholder": "sur", @@ -5958,7 +6172,7 @@ }, "locks": { "lockAll": "Verrouiller tous les champs", - "unlockAll": "Débloquez tous les champs", + "unlockAll": "Déverrouiller tous les champs", "lockField": "Champ de verrouillage", "unlockField": "Champ de déverrouillage", "clickToLock": "Cliquez pour verrouiller", @@ -5984,6 +6198,7 @@ "unread": "Non lu" }, "series": { + "seriesRow": "Ligne de série", "bookCount": "{count, plural, =0 {(pas de livres)} one {(# livre)} other {(# livres)} many {(# livres)}}", "readOfCount": "{read} sur {total} lu" }, @@ -6173,7 +6388,7 @@ "isbn13": "ISBN-13", "isbn10": "ISBN-10", "series": "Série", - "seriesIndex": "N° dans la série", + "seriesIndex": "Tome", "genres": "Genres", "genresCommaSeparated": "Genres (séparés par des virgules)", "description": "Descriptif" @@ -6710,7 +6925,10 @@ "grab": "Télécharger la release", "viewFiles": "Voir les fichiers", "hideFiles": "Masquer les fichiers", + "viewDetails": "À propos du contenu", + "hideDetails": "Masquer les détails", "inspectingFiles": "Lecture de la liste des fichiers de la release...", + "inspectingNzb": "Récupération et validation du NZB...", "inspectingShort": "Vérification des fichiers...", "inspectionFailed": "La liste des fichiers de cette release n'a pas pu être lue.", "manifest": { @@ -6720,6 +6938,7 @@ "multipleBooks": "Cette release contient {count} livres distincts. Une fois téléchargée, il vous sera demandé lequel importer.", "multiPartBook": "{count, plural, one {Cette release est un seul livre composé de # fichier.} other {Cette release est un seul livre composé de # fichiers, importés ensemble comme un livre unique.} many {Cette release est un seul livre composé de # fichiers, importés ensemble comme un livre unique.}}", "metadataUnavailable": "C'est un lien magnet. Sa liste de fichiers reste indisponible tant qu'un client torrent n'a pas récupéré les métadonnées auprès de l'essaim.", + "usenetMetadataUnavailable": "Il s'agit d'une release Usenet. Sa liste de fichiers définitive reste indisponible tant que NZBGet ne l'a pas téléchargée et post-traitée.", "bookFile": "Fichier de livre", "extraFile": "Supplément", "truncated": "Affichage de {shown} fichiers sur {total}.", @@ -6734,6 +6953,7 @@ } }, "manual": "Coller un lien à la place", + "manualTorrent": "Utiliser plutôt un magnet ou un .torrent", "indexer": "Indexeur", "size": "Taille", "seeders": "Seeders", @@ -6760,6 +6980,27 @@ "vipOnly": "VIP uniquement", "hideVipOnly": "Masquer les releases VIP uniquement", "noneMatchedProfile": "Aucune release ici ne correspond à votre profil pour ce support : aucune ne sera donc téléchargée automatiquement. Vous pouvez toujours en envoyer une à la main. Pour élargir, ajoutez sous les vôtres un palier avec moins de conditions.", + "profileMismatch": { + "summary": "{count, plural, one {# release a été trouvée, mais le téléchargement automatique l'ignorera, car elle ne correspond à aucun palier du profil {medium}.} many {# releases ont été trouvées, mais le téléchargement automatique les ignorera, car aucune ne correspond à un palier du profil {medium}.} other {# releases ont été trouvées, mais le téléchargement automatique les ignorera, car aucune ne correspond à un palier du profil {medium}.}} Le score de correspondance et les règles du profil sont des vérifications distinctes. Vous pouvez toujours cliquer sur Envoyer.", + "review": "Vérifier le profil {medium}", + "row": "Le téléchargement automatique l'ignorera. Palier le plus proche : {tier}. {reasons}", + "failures": { + "formatUnknown": "{source} n'a pas indiqué de format ; ce palier exige {expected}.", + "format": "Le format est {actual} ; ce palier exige {expected}.", + "fileLayoutUnknown": "{source} n'a pas indiqué de nombre de fichiers ; ce palier exige {expected}.", + "fileLayout": "Organisation des fichiers : {actual} ; ce palier exige {expected}.", + "bitrate": "Le débit est de {actual} kbit/s ; ce palier exige au moins {expected} kbit/s.", + "channels": "L'audio est en {actual} ; ce palier exige {expected}.", + "languageUnknown": "{source} n'a pas indiqué de langue ; ce palier exige {expected}.", + "language": "La langue est {actual} ; ce palier exige {expected}.", + "source": "Cette source n'est pas incluse dans le palier.", + "seeders": "Cette release a {actual} seeders ; ce palier en exige au moins {expected}.", + "sizeUnknown": "{source} n'a pas indiqué de taille ; ce palier autorise jusqu'à {expected}.", + "size": "La taille est de {actual} ; ce palier autorise jusqu'à {expected}.", + "freeleech": "Ce palier exige le freeleech.", + "vipOnly": "Ce palier exclut les releases réservées aux VIP." + } + }, "alreadyGrabbed": "Déjà récupérée", "freeleechLabel": "Freeleech", "published": "Publiée", @@ -6800,6 +7041,7 @@ "onlyBestMatch": "C'est la seule release qui a correspondu.", "tiedWithBest": "{count, plural, one {# autre release a obtenu le même score} other {# autres releases ont obtenu le même score} many {# autres releases ont obtenu le même score}}", "inspectionFailedHint": "Elle n'a pas été envoyée à un client de téléchargement. Réessayez, ou utilisez « Coller un lien à la place ».", + "inspectionFailedHintGeneric": "Elle n'a pas été envoyée à un client de téléchargement. Réessayez, ou choisissez une autre release.", "mediumUncovered": "Aucune source ne propose ce type de livre.", "mediumUncoveredHint": "Aucun de vos indexeurs actifs ne le couvre. Ajoutez-en un qui le fasse, ou collez un lien vous-même.", "noSourcesConfigured": "Aucune source de recherche n'est encore configurée.", @@ -6811,6 +7053,7 @@ "reviewSources": "Revoir les sources", "protocol": { "torrent": "Torrent", + "usenet": "Usenet", "direct": "Téléchargement direct", "directPill": "Direct" } @@ -7044,6 +7287,7 @@ }, "createDialog": { "title": "Nouvelle collection", + "podcastTitle": "Nouvelle collection de podcasts", "namePlaceholder": "par ex. Favoris" }, "editDialog": { @@ -7099,7 +7343,7 @@ "uploadPartialToast": "{uploaded} envoyé, {failed} a échoué", "bookDock": "Book Dock", "statistics": "Statistiques", - "achievements": "Réalisations", + "achievements": "Succès", "annotations": "Annotations", "uploadBooks": "Envoyer des livres", "appearance": "Apparence", @@ -7148,6 +7392,10 @@ }, "support": "Prise en charge de BookOrbit", "supportAria": "Soutenez BookOrbit sur Ko-fi", + "appLinks": { + "ios": "Télécharger l'application iOS", + "android": "Application Android bientôt disponible" + }, "sectionHeader": { "add": "Ajouter", "showAll": "Tout afficher", @@ -7169,6 +7417,30 @@ "seeAllLibraries": "Voir toutes les bibliothèques ({count})", "seeAllSmartScopes": "Voir toutes les listes intelligentes ({count})", "seeAllCollections": "Voir toutes les collections ({count})", + "podcasts": "Podcasts", + "newPodcastLibrary": "Nouvelle bibliothèque de podcasts", + "noPodcastLibraries": "Aucune bibliothèque de podcasts pour l'instant", + "filterPodcastLibraries": "Filtrer les bibliothèques de podcasts", + "filterPodcastLibrariesPlaceholder": "Filtrer les bibliothèques de podcasts...", + "seeAllPodcastLibraries": "Voir toutes les bibliothèques de podcasts ({count})", + "podcastScopes": "Playlists intelligentes de podcasts", + "newPodcastScope": "Nouvelle playlist intelligente de podcasts", + "noPodcastScopes": "Aucune playlist intelligente de podcasts pour l'instant", + "filterPodcastScopes": "Filtrer les playlists intelligentes de podcasts", + "filterPodcastScopesPlaceholder": "Filtrer les playlists intelligentes de podcasts...", + "seeAllPodcastScopes": "Voir toutes les playlists intelligentes de podcasts ({count})", + "podcastCollections": "Collections de podcasts", + "newPodcastCollection": "Nouvelle collection de podcasts", + "noPodcastCollections": "Aucune collection de podcasts pour l'instant", + "filterPodcastCollections": "Filtrer les collections de podcasts", + "filterPodcastCollectionsPlaceholder": "Filtrer les collections de podcasts...", + "seeAllPodcastCollections": "Voir toutes les collections de podcasts ({count})", + "queue": "File d'attente", + "mode": { + "books": "Livres", + "podcasts": "Podcasts", + "switcherAria": "Basculer entre livres et podcasts" + }, "updateAvailable": "Mettre à jour {version}", "updateTooltip": "Mise à jour {version} disponible", "openUpdateRelease": "Ouvrir la version {version} sur GitHub", @@ -7182,7 +7454,15 @@ "dropped": "{name} déposé à la position {position} sur {total}", "cancelled": "Réorganisation annulée. {name} est revenu à la position {position} sur {total}.", "filteredHint": "Effacez le filtre pour réorganiser" - } + }, + "podcastImportProgress": "{processed} / {total} fichiers", + "podcastImportCounting": "Comptage des fichiers...", + "playlists": "Playlists intelligentes", + "newPlaylist": "Nouvelle playlist intelligente", + "noPlaylists": "Aucune playlist intelligente pour l'instant", + "filterPlaylists": "Filtrer les playlists intelligentes", + "filterPlaylistsPlaceholder": "Filtrer les playlists intelligentes...", + "seeAllPlaylists": "Voir toutes les playlists intelligentes ({count})" }, "selectionActionBar": { "setReadingStatus": "Définir le statut de lecture", @@ -7199,7 +7479,7 @@ "reExtractCover": "Réextraire la couverture", "metadataLock": "Verrouillage des métadonnées", "lockAll": "Verrouiller tout", - "unlockAll": "Débloquez tout", + "unlockAll": "Déverrouiller tout", "exportMetadata": "Exporter les métadonnées", "deleteSelected": "Supprimer la sélection", "exitSelection": "Quitter la sélection", @@ -7223,8 +7503,8 @@ "columnVisibilityHint": "Utilisez le panneau de visibilité des colonnes dans l'en-tête du tableau pour afficher ou masquer les colonnes.", "columnVisibilityMobileHint": "La visibilité des colonnes peut être gérée depuis l'en-tête du tableau.", "searchPlaceholder": "Rechercher un titre, un auteur, une série, un narrateur...", - "clearSearch": "Clear search", - "closeSearch": "Close search", + "clearSearch": "Effacer la recherche", + "closeSearch": "Fermer la recherche", "mobileSearch": { "description": "Recherchez des éléments par titre, auteur, série ou narrateur.", "done": "Terminé" @@ -7272,13 +7552,13 @@ }, "entityNotFound": { "title": "{entity} introuvable", - "description": "{entity} : cet élément n'existe pas ou a été supprimé.", + "description": "Cet élément de type {entity} n'existe pas ou a été supprimé.", "goBack": "Retourner" }, "media": { "volume": "Volume", - "mute": "Mute", - "unmute": "Unmute" + "mute": "Couper le son", + "unmute": "Rétablir le son" }, "themePicker": { "light": "Clair", @@ -7306,7 +7586,11 @@ "sidebar": { "title": "Barre latérale", "mobileDescription": "Affiche la barre latérale mobile.", - "toggle": "Basculer la barre latérale" + "toggle": "Basculer la barre latérale", + "collapse": "Réduire la barre latérale", + "expand": "Développer la barre latérale", + "open": "Ouvrir la barre latérale", + "close": "Fermer la barre latérale" }, "chipInput": { "typeAndEnter": "Tapez et appuyez sur Entrée pour ajouter", @@ -7324,7 +7608,8 @@ "sort": { "custom": "Ordre personnalisé", "name": "Nom", - "bookCount": "Nombre de livres" + "bookCount": "Nombre de livres", + "showCount": "Nombre d'émissions" }, "ascending": "Ascendant", "descending": "Décroissant", @@ -7333,9 +7618,33 @@ "noMatches": "Aucun résultat", "noMatchesHint": "Essayez un autre terme de recherche.", "bookCount": "Livres : {count}", + "showCount": "Émissions : {count}", "librariesEmptyHint": "Créez une bibliothèque pour commencer à ajouter des livres.", + "podcastLibrariesEmptyHint": "Créez une bibliothèque de podcasts pour commencer à suivre des émissions.", "smartScopesEmptyHint": "Les listes intelligentes enregistrent un ensemble de filtres que vous utilisez souvent.", "collectionsEmptyHint": "Les collections regroupent les livres que vous choisissez à la main." + }, + "legalNotices": { + "about": "À propos de BookOrbit", + "trigger": "Mentions légales", + "title": "À propos de BookOrbit", + "description": "Crédits, licence et code source de BookOrbit.", + "poweredBy": "Propulsé par BookOrbit", + "originalDevelopment": "Ce logiciel contient des éléments développés à l'origine sous le nom de BookOrbit.", + "copyright": "Copyright (C) 2025–2026 neon.", + "contributors": "Des droits d'auteur supplémentaires appartiennent aux contributeurs respectifs de BookOrbit.", + "licenseSummary": "Distribué sous la GNU Affero General Public License, version 3 uniquement, avec des conditions supplémentaires. Ce logiciel est fourni sans garantie. Vous pouvez le redistribuer et le modifier selon ces conditions.", + "sourceCode": "Code source", + "license": "Licence AGPLv3", + "additionalTerms": "Conditions supplémentaires" + }, + "confirmDialog": { + "typeToConfirm": "Saisissez « {phrase} » pour confirmer" + }, + "formSheet": { + "discardTitle": "Abandonner les modifications ?", + "discardDescription": "Vos modifications non enregistrées seront perdues.", + "discardConfirm": "Abandonner" } }, "customIcons": { @@ -7383,6 +7692,7 @@ "empty": { "continueReading": "Aucun livre en cours pour le moment. Commencez à en lire un pour le voir ici.", "continueListening": "Aucun livre audio en cours pour le moment. Commencez à en écouter un pour le voir ici.", + "continuePodcasts": "Aucun épisode de podcast en cours pour l'instant. Commencez-en un pour le voir ici.", "wantToRead": "Aucun livre marqué « Je veux lire » pour l'instant.", "upNextInSeries": "Pas encore de choix pour la prochaine série. Terminez un volume pour faire surface le suivant.", "recentlyAdded": "Aucun livre dans votre bibliothèque pour l'instant.", @@ -7414,6 +7724,7 @@ "recentlyAdded": "Ajouté récemment", "continueReading": "Poursuivre la lecture", "continueListening": "Poursuivre l'écoute", + "continuePodcasts": "Poursuivre les podcasts", "wantToRead": "À lire", "upNextInSeries": "Suite de la série", "random": "Découvrez quelque chose de nouveau", @@ -7425,7 +7736,7 @@ "wide": "Rangées larges", "wideDescription": "Afficher une étagère par ligne.", "twoColumns": "Deux colonnes", - "twoColumnsDescription": "Afficher une étagère par ligne." + "twoColumnsDescription": "Afficher deux étagères par ligne." }, "libraryScope": { "title": "Bibliothèques du tableau de bord", @@ -7744,14 +8055,14 @@ } }, "errors": { - "network": "Could not reach BookOrbit. Check your connection, then try again.", + "network": "Impossible de joindre BookOrbit. Vérifiez votre connexion, puis réessayez.", "codes": { - "PODCAST_LOCAL_NO_REFRESH": "This show has no feed, so there is nothing to refresh.", - "PODCAST_LOCAL_NO_DOWNLOAD": "This episode is one of your own files, so there is nothing to download. Your copy is already the only one.", - "PODCAST_LOCAL_FILE_NOT_REMOVABLE": "This episode is one of your own files, so BookOrbit will not delete it. Remove it from the folder yourself.", - "PODCAST_LOCAL_MEDIA_MISSING": "The only copy of this episode is no longer on disk, so it cannot be played.", - "PODCAST_LOCAL_FOLDER_EMPTY": "This folder holds no audio BookOrbit can import, so it cannot become a show.", - "PODCAST_STORAGE_FULL": "This podcast library is out of storage. Free some space or raise its quota, then try again. Files that belong to local shows are never removed to make room." + "PODCAST_LOCAL_NO_REFRESH": "Cette émission n'a pas de flux : il n'y a rien à actualiser.", + "PODCAST_LOCAL_NO_DOWNLOAD": "Cet épisode est l'un de vos propres fichiers : il n'y a rien à télécharger. Votre copie est déjà la seule.", + "PODCAST_LOCAL_FILE_NOT_REMOVABLE": "Cet épisode est l'un de vos propres fichiers : BookOrbit ne le supprimera pas. Retirez-le vous-même du dossier.", + "PODCAST_LOCAL_MEDIA_MISSING": "La seule copie de cet épisode n'est plus sur le disque : il ne peut pas être lu.", + "PODCAST_LOCAL_FOLDER_EMPTY": "Ce dossier ne contient aucun fichier audio que BookOrbit puisse importer : il ne peut pas devenir une émission.", + "PODCAST_STORAGE_FULL": "Cette bibliothèque de podcasts n'a plus d'espace de stockage. Libérez de l'espace ou augmentez son quota, puis réessayez. Les fichiers des émissions locales ne sont jamais supprimés pour faire de la place." } }, "hardcover": { @@ -8019,7 +8330,7 @@ }, "folders": { "title": "Analyser les dossiers", - "description": "Ajoutez un ou plusieurs répertoires pour rechercher des livres.", + "description": "Ajoutez un ou plusieurs répertoires à analyser pour y trouver des livres.", "browseAdd": "Parcourir et ajouter un dossier", "browseTitle": "Parcourir les dossiers du serveur", "browseDescription": "Sélectionnez un ou plusieurs dossiers sans quitter le navigateur.", @@ -8040,7 +8351,16 @@ "noneAdded": "Aucun dossier ajouté pour l'instant", "runPrescanHint": "Exécutez une pré-analyse pour valider les chemins avant de les enregistrer.", "scanning": "Analyse en cours...", - "prescan": "Pré-analyse" + "prescan": "Pré-analyse", + "local": { + "title": "Dossiers de podcasts existants", + "optional": "Facultatif", + "description": "Les dossiers dans lesquels vous rangez déjà des podcasts. BookOrbit les lit là où ils sont, et n'y renomme, ne déplace ni ne supprime jamais rien.", + "addTitle": "Ajouter un dossier de podcasts existant", + "addDescription": "Chaque dossier situé directement à l'intérieur devient une émission.", + "add": "Ajouter un autre dossier", + "remove": "Retirer {folder}" + } }, "scanner": { "scanMode": { @@ -8057,6 +8377,49 @@ "hint": "Traite chaque fichier comme un livre individuel. Idéal pour les bibliothèques avec un format par titre. Évitez si vos livres audio s'étendent sur plusieurs fichiers." } }, + "addedAt": { + "title": "Date d'ajout", + "hint": "Choisissez ce que reflète la « date d'ajout » d'un livre. Ce choix s'applique aux livres importés à partir de maintenant.", + "options": { + "imported": { + "title": "Date d'import", + "hint": "La date à laquelle BookOrbit a importé le livre pour la première fois. C'est la valeur par défaut." + }, + "file_modified": { + "title": "Date de modification du fichier", + "hint": "La date de dernière modification du fichier (mtime), souvent conservée lors d'une copie." + }, + "file_created": { + "title": "Date de création du fichier", + "hint": "Le moment où le fichier est arrivé sur le disque (birthtime). Se rabat sur la date de modification sur les systèmes de fichiers qui n'enregistrent pas la date de création." + } + }, + "recompute": "Recalculer maintenant", + "recomputing": "Recalcul...", + "recomputeHint": "Mettre à jour la date d'ajout des livres existants selon ce paramètre.", + "recomputeSaveFirst": "Enregistrez d'abord vos modifications, puis recalculez les livres existants.", + "backgroundConfirm": "Recalculer les dates des livres existants ? L'opération s'exécute en arrière-plan et vous pouvez fermer cet éditeur. Les livres dont les fichiers sont illisibles conservent leur date actuelle.", + "progressSummary": "{processed} traités sur {total} : {updated} mis à jour, {unchanged} inchangés, {skipped} ignorés, {failed} en échec.", + "failedBooksHint": "Les livres en échec ont conservé leur date. Vérifiez l'accès aux fichiers, puis relancez le recalcul pour réessayer.", + "jobStatus": { + "running": "Recalcul des dates en arrière-plan.", + "completed": "Recalcul des dates terminé.", + "failed": "Le recalcul s'est arrêté avant la fin. Les modifications effectuées ont été conservées ; vous pouvez le relancer sans risque." + }, + "errors": { + "sourceImported": "Enregistrez une source d'horodatage de fichier avant de recalculer les dates.", + "alreadyRunning": "Un recalcul est déjà en cours pour cette bibliothèque.", + "busy": "D'autres recalculs sont en cours. Réessayez dans un instant.", + "requestFailed": "Impossible de joindre le service de recalcul. Fermez et rouvrez cet éditeur pour vérifier son état.", + "interrupted": "L'état de la tâche n'est plus disponible. Elle a peut-être été interrompue par un redémarrage du serveur. Vous pouvez relancer le recalcul sans risque." + }, + "failureSample": "Livre {bookId} : {reason}", + "failureReasons": { + "file_unavailable": "Un fichier de contenu n'a pas pu être lu.", + "unsafe_path": "Un fichier de contenu se trouve hors du dossier de bibliothèque autorisé.", + "database_error": "La mise à jour de la base de données a échoué." + } + }, "allowedFormats": { "title": "Formats autorisés", "allowAll": "Autoriser tout", @@ -8680,8 +9043,8 @@ "description": "Lorsque l'envoi d'un livre à une adresse e-mail réussit ou échoue." }, "achievements": { - "label": "Réalisations", - "description": "Lorsque vous débloquez une nouvelle réalisation de lecture." + "label": "Succès", + "description": "Lorsque vous débloquez un nouveau succès de lecture." }, "bookRequests": { "label": "Demandes de livres", @@ -8778,6 +9141,12 @@ "keyboardShortcutsHint": "Raccourcis clavier (?)", "enterFullscreen": "Entrez en plein écran", "exitFullscreen": "Quitter le plein écran", + "narrationPlaying": "Narration en cours", + "ttsPlaying": "Synthèse vocale en cours", + "listenWithNarrationShort": "Écouter (narration)", + "listen": "Écouter", + "listenWithNarration": "Écouter avec la narration", + "listenWithTts": "Écouter avec la synthèse vocale", "footerMode": { "pageProgress": "Infos de pied de page : page + progression", "sessionTimeLeft": "Info pied de page : séance de lecture + temps restant", @@ -8892,7 +9261,7 @@ "close": "Fermer la barre latérale", "noChapters": "Aucun chapitre trouvé", "noBookmarks": "Pas encore de favoris", - "noBookmarksMatch": "Aucun favori ne correspond à vos filtres", + "noBookmarksMatch": "Aucun signet ne correspond à vos filtres", "noHighlights": "Aucun passage surligné pour l'instant", "noHighlightsMatch": "Aucun surlignage ne correspond à vos filtres", "searchBookmarks": "Rechercher des favoris...", @@ -9037,7 +9406,7 @@ "bookmarks": "Signets", "volume": "Volume", "muted": "En sourdine", - "sleep": "Dormir", + "sleep": "Minuterie", "chapterAbbrev": "Ch.", "sleepTimer": "Minuterie de mise en veille", "minutes": "{count, plural, one {# minute} other {# minutes} many {# minutes}}", @@ -9047,7 +9416,7 @@ "timeLeft": "({time} restant)", "playbackSpeed": "Vitesse de lecture", "noChapters": "Aucun chapitre disponible.", - "noBookmarks": "Aucun favori pour l'instant.", + "noBookmarks": "Aucun signet pour l'instant.", "noBookmarksHint": "Appuyez sur l'icône de signet en haut pour enregistrer votre position actuelle.", "playerSettings": "Paramètres du lecteur", "skipBack": "Revenir en arrière", @@ -9056,6 +9425,19 @@ "sheet": { "expand": "Agrandir le panneau", "collapse": "Réduire le panneau" + }, + "narration": { + "fallbackTitle": "Narration", + "meta": "Narration audio – {speed}x", + "openControls": "Ouvrir les commandes de narration", + "previousSentence": "Phrase précédente", + "nextSentence": "Phrase suivante", + "play": "Lire la narration", + "pause": "Mettre la narration en pause", + "showControls": "Afficher les commandes", + "hideControls": "Masquer les commandes", + "stop": "Arrêter la narration", + "error": "Erreur de lecture de la narration" } }, "scanner": { @@ -9228,6 +9610,7 @@ }, "createDialog": { "title": "Nouvelle liste intelligente", + "podcastTitle": "Nouvelle playlist intelligente", "createFailed": "Échec de la création de la liste intelligente" }, "saveAsDialog": { @@ -9237,7 +9620,7 @@ }, "editorPanel": { "untitled": "Liste intelligente sans titre", - "subtitle": "Configurer les paramètres de la liste intelligente", + "subtitle": "Configurez les paramètres de la liste intelligente", "counting": "compter...", "bookCount": "{count, plural, =0 {pas de livres} one {un livre} other {# livres} many {# livres}}", "identity": "Identité", @@ -9255,6 +9638,14 @@ "noGenres": "Aucun genre", "epubOnly": "EPUB uniquement" } + }, + "errors": { + "load": "Impossible de charger vos listes intelligentes", + "loadEpisodes": "Impossible de charger les épisodes de cette playlist intelligente", + "save": "Impossible d'enregistrer la liste intelligente", + "delete": "Impossible de supprimer la liste intelligente", + "reorder": "Impossible de réordonner les listes intelligentes", + "koboSync": "Impossible de mettre à jour la synchronisation Kobo de cette liste intelligente" } }, "statistics": { @@ -9312,7 +9703,7 @@ "lastYear": "L'année dernière" }, "formatDistribution": { - "title": "Distribution des formats" + "title": "Répartition des formats" }, "formatShareOverTime": { "title": "Répartition des formats au fil du temps" @@ -9433,7 +9824,8 @@ "sourceDistribution": { "title": "Où vous lisez", "emptyTitle": "Aucune activité de lecture pour l'instant", - "emptyDescription": "Lisez sur le Web, KOReader ou Kobo pour voir votre répartition de source." + "emptyDescription": "Lisez sur le Web, KOReader ou Kobo pour voir votre répartition de source.", + "emptyDescriptionWithAppleClients": "Lisez sur le Web, l'application iOS, l'Apple Watch, KOReader ou Kobo pour voir votre répartition par source." } } }, @@ -9617,7 +10009,16 @@ "isbn": "ISBN", "formats": "Formats", "collections": "Collections", - "added": "Ajouté" + "added": "Ajouté", + "size": "Taille", + "metadata": "Métadonnées", + "reading": "Lecture", + "folder": "Dossier", + "noIsbn": "Non défini", + "notStarted": "Non commencé", + "outOfHundred": "/100", + "percentRead": "lu à {percent}", + "fileCount": "{count, plural, one {# fichier} many {# fichiers} other {# fichiers}}" }, "initial": { "title": "Trouver des livres en double", @@ -9637,11 +10038,101 @@ "status": "Impossible de charger la progression de l'analyse.", "scan": "L'analyse des doublons a échoué. Essayez de l'exécuter à nouveau.", "results": "Impossible de charger les groupes en double.", - "delete": "Impossible de supprimer les livres en double sélectionnés." + "delete": "Impossible de supprimer les livres en double sélectionnés.", + "dismiss": "Impossible d'ignorer ce groupe.", + "restore": "Impossible de restaurer cette paire." }, "pagination": { "label": "Pages de groupes en double", "page": "Page {page} sur {total}" + }, + "similarityOption": "{percent} et plus", + "scannedBooks": "{count} livres · vérifiés {when}", + "scanProgress": "{processed} livres sur {total}", + "recommended": "Recommandée", + "keeping": "À conserver", + "willDelete": "À supprimer", + "keepCopy": "Conserver {name}", + "selectGroup": "Sélectionner {title}", + "selectAll": "Sélectionner tous les groupes de cette page", + "compareCopies": "Comparer les copies de {title}", + "compareCaption": "Comparaison champ par champ de {count} copies", + "fieldColumn": "Champ", + "filesEach": "{count, plural, one {# fichier chacune} many {# fichiers chacune} other {# fichiers chacune}}", + "moreFilesCount": "{count, plural, one {et # autre fichier} many {et # autres fichiers} other {et # autres fichiers}}", + "identicalAcross": "{count, plural, one {Identique dans les deux copies :} many {Identique dans les # copies :} other {Identique dans les # copies :}}", + "deleteGroup": "{count, plural, one {Supprimer # copie, libérer {size}} many {Supprimer # copies, libérer {size}} other {Supprimer # copies, libérer {size}}}", + "confidence": { + "file_hash": "Identique", + "isbn": "Même ISBN", + "exact_metadata": "Correspondance exacte", + "fuzzy_metadata": "Similaire", + "withSimilarity": "{label} {percent}" + }, + "summary": { + "groups": "{count, plural, one {groupe} many {groupes} other {groupes}}", + "extraCopies": "{count, plural, one {copie en trop} many {copies en trop} other {copies en trop}}", + "reclaimable": "récupérables" + }, + "columns": { + "match": "Correspondance", + "book": "Livre", + "copies": "Copies", + "libraries": "Bibliothèques", + "frees": "Espace libéré", + "keeping": "Copie conservée" + }, + "keepRule": { + "label": "Conserver", + "metadata": "Meilleures métadonnées", + "size": "Fichiers les plus volumineux", + "formats": "Le plus de formats", + "oldest": "Copie la plus ancienne", + "newest": "Copie la plus récente", + "hint": "Choisit une copie à conserver dans chaque groupe. Vous pouvez modifier n'importe quelle ligne." + }, + "sort": { + "label": "Trier", + "reclaimable": "Le plus d'espace libéré", + "copies": "Le plus de copies", + "confidence": "Correspondance la plus forte", + "title": "Titre de A à Z" + }, + "keeper": { + "yourChoice": "Votre choix", + "reading": "lue à {percent}", + "collection": "présente dans {name}", + "metadata": "métadonnées {score}", + "largest": "la plus volumineuse : {size}", + "formats": "{count} formats", + "isbn": "a un ISBN", + "added": "ajoutée le {date}", + "riskReading": "supprime une copie lue à {percent}", + "riskCollection": "supprime une copie présente dans {name}" + }, + "selection": { + "summary": "{groups} groupes sélectionnés, {copies} copies à supprimer, {size} libérés", + "clear": "Effacer", + "review": "{count, plural, one {Examiner # copie} many {Examiner # copies} other {Examiner # copies}}", + "hint": "Cochez les groupes qui vous paraissent fiables, ou ouvrez-en un pour comparer les copies." + }, + "keys": { + "move": "se déplacer", + "expand": "développer", + "keep": "conserver", + "select": "sélectionner" + }, + "review": { + "title": "{count, plural, one {Supprimer # copie} many {Supprimer # copies} other {Supprimer # copies}}", + "description": "Sur {groups} groupes, {size} libérés. Rien n'est supprimé avant votre confirmation.", + "riskWarning": "{count, plural, one {# groupe supprime une copie portant vos données de lecture.} many {# groupes suppriment une copie portant vos données de lecture.} other {# groupes suppriment une copie portant vos données de lecture.}}", + "footer": "Libère {size}" + }, + "dismissed": { + "show": "{count, plural, one {Afficher # paire ignorée} many {Afficher # paires ignorées} other {Afficher # paires ignorées}}", + "hide": "Masquer les paires ignorées", + "restore": "Restaurer cette paire", + "restored": "Paire restaurée. Elle pourra de nouveau correspondre à la prochaine analyse." } }, "entityManager": { @@ -10022,6 +10513,35 @@ "noMatchHint": "Essayez d'ajuster les règles de filtrage.", "edit": "Modifier la liste intelligente" } + }, + "podcastScope": { + "title": "Playlist intelligente", + "entity": "Playlist intelligente", + "loadFailed": "Impossible de charger les épisodes de cette playlist.", + "loadMoreFailed": "Impossible de charger plus d'épisodes.", + "retry": "Réessayer", + "editRules": "Modifier les règles", + "saveFailed": "Impossible d'enregistrer les règles de la playlist.", + "deleteFailed": "Impossible de supprimer cette playlist.", + "empty": { + "title": "Aucun épisode correspondant", + "hint": "Ajustez les règles pour inclure plus d'épisodes." + } + }, + "podcastCollection": { + "title": "Collection de podcasts", + "entity": "Collection de podcasts", + "loadFailed": "Impossible de charger les émissions de cette collection.", + "remove": "Retirer", + "removeAria": "Retirer {name} de cette collection", + "removed": "{name} retiré", + "removeFailed": "Impossible de retirer cette émission.", + "empty": { + "title": "Aucune émission pour l'instant", + "hint": "Ajoutez des émissions à cette collection depuis une bibliothèque de podcasts." + }, + "loadMoreFailed": "Impossible de charger plus d'émissions.", + "retry": "Réessayer" } }, "whatsNew": { @@ -10054,16 +10574,832 @@ "previousImage": "Image précédente", "nextImage": "Image suivante" }, + "podcast": { + "actions": { + "add": "Ajouter", + "cancel": "Annuler", + "save": "Enregistrer", + "play": "Lire", + "pause": "Pause", + "playEpisode": "Lire l'épisode", + "listen": "Écouter", + "remove": "Retirer", + "episodeActions": "Actions sur l'épisode", + "removeFromQueue": "Retirer de la file d'attente", + "addToQueue": "Ajouter à la file d'attente", + "playNext": "Lire ensuite", + "retryDownload": "Réessayer le téléchargement", + "download": "Télécharger", + "removeDownload": "Supprimer le téléchargement", + "markUnplayed": "Marquer comme non écouté", + "markPlayed": "Marquer comme écouté", + "follow": "Suivre", + "unfollow": "Ne plus suivre", + "followPodcast": "Suivre le podcast", + "unfollowPodcast": "Ne plus suivre le podcast", + "resume": "Reprendre", + "playLatest": "Lire le dernier", + "moveToTop": "Placer en tête", + "playFromHere": "Lire à partir d'ici", + "moveDown": "Descendre", + "clearQueue": "Vider la file d'attente", + "clearAll": "Tout effacer", + "search": "Rechercher", + "clearPlayed": "Effacer les épisodes écoutés", + "downloadSelected": "Télécharger la sélection", + "removeSelectedDownloads": "Supprimer les téléchargements sélectionnés", + "markSelectedPlayed": "Marquer la sélection comme écoutée", + "removeSelectedFromQueue": "Retirer la sélection de la file d'attente", + "selectEpisode": "Sélectionner {title}", + "playNamedEpisode": "Lire {title}", + "listenToEpisode": "Écouter {title}", + "resumeEpisode": "Reprendre {title}", + "playLatestEpisode": "Lire le dernier épisode, {title}", + "episodeDetails": "Détails de l'épisode", + "episodeDetailsNamed": "Détails de l'épisode {title}", + "editEpisodeMetadata": "Modifier les métadonnées", + "openFullPlayer": "Ouvrir le lecteur complet", + "reorderEpisode": "Déplacer {title}", + "playAll": "Tout lire", + "resumeNamed": "Reprendre {title}", + "queueAll": "Tout mettre en file d'attente", + "markAllPlayed": "Tout marquer comme écouté", + "latestCount": "{count} derniers", + "downloadLatest": "Télécharger les derniers", + "removeAllDownloads": "Supprimer tous les téléchargements", + "pin": "Épingler", + "unpin": "Désépingler", + "pinEpisode": "Épingler l'épisode", + "unpinEpisode": "Désépingler l'épisode" + }, + "status": { + "nowPlaying": "En cours de lecture", + "paused": "En pause", + "downloaded": "Téléchargé", + "downloadQueued": "Téléchargement en attente", + "downloading": "Téléchargement", + "downloadFailed": "Échec du téléchargement", + "unavailable": "Indisponible", + "played": "Écouté", + "following": "Suivi", + "playbackProgress": "Progression de la lecture", + "downloadProgress": "Progression du téléchargement", + "removedFromFeed": "Retiré du flux", + "inQueue": "En file d'attente", + "feedFailing": "Flux en échec", + "archived": "Archivée", + "localShow": "Locale", + "localShowDescription": "Cette émission n'a pas de flux. Ses épisodes sont les fichiers de son dossier.", + "missing": "Manquante", + "missingDescription": "Le dossier de cette émission n'est plus sur le disque. Elle est conservée ici au cas où le dossier reviendrait ; supprimez l'émission pour la retirer définitivement." + }, + "selection": { + "select": "Sélectionner", + "selectAll": "Tout sélectionner", + "count": "{count} sélectionnés", + "toggleShow": "Sélectionner {title}" + }, + "bulkDelete": { + "title": "Supprimer les émissions sélectionnées", + "action": "Supprimer", + "confirmPhrase": "SUPPRIMER", + "description": "Cette action supprime définitivement {count} émissions et tout ce que BookOrbit en sait, y compris votre historique d'écoute. Elle est irréversible.", + "descriptionWithFiles": "Cette action supprime définitivement {count} émissions, tout ce que BookOrbit en sait et {size} de fichiers téléchargés. Vos propres dossiers ne sont jamais touchés. Elle est irréversible.", + "queued": "Suppression de {count} émissions", + "queuedWithFailures": "Suppression de {count} émissions, {failed} n'ont pas pu démarrer", + "errors": { + "prepare": "Impossible de déterminer ce que la suppression de ces émissions retirerait", + "delete": "Impossible de supprimer les émissions sélectionnées" + } + }, + "views": { + "queue": "File d'attente" + }, + "labels": { + "episodeCount": "{count} épisodes", + "unknownPublisher": "Éditeur inconnu", + "durationHoursMinutes": "{hours} h {minutes} min", + "durationMinutes": "{minutes} min", + "durationSeconds": "{seconds} s", + "durationUnavailable": "Durée indisponible", + "unknownDate": "Date inconnue", + "seasonEpisode": "S{season} Ép. {episode}", + "season": "S{season}", + "episode": "Ép. {episode}", + "episodeTypeTrailer": "Bande-annonce", + "episodeTypeBonus": "Bonus", + "pinnedHint": "Les épisodes épinglés sont protégés de la suppression par la rétention du stockage.", + "explicit": "Explicite", + "lastListened": "Écouté {time}", + "timeLeft": "{time} restant", + "remainingClock": "-{time}", + "pinnedEpisode": "Épisode épinglé", + "newEpisodeCount": "{count} nouveaux", + "unplayedShort": "{count} non écoutés" + }, + "acquisition": { + "title": "Téléchargements automatiques", + "never": "Jamais", + "newEpisodes": "Nouveaux épisodes", + "recentEpisodes": "Épisodes récents", + "maximumNewest": "Nombre maximal d'épisodes récents", + "publishedWithinDays": "Publiés au cours des derniers (jours)", + "remoteDescription": "Diffuser les épisodes en streaming par défaut. Vous pouvez toujours télécharger des épisodes à l'unité pour les écouter hors ligne.", + "newestDescription": "Télécharger automatiquement le nombre choisi d'épisodes les plus récents qui ne sont pas déjà stockés ou en file d'attente. L'enregistrement de cette règle vérifie aussi les épisodes déjà présents dans le flux.", + "windowDescription": "Télécharger les épisodes existants et nouvellement découverts publiés pendant cette période. Les épisodes sans date de publication sont ignorés. Modifier cette règle ne supprime pas les téléchargements plus anciens, mais la rétention du stockage peut supprimer les téléchargements non épinglés lorsque de l'espace est nécessaire." + }, + "cleanup": { + "title": "Supprimer après écoute", + "keep": "Conserver les téléchargements", + "afterFinished": "Supprimer une fois terminé", + "delayHours": "Supprimer ce nombre d'heures après que le dernier auditeur a terminé", + "keepDescription": "Les épisodes téléchargés restent sur le disque jusqu'à ce que la rétention du stockage ait besoin de l'espace.", + "afterFinishedDescription": "Supprimer un épisode téléchargé lorsque chaque auditeur qui l'a commencé l'a terminé et que le délai est écoulé. Le marquer comme non écouté, l'épingler ou le remettre dans une file d'attente pendant ce délai annule la suppression." + }, + "player": { + "miniPlayer": "Mini-lecteur de podcasts", + "openFullPlayer": "Ouvrir le lecteur complet", + "expandMiniPlayer": "Agrandir le mini-lecteur", + "collapseMiniPlayer": "Réduire en lecteur compact", + "stopAndClose": "Arrêter et fermer le lecteur", + "sleepActive": "Minuterie de mise en veille active : {value}", + "previousEpisode": "Épisode précédent", + "nextEpisode": "Épisode suivant", + "backSeconds": "Reculer de {count} secondes", + "forwardSeconds": "Avancer de {count} secondes", + "episodePosition": "Position dans l'épisode", + "toggleTimeDisplay": "Basculer entre temps restant et durée totale", + "positionValue": "{elapsed} sur {duration}", + "playingAnnouncement": "Lecture de {title} de {podcast}", + "pausedAnnouncement": "{title} de {podcast} en pause", + "volume": "Volume", + "positionValueWithChapter": "{elapsed} sur {duration}, chapitre {chapter}" + }, + "bookmarks": { + "title": "Signets", + "empty": "Aucun signet", + "closeForm": "Fermer le formulaire de signet", + "saveAt": "Enregistrer à {time}", + "titlePlaceholder": "Titre du signet", + "notePlaceholder": "Remarque facultative", + "save": "Enregistrer le signet", + "edit": "Modifier le signet", + "delete": "Supprimer le signet", + "titleLabel": "Titre du signet", + "noteLabel": "Remarque du signet", + "editTitleLabel": "Modifier le titre du signet", + "editNoteLabel": "Modifier la remarque du signet", + "defaultTitle": "Signet à {time}" + }, + "library": { + "episodes": "Épisodes", + "shows": "Émissions", + "latest": "Récent", + "inProgress": "En cours", + "unplayed": "Non écouté", + "finished": "Terminé", + "health": "État", + "search": "Rechercher des podcasts", + "clearSearch": "Effacer la recherche de podcasts", + "import": "Importer", + "importOpml": "Importer un OPML", + "importDescription": "Importer une liste d'abonnements OPML", + "addFeed": "Ajouter un flux", + "settings": "Paramètres des podcasts", + "views": "Vues des podcasts", + "loading": "Chargement des podcasts...", + "noMatchingShows": "Aucune émission correspondante", + "ready": "Votre bibliothèque de podcasts est prête", + "tryDifferentSearch": "Essayez un autre titre ou éditeur.", + "readyDescription": "Ajoutez un flux RSS ou importez un fichier OPML pour commencer à constituer votre bibliothèque d'écoute.", + "loadMoreShows": "Charger plus d'émissions", + "upNext": "À suivre", + "emptyQueue": "Votre file d'attente est vide", + "emptyQueueDescription": "Ajoutez un épisode depuis une émission pour garder votre prochaine écoute à portée de main.", + "loadMore": "Charger plus", + "lastSuccess": "Dernier succès", + "failureCount": "{count} échecs : {error}", + "unknownError": "Erreur inconnue", + "healthy": "Sain", + "noFeeds": "Aucun flux à surveiller", + "noFeedsDescription": "Ajoutez un flux de podcast pour voir ici l'état de ses actualisations.", + "noMatchingEpisodes": "Aucun épisode correspondant", + "noEpisodesLatest": "Aucun épisode pour l'instant", + "noEpisodesDownloaded": "Aucun épisode téléchargé", + "noEpisodesInProgress": "Aucun épisode en cours", + "noEpisodesUnplayed": "Aucun épisode non écouté", + "noEpisodesFinished": "Aucun épisode terminé", + "noEpisodesPinned": "Aucun épisode épinglé", + "pinned": "Épinglé", + "continueListening": "Reprendre l'écoute", + "viewAllContinue": "Tout afficher", + "noEpisodesDescription": "Les nouveaux épisodes de vos émissions apparaîtront ici.", + "loadMoreEpisodes": "Charger plus d'épisodes", + "addPodcastFeed": "Ajouter un flux de podcast", + "rssUrl": "URL du flux RSS", + "preview": "Aperçu", + "addPodcast": "Ajouter un podcast", + "storage": "Stockage des podcasts", + "currentlyUsing": "Utilisation actuelle : {size}", + "libraryQuotaGb": "Quota de la bibliothèque (Go)", + "freeSpaceReserveGb": "Réserve d'espace libre (Go)", + "defaultRefreshMinutes": "Actualisation par défaut (minutes)", + "finishRemainingSeconds": "Terminer lorsqu'il reste (secondes)", + "exportOpml": "Exporter en OPML", + "exportDescription": "Exporter cette bibliothèque sous forme de liste d'abonnements OPML", + "importOpmlDescription": "Choisissez un fichier OPML et la politique de téléchargement à appliquer à chacun de ses flux.", + "opmlFile": "Fichier OPML", + "chooseOpmlFile": "Choisir un fichier", + "noOpmlFileChosen": "Aucun fichier choisi", + "importPolicyHint": "Elle s'applique à chaque flux importé. Vous pourrez la modifier ensuite pour chaque émission.", + "searchShows": "Rechercher des émissions", + "searchEpisodes": "Rechercher des épisodes", + "searchHealth": "Rechercher dans l'état des flux", + "manageFeeds": "Gérer les flux", + "feedHealth": "État des flux", + "feedsNeedAttention": "Des flux demandent votre attention", + "episodeFilters": "Filtres d'épisodes", + "previewing": "Aperçu en cours...", + "addingPodcast": "Ajout...", + "openShow": "Ouvrir {title}", + "retryFeed": "Actualiser {title}", + "reparseFeed": "Retraiter le flux enregistré de {title}", + "confirmClearQueue": "Retirer tous les épisodes de la file d'attente ?", + "importProgress": "Progression de l'import", + "jobsQueued": "{count} en file d'attente", + "jobsProcessing": "{count} en traitement", + "jobsFailed": "{count} en échec", + "retryUnhealthy": "Réessayer les flux en échec", + "followedOnly": "Suivis uniquement", + "queueDuration": "{duration} au total", + "confirmClearPlayed": "Retirer de la file d'attente tous les épisodes écoutés ?", + "searchQueue": "Rechercher dans votre file d'attente", + "noMatchingQueueEpisodes": "Aucun épisode correspondant dans la file d'attente", + "showAllEpisodes": "Afficher tous les épisodes", + "browseShows": "Parcourir les émissions", + "browseEpisodes": "Parcourir les épisodes", + "allLoaded": "Les {total} éléments sont chargés", + "addFeedDescription": "Cherchez dans l'annuaire de podcasts ou collez l'URL d'un flux RSS, prévisualisez l'émission, puis choisissez comment ses épisodes sont récupérés.", + "searchDirectory": "Rechercher dans l'annuaire de podcasts", + "searchDirectoryPlaceholder": "Nom de l'émission ou de l'éditeur", + "searchDirectoryEmpty": "Aucune émission de l'annuaire ne correspond à cette recherche.", + "searchDirectoryHint": "Choisissez un résultat pour le prévisualiser, ou collez l'URL d'un flux ci-dessous.", + "inLibrary": "Dans la bibliothèque", + "openExistingShow": "Ouvrir {title}, déjà dans votre bibliothèque", + "pasteFeedUrl": "Ou collez l'URL d'un flux", + "selectAllLoaded": "Sélectionner tous les épisodes chargés", + "reorderLoadedHint": "Le réordonnancement s'applique aux épisodes chargés jusqu'ici.", + "retryUnhealthyLoaded": "Réessayer les flux en échec chargés", + "manageFeedsUnhealthy": "Gérer les flux : des flux en échec demandent votre attention", + "localImportTitle": "Import des podcasts depuis vos dossiers", + "localImportDoneTitle": "Import terminé", + "localImportCounting": "Parcours de vos dossiers...", + "localImportProgress": "{processed} fichiers sur {total}", + "localImportDone": "{processed} fichiers importés", + "importingTitle": "Import de vos podcasts", + "importingHint": "Les émissions apparaissent ici à mesure que leurs fichiers sont lus." + }, + "import": { + "title": "Importer des fichiers locaux", + "description": "Associez les fichiers audio déjà présents dans le dossier de cette bibliothèque aux épisodes des flux que vous suivez.", + "placementHint": "Placez d'abord les fichiers dans le dossier de cette bibliothèque. BookOrbit les adopte là où ils se trouvent : rien n'est copié, renommé ni déplacé.", + "scan": "Analyser les fichiers", + "running": "Analyse en cours...", + "progress": "{current} fichiers analysés sur {total}", + "apply": "Importer les fichiers associés", + "applyWithChoices": "Importer les fichiers associés et vos choix", + "applied": "{count} fichiers adoptés.", + "quota": "{adopt} à adopter, {headroom} encore libre sur le quota", + "truncated": "Certaines listes sont raccourcies. Les totaux ci-dessus sont complets.", + "chooseEpisode": "Choisir l'épisode", + "leaveUnresolved": "Laisser pour plus tard", + "noDate": "Sans date", + "fileCount": "{count} fichiers", + "subscribe": "S'abonner", + "subscribed": "Abonné", + "suggestedFeedsHint": "Ces dossiers désignent un flux que vous ne suivez pas encore. Abonnez-vous, puis relancez l'analyse pour associer leurs fichiers.", + "rescanHint": "Relancez l'analyse pour associer les fichiers des dossiers auxquels vous venez de vous abonner.", + "duplicateDiffers": "Un autre fichier est déjà rattaché à cet épisode", + "duplicateSame": "Cet épisode a déjà ce fichier", + "unreadableFolders": "{count} dossiers n'ont pas pu être lus.", + "groups": { + "matched": "Associés", + "ambiguous": "Décision nécessaire", + "unmatched": "Sans correspondance", + "duplicates": "Déjà rattachés", + "skipped": "Ignorés", + "suggestedFeeds": "Flux auxquels s'abonner", + "unclaimedFolders": "Dossiers sans flux" + }, + "signals": { + "episode_guid": "ID de l'épisode dans les métadonnées du fichier", + "episode_id_suffix": "ID BookOrbit dans le nom du fichier", + "enclosure_file_name": "Le nom du fichier correspond à celui du flux", + "title_and_date": "Titre et date", + "title_and_duration": "Titre et durée", + "manual": "Votre choix" + }, + "scopes": { + "request": "Émission que vous avez choisie", + "folder_suffix": "Nom du dossier de l'émission", + "feed_url_tag": "Adresse du flux dans les métadonnées du fichier", + "feed_sidecar": "Flux enregistré dans le dossier", + "title_similarity": "Titre d'émission similaire", + "library": "Aucune émission identifiée" + }, + "reasons": { + "show_unresolved": "Aucune émission n'a pu être identifiée pour ce fichier", + "no_episode_candidate": "L'émission a été reconnue, mais aucun épisode", + "single_fuzzy_signal": "Un seul indice désignait un épisode", + "multiple_candidates": "Plusieurs épisodes correspondent aussi bien", + "empty_file": "Le fichier est vide", + "unsupported_format": "Ce n'est pas un fichier audio pris en charge", + "symlink": "Les liens symboliques ne sont pas importés", + "unreadable": "Le fichier n'a pas pu être lu", + "outside_library_root": "Le fichier se trouve en dehors du dossier de la bibliothèque", + "attach_conflict": "Un fichier a été rattaché à l'épisode pendant l'analyse", + "quota_exceeded": "Importer ces fichiers dépasserait le quota de stockage de cette bibliothèque. Augmentez le quota ou importez moins de fichiers." + }, + "sources": { + "feed_sidecar": "Fichier de flux enregistré", + "metadata_json": "metadata.json", + "feed_url_tag": "Métadonnées du fichier" + }, + "errors": { + "status": "Impossible de lire l'état de l'import", + "start": "Impossible de lancer l'import", + "subscribe": "Impossible de s'abonner à ce flux", + "createLocalShow": "Impossible de créer une émission locale à partir de ce dossier" + }, + "messages": { + "subscribed": "Podcast ajouté. Relancez l'analyse pour associer ses fichiers.", + "localShowCreated": "Émission locale créée. Ses épisodes sont en cours d'import.", + "localShowUpdated": "Import des nouveaux fichiers de ce dossier." + }, + "createLocalShow": "Créer une émission locale", + "addLocalEpisodes": "Ajouter les nouveaux épisodes", + "localShowCreated": "Créée", + "unclaimedFoldersHint": "Ces dossiers ne désignent aucun flux. Transformez-en un en émission locale : chacun de ses fichiers audio deviendra un épisode.", + "localRescanHint": "Relancez l'analyse pour prendre en compte tout autre changement dans les dossiers que vous venez d'importer." + }, + "messages": { + "podcastAdded": "Podcast ajouté", + "feedsQueued": "{count} flux de podcasts mis en file d'attente", + "settingsSaved": "Paramètres des podcasts enregistrés", + "downloadQueued": "Téléchargement de l'épisode mis en file d'attente", + "downloadRemoved": "Téléchargement de l'épisode supprimé", + "refreshQueued": "Actualisation du podcast mise en file d'attente", + "reparseQueued": "Retraitement du podcast mis en file d'attente", + "mergeQueued": "Fusion des podcasts mise en file d'attente", + "showDeleted": "{title} supprimé", + "queueCleared": "File d'attente des podcasts vidée", + "playerClosed": "Lecteur fermé", + "feedsRefreshQueued": "Actualisation de {count} flux mise en file d'attente", + "finishedQueueCleared": "Épisodes écoutés retirés de la file d'attente", + "bulkQueueActionCompleted": "{count} épisodes sélectionnés mis à jour", + "bulkQueueActionFailed": "{completed} épisodes mis à jour, {failed} en échec", + "bulkQueued": "{completed} épisodes mis en file d'attente ; {skipped} y étaient déjà ou dépassaient la limite de la file", + "bulkMarkedPlayed": "{count} épisodes marqués comme écoutés", + "bulkDownloadsQueued": "{count} téléchargements d'épisodes mis en file d'attente", + "bulkDownloadsRemoved": "{count} téléchargements d'épisodes supprimés", + "bulkDownloadsRemovedWithFailures": "{completed} téléchargements supprimés ; {failed} en échec", + "queueRestored": "{count} épisodes remis dans la file d'attente", + "playlistSaved": "Playlist enregistrée", + "playlistDeleted": "Playlist supprimée", + "playlistQueued": "{completed} épisodes mis en file d'attente, {skipped} ignorés", + "playlistQueueEmpty": "Aucun épisode ne correspond à cette playlist", + "detailsSaved": "Détails de l'émission enregistrés", + "episodeDetailsSaved": "Détails de l'épisode enregistrés", + "artworkUpdated": "Illustration mise à jour", + "artworkRemoved": "Illustration personnalisée retirée", + "localFileDeleted": "Fichier de l'épisode supprimé", + "opmlOmittedLocalShows": "{count} émissions locales laissées hors de l'export : l'OPML ne peut décrire que des flux." + }, + "fullPlayer": { + "queueNowPlaying": "Lecture en cours : #{position} · {count} restants", + "queuedCount": "{count} en file d'attente", + "mediaUnavailable": "Média indisponible", + "streaming": "Streaming", + "backToPodcast": "Retour au podcast", + "loading": "Chargement de l'épisode...", + "tryAgain": "Réessayer", + "nowListening": "En cours d'écoute", + "retry": "Réessayer", + "restart": "Recommencer", + "durationUnavailable": "Durée indisponible", + "previousQueued": "Épisode précédent de la file d'attente", + "nextQueued": "Épisode suivant de la file d'attente", + "startingPlayback": "Démarrage de la lecture", + "speed": "Vitesse", + "playbackSpeed": "Vitesse de lecture", + "sleep": "Minuterie", + "off": "Désactiver", + "endOfChapter": "Fin du chapitre", + "endOfEpisode": "Fin de l'épisode", + "minutesLeft": "{count} min restantes", + "aboutEpisode": "À propos de cet épisode", + "showLess": "Afficher moins", + "showMore": "Afficher plus", + "chapters": "Chapitres", + "previousChapter": "Chapitre précédent", + "nextChapter": "Chapitre suivant", + "removeNamedFromQueue": "Retirer {title} de la file d'attente", + "queueClear": "Votre file d'attente est vide.", + "transcripts": "Transcriptions", + "transcript": "Transcription", + "sleepMinutes": "{count} min", + "speedValue": "{rate}x", + "cyclePlaybackSpeed": "Changer de vitesse de lecture", + "choosePlaybackSpeed": "Choisir la vitesse de lecture", + "moreSpeeds": "Plus", + "showSpeedOverride": "Cette vitesse est mémorisée pour cette émission.", + "clearSpeedOverride": "Utiliser la vitesse par défaut pour cette émission", + "extendSleepLabel": "Ajouter {count} minutes à la minuterie de mise en veille", + "sleepTimer": "Minuterie de mise en veille", + "sleepRemaining": "{count} min", + "fineTuneSpeed": "Réglage fin", + "decreaseSpeed": "Réduire la vitesse de lecture", + "increaseSpeed": "Augmenter la vitesse de lecture", + "extendSleep": "Ajouter {count} min", + "bookmarkTooltip": "Signet : {title}", + "openQueue": "Ouvrir la file d'attente", + "openChapterLink": "Ouvrir le lien du chapitre {title}" + }, + "show": { + "loading": "Chargement du podcast...", + "noAlerts": "Aucune alerte", + "immediate": "Immédiate", + "dailyDigest": "Résumé quotidien", + "weeklyDigest": "Résumé hebdomadaire", + "refreshFeed": "Actualiser le flux", + "refreshInterval": "Intervalle d'actualisation en minutes", + "restore": "Restaurer", + "archive": "Archiver", + "deletePermanently": "Supprimer définitivement", + "mergeSource": "Fusionner un autre ID de podcast dans cette émission", + "queueMerge": "Lancer la fusion", + "confirmMerge": "Fusionner le podcast {id} dans ce podcast ? Le podcast source sera définitivement supprimé.", + "confirmDelete": "Supprimer définitivement {title}, ses {episodes} épisodes et tout l'état d'écoute ? Cette action est irréversible.", + "confirmDeleteWithDownloads": "Supprimer définitivement {title}, ses {episodes} épisodes, {files} fichiers téléchargés ({size}) et tout l'état d'écoute ? Cette action est irréversible.", + "back": "Retour", + "notificationMode": "Fréquence des notifications", + "readMore": "Lire la suite", + "searchEpisodes": "Rechercher dans les épisodes de cette émission", + "clearEpisodeSearch": "Effacer la recherche d'épisodes", + "episodeFilter": "Filtre des épisodes", + "episodeSort": "Ordre de tri des épisodes", + "newestFirst": "Plus récents d'abord", + "oldestFirst": "Plus anciens d'abord", + "noEpisodes": "Aucun épisode correspondant", + "noEpisodesDescription": "Essayez une autre recherche, un autre filtre ou un autre ordre de tri.", + "dangerZone": "Zone de danger", + "dangerZoneActions": "Archiver, supprimer ou fusionner ce flux. La suppression est irréversible.", + "mergeTitle": "Fusionner une émission en double", + "mergeDescription": "Trouvez l'émission source à fusionner dans celle-ci. La source sera définitivement supprimée.", + "searchMergeSource": "Rechercher une émission en double", + "mergeSelected": "Fusionner « {title} » dans cette émission", + "fromDate": "Du", + "toDate": "Au", + "feedFailingTitle": "Le flux demande votre attention", + "feedFailingDetail": "{count} échecs d'actualisation consécutifs. Dernière actualisation réussie : {lastSuccess}", + "archivedTitle": "Cette émission est archivée", + "archivedDescription": "Les émissions archivées ne sont plus actualisées et ne téléchargent plus de nouveaux épisodes.", + "downloadLatestCount": "Nombre de derniers épisodes à télécharger", + "confirmRemoveAllDownloads": "Supprimer tous les épisodes téléchargés de cette émission ? Les épisodes diffusés en streaming et la progression d'écoute sont conservés.", + "refreshCompleted": "Mis à jour, {count} nouveaux épisodes", + "refreshFailed": "Échec de l'actualisation : {error}", + "manageTitle": "Gérer l'émission", + "manageActionsDescription": "L'archivage, la suppression et la fusion sont séparés, pour que les réglages courants restent sans risque à modifier.", + "openManageActions": "Archiver, supprimer ou fusionner", + "archiveOrDelete": "L'archivage est réversible et conserve tous les épisodes. La suppression retire définitivement l'émission, ses épisodes et tous les fichiers téléchargés.", + "deleteRequiresOwner": "L'archivage masque cette émission et arrête ses actualisations. Seul un propriétaire de la bibliothèque autorisé à supprimer des podcasts peut la retirer définitivement.", + "settingsDescription": "Choisissez comment les épisodes sont récupérés et à quelle fréquence le flux est vérifié.", + "updatedAgo": "Mis à jour {time}", + "checksEvery": "Intervalle de vérification : {time}", + "visitWebsite": "Visiter le site web", + "backToLibrary": "Retour à {library}", + "categoryOverflow": "+{count}", + "moreCategories": "Afficher {count} catégories de plus", + "allCategories": "Toutes les catégories", + "serial": "Feuilleton", + "daysShort": "{count} j", + "hoursShort": "{count} h", + "minutesShort": "{count} min", + "moreActions": "Autres actions sur l'émission", + "dates": "Dates", + "anyDate": "Toutes", + "dateRange": "{from} – {to}", + "dateFilter": "Dates de publication des épisodes", + "clearDates": "Effacer les dates", + "seasonHeader": "Saison {season}", + "localSettingsHint": "Cette émission n'a pas de flux : elle n'a donc aucun paramètre d'actualisation ni de téléchargement." + }, + "edit": { + "title": "Modifier les détails", + "description": "Tout ce que vous modifiez ici est verrouillé, pour que la prochaine actualisation du flux ne puisse pas l'écraser.", + "titleLabel": "Titre de l'émission", + "authorLabel": "Éditeur", + "authorPlaceholder": "Qui publie cette émission", + "descriptionLabel": "Description", + "descriptionPlaceholder": "De quoi parle cette émission", + "descriptionHint": "La mise en forme du flux est remplacée par le texte brut que vous saisissez ici.", + "siteUrlLabel": "Site web", + "siteUrlPlaceholder": "https://example.com/show", + "languageLabel": "Langue", + "languagePlaceholder": "fr-fr", + "categoriesLabel": "Catégories", + "categoriesPlaceholder": "Ajoutez une catégorie et appuyez sur Entrée", + "removeCategory": "Retirer la catégorie {category}", + "categoryLimit": "Vous pouvez conserver jusqu'à {count} catégories.", + "explicitLabel": "Explicite", + "explicitHint": "Signale que cette émission contient du contenu explicite.", + "artworkTitle": "Illustration", + "artworkHint": "PNG, JPEG, WebP, GIF ou AVIF jusqu'à 10 Mo. Une illustration personnalisée remplace partout l'image du flux.", + "artworkUrlLabel": "Adresse de l'image", + "artworkUrlPlaceholder": "https://example.com/artwork.png", + "chooseImage": "Choisir une image", + "useImage": "Utiliser cette image", + "removeCustomArtwork": "Retirer l'illustration personnalisée", + "lockField": "Verrouiller le champ « {field} » contre les actualisations du flux", + "unlockField": "Déverrouiller le champ « {field} » pour que le flux puisse le mettre à jour", + "willLockField": "Le champ « {field} » sera verrouillé à l'enregistrement", + "willLockHint": "Ce champ sera verrouillé à l'enregistrement.", + "localDescription": "Cette émission n'a pas de flux : vos modifications sont définitives et rien ne peut les écraser." + }, + "episodeEdit": { + "title": "Modifier l'épisode", + "description": "Tout ce que vous modifiez ici est verrouillé, pour que la prochaine actualisation du flux ne puisse pas l'écraser.", + "lockHint": "Les champs modifiés sont protégés des mises à jour du flux.", + "titleLabel": "Titre de l'épisode", + "subtitleLabel": "Sous-titre", + "subtitlePlaceholder": "Une ligne courte sous le titre", + "descriptionLabel": "Description", + "descriptionPlaceholder": "Ce que couvre cet épisode", + "descriptionHint": "La mise en forme du flux est remplacée par le texte brut que vous saisissez ici.", + "publishedAtLabel": "Date de publication", + "seasonLabel": "Saison", + "seasonPlaceholder": "2", + "episodeLabel": "Numéro d'épisode", + "episodePlaceholder": "14", + "episodeTypeLabel": "Type d'épisode", + "episodeTypeNone": "Non défini", + "episodeTypeFull": "Épisode complet", + "episodeTypeTrailer": "Bande-annonce", + "episodeTypeBonus": "Bonus", + "episodeTypeFromFeed": "{value} (depuis le flux)", + "durationLabel": "Durée", + "durationPlaceholder": "Minutes", + "durationHint": "En minutes. Laissez vide pour supprimer la durée.", + "durationInvalid": "Saisissez une durée en minutes supérieure à zéro.", + "explicitLabel": "Explicite", + "explicitHint": "Signale que cet épisode contient du contenu explicite.", + "localHint": "Cet épisode provient d'un fichier et non d'un flux : vos modifications sont définitives et rien ne peut les écraser." + }, + "errors": { + "createBookmark": "Impossible de créer le signet", + "updateBookmark": "Impossible de mettre à jour le signet", + "deleteBookmark": "Impossible de supprimer le signet", + "feedPreview": "Échec de l'aperçu du flux", + "directorySearch": "La recherche dans l'annuaire est indisponible pour le moment. Collez plutôt l'URL du flux.", + "invalidEpisodeLimit": "Saisissez un nombre maximal d'épisodes valide", + "invalidEpisodeWindow": "Saisissez une période d'épisodes récents valide", + "invalidCleanupDelay": "Le délai de nettoyage doit être compris entre 0 et 8 760 heures", + "addPodcast": "Impossible d'ajouter le podcast", + "opmlTooLarge": "Les fichiers OPML ne peuvent pas dépasser 5 Mo", + "opmlImport": "Échec de l'import OPML", + "opmlExport": "Échec de l'export OPML", + "loadSettings": "Impossible de charger les paramètres des podcasts", + "invalidStorage": "Les valeurs de stockage doivent être des nombres positifs ou nuls", + "invalidRefresh": "L'actualisation par défaut doit être comprise entre 5 et 10 080 minutes", + "invalidCompletion": "Le seuil de fin d'écoute doit être compris entre 0 et 3 600 secondes", + "saveSettings": "Impossible d'enregistrer les paramètres des podcasts", + "markPlayed": "Impossible de marquer l'épisode comme écouté", + "restartEpisode": "Impossible de reprendre l'épisode depuis le début", + "queueDownload": "Impossible de mettre en file d'attente le téléchargement de l'épisode", + "removeDownload": "Impossible de supprimer le téléchargement de l'épisode", + "addToQueue": "Impossible d'ajouter l'épisode à la file d'attente", + "removeFromQueue": "Impossible de retirer l'épisode de la file d'attente", + "loadPodcast": "Impossible de charger le podcast", + "loadEpisodes": "Impossible de charger les épisodes du podcast", + "queueNext": "Impossible de placer l'épisode en prochaine lecture", + "follow": "Impossible de suivre le podcast", + "unfollow": "Impossible de ne plus suivre le podcast", + "updateEpisode": "Impossible de mettre à jour l'épisode", + "refresh": "Impossible de mettre en file d'attente l'actualisation du podcast", + "reparse": "Impossible de mettre en file d'attente le retraitement du podcast", + "reparseNoSnapshot": "BookOrbit n'a encore aucune copie enregistrée de ce flux. Actualisez-le d'abord.", + "updatePodcast": "Impossible de mettre à jour le podcast", + "archive": "Impossible d'archiver le podcast", + "prepareDelete": "Impossible de préparer la suppression de l'émission", + "deleteShow": "Impossible de supprimer l'émission", + "restore": "Impossible de restaurer le podcast", + "merge": "Impossible de mettre en file d'attente la fusion des podcasts", + "libraryAccess": "Impossible de charger l'accès aux bibliothèques", + "reorderQueue": "Impossible de réordonner la file d'attente des podcasts", + "clearQueue": "Impossible de vider la file d'attente des podcasts", + "podcastNotFound": "Podcast introuvable", + "loadPodcasts": "Impossible de charger les podcasts", + "loadQueue": "Impossible de charger la file d'attente des podcasts", + "loadHealth": "Impossible de charger l'état des flux", + "loadPlaybackSettings": "Impossible de charger les paramètres de lecture des podcasts", + "invalidPlaybackRate": "La vitesse de lecture doit être comprise entre 0,5 et 3", + "invalidSkipBackward": "Le retour en arrière doit être compris entre 5 et 120 secondes", + "invalidSkipForward": "L'avance rapide doit être comprise entre 5 et 120 secondes", + "invalidDateRange": "La date de début doit précéder la date de fin", + "episodeNotFound": "Épisode de podcast introuvable", + "loadEpisode": "Impossible de charger l'épisode du podcast", + "refreshPlaybackContext": "Impossible d'actualiser le contexte de lecture", + "streamUnavailable": "Impossible de charger cet épisode de podcast", + "bulkAction": "Impossible de mettre à jour les épisodes du podcast", + "invalidVolume": "Le volume doit être compris entre 0 et 100 %", + "restoreQueue": "Impossible de restaurer la file d'attente des podcasts", + "loadPlaylists": "Impossible de charger vos playlists", + "savePlaylist": "Impossible d'enregistrer la playlist", + "deletePlaylist": "Impossible de supprimer la playlist", + "queuePlaylist": "Impossible de mettre la playlist en file d'attente", + "playlistNameRequired": "Nommez la playlist avant de l'enregistrer", + "playlistLimitReached": "Vous avez atteint la limite de playlists enregistrées", + "playlistDurationRange": "La durée la plus courte doit être inférieure à la plus longue", + "updatePinned": "Impossible de modifier l'épinglage", + "titleRequired": "Le titre de l'émission ne peut pas être vide", + "episodeTitleRequired": "Le titre de l'épisode ne peut pas être vide", + "updateArtwork": "Impossible de mettre à jour l'illustration", + "removeArtwork": "Impossible de retirer l'illustration personnalisée" + }, + "settingsPage": { + "title": "Paramètres des podcasts", + "subtitle": "Gérez vos valeurs de lecture par défaut et le comportement du stockage pour chaque bibliothèque de podcasts.", + "loading": "Chargement des paramètres des podcasts...", + "saving": "Enregistrement...", + "playbackTitle": "Lecture par défaut", + "playbackDescription": "Ces préférences suivent votre compte sur tous vos appareils. Les vitesses de lecture mémorisées pour chaque émission sont conservées.", + "defaultPlaybackRate": "Vitesse de lecture par défaut", + "skipBackwardSeconds": "Retour en arrière (secondes)", + "skipForwardSeconds": "Avance rapide (secondes)", + "playbackSaved": "Paramètres de lecture des podcasts enregistrés", + "playbackSaveFailed": "Impossible d'enregistrer les paramètres de lecture des podcasts", + "libraryTitle": "Valeurs par défaut et stockage de la bibliothèque", + "libraryDescription": "Choisissez une bibliothèque de podcasts pour voir ses limites de stockage et son comportement d'actualisation par défaut.", + "library": "Bibliothèque de podcasts", + "noLibraries": "Vous n'avez encore accès à aucune bibliothèque de podcasts.", + "loadingLibrary": "Chargement des paramètres de la bibliothèque...", + "readOnlyLibrary": "Seuls les propriétaires de la bibliothèque disposant de l'autorisation de rétention des podcasts peuvent modifier ces paramètres.", + "showSettingsHint": "Les règles de téléchargement automatique et les intervalles d'actualisation propres à une émission restent dans les paramètres de chaque émission.", + "defaultVolume": "Volume par défaut", + "gigabytesUnit": "Go" + }, + "queueReorder": { + "lifted": "{title} saisi en position {position} sur {total}", + "moved": "{title} déplacé en position {position} sur {total}", + "dropped": "{title} déposé en position {position} sur {total}", + "cancelled": "Déplacement de {title} annulé" + }, + "sort": { + "label": "Trier", + "showLabel": "Trier les émissions", + "episodeLabel": "Trier les épisodes", + "showTitle": "Titre de A à Z", + "showRecent": "Mises à jour récemment", + "showUnplayed": "Le plus d'épisodes non écoutés", + "shortest": "Plus courts d'abord", + "longest": "Plus longs d'abord", + "recentlyListened": "Écoutés récemment" + }, + "announce": { + "queued": "{title} ajouté à la file d'attente", + "queuedNext": "{title} sera lu ensuite", + "unqueued": "{title} retiré de la file d'attente", + "downloadReady": "Téléchargement de {title} terminé", + "downloadFailed": "Échec du téléchargement de {title}", + "evictedSpace": "Téléchargement de {title} supprimé pour libérer de l'espace", + "evictedPlayed": "Téléchargement de {title} supprimé après écoute", + "sleepExpired": "Minuterie de mise en veille écoulée, lecture en pause", + "sleepExtended": "Minuterie de mise en veille prolongée de {count} minutes", + "sleepChapterUnavailable": "Minuterie de mise en veille annulée : cet épisode n'a pas de chapitres" + }, + "shortcuts": { + "title": "Raccourcis clavier des podcasts", + "description": "Ces raccourcis fonctionnent tant qu'un épisode est chargé. Espace et les touches fléchées agissent sur la page du lecteur ou sur le mini-lecteur ; les signets ne peuvent être ajoutés que depuis la page du lecteur.", + "open": "Raccourcis clavier", + "togglePlayback": "Lecture ou pause", + "skipBackward": "Reculer", + "skipForward": "Avancer", + "next": "Épisode suivant", + "previous": "Épisode précédent", + "speedDown": "Réduire la vitesse de lecture", + "speedUp": "Augmenter la vitesse de lecture", + "mute": "Couper ou rétablir le son", + "volumeUp": "Augmenter le volume", + "volumeDown": "Baisser le volume", + "bookmark": "Ajouter un signet", + "help": "Afficher cette liste", + "spaceKey": "Espace", + "groups": { + "playback": "Lecture", + "navigation": "Navigation", + "tools": "Outils" + } + }, + "playlists": { + "title": "Playlists", + "builtInLabel": "Intégrée", + "savedLabel": "Enregistrées", + "choose": "Choisir une playlist", + "search": "Rechercher dans les épisodes de la playlist", + "summary": "{count} épisodes, {duration}", + "summaryShortest": "Durée minimale", + "summaryLongest": "Durée maximale", + "summaryPublishedWithin": "Publiés depuis", + "create": "Nouvelle playlist", + "createTitle": "Nouvelle playlist intelligente", + "editTitle": "Modifier la playlist intelligente", + "editorDescription": "Choisissez les épisodes que rassemble cette playlist intelligente. Les règles sont réévaluées chaque fois que vous l'ouvrez : les nouveaux épisodes apparaissent automatiquement.", + "edit": "Modifier les règles", + "adjustRules": "Ajuster les règles", + "saveAs": "Enregistrer comme playlist", + "save": "Enregistrer la playlist", + "delete": "Supprimer la playlist", + "deleteConfirmTitle": "Supprimer cette playlist ?", + "deleteConfirmDescription": "« {name} » et ses règles seront supprimées. Les épisodes qu'elle rassemble ne sont pas affectés.", + "nameLabel": "Nom de la playlist", + "namePlaceholder": "Trajet du matin", + "filterLabel": "Épisodes", + "sortLabel": "Ordre", + "minDuration": "Durée minimale (minutes)", + "maxDuration": "Durée maximale (minutes)", + "publishedWithin": "Publiés au cours des derniers (jours)", + "showsLabel": "Émissions", + "showsDescription": "Laissez vide pour inclure toutes les émissions de la bibliothèque.", + "searchShows": "Rechercher des émissions à ajouter", + "removeShow": "Retirer {title}", + "showLimit": "Une playlist peut cibler jusqu'à {count} émissions.", + "copyOf": "Copie de {name}", + "empty": "Rien ne correspond encore à cette playlist", + "emptyDescription": "Ajustez les règles, ou revenez quand de nouveaux épisodes seront arrivés.", + "builtIn": { + "quick": "Écoutes rapides", + "continue": "Reprendre l'écoute", + "downloaded": "Téléchargés", + "fresh": "Nouveautés de la semaine" + }, + "nameRequired": "Nommez la playlist avant de l'enregistrer" + }, + "downloadWidget": { + "title": "Téléchargements", + "progress": "{completed} sur {total} téléchargés", + "progressWithFailures": "{completed} sur {total} téléchargés ; {failed} en échec", + "progressWithCancelled": "{completed} sur {total} téléchargés ; {cancelled} annulés", + "complete": "Téléchargements terminés : {count}", + "expand": "Développer la progression des téléchargements", + "collapse": "Réduire la progression des téléchargements", + "overallProgress": "Progression globale des téléchargements", + "unknownPodcast": "Podcast", + "unknownEpisode": "Épisode", + "batchProgress": "{completed} sur {total} terminés", + "dismiss": "Masquer la progression des téléchargements", + "bytes": "{received} sur {total}", + "episodeProgress": "Progression du téléchargement : {title}", + "status": { + "queued": "En file d'attente", + "downloading": "Téléchargement", + "completed": "Téléchargé", + "failed": "Échec", + "cancelled": "Annulé" + } + }, + "collections": { + "addAction": "Ajouter à une collection", + "addTitle": "Ajouter à une collection", + "addDescription": "Choisissez une collection de podcasts pour {title}.", + "added": "Ajouté à {name}", + "addFailed": "Impossible d'ajouter l'émission à cette collection.", + "createFailed": "Impossible de créer la collection.", + "alreadyIn": "Déjà dans cette collection", + "none": "Aucune collection de podcasts pour l'instant. Créez-en une ci-dessous.", + "newPlaceholder": "Podcasts de science-fiction", + "newLabel": "Nom de la nouvelle collection", + "create": "Créer", + "newCollection": "Nouvelle collection", + "existing": "Collections", + "inCollection": "Dans cette collection", + "showCount": "{count} émissions", + "removed": "Retiré de {name}", + "removeFailed": "Impossible de retirer l'émission de cette collection." + } + }, "titles": { "dashboard": "Tableau de bord", "libraries": "Bibliothèques", + "podcastLibraries": "Bibliothèques de podcasts", + "podcastScope": "Playlist intelligente", + "podcastCollection": "Collection de podcasts", "opds": "OPDS", "koboSync": "Kobo Synchronisation", "koreaderSync": "KOReader Synchronisation", "bookDock": "Book Dock", "whatsNew": "Quoi de neuf", "annotations": "Annotations", - "achievements": "Réalisations", + "achievements": "Succès", "statistics": "Statistiques", "authors": "Auteurs", "series": "Série", @@ -10085,6 +11421,9 @@ "collection": "Collection", "author": "Auteur", "book": "Livre", + "podcasts": "Podcasts", + "podcast": "Podcast", + "podcastEpisode": "Épisode", "seriesItem": "Série", "appearance": { "theme": "Affichage", @@ -10124,7 +11463,8 @@ "account-activity": "Activité du compte", "magic-links": "Liens magiques", "oidc": "OIDC / SSO", - "server-fonts": "Polices du serveur" + "server-fonts": "Polices du serveur", + "tts": "Synthèse vocale" }, "system": { "file-naming": "Nom du fichier", @@ -10144,6 +11484,88 @@ "missingResources": "Ressources manquantes", "bookRequests": "Demandes", "bookRequestDetail": "Demande", - "bookRequestReleases": "Choisir une release" + "bookRequestReleases": "Choisir une release", + "tts": "Synthèse vocale" + }, + "tts": { + "readerControls": { + "listen": "Écouter", + "playing": "Lecture en cours" + }, + "player": { + "fallbackTitle": "Synthèse vocale", + "play": "Lancer la synthèse vocale", + "pause": "Mettre la synthèse vocale en pause", + "openMiniPlayer": "Ouvrir le mini-lecteur", + "shrinkPlayer": "Réduire le lecteur", + "expandPlayer": "Agrandir le lecteur", + "collapsePlayer": "Replier le lecteur", + "openDetails": "Ouvrir les détails du lecteur", + "previousSentence": "Phrase précédente", + "nextSentence": "Phrase suivante", + "meta": "Ch. {chapter} – Phrase {sentence} – {voice} – {speed}x", + "metaWithoutVoice": "Ch. {chapter} – Phrase {sentence} – {speed}x", + "position": "Chapitre {chapter} – Phrase {sentence}", + "playbackError": "Erreur de lecture – touchez Lecture pour réessayer", + "voice": "Voix", + "sleep": "Minuterie", + "sleepRemaining": "{count} min", + "currentVoice": "Voix actuelle", + "chooseVoice": "Choisir une voix", + "saveForBook": "Enregistrer pour ce livre", + "setAsDefault": "Définir par défaut partout", + "bookVoiceSaved": "Voix enregistrée pour ce livre", + "bookVoiceSaveFailed": "Impossible d'enregistrer la voix du livre", + "defaultVoiceSaved": "Voix de synthèse par défaut mise à jour", + "defaultVoiceSaveFailed": "Impossible de mettre à jour la voix par défaut", + "stop": "Arrêter" + }, + "speed": { + "label": "Vitesse de lecture", + "value": "{speed}x" + }, + "sleepTimer": { + "title": "Minuterie de mise en veille", + "preset": "{count} min", + "presetLabel": "Arrêter la lecture dans {count} minutes", + "cancel": "Annuler", + "cancelLabel": "Annuler la minuterie de mise en veille", + "remaining": "Arrêt dans {minutes} min {seconds} s" + }, + "resume": { + "title": "Reprendre la synthèse vocale ?", + "description": "Une position de synthèse vocale est enregistrée", + "descriptionWithChapter": "Une position de synthèse vocale est enregistrée (chapitre {chapter})", + "resume": "Reprendre", + "startHere": "Commencer à cette page", + "dismiss": "Ignorer", + "clearing": "Effacement...", + "confirmClear": "Confirmer l'effacement", + "clearSavedPosition": "Effacer la position enregistrée" + }, + "voicePicker": { + "search": "Rechercher des voix...", + "allProviders": "Tous", + "allLanguages": "Toutes les langues", + "allCountries": "Tous les pays", + "filterByLanguage": "Filtrer par langue", + "filterByCountry": "Filtrer par pays", + "empty": "Aucune voix trouvée", + "select": "Sélectionner {name}", + "preview": "Écouter {name}", + "voiceWithLocale": "{voice} – {locale}" + }, + "settings": { + "description": "Configurez votre voix de synthèse par défaut et vos paramètres de lecture.", + "defaultVoice": "Voix par défaut", + "selectVoice": "Sélectionner une voix...", + "change": "Modifier", + "defaultSpeed": "Vitesse par défaut", + "saved": "Préférences de synthèse vocale enregistrées", + "saveFailed": "Impossible d'enregistrer les préférences de synthèse vocale" + }, + "errors": { + "generic": "Erreur de synthèse vocale" + } } } diff --git a/client/src/locales/hu.json b/client/src/locales/hu.json index ba20c0179..6fb8b0126 100644 --- a/client/src/locales/hu.json +++ b/client/src/locales/hu.json @@ -16,7 +16,15 @@ "yes": "Igen", "no": "Nem", "show": "Mutat", - "hide": "Elrejt" + "hide": "Elrejt", + "undo": "Visszavon", + "pagination": { + "label": "Oldalszámozás", + "pageOf": "{page} / {totalPages} oldal", + "previousPage": "Előző oldal", + "nextPage": "Következő oldal", + "goToPage": "Ugrás erre az oldalra: {page}" + } }, "settings": { "privacySharing": { @@ -74,7 +82,7 @@ }, "durationMinutes": "{count, plural, one {# perc} other {# perc}}", "durationHours": "{count, plural, one {# óra} other {# óra}}", - "unknownTitle": "Cím nélküli könyv", + "unknownTitle": "Névtelen könyv", "errors": { "load": "Nem sikerült betölteni a megosztási beállításokat.", "save": "Nem sikerült frissíteni a megosztási beállításokat.", @@ -179,7 +187,7 @@ "surfaceBrightness": { "label": "Felület fényessége", "hint": "Sötét módú felületek világosítása", - "reset": "Alaphelyzet" + "reset": "Visszaállítás" }, "libraryBackground": { "title": "Könyvtár háttere", @@ -424,7 +432,7 @@ "icons": { "title": "Egyéni ikonok", "uploadIcons": "Ikonok feltöltése", - "uploadedCount": "{count, plural, =0 {nincsenek feltöltött ikonok} one {# feltöltött ikon} other {# feltöltött ikon}}", + "uploadedCount": "{count, plural, =0 {nincs feltöltött ikon} one {# feltöltött ikon} other {# feltöltött ikon}}", "searchPlaceholder": "Ikonok keresése", "sort": { "newest": "Legújabb", @@ -443,9 +451,9 @@ "rename": "Átnevez", "replace": "Csere", "usage": { - "libraries": "{count, plural, =0 {nincsenek könyvtárak} one {# könyvtár} other {# könyvtár}}", - "collections": "{count, plural, =0 {nincsenek gyűjtemények} one {# gyűjtemény} other {# gyűjtemény}}", - "smartScopes": "{count, plural, =0 {nincsenek okos gyűjtemények} one {# okos gyűjtemény} other {# okos gyűjtemény}}" + "libraries": "{count, plural, =0 {nincs könyvtár} one {# könyvtár} other {# könyvtár}}", + "collections": "{count, plural, =0 {nincs gyűjtemény} one {# gyűjtemény} other {# gyűjtemény}}", + "smartScopes": "{count, plural, =0 {nincs okos gyűjtemény} one {# okos gyűjtemény} other {# okos gyűjtemény}}" }, "confirm": { "deleteOne": "Törli a „{name}” elemet? A meglévő alkalmazások ikonja visszaáll az alapértelmezettre.", @@ -532,7 +540,7 @@ "avatar": { "title": "Profilkép", "unknownUser": "Ismeretlen felhasználó", - "formatHint": "PNG/JPEG/WEBP maximális méret {size} MB", + "formatHint": "PNG/JPEG/WEBP, legfeljebb {size} MB", "upload": "Kép feltöltése", "replace": "Kép cseréje", "uploading": "Feltöltés...", @@ -658,8 +666,8 @@ "errors": { "create": "Nem sikerült létrehozni", "copy": "A magic link másolása sikertelen", - "update": "A magic link frissítése nem sikerült", - "revoke": "A magic link visszavonása nem sikerült" + "update": "A magic link frissítése sikertelen", + "revoke": "A magic link visszavonása sikertelen" }, "usersPage": "Felhasználók oldal", "emptyTitle": "Még nincs magic link létrehozva", @@ -706,7 +714,7 @@ "clientId": "Client ID", "clientSecret": "Client Secret", "clientSecretPlaceholder": "Hagyd üresen a meglévő megtartásához", - "scopes": "Hatókör", + "scopes": "Hatókörök", "claimMapping": "Hozzárendelés lekérése", "previewClaims": "Lekérések előnézete", "redirecting": "Átirányítás...", @@ -733,6 +741,7 @@ "connected": "Csatlakoztatva - {issuer}", "connectionFailed": "Csatlakozás sikertelen", "privateIssuerAddress": "A kibocsátó URL-címe egy privát vagy helyi hálózati címre van feloldva, ezért a szerver megtagadta a csatlakozást. Állítsa be az OIDC_ALLOW_LOCAL_ISSUERS=true értéket a BookOrbit szerveren az engedélyezéshez.", + "tlsCertificateUntrusted": "A BookOrbit nem tudta ellenőrizni az OIDC-szolgáltató TLS-tanúsítványát. Ha a szolgáltató privát tanúsítványkiadót használ, csatold annak PEM CA-tanúsítványcsomagját, állítsd be a NODE_EXTRA_CA_CERTS környezeti változót a csomag konténeren belüli elérési útjára, majd indítsd újra a BookOrbitot.", "hide": "Elrejt", "details": "Részletek", "supported": "támogatott", @@ -799,8 +808,8 @@ "continueSetup": "Beállítás folytatása", "viewDetails": "Részletek mutatása", "refreshRecommendationIndex": "Javaslatok indexének frissítése", - "refreshRecommendationHint": "Frissítse az ajánlómotort a legújabb könyvtármódosításokkal. Ez a folyamat a háttérben fut.", - "booksQueuedForProcessing": "{count, plural, =0 {nincsenek feldolgozásra váró könyvek} one {# könyv vár feldolgozásra} other {# könyv vár feldolgozásra}}", + "refreshRecommendationHint": "Frissítsd az ajánlómotort a legújabb könyvtármódosításokkal. Ez a folyamat a háttérben fut.", + "booksQueuedForProcessing": "{count, plural, =0 {nincs feldolgozásra váró könyv} one {# könyv vár feldolgozásra} other {# könyv vár feldolgozásra}}", "run": "Futtatás", "running": "Folyamatban...", "backfillAchievements": "Trófeák pótlása", @@ -812,7 +821,7 @@ "updateChecksEnabled": "Frissítési ellenőrzések engedélyezve", "updateChecksDisabled": "Frissítési ellenőrzések letiltva", "updateSettingFailed": "Nem sikerült frissíteni a beállítást", - "booksQueuedForEmbedding": "{count, plural, =0 {nincsenek beágyazásra váró könyvek} one {# könyv vár beágyazásra} other {# könyv vár beágyazásra}}", + "booksQueuedForEmbedding": "{count, plural, =0 {nincs beágyazásra váró könyv} one {# könyv vár beágyazásra} other {# könyv vár beágyazásra}}", "failed": "Sikertelen", "unknownError": "Ismeretlen hiba", "rebuildEmbeddingsFailed": "Nem sikerült újraépíteni a beágyazásokat: {error}", @@ -939,7 +948,7 @@ "strategyPathMapping": "A leképezett fájlútvonal alapján egyeztetve", "strategyTitleAuthor": "Cím és szerző alapján egyeztetve", "strategyUnavailable": "Egyeztetési stratégia nem elérhető", - "userPreviewCounts": "{statuses} állapotok, {progress} előrehaladási bejegyzések, {bookmarks} könyvjelzők, {annotations} jegyzetek, {collections} gyűjtemény bejegyzések", + "userPreviewCounts": "{statuses} állapotok, {progress} előrehaladási bejegyzések, {bookmarks} könyvjelzők, {annotations} annotációk, {collections} gyűjtemény bejegyzések", "connErrorUnreachable": "Nem sikerült elérni az adatbázis-kiszolgálót. Ellenőrizze a kiszolgálót és a portot.", "connErrorAuth": "A hitelesítés sikertelen. Ellenőrizze a felhasználónevet és a jelszót.", "connErrorUnknownDatabase": "Az adatbázis nem található. Ellenőrizd az adatbázis nevét.", @@ -1048,7 +1057,7 @@ "readingProgressEntries": "Olvasási folyamat bejegyzései", "audiobookProgressEntries": "Hangoskönyv állapotának bejegyzései", "bookmarksLabel": "Könyvjelzők", - "annotationsLabel": "Jegyzetek", + "annotationsLabel": "Annotációk", "collectionEntries": "Gyűjtemény bejegyzések", "loadFullReportHint": "Kattints a „Teljes jelentés betöltése” gombra, ha a próbaüzem összefoglalóját szeretnéd belefoglalni az exportált jelentésbe.", "completedNoIssues": "A migrálás megoldatlan könyvek vagy hibák nélkül befejeződött.", @@ -1074,16 +1083,16 @@ "refreshCovers": "Borítók frissítése", "syncMetadataToFiles": "Metaadatok szinkronizálása fájlokhoz", "deleteLibrary": "Könyvtár törlése", - "bookCount": "{count, plural, =0 {nincsenek könyvek} one {# könyv} other {# könyv}}", + "bookCount": "{count, plural, =0 {nincs könyv} one {# könyv} other {# könyv}}", "booksUnit": "{count, plural, one {könyv} other {könyv}}", - "folderCount": "{count, plural, =0 {nincsenek mappák} one {# mappa} other {# mappa}}", + "folderCount": "{count, plural, =0 {nincs mappa} one {# mappa} other {# mappa}}", "fileMode": "Fájl mód", "folderMode": "Mappa mód", "emptyTitle": "Még nincsenek könyvtárak", "emptyHint": "Adj hozzá egy könyvtárat, hogy elkezdhesd rendszerezni a könyveidet.", "addFirstLibrary": "Első könyvtár hozzáadása", "deleteConfirmTitle": "Törlöd a következőt: {name}?", - "deleteConfirmBody": "Ez véglegesen eltávolítja az összes könyvet, metaadatot, olvasási folyamatot, könyvjelzőt és jegyzetet ebből a könyvtárból. A művelet nem vonható vissza.", + "deleteConfirmBody": "Ez véglegesen eltávolítja az összes könyvet, metaadatot, olvasási folyamatot, könyvjelzőt és annotációt ebből a könyvtárból. A művelet nem vonható vissza.", "deleteConfirmTypeName": "Írd be a könyvtár nevét a megerősítéshez:", "deleting": "Törlés...", "deleteLibraryButton": "Könyvtár törlése", @@ -1200,8 +1209,8 @@ }, "none": "Egyik sem", "allSupported": "Minden támogatott", - "patternCount": "{count, plural,one {#minta} other {# minta}}", - "peopleCount": "{count, plural, =0 {Nincsenek kifejezett jogosultságok} one {# személy} other {# személy}}", + "patternCount": "{count, plural,one {# minta} other {# minta}}", + "peopleCount": "{count, plural, =0 {Nincs kifejezett jogosultság} one {# személy} other {# személy}}", "historyEmpty": "Ezt a könyvtárat még soha nem szkennelték be.", "historyFailed": "Nem sikerült betölteni a könyvtár szkennelési előzményeit." }, @@ -1214,7 +1223,7 @@ "running": "Folyamatban...", "runEligibleShort": "Futtatásra jogosult", "runAllShort": "Összes futtatása", - "enableTitle": "Automatikus szerzői bővítés engedélyezése", + "enableTitle": "Automatikus szerzőbővítés engedélyezése", "enableHint": "Szerzői életrajzok és profilfotók automatikus lekérése könyvek hozzáadásakor vagy frissítésekor.", "triggerOnImportTitle": "Importáláskor aktiválódó", "triggerOnImportHint": "A szerzők sorba állítása a bővítéshez, amikor a könyvek először kerülnek fel a könyvtárba.", @@ -1229,8 +1238,8 @@ "runForEligibleAuthors": "Futtatás a megfelelő szerzőkre", "eligibleCount": "~{count} megfelelő", "runForAllAuthors": "Futtatás az összes szerzőre", - "saved": "Szerzői bővítési beállítások mentve", - "saveFailed": "Szerzői bővítési beállítások mentése sikertelen", + "saved": "Szerzőbővítési beállítások mentve", + "saveFailed": "Szerzőbővítési beállítások mentése sikertelen", "noEligibleAuthors": "Nem találhatók megfelelő szerzők", "noAuthorsToEnrich": "Nincsenek bővíthető szerzők", "queueFailed": "Nem sikerült a szerző feltöltését sorba állítani", @@ -1352,8 +1361,102 @@ "account-activity": "Fióktevékenység", "magic-links": "Magic linkek", "oidc": "OIDC / SSO", + "tts": "Szövegfelolvasás", "server-fonts": "Szerver betűtípusok" }, + "tts": { + "title": "Szolgáltatók", + "subtitle": "Az olvasók számára elérhető felolvasómotorok. A hangok szolgáltatónként vannak válogatva.", + "summary": "{providers, plural, one {# szolgáltató} other {# szolgáltató}} · {enabled} engedélyezve · {voices, plural, one {# válogatott hang} other {# válogatott hang}}", + "addProvider": "Szolgáltató hozzáadása", + "loadFailed": "Nem sikerült betölteni a szövegfelolvasás konfigurációját", + "empty": "Nincs beállítva beszéd-szolgáltató.", + "reorderHint": "Húzd át az átrendezéshez. Az olvasók ebben a sorrendben látják a szolgáltatókat.", + "dragHandle": "{name} átrendezése", + "moveUp": "{name} mozgatása felfelé", + "moveDown": "{name} mozgatása lefelé", + "reorderFailed": "Nem sikerült menteni a szolgáltatók sorrendjét", + "expand": "{name} részleteinek megjelenítése", + "collapse": "{name} részleteinek elrejtése", + "toggleEnabled": "{name} engedélyezése", + "enableFailed": "{name} frissítése sikertelen", + "statusConnected": "Csatlakoztatva", + "statusUnreachable": "Nem elérhető", + "statusUnchecked": "Nem ellenőrzött", + "voiceCount": "{count, plural, one {# hang} other {# hang}}", + "configuration": "Beállítások", + "fieldType": "Típus", + "fieldTypeOpenAi": "OpenAI-kompatibilis", + "fieldApiKey": "API-kulcs", + "apiKeySet": "Beállítva", + "apiKeyNotSet": "Nincs beállítva", + "fieldModel": "Alapértelmezett modell", + "fieldModelNone": "Szolgáltatói alapértelmezés", + "fieldDiscovery": "Hangok felkutatása", + "discoverySupported": "Támogatott", + "discoveryUnsupported": "Nem támogatott", + "voices": "Hangok", + "voicesCurated": "{count} válogatott", + "voicesTapToPreview": "Koppints egy hangra a meghallgatásához", + "voicesNone": "Még nincsenek hangok beállítva", + "manageVoices": "Hangok kezelése", + "previewVoice": "{name} előnézete", + "previewStop": "Előnézet leállítása", + "previewFailed": "Nem sikerült lejátszani a(z) {name} előnézetét", + "previewNeedsEnabled": "Engedélyezd a szolgáltatót a hangjai előnézetéhez", + "editConfiguration": "Beállítás szerkesztése", + "testConnection": "Kapcsolat tesztelése", + "testPassed": "Csatlakozva · {count, plural, one {# hang található} other {# hang található}}", + "testFailed": "Csatlakozás sikertelen", + "delete": "Törlés", + "deleteConfirm": "Törlöd a(z) „{name}” szolgáltatót? Az e szolgáltató hangjait használó olvasók átváltanak egy másik szolgáltatóra.", + "deleteFailed": "{name} törlése sikertelen", + "deleted": "Szolgáltató törölve", + "saveFailed": "{name} mentése sikertelen", + "saved": "Szolgáltató mentve", + "formAddTitle": "Új szolgáltató", + "formEditTitle": "Szolgáltató szerkesztése", + "formName": "Név", + "formNamePlaceholder": "Kokoro", + "formBaseUrl": "Alap URL", + "formBaseUrlPlaceholder": "http://localhost:8880/v1", + "formApiKey": "API-kulcs", + "formApiKeyOptional": "Opcionális", + "formApiKeyPlaceholder": "sk-...", + "formApiKeyKeep": "Hagyd üresen a jelenlegi kulcs megtartásához", + "formModel": "Alapértelmezett modell", + "formModelPlaceholder": "tts-1", + "formDiscovery": "Ez a szolgáltató képes automatikusan listázni a saját hangjait", + "formRequired": "Név és alap URL megadása kötelező", + "curation": { + "title": "Hangok kezelése - {provider}", + "summary": "{count, plural, one {# beállított hang} other {# beállított hang}}", + "summaryUnsaved": "{count, plural, one {# beállított hang} other {# beállított hang}} - Nem mentett változások", + "importFromProvider": "Importálás szolgáltatótól", + "loadPreset": "{preset} előbeállítás betöltése", + "importUnsupported": "Ez a szolgáltató nem támogatja a hangok felkutatását.", + "importUnsupportedWithPreset": "Ez a szolgáltató nem támogatja a hangok felkutatását. Használd helyette a „{preset} előbeállítás betöltése” gombot.", + "discoveryUnsupported": "Ez a szolgáltató nem biztosít végpontot a hanglista lekéréséhez.", + "discoverFailed": "Nem sikerült felkutatni a hangokat", + "emptyImportOrPreset": "Nincsenek hangok beállítva. Importálj szolgáltatótól, vagy tölts be egy előbeállítást.", + "emptyImport": "Nincsenek hangok beállítva. Importálj szolgáltatótól.", + "emptyPreset": "Nincsenek hangok beállítva. A kezdéshez tölts be egy előbeállítást.", + "emptyManual": "Nincsenek hangok beállítva. Adj hozzá hangokat manuálisan.", + "columnId": "Azonosító", + "columnName": "Név", + "columnLocale": "Nyelv", + "columnGender": "Nem", + "genderMale": "Férfi", + "genderFemale": "Nő", + "genderUnknown": "Ismeretlen", + "cancelEdit": "Szerkesztés megszakítása", + "editVoice": "{name} szerkesztése", + "deleteVoice": "{name} törlése", + "previewVoice": "{name} előnézete", + "stopPreview": "{name} előnézetének leállítása", + "saveVoices": "{count, plural, one {# hang mentése} other {# hang mentése}}" + } + }, "serverFonts": { "title": "Szerver betűtípusok", "subtitle": "Tölts fel olyan betűtípusokat, amelyeket minden felhasználó kiválaszthat az eBook-olvasóban anélkül, hogy saját betűtípusokat kellene feltöltenie.", @@ -1367,17 +1470,19 @@ "libraries": "Könyvtárak", "display": "Megjelenés", "reader": "Olvasó", - "metadata": "Metaadat", + "metadata": "Metaadatok", "usersAccess": "Felhasználók és hozzáférés", "email": "Email", "opds": "OPDS", "kobo": "Kobo", "koreader": "KOReader", + "tts": "Szövegfelolvasás", "integrations": "Integrációk", "hardcover": "Hardcover", "admin": "Adminisztrátor", "system": "Rendszer", - "account": "Fiók" + "account": "Fiók", + "podcasts": "Podcastok" } }, "integrations": { @@ -1395,7 +1500,7 @@ } }, "metadata": { - "title": "Metaadat", + "title": "Metaadatok", "subtitle": "Metaadat-szolgáltatók, egyeztetési szabályok, automatizálás és szerzői javítás konfigurálása.", "noPermission": "Nincs jogosultságod a metaadat-beállítások kezelésére.", "fields": { @@ -1403,6 +1508,7 @@ "subtitle": "Alcím", "description": "Leírás", "cover": "Borító", + "audioCover": "Hangoskönyv-borító", "authors": "Szerzők", "publisher": "Kiadó", "publishedYear": "Kiadás éve", @@ -1475,10 +1581,10 @@ }, "lastRun": { "justNow": "épp most", - "minutesAgo": "{count} perccel ezelőtt", - "hoursAgo": "{count} órával ezelőtt", + "minutesAgo": "{count} perce", + "hoursAgo": "{count} órája", "yesterday": "tegnap", - "daysAgo": "{count, plural, one {# nappal ezelőtt} other {# nappal ezelőtt}}", + "daysAgo": "{count, plural, one {# napja} other {# napja}}", "label": "Utolsó futtatás: {when}", "labelQueued": "Utolsó futtatás: {when} - {count} könyv sorba állítva", "labelNoneEligible": "Utolsó futtatás: {when} - nincsenek megfelelő könyvek" @@ -1489,18 +1595,18 @@ "noneEnabled": "Nincsenek engedélyezett feltételek", "neverFetched": { "label": "Soha nem volt lekérdezve", - "hint": "Olyan könyvek lekérdezése, amelyeknél metaadat-lekérdezési kísérlete még nem történt.", - "summary": "Soha nem volt lekérdezve" + "hint": "Olyan könyvek lekérése, amelyeknél metaadat-lekérdezési kísérlete még nem történt.", + "summary": "Soha nem volt lekérve" }, "scoreThreshold": { "label": "Alacsony metaadat-pontszám", - "hint": "Lekérdezés, ha a metaadat-pontszám egy küszöbérték alatt van.", + "hint": "Lekérés, ha a metaadat-pontszám egy küszöbérték alatt van.", "scoreBelow": "Pontszám alatt", "summary": "Pontszám < {threshold}" }, "missingFields": { "label": "Hiányzó mezők", - "hint": "Lekérdezés, ha a kiválasztott mezők bármelyike ​​üres.", + "hint": "Lekérés, ha a kiválasztott mezők bármelyike ​​üres.", "summary": "{count, plural,one {# mező hiányzik} other {# mező hiányzik}}" } }, @@ -1587,6 +1693,7 @@ "clearAllProviders": "Összes szolgáltató törlése", "clearAll": "Összes törlése", "resetToDefault": "Visszaállítás alapértelmezettre", + "bookCover": "Könyvborító", "reset": "Visszaállítás", "dragProvidersHint": "Húzd innen a szolgáltatókat bármelyik mezőre a hozzáadáshoz", "dragProviderHere": "húzz ide egy szolgáltatót", @@ -1721,6 +1828,7 @@ "makeFirst": "Legyen mindenhol első", "makeLast": "Legyen mindenhol utolsó", "removeEverywhere": "Eltávolítás minden mezőből", + "audioCoverOrderKept": "Az átrendezés figyelmen kívül hagyja a hangoskönyv-borítókra vonatkozó szabályt, amely a hangoskönyv-forrásokat sorolja előre.", "allFields": "Minden mező", "overridesOnly": "Csak felülbírálások", "clearFilters": "Szűrők törlése" @@ -1795,7 +1903,7 @@ "hint": "Definiálj egy egyéni metaadatmezőt, és válaszd ki, mely könyvtárak használják." }, "previewToggle": "Nézd meg, hogyan jelenik majd meg ez a mező egy könyv szerkesztésekor", - "untitledField": "Cím nélküli mező", + "untitledField": "Névtelen mező", "addField": "Mező hozzáadása", "fields": "Mezők", "fieldsHint": "Húzással átrendezheted a mezőket, szerkesztheted a címkéket, be- és kikapcsolhatod a könyvtárakat, vagy archiválhatod a már nem szükséges mezőket.", @@ -2037,7 +2145,7 @@ "dropFilesHere": "Húzd ide a fájlokat", "dragFontsPrefix": "Húzd ide a betűtípusfájlokat, vagy", "browse": "tallózás", - "fileTypesHint": "TTF, OTF, WOFF, WOFF2 - maximum 50 MB egyenként", + "fileTypesHint": "TTF, OTF, WOFF, WOFF2 - egyenként legfeljebb 50 MB", "yourFonts": "Betűtípusaid", "fontsUsed": "{count} / {max} használatban", "noFontsYet": "Még nincsenek feltöltve betűtípusok", @@ -2314,9 +2422,9 @@ "copy": "Másolás", "never": "Soha", "justNow": "Épp most", - "minutesAgo": "{count} perccel ezelőtt", - "hoursAgo": "{count} órával ezelőtt", - "daysAgo": "{count} nappal ezelőtt", + "minutesAgo": "{count} perce", + "hoursAgo": "{count} órája", + "daysAgo": "{count} napja", "loadFailed": "Betöltés sikertelen", "devicePaired": "Eszköz sikeresen párosítva", "devicePairedHint": "Készen állsz a Kobo beállítására. Kövesd az alábbi utasításokat.", @@ -2392,7 +2500,7 @@ "failed": "Sikertelen", "noUpdates": "Nincsenek frissítések", "noChanges": "Nincs változás", - "pending": "Függő", + "pending": "Függőben", "completed": "Kész", "downloaded": "Letöltve", "updated": "Frissítve", @@ -2410,7 +2518,7 @@ "morePending": "További függőben lévő", "noUpdatesPending": "Nincsenek függőben lévő frissítések", "bookCount": "{count, plural, one {# könyv} other {# könyv}}", - "deletedAnnotations": "{count} törölt jegyzet", + "deletedAnnotations": "{count} törölt annotáció", "deviceAlreadyCurrent": "Az eszköz már naprakész", "freshHighlightData": "Friss kiemelés adat", "created": "{count} létrehozva", @@ -2477,7 +2585,7 @@ }, "koreader": { "title": "KOReader szinkronizálás", - "subtitle": "Böngészd a BookOrbit katalógusodat a KOReaderben, és szinkronizáld az olvasási haladást, a kiemeléseket és a jegyzetek változásait.", + "subtitle": "Böngészd a BookOrbit katalógusodat a KOReaderben, és szinkronizáld az olvasási haladást, a kiemeléseket és az annotációk változásait.", "tabs": { "sync": "Szinkronizálási beállítások", "fileNaming": "Fájlnevezés" @@ -2496,7 +2604,7 @@ "customOrganization": "Egyéni rendezés", "usingAccountDefault": "A fiók alapértelmezéseinek használata", "deviceDefaultHelp": "Tartalék beállítás ehhez az eszközhöz. Hagyd a fiók alapértelmezett értékével megegyezően, hogy a jövőbeni módosítások automatikusan öröklődjenek.", - "seriesBooks": "Könyvek egy sorozatban", + "seriesBooks": "Könyvek a sorozatban", "seriesHelp": "Opcionális elérési út, csak sorozatmetaadatokkal rendelkező könyvekhez. Hagyd üresen, ha az eszköz alapértelmezett elérési út mintáját szeretnéd használni.", "standaloneBooks": "Sorozat nélküli könyvek", "standaloneHelp": "Opcionális elérési út, csak sorozatmetaadatok nélküli könyvekhez. Hagyd üresen, ha az eszköz alapértelmezett elérési út mintáját szeretnéd használni.", @@ -2516,9 +2624,9 @@ "loadFailed": "Nem sikerült betölteni a KOReader beállításait", "never": "Soha", "justNow": "Épp most", - "minutesAgo": "{count} perccel ezelőtt", - "hoursAgo": "{count} órával ezelőtt", - "daysAgo": "{count} nappal ezelőtt", + "minutesAgo": "{count} perce", + "hoursAgo": "{count} órája", + "daysAgo": "{count} napja", "unknown": "Ismeretlen", "updateAvailable": "Frissítés érhető el", "manualUpdateRequired": "Kézi frissítés szükséges", @@ -2560,7 +2668,7 @@ "status": "KOReader állapota", "refresh": "Frissítés", "progressSync": "Haladás szinkronizálás", - "progressSyncHint": "Engedélyezi a KOReader eszközök számára a haladás, az olvasási tevékenység, a kiemelések és a jegyzettörlések szinkronizálását a BookOrbittal.", + "progressSyncHint": "Engedélyezi a KOReader eszközök számára a haladás, az olvasási tevékenység, a kiemelések és a annotációtörlések szinkronizálását a BookOrbittal.", "lastSync": "Utolsó szinkronizálás", "syncedBooks": "Szinkronizált könyv", "bookCount": "{count, plural, =0 {nincs könyv} one {# könyv} other {# könyv}}", @@ -2593,8 +2701,8 @@ "highlights": "Kiemelések", "syncedTotals": "Összes szinkronizált", "trashedHighlights": "Kukába tett kiemelések", - "pendingDeletes": "{count, plural, =0 {nincsenek törölt kiemelések, amelyek KOReader bővítmény visszaigazolására várnak.} one {# törölt kiemelés vár a KOReader bővítmény visszaigazolására.} other {# törölt kiemelés vár a KOReader bővítmény visszaigazolására.}}", - "failedPositions": "{count, plural, =0 {nincsenek figyelmet igénylő megjelölt helyek.} one {# figyelmet igénylő megjelölt hely.} other {# figyelmet igénylő megjelölt hely.}}", + "pendingDeletes": "{count, plural, =0 {nincs törölt kiemelés, amely KOReader bővítmény visszaigazolására vár.} one {# törölt kiemelés vár a KOReader bővítmény visszaigazolására.} other {# törölt kiemelés vár a KOReader bővítmény visszaigazolására.}}", + "failedPositions": "{count, plural, =0 {nincs figyelmet igénylő megjelölt hely.} one {# figyelmet igénylő megjelölt hely.} other {# figyelmet igénylő megjelölt hely.}}", "setupGuide": "Beállítási útmutató", "setupSteps": "KOReader beállítási lépések", "setupStepsHint": "Használd a BookOrbit bővítményt katalógusböngészéshez, letöltésekhez, haladáskövetéshez, olvasási eseményekhez és kiemelésekhez. Használd az alap bővítményt csak a haladáskövetéshez.", @@ -2677,7 +2785,7 @@ "minChars": "Írj be legalább 2 karaktert.", "searching": "Keresés...", "noBooksFound": "Nem találhatók könyvek.", - "untitledBook": "Cím nélküli könyv", + "untitledBook": "Névtelen könyv", "selected": "Kiválasztva", "select": "Kiválaszt", "loadMore": "Több betöltése", @@ -2710,7 +2818,7 @@ "enterMinChars": "Írj be legalább 2 karaktert.", "searching": "Keresés...", "noBooksFound": "Nem találhatók könyvek.", - "untitledBook": "Cím nélküli könyv", + "untitledBook": "Névtelen könyv", "selected": "Kiválasztva", "select": "Kiválaszt", "loadMore": "Több betöltése", @@ -2843,7 +2951,9 @@ "clientTypes": { "qbittorrent": "qBittorrent", "transmission": "Transmission", - "deluge": "Deluge" + "deluge": "Deluge", + "nzbget": "NZBGet", + "sabnzbd": "SABnzbd" }, "color": { "label": "Szín", @@ -2856,10 +2966,13 @@ "baseUrl": "Alap URL", "username": "Felhasználónév", "password": "Jelszó", + "apiKey": "API-kulcs", "passwordKeep": "Hagyd üresen a tárolt jelszó megtartásához", + "apiKeyKeep": "Hagyd üresen a tárolt API-kulcs megtartásához", "passwordClear": "Törlés", "passwordKeepAction": "Megtartás", "passwordWillClear": "A tárolt jelszó mentéskor törlődik", + "apiKeyWillClear": "A tárolt API-kulcs mentéskor törlődik", "category": "Kategória", "categoryHint": "Megcímkézi a BookOrbit által hozzáadott torrenteket, így csak önmagában működik.", "priority": "Prioritás", @@ -2868,6 +2981,7 @@ "allowPrivateAddress": "Privát címek engedélyezése", "allowPrivateAddressHint": "Akkor szükséges, ha a kliens a helyi hálózaton vagy ugyanazon a gépen fut.", "passwordBrief": "Titkosítva tárolva.", + "apiKeyBrief": "A SABnzbd programban a Beállítások > Általános menüpont alatt található. Titkosítva tárolva.", "useHardlinksBrief": "Seedelés a lemez kétszeri használata nélkül. Visszalép egy fájlrendszereken átívelő másolási folyamatra." }, "mappings": { @@ -2913,7 +3027,7 @@ "deleteFailed": "Nem sikerült eltávolítani a letöltő klienst", "testFailed": "A letöltő kliens nem elérhető", "nameAndUrlRequired": "Név és alap URL megadása kötelező", - "nameTaken": "Már létezik egy ilyen nevű letöltő kliens", + "nameTaken": "Már létezik letöltő kliens ezzel a névvel", "urlUnsafe": "Az alap URL nem érhető el. Ellenőrizd a címet, és hogy http vagy https protokollt használ-e.", "urlPrivate": "Ez a cím egy privát vagy helyi hálózaton található. Kapcsold be a „Privát címek engedélyezése” beállítást, ha a kliens ott fut.", "encryptionKeyMissing": "Jelszó mentése előtt állítsd be a BOOK_REQUEST_ENCRYPTION_KEY értékét. Generálj egyet a következő paranccsal: openssl rand -hex 32", @@ -2921,7 +3035,8 @@ "pathNotAbsolute": "Az útvonal-leképezéseknek mindkét oldalon abszolút útvonalakat kell használniuk", "nameRequired": "Adj nevet ennek a kliensnek.", "urlRequired": "Add meg azt a címet, amelyen a BookOrbitnak el kell érnie ezt a klienst.", - "mappingRequired": "Adj hozzá legalább egy elérési út leképezést, hogy a BookOrbit tudja, melyik könyvtárból importálhat." + "mappingRequired": "Adj hozzá legalább egy elérési út leképezést, hogy a BookOrbit tudja, melyik könyvtárból importálhat.", + "apiKeyRequired": "Add meg a SABnzbd API-kulcsát a Beállítások > Általános menüpontból." }, "encryptionKeyMissing": "A BOOK_REQUEST_ENCRYPTION_KEY nincs beállítva, ezért a kliensjelszó nem menthető. Hozzon létre egyet a következő paranccsal: openssl rand -hex 32", "confirmDelete": { @@ -2939,14 +3054,19 @@ "body": "A BookOrbit nem tartalmaz saját forrásokat, így a keresési kérések semmit sem találnak, amíg hozzá nem adsz egyet. Kétféleképpen lehetséges.", "bodyOneWay": "A BookOrbit nem tartalmaz saját forrásokat, így a keresési kérések semmit sem találnak, amíg hozzá nem adsz egyet.", "responsibility": "Az, hogy milyen forrásból adsz hozzá indexeket, a te felelősséged.", + "prowlarrTitle": "Prowlarr csatlakoztatása", + "prowlarrBody": "Kezelj több torrent- és Usenet-indexelőt egyetlen kapcsolaton keresztül.", + "recommended": "Ajánlott", "pluginTitle": "Bővítmény telepítése", "pluginBody": "Egy fájl, ami megtanítja a BookOrbitnak, hogy egy adott oldalon keressen. Megadod, majd kitöltöd a beállításait.", "torznabTitle": "Torznab indexelő hozzáadása", - "torznabBody": "Egy Prowlarr, Jackett vagy NZBHydra hírfolyamra mutat, amit már futtatsz. Hírfolyamonként egy." + "torznabBody": "Egy Prowlarr, Jackett vagy NZBHydra hírfolyamra mutat, amit már futtatsz. Hírfolyamonként egy.", + "builtInTitle": "Indexelő hozzáadása", + "builtInBody": "Mutass rá egy már használt Torznab- vagy Newznab-csatornára. Csatornánként egy konfiguráció adható meg." }, "add": "Indexelő hozzáadása", "edit": "Indexelő szerkesztése", - "delete": "Törlés: {name}", + "delete": "{name} törlése", "none": "Még nincsenek indexelők.", "disabled": "Letiltva", "test": "Kapcsolat tesztelése", @@ -2961,6 +3081,18 @@ "deleted": "Forrás törölve", "unavailable": "Ennek a telepítésnek nincs „{type}” indexelő típusa. Módosítsd a típust, vagy töröld a bővítményt és a mentett konfigurációt.", "pluginFailed": "A(z) „{directory}” könyvtárban található bővítmény nem töltődött be: {reason}", + "sources": { + "title": "Források", + "hint": "Minden, amiben a BookOrbit keresni tud, kapcsolatok szerint csoportosítva.", + "add": "Forrás hozzádása", + "prowlarr": "Prowlarr csatlakoztatása", + "prowlarrHint": "Kezelj egyszerre több torrent- és Usenet-indexelő szolgáltatást.", + "direct": "Torznab vagy Newznab hozzáadása", + "directHint": "Csatlakoztass közvetlenül egy kompatibilis csatornát.", + "plugin": "Bővítmény telepítése", + "pluginHint": "Speciális forrásimplementáció hozzáadása.", + "activeSummary": "{count, plural, one {# aktív forrás} other {# aktív forrás}}: {torrent} torrent, {usenet} Usenet, {direct} közvetlen" + }, "network": { "title": "Fejlett hálózat", "hint": "Csak akkor szükséges, ha az alapértelmezett elérési út erre a forrásra nem működik. Az engedélyezett címek nem változnak: bármilyen címet is érünk el, az ellenőrzés továbbra is ugyanúgy történik.", @@ -2972,14 +3104,16 @@ "proxyBrief": "Egy http vagy https proxy ehhez a forráshoz. A SOCKS nem támogatott." }, "types": { - "torznab": "Torznab (Jackett, Prowlarr, NZBHydra)" + "torznab": "Torznab (Jackett, Prowlarr, NZBHydra)", + "newznab": "Newznab" }, "fields": { "name": "Név", "type": "Indexelő típusa", "baseUrl": "Alap URL", "baseUrlHint": { - "torznab": "A torznab hírfolyam URL-címe, lekérdezési karakterlánc nélkül. A Jackett minden indexelőben \"Torznab hírcsatorna\" néven jeleníti meg." + "torznab": "A torznab hírfolyam URL-címe, lekérdezési karakterlánc nélkül. A Jackett minden indexelőben \"Torznab hírcsatorna\" néven jeleníti meg.", + "newznab": "A Newznab-oldal URL-je vagy API-végpontja, keresési lekérdezés nélkül." }, "credential": { "apiKey": "API-kulcs", @@ -3025,6 +3159,29 @@ "settings": { "restoreDefault": "Alapértékek visszaállítása" }, + "seeding": { + "applyTracker": "Tracker seed-célok alkalmazása", + "applyTrackerBrief": "Ha egy manuálisan megadott érték üres, a rendszer a tracker által jelentett érvényes célt használja. Ha ez ki van kapcsolva, az üres értékeknél a letöltőkliens alapértelmezései lépnek életbe. A manuálisan megadott értékek továbbra is érvényesek maradnak.", + "ratio": "Visszatöltési arány", + "ratioBrief": "Pozitív tizedeses szám. Ha üresen hagyod, az értéket a trackertől vagy a klienstől örökli.", + "time": "Visszatöltési idő (perc)", + "timeBrief": "Pozitív egész szám. Ha üresen hagyod, az értéket a trackertől vagy a klienstől örökli.", + "clientSupport": "A qBittorrent elfogadja a visszatöltési arányt és a teljes seedelési időt is. A Deluge és a Transmission csak a visszatöltési arányt támogatja. A kliensek globális szabályai, vagy a hamarabb elért korlát leállíthatja a visszatöltést, így ezek az értékek nem garantálják, hogy a tracker összes minimális elvárása teljesül.", + "futureGrabs": "A változtatások a jövőbeli letöltésekre vonatkoznak. A már meglévő vagy átvett torrentek megtarthatják a kliensspecifikus korlátokat. A tracker-tartalék kikapcsolása aktívan hagyja a kliens alapértelmezéseit; ez nem jelent korlátlan visszatöltést.", + "reset": "Visszatöltési beállítások alaphelyzetbe állítása", + "summary": { + "title": "Szabályzat áttekintése", + "ratio": "Arány", + "time": "Visszatöltési idő", + "manual": "Kézi: {value}", + "tracker": "Tartalék tracker", + "client": "Kliens alapértelmezése" + }, + "errors": { + "ratio": "Adj meg egy nullánál nagyobb véges számot, vagy hagyd üresen.", + "minutes": "Adj meg egy egész számot 1 és 2 147 483 647 között, vagy hagyd üresen." + } + }, "confirmDelete": { "title": "Törlöd ezt a forrást?", "description": "{name} címe, beállításai és tárolt hitelesítő adatai törlődtek. Kapcsold ki inkább, hogy az elvesztésük nélkül le szeretnéd állítani a keresést.", @@ -3036,7 +3193,7 @@ "deleteFailed": "Nem sikerült törölni a forrást", "testFailed": "Nem sikerült elérni az indexelőt", "nameAndUrlRequired": "Név és alap URL megadása kötelező", - "nameTaken": "Már létezik egy ilyen nevű indexelő", + "nameTaken": "Már létezik indexelő ezzel a névvel", "urlUnsafe": "Az alap URL nem érhető el. Ellenőrizd a címet, és hogy http vagy https protokollt használ-e.", "urlPrivate": "Ez a cím egy privát vagy helyi hálózaton található. Kapcsold be a „Privát címek engedélyezése” beállítást, ha az indexelő ott fut.", "credentialRequired": "Az indexelő használatához hitelesítő adatokra van szükség", @@ -3051,7 +3208,8 @@ "builtIn": "Beépített", "plugin": "Bővítmény", "typeDescriptions": { - "torznab": "Saját Jackett, Prowlarr vagy NZBHydra. Kategóriákat és seed célokat használ." + "torznab": "Saját Jackett, Prowlarr vagy NZBHydra. Kategóriákat és seed célokat használ.", + "newznab": "Egy Newznab-kompatibilis Usenet-indexer. Kategóriákat használ, és API-kulcs szükséges hozzá." }, "plugins": { "title": "Bővítmények", @@ -3079,6 +3237,25 @@ "usedBy": "{count, plural, one {# forrás használja} other {# forrás használja}}", "unused": "még egyetlen forrás sem használja", "update": "Plugin frissítése", + "checkUpdates": "Frissítések keresése", + "updateCheckComplete": "A bővítményfrissítések ellenőrzése befejeződött.", + "updateCheckFailed": "Nem sikerült ellenőrizni a bővítményfrissítéseket.", + "updateInspectFailed": "A közzétett bővítményfrissítést nem sikerült ellenőrizni.", + "reviewUpdate": "Frissítés áttekintése", + "updated": "A(z) {label} sikeresen frissítve a következő verzióra: {version}.", + "autoUpdate": "Aláírt frissítések automatikus telepítése", + "autoUpdateFailed": "Nem sikerült módosítani a bővítmény automatikus frissítési beállításait.", + "installedVersion": "Telepített verzió", + "updateChannel": "Aláírt frissítési csatorna", + "signatureVerified": "A letöltött forrás megegyezik a kiadó Ed25519-aláírásával.", + "updateStates": { + "unsupported": "Kézi frissítések", + "unchecked": "Még nem ellenőrzött", + "current": "Naprakész", + "available": "{version} verzió elérhető", + "custom": "Egyedi verzió", + "failed": "Frissítés ellenőrzése sikertelen" + }, "wrongType": "Az a fájl a(z) {found} bővítmény, nem a(z) {expected}.", "replaceTitle": "Lecseréled ezt a bővítményt?", "replace": "Bővítmény lecserélése", @@ -3101,6 +3278,61 @@ }, "posture": "A BookOrbit nem biztosít vagy támogat indexelő forrásokat. Minden itt található forrást Ön állított be, és Ön felelős azért, hogy mit keres és tölt le rajta keresztül." }, + "managers": { + "add": "Prowlarr hozzáadása", + "loading": "Prowlarr kapcsolatok betöltése...", + "managedSources": "{count, plural, one {# kezelt indexelő} other {# kezelt indexelő}}", + "protocol": { + "torrent": "Torrent", + "usenet": "Usenet" + }, + "saved": "Prowlarr beállítások mentve", + "deleted": "Prowlarr eltávolítva", + "synced": "A Prowlarr-források szinkronizálva", + "test": "Kapcsolat tesztelése", + "sync": "Szinkronizálás", + "testOk": "Csatlakozva a Prowlarr {version} verziójához. Talált források száma: {count, plural, one {# forrás} other {# forrás}}.", + "unavailable": "Nem elérhető", + "priority": "Prowlarr-prioritás: {priority}", + "toggleSource": "Keresés ezzel: {name}", + "changeColor": "{name} színének megváltoztatása", + "sourceColor": "Forrás színe", + "sourceColorHint": "Megjelöli a(z) {name} által visszaadott kiadásokat a BookOrbit egészében.", + "noSources": "Nem találhatók kompatibilis torrent- vagy Usenet-indexelők. Végezz szinkronizálást, miután hozzáadtál egyet a Prowlarr felületén.", + "unknown": "Ismeretlen", + "editorDescription": "Csatlakozási és forrásszinkronizálási beállítások a Prowlarrhoz.", + "confirmDelete": "Eltávolítod ezt a Prowlarr-kapcsolatot?", + "deleteConsequence": "A kapcsolat, a titkosított API-kulcs és az összes szinkronizált forrás törlődik. A már folyamatban lévő letöltések nem lesznek eltávolítva.", + "fields": { + "name": "Név", + "color": "Csatlakozás színe", + "colorHint": "Itt jelölheted meg ezt a Prowlarr-kapcsolatot. Minden kezelt indexelő saját színnel rendelkezik a kiadásokhoz.", + "baseUrl": "Alap URL", + "apiKey": "API-kulcs", + "apiKeyHint": "A Prowlarr programban a Beállítások > Általános > Biztonság menüpont alatt található. Titkosítva tárolva.", + "syncNew": "Újonnan felfedezett források engedélyezése", + "syncNewHint": "Az új Prowlarr-indexelők azonnal kereshetővé válnak. Az itt kikapcsolt források a későbbi szinkronizálások után is kikapcsolva maradnak.", + "autoExpand": "Újrapróbálás kategóriaszűrők nélkül", + "autoExpandHint": "Ha egy indexelő sikeres választ ad találat nélkül, próbálja meg újra egyszer a BookOrbit könyvkategória-szűrője nélkül.", + "inheritSeedLimits": "Prowlarr visszatöltési korlátok használata", + "inheritSeedLimitsHint": "Alkalmazza az egyes torrent-indexelők beállított visszatöltési arányát és visszatöltési idejét a jövőbeli letöltésekre, ha nem létezik BookOrbit-felülbírálás.", + "perIndexerTimeout": "Indexelő időtúllépése (másodperc)", + "perIndexerTimeoutHint": "Mennyi ideig tarthat egyetlen forrás szinkronizálása. A lassú, FlareSolverr-alapú indexelőknek több időre lehet szükségük.", + "overallBudget": "Prowlarr-időkeret (másodperc)", + "overallBudgetHint": "Az egyetlen keresés során az ebből a Prowlarr-kapcsolatból származó összes forrás által együttesen felhasználható maximális valós idő." + }, + "errors": { + "load": "Nem sikerült betölteni az indexelőkezelőket", + "nameTaken": "Már létezik Prowlarr-kapcsolat ezzel a névvel", + "urlPrivate": "Ez a cím egy privát vagy helyi hálózaton található. Kapcsold be a „Privát címek engedélyezése” opciót, ha a Prowlarr ott fut.", + "required": "Adj meg egy nevet, egy alap-URL-t és egy API-kulcsot.", + "save": "Nem sikerült menteni a Prowlarr-kapcsolatot", + "delete": "Nem sikerült törölni a Prowlarr-kapcsolatot", + "test": "A Prowlarr nem elérhető", + "sync": "Nem sikerült szinkronizálni a Prowlarr-forrásokat", + "source": "Nem sikerült módosítani a forrást" + } + }, "automation": { "title": "Automatizálás", "pipeline": "Amikor a letöltés befejeződik, a fájl áthalad a Book Dockon, ahol beolvassa a címét és a szerzőt, hogy a fájl neve és a megfelelő iktatás megtörténhessen, majd magától átkerül a kérés célkönyvtárába. Csak akkor áll meg, ha az importellenőrzés be van kapcsolva, és a fájl nem felel meg a kértnek.", @@ -3129,6 +3361,7 @@ "autoGrabDisabled": "Az automatikus letöltések ki vannak kapcsolva", "minScore": "Minimális kiadási pontszám", "minScoreHint": "Az ennél alacsonyabb pontszámú kiadások letöltése soha nem történik meg automatikusan. A pontszámok 100-ig futnak, és a cím és a szerző egyezésének mértéke nagyjából egyet tesz ki, a formátummal, a fájlmérettel, a seederekkel és a forrás prioritásával együtt. Ha semmi nem ér el elég magas pontszámot, a kérés megvárja, hogy valaki manuálisan válasszon ki egy kiadást, és közli, hogy miért állt le.", + "minScoreHintV2": "Az ennél alacsonyabb pontszámot elérő kiadásokat a rendszer soha nem tölti le automatikusan. A pontszámok maximuma 100 pont. Legnagyobb mértékben a cím és a szerző relevanciája számít, ezt követi a formátum és az ésszerű fájlméret, valamint a swarm állapota és a freeleech jelzés, ha a forrás biztosítja azokat. Ha egyik kiadás sem ér el elég magas pontszámot, az igénylés várakozó állapotba kerül, amíg valaki kézzel ki nem választ egy kiadást, a rendszer pedig megjelöli a leállás okát.", "autoRetry": "Hiba után próbálja ki a következő kiadást", "autoRetryHint": "Amikor egy automatikus letöltés sikertelen, a rendszer a feladás helyett a következő legjobb verziót próbálja ki. Ez vonatkozik arra az esetre, ha a forrás nem hajlandó átadni a fájlt, vagy ha a letöltés félbeszakad. Ez csak azokra a verziókra vonatkozik, amelyeket a BookOrbit maga választott ki: a jóváhagyó által kézzel kiválasztott verziók sikertelenek maradnak, és várnak rájuk.", "maxAttempts": "Próbálkozások száma kérésenként", @@ -3173,6 +3406,9 @@ }, "profiles": { "title": "Kiadási profilok", + "effectiveRule": "Automatikus letöltési szabály: először az első egyező szint, majd a legmagasabb pontszám (minimum {score}).", + "summary": "A profilon kívül eső kiadások továbbra is elérhetők maradnak a manuális kiválasztáshoz. Szintek hiányában a kiadások rangsorolása kizárólag a pontszám alapján történik.", + "howProfiles": "A kiadásprofilok működése", "hint": "A kívánt kiadás, a legjobb az elején. A kiadást felülről lefelé párosítjuk ezekkel a szintekkel, és az első megfelelő szintet választjuk. A felügyelet nélküli letöltés a következő lehetőségek közül választhat: a szintnek nem megfelelő kiadások soha nem töltődnek le automatikusan, bár továbbra is megjelennek a választóban, hogy kézzel elküldhesd őket. Ha üresen hagysz egy médiumot, akkor semmi sem lesz szűrve vagy elutasítva, és a kiadások rangsorolása kizárólag pontszám alapján történik.", "bitrateNote": "A bitráta alsó határa elutasítja azokat a kiadásokat, amelyek alacsonyabb besorolásúak. A legtöbb forrás nagyon kevés kiadást mér, és egy nem mért kiadást nem utasítanak el, így ez kevésbé szűkíti le a területet, mint amilyennek látszik.", "empty": "Nincs profil. Az ehhez a médiumhoz tartozó kiadványok rangsorolása kizárólag a pontszám alapján történik.", @@ -3187,6 +3423,10 @@ "anyLayout": "Mind", "minBitrate": "Minimum kbps", "minSeeders": "Minimum seedelő", + "torrentConditions": "Torrentfeltételek", + "nonTorrentConditions": "A seeder-, freeleech- és VIP-feltételek nem érvényesek a kiválasztott forrásokra.", + "incompatibleTorrentConditions": "Ez a nem-torrent szint még mindig mentett torrentfeltételeket tartalmaz. A rendszer figyelmen kívül hagyhatja őket, vagy megakadályozhatják a szint illeszkedését.", + "removeTorrentConditions": "Torrentfeltételek eltávolítása", "channels": "Csatornák", "anyChannels": "Mind", "mono": "Monó", @@ -3212,6 +3452,7 @@ "connection": "Kapcsolat", "search": "Mit kell keresni", "access": "Hozzáférés", + "seeding": "Visszatöltés", "availability": "Elérhetőség", "behaviour": "Működés" }, @@ -3223,7 +3464,9 @@ "clientTypeDescriptions": { "qbittorrent": "A te qBittorrent-ed. Szükség van egy címre és egy fiókra.", "transmission": "A te Transmission-öd. Nincsenek kategóriái, így a kategória a letöltési mappa egy almappájává válik.", - "deluge": "A te Deluge-od. Jelentkezz be a webes felhasználói felület jelszavával; a kategóriához be kell kapcsolni a Címke bővítményt." + "deluge": "A te Deluge-od. Jelentkezz be a webes felhasználói felület jelszavával; a kategóriához be kell kapcsolni a Címke bővítményt.", + "nzbget": "A saját NZBGet-szervered. A BookOrbit JSON-RPC API-n keresztül küldi el az NZB-fájlokat.", + "sabnzbd": "A saját SABnzbd-szervered. A BookOrbit az API-kulcs használatával küldi el az NZB-fájlokat." }, "searchHealth": { "failingOnce": "Utolsó keresés sikertelen", @@ -3400,8 +3643,12 @@ "trend": "Napi olvasási trend", "emptyTitle": "Nincs olvasási tevékenység ebben az időszakban", "noData": "Nincs rögzített olvasási adat ebben az időszakban.", + "sessionCount": "{count, plural, one {# munkamenet} other {# munkamenet}}", "sourceNames": { "web": "Webes olvasó", + "ios": "iOS app", + "watchos": "Apple Watch", + "android": "Android app", "koreader": "KOReader", "manual": "Kézi", "kobo": "Kobo", @@ -3428,7 +3675,7 @@ "sources": "Adatforrások", "topBooks": "Legolvasottabb könyvek", "recentBooks": "Nemrég olvasott", - "unknownTitle": "Cím nélküli könyv", + "unknownTitle": "Névtelen könyv", "top": { "authors": "Legjobb szerzők", "genres": "Legjobb műfajok", @@ -3479,6 +3726,7 @@ "presetClearAll": "Összes törlése", "permissionGroups": { "content": "Tartalom", + "podcasts": "Podcastok", "devicesAccess": "Eszközök és hozzáférés", "email": "Email", "administration": "Adminisztráció", @@ -3538,13 +3786,13 @@ "searchGenresPlaceholder": "Műfajok keresése...", "saving": "Mentés...", "errors": { - "updateUser": "A felhasználó frissítése nem sikerült", - "updatePermissions": "Az engedélyek frissítése nem sikerült", - "updateLibraryAccess": "A könyvtár hozzáférés frissítése nem sikerült", - "updateContentFilters": "A tartalom szűrők frissítése nem sikerült", + "updateUser": "A felhasználó frissítése sikertelen", + "updatePermissions": "Az engedélyek frissítése sikertelen", + "updateLibraryAccess": "A könyvtár hozzáférés frissítése sikertelen", + "updateContentFilters": "A tartalom szűrők frissítése sikertelen", "emailRequired": "Email cím megadása kötelező", - "createSharedAccount": "A megosztott fiók létrehozása nem sikerült", - "createUser": "A felhasználó létrehozása nem sikerült", + "createSharedAccount": "A megosztott fiók létrehozása sikertelen", + "createUser": "A felhasználó létrehozása sikertelen", "nameRequired": "A teljes név megadása kötelező", "usernameRequired": "A felhasználónév megadása kötelező" }, @@ -3560,7 +3808,7 @@ "sectionSummary": { "newAccount": "Még nincs létrehozva", "libraries": "{selected} / {total}", - "permissions": "{count, plural, =0 {Nincsenek jogosultságok} one {1 megadva} other {# megadva}}", + "permissions": "{count, plural, =0 {Nincs jogosultság} one {1 megadva} other {# megadva}}", "restrictionsNone": "Egyik sem", "restrictionsContent": "Tartalomszűrők", "restrictionsDemo": "Demó korlátozott", @@ -3601,7 +3849,7 @@ "contentRestrictionsHint": "Korlátozd a felhasználó által megtekinthető könyveket címke vagy műfaj szerint.", "contentRestrictionsAfterCreate": "A tartalomkorlátozások a fiók létrehozása után állíthatók be.", "unsavedChanges": "{count, plural, one {1 nem mentett módosítás} other {# nem mentett módosítás}}", - "libraryBookCount": "{count, plural, =0 {Nincsenek könyvek} one {1 könyv} other {# könyv}}", + "libraryBookCount": "{count, plural, =0 {Nincs könyv} one {1 könyv} other {# könyv}}", "dangerZone": "Veszélyzóna", "deleteUserHint": "Véglegesen eltávolítja ezt a fiókot és a hozzá tartozó olvasási adatokat. A könyvtárban található könyveket ez nem érinti.", "libraryReach": "Ez a fiók {total} könyvből {selected}-t láthat." @@ -3622,7 +3870,7 @@ "lastActive": "Utoljára aktív" }, "adminBadge": "Adminisztrátor", - "permissionCount": "{count, plural, =0 {nincsenek jogosultságok} one {egy jogosultság} other {# jogosultság}}", + "permissionCount": "{count, plural, =0 {nincs jogosultság} one {egy jogosultság} other {# jogosultság}}", "filteredBadge": "Szűrve", "contentRestrictionsActive": "Tartalomkorlátozások aktívak", "statusActive": "Aktív", @@ -3648,13 +3896,13 @@ "unlock": "A fiók feloldása sikertelen" }, "selfRegistration": { - "title": "Önregisztráció", + "title": "Nyílt regisztráció", "subtitle": "Szabályozhatod, hogy a látogatók létrehozhatnak-e saját fiókokat.", - "label": "Önregisztráció engedélyezése", + "label": "Nyílt regisztráció engedélyezése", "hint": "Ha engedélyezve van, a bejelentkezési oldalon megjelenik egy link a fiók létrehozásához.", "enabledNotice": "Az új fiókok az alábbi alapértelmezett könyvtári hozzáféréssel indulnak, és semmilyen más jogosultsággal nem rendelkeznek. A védett funkciók használata előtt add meg az engedélyeket.", - "loadError": "Nem sikerült betölteni az önregisztrációs beállítást", - "saveError": "Nem sikerült frissíteni az önregisztrációs beállítást" + "loadError": "Nem sikerült betölteni a nyílt regisztrációs beállítást", + "saveError": "Nem sikerült frissíteni az nyílt regisztrációs beállítást" }, "defaultLibraryAccess": { "title": "Alapértelmezett könyvtár hozzáférés", @@ -3690,7 +3938,7 @@ "resetPasswordAria": "{name} jelszavának visszaállítása", "deleteUserAria": "{name} törlése", "moreActionsAria": "További műveletek ehhez: {name}", - "headerSummary": "{count, plural, =0 {Nincsenek fiókok} one {# fiók} other {# fiók}} · {admins} adminisztrátori hozzáféréssel", + "headerSummary": "{count, plural, =0 {Nincs fiók} one {# fiók} other {# fiók}} · {admins} adminisztrátori hozzáféréssel", "noEmail": "Nincs cím", "editAccount": "Fiók szerkesztése", "cardMeta": "{access} · {libraries} · {lastActive}", @@ -3739,8 +3987,8 @@ }, "defaults": { "title": "Új fiókok alapértelmezett beállításai", - "appliesTo": "Önregisztrációra és OIDC-re vonatkozik", - "startingLibraries": "Kezdő könyvtárak", + "appliesTo": "Nyílt regisztrációra és OIDC-re vonatkozik", + "startingLibraries": "Könyvtárak indítása", "startingLibrariesHint": "A megtekintői hozzáférés automatikusan meg lesz adva minden új fióknak." } } @@ -3749,7 +3997,7 @@ "unknownBook": "Ismeretlen könyv", "styles": { "highlight": "Kiemelés", - "underline": "Aláhúzás", + "underline": "Aláhúzott", "strike": "Áthúzás", "squiggle": "Kanyargós vonal", "invert": "Invertálás" @@ -3766,7 +4014,7 @@ "pageSelected": "Oldal kiválasztva", "selectPage": "Oldal kiválasztása", "clear": "Törlés", - "recolorTo": "Újraszínezés ilyenre: {color}", + "recolorTo": "Átszínezés ilyenre: {color}", "restyleTo": "Újraformázás ilyenre: {style}" }, "chips": { @@ -3811,7 +4059,7 @@ "exact": "Pontos", "repaired": "Javítva", "failed": "Sikertelen", - "pending": "Függő" + "pending": "Függőben" } }, "toolbar": { @@ -3826,7 +4074,7 @@ "listItem": { "pageNumber": "o. {page}", "chapterNumber": "fejezet {chapter}", - "selectAnnotation": "Jegyzet kiválasztása", + "selectAnnotation": "Annotáció kiválasztása", "collapse": "Összecsuk", "expand": "Kibont", "hideSyncDetail": "Szinkronizálási részletek elrejtése", @@ -3846,10 +4094,10 @@ "moveToTrash": "Áthelyezés a kukába" }, "hub": { - "title": "Jegyzetek", + "title": "Annotációk", "totalCount": "{count} összesen", - "bookCount": "{count, plural, =0 {nincsenek könyvek} one {# könyv} other {# könyv}}", - "noteCount": "{count, plural,=0 {nincsenek jegyzetek} one {# jegyzet} other {# jegyzet}}", + "bookCount": "{count, plural, =0 {nincs könyv} one {# könyv} other {# könyv}}", + "noteCount": "{count, plural,=0 {nincs jegyzet} one {# jegyzet} other {# jegyzet}}", "export": "Exportálás", "exportMarkdown": "Markdown", "exportCsv": "CSV", @@ -3867,7 +4115,7 @@ "noMatch": "Egyik kiemelés sem felel meg a szűrőknek.", "resetFilters": "Szűrők visszaállítása", "trashEmpty": "A kuka üres", - "noAnnotations": "Még nincsenek jegyzetek. Az interneten vagy az e-könyv olvasón létrehozott kiemelések jelennek meg itt.", + "noAnnotations": "Még nincsenek annotációk. A weben vagy az e-könyv-olvasón létrehozott kiemelések itt jelennek meg.", "noMatchHint": "Próbálj ki egy rövidebb kifejezést, vagy töröld a szín- és könyvszűrőket.", "noAnnotationsBody": "Minden, amit megjelölsz, bármilyen könyvben és bármilyen eszközön, itt gyűlik össze.", "readHere": "Olvasd el itt", @@ -3875,18 +4123,18 @@ "syncKobo": "Egy Kobo szinkronizálása", "syncKoboBody": "Az eszközön elhelyezett jelölések a következő szinkronizáláskor érkeznek meg.", "syncKoreader": "KOReader szinkronizálása", - "syncKoreaderBody": "A bővítmény feltölti a pozíciókkal ellátott megjegyzéseket.", + "syncKoreaderBody": "A bővítmény a pozíciójukkal együtt tölti fel az annotációkat.", "goToLibrary": "Ugrás a könyvtárba" }, "toast": { "movedToTrash": "Áthelyezve a kukába", - "annotationRestored": "Jegyzet visszaállítva", - "annotationDeletedForever": "Jegyzet véglegesen törölve", + "annotationRestored": "Annotáció visszaállítva", + "annotationDeletedForever": "Annotáció véglegesen törölve", "failedToDelete": "Törlés sikertelen", - "bulkTrashed": "{count, plural, =0 {Nincsenek kukába helyezett jegyzetek} one {# jegyzet a kukába helyezve} other {# jegyzet a kukába helyezve}}", - "bulkRestored": "{count, plural, =0 {Nincsenek visszaállított jegyzetek} one {# jegyzet visszaállítva} other {# jegyzet visszaállítva}}", - "bulkRecolored": "{count, plural, =0 {Nincsenek átszínezett jegyzetek} one {# jegyzet átszínezve} other {# jegyzet átszínezve}}", - "bulkRestyled": "{count, plural, =0 {Nincsenek újraformázott jegyzetek} one {# jegyzet újraformázva} other {# jegyzet újraformázva}}", + "bulkTrashed": "{count, plural, =0 {Nincs kukába helyezett annotáció} one {# annotáció a kukába helyezve} other {# annotáció a kukába helyezve}}", + "bulkRestored": "{count, plural, =0 {Nincs visszaállított annotáció} one {# annotáció visszaállítva} other {# annotáció visszaállítva}}", + "bulkRecolored": "{count, plural, =0 {Nincs átszínezett annotáció} one {# annotáció átszínezve} other {# annotáció átszínezve}}", + "bulkRestyled": "{count, plural, =0 {Nincs újraformázott annotáció} one {# annotáció újraformázva} other {# annotáció újraformázva}}", "noteSaved": "Megjegyzés mentve" }, "railTitle": "{marks} jelölés · {books} könyv", @@ -4059,6 +4307,8 @@ "User": "Felhasználó", "Library": "Könyvtár", "Book": "Könyv", + "Podcast": "Podcast", + "PodcastEpisode": "Podcastepizód", "Collection": "Gyűjtemény", "SmartScope": "Okos gyűjtemény", "BookDockFile": "Könyvdokk-fájl", @@ -4122,37 +4372,2269 @@ "LibraryAccessRevoke": "Könyvtár-hozzáférés megvonása", "LibraryWriteMetadataToFiles": "Metaadatok fájlokba írása", "LibraryBulkRename": "Könyvtárfájlok átnevezése", + "LibraryRecomputeAddedAt": "Hozzáadási dátum újraszámítása", + "PodcastCreate": "Podcast létrehozása", + "PodcastUpdate": "Podcast frissítése", + "PodcastArchive": "Podcast archiválása", + "PodcastRestore": "Podcast visszaállítása", + "PodcastPurge": "Podcast végleges törlése", + "PodcastMerge": "Podcastok egyesítése", + "PodcastDownload": "Podcastepizód letöltése", + "PodcastDownloadRemove": "Letöltött podcast eltávolítása", + "PodcastRetentionUpdate": "Podcastmegőrzési szabályok frissítése", + "PodcastOpmlImport": "Podcastok importálása OPML-fájlból", + "PodcastOpmlExport": "Podcastok exportálása OPML-fájlba", "BookUpload": "Könyv feltöltése", "BookMetadataUpdate": "Könyv metaadatainak frissítése", "BookMetadataLocksUpdate": "Metaadat-zárolások frissítése", "BookDelete": "Könyv törlése", "BookBulkMetadataRefresh": "Könyv metaadatainak újratöltése", - "BookBulkDelete": "Könyvek törlése" + "BookBulkDelete": "Könyvek törlése", + "BookBulkCoverReextract": "Könyvborítók újbóli kibontása", + "BookBulkSetStatus": "Könyv állapotának beállítása", + "BookBulkSetRating": "Könyv értékelésének beállítása", + "BookBulkSetMetadata": "Könyv metaadatainak beállítása", + "BookBulkUpdateTags": "Könyvcímkék frissítése", + "BookBulkSetMetadataLock": "Metaadat-zárolások beállítása", + "BookBulkEditMetadata": "Könyv metaadatainak szerkesztése", + "BookBulkMoveLibrary": "Könyvek áthelyezése egy másik könyvtárba", + "BookReadingStateReset": "Olvasási állapot törlése", + "BookWriteAndRename": "Metaadatok írása és fájl átnevezése", + "CollectionCreate": "Gyűjtemény létrehozása", + "CollectionUpdate": "Gyűjtemény frissítése", + "CollectionDelete": "Gyűjtemény törlése", + "CollectionBooksAdd": "Könyvek hozzáadása gyűjteményhez", + "CollectionBooksRemove": "Könyvek eltávolítása gyűjteményből", + "SmartScopeCreate": "Okos gyűjtemény létrehozása", + "SmartScopeUpdate": "Okos gyűjtemény frissítése", + "SmartScopeDelete": "Okos gyűjtemény törlése", + "BookDockFinalize": "Könyvdokk-fájl véglegesítése", + "BookRequestCreate": "Könyvkérés létrehozása", + "BookRequestApprove": "Könyvkérés jóváhagyása", + "BookRequestReject": "Könyvkérés elutasítása", + "BookRequestCancel": "Könyvkérés megszakítása", + "BookRequestFulfill": "Könyvkérés teljesítése", + "BookRequestGrab": "Könyvkérés elküldése egy letöltőkliensnek", + "BookRequestImport": "Könyvkérés-letöltés importálása", + "BookRequestRemoveDownload": "Könyvkérés-letöltés eltávolítása a kliensből", + "BookRequestDelete": "Könyvkérés törlése", + "DownloadClientCreate": "Letöltőkliens létrehozása", + "DownloadClientUpdate": "Letöltőkliens frissítése", + "DownloadClientDelete": "Letöltőkliens törlése", + "RequestIndexerCreate": "Indexelő hozzáadva", + "RequestIndexerUpdate": "Indexelő frissítve", + "RequestIndexerDelete": "Forrás törölve", + "RequestIndexerPluginInspect": "Indexelőbővítmény ellenőrizve", + "RequestIndexerPluginInstall": "Indexelőbővítmény telepítve", + "RequestIndexerPluginRemove": "Indexelőbővítmény törölve", + "AuthorUpdate": "Szerző frissítése", + "AuthorDelete": "Szerző törlése", + "AuthorMerge": "Szerzők egyesítése", + "AuthorEnrichmentConfigUpdate": "Szerzőbővítés frissítése", + "AuthorEnrichmentPause": "Szerzőbővítés szüneteltetése", + "AuthorEnrichmentResume": "Szerzőbővítés folytatása", + "AuthorEnrichmentCancel": "Szerzőbővítés megszakítása", + "EntityManagerMerge": "Entitások egyesítése", + "EntityManagerRename": "Entitás átnevezése", + "EntityManagerDelete": "Entitás törlése", + "EntityManagerSplit": "Entitás szétválasztása", + "EntityManagerDismiss": "Duplikátum elvetése", + "EntityManagerUndismiss": "Elvetett duplikátum visszaállítása", + "AppSettingsUpdate": "Alkalmazásbeállítások frissítése", + "KoboDeviceRegister": "Kobo eszköz regisztrálása", + "KoboDeviceRename": "Kobo eszköz átnevezése", + "KoboDeviceRemove": "Kobo eszköz törlése", + "EmailProviderCreate": "Email-szolgáltató létrehozása", + "EmailProviderUpdate": "Email-szolgáltató frissítése", + "EmailProviderDelete": "Email-szolgáltató törlése", + "EmailProviderSetDefault": "Alapértelmezett email-szolgáltató beállítása", + "EmailProviderSetSystem": "Rendszer email-szolgáltatójának beállítása", + "EmailProviderClearSystem": "Rendszer email-szolgáltatójának törlése", + "EmailTemplateCreate": "E-mail sablon létrehozása", + "EmailTemplateUpdate": "E-mail sablon frissítése", + "EmailTemplateDelete": "Email sablon törlése", + "EmailTemplateSetDefault": "Alapértelmezett email sablon beállítása", + "EmailRecipientCreate": "E-mail-címzett létrehozása", + "EmailRecipientUpdate": "E-mail-címzett frissítése", + "EmailRecipientDelete": "E-mail-címzett törlése", + "EmailRecipientGroupCreate": "Címzettcsoport létrehozása", + "EmailRecipientGroupUpdate": "Címzettcsoport frissítése", + "EmailRecipientGroupDelete": "Címzettcsoport törlése", + "EmailRecipientGroupMemberAdd": "Címzett hozzáadása csoporthoz", + "EmailRecipientGroupMemberRemove": "Címzett eltávolítása csoportból", + "MaintenanceMissingBooksClean": "Hiányzó könyvek törölve", + "MaintenanceBrokenCoversClean": "Hibás borítók törölve", + "MaintenanceOrphanedCoversClean": "Árva borítómappák törölve" + } + }, + "auth": { + "backToSignIn": "Vissza a bejelentkezéshez", + "themePicker": { + "switchToLight": "Váltás világos módra", + "switchToDark": "Váltás sötét módra", + "changeRadius": "Sarokkerekítés módosítása", + "changeBackground": "Háttér módosítása", + "changeAccent": "Kiemelőszín módosítása" + }, + "fields": { + "username": "Felhasználónév", + "password": "Jelszó", + "email": "Email", + "emailAddress": "Email cím", + "fullName": "Teljes név", + "newPassword": "Új jelszó", + "confirmPassword": "Jelszó megerősítése", + "confirmNewPassword": "Új jelszó megerősítése", + "currentPassword": "Jelenlegi jelszó", + "passwordHint": "Legalább 8 karakter, kis- és nagybetűvel, valamint egy számmal" + }, + "errors": { + "generic": "Hiba történt. Kérjük, próbálkozz újra.", + "passwordsDoNotMatch": "A jelszavak nem egyeznek" + }, + "login": { + "subtitle": "Jelentkezz be a fiókodba", + "signIn": "Bejelentkezés", + "signingIn": "Bejelentkezés…", + "orDivider": "vagy", + "forgotPassword": "Elfelejtetted a jelszavad?", + "noAccount": "Nincs fiókod?", + "signUp": "Regisztráció", + "registeredNotice": "A fiók elkészült. A folytatáshoz jelentkezz be. Egy adminisztrátornak engedélyt kell adnia, mielőtt hozzáférhetsz a könyvtárhoz.", + "errors": { + "invalidCredentials": "Érvénytelen felhasználónév vagy jelszó", + "tooManyAttempts": "Túl sok bejelentkezési kísérlet. Kérjük, várj egy percet, majd próbáld újra.", + "passwordDisabled": "A jelszavas bejelentkezés le van tiltva. Használj egy egyszeri bejelentkezési szolgáltatót.", + "optionsUnavailable": "Nem sikerült betölteni a bejelentkezési beállításokat. Kérjük, frissítsd az oldalt, vagy fordulj a rendszergazdához.", + "accountLocked": "A jelszavad helyes, de a fiókodat átmenetileg zároltuk a túl sok sikertelen bejelentkezési kísérlet miatt. Próbáld újra {minutes, plural,one {# perc} other {# perc}} múlva, vagy a feloldáshoz állítsd alaphelyzetbe a jelszavad most." + } + }, + "oidc": { + "loginFailed": "OIDC-bejelentkezés sikertelen", + "redirecting": "Átirányítás...", + "signInWith": "Bejelentkezés ezzel: {provider}", + "completingSignIn": "Bejelentkezés befejezése...", + "tryAgain": "Próbáld újra", + "errors": { + "stateExpired": "A bejelentkezési munkameneted lejárt. Kérjük, próbálj meg újra bejelentkezni.", + "tokenExchangeFailed": "Nem sikerült befejezni a bejelentkezést a szolgáltatóddal. Kérjük, próbáld újra, vagy fordulj a rendszergazdához.", + "userNotProvisioned": "A fiókod nincs beállítva. A hozzáférésért fordulj a rendszergazdához.", + "userInactive": "A fiókodat deaktiválták. Fordulj a rendszergazdához.", + "providerError": "Az identitásszolgáltatód hibát jelzett. Kérjük, próbáld újra.", + "missingCodeOrState": "Hiányzik a kód vagy az állapot paraméter" + }, + "providerErrors": { + "accessDenied": "A hozzáférést az identitásszolgáltató megtagadta.", + "loginRequired": "Hitelesítés szükséges. Kérjük, jelentkezz be újra.", + "interactionRequired": "További felhasználói beavatkozás szükséges." + } + }, + "forgotPassword": { + "subtitle": "Állítsd vissza a jelszavad", + "submitted": "Ha létezik fiók ezzel az email címmel, a visszaállítási linket elküldtük. Ellenőrizd a postaládádat.", + "sending": "Küldés...", + "sendResetLink": "Visszaállító link küldése", + "errors": { + "emailUnavailable": "Az e-mailben történő jelszó-visszaállítás nem érhető el. Fordulj a rendszergazdához." + } + }, + "resetPassword": { + "subtitle": "Új jelszó beállítása", + "saving": "Mentés...", + "setNewPassword": "Új jelszó beállítása", + "errors": { + "invalidLink": "Érvénytelen visszaállítási link. Kérjük, igényelj egy újat.", + "invalidOrExpired": "Érvénytelen vagy lejárt visszaállítási link. Kérjük, igényelj egy újat." + } + }, + "register": { + "title": "Hozd létre a fiókodat", + "subtitle": "Regisztrálj a kezdéshez.", + "createAccount": "Fiók létrehozása", + "creatingAccount": "Fiók létrehozása...", + "haveAccount": "Van már fiókod?", + "signIn": "Bejelentkezés", + "errors": { + "closed": "A nyílt regisztráció le van tiltva ezen a szerveren.", + "taken": "Ez a felhasználónév vagy email már használatban van.", + "invalid": "Ellenőrizd a megadott adatokat, majd próbáld újra.", + "tooManyAttempts": "Túl sok kísérlet. Kérjük, várj egy percet, majd próbáld újra.", + "failed": "Nem sikerült létrehozni a fiókot", + "username": { + "unsafeCharacters": "A felhasználónév nem tartalmazhat rejtett vagy szövegirányt módosító karaktereket.", + "untrimmed": "A felhasználónév nem kezdődhet és nem végződhet szóközzel." + }, + "name": { + "unsafeCharacters": "A név nem tartalmazhat rejtett vagy szövegirányt módosító karaktereket.", + "untrimmed": "A név nem kezdődhet és nem végződhet szóközzel." + } + } + }, + "setup": { + "title": "Kezdeti beállítások", + "subtitle": "Az első adminisztrátori fiók létrehozása.", + "setupToken": "Beállítási token", + "setupTokenHint": "(éles környezetben kötelező)", + "creatingAccount": "Fiók létrehozása...", + "createAccount": "Adminisztrátori fiók létrehozása", + "errors": { + "failed": "Nem sikerült befejezni a beállításokat" + } + }, + "changePassword": { + "title": "Jelszó módosítása", + "saving": "Mentés…", + "forcedNotice": "A folytatáshoz meg kell adnod egy új jelszót.", + "errors": { + "failed": "Jelszó módosítása sikertelen" + } + }, + "magicLink": { + "signingIn": "Bejelentkezés...", + "loginFailed": "Sikertelen bejelentkezés", + "goToLogin": "Ugrás a bejelentkezéshez", + "errors": { + "noToken": "Nincs token megadva" + } + } + }, + "author": { + "card": { + "portraitAlt": "{name} portréja", + "viewDetails": "Szerző részleteinek megtekintése", + "refreshMetadata": "Metaadatok frissítése", + "deleteAuthor": "Szerző törlése" + }, + "filters": { + "allLibraries": "Összes könyvtár", + "chips": { + "groupLabel": "Szerzők szűrése", + "all": "Összes", + "noPortrait": "Nincs portré", + "multipleBooks": "2+ könyv", + "recentlyAdded": "Ezen a héten hozzáadva", + "noSortName": "Nincs rendezési név" + } + }, + "header": { + "never": "Soha", + "portraitAlt": "{name} portréja", + "actions": "Műveletek", + "editAuthor": "Szerző szerkesztése", + "mergeAuthors": "Szerzők egyesítése", + "refreshing": "Frissítés...", + "refreshMetadata": "Metaadatok frissítése", + "deleteAuthor": "Szerző törlése", + "showLess": "Kevesebb mutatása", + "showMore": "Több mutatása", + "lookingUpMetadata": "Szerzői metaadatok keresése...", + "noBiography": "Nem érhető el életrajz. A metaadatok frissítéséhez használd a menüt.", + "previewFrom": "{provider} előnézete. A véglegesítéshez mentsd el a metaadatokat.", + "booksLabel": "Könyvek", + "lastAdded": "Legutóbb hozzáadva", + "born": "Született", + "died": "Meghalt", + "website": "Weboldal", + "genres": "Műfajok", + "influences": "Hatások" + }, + "list": { + "title": "Szerzők", + "showControlsAria": "Szerzői vezérlők megjelenítése", + "searchPlaceholder": "Szerzők keresése", + "sortButton": "Rendezés", + "sortBy": "Rendezés módja", + "ascending": "Növekvő", + "descending": "Csökkenő", + "asc": "Növ", + "desc": "Csökk", + "filters": "Szűrők", + "clear": "Törlés", + "allLoaded": "Mind a(z) {total} szerző betöltve", + "sort": { + "name": "Név", + "sortName": "Rendezési név", + "bookCount": "Könyvek száma", + "recentAdditions": "Legutóbb hozzáadottak", + "lastEnriched": "Utolsó bővítés" + }, + "empty": { + "title": "Nem találhatók szerzők", + "hint": "Próbáld megváltoztatni a keresőszöveget, a rendezés módját vagy a könyvtárszűrőt." + }, + "deleteDialog": { + "titleOne": "Szerző törlése?", + "titleMany": "Törölsz {count} szerzőt?", + "descriptionOne": "Ez eltávolítja a szerzőt a katalógusból, és leválasztja a hozzá kapcsolódó könyvekről. Ez a művelet nem vonható vissza.", + "descriptionMany": "Ez eltávolítja a kiválasztott szerzőket a katalógusból, és leválasztja őket a hozzájuk kapcsolódó könyvekről. Ez a művelet nem vonható vissza." + }, + "selection": { + "selectVisible": "Láthatók kiválasztása", + "refreshMetadata": "Metaadatok frissítése", + "refreshingMetadata": "Metaadatok frissítése...", + "deleteSelected": "Kijelöltek törlése", + "deleting": "Törlés...", + "exitSelection": "Kilépés a kijelölésből", + "confirmDeleteCount": "{count, plural, =0 {Törölsz # szerzőt?} one {Törölsz # szerzőt?} other {Törölsz # szerzőt?}}" + }, + "toast": { + "refreshed": "Szerzői metaadatok frissítve", + "refreshedNoImage": "A metaadatok frissítve, de nem található kép a szerzőhöz.", + "refreshFailed": "Nem sikerült frissíteni a szerzői metaadatokat", + "bulkRefreshPartial": "{updated} szerző frissítve, {failed} sikertelen", + "bulkRefreshSuccess": "{updated} szerző(k) metaadatai frissítve", + "bulkRefreshFailed": "Nem sikerült frissíteni a kiválasztott szerzőket", + "deleteSuccess": "{count, plural, =0 {# szerző törölve; {books} könyv érintett} one {# szerző törölve; {books} könyv érintett} other {# szerző törölve; {books} könyv érintett}}", + "deleteFailed": "Nem sikerült törölni a szerző(ke)t" + } + }, + "detail": { + "pageTitle": "Szerző", + "pageTitleNamed": "Szerző · {name}", + "pageTitleId": "Szerző #{id}", + "entityName": "Szerző", + "loadingAuthor": "Szerző betöltése...", + "previewError": "Jelenleg nem sikerült betölteni a külső szerzői előnézeti metaadatokat.", + "edit": { + "name": "Név", + "sortName": "Rendezési név", + "description": "Leírás", + "image": "Kép", + "uploading": "Feltöltés...", + "replaceImage": "Kép cseréje", + "uploadImage": "Kép feltöltése", + "removing": "Eltávolítás...", + "removeImage": "Kép etávolítása", + "imageHint": "PNG/JPEG/WEBP/GIF/BMP, legfeljebb {size} MB", + "saving": "Mentés..." + }, + "merge": { + "searchPlaceholder": "Keress szerzőket az ebbe a szerzőbe való egyesítéshez", + "searching": "Keresés...", + "bookCount": "{count, plural, =0 {nincs könyv} one {# könyv} other {# könyv}}", + "selectedSummary": "Kiválasztva {count} szerző, kb. {books} könyv érintett.", + "merging": "Egyesítés...", + "mergeSelected": "Kiválasztottak egyesítése", + "confirmLabel": "Egyesítés" + }, + "mergeDialog": { + "title": "Egyesítesz {count} szerzőt a(z) „{name}” szerzővel?", + "titleFallback": "Egyesíted a kiválasztott szerzőket?", + "description": "Ez egyesíti a kiválasztott szerzőket a jelenlegi szerzővel, és újratársítja a kapcsolódó könyveket. Ez a művelet nem vonható vissza.", + "descriptionEmpty": "Ez a művelet nem vonható vissza." + }, + "deleteDialog": { + "title": "Szerző törlése?", + "description": "Ez eltávolítja a szerzőt a katalógusból, és leválasztja a hozzá kapcsolódó könyvekről. Ez a művelet nem vonható vissza." + }, + "books": { + "heading": "Könyvek", + "allLibraries": "Összes könyvtár", + "asc": "Növ", + "desc": "Csökk", + "ascending": "Növekvő", + "descending": "Csökkenő", + "allLoaded": "Mind a(z) {total} könyv betöltve", + "sort": { + "recentlyAdded": "Legutóbb hozzáadva", + "title": "Cím", + "publishedYear": "Kiadás éve" + }, + "empty": { + "title": "Nem találhatók könyvek ehhez a szerzőhöz", + "hint": "Próbáld megváltoztatni a rendezés módját/irányát, vagy válassz egy másik könyvtárat." + } + }, + "toast": { + "refreshed": "Szerzői metaadatok frissítve", + "refreshedNoImage": "A metaadatok frissítve, de nem található kép a szerzőhöz.", + "refreshFailed": "Nem sikerült frissíteni a szerzői metaadatokat", + "nameRequired": "Szerző név megadása kötelező", + "updated": "Szerző frissítve", + "updateFailed": "A szerző frissítése sikertelen", + "imageUpdated": "A szerző képe frissítve", + "imageUploadFailed": "Nem sikerült feltölteni a szerző képét", + "imageRemoved": "A szerző képe eltávolítva", + "imageRemoveFailed": "Nem sikerült eltávolítani a szerző képét", + "mergeSuccess": "{count} szerző egyesítve; {books} könyv érintett", + "mergeFailed": "Nem sikerült egyesíteni a szerzőket", + "deleteSuccess": "Szerző törölve; {books} könyv érintett", + "deleteFailed": "Nem sikerült törölni a szerzőt" + } + }, + "portrait": { + "fromTheirBook": "Az egyik könyvük borítója; nincs rögzített portré" + }, + "index": { + "bookCount": "{count, plural, =0 {nincs könyv} one {# könyv} other {# könyv}}", + "rowLabel": "{name}, {count, plural, =0 {nincs könyv} one {# könyv} other {# könyv}}", + "actionsFor": "Műveletek ehhez: {name}", + "refreshing": "{name} metaadatainak frissítése", + "deleting": "{name} törlése" } }, "book": { + "untitled": "Névtelen", + "unknownFormat": "ismeretlen", + "collapsedSeries": { + "label": "Sorozat", + "bookCount": "{count, plural, =0 {nincs könyv} one {# könyv} other {# könyv}}", + "readCount": "{count} elolvasva" + }, + "card": { + "missing": "Hiányzó" + }, + "file": { + "primary": "Elsődleges", + "audiobook": "Hangoskönyv" + }, + "formats": { + "epub": "EPUB e-könyv", + "kepub": "KEPUB e-könyv", + "pdf": "PDF dokumentum", + "cbz": "CBZ képregény", + "cbr": "CBR képregény", + "cb7": "CB7 képregény", + "mobi": "MOBI e-könyv", + "azw3": "AZW3 e-könyv", + "azw": "AZW e-könyv", + "fb2": "FictionBook", + "m4b": "M4B hangoskönyv", + "mp3": "MP3-hangfájl", + "m4a": "M4A-hangfájl", + "opus": "Opus-hangfájl", + "ogg": "OGG-hangfájl", + "flac": "FLAC-hangfájl", + "readAlong": "Hangos EPUB", + "primary": "Elsődleges formátum" + }, + "actions": { + "read": "Olvasás", + "listen": "Hallgatás", + "startReading": "Olvasás indítása", + "continueReading": "Olvasás folytatása", + "startListening": "Hallgatás indítása", + "continueListening": "Hallgatás folytatása", + "peek": "Betekintés", + "quickView": "Gyorsnézet", + "details": "Részletek", + "bookDetails": "Könyv részletei", + "download": "Letöltés", + "metadata": "Metaadatok", + "editMetadata": "Metaadatok szerkesztése", + "refreshMetadata": "Metaadatok frissítése", + "regenerateCover": "Borító újragenerálása", + "addToCollection": "Hozzáadás gyűjteményhez", + "setStatus": "Állapot beállítása", + "sendViaEmail": "Küldés emailben", + "rate": "{star} csillagos értékelés", + "openAs": "Megnyitás {format} formátumban", + "openReadAlong": "Hangos EPUB megnyitása" + }, + "coverRegeneration": { + "failed": "Nem sikerült újragenerálni a borítót", + "bulkInProgress": "Borítók újbóli kibontása", + "bulkFailed": "A borítók újbóli kibontása sikertelen", + "bulkCompleted": "{updated} / {processed, plural,one {# borító}other {# borító}} újbóli kibontása sikeres" + }, + "readStatus": { + "unread": "Nem olvasott", + "wantToRead": "El akarom olvasni", + "reading": "Olvasás", + "onHold": "Félretéve", + "rereading": "Újraolvasás", + "read": "Olvasott", + "skimmed": "Átfutva", + "abandoned": "Abbahagyva" + }, + "download": { + "action": "Letöltés", + "audiobookZip": "Hangoskönyv (ZIP)", + "allFormatsZip": "Összes formátum (ZIP)", + "primaryOnlyZip": "Csak elsődleges (ZIP)", + "preparing": "Letöltés előkészítése...", + "preparingExport": "{count, plural, one {# könyv} other {# könyv}} előkészítése letöltéshez...", + "progressPercent": "Letöltés {percent}/{total}", + "progressBytes": "Letöltés {transferred}", + "failed": "Letöltés sikertelen", + "exportFailed": "Exportálás sikertelen", + "audiolessEpub": "KOReader EPUB", + "audiolessEpubHint": "EPUB letöltése KOReaderhez a hangfájlok eltávolításával", + "noAudio": "nincs hang" + }, + "sort": { + "moveUp": "Mozgatás fel", + "moveDown": "Mozgás le", + "ascending": "Növekvő", + "descending": "Csökkenő", + "fields": { + "relevance": "Relevancia", + "author": "Szerző", + "title": "Cím", + "series": "Sorozat", + "seriesIndex": "Sorozat #", + "addedAt": "Hozzáadás dátuma", + "updatedAt": "Frissítés dátuma", + "publishedDate": "Kiadás dátuma", + "publishedYear": "Kiadás éve", + "pageCount": "Oldalszám", + "rating": "Értékelés", + "publisher": "Kiadó", + "fileSize": "Fájlméret", + "readProgress": "Olvasási haladás", + "readStatus": "Olvasás állapota", + "format": "Formátum", + "lastReadAt": "Utoljára olvasva", + "startedAt": "Kezdés dátuma", + "finishedAt": "Befejezés dátuma", + "random": "Véletlenszerű", + "language": "Nyelv", + "metadataScore": "Metaadat-pontszám", + "collectionOrder": "Hozzáadás sorrendje" + }, + "customFieldsGroup": "Egyéni mezők", + "customFieldFallback": "Egyéni mező", + "remove": "Eltávolít", + "emptyState": "Nincs rendezés beállítva. Növekvő cím szerinti rendezés lesz alkalmazva.", + "addLevel": "Rendezési szint hozzáadása" + }, + "filter": { + "match": "Egyezés", + "all": "ÖSSZES", + "any": "BÁRMELYIK", + "ofFollowingRules": "az alábbi szabályok közül", + "fields": { + "title": "Cím", + "publisher": "Kiadó", + "language": "Nyelv", + "series": "Sorozat", + "seriesIndex": "Sorozatindex", + "publishedDate": "Kiadás dátuma", + "publishedYear": "Kiadás éve", + "pageCount": "Oldalszám", + "author": "Szerző", + "genre": "Műfaj", + "tag": "Címke", + "collection": "Gyűjtemény", + "library": "Könyvtár", + "format": "Formátum", + "fileSize": "Elsődleges fájl mérete", + "addedAt": "Hozzáadás dátuma", + "startedAt": "Kezdés dátuma", + "finishedAt": "Befejezés dátuma", + "fileAvailability": "Fájl elérhetősége", + "rating": "Értékelés", + "communityRating": "Közösségi értékelés", + "communityRatingCount": "Közösségi értékelések száma", + "readProgress": "Olvasási haladás", + "readStatus": "Olvasás állapota", + "description": "Leírás", + "isbn": "ISBN", + "metadataScore": "Metaadat-pontszám", + "cover": "Borító", + "audioCover": "Hangoskönyv-borító", + "lockStatus": "Zárolás állapota", + "seriesStatus": "Sorozat állapota" + }, + "operators": { + "contains": "tartalmazza", + "notContains": "nem tartalmazza", + "startsWith": "ezzel kezdődik", + "endsWith": "ezzel végződik", + "eq": "egyenlő", + "notEq": "nem", + "isEmpty": "üres", + "isNotEmpty": "nem üres", + "gt": "nagyobb, mint", + "gte": "legalább", + "lt": "kisebb, mint", + "lte": "legfeljebb", + "between": "között", + "includesAny": "tartalmazza bármelyiket", + "includesAll": "tartalmazza az összeset", + "excludesAll": "nem tartalmazza egyiket sem", + "before": "előtte", + "after": "utána", + "withinLast": "az elmúlt időszakban", + "isMissing": "hiányzik", + "isPresent": "jelen van", + "isUnread": "olvasatlan", + "isInProgress": "folyamatban", + "isFinished": "befejezve", + "isLocked": "zárolt", + "isUnlocked": "nyitott", + "isUpNext": "a soron következő", + "isTrue": "igen", + "isFalse": "nem" + }, + "customFieldsGroup": "Egyéni mezők", + "customFieldFallback": "Egyéni mező", + "anyProvider": "Bármelyik szolgáltató", + "communityRatingProvider": "Közösségi értékelések szolgáltatója", + "loadingLibraries": "Könyvtárak betöltése...", + "noLibrariesAvailable": "Nincsenek elérhető könyvtárak", + "selectLibrary": "Könyvtár kiválasztása...", + "selectStatus": "Állapot kiválasztása...", + "withinLastPlaceholder": "pl. 7", + "unit": { + "days": "nap", + "weeks": "hét", + "months": "hónap", + "megabytes": "MB" + }, + "scorePreset": { + "outstanding": "Kiváló", + "good": "Jó", + "fair": "Megfelelő", + "poor": "Gyenge" + }, + "scoreRangePlaceholder": "0-100", + "fileSizePlaceholder": "pl. 10", + "fileSizeValueAria": "Elsődleges fájlméret megabájtban", + "fileSizeMaximumAria": "Maximális elsődleges fájlméret megabájtban", + "valuePlaceholder": "érték", + "maxPlaceholder": "max", + "to": "eddig", + "group": "Csoport", + "addRule": "Szabály hozzáadása", + "addGroup": "Csoport hozzáadása", + "typeToSearch": "Írj ide a kereséshez..." + }, + "deleteDialog": { + "title": "Könyv törlése?", + "description": "Ez véglegesen törli a könyvet és annak összes metaadatát, fájlját, olvasási haladását, valamint a könyvjelzőit. Ez a művelet nem vonható vissza." + }, + "bulkEdit": { + "title": "{count, plural, =0 {Metaadatok szerkesztése - # könyv} one {Metaadatok szerkesztése - # könyv} other {Metaadatok szerkesztése - # könyv}}", + "instructions": "Kapcsold be a szerkeszteni kívánt mezőket, majd add meg az értékeket. Csak a bekapcsolt mezők fognak megváltozni.", + "invalidYear": "Adj meg egy érvényes évet (csak számok)", + "clearWarning": "Ez eltávolítja az összes {field} értéket a kiválasztott könyvekből.", + "searchPlaceholder": "{field} keresése...", + "enterPlaceholder": "{field} megadása", + "yearPlaceholder": "pl. 2024", + "leaveEmptyHint": "Hagyd üresen a mező törléséhez az összes kiválasztott könyvnél.", + "applying": "Alkalmazás…", + "apply": "Alkalmaz", + "mode": { + "add": "Hozzáad", + "remove": "Eltávolít", + "replace": "Csere", + "clear": "Törlés" + } + }, + "export": { + "title": "Metaadatok exportálása", + "scope": "Hatókör", + "selectedRows": "Kijelölt sorok", + "currentlySelected": "{count} jelenleg kiválasztva", + "allMatchingRows": "Az összes egyező sor", + "rowsInResult": "{count} sor a jelenlegi találatok között", + "format": "Formátum", + "csvDescription": "Táblázatkezelő-barát, UTF-8 BOM-mal", + "jsonDescription": "Strukturált exportálás metaadat-környezettel", + "columns": "Oszlopok", + "canonicalSchema": "Stabil kanonikus séma", + "visibleColumns": "Current visible columns", + "options": "Beállítások", + "includePersonalData": "Tartalmazza a személyes olvasási adatokat", + "includeFilePaths": "Tartalmazza a fájlútvonalakat (haladó)", + "includeContextMeta": "Tartalmazza a környezeti metaadatokat", + "preflight": "Előkészítés", + "scopeLabel": "Hatókör: {summary}", + "calculatingSize": "Exportálási méret kiszámítása...", + "estimatedSize": "Becsült méret:", + "fileLabel": "Fájl: {fileName}", + "exportAction": "Exportálás", + "selectedRowsSummary": "{count, plural, =0 {# kiválasztott sor} one {# kiválasztott sor} other {# kiválasztott sor}}", + "matchingRowsSummary": "{count, plural, =0 {# egyező sor} one {# egyező sor} other {# egyező sor}}", + "prepareFailed": "Nem sikerült előkészíteni az exportálást", + "exportStarted": "A metaadatok exportálása elindult: {fileName}", + "exportFailed": "Metaadatok exportálása sikertelen" + }, + "columnPanel": { + "columnsHeading": "Oszlopok", + "reset": "Visszaállítás", + "tableDensity": "Táblázat sűrűsége", + "density": { + "compact": "Tömör", + "comfortable": "Kényelmes", + "roomy": "Szellős" + }, + "presets": "Sablonok", + "exportBackup": "Sablonok és mentett nézetek exportálása", + "importBackup": "Sablonok és mentett nézetek importálása", + "rename": "Átnevez", + "renamePrompt": "Adj meg új nevet", + "builtIn": "Beépített", + "saveCurrentPreset": "Jelenlegi sablon mentése", + "savedViews": "Mentett nézetek", + "savedViewsEmpty": "Rendezési mód, elrendezés és nézetspecifikus szűrők mentése a gyors újrafelhasználáshoz.", + "saveCurrentView": "Jelenlegi nézet mentése", + "pinnedLeft": "Rögzítés balra", + "pinnedRight": "Rögzítés jobbra", + "columns": { + "cover": "Borító", + "read": "Olvasott", + "actions": "Műveletek" + } + }, + "shortcuts": { + "title": "Gyorsbillentyűk", + "navigation": { + "title": "Navigáció", + "moveFocusVertical": "Kijelölés mozgatása fel/le", + "moveFocusHorizontal": "Kijelölés mozgatása balra/jobbra", + "jumpFirstColumn": "Ugrás az első oszlopra", + "jumpLastColumn": "Ugrás az utolsó oszlopra", + "jumpFirstRow": "Ugrás az első sorra", + "jumpLastRow": "Ugrás az utolsó sorra" + }, + "actions": { + "title": "Műveletek", + "editCell": "Kijelölt cella szerkesztése", + "cancelEditing": "Szerkesztés megszakítása / Panel bezárása", + "toggleRowSelection": "Sor kijelölésének átváltása", + "copyCell": "Cella értékének másolása", + "copyRow": "Kijelölt sor másolása" + }, + "general": { + "title": "Általános", + "toggleHelp": "Súgópanel megjelenítése/elrejtése" + } + }, + "jumpRail": { + "jumpToSection": "Ugrás a szakaszra", + "jumpTo": "Ugrás ide: {label}", + "unknownDate": "Ismeretlen dátum", + "unknownValue": "Ismeretlen érték" + }, + "quickView": { + "title": "Könyv gyorsnézete", + "titleFor": "{title} gyorsnézete", + "description": "Könyvadatok előnézetének megtekintése és gyorsműveletek futtatása.", + "openIn": "Megnyitás itt: {provider}", + "pages": "{count, plural, =0 {# oldal} one {# oldal} other {# oldal}}", + "primaryFile": "Elsődleges fájl", + "fileNumber": "Fájl #{id}", + "showLess": "Kevesebb mutatása", + "showMore": "Több mutatása", + "collections": "Gyűjtemények", + "noDescription": "Nincs elérhető leírás.", + "openMetadataEditor": "Metaadat-szerkesztő megnyitása", + "coverPreview": "Könyvborító előnézete", + "coverPreviewFor": "{title} borító előnézete", + "coverPreviewDescription": "Nagyított borítókép-előnézeti ablak." + }, + "tableView": { + "openBookDetails": "Könyv részleteinek megnyitása", + "openSeries": "Sorozat megnyitása", + "metadataRefreshFailed": "Metaadatok frissítése sikertelen", + "booksSelected": "{count, plural, =0 {# könyv kiválasztva} one {# könyv kiválasztva} other {# könyv kiválasztva}}", + "loadingMoreBooks": "További könyvek betöltése", + "sort": "Rendezés", + "refreshingMetadata": "Metaadatok frissítése {processed} / {total}", + "failedCount": "{count} sikertelen", + "remainingCount": "{count} van hátra", + "readOnlyNotice": "Kisebb képernyőkön a táblázatos szerkesztés nem érhető el. A gyorsműveletekhez válts lista vagy rács nézetre.", + "fetching": "Lekérés...", + "updated": "Frissítve", + "failed": "Sikertelen", + "noBooks": "Nincs megjeleníthető könyv", + "scrollToTop": "Görgetés a tetejére", + "selectedStatus": "{count} kiválasztva", + "filtered": "Szűrve", + "loadedStatus": "{loaded} / {total} betöltve", + "bookCount": "{count, plural,=0 {# könyv} one {# könyv} other {# könyv}}", + "keyboardShortcutsTitle": "Gyorsbillentyűk (?)", + "showKeyboardShortcuts": "Táblázat gyorsbillentyűinek megjelenítése", + "copyHint": "Cella másolása: Ctrl/Cmd+C · Sor másolása: Ctrl/Cmd+Shift+C" + }, "detail": { + "authorBooks": { + "alsoByAuthor": "Ugyanezen szerzőtől", + "alsoByAuthors": "Ugyanezen szerzőktől" + }, + "header": { + "previousBook": "Előző könyv", + "nextBook": "Következő könyv" + }, + "tabs": { + "details": "Részletek", + "editMetadata": "Metaadatok szerkesztése", + "files": "Fájlok", + "readingLog": "Olvasási napló", + "highlights": "Kiemelések" + }, + "discover": { + "moreInSeries": "Továbbiak a sorozatban", + "byAuthor": "Szerző szerint", + "similarBooks": "Hasonló könyvek" + }, + "recommended": { + "moreLikeThis": "Még több ilyen" + }, + "series": { + "moreInSeries": "Továbbiak a {series} sorozatban" + }, + "writeRename": { + "written": "{count, plural, =0 {nincs írt mező} one {Írva (egy mező)} other {Írva (# mező)}}", + "writeFailed": "Írás sikertelen", + "skipped": "Átugorva", + "renamedTo": "Átnevezés erre: {name}", + "fileRenamed": "Fájl átnevezve", + "renameFailed": "Átnevezés sikertelen", + "autoWriteAndRenameDisabled": "Az automatikus írás és az átnevezés ki van kapcsolva a könyvtár beállításaiban. A változtatások a jövőbeni mentésekkor nem fognak automatikusan szinkronizálódni.", + "autoWriteDisabled": "Az automatikus írás ki van kapcsolva a könyvtár beállításaiban. A változtatások a jövőbeni mentésekkor nem fognak automatikusan szinkronizálódni.", + "autoRenameDisabled": "Az automatikus átnevezés ki van kapcsolva a könyvtár beállításaiban. A változtatások a jövőbeni mentésekkor nem fognak automatikusan szinkronizálódni.", + "writeLabel": "Írás:", + "renameLabel": "Átnevezés:" + }, + "addFile": { + "uploading": "Feltöltés...", + "uploadComplete": "Sikeres feltöltés", + "title": "Fájl hozzáadása", + "dropzone": { + "title": "Húzz ide fájlokat vagy kattints a kiválasztáshoz", + "hint": "epub, pdf, mobi, cbz, m4b és társaik - egyenként legfeljebb {size} MB" + }, + "addMore": "További fájlok hozzáadása", + "fileCount": "{count, plural,=0 {nincs fájl} one {egy fájl} other {# fájl}}", + "clearAll": "Összes törlése", + "done": "Kész", + "retry": "Újra", + "filesAdded": "{count, plural, =0 {nincs fájl hozzáadva} one {egy fájl hozzáadva} other {# fájl hozzáadva}}", + "uploadedFailed": "{done} feltöltve, {failed} sikertelen", + "uploadingProgress": "{done}/{total} feltöltése...", + "renameAfter": "Összes könyvfájl átnevezése feltöltés után", + "uploadCount": "Feltöltés ({count})", + "upload": "Feltöltés" + }, + "addSession": { + "errors": { + "invalidDate": "Válassz egy érvényes dátumot és időpontot.", + "future": "A munkamenet nem kezdődhet a jövőben.", + "duration": "A hossznak 1 és 1440 perc között kell lennie.", + "endProgress": "A befejezési haladásnak 0 és 100 között kell lennie." + }, + "title": "Olvasási munkamenet hozzáadása", + "startedAt": "Kezdés ideje", + "duration": "Időtartam (perc)", + "endProgress": "Befejezési haladás %", + "optional": "Opcionális", + "format": "Formátum", + "noFormat": "Nincs meghatározott formátum", + "saving": "Mentés...", + "submit": "Munkamenet hozzáadása" + }, + "coverEditor": { + "unlockCover": "Borító feloldása", + "lockCover": "Borító zárolása", + "fileTab": "Fájl", + "urlTab": "URL", + "chooseImage": "Kép kiválasztása...", + "findCoverOnline": "Borító keresése az interneten", + "saving": "Mentés...", + "saveCover": "Borító mentése", + "revertToOriginal": "Eredeti visszaállítása", + "regenerateCover": "Borító újragenerálása", + "slotsLabel": "Szerkesztendő borító", + "slotEbook": "Könyv", + "slotAudio": "Hangoskönyv", + "slotEbookName": "Könyvborító", + "slotAudioName": "Hangoskönyv-borító", + "editingEbook": "Könyvborító szerkesztése", + "editingAudio": "Hangoskönyv-borító szerkesztése", + "lockEbookCover": "Könyvborító zárolása", + "unlockEbookCover": "Könyvborító feloldása", + "lockAudioCover": "Hangoskönyv-borító zárolása", + "unlockAudioCover": "Hangoskönyv-borító feloldása", + "viewLarger": "Nagyítás", + "viewLargerEbook": "Nagyobb könyvborító megtekintése", + "viewLargerAudio": "Nagyobb hangoskönyv-borító megtekintése", + "sourceMode": "Kép forrása", + "urlLabel": "Kép URL", + "saveFailed": "A borító mentése sikertelen", + "revertFailed": "A borító visszaállítása sikertelen" + }, + "coverLightbox": { + "title": "Borító előnézete", + "description": "Teljes méretű borító. A bezáráshoz nyomd meg az Escape billentyűt.", + "switchLabel": "Megjelenítendő borító", + "ebook": "Könyv", + "audio": "Hangoskönyv" + }, + "coverSearch": { + "title": "Keresés az interneten", + "subtitle": "Könyvborítók keresése", + "titleField": "Cím", + "authorField": "Szerző", + "sourceField": "Forrás", + "allSources": "Minden forrás", + "audiobookCovers": "Hangoskönyv-borítók", + "squareHint": "(négyzet alakú)", + "searching": "Keresés...", + "findCovers": "Borítók keresése", + "selectCover": "Borító kiválasztása", + "noResultsTitle": "Nincs találat", + "noResultsHint": "Próbáld meg módosítani a keresési feltételeket", + "readyTitle": "Keresésre kész", + "readyHint": "Add meg a címet és a szerzőt fentebb", + "resolutionTip": "Tipp: A nagy felbontású borítókat zöld szín jelzi" + }, "details": { - "noCollections": "Egyik sem" + "by": "tőle", + "narratedBy": "narrátor", + "ratingLocked": "Értékelés zárolva", + "rateStar": "{star} csillagos értékelés", + "listen": "Hallgatás", + "read": "Olvasás", + "chooseFormat": "Formátum kiválasztása", + "audiobook": "Hangoskönyv", + "primary": "Elsődleges", + "peek": "Betekintés", + "sendViaEmail": "Küldés emailben", + "personalReview": { + "title": "Személyes értékelés", + "toggleAria": "Személyes értékelés ki-/bekapcsolása", + "editAria": "Személyes értékelés szerkesztése", + "placeholder": "Privát értékelés", + "clearAria": "Személyes értékelés törlése", + "cancelEditAria": "Személyes értékelés szerkesztésének megszakítása" + }, + "editCover": "Borító szerkesztése", + "viewCover": "Nagyobb borító megtekintése", + "finished": "Kész", + "resetFileProgress": "Fájlhaladás visszaállítása", + "resetEditionProgress": "A(z) {format} haladásának alaphelyzetbe állítása", + "resetting": "Visszaállítás...", + "resetProgressConfirm": "Biztosan visszaállítod a(z) {label} tárolt olvasási haladását?", + "moreCount": "+ további {count}", + "untitled": "Névtelen", + "metadataScore": "Metaadat-pontszám", + "primaryFormat": "Elsődleges formátum", + "readAloudSync": { + "title": "Felolvasási haladás szinkronizálása", + "state": { + "enabled": "Engedélyezve", + "disabled": "Letiltva", + "unavailable": "Nem elérhető", + "epubCopiesOnly": "Csak EPUB példányok" + }, + "enabledDescription": "A hangoskönyv-, webes olvasó-, Kobo- és KOReader-pozíciók szinkronban maradnak.", + "disabledDescription": "Mindegyik formátum megőrzi a saját olvasási pozícióját.", + "epubCopiesDescription": "A webes olvasó-, Kobo- és KOReader-pozíciók szinkronban maradnak az EPUB-példányok között. Adj hozzá egyező hangoskönyvfájlokat a hangoskönyv szinkronizálásához.", + "reason": { + "no_media_overlay_epub": "Médiaátfedésekkel rendelkező, hangos EPUB szükséges.", + "no_audio_files": "Egyező, önálló hangoskönyvfájlok szükségesek.", + "missing_duration": "Hiányos hangidőtartam-metaadatok.", + "durationMismatch": "Az időtartamok nem egyeznek kellő pontossággal: hangoskönyv: {audio}, hangos EPUB: {overlay}." + }, + "enable": "Engedélyezés", + "disable": "Letiltás", + "saving": "Mentés...", + "saveFailed": "A felolvasási haladás szinkronizálását nem sikerült frissíteni." + }, + "openIn": "Megnyitás itt: {provider}", + "showLess": "Kevesebb mutatása", + "showMore": "Több mutatása", + "publisher": "Kiadó", + "published": "Publikálva", + "language": "Nyelv", + "pages": "Oldalak", + "duration": "Időtartam", + "edition": "Kiadás", + "abridged": "Rövidített", + "unabridged": "Teljes kiadás", + "isbn": "ISBN", + "fileSize": "Fájlméret", + "library": "Könyvtár", + "added": "Hozzáadva", + "cancelDateAddedEdit": "Hozzáadás dátuma szerkesztésének megszakítása", + "editDateAdded": "Hozzáadás dátuma szerkesztése", + "dateStarted": "Kezdés dátuma", + "saving": "Mentés...", + "cancelDateStartedEdit": "Kezdés dátuma szerkesztésének megszakítása", + "editDateStarted": "Kezdés dátuma szerkesztése", + "dateFinished": "Befejezés dátuma", + "cancelDateFinishedEdit": "Befejezés dátuma szerkesztésének megszakítása", + "editDateFinished": "Befejezés dátuma szerkesztése", + "customMetadata": "Egyéni metaadatok", + "synopsis": "Fülszöveg", + "noDescription": "Nincs elérhető leírás.", + "dateStartedFutureError": "A kezdés dátuma nem lehet a jövőben.", + "dateAddedRequiredError": "A hozzáadás dátuma kötelező.", + "dateAddedFutureError": "A hozzáadás dátuma nem lehet a jövőben.", + "dateFinishedFutureError": "A befejezés dátuma nem lehet a jövőben.", + "dateFinishedBeforeStartedError": "A befejezés dátuma nem lehet korábbi, mint a kezdés dátuma.", + "dateFinishedBeforeStartedErrorWithDate": "A befejezés dátuma nem lehet korábbi, mint a kezdés dátuma ({date}).", + "saveReadingDatesError": "Az olvasási dátumok mentése sikertelen.", + "saveAddedDateError": "A hozzáadás dátumának mentése sikertelen.", + "koboPendingDelete": "Eszközről való törlésre vár", + "koboPendingDeleteTooltip": "A Kobo a következő szinkronizáláskor törli.", + "koboRemovedByDevice": "Eszköz által törölve", + "koboRemovedByDeviceTooltip": "A Kobo jelentése szerint ez a könyv törölve lett.", + "koboNotSynced": "Nincs szinkronizálva", + "koboNotSyncedTooltip": "Sorba állítva a következő Kobo-szinkronizáláshoz.", + "filesNotFound": "A fájlok nem találhatók", + "filesNotFoundDescription": "A könyvhöz tartozó fájl(ok) már nem találhatók a lemezen. A metaadatok továbbra is elérhetők. A megerősítéshez futtass egy könyvtárellenőrzést, vagy távolítsd el a bejegyzést.", + "resetHoldNotice": "A(z) {device} még a régi pozíciót ({percent}) tárolja", + "resetHoldRelease": "Ezen eszköz pozíciójának használata", + "resetHoldReleasing": "Elengedés...", + "resetHoldReleaseFailed": "Ezt a pozíciót nem sikerült használni. Próbáld újra.", + "editions": "Kiadások", + "editionsSummary": "{count} · {size}", + "moreFormats": "+ további {count}", + "filesOnDisk": "Fájlok a lemezen", + "yourReading": "Saját olvasás", + "lastRead": "utoljára olvasva: {when}", + "notStarted": "nincs elkezdve", + "noSessionsYet": "Még nincsenek olvasási munkamenetek. Ha megnyitod ezt a könyvet az olvasóban, a rendszer követni fogja az időt, a tempót és az eszközönkénti haladást.", + "activitySessions": "Munkamenetek", + "activityTime": "Idő", + "activityAverage": "Átlag", + "activityProgress": "Előrehaladás", + "activityDayTooltip": "{day}: {minutes} min", + "activityReached": "{percent} elérve", + "durationS": "{seconds}s", + "durationM": "{minutes}m", + "durationHm": "{hours}h {minutes}m", + "yourReview": "Értékelésed", + "reviewNotWritten": "Még nincs megírva", + "writeReview": "Írás", + "collections": "Gyűjtemények", + "noCollections": "Egyik sem", + "onDisk": "A lemezen", + "detailsHeading": "Részletek", + "percentUnderOne": "<1%", + "percentOverNinetyNine": ">99%" + }, + "editMetadata": { + "fieldCount": "{count, plural,=0 {nincs mező} one {egy mező} other {# mező}}", + "bookFilesTarget": "könyvfájlok", + "formatFilesTarget": "{formats}-fájlok", + "noPrimaryFile": "Nincs elsődleges fájl", + "formatNotSupported": "Ez a fájlformátum nem támogatja a visszaírást", + "formatDisabled": "A visszaírás ki van kapcsolva ehhez a formátumhoz", + "fileExceedsSizeLimit": "Ez a fájl meghaladja a visszaírási méretkorlátot", + "writing": "Írás...", + "saveInProgress": "Mentés folyamatban", + "writeManualLibraryDisabled": "Metaadatok fájlba írása és átnevezés a lemezen; az automatikus visszaírás ki van kapcsolva ebben a könyvtárban", + "writeManualTooltip": "{fields} írása ide: {target}, és átnevezés a lemezen", + "applyResult": "{skipped}, {updated}", + "skippedLockedFields": "{count, plural, =0 {Nincs kihagyott zárolt mező} one {Egy zárolt mező kihagyva} other {# zárolt mező kihagyva}}", + "updatedFields": "{count, plural, =0 {nincs frissített mező} one {egy mező frissítve} other {# mező frissítve}}", + "wroteFieldsToFile": "{fields} fájlba írva", + "fileWriteFailedReason": "Fájlba írás sikertelen: {reason}", + "fileWriteFailed": "Fájlba írás sikertelen", + "fileWriteSkippedReason": "Fájlba írás kihagyva: {reason}", + "fileWriteSkipped": "Fájlba írás kihagyva", + "metadataSaved": "Metaadatok mentve", + "metadataWrittenToFile": "Metaadatok fájlba írva", + "savedButWriteFailedReason": "Metaadatok mentve, de a fájlba írás sikertelen: {reason}", + "savedButWriteFailed": "Metaadatok mentve, de a fájlba írás sikertelen", + "savedWriteSkippedReason": "Metaadatok mentve, a fájlba írás kihagyva: {reason}", + "savedWriteSkipped": "Metaadatok mentve, a fájlba írás kihagyva", + "saveFailed": "A változtatások mentése sikertelen", + "saveFailedWithStatus": "A változtatások mentése nem sikerült (HTTP {status})", + "loadFromFileFailed": "A metaadatok betöltése a fájlból sikertelen", + "loadedFieldsFromFile": "{count, plural, =0 {Nincs fájlból betöltött mező} one {Egy mező betöltve a fájlból} other {# mező betöltve a fájlból}}", + "noMetadataInFile": "Nem találhatók metaadatok a fájlban", + "loadFromFile": "Betöltés fájlból", + "loadFromFileTooltip": "Metaadatok betöltése az elsődleges könyvfájlból", + "writeToFile": "Írás fájlba", + "autoFill": "Automatikus kitöltés", + "autoFillFailed": "Az automatikus kitöltés sikertelen", + "fetchingMetadata": "Metaadatok lekérése...", + "noExistingProviderIds": "Nem sikerült metaadatokat lekérni: az aktív mezőszabály-szolgáltatók egyike sem rendelkezik tárolt azonosítóval ehhez a könyvhöz.", + "allFieldsLocked": "Minden mező zárolva", + "autoFillTooltip": "Mezők automatikus kitöltése a metaadat-beállítások alapján", + "lockAll": "Összes zárolása", + "lockAllTooltip": "Összes mező zárolása", + "unlockAll": "Összes feloldása", + "unlockAllTooltip": "Összes mező feloldása", + "saving": "Mentés...", + "fileWriteBackDetails": "Fájl-visszaírás részletei", + "fileWriteBack": "Fájl-visszaírás", + "enabled": "Engedélyezve", + "saveWritesMetadata": "A 'Mentés' kiírja a metaadatokat ide: {target}", + "formats": "Formátumok", + "bookFiles": "Könyvfájlok", + "supportedFields": "Támogatott mezők", + "titleLabel": "Cím", + "subtitleLabel": "Alcím", + "authorsLabel": "Szerzők", + "narratorsLabel": "Narrátorok", + "genresLabel": "Műfajok", + "tagsLabel": "Címkék", + "ratingLabel": "Értékelés", + "rateStar": "{star} csillagos értékelés", + "clear": "Törlés", + "communityRatingsLabel": "Közösségi értékelések", + "noProviderRatings": "Nincsenek szolgáltatói értékelések", + "seriesLabel": "Sorozat", + "publisherLabel": "Kiadó", + "languageLabel": "Nyelv", + "yearLabel": "Év", + "pageCountLabel": "Oldalszám", + "isbn13Label": "ISBN-13", + "isbn10Label": "ISBN-10", + "durationLabel": "Időtartam (s)", + "abridgedLabel": "Rövidített", + "providerIds": "Szolgáltatói azonosítók", + "comicDetails": "Képregény részletei", + "comicIssueNumberLabel": "Kiadás száma", + "comicVolumeLabel": "Kötet", + "comicStoryArcsLabel": "Cselekményszálak", + "comicPencillersLabel": "Rajzolók", + "comicInkersLabel": "Tusozók", + "comicColoristsLabel": "Színezők", + "comicLetterersLabel": "Szövegezők", + "comicCoverArtistsLabel": "Borítórajzolók", + "comicCharactersLabel": "Karakterek", + "comicTeamsLabel": "Csapatok", + "comicLocationsLabel": "Helyszínek", + "customMetadata": "Egyéni metaadatok", + "descriptionLabel": "Leírás", + "unlockField": "{field} feloldása", + "lockField": "{field} zárolása", + "diffPanel": { + "untitled": "Névtelen", + "noFieldsSelected": "Nincs mező kiválasztva", + "fieldsSelected": "{count, plural, =0 {nincs kiválasztott mező} one {egy kiválasztott mező} other {# kiválasztott mező}}", + "results": "Eredmények", + "providerMatches": "„{provider}-találatok", + "selectedOf": "{selected} / {total} kiválasztva", + "yearUnknown": "Év ismeretlen", + "indexOf": "{index} / {total}", + "switchedResult": "Találatváltás történt. A szolgáltatóhoz kapcsolódó korábbi kijelölések törlődtek.", + "selectFieldsToApply": "Válaszd ki az alkalmazandó mezőket", + "copyMissing": "Hiányzó másolása", + "copyAll": "Összes másolása", + "hideUnchanged": "Változatlanok elrejtése", + "showUnchanged": "Változatlanok mutatása", + "current": "Jelenlegi", + "new": "Új", + "noMetadata": "Ebből a forrásból nem érhetők el metaadatok.", + "noChangedFields": "Nincsenek módosított vagy hiányzó mezők. Mindent áttekinthet a \"Változatlanok mutatása\" funkcióval.", + "applyToForm": "Alkalmazás az űrlapon", + "secondCover": { + "audioResults": "Hangoskönyvborító-találatok", + "bookResults": "Könyvborító találatok", + "showCover": "A(z) {provider} borítójának mutatása, {index} / {total}", + "searchingAudio": "Hangoskönyv-kiadások keresése…", + "searchingBook": "Könykiadások keresése...", + "noAudio": "Nem találhatók hangoskönyv-borítók.", + "noBook": "Nem találhatók könyvborítók." + } + }, + "diff": { + "locked": "Zárolt", + "previewAlt": "Előnézet", + "currentCoverAlt": "Jelenlegi borító", + "newCoverAlt": "Új borító", + "pickCoverFromProvider": "Borító választása másik szolgáltatótól", + "pickCoverSource": "Borító forrásának kiválasztása", + "coverShapeHint": { + "portraitForAudio": "Álló tájolású kép. A hangoskönyv-borítók négyzet alakúak.", + "squareForBook": "Négyzet alakú kép. A könyvborítók álló tájolásúak." + }, + "pickFromProvider": "Választás másik szolgáltatótól", + "pickSource": "Forrás kiválasztása", + "useNew": "Az új {field} használata", + "keepCurrent": "A jelenlegi {field} megtartása", + "genreWriteMode": { + "label": "Hogyan kell alkalmazni a műfajokat", + "merge": "Egyesítés", + "replace": "Csere" + }, + "empty": "üres", + "showLess": "Kevesebb mutatása", + "showMore": "Több mutatása", + "coverPreviewAlt": "Borító előnézete", + "fields": { + "coverUrl": "Borító", + "bookCover": "Könyvborító", + "audioCover": "Hangoskönyv-borító", + "title": "Cím", + "subtitle": "Alcím", + "authors": "Szerzők", + "description": "Leírás", + "publisher": "Kiadó", + "publishedDate": "Publikálva", + "language": "Nyelv", + "pageCount": "Oldalak száma", + "communityRating": "Közösségi értékelés", + "seriesName": "Sorozat", + "seriesIndex": "Sorozatindex", + "isbn13": "ISBN-13", + "isbn10": "ISBN-10", + "genres": "Műfajok", + "narrators": "Narrátorok", + "durationSeconds": "Időtartam (másodperc)", + "abridged": "Rövidített", + "hardcoverEditionId": "Hardcover-kiadásazonosító", + "comicIssueNumber": "Kiadás száma", + "comicVolumeName": "Kötet", + "comicPencillers": "Rajzolók", + "comicInkers": "Tusozók", + "comicColorists": "Színezők", + "comicLetterers": "Szövegezők", + "comicCoverArtists": "Borítórajzolók", + "comicCharacters": "Karakterek", + "comicTeams": "Csapatok", + "comicLocations": "Helyszínek", + "comicStoryArcs": "Cselekményszálak", + "sourceUrl": "Forrás URL" + }, + "providerIds": { + "google": "Google Könyvek-azonosító", + "goodreads": "Goodreads-azonosító", + "amazon": "Amazon-azonosító", + "hardcover": "Hardcover-azonosító", + "openLibrary": "Open Library-azonosító", + "itunes": "iTunes-azonosító", + "audible": "Audible-azonosító", + "librofm": "Libro.fm ISBN", + "comicvine": "ComicVine-azonosító", + "ranobedb": "RanobeDB-azonosító", + "kobo": "Kobo-azonosító", + "lubimyczytac": "LubimyCzytac-azonosító", + "aladin": "Aladin-azonosító" + } + }, + "searchDrawer": { + "searchTitle": "Metaadatok keresése", + "compareTitle": "Metaadatok összehasonlítása", + "searchSubtitle": "A legjobb szolgáltatói találat megkeresése ehhez a könyvhöz.", + "compareSubtitle": "Tekintsd át az eltéréseket, és csak a kívánt módosításokat alkalmazd." + }, + "searchPanel": { + "untitledQuery": "Névtelen lekérdezés", + "titlePlaceholder": "Cím", + "authorPlaceholder": "Szerző", + "isbnPlaceholder": "ISBN", + "searching": "Keresés...", + "activeQuery": "Aktív lekérdezés", + "searchScope": "Keresési hatókör", + "allEnabled": "Mind engedélyezve", + "all": "Összes", + "fieldRules": "Mezőszabályok", + "custom": "Egyéni", + "providerNotInFieldRules": "A(z) {provider} engedélyezve van, de nem szerepel a Mezőszabályok között", + "notInFieldRulesLabel": "Nem szerepel a Mezőszabályok között:", + "notInFieldRulesText": "{providers}. Szerepel a manuális keresésben az „Összes” engedélyezése esetén, de az automatikus metaadat-lekérés nem használja.", + "noResults": "Nincs találat", + "noResultsHint": "Próbáld meg módosítani a címet vagy a szerzőt", + "searchInterrupted": "A keresés nem fejeződött be", + "searchIncomplete": "Néhány találat hiányozhat", + "providerTimedOut": "A(z) {provider} túl lassan válaszolt.", + "providerThrottled": "A(z) {provider} elérte a lekérdezési korlátot. Várj egy pillanatot, majd próbáld újra.", + "providerFailed": "A(z) {provider} nem érhető el.", + "searchInterruptedHint": "Próbáld újra, vagy szűkítsd a keresési kört.", + "searchPrompt": "Keress fent, majd kattints egy találatra a metaadatok összehasonlításához." + }, + "writeAndRename": "Fájlba írás és átnevezés", + "writeAndRenameShort": "Írás és átnevezés", + "identityCard": "Azonosítók", + "catalogCard": "Katalógus", + "sourceCard": "Forrás", + "score": "Pontszám", + "scoreTooltip": "Metaadat-pontszám: {score} / 100", + "emptyFields": "{count, plural, one {üres mező} other {üres mező}}", + "emptyFieldsTooltip": "Még nincsenek kitöltve: {fields}. Az adatok pótlásához online keresés szükséges.", + "libraryRow": "Könyvtár", + "primaryRow": "Elsődleges", + "writeBackRow": "Visszaírás", + "writeBackOff": "Ki", + "lastWrittenRow": "Utoljára írva", + "neverWritten": "Soha", + "fileCount": "{count, plural, =0 {nincs fájl} one {egy fájl} other {# fájl}}", + "unknownFormat": "Ismeretlen" + }, + "files": { + "title": "Könyvfájlok", + "stats": { + "files": "Fájlok", + "total": "Összesen", + "runtime": "Hossz", + "formats": "Formátumok" + }, + "filesHeading": "Fájlok", + "allPresent": "Mindegyik megtalálható", + "groupedByReader": "olvasó szerint csoportosítva", + "thisFile": "Ez a fájl", + "writeBackShort": "Visszaírás", + "fieldsSet": "{filled} / {total} megadva", + "writtenSummary": "{fields} és {count, plural, one {# további mező} other {# további mező}} beírva a(z) {format} formátumba.", + "writtenSummaryAll": "{fields} beírva a(z) {format} formátumba.", + "writtenNothing": "A(z) {total} írható mező egyikének sincs még értéke.", + "writeBackOff": "A visszaírás ki van kapcsolva ehhez a könyvhöz.", + "editMetadata": "Metaadatok szerkesztése", + "showAllTracks": "Mindent mutat", + "collapseTracks": "Összecsuk", + "moreTracks": "{count, plural, one {# további fejezet} other {# további fejezet}}", + "tracksRolled": "{count, plural,one {# fejezet} other {# fejezet}}", + "fileDetails": "Fájl részletei", + "openDetails": "Fájl részleteinek megnyitása", + "closeDetails": "Fájl részleteinek bezárása", + "trackFrom": "{track} / {total}. fejezet, ekkortól: {time}", + "throughCopy": "{percent} olvasva ebből a példányból", + "fileCount": "{count, plural, =0 {nincs fájl} one {# fájl} other {# fájl}}", + "synced": "Szinkronizálva {time}", + "sortAria": "Fájlok rendezése", + "syncHistory": "Előzmények szinkronizálása", + "metadataWriteBack": "Metaadatok visszaírása", + "relative": { + "seconds": "{value} másodperce", + "minutes": "{value} perce", + "hours": "{value} órája", + "days": "{value} napja" + }, + "renameFailed": "Nem sikerült átnevezni a fájlt", + "deleteFailed": "Nem sikerült törölni a fájlt", + "addFile": "Fájl hozzáadása", + "lastSynced": "Utoljára szinkronizálva: {time}", + "sort": { + "label": "Rendezés:", + "name": "Név", + "format": "Formátum", + "size": "Méret", + "date": "Dátum" + }, + "hidePaths": "Útvonalak elrejtése", + "showPaths": "Útvonalak mutatása", + "hideLog": "Napló elrejtése", + "viewSyncLog": "Szinkronizálási napló megtekintése", + "noWriteHistory": "Még nincs írási előzmény.", + "fieldsWritten": "{count, plural, =0 {nincs mező} one {egy mező} other {# mező}}", + "track": "{number}. fejezet", + "primary": "Elsődleges", + "read": "Olvasás", + "play": "Lejátszás", + "peek": "Betekintés", + "download": "Letöltés", + "moreActions": "További műveletek", + "rename": "Átnevezés", + "empty": { + "title": "Nincs csatolt fájl", + "description": "Ehhez a könyvhöz nincsenek társított fájlok." + }, + "renameModal": { + "title": "Fájl átnevezése", + "description": "A fizikai fájl átnevezése a lemezen.", + "placeholder": "Új fájlnév" + }, + "saving": "Mentés...", + "deleteModal": { + "title": "Fájl törlése?", + "description": "Biztosan törölni szeretnéd a(z) „{filename}” fájlt? Ez a művelet nem vonható vissza." + }, + "deleting": "Törlés...", + "folderAria": "Mappa helye", + "folderContents": "Mappa tartalma", + "inspectorAria": "Kiválasztott fájl", + "libraryRoot": "könyvtárgyökér", + "onDisk": "A lemezen", + "missing": "Hiányzó", + "backToFolder": "Vissza a mappába", + "copyPath": "Teljes elérési út másolása", + "pathCopied": "Az útvonal a vágólapra másolva", + "resume": "Folytatás", + "audiobook": "Hangoskönyv", + "writeTarget": "Írási cél", + "enabled": "Engedélyezve", + "disabled": "Ki", + "notSet": "nincs beállítva", + "sortAdded": "Hozzáadva", + "formatCount": "{count, plural, one {# formátum} other {# formátum}}", + "trackCount": "{count, plural,one {# fejezet} other {# fejezet}}", + "formatsInFolder": "{count, plural, one {# formátumot tartalmaz} other {# formátumot tartalmaz}}", + "compositionAria": "Mappaméret megoszlása formátum szerint", + "percentRead": "{percent} elolvasva", + "trackOf": "Fejezet {track} / {total}", + "groups": { + "ebook": "E-könyv", + "document": "Dokumentum", + "comic": "Képregény", + "audio": "Hang", + "extras": "Extrák" + }, + "roles": { + "primary": "Elsődleges", + "content": "Alternatív", + "supplement": "Melléklet", + "cover": "Borító" + }, + "reader": { + "none": "Nincs olvasó", + "ebook": "E-könyv-olvasó", + "document": "PDF-olvasó", + "comic": "Képregény-olvasó", + "audio": "Hanglejátszó" + }, + "spec": { + "format": "Formátum", + "role": "Szerepkör", + "size": "Méret", + "length": "Hossz", + "added": "Hozzáadva", + "indexed": "Indexelve", + "opensIn": "Megnyílik itt", + "writeBack": "Visszaírás", + "track": "Fejezet", + "targetFile": "Célfájl", + "notWritten": "Nincs írva" + }, + "duration": { + "hoursMinutes": "{hours}h {minutes}m", + "minutes": "{minutes}m", + "minutesSeconds": "{minutes}m {seconds}s", + "seconds": "{seconds}s" + }, + "positionHeading": "Aktuális pozíció ebben a példányban", + "copiesStarted": "{started} / {total} példányból elkezdve", + "nothingStarted": "Még semmi sincs elkezdve", + "throughFile": "{percent} ebből a fájlból", + "notOpened": "Még nincs megnyitva", + "lastRead": "Utoljára olvasva: {time}", + "noPosition": "Nincs tárolt olvasási pozíció", + "trackPositionHeading": "Ez a fejezet itt található", + "totalRuntime": "{duration} összesen", + "startsAt": "Ekkor kezdődik: {time}", + "trackLength": "{duration} hosszú", + "switchFileHeading": "Fájlváltás", + "writeBackHeading": "Írva ebbe a fájlba", + "fieldsWithValue": "{filled} / {total} mező rendelkezik értékkel", + "lastRun": "Utolsó futtatás: {time}", + "neverRun": "Soha nem volt futtatva", + "historyHeading": "Előzmények", + "timeline": { + "written": "Metaadatok írva a(z) {format} formátumba", + "writtenMany": "Metaadatok beírva a(z) {format} formátumba ×{count}", + "writeDetail": "{count, plural, one {# mező} other {# mező}} · {ms}ms · {trigger}", + "failed": "Írás sikertelen", + "indexed": "{name} indexelve", + "indexedMany": "{count} {format} fájl indexelve" + } + }, + "highlights": { + "note": { + "placeholder": "Megjegyzés hozzáadása...", + "saving": "Mentés" + }, + "export": { + "trigger": "Exportálás", + "plainText": "Egyszerű szöveg", + "page": "Oldal exportálása", + "selected": "Kiválasztott exportálása" + }, + "sort": { + "position": "Pozíció", + "newest": "Legújabb elől", + "oldest": "Legrégebbi elől" + }, + "summary": { + "highlights": "{count, plural, =0 {nincs kiemelés} one {egy kiemelés} other {# kiemelés}}", + "notes": "{count, plural, =0 {nincs jegyzet} one {egy jegyzet} other {# jegyzet}}", + "chapters": "{count, plural, =0 {nincs fejezet} one {egy fejezet} other {# fejezet}}" + }, + "filterByChapter": "Szűrés fejezet alapján", + "allChapters": "Összes fejezet", + "untitled": "Névtelen", + "trash": "Kuka", + "empty": { + "noMatch": "Egyetlen kiemelés sem felel meg a szűrőknek.", + "resetFilters": "Szűrők visszaállítása", + "none": "Még nincsenek kiemelések", + "hint": "Kiemelések létrehozásához jelölj ki szöveget olvasás közben" + }, + "uncategorized": "Kategorizálatlan", + "paginationUnit": "kiemelések", + "rail": { + "title": "Jelölések", + "unit": "{count, plural,one {kiemelés} other {kiemelés}}", + "withNotes": "jegyzetet tartalmaz", + "chaptersMarked": "fejezet megjelölve", + "ofChaptersMarked": "a {total} fejezetből megjelölve", + "colour": "Szín", + "showOnly": "Csak a következő mutatása: {colour}", + "source": "Ahonnan származnak", + "health": "Pozíciók állapota", + "needsAttention": "{count, plural, one {# figyelmet igényel} other {# figyelmet igényel}}", + "anchorLost": "{count, plural, one {egy elveszítette a rögzítési pontját a fájl módosulásakor} other {# elveszítette a rögzítési pontját a fájl módosulásakor}}", + "reAnchored": "{count, plural, one {egy rögzítési pontja automatikusan helyreállt} other {# rögzítési pontja automatikusan helyreállt}}", + "reviewPositions": "Pozíciók áttekintése", + "span": "Terjedelem", + "firstMark": "Első jelölés", + "lastMark": "Utolsó jelölés", + "markingDays": "Megjelölt napok", + "exportCount": "{count} exportálása" + }, + "row": { + "select": "Kiemelés kijelölése", + "showMore": "Több mutatása", + "showLess": "Kevesebb mutatása", + "note": "Megjegyzés", + "addNote": "Megjegyzés hozzáadása", + "page": "{page}. o.", + "anchorLost": "A rögzítési hely elveszett", + "reAnchored": "Rögzítési pont helyreállítva" + }, + "stream": { + "title": "Kiemelések folyama", + "searchPlaceholder": "Keresés {count} kiemelés és jegyzet között", + "all": "Összes", + "notes": "Megjegyzések", + "review": "Áttekintés", + "density": "Váltás a kényelmes és a kompakt sorok között", + "matchCount": "{shown} / {total} találat felel meg", + "textChip": "szöveg: „{query}”", + "marks": "{count, plural,one {# jelölés} other {# jelölés}}", + "loadingMore": "Továbbiak betöltése" + }, + "bulk": { + "selected": "{count} kiválasztva", + "selectAll": "Mind a(z) {count} kijelölése", + "recolour": "Kijelölés átszínezése", + "recolourTo": "Átszínezés ilyenre: {colour}", + "clear": "Kijelölés törlése" + }, + "index": { + "title": "Mutató", + "groupBy": "Folyam csoportosítása a következő szerint", + "byChapter": "Fejezetek", + "byColour": "Színek", + "byDay": "Napok" + }, + "activity": { + "title": "Megjelölési tevékenység", + "days": "{count, plural, one {# nap} other {# nap}}", + "showAll": "Mind a(z) {count} nap megjelenítése", + "showFewer": "Kevesebb mutatása" + }, + "inspector": { + "title": "Kiemelés részletei", + "back": "Vissza a mutatóhoz", + "counter": "{position} / {total} jelölés", + "previous": "Előző jelölés", + "next": "Következő jelölés", + "notePrompt": "Miért fontos ez? A jegyzetek kereshetők, és az exportált fájllal együtt mozognak.", + "style": "Stílus", + "position": "Pozíció és szinkronizálás", + "openHere": "Megnyitás itt" + }, + "band": { + "title": "Jelölések helye", + "subtitle": "minden megjelölt fejezet olvasási sorrendben, az eredeti jelölés színével", + "barTitle": "{chapter}, {count} jelölés", + "start": "Eleje", + "densest": "Legtömörebb", + "marks": "{count, plural,one {# jelölés} other {# jelölés}}", + "longestGap": "Leghosszabb szakasz jelölés nélkül", + "chapters": "{count, plural,one {# fejezet} other {# fejezet}}", + "end": "Vége" + }, + "emptyStage": { + "title": "A(z) {title} még nem tartalmaz kiemeléseket", + "body": "A kiemelések három különböző helyről érkeznek, ez az oldal pedig egyetlen közös idővonalon gyűjti össze őket.", + "openReader": "Olvasó megnyitása", + "web": { + "title": "Olvasás itt", + "body": "Jelölj ki egy szöveget a beépített olvasóban, és válassz egy színt." + }, + "kobo": { + "title": "Egy Kobo szinkronizálása", + "body": "A készüléken készített kiemelések a következő szinkronizálás alkalmával kerülnek átvitelre." + }, + "koreader": { + "title": "KOReader szinkronizálása", + "body": "A bővítmény a pontos pozíciójukkal együtt tölti fel az annotációkat." + } + }, + "shortcuts": { + "title": "Billentyűzet", + "description": "A kiemelések listájához tartozó billentyűparancsok.", + "move": "Következő / előző jelölés", + "open": "Vizsgáló megnyitása", + "back": "Vissza a mutatóhoz", + "search": "Keresés", + "note": "Jegyzet írása", + "recolour": "Átszínez", + "select": "Jelölés kiválasztása", + "regroup": "Folyam újracsoportosítása", + "copy": "Idézet másolása", + "reader": "Megnyitás az olvasóban" + }, + "railTitle": "{marks} jelölés · {chapters} fejezet", + "whenMarked": "Mikor lettek megjelölve", + "chapters": "Fejezetek", + "noChapter": "Nincs fejezet", + "views": { + "position": "Olvasási sorrendben", + "newest": "Legújabb elől", + "oldest": "Legrégebbi elől", + "colour": "Szín szerint", + "source": "Forrás szerint" + } }, "readingLog": { + "resetReadingState": "Olvasási állapot törlése", + "vitals": { + "aria": "Olvasási statisztika", + "notSet": "Nincs beállítva", + "started": "Elkezdve", + "finished": "Befejezve", + "editStarted": "A könyv kezdési dátumának szerkesztése", + "editFinished": "A könyv befejezési dátumának szerkesztése", + "totalTime": "Összes idő", + "sessions": "Munkamenetek", + "avgSession": "Átlagos munkamenet", + "activeDays": "Aktív napok", + "activeDaysOf": "{active} / {total}", + "pace": "Sebesség", + "pacePerHour": "{percent}%/h", + "lastRead": "Utoljára olvasva", + "whereYouRead": "Hol olvastad", + "addSession": "Munkamenet hozzáadása", + "durationHm": "{hours}h {minutes}m", + "durationM": "{minutes}m", + "durationS": "{seconds}s" + }, "ledger": { - "none": "egyik sem" + "title": "Munkamenetek", + "none": "egyik sem", + "colDay": "Nap", + "colTime": "Idő", + "colLength": "Hossz", + "colChange": "Módosítás", + "colPosition": "Könyvbeli pozíció", + "colReached": "Teljesített", + "colSource": "Forrás", + "colFormat": "Formátum", + "gapDays": "{count, plural, one {# olvasás nélküli nap} other {# olvasás nélküli nap}}", + "attemptBegan": "{index} kísérlet megkezdődött", + "attemptOutsideAny": "Kísérleten kívül", + "empty": "Még nincsenek rögzített munkamenetek", + "emptyHint": "A könyv megnyitása az olvasóban, egy készülék szinkronizálása, vagy egy munkamenet kézi hozzáadása." }, "attempts": { - "none": "egyik sem" + "title": "Kísérletek", + "none": "egyik sem", + "ordinal": "{index} kísérlet", + "addPast": "Múltbeli kísérlet hozzáadása", + "reread": "Újraolvasás", + "rereadPrompt": "Új olvasási kísérlet indítása?", + "rereadResetProgress": "Az olvasási helyzet visszaállítása a kezdetére. A szinkronizált készülékek is átvehetik ezt az alaphelyzetbe állítást.", + "rereadConfirm": "Újraolvasás elkezdése", + "fieldStarted": "Elkezdve", + "fieldEnded": "Befejezve", + "fieldOutcome": "Eredmény", + "outcome": { + "completed": "Kész", + "skimmed": "Átfutva", + "abandoned": "Abbahagyva", + "inProgress": "Folyamatban" + }, + "spanRange": "{from} - {to}", + "spanSince": "{from} óta", + "spanEnded": "befejezve {to}", + "spanUnknown": "Nincsenek rögzített dátumok", + "sessionCount": "{count, plural, one {# munkamenet} other {# munkamenet}}", + "endBeforeStart": "A befejezés dátuma nem lehet korábbi a kezdési dátumnál.", + "editAria": "Kísérlet szerkesztése", + "deleteAria": "Kísérlet törlése", + "cancelDeleteAria": "Kísérlet törlésének megszakítása", + "confirmDeleteAria": "Kísérlet törlésének jóváhagyása", + "empty": "Nincsenek rögzített kísérletek", + "emptyHint": "Újraolvasás indítása, vagy olyan kísérlet hozzáadása, amelynek befejezése korábbi a könyvtár létrehozásánál." + }, + "records": { + "title": "Bejegyzések", + "longestSession": "Leghosszabb munkamenet", + "bestDay": "Legjobb nap", + "longestStreak": "Leghosszabb sorozat", + "streakDays": "{count, plural, one {# nap} other {# nap}}", + "pace": "Olvasási sebesség", + "jumpedBack": "Visszaugrás", + "jumpedBackTimes": "{count, plural, one {# alkalommal} other {# alkalommal}}", + "firstOpened": "Először megnyitva", + "empty": "A bejegyzések akkor jelennek meg, ha a könyvhöz már tartoznak munkamenetek." + }, + "band": { + "curve": "Görbe", + "trace": "Nyomkövetés", + "switchAria": "Diagram nézet", + "curveTitle": "Haladási idővonal", + "traceTitle": "Hol tartottál a könyvben", + "curveSubDays": "{active} / {total} aktív nap", + "curveSubSitting": "egyetlen alkalommal, munkamenetenként", + "traceSub": "mindegyik oszlop egy-egy munkamenet által lefedett szakaszt jelöl", + "traceSubWithBacktracks": "{count, plural, one {minden oszlop egy munkamenet, # visszaugrás} other {minden oszlop egy munkamenet, # visszaugrás}}", + "legendPosition": "Elért pozíció", + "legendMinutes": "Olvasott percek", + "legendBacktrack": "Visszaugrás", + "traceEmpty": "Még nem található bejegyzés", + "traceEmptyHint": "Amint létrejönnek munkamenetek, itt láthatóvá válik az egyes alkalmak által lefedett könyvszakasz, valamint a visszaugrások helye.", + "tooltipCovered": "{from}% és {to}% közötti szakasz lefedve", + "tooltipMinutes": "{minutes} perc" + }, + "emptyStage": { + "title": "Még nincsenek naplózott adatok ehhez a könyvhöz", + "description": "Az olvasási napló munkamenetekből áll össze. A BookOrbit minden alkalommal rögzít egyet, amikor a webes olvasóban olvas, a többit pedig a szinkronizált készülékekről veszi át.", + "readerTitle": "Olvasás itt", + "readerBody": "A BookOrbit olvasójában eltöltött minden perc naplózása automatikusan történik.", + "koreaderTitle": "KOReader szinkronizálása", + "koreaderBody": "A bővítmény minden olvasási alkalmat visszaküld a rendszerbe, az elért oldallal együtt.", + "koboTitle": "Egy Kobo szinkronizálása", + "koboBody": "Csatlakoztasd a készüléket, és a BookOrbit beolvassa a saját olvasásiidő-számlálódat.", + "addSession": "Munkamenet kézi hozzáadása", + "recordPast": "Múltbeli olvasás rögzítése" + }, + "moreActionsAria": "További olvasási napló műveletek", + "export": { + "button": "Exportálás" + }, + "weekdays": { + "sun": "V", + "mon": "H", + "tue": "K", + "wed": "Sze", + "thu": "Cs", + "fri": "P", + "sat": "Szo" + }, + "months": { + "jan": "Jan", + "feb": "Feb", + "mar": "Már", + "apr": "Ápr", + "may": "Máj", + "jun": "Jún", + "jul": "Júl", + "aug": "Aug", + "sep": "Szept", + "oct": "Okt", + "nov": "Nov", + "dec": "Dec" + }, + "heatmap": { + "minutesUnit": "perc", + "title": "Tevékenység", + "empty": "Nincs olvasási tevékenység ebben az időablakban.", + "emptyHint": "Az itt rögzített munkamenetek alapján áll össze a rendszerességi nézet." + }, + "hero": { + "summaryAria": "Olvasási statisztika", + "notSet": "Nincs beállítva", + "relative": { + "seconds": "{count} másodperce", + "minutes": "{count} perce", + "hours": "{count} órája", + "days": "{count} napja", + "months": "{count, plural, =0 {# hónapja} one {# hónapja} other {# hónapja}}", + "years": "{count, plural,=0 {# éve} one {# éve} other {# éve}}" + }, + "noSessions": "Nincsenek munkamenetek", + "dateErrors": { + "startFuture": "A kezdés dátuma nem lehet a jövőben.", + "finishFuture": "A befejezés dátuma nem lehet a jövőben.", + "finishBeforeStart": "A befejezés dátuma nem lehet korábbi a kezdési dátumnál.", + "finishBeforeStartWithDate": "A befejezés dátuma nem lehet korábbi a kezdési dátumnál ({date}).", + "saveFailed": "Az olvasási dátumok mentése sikertelen." + }, + "eta": { + "max": "99ó+ a befejezésig", + "minutes": "~{m}p a befejezésig", + "hours": "~{h}ó a befejezésig", + "hoursMinutes": "~{h}ó {m}p a befejezésig" + }, + "momentum": { + "none": "Nincs aktivitás az elmúlt két hétben", + "new": "Új aktivitás ezen a héten", + "up": "+{pct}% az előző 7 naphoz képest", + "down": "{pct}% az előző 7 naphoz képest", + "flat": "Változatlan az előző 7 naphoz képest" + }, + "stats": { + "totalTime": "Összes idő", + "sessions": "Munkamenetek", + "avgSession": "Átlag munkamenet", + "lastRead": "Utoljára olvasva" + }, + "firstRead": "Először olvasva", + "lastRead": "Utoljára olvasva", + "dateStarted": "Kezdés dátuma", + "dateFinished": "Befejezés dátuma", + "addSession": "Munkamenet hozzáadása" + }, + "journey": { + "tooltipProgress": "Előrehaladás", + "tooltipReading": "Olvasás", + "minutesUnit": "perc", + "title": "Haladási napló", + "empty": "Nincsenek haladási adatok ebben az időablakban.", + "emptyHint": "A haladás akkor jelenik meg, miután egy munkamenet rögzítette az olvasási helyzetet." + }, + "sourceSplit": { + "title": "Olvasási források", + "shortTitle": "Források" + }, + "untitled": "Névtelen", + "addSessionFailed": "Munkamenet hozzáadása sikertelen", + "filters": { + "show": "Mutat", + "dateRangeAria": "Olvasási munkamenet időintervalluma", + "allTime": "Mindenkori", + "last30": "Utolsó 30 nap", + "last90": "Utolsó 90 nap", + "thisYear": "Idén", + "allFormats": "Minden formátum" + }, + "table": { + "title": "Munkamenetek", + "sourceWeb": "Web", + "sourceIos": "iOS app", + "sourceWatchos": "Apple Watch", + "sourceManual": "Kézi", + "colDate": "Dátum", + "colDateMobile": "Dátum", + "colDuration": "Időtartam", + "colDurationMobile": "Időtartam", + "colProgressChange": "Haladás változása", + "colProgressChangeMobile": "Eltérés", + "colEndProgress": "Záró haladás", + "colEndProgressMobile": "Vége", + "jumpToProgress": "Ugrás {progress}%-ra", + "empty": "Még nincsenek rögzített olvasási munkamenetek.", + "emptyHint": "Egy munkamenet hozzáadásával kezdhető meg a könyv olvasási előzményeinek felépítése.", + "colPace": "Sebesség", + "colSource": "Forrás", + "colFormatMobile": "Fmt", + "colFormat": "Formátum", + "cancelDelete": "Törlés megszakítása", + "cancelDeleteAria": "Munkamenet törlésének megszakítása", + "confirmDeleteTitle": "Kattints újra a törlés megerősítéséhez", + "confirmDeleteAria": "Munkamenet törlésének megerősítése", + "deleteAria": "Munkamenet törlése", + "loadMore": "Több betöltése", + "showing": "{shown} / {total} munkamenet mutatva" } + }, + "richDescription": { + "linkProtocolError": "Http, https vagy mailto használata.", + "bold": "Félkövér", + "italic": "Dőlt", + "underline": "Aláhúzott", + "strikethrough": "Áthúzott", + "bulletList": "Pontozott lista", + "numberedList": "Számozott lista", + "outdentAria": "Listaelem behúzásának csökkentése", + "outdent": "Behúzás csökkentése", + "indentAria": "Listaelem behúzásának növelése", + "indent": "Behúzás növelése", + "quote": "Idézet", + "editLink": "Hivatkozás szerkesztése", + "link": "Hivatkozás", + "removeLink": "Hivatkozás eltávolítása", + "undo": "Visszavon", + "redo": "Újra", + "clearFormatting": "Formázás törlése", + "previewDescription": "Leírás előnézete", + "preview": "Előnézet", + "linkUrlLabel": "Hivatkozás URL", + "applyLink": "Hivatkozás alkalmazása", + "apply": "Alkalmaz", + "cancelLink": "Hivatkozás törlése", + "noDescription": "Nincs elérhető leírás." + }, + "seriesMembership": { + "addSeries": "Sorozat hozzáadása", + "seriesPlaceholder": "Sorozat", + "moveUp": "Mozgatás fel", + "moveDown": "Mozgás le", + "removeSeries": "Sorozat eltávolítása", + "seriesIndexLabel": "Sorozatbeli pozíció", + "invalidSeriesIndex": "Csak számjegyeket adjon meg, legfeljebb egy tizedesjellel (pl. 5.10).", + "totalLabel": "Könyvek a sorozatban", + "totalPlaceholder": "/", + "totalHint": "A sorozatban található könyvek száma. Megosztva mindenkivel, akinek megvan ez a sorozat." } + }, + "table": { + "actions": { + "quickView": "Gyorsnézet", + "bookDetails": "Könyv részletei", + "editMetadata": "Metaadatok szerkesztése", + "refreshMetadata": "Metaadatok frissítése", + "addToCollection": "Hozzáadás gyűjteményhez", + "sendToDevice": "Küldés eszközre" + }, + "boolean": { + "ariaNotSet": "Nincs engedélyezve – kattints az engedélyezéshez", + "ariaTrue": "Engedélyezve – kattints a letiltáshoz", + "ariaFalse": "Letiltva – kattints a törléshez" + }, + "chips": { + "addPlaceholder": "Hozzáad..." + }, + "quickFilter": { + "presentFiles": "Szűrés a meglévő fájlokra", + "missingFiles": "Szűrés a hiányzó fájlokra", + "withCovers": "Szűrés a borítóval rendelkező könyvekre", + "missingCovers": "Szűrés a hiányzó borítóval rendelkező könyvekre", + "missingAudioCovers": "Szűrés a hiányzó hangoskönyv-borítóval rendelkező könyvekre", + "withValues": "Szűrés a kitöltött sorokra", + "emptyRows": "Szűrés az üres sorokra" + }, + "cover": { + "previewDescription": "Könyvborító előnézete", + "editDescription": "Könyvborító szerkesztése", + "editTitle": "Borító szerkesztése", + "editCover": "Borító szerkesztése", + "view": "Borító megtekintése" + }, + "date": { + "justNow": "épp most" + }, + "format": { + "unknown": "ismeretlen" + }, + "header": { + "sortAscending": "Növekvő sorrend", + "sortDescending": "Csökkenő sorrend", + "clearSort": "Rendezés törlése", + "hideColumn": "Oszlop elrejtése", + "pinLeft": "Rögzítés balra", + "pinRight": "Rögzítés jobbra", + "unpinColumn": "Oszlop rögzítésének feloldása", + "autoFitWidth": "Szélesség automatikus igazítása", + "autoFitAllColumns": "Minden oszlop automatikus igazítása", + "selectAllBooks": "Minden könyv kijelölése", + "shiftClickSecondarySort": "Shift+kattintás másodlagos rendezés hozzáadásához", + "clickToSort": "Kattints a rendezéshez" + }, + "locks": { + "lockAll": "Összes mező zárolása", + "unlockAll": "Összes mező feloldása", + "lockField": "Mező zárolása", + "unlockField": "Mező feloldása", + "clickToLock": "Kattints a zároláshoz", + "clickToUnlock": "Kattints a feloldáshoz" + }, + "progress": { + "complete": "{percent} kész" + }, + "rating": { + "label": "Értékelés", + "remove": "Értékelés törlése", + "rate": "{star} csillagos értékelés az 5-ből" + }, + "read": { + "play": "Lejátszás", + "read": "Olvasás", + "readFormat": "Olvasás {format}", + "playFormat": "Lejátszás {format}", + "primary": "Elsődleges", + "peekFormat": "{format} betekintés", + "chooseFormat": "Formátum kiválasztása az olvasáshoz vagy lejátszáshoz", + "fileFallback": "FÁJL" + }, + "readStatus": { + "unread": "Nem olvasott" + }, + "series": { + "seriesRow": "Sorozatsor", + "bookCount": "{count, plural,=0 {(nincs könyv)} one {(# könyv)} other {(# könyv)}}", + "readOfCount": "{read} / {total} elolvasva" + }, + "text": { + "openDetails": "Részletek megnyitása" + } + }, + "move": { + "title": "{count, plural,one {# könyv áthelyezése} other {# könyv áthelyezése}}", + "subtitle": "A fájlok a lemezen átkerülnek a célkönyvtárba. Ez megváltoztathatja, hogy ki láthatja ezeket a könyveket.", + "searchPlaceholder": "Keresés a könyvtárakban", + "currentLibrary": "Jelenlegi", + "folderCount": "{count, plural,one {# mappa} other {# mappa}}", + "continue": "Folytatás", + "back": "Vissza", + "confirm": "{count, plural,one {# könyv áthelyezése} other {# könyv áthelyezése}}", + "action": "Áthelyezés könyvtárba", + "review": { + "ready": "{count} kész", + "collisions": "{count, plural,one {# névütközés} other {# névütközés}}", + "ineligible": "{count} nem helyezhető át", + "alreadyThere": "{count} már ott van", + "collisionsHeading": "Névütközések", + "ineligibleHeading": "Nem helyezhető át", + "moreCollisions": "és még {count}" + }, + "policy": { + "suggested": "Javasolt használata", + "keep_both": "Mindkettő megtartása", + "merge": "Egyesítés", + "skip": "Kihagy" + }, + "collision": { + "folder_path": "Egy könyv már használja ezt a mappanevet", + "file_path": "Egy fájl már használja ezt az elérési utat", + "hash_duplicate": "Egy megegyező példány már létezik ebben a könyvtárban" + }, + "ineligible": { + "book_not_present": "A könyvhöz tartozó fájlok hiányoznak", + "no_content_file": "A könyvnek nincs olvasható fájlja", + "multi_file_target_per_file": "A célhely könyvenként egy fájlt tárol, ennek a könyvnek viszont {detail} fájlja van", + "no_source_access": "A könyvtár, amelyben ez a könyv található, nem szerkeszthető", + "pattern_unresolved": "A célkönyvtár nem rendelkezik használható elnevezési mintával", + "path_too_long": "A célútvonal túl hosszú lenne", + "path_outside_target_root": "A célútvonal a könyvtár mappáján kívülre esne" + }, + "warning": { + "accessLoss": "{user} elveszíti a hozzáférést {count} könyvhöz", + "koboImpact": "{count} könyv el lesz távolítva {user} Kobo készülékéről a következő szinkronizáláskor", + "layout": { + "wrap_into_folder": "{count} könyv mindegyike saját mappába kerül", + "dissolve_folder": "{count} könyvmappa fel lesz számolva, és a bennük lévő könyvek önálló fájlokká alakulnak" + }, + "crossDevice": "A fájlok egy másik meghajtóra kerülnek, ezért a rendszer először átmásolja, ellenőrzi, majd törli őket." + }, + "progress": { + "label": "Könyvek áthelyezése ide: {library}", + "failed": "{count} sikertelen" + }, + "done": { + "summary": "{count} könyv áthelyezve ide: {library}", + "merged": "{count} elem egyesítve a már ott lévő példányokkal", + "skipped": "{count} kihagyva", + "failed": "{count} sikertelen" + }, + "toast": { + "success": "{count} könyv áthelyezve ide: {library}", + "partial": "{moved} könyv áthelyezve, {failed} sikertelen" + } + } + }, + "bookMetadataFetch": { + "book": { + "title": "Metaadatok lekérése" + }, + "author": { + "title": "Szerző bővítése" + }, + "stats": { + "queued": "Sorba állítva", + "processing": "Feldolgozás alatt", + "rateLimited": "Túl sok kérés", + "failed": "Sikertelen" + }, + "actions": { + "pause": "Szünet", + "resume": "Folytatás", + "cancelQueued": "Sorban állók megszakítása", + "dismissBookStatus": "Metaadat-lekérési állapot elvetése", + "dismissAuthorStatus": "Szerző bővítési állapot elvetése" + }, + "cancel": { + "processingWillFinish": "A jelenleg feldolgozás alatt álló elemek befejeződnek.", + "confirm": "Megszakítás megerősítése", + "keepRunning": "Futtatás tovább" + }, + "viewFailed": "{count, plural,one {Egy sikertelen megtekintés} other {# sikertelen megtekintés}}", + "card": { + "fetchingMetadata": "Metaadatok lekérése", + "enrichingAuthors": "Szerzők bővítése", + "metadataFetchFinished": "A metaadatok lekérése befejeződött", + "authorEnrichmentFinished": "A szerzőbővítés befejeződött" + }, + "label": { + "paused": "Szüneteltetve", + "remaining": "{count} van hátra", + "processing": "{count} feldolgozás alatt", + "failed": "{count} sikertelen", + "rateLimited": "{count} kérés korlátozva" + }, + "report": { + "bookTitle": "Sikertelen metaadat-lekérések", + "authorTitle": "Sikertelen szerzőbővítések", + "noFailedItems": "Nincsenek sikertelen elemek.", + "retryAllFailed": "Összes sikertelen újrapróbálása", + "bookFallback": "Könyv #{id}", + "authorFallback": "Szerző #{id}", + "columns": { + "title": "Cím", + "library": "Könyvtár", + "author": "Szerző", + "error": "Hiba", + "http": "HTTP" + } + }, + "toast": { + "failedToPause": "Nem sikerült szüneteltetni", + "failedToResume": "Nem sikerült folytatni", + "failedToCancel": "Nem sikerült megszakítani", + "failedToRetry": "Nem sikerült újrapróbálni", + "failedItemsRequeued": "Sikertelen elemek újraütemezve", + "bookComplete": "Metaadat-lekérés kész – {done} könyv frissítve", + "bookDoneWithFailures": "Metaadat-lekérés kész – {done} feldolgozva, {failed} sikertelen", + "authorComplete": "Szerzőbővítés kész – {done} szerző frissítve", + "authorDoneWithFailures": "Szerzőbővítés kész – {done} feldolgozva, {failed} sikertelen" + } + }, + "bookDock": { + "apply": "Alkalmaz", + "done": "Kész", + "discard": "Elvetés", + "deselect": "Kijelölés törlése", + "finalize": "Véglegesítés", + "rescan": "Újrakeresés", + "uploadAction": "Feltöltés", + "uploading": "Feltöltés...", + "searchPlaceholder": "Fájlok keresése...", + "setDestinationAction": "Cél beállítása", + "bulkEditAction": "Csoportos szerkesztés", + "applyFetched": "Lekérések alkalmazása", + "retryErrors": "Hibásak újra", + "discardDialog": { + "title": "{count, plural, =0 {Nem vetsz el egyetlen fájlt sem?} one {Elveted a kijelölt fájlt?} other {Elveted a # kijelölt fájlt?}}", + "description": "{count, plural, =0 {Nincs fájl kiválasztva.} one {Ez véglegesen törli a kijelölt fájlt a lemezről. Ez a művelet nem vonható vissza.} other {Ez véglegesen törli a kijelölt # fájlt a lemezről. Ez a művelet nem vonható vissza.}}", + "confirm": "{count, plural,one {Fájl törlése} other {# fájl törlése}}", + "failed": "A kijelölt fájlokat nem sikerült törölni. Próbáld újra." + }, + "commaSeparated": "vesszővel elválasztva", + "destinationLibrary": "Célkönyvtár", + "destinationFolder": "Célmappa", + "nFailed": "{count} sikertelen", + "updatedOfFiles": "{updated} / {total} fájl frissítve", + "errorStatus": "Hiba {status}", + "invalidSeriesIndex": "Csak számjegyeket adjon meg, legfeljebb egy tizedesjellel (pl. 5.10).", + "tab": { + "all": "Összes", + "pending": "Függőben", + "ready": "Kész", + "error": "Hiba" + }, + "status": { + "pending": "Függőben", + "extracting": "Kicsomagolás", + "fetching": "Lekérés", + "ready": "Kész", + "error": "Hiba" + }, + "field": { + "title": "Cím", + "subtitle": "Alcím", + "authors": "Szerzők", + "authorsCommaSeparated": "Szerzők (vesszővel elválasztva)", + "publisher": "Kiadó", + "publishedDate": "Kiadás dátuma", + "year": "Év", + "language": "Nyelv", + "isbn13": "ISBN-13", + "isbn10": "ISBN-10", + "series": "Sorozat", + "seriesIndex": "Sorozat #", + "genres": "Műfajok", + "genresCommaSeparated": "Műfajok (vesszővel elválasztva)", + "description": "Leírás" + }, + "upload": { + "nDone": "{count} kész", + "nFailed": "{count} sikertelen", + "nTotal": "{count} összesen" + }, + "fileList": { + "emptyTitle": "Nincsenek fájlok a könyvdokkban", + "emptyMessageDefault": "Fájlok feltöltése, vagy behúzása a könyvdokk mappájába", + "colCurrent": "Jelenlegi", + "colNew": "Új", + "colFile": "Fájl", + "colSize": "Méret", + "colFormat": "Formátum", + "colMatch": "Egyezés", + "colApply": "Alkalmaz", + "colStatus": "Állapot", + "applyFetchedMetadata": "Apply fetched metadata", + "coverPreview": "Borító előnézete", + "coverPreviewDescription": "Nagyított borítókép-előnézeti ablak.", + "currentCoverAlt": "{title} jelenlegi borító", + "newCoverAlt": "{title} új borító", + "unknownLibrary": "Ismeretlen könyvtár", + "unassigned": "Nincs hozzárendelve", + "targetPath": "Cél: {library} · {path}", + "targetUnassigned": "Cél: Nincs hozzárendelve", + "targetUnknownPath": "Cél: {library} · Ismeretlen célútvonal" + }, + "sheet": { + "saved": "Mentve", + "providerMetadataFound": "Szolgáltatói metaadatok találhatók", + "providerMetadataFoundEdited": "Szolgáltatói metaadatok találhatók - a csoportos alkalmazás kihagyja ezt a fájlt (módosítások találhatók)", + "review": "Áttekintés", + "added": "Hozzáadva {date}", + "searchMetadata": "Metaadatok keresése", + "results": "Eredmények" + }, + "bulkEdit": { + "title": "{count, plural, =0 {Nincs csoportos fájlszerkesztés} one {# csoportos fájlszerkesztés} other {# csoportos fájlszerkesztés}}", + "resultTitle": "Csoportos szerkesztés eredményei", + "instructions": "Kapcsold be a frissíteni kívánt mezőket. Csak az engedélyezett mezők lesznek alkalmazva.", + "mergeArrays": "Tömbök egyesítése (hozzáadás a meglévő értékekhez a felülírás helyett)", + "failed": "Csoportos szerkesztés sikertelen" + }, + "setDestination": { + "title": "{count, plural, =0 {Nincs cél beállítva fájlhoz} one {Cél beállítva # fájlhoz} other {Cél beállítva # fájlhoz}}", + "resultTitle": "Cél frissítve", + "failed": "Cél beállítása sikertelen" } }, "bookRequests": { "releases": { - "clearFilters": "Szűrők törlése" + "clearFilters": "Szűrők törlése", + "manifest": { + "untitledUnit": "Névtelen" + } + }, + "density": { + "compact": "Kompakt" + }, + "chooser": { + "untitled": "Névtelen" + } + }, + "collection": { + "editDialog": { + "deleted": "\"{name}\" törölve" + } + }, + "components": { + "appHeader": { + "annotations": "Annotációk" + }, + "viewHeader": { + "displayControls": { + "densityCompact": "Kompakt" + } + } + }, + "dashboard": { + "common": { + "untitled": "Névtelen" } }, "email": { + "deleteConfirm": "\"{name}\" törlése. Ez a művelet nem vonható vissza.", + "providers": { + "deleted": "\"{name}\" törölve" + }, "recipients": { - "deviceNone": "Egyik sem" + "deviceNone": "Egyik sem", + "deleted": "\"{name}\" törölve" + }, + "groups": { + "deleted": "\"{name}\" törölve" + }, + "templates": { + "deleted": "\"{name}\" törölve" }, "preferences": { "none": "Egyik sem" @@ -4165,6 +6647,7 @@ } }, "review": { + "untitled": "Névtelen", "tabs": { "unmatched": "Párosítatlan" }, @@ -4174,27 +6657,80 @@ "outcome": { "unmatched": "Párosítatlan" } + }, + "linkedBooks": { + "untitled": "Névtelen" + } + }, + "library": { + "upload": { + "dropzone": { + "hint": "{formats} - egyenként legfeljebb {size} MB" + } + } + }, + "migration": { + "report": { + "annotations": "Annotációk" } }, "reader": { "settings": { "pageWidthMedium": "Közepes" + }, + "selection": { + "styles": { + "underline": "Aláhúzott" + } + }, + "cbz": { + "nextIssue": { + "numbered": "#{index} {title}", + "untitled": "Névtelen" + } + }, + "audiobook": { + "untitled": "Névtelen" } }, "series": { "filters": { "clearAll": "Összes törlése" + }, + "detail": { + "untitled": "Névtelen", + "synopsis": "Fülszöveg" + }, + "track": { + "untitled": "Névtelen" + } + }, + "smartScope": { + "editorPanel": { + "untitled": "Névtelen okos gyűjtemény" } }, "tools": { + "bulkRename": { + "openBookDetails": "Könyv részleteinek megnyitása" + }, "bookDuplicates": { "none": "Egyik sem" }, "entityManager": { "browse": { + "density": { + "compact": "Kompakt" + }, "range": "Mutatva {from}-{to} ennyiből: {total}", "clearFilters": "Szűrők törlése" + }, + "deleteModal": { + "confirm": "Biztosan törölni szeretnéd a következőt: {name}?" } + }, + "missingResources": { + "untitled": "Névtelen" } }, "views": { @@ -4205,6 +6741,17 @@ "empty": { "clearFilters": "Szűrők törlése" } + }, + "smartScope": { + "toast": { + "deleted": "\"{name}\" törölve", + "deleteFailed": "\"{name}\" törlése sikertelen" + } + } + }, + "podcast": { + "fullPlayer": { + "startingPlayback": "Lejátszás indítása" } } } diff --git a/client/src/locales/it.json b/client/src/locales/it.json index a96d2727b..afd98ab8a 100644 --- a/client/src/locales/it.json +++ b/client/src/locales/it.json @@ -16,7 +16,8 @@ "yes": "Sì", "no": "No", "show": "Mostra", - "hide": "Nascondi" + "hide": "Nascondi", + "undo": "Annulla" }, "settings": { "privacySharing": { @@ -1356,8 +1357,102 @@ "account-activity": "Attività dell'account", "magic-links": "Collegamenti magici", "oidc": "OIDC /SSO", + "tts": "Sintesi vocale", "server-fonts": "Caratteri del lettore" }, + "tts": { + "title": "Servizi", + "subtitle": "Motori vocali disponibili per i lettori. Voci sono curati per provider.", + "summary": "{providers, plural, one {# provider} other {# provider}} · {enabled} abilitato· {voices, plural, one {# voce curata} other {# voci curate}}", + "addProvider": "Aggiungi provider", + "loadFailed": "Impossibile caricare la configurazione text-to-speech", + "empty": "Nessun servizio di sintesi vocale configurato.", + "reorderHint": "Trascina per riordinare. I lettori vedono i provider in questo ordine.", + "dragHandle": "Riordina {name}", + "moveUp": "Sposta {name} in alto", + "moveDown": "Sposta {name} in basso", + "reorderFailed": "Impossibile salvare l'ordine dei provider", + "expand": "Mostra dettagli per {name}", + "collapse": "Nascondi dettagli per {name}", + "toggleEnabled": "Abilita {name}", + "enableFailed": "Impossibile aggiornare {name}", + "statusConnected": "Connesso", + "statusUnreachable": "Non raggiungibile", + "statusUnchecked": "Non verificato", + "voiceCount": "{count, plural, one {# voce} other {# voci}}", + "configuration": "Configurazione", + "fieldType": "Tipo", + "fieldTypeOpenAi": "Compatibile con OpenAI", + "fieldApiKey": "Chiave API", + "apiKeySet": "Imposta", + "apiKeyNotSet": "Non impostata", + "fieldModel": "Modello predefinito", + "fieldModelNone": "Predefinito del provider", + "fieldDiscovery": "Ricerca voci", + "discoverySupported": "Supportato", + "discoveryUnsupported": "Non supportato", + "voices": "Voci", + "voicesCurated": "{count} curate", + "voicesTapToPreview": "Tocca una voce per l'anteprima", + "voicesNone": "Nessuna voce configurata", + "manageVoices": "Gestisci voci", + "previewVoice": "Anteprima {name}", + "previewStop": "Ferma anteprima", + "previewFailed": "Impossibile riprodurre un'anteprima per {name}", + "previewNeedsEnabled": "Abilita questo provider per ascoltare l'anteprima delle sue voci", + "editConfiguration": "Modifica configurazione", + "testConnection": "Prova connessione", + "testPassed": "Connesso · {count, plural, one {# voce trovata} other {# voci trovate}}", + "testFailed": "Connessione non riuscita", + "delete": "Elimina", + "deleteConfirm": "Eliminare il provider \"{name}\"? I lettori che utilizzano le loro voci ricadono su un altro provider.", + "deleteFailed": "Impossibile eliminare {name}", + "deleted": "Provider eliminato", + "saveFailed": "Impossibile salvare {name}", + "saved": "Provider salvato", + "formAddTitle": "Nuovo provider", + "formEditTitle": "Modifica provider", + "formName": "Nome", + "formNamePlaceholder": "Kokoro", + "formBaseUrl": "URL di base", + "formBaseUrlPlaceholder": "http://localhost:8880/v1", + "formApiKey": "Chiave API", + "formApiKeyOptional": "Facoltativo", + "formApiKeyPlaceholder": "sk-...", + "formApiKeyKeep": "Lascia vuoto per mantenere la password attuale", + "formModel": "Modello predefinito", + "formModelPlaceholder": "tts-1", + "formDiscovery": "Questo provider può elencare le proprie voci", + "formRequired": "Nome e un URL di base sono obbligatori", + "curation": { + "title": "Gestisci Voci - {provider}", + "summary": "{count, plural, one {# voce configurata} other {# voci configurate}}", + "summaryUnsaved": "{count, plural, one {# voce configurata} other {# voci configurate}} - Modifiche non salvate", + "importFromProvider": "Importa dal provider", + "loadPreset": "Carica la preimpostazione {preset}", + "importUnsupported": "Questo provider non supporta il rilevamento delle voci.", + "importUnsupportedWithPreset": "Questo fornitore non supporta il rilevamento delle voci. Usa invece il pulsante «Carica la preimpostazione {preset}».", + "discoveryUnsupported": "Questo provider non espone un endpoint della lista vocale.", + "discoverFailed": "Impossibile rilevare le voci", + "emptyImportOrPreset": "Nessuna voce configurata. Importa dal provider o carica un preset.", + "emptyImport": "Nessuna voce configurata. Importa dal provider.", + "emptyPreset": "Nessuna voce configurata. Carica una preimpostazione per iniziare.", + "emptyManual": "Nessuna voce configurata. Aggiungi voci manualmente.", + "columnId": "ID", + "columnName": "Nome", + "columnLocale": "Localizzazione", + "columnGender": "Genere", + "genderMale": "Maschile", + "genderFemale": "Femminile", + "genderUnknown": "Sconosciuto", + "cancelEdit": "Annulla modifica", + "editVoice": "Modifica {name}", + "deleteVoice": "Elimina {name}", + "previewVoice": "Anteprima {name}", + "stopPreview": "Interrompi l'anteprima per {name}", + "saveVoices": "{count, plural, one {# voce} other {# voci}}" + } + }, "serverFonts": { "title": "Caratteri del lettore", "subtitle": "Carica i caratteri che ogni utente può scegliere nel lettore eBook, senza caricarne i propri.", @@ -1377,11 +1472,13 @@ "opds": "OPDS", "kobo": "Kobo", "koreader": "KOReader", + "tts": "Sintesi vocale", "integrations": "Integrazioni", "hardcover": "Hardcover", "admin": "Ammin", "system": "Sistema", - "account": "Conto" + "account": "Conto", + "podcasts": "Podcast" } }, "integrations": { @@ -1536,7 +1633,7 @@ "filter": { "label": "Filtra sorgenti per stato", "all": "Tutte", - "enabled": "Abilitato", + "enabled": "Abilitate", "needsSetup": "Da configurare" }, "groups": { @@ -1852,7 +1949,7 @@ "custom-fields": "Metadati personalizzati", "genre-blocklist": "Blocklist di genere", "score": "Punteggio di fiducia", - "auto-fetch": "Prenota Recupero automatico", + "auto-fetch": "Auto-Recupero Libri", "authors": "Recupero automatico dell'autore" }, "tabSubtitles": { @@ -1909,7 +2006,7 @@ "scrolled": "Scorrito", "fixedLayoutSpread": "Pagine a layout fisso", "fixedLayoutSpreadHint": "Predefinito per manga, fumetti ed EPUB basati su immagini", - "bookDefault": "Prenota predefinito", + "bookDefault": "Dettagli del libro", "singlePage": "Pagina singola", "columns": "Colonne", "columnsHint": "Numero di colonne di testo per pagina", @@ -2279,22 +2376,38 @@ "caseNoAuthorLabel": "Nessun autore", "previewEmpty": "Questo modello non risolve a niente, quindi sarebbe usato il nome del file originale.", "previewEmptyShort": "Si risolve a niente", + "crossPlatformShortHint": "Sostituisce i caratteri che Windows rifiuta. Le anteprime riflettono questa impostazione.", + "rulesSaved": "{count, plural, one {# regola di nome salvata} other {# regole di nome salvate}}", + "rulesSaveFailed": "{count, plural, one {Impossibile salvare # regola di nome} other {Impossibile salvare # regole di nome}}", + "rulesPartiallySaved": "Salvato {saved}, fallito {failed}. Le regole che non sono riuscite hanno ancora modifiche non salvate.", "save": { + "unsaved": "{count, plural, one {# modifica non salvata} other {# modifiche non salvate}}", "upToDate": "Nessuna modifica non registrata", "discard": "Abbandona", "action": "Salva modifiche", "blocked": "Correggi il modello non valido prima di salvare" }, + "examplesDescription": "Casi particolari non coperti dalle configurazioni predefinite. Un modello che termina con una barra identifica una cartella e mantiene al suo interno il nome del file caricato.", "examplesApply": "Applica", "examplesApplyAria": "Applica il modello {label}", + "examplesUploadOnly": "Questi sono modelli di caricamento, mostrati qui per riferimento. Passa a un file come libro o cartella come regola Libro per applicarne uno.", + "examplesFileModeOnly": "La cartella come libro ha bisogno di un segmento di nome di file proprio, quindi questo idioma si applica solo a File come librerie di Libri.", "example": { + "seriesOrStandalone": "Serie, o una cartella indipendente", "optionalSubtitle": "Sottotitolo facoltativo", "languageFolder": "Cartella lingua", - "publisherFolder": "Cartella dell'editore" + "publisherFolder": "Cartella dell'editore", + "stackedOptional": "Cartelle opzionali sovrapposte", + "folderDrop": "Solo cartella, mantiene il nome del file caricato" }, "exampleCase": { - "noSeries": "Nessuna serie" - } + "complete": "Completo", + "noSeries": "Nessuna serie", + "noSubtitle": "Senza sottotitoli", + "noLanguage": "Senza lingua", + "noPublisher": "Senza editore" + }, + "unknownModifier": "Modificatore sconosciuto \"{modifier}\". Sarà ignorato, lasciando invariato il valore." }, "kobo": { "title": "Kobo Sincronizza", @@ -2335,6 +2448,8 @@ "twoWaySyncHint": "Sincronizza la posizione di lettura tra BookOrbit e Kobo. Richiede la consegna di KEPUB per posizioni precise e ripristino affidabile della pagina.", "syncHighlights": "Sincronizza i momenti salienti di BookOrbit su Kobo", "syncHighlightsHint": "Invia i momenti salienti realizzati in BookOrbit o KOReader al tuo Kobo. I momenti salienti di Kobo vengono importati in BookOrbit anche quando è disattivato. Le annotazioni collegate sincronizzano le modifiche e le eliminazioni in entrambi i modi. Richiede la consegna KEPUB; il libro su Kobo deve essere il KEPUB scaricato da BookOrbit.", + "storeSync": "Includi i titoli del negozio Kobo", + "storeSyncHint": "Consegna anche libri dal tuo account Kobo, incluso Kobo Plus e acquisti, accanto alla tua libreria BookOrbit. Senza questo, solo i libri BookOrbit raggiungono il dispositivo. I titoli del negozio vengono scaricati direttamente da Kobo e non vengono aggiunti alla tua libreria BookOrbit.", "convertKepub": "Converti in KEPUB", "convertKepubHint": "Invia EPUB idonei come KEPUB. Rimane attivo quando la sincronizzazione dei progressi o le evidenziazioni BookOrbit-to-Kobo sono abilitate. Alla successiva sincronizzazione Kobo, i libri interessati verranno nuovamente offerti come download KEPUB; rimuovi qualsiasi vecchia copia EPUB se Kobo continua ad aprirla.", "forceHyphenation": "Forza la sillabazione", @@ -2507,6 +2622,8 @@ "daysAgo": "{count}d fa", "unknown": "Sconosciuto", "updateAvailable": "Aggiornamento disponibile", + "manualUpdateRequired": "Richiesto un aggiornamento manuale", + "manualUpdateExplanation": "Questa versione del plugin non può installare i propri aggiornamenti. Scaricare il plugin e copiare bookorbit.koplugin su koreader/plugins/ su questo dispositivo.", "upToDate": "Aggiornato", "versionUnknown": "Versione sconosciuta", "latestPlugin": "Plugin più recente: v{version}", @@ -2521,12 +2638,21 @@ "password": "Password", "passwordPlaceholder": "Minimo 6 caratteri", "changeCredentials": { + "action": "Cambia le credenziali", + "title": "Elimina le credenziali KOReader", + "description": "Ogni account BookOrbit ha un set di credenziali KOReader. Modificalo qui senza eliminare i dati sincronizzati.", "newPassword": "Nuova password", + "usernameInvalid": "Il nome utente deve essere compreso tra 3 e 100 caratteri.", "passwordPlaceholder": "Lascia vuoto per mantenere la password attuale", "passwordHint": "Lascialo vuoto per conservare la password attuale.", "passwordInvalid": "La Password deve essere compresa tra 6 e 128 caratteri.", + "deviceNotice": "I dispositivi che utilizzano il precedente login devono essere riconnessi o aggiornati con un nuovo pacchetto di plugin scaricato.", "showPassword": "Mostra nuova password", - "hidePassword": "Nascondi nuova password" + "hidePassword": "Nascondi nuova password", + "save": "Memorizza le credenziali", + "saving": "Salvataggio...", + "updated": "Credenziali di KOReader aggiornate", + "updateFailed": "Impossibile aggiornare le credenziali di KOReader" }, "creating": "Creazione...", "create": "Crea", @@ -2544,6 +2670,8 @@ "credentialsCreatedLabel": "Credenziali create", "setup": "Installazione", "pluginServerUrl": "Server plugin URL", + "syncUrl": "URL di sincronizzazione di KOReader", + "syncUrlHint": "Funziona con il plugin BookOrbit e la sincronizzazione dei progressi di KOReader.", "copied": "Copiato", "copyUrl": "Copia URL", "preconfiguredPlugin": "Plug-in BookOrbit preconfigurato", @@ -2583,6 +2711,7 @@ "stockStep1Prefix": "Sul tuo dispositivo KOReader, vai a", "stockStep1Suffix": ".", "stockStep2": "Imposta il server di sincronizzazione personalizzato su URL mostrato sopra.", + "stockStep2InlineUrl": "Impostare il server di sincronizzazione personalizzato al seguente URL:", "stockStep3": "Inserisci il nome utente e la password che hai creato, quindi tocca Accedi.", "locationNote": "BookOrbit salva posizioni KOReader compatibili con EPUB dal lettore web. Il ripristino dovrebbe arrivare vicino alla stessa posizione, anche se il posizionamento esatto della linea può variare in base al lettore e al layout EPUB.", "dangerZone": "Zona pericolosa", @@ -2701,6 +2830,15 @@ "removeDeviceFailed": "Impossibile rimuovere il dispositivo", "removeDeviceConfirmTitle": "Rimuovere {device}?", "removeDeviceConfirmBody": "Questa operazione eliminerà permanentemente i progressi sincronizzati di questo dispositivo, l'attività di lettura e tutte le voci di libri senza corrispondenza non più segnalate da un altro dispositivo. Se il dispositivo si sincronizza nuovamente in un secondo momento, riapparirà come una nuova voce.", + "deleteDeviceDataConfirmTitle": "Eliminare i dati sincronizzati da {device}?", + "deleteDeviceDataConfirmBody": "Questa operazione eliminerà permanentemente i progressi sincronizzati di questo dispositivo, l'attività di lettura e tutte le voci di libri senza corrispondenza non più segnalate da un altro dispositivo. Se il dispositivo si sincronizza nuovamente in un secondo momento, riapparirà come una nuova voce.", + "devicesHint": "Ritirando un dispositivo lo nasconde e mantiene tutto ciò che ha sincronizzato. L'eliminazione dei suoi dati sincronizzati non può essere annullata.", + "retire": "Ritirati", + "retiring": "Ritirando...", + "restore": "Ripristina", + "restoring": "Ripristino in corso...", + "deleteSyncedData": "Cancella i dati", + "deletingSyncedData": "Eliminazione...", "deviceRetired": "Dispositivo rimosso", "deviceRestored": "Dispositivo ripristinato", "retireDeviceFailed": "Impossibile rimuovere il dispositivo", @@ -2714,9 +2852,9 @@ "copy": "Copia", "loadFailed": "Impossibile caricare", "server": "Server", - "catalogServer": "OPDS Server catalogo", - "catalogServerHint": "Consenti ai clienti OPDS di sfogliare e scaricare libri", - "endpoint": "Punto finale", + "catalogServer": "Server catalogo OPDS", + "catalogServerHint": "Consenti ai client OPDS di sfogliare e scaricare libri", + "endpoint": "Indirizzo del servizio", "accounts": "OPDS Account", "add": "Aggiungi", "addAccount": "Aggiungi conto", @@ -2729,7 +2867,7 @@ "sortLabel": "Ordina", "creating": "Creazione...", "create": "Crea", - "noAccounts": "Nessun account OPDS ancora. Creane uno per iniziare a utilizzare i client OPDS.", + "noAccounts": "Ancora nessun account OPDS. Creane uno per iniziare a usare client OPDS.", "hideDetails": "Nascondi dettagli", "showDetails": "Mostra dettagli", "copyUsername": "Copia nome utente", @@ -2744,8 +2882,8 @@ "sortAuthorDesc": "Autore (Z-A)", "sortSeriesAsc": "Serie (A-Z)", "sortSeriesDesc": "Serie (ZA)", - "serverEnabled": "OPDS server abilitato", - "serverDisabled": "OPDS server disabilitato", + "serverEnabled": "Server OPDS abilitato", + "serverDisabled": "Server OPDS disabilitato", "updateSettingsFailed": "Impossibile aggiornare le impostazioni OPDS", "urlCopied": "OPDS URL copiato negli appunti", "urlCopyFailed": "Impossibile copiare OPDS URL", @@ -2777,6 +2915,7 @@ }, "requests": { "title": "Richieste", + "subtitle": "Dove vengono cercate le nuove versioni, come vengono recuperate e cosa succede dopo il download.", "tabs": { "sources": "Sorgenti", "clients": "Client per il download", @@ -2792,6 +2931,7 @@ "body": "Un download HTTP diretto non ha bisogno di alcun client. Collegane uno in modo che BookOrbit possa recuperare rilasci consegnati anche da torrent o Usenet.", "note": "sono supportati qBittorrent, Trasmissione, Deluge e NZBGet." }, + "summary": "{type} - categoria {category}, priorità {priority}", "disabled": "Disabilitato", "test": "Test di connessione", "testSaveFirst": "Salva le tue modifiche prima di testare", @@ -2801,15 +2941,411 @@ "lastTestFailed": "Ultimo test {time}: {error}", "saved": "Client per il download salvato", "deleted": "Client per il download rimosso", + "clientTypes": { + "qbittorrent": "qBittorrent", + "transmission": "Trasmissione", + "deluge": "Deluge", + "nzbget": "NZBGet", + "sabnzbd": "SABnzbd" + }, + "color": { + "label": "Colore", + "hint": "Segna questo client nei dettagli di trasferimento. Il protocollo di trasferimento mantiene il suo colore.", + "none": "Nessun colore" + }, "fields": { + "name": "Nome", + "type": "Tipo di client", + "baseUrl": "URL di base", + "username": "Nome utente", + "password": "Password", + "apiKey": "Chiave API", + "passwordKeep": "Lascia vuoto per mantenere la password attuale", + "apiKeyKeep": "Lascia vuoto per mantenere la chiave API attuale", "passwordClear": "Cancella", "passwordKeepAction": "Mantieni", "passwordWillClear": "La password memorizzata viene rimossa quando si salva", - "category": "Categoria" + "apiKeyWillClear": "La chiave API memorizzata viene rimossa quando si salva", + "category": "Categoria", + "categoryHint": "Contrassegna i download aggiunti da BookOrbit, così che intervenga solo sui propri.", + "priority": "Priorità", + "enabled": "Abilitato", + "useHardlinks": "Usa hard link", + "allowPrivateAddress": "Consenti indirizzi privati", + "allowPrivateAddressHint": "Necessario quando il client viene eseguito sulla rete locale o sulla stessa macchina.", + "passwordBrief": "Memorizzazione cifrata.", + "apiKeyBrief": "Trovato in SABnzbd in Config > Generale. Archiviato crittografato.", + "useHardlinksBrief": "Importa senza occupare due volte lo spazio su disco. Se i file system sono diversi, viene eseguita una copia." + }, + "mappings": { + "title": "Mappature dei percorsi", + "hint": "Converte i percorsi segnalati dal client in percorsi accessibili da BookOrbit. Necessario quando i due servizi vengono eseguiti in container separati.", + "add": "Aggiungi mappatura", + "remove": "Rimuovi mappatura", + "remotePath": "Percorso client", + "localPath": "Percorso di BookOrbit", + "brief": "Obbligatorio. Indica la cartella da cui BookOrbit può importare i file; se il client vede gli stessi file negli stessi percorsi, associa la cartella dei download a sé stessa.", + "identityExample": "Stesso filesystem? Usare lo stesso percorso da entrambi i lati, ad esempio /downloads a sinistra e /downloads a destra." }, "hardlink": { + "test": "Verifica hard link", + "checking": "Controllo...", + "works": "Gli hard link funzionano quindi le importazioni non useranno il disco due volte.", "unavailable": "I collegamenti non sono disponibili qui: le importazioni copieranno, raddoppiando lo spazio.", - "link_refused": "Questo filesystem ha rifiutato il link ({code}): le importazioni copieranno raddoppiando lo spazio." + "link_refused": "Questo filesystem ha rifiutato il link ({code}): le importazioni copieranno raddoppiando lo spazio.", + "download_dir_unwritable": "BookOrbit non può scrivere nella directory di download ({code}), quindi l'hard link non può essere testato.", + "localMissing": "BookOrbit non può vedere quel percorso.", + "dockMissing": "La cartella Book Dock non è leggibile." + }, + "reconciliation": { + "action": "Riconcilia", + "clean": "Ogni elemento gestito nel client corrisponde a un tentativo di download conservato in BookOrbit.", + "unsupported": "Questo client non può elencare gli elementi in base al contrassegno di proprietà di BookOrbit. Per Deluge, abilita il plugin Label; per Transmission, configura una cartella di categoria.", + "truncated": "Il client ha restituito più di 1.000 oggetti di proprietà. Risolvi le voci visibili, quindi riconciliate nuovamente.", + "orphan": "Questo elemento del client non è associato ad alcun tentativo di BookOrbit conservato.", + "failedAttempt": "Il client mantiene ancora questo elemento, ma il suo tentativo per \"{title}\" è segnato come non riuscito.", + "missing": "Questo tentativo {status} non è più presente nel client di download.", + "adopt": "Allega a {title}", + "adopted": "Allegato l'elemento client a {title}", + "remove": "Rimuovi dal Client", + "removed": "Rimosso l'elemento client orfano", + "removeTitle": "Rimuovere questo elemento client orfano?", + "removeDescription": "{name} è stato rimosso dal client di download. I suoi file scaricati vengono mantenuti.", + "notOrphan": "Quell'elemento client è ancora collegato a un tentativo di download di BookOrbit.", + "notAdoptable": "L'elemento client o il tentativo fallito sono cambiati e non possono più essere allegati. Riconcilia di nuovo." + }, + "errors": { + "loadFailed": "Impossibile caricare i client di download", + "saveFailed": "Impossibile salvare il client di download", + "deleteFailed": "Impossibile rimuovere il client di download", + "testFailed": "Impossibile raggiungere il client di download", + "nameAndUrlRequired": "È necessario un nome e un URL di base", + "nameTaken": "Esiste già un client di download con questo nome", + "urlUnsafe": "Questo URL di base non può essere raggiunto. Controlla l'indirizzo e utilizza http o https.", + "urlPrivate": "Questo indirizzo è su una rete privata o locale. Attiva \"Consenti indirizzi privati\" se il client viene eseguito lì.", + "encryptionKeyMissing": "Imposta BOOK_REQUEST_ENCRYPTION_KEY prima di salvare una password. Genera una con: openssl rand -hex 32", + "encryptionKeyChanged": "La password memorizzata non può essere letta. BOOK_REQUEST_ENCRYPTION_KEY potrebbe essere cambiata da quando è stata salvata.", + "pathNotAbsolute": "Le mappature dei percorsi devono usare percorsi assoluti su entrambi i lati", + "nameRequired": "Dai un nome a questo client.", + "urlRequired": "Inserisci l’indirizzo tramite il quale BookOrbit può raggiungere questo client.", + "mappingRequired": "Aggiunge almeno una mappatura del percorso, in modo che BookOrbit sappia da quale directory può importare.", + "apiKeyRequired": "Inserisci la chiave API SABnzbd da Config > Generale." + }, + "encryptionKeyMissing": "BOOK_REQUEST_ENCRYPTION_KEY non è impostata, quindi una password client non può essere salvata. Genera una con: openssl rand -hex 32", + "confirmDelete": { + "title": "Rimuovere questo client di download?", + "description": "L'indirizzo di {name} e la password memorizzata vengono eliminate, e le richieste di download non vengono aggiornate. Disattivalo invece per mantenere i dettagli.", + "confirm": "Rimuovi cliente" + }, + "indexers": { + "title": "Indicizzatori integrati", + "hint": "Collega un feed Torznab per i torrent o un feed Newznab per le versioni di Usenet.", + "allDisabled": "Tutte le fonti elencate di seguito sono disattivate, quindi la ricerca delle richieste non troverà alcun risultato. Riattivane almeno una.", + "loading": "Caricamento indicizzatori...", + "empty": { + "title": "Ancora nessuna fonte", + "body": "BookOrbit non include fonti predefinite, quindi la ricerca delle richieste non troverà alcun risultato finché non ne aggiungi una. Puoi farlo in due modi.", + "bodyOneWay": "BookOrbit non include fonti predefinite, quindi la ricerca delle richieste non troverà alcun risultato finché non ne aggiungi una.", + "responsibility": "Sei responsabile dei contenuti indicizzati dalle fonti che aggiungi.", + "prowlarrTitle": "Collega Prowlarr", + "prowlarrBody": "Gestisci diversi indicizzatori torrent e Usenet attraverso una connessione.", + "recommended": "Consigliato", + "pluginTitle": "Installa un plugin", + "pluginBody": "Un file che consente a BookOrbit di effettuare ricerche su un sito specifico. Aggiungilo, quindi configurane le impostazioni.", + "torznabTitle": "Aggiungi un indicizzatore Torznab", + "torznabBody": "Indica un feed di Prowlarr, Jackett o NZBHydra che hai già configurato. Aggiungi una fonte per ogni feed.", + "builtInTitle": "Aggiungi un indicizzatore", + "builtInBody": "Indica un feed Torznab o Newznab che utilizzi già. Crea una configurazione per ogni feed." + }, + "add": "Aggiungi un indicizzatore", + "edit": "Modifica indicizzatore", + "delete": "Elimina {name}", + "none": "Ancora nessun indicizzatore.", + "disabled": "Disabilitato", + "test": "Test di connessione", + "testSaveFirst": "Salva le tue modifiche prima di testare", + "testOk": "Connesso a {name}", + "toggleAria": "Cerca con {name}", + "enabledNotice": "verrà cercato {name}", + "disabledNotice": "{name} non sarà cercato", + "lastTestOk": "Ultimo test {time}: connesso", + "lastTestFailed": "Ultimo test {time}: {error}", + "saved": "Indicizzatore salvato", + "deleted": "Sorgente eliminata", + "unavailable": "Questa installazione non ha il tipo di indicizzatore \"{type}\". Modificare il tipo o eliminare il suo plugin e la configurazione salvata.", + "pluginFailed": "Il plugin in \"{directory}\" non è stato caricato: {reason}", + "sources": { + "title": "Fonti", + "hint": "Tutto ciò che BookOrbit può cercare, raggruppato per connessione.", + "add": "Aggiungi fonte", + "prowlarr": "Collega Prowlarr", + "prowlarrHint": "Gestisci diversi indicizzatori torrent e Usenet insieme.", + "direct": "Aggiungi Torznab o Newznab", + "directHint": "Collega direttamente un feed compatibile.", + "plugin": "Installa un plugin", + "pluginHint": "Aggiunge un'implementazione fonte specializzata.", + "activeSummary": "{count, plural, one {# fonte attiva} other {# fonti attive}}: {torrent} torrent, {usenet} Usenet, {direct} direct" + }, + "network": { + "title": "Rete avanzata", + "hint": "Necessario solo quando il percorso predefinito di questa sorgente non funziona. Ciò che è permesso non cambia: qualunque indirizzo venga raggiunto è ancora controllato allo stesso modo.", + "resolvers": "Server DNS", + "proxyUrl": "URL del proxy", + "proxyHint": "Un proxy http o https per inviare le richieste di questa sorgente. SOCKS non è supportato.", + "brief": "Necessario solo quando il percorso predefinito di questa sorgente non funziona.", + "resolversBrief": "Separato da virgola. Usato invece del risolutore di sistema solo per questa sorgente; vuoto usa quella di sistema.", + "proxyBrief": "Un proxy http o https per questa sorgente. SOCKS non è supportato." + }, + "types": { + "torznab": "Torznab (Jackett, Prowlarr, NZBHydra)", + "newznab": "Newznab" + }, + "fields": { + "name": "Nome", + "type": "Tipo indicizzatore", + "baseUrl": "URL di base", + "baseUrlHint": { + "torznab": "L'URL del feed di Torznab, senza la stringa di query. Jackett lo mostra su ogni indicizzatore come \"Torznab Feed\".", + "newznab": "L'URL del sito Newznab o l'endpoint API, senza una query di ricerca." + }, + "credential": { + "apiKey": "Chiave API", + "sessionId": "ID sessione" + }, + "credentialKeep": "Lascia vuoto per mantenere la password attuale", + "credentialClear": "Cancella", + "credentialKeepAction": "Mantieni", + "credentialWillClear": "La password memorizzata viene rimossa quando si salva", + "enabled": "Abilitato", + "allowPrivateAddress": "Consenti indirizzi privati", + "credentialBrief": "Memorizzazione cifrata.", + "allowPrivateAddressBrief": "Disattivata per impostazione predefinita. Necessaria solo quando il sorgente è sulla rete locale.", + "searchByIsbn": "Ricerca per ISBN", + "searchByIsbnBrief": "Attivo per impostazione predefinita. Disattivalo se questa fonte restituisce il libro sbagliato anche con un ISBN esatto: la ricerca verrà effettuata per titolo e autore." + }, + "color": { + "label": "Colore", + "hint": "Contrassegna ogni pubblicazione restituita da questa fonte, così puoi riconoscere la provenienza di un risultato prima di leggerne il nome. I protocolli di trasferimento mantengono i propri colori, che per questo non sono disponibili qui.", + "none": "Nessun colore", + "options": { + "blue": "Blu", + "indigo": "Indaco", + "purple": "Viola", + "pink": "Rosa", + "red": "Rosso", + "orange": "Arancione", + "yellow": "Giallo", + "lime": "Lime", + "green": "Verde", + "teal": "Verde acqua" + } + }, + "mediaKinds": { + "label": "Cerca questa sorgente per", + "hint": "Disattiva i formati che non vale la pena cercare su questa fonte. Un tracker di soli audiolibri accessibile tramite un proxy generico dichiara comunque di offrire tutti i formati, e cercarvi ebook consuma una richiesta a ogni ricerca.", + "notCarried": "Questa sorgente non la porta." + }, + "categories": { + "title": "Categorie", + "brief": "I numeri di categoria dell'indicizzatore, separati da virgole." + }, + "settings": { + "restoreDefault": "Ripristina impostazioni predefinite" + }, + "seeding": { + "applyTracker": "Applica gli obiettivi di condivisione del tracker", + "applyTrackerBrief": "Quando un valore manuale è vuoto, usare un obiettivo valido segnalato dal tracker. Quando questa opzione è disattivata, i valori vuoti usano i valori predefiniti del client di download. I valori manuali sono ancora validi.", + "ratio": "Rapporto di Condivisione", + "ratioBrief": "Un decimale positivo. Vuoto eredita dal tracker o dal client.", + "time": "Tempo dei condivisione (minuti)", + "timeBrief": "Un numero intero positivo. Cancella eredita dal tracker o dal client.", + "clientSupport": "qBittorrent accetta il rapporto di condivisione e il tempo totale di seeding. Deluge e Transmission accettano solo il rapporto. Le regole globali del client o il primo limite raggiunto possono interrompere il seeding, quindi questi valori non garantiscono il rispetto del minimo richiesto da ogni tracker.", + "futureGrabs": "Le modifiche si applicano agli scaricamenti futuri. I torrent esistenti o adottati possono mantenere limiti specifici per il client. Disattivare il tracker lascia il client di default attivo; non significa un seed illimitato.", + "reset": "Ripristina impostazioni di condivisione", + "summary": { + "title": "Riepilogo dei criteri", + "ratio": "Rapporto", + "time": "Tempo di condivisione", + "manual": "Manuale: {value}", + "tracker": "Tracker di riserva", + "client": "Client predefinito" + }, + "errors": { + "ratio": "Inserisci un numero finito maggiore di zero, o lascialo vuoto.", + "minutes": "Immettere un numero intero da 1 a 2.147.483.647, o lascialo vuoto." + } + }, + "confirmDelete": { + "title": "Eliminare questa Fonte?", + "description": "L'indirizzo, le impostazioni e le credenziali memorizzate di {name} vengono eliminate. Disattivarlo invece per smettere di cercarlo senza perderlo.", + "confirm": "Elimina fonte" + }, + "errors": { + "loadFailed": "Impossibile caricare gli indicizzatori", + "saveFailed": "Impossibile salvare quell'indicizzatore", + "deleteFailed": "Impossibile eliminare la fonte", + "testFailed": "Impossibile raggiungere quell'indicizzatore", + "nameAndUrlRequired": "È necessario un nome e un URL di base", + "nameTaken": "Esiste già un indicizzatore con questo nome", + "urlUnsafe": "Non è stato possibile raggiungere quell'URL di base. Controllare l'indirizzo e utilizzare http o https.", + "urlPrivate": "Questo indirizzo è su una rete privata o locale. Attiva \"Consenti indirizzi privati\" se il client viene eseguito lì.", + "credentialRequired": "Questo indicizzatore ha bisogno di una credenziale prima di poter essere utilizzato", + "invalidSettings": "Una o più impostazioni di origine non sono valide. Rivedere le scelte disponibili.", + "nameRequired": "Dai un nome a questo indicizzatore.", + "urlRequired": "Inserisci l’indirizzo in cui BookOrbit deve effettuare la ricerca." + }, + "editName": "Modifica {name}", + "editorDescription": "Impostazioni per questo indicizzatore.", + "chooseType": "Scegli un tipo di indicizzatore", + "chooseTypeHint": "Scegli dove BookOrbit deve effettuare la ricerca. Il modulo richiederà quindi solo le informazioni necessarie per quella fonte.", + "builtIn": "Integrato", + "plugin": "Plugin", + "typeDescriptions": { + "torznab": "La tua istanza di Jackett, Prowlarr o NZBHydra. Utilizza categorie e obiettivi di condivisione.", + "newznab": "Un indicizzatore Usenet compatibile con Newznab. Utilizza le categorie e richiede una chiave API." + }, + "plugins": { + "title": "Plugins", + "hint": "Un sito in cui BookOrbit può effettuare ricerche, aggiunto tramite un singolo file di plugin. Installane uno, quindi configurane le impostazioni.", + "directoryLink": "Sfoglia i plugin di open library", + "none": "Nessun plugin installato. Installane uno per effettuare ricerche su un sito non supportato dai protocolli integrati.", + "install": "Installa plugin", + "installed": "{label} Installato.", + "installFailed": "Questo plugin non può essere installato.", + "inspectFailed": "Questo file non può essere letto come un plugin.", + "removeAction": "Elimina plugin", + "removed": "Eliminato {type} e le sue fonti.", + "removeFailed": "Questo plugin non può essere eliminato.", + "confirmRemove": "Eliminare il plugin {label}?", + "replaces": "Questo sostituisce il plugin {type} già installato.", + "restartRequired": "Riavvia BookOrbit affinché il cambiamento del plugin abbia effetto.", + "confirmInstall": "Installa plugin", + "configure": "Imposta", + "notSetUp": "Non ancora impostato", + "brokenTitle": "Un plugin non è stato caricato", + "managedHint": "Installato su questo server. L'aggiornamento sostituisce il suo codice. L'eliminazione rimuove definitivamente il plugin e ogni sorgente di questo tipo.", + "missingHint": "Il file del plugin è già stato rimosso. Elimina questa voce per rimuovere tutte le fonti, le impostazioni e le credenziali salvate associate a questo tipo di plugin.", + "removeWarning": "{count, plural, one {# fonte, con le relative impostazioni e la credenziale salvata, verrà eliminata definitivamente insieme a questo plugin.} other {# fonti, con le relative impostazioni e credenziali salvate, verranno eliminate definitivamente insieme a questo plugin.}}", + "configureAria": "Configura {label}", + "usedBy": "{count, plural, one {usato da # sorgente} other {usato da # sorgenti}}", + "unused": "nessuna fonte la utilizza ancora", + "update": "Aggiorna il plugin", + "checkUpdates": "Cerca aggiornamenti", + "updateCheckComplete": "Controllo aggiornamento plugin completo.", + "updateCheckFailed": "Impossibile controllare gli aggiornamenti del plugin.", + "updateInspectFailed": "Impossibile verificare l'aggiornamento del plugin pubblicato.", + "reviewUpdate": "Revisione aggiornamento", + "updated": "Aggiornato {label} a {version}.", + "autoUpdate": "Installa gli aggiornamenti firmati automaticamente", + "autoUpdateFailed": "Impossibile cambiare gli aggiornamenti automatici di questo plugin.", + "installedVersion": "Versione installata", + "updateChannel": "Canale di aggiornamento firmato", + "signatureVerified": "La fonte scaricata corrisponde alla firma Ed25519 dell'editore.", + "updateStates": { + "unsupported": "Aggiornamenti manuali", + "unchecked": "Non ancora controllato", + "current": "Aggiornato", + "available": "Disponibile la versione {version}", + "custom": "Generazione personalizzata", + "failed": "Controllo aggiornamenti fallito" + }, + "wrongType": "Questo file è il plugin {found}, non {expected}.", + "replaceTitle": "Sostituire questo plugin?", + "replace": "Sostituisci plugin", + "reviewTitle": "Installa questo plugin?", + "reviewDescription": "Quello che il file dichiara di se stesso e il codice che verrà eseguito.", + "declares": "Quello che dichiara", + "source": "Cosa verrà eseguito", + "type": "Tipo", + "version": "Versione", + "versionLabel": "Versione del plugin {version}", + "versionUnknown": "Versione del plugin sconosciuta", + "versionUnknownValue": "Sconosciuto", + "media": "Multimedia", + "credential": "Credenziale", + "credentialRequired": "Obbligatorio", + "credentialNone": "Nessuno", + "trustWarning": "Un plugin viene eseguito all'interno di BookOrbit con accesso al database, file di libreria e chiave di crittografia. Installane uno solo da una fonte affidabile e leggi prima di tutto.", + "sectionTitle": "Plugin", + "removeUnusedWarning": "Il plugin verrà eliminato definitivamente dal server." + }, + "posture": "BookOrbit non fornisce né promuove fonti di indicizzazione. Tutte le fonti qui presenti sono state configurate da te e sei responsabile di ciò che cerchi e scarichi tramite esse." + }, + "managers": { + "add": "Aggiungi Prowlarr", + "loading": "Caricamento connessioni Prowlarr...", + "managedSources": "{count, plural, one {# indicizzatore gestito} other {# indicizzatori gestiti}}", + "protocol": { + "torrent": "Torrent", + "usenet": "Usenet" + }, + "saved": "Impostazioni Prowlarr salvate", + "deleted": "Prowlarr rimosso", + "synced": "Fonti Prowlarr sincronizzate", + "test": "Prova connessione", + "sync": "Sincronizza", + "testOk": "Connessione a Prowlarr {version} riuscita. {count, plural, one {Trovata # fonte} other {Trovate # fonti}}.", + "unavailable": "Non disponibile", + "priority": "Priorità Prowlarr: {priority}", + "toggleSource": "Cerca con {name}", + "changeColor": "Cambia colore per {name}", + "sourceColor": "Colore sorgente", + "sourceColorHint": "Contrassegna in BookOrbit le release restituite da {name}.", + "noSources": "Nessun torrent compatibile o indicizzatori Usenet sono stati trovati. Sincronizza dopo averne aggiunto uno in Prowlarr.", + "unknown": "Sconosciuto", + "editorDescription": "Impostazioni di connessione e sincronizzazione sorgenti per Prowlarr.", + "confirmDelete": "Rimuovere questa connessione Prowlarr?", + "deleteConsequence": "La connessione, la chiave API crittografata e tutte le sorgenti sincronizzate vengono eliminate. I download già in corso non vengono rimossi.", + "fields": { + "name": "Nome", + "color": "Colore della connessione", + "colorHint": "Segna qui questa connessione Prowlarr. Ogni indicizzatore gestito ha il suo colore di rilascio.", + "baseUrl": "URL di base", + "apiKey": "Chiave API", + "apiKeyHint": "Disponibile in Prowlarr in Impostazioni > Generali > Sicurezza. Viene memorizzata in forma crittografata.", + "syncNew": "Abilita le nuove fonti rilevate", + "syncNewHint": "I nuovi indicizzatori di Prowlarr sono subito disponibili per la ricerca. Le fonti che disattivi qui rimarranno disattivate anche dopo le sincronizzazioni successive.", + "autoExpand": "Riprova senza filtri di categoria", + "autoExpandHint": "Quando un indicizzatore risponde correttamente ma senza risultati, riprova una volta senza il filtro di BookOrbit per la categoria libri.", + "inheritSeedLimits": "Usa i limiti di seeding di Prowlarr", + "inheritSeedLimitsHint": "Applica ai download futuri il rapporto e il tempo di seeding configurati per ciascun indicizzatore torrent, se non è impostata una sostituzione in BookOrbit.", + "perIndexerTimeout": "Timeout indicizzatore (secondi)", + "perIndexerTimeoutHint": "Quanto tempo può richiedere una sorgente sincronizzata. Gli indicizzatori Slow FlareSolverr-backed potrebbero aver bisogno di più tempo.", + "overallBudget": "Tempo massimo per Prowlarr (secondi)", + "overallBudgetHint": "Tempo massimo complessivo condiviso da tutte le fonti di questa connessione Prowlarr durante una singola ricerca." + }, + "errors": { + "load": "Impossibile caricare i gestori degli indicizzatori", + "nameTaken": "Esiste già una connessione Prowlarr con quel nome", + "urlPrivate": "Quell’indirizzo appartiene a una rete privata o locale. Attiva «Consenti indirizzi privati» se Prowlarr è in esecuzione su quella rete.", + "required": "Inserisci un nome, URL di base e chiave API.", + "save": "Impossibile salvare la connessione Prowlarr", + "delete": "Impossibile rimuovere la connessione Prowlarr", + "test": "Impossibile raggiungere Prowlarr", + "sync": "Impossibile sincronizzare le sorgenti Prowlarr", + "source": "Impossibile cambiare la sorgente" + } + }, + "automation": { + "title": "Automazioni", + "pipeline": "Al termine del download, il file passa attraverso il Book Dock, dove vengono rilevati titolo e autore per assegnargli il nome corretto e archiviarlo in modo appropriato. Viene quindi spostato automaticamente nella libreria di destinazione della richiesta. Il tuo intervento è necessario solo se il controllo dell’importazione è attivo e il file non corrisponde a quanto richiesto.", + "groupDownloads": "Download automatici", + "groupImports": "Controlli all'importazione", + "stateOn": "Attivo", + "stateOff": "Disattivo", + "howImports": "Come funzionano i controlli sulle importazioni", + "minScoreShort": "Al di sotto di questo valore, nulla viene scaricato automaticamente.", + "autoRetryShort": "A failed download falls through to the runner-up.", + "maxAttemptsShort": "Il primo tentativo e tutti i successivi tentativi vengono conteggiati ai fini di questo limite.", + "noSourcesConfigured": "Nessuna fonte di ricerca è impostata, quindi non verrà cercato nulla e ogni richiesta approvata tornerà indietro. Aggiungine una sotto Fonti.", + "autoSearchMaxAgeUnit": "giorni", + "verify": "Controllare le importazioni in relazione alla domanda", + "verificationEnabled": "Il controllo dell'importazione è attivo", + "destinationUnset": "Nessun predefinito", + "destinationHiddenLibrary": "Una libreria che non puoi vedere", + "destinationHiddenFolder": "Una cartella che non puoi vedere", + "selectFolder": "Scegli una cartella", + "importFormats": "Formato di importazione" } } }, @@ -2817,8 +3353,16 @@ "descriptions": { "profile": "Il tuo nome, email, password e sessioni attive.", "appearanceBookCovers": "Ombre della copertina, effetti sul dorso e immagini segnaposto.", + "libraries": "Percorsi scansionati, cartelle controllate e regole d'importazione.", + "fileNaming": "Modelli di nomi file e cartelle per i file memorizzati.", + "maintenance": "Scansioni, duplicati, elementi orfani e ricostruzione della cache.", + "koreader": "Progresso sincronizzazione e corrispondenza documento.", + "opds": "Feed del catalogo per applicazioni di lettura di terze parti.", + "email": "Invio tramite SMTP e indirizzi mail dei dispositivi.", "hardcover": "Sincronizza lo stato di lettura e le recensioni con Hardcover.", - "magicLinks": "Collegamenti di condivisione e login senza password." + "magicLinks": "Collegamenti di condivisione e login senza password.", + "bookDock": "Azioni rapide mostrate sulle pagine dei libri.", + "requests": "Fonti, download client e cosa come gestire un libro una volta scaricato." } } }, @@ -3010,7 +3554,9 @@ "email": "E-mail", "administration": "Amministrazione", "notifications": "Notifiche", - "restrictions": "Restrizioni" + "restrictions": "Restrizioni", + "bookDock": "Book Dock", + "emailNotifications": "E-mail e Notifiche" }, "superuserTarget": "Obiettivo superutente", "superuserTargetHint": "Le restrizioni sui contenuti non possono essere applicate ai superutenti.", @@ -3038,7 +3584,8 @@ "emailRequired": "L'e-mail è obbligatoria", "createSharedAccount": "Impossibile creare un account condiviso", "createUser": "Impossibile creare l'utente" - } + }, + "emailHint": "Utilizzato per reimpostare la password e per le notifiche." }, "usersPage": { "usersTitle": "Utenti", @@ -3104,7 +3651,8 @@ "editUserAria": "Modifica {name}", "resetPasswordAria": "Reimposta la password di {name}", "deleteUserAria": "Elimina {name}", - "moreActionsAria": "Altre azioni per {name}" + "moreActionsAria": "Altre azioni per {name}", + "noEmail": "Nessun indirizzo" } }, "annotations": { @@ -3229,7 +3777,9 @@ "noMatch": "Nessun punto in evidenza corrisponde ai tuoi filtri.", "resetFilters": "Reimposta i filtri", "trashEmpty": "Il cestino è vuoto", - "noAnnotations": "Nessuna annotazione ancora. I momenti salienti che crei sul Web o sul tuo e-reader vengono visualizzati qui." + "noAnnotations": "Nessuna annotazione ancora. I momenti salienti che crei sul Web o sul tuo e-reader vengono visualizzati qui.", + "syncKoreader": "Sincronizza KOReader", + "syncKoreaderBody": "Il plugin carica le annotazioni con le loro posizioni." }, "toast": { "movedToTrash": "Spostato nel cestino", @@ -3241,6 +3791,9 @@ "bulkRecolored": "{count, plural, =0 {Ricolorata senza annotazioni} one {Ricolorato # annotazione} other {Ricolorato # annotazioni} many {Ricolorato # annotazioni}}", "bulkRestyled": "{count, plural, =0 {Restyling senza annotazioni} one {Rinnovato # annotazione} other {Rinnovato # annotazioni} many {Rinnovato # annotazioni}}" } + }, + "sources": { + "koreader": "KOReader" } }, "audit": { @@ -3815,6 +4368,7 @@ "ofFollowingRules": "delle seguenti regole", "fields": { "series": "Serie", + "seriesIndex": "Ordine di serie", "finishedAt": "Data di completamento", "cover": "Copertina", "seriesStatus": "Stato della serie" @@ -3955,7 +4509,7 @@ "unknownValue": "Valore sconosciuto" }, "quickView": { - "title": "Prenota visualizzazione rapida", + "title": "Visualizzazione rapida del libro", "titleFor": "Visualizzazione rapida per {title}", "description": "Visualizza l'anteprima dei dettagli del libro ed esegui azioni rapide.", "openIn": "Apri tra {provider}", @@ -4131,6 +4685,26 @@ "untitled": "Senza titolo", "metadataScore": "Punteggio dei metadati", "primaryFormat": "Formato primario", + "readAloudSync": { + "title": "Sincronizzazione progresso lettura vocale", + "state": { + "enabled": "Abilitato", + "disabled": "Disabilitato", + "unavailable": "Non disponibile" + }, + "enabledDescription": "Le posizioni di audiolibri, web reader, Kobo e KOReader rimangono sincronizzate.", + "disabledDescription": "Ciascun formato mantiene la propria posizione di lettura.", + "reason": { + "no_media_overlay_epub": "È necessario un EPUB read-along con media overlay.", + "no_audio_files": "Sono richiesti file di audiolibri a se stanti, corrispondenti al testo.", + "missing_duration": "I metadati della durata audio sono incompleti.", + "durationMismatch": "Le durate non corrispondono a sufficienza: audiolibro {audio}, EPUB read-along {overlay}." + }, + "enable": "Abilita", + "disable": "Disabilita", + "saving": "Salvataggio in corso...", + "saveFailed": "Impossibile sincronizzare i progressi della lettura vocale." + }, "openIn": "Apri tra {provider}", "showLess": "Mostra meno", "showMore": "Mostra di più", @@ -4146,6 +4720,8 @@ "fileSize": "Dimensioni del file", "library": "Biblioteca", "added": "Aggiunto", + "cancelDateAddedEdit": "Annulla modifica data di aggiunta", + "editDateAdded": "Modifica data di aggiunta", "dateStarted": "Data di inizio", "saving": "Salvataggio...", "cancelDateStartedEdit": "Annulla modifica data di inizio", @@ -4157,10 +4733,13 @@ "synopsis": "Sinossi", "noDescription": "Nessuna descrizione disponibile.", "dateStartedFutureError": "La data di inizio non può essere futura.", + "dateAddedRequiredError": "La data aggiunta è necessaria.", + "dateAddedFutureError": "La data di aggiunta non può essere futura.", "dateFinishedFutureError": "La data di fine non può essere futura.", "dateFinishedBeforeStartedError": "La data di fine deve essere uguale o successiva alla data di inizio.", "dateFinishedBeforeStartedErrorWithDate": "La data di completamento deve essere uguale o successiva alla data di inizio ({date}).", "saveReadingDatesError": "Impossibile salvare le date di lettura.", + "saveAddedDateError": "Impossibile salvare la data aggiunta.", "koboPendingDelete": "In attesa di eliminazione dal dispositivo", "koboPendingDeleteTooltip": "Kobo lo rimuoverà alla prossima sincronizzazione.", "koboRemovedByDevice": "Rimosso dal dispositivo", @@ -4169,7 +4748,35 @@ "koboNotSyncedTooltip": "In coda per la prossima sincronizzazione Kobo.", "filesNotFound": "File non trovati", "filesNotFoundDescription": "I file per questo libro non possono più essere trovati sul disco. I metadati sono ancora disponibili. Esegui una scansione della libreria per confermare o rimuovere il record.", - "noSessionsYet": "Ancora nessuna sessione di lettura. Aprire questo libro nel lettore tiene traccia di tempo, ritmo e avanzamento per dispositivo." + "resetHoldNotice": "{device} ha ancora la vecchia posizione ({percent})", + "resetHoldRelease": "Utilizza la posizione di questo dispositivo", + "resetHoldReleaseFailed": "Impossibile usare questa posizione. Riprova.", + "editions": "Edizioni", + "editionsSummary": "{count} · {size}", + "moreFormats": "Altri +{count}", + "filesOnDisk": "File sul disco", + "yourReading": "La tua lettura", + "lastRead": "ultima lettura {when}", + "notStarted": "non iniziato", + "noSessionsYet": "Ancora nessuna sessione di lettura. Aprire questo libro nel lettore tiene traccia di tempo, ritmo e avanzamento per dispositivo.", + "activitySessions": "Sessioni", + "activityTime": "Ora", + "activityAverage": "Media", + "activityProgress": "Progresso", + "activityDayTooltip": "{day}: {minutes} min", + "activityReached": "{percent} raggiunta", + "durationS": "{seconds}s", + "durationM": "{minutes}m", + "durationHm": "{hours}h {minutes}m", + "yourReview": "La tua recensione", + "reviewNotWritten": "Non ancora scritta", + "writeReview": "Scrivi", + "collections": "Raccolte", + "noCollections": "Nessuno", + "onDisk": "Su disco", + "detailsHeading": "Dettagli", + "percentUnderOne": "<1%", + "percentOverNinetyNine": ">99%" }, "editMetadata": { "fieldCount": "{count, plural, =0 {nessun campo} one {un campo} other {# campi} many {# campi}}", @@ -4197,6 +4804,8 @@ "savedButWriteFailed": "Metadati salvati, ma la scrittura del file non è riuscita", "savedWriteSkippedReason": "Metadati salvati, scrittura file saltata: {reason}", "savedWriteSkipped": "Metadati salvati, scrittura del file saltata", + "saveFailed": "Impossibile salvare le modifiche", + "saveFailedWithStatus": "Impossibile salvare le modifiche (HTTP {status})", "loadFromFileFailed": "Impossibile caricare i metadati dal file", "loadedFieldsFromFile": "{count, plural, =0 {Nessun campo caricato dal file} one {Caricato un campo dal file} other {Caricato # campi dal file} many {Caricato # campi dal file}}", "noMetadataInFile": "Nessun metadato trovato nel file", @@ -4316,10 +4925,33 @@ "searchPrompt": "Cerca sopra, quindi fai clic su un risultato per iniziare a confrontare i metadati." }, "writeAndRename": "Scrivi su file e rinomina", - "writeAndRenameShort": "Scrivi e rinomina" + "writeAndRenameShort": "Scrivi e rinomina", + "emptyFields": "{count, plural, one {campo mancante} other {campi mancanti}}", + "emptyFieldsTooltip": "Non ancora compilati: {fields}. Cerca online per trovarli." }, "files": { "title": "File di libri", + "stats": { + "files": "File", + "total": "Totale", + "formats": "Formati" + }, + "filesHeading": "File", + "allPresent": "Titti presenti", + "groupedByReader": "raggruppati per lettore", + "thisFile": "Questo file", + "writeBackShort": "Scrittura su file", + "writtenNothing": "Nessuno degli {total} campi scrivibili ha ancora un valore.", + "writeBackOff": "La scrittura su file è disabilitata per questo libro.", + "editMetadata": "Modifica i metadati", + "showAllTracks": "Mostra tutto", + "collapseTracks": "Comprimi", + "moreTracks": "{count, plural, one {# formato in più} other {# formati in più}}", + "tracksRolled": "{count, plural, one {# traccia} other {# tracce}}", + "fileDetails": "Dettagli file", + "openDetails": "Apri dettagli file", + "closeDetails": "Chiudi dettagli file", + "trackFrom": "Traccia {track} di {total}, da {time}", "fileCount": "{count, plural, =0 {nessun file} one {# file} other {# file} many {# file}}", "synced": "Sincronizzato {time}", "sortAria": "Ordina i file", @@ -4370,7 +5002,70 @@ "title": "Eliminare il file?", "description": "Sei sicuro di voler eliminare \"{filename}\"? Questa azione non può essere annullata." }, - "deleting": "Eliminazione..." + "deleting": "Eliminazione...", + "folderAria": "Percorso cartella", + "folderContents": "Contenuti cartella", + "inspectorAria": "File selezionato", + "onDisk": "Su disco", + "missing": "Mancante", + "backToFolder": "Torna alla cartella", + "copyPath": "Copia percorso completo", + "pathCopied": "Percorso copiato negli appunti", + "resume": "Riprendi", + "audiobook": "Audiolibro", + "enabled": "Abilitato", + "disabled": "Disattivo", + "notSet": "non impostato", + "sortAdded": "Aggiunto", + "formatCount": "{count, plural, one {# formato} other {# formati}}", + "trackCount": "{count, plural, one {# traccia} other {# tracce}}", + "percentRead": "{percent} letto", + "trackOf": "Traccia {track} di {total}", + "groups": { + "ebook": "Ebook", + "document": "Documento", + "comic": "Fumetto", + "audio": "Audio" + }, + "spec": { + "added": "Aggiunto", + "indexed": "Indicizzato", + "opensIn": "Si apre in", + "writeBack": "Scrittura su file", + "track": "Traccia", + "targetFile": "File di destinazione", + "notWritten": "Non scritto" + }, + "duration": { + "hoursMinutes": "{hours}h {minutes}m", + "minutes": "{minutes}m", + "minutesSeconds": "{minutes}m {seconds}s", + "seconds": "{seconds}s" + }, + "positionHeading": "La tua posizione in questa copia", + "copiesStarted": "{started} di {total} copie iniziate", + "nothingStarted": "Non hai ancora iniziato nulla", + "throughFile": "{percent} con questo file", + "notOpened": "Non ancora aperto", + "lastRead": "Ultima lettura {time}", + "noPosition": "Nessuna posizione di lettura memorizzata", + "trackPositionHeading": "Dove si trova questa traccia", + "totalRuntime": "{duration} totale", + "startsAt": "Inizia a {time}", + "switchFileHeading": "Cambia file", + "writeBackHeading": "Scritto in questo file", + "fieldsWithValue": "{filled} di {total} campi hanno un valore", + "lastRun": "Ultima lettura {time}", + "neverRun": "Mai eseguito", + "historyHeading": "Cronologia", + "timeline": { + "written": "Metadati scritti su {format}", + "writtenMany": "Metadati scritti su {format} ×{count}", + "writeDetail": "{count, plural, one {# campo} other {# campi}} · {ms}ms · {trigger}", + "failed": "Scrittura fallita", + "indexed": "{name} indicizzato", + "indexedMany": "{count} {format} file indicizzati" + } }, "highlights": { "note": { @@ -4404,18 +5099,117 @@ "hint": "Seleziona il testo durante la lettura per creare evidenziazioni" }, "uncategorized": "Senza categoria", - "paginationUnit": "evidenzia" + "paginationUnit": "evidenzia", + "rail": { + "title": "Marcature", + "unit": "{count, plural, one {evidenziazione} other {evidenziazioni}}", + "chaptersMarked": "capitoli marcati", + "ofChaptersMarked": "di {total} capitoli marcati", + "colour": "Colore", + "showOnly": "Mostra solo {colour}", + "source": "Da dove provengono", + "health": "Stato della posizione", + "needsAttention": "{count, plural, one {# da verificare} other {# da verificare}}", + "anchorLost": "{count, plural, one {uno ha persoil suo puntatore quando il file è cambiato} other {# hanno perso il loro puntatore quando il file è cambiato}}", + "reAnchored": "{count, plural, one {uno è stato ri-ancorato automaticamente} other {# sono stati ri-ancorati automaticamente}}", + "reviewPositions": "Ricontrolla le posizioni", + "firstMark": "Prima marcatura", + "lastMark": "Ultima marcatura", + "markingDays": "Giorni di marcatura", + "exportCount": "Esporta {count}" + }, + "row": { + "select": "Seleziona questa evidenziazione", + "showMore": "Mostra di più", + "showLess": "Mostra di meno", + "note": "Nota", + "addNote": "Aggiungi una nota", + "page": "pag. {page}" + }, + "emptyStage": { + "koreader": { + "title": "Sincronizza KOReader", + "body": "Il plugin carica le annotazioni con le loro posizioni esatte." + } + } }, "readingLog": { + "resetReadingState": "Reimposta stato di lettura", "vitals": { + "aria": "Riepilogo lettura", + "notSet": "Non impostato", + "started": "Iniziato", + "finished": "Finito", + "editStarted": "Modifica la data in cui hai iniziato questo libro", "editFinished": "Modifica la data in cui hai finito questo libro", + "totalTime": "Tempo totale", + "sessions": "Sessioni", + "avgSession": "Sessione media", + "activeDays": "Giorni attivi", + "activeDaysOf": "{active} di {total}", "pace": "Ritmo", - "pacePerHour": "{percent}%/h" + "pacePerHour": "{percent}%/h", + "lastRead": "Ultima lettura", + "whereYouRead": "Dove lo leggi", + "addSession": "Aggiungi sessione", + "durationHm": "{hours}ore {minutes}m", + "durationM": "{minutes}m", + "durationS": "{seconds}s" + }, + "ledger": { + "title": "Sessioni", + "none": "nessuno", + "colDay": "Giorno", + "colTime": "Ora", + "colLength": "Lunghezza", + "colChange": "Cambia", + "colPosition": "Posizione nel libro", + "colReached": "Raggiunti", + "colSource": "Fonte", + "colFormat": "Formato", + "gapDays": "{count, plural, one {# giorno senza leggere} other {# giorni senza leggere}}", + "attemptBegan": "Ciclo {index} iniziato", + "attemptOutsideAny": "Fuori da qualsiasi ciclo", + "empty": "Ancora nessuna sessione registrata", + "emptyHint": "Apre il libro nel lettore, sincronizza un dispositivo o aggiungi una sessione a mano." + }, + "attempts": { + "title": "Cicli", + "none": "nessuno", + "ordinal": "Ciclo {index}", + "addPast": "Aggiungi un ciclo passato", + "reread": "Rileggi", + "rereadPrompt": "Avviare un nuovo ciclo di lettura?", + "rereadResetProgress": "Reimposta la posizione di lettura all'inizio. I dispositivi sincronizzati possono ricevere questo reset.", + "rereadConfirm": "Avvia rilettura", + "fieldStarted": "Iniziato", + "fieldEnded": "Concluso", + "fieldOutcome": "Esito", + "outcome": { + "completed": "Completato", + "skimmed": "Sfogliato", + "abandoned": "Abbandonato", + "inProgress": "In corso" + }, + "spanRange": "da {from} a {to}", + "spanSince": "da {from}", + "spanEnded": "terminato {to}" }, "records": { + "title": "Registri", + "longestSession": "Sessione più lunga", + "bestDay": "Giorno migliore", "longestStreak": "Serie di lettura più lunga", "streakDays": "{count, plural, one {# giorno} other {# giorni}}", - "pace": "Ritmo di lettura" + "pace": "Ritmo di lettura", + "jumpedBack": "Tornato indietro", + "jumpedBackTimes": "{count, plural, one {# volta} other {# volte}}", + "firstOpened": "Prima apertura", + "empty": "I record appaiono quando questo libro ha delle sessioni." + }, + "emptyStage": { + "koreaderTitle": "Sincronizza KOReader", + "koreaderBody": "Il plugin memorizza ogni sessione di lettura, tenendo traccia dell'ultima pagina raggiunta." }, "moreActionsAria": "Altre azioni del registro di lettura", "export": { @@ -4655,6 +5449,7 @@ "unread": "Non letto" }, "series": { + "seriesRow": "Riga della serie", "bookCount": "{count, plural, =0 {(niente libri)} one {(# libro)} other {(# libri)} many {(# libri)}}", "readOfCount": "{read} di {total} letto" }, @@ -4751,12 +5546,19 @@ "bulkEditAction": "Modifica collettiva", "applyFetched": "Applica recuperato", "retryErrors": "Riprova errori", + "discardDialog": { + "title": "{count, plural, =0 {Non scartare nessun file?} one {Scarta il file selezionato?} other {Scarta i # file selezionati?}}", + "description": "{count, plural, =0 {Nessun file selezionato.} one {Questo elimina definitivamente il file selezionato dal disco. Questa operaziione non può essere annullata.} other {Questo elimina definitivamente # file selezionati dal disco. Questa operaziione non può essere annullata.}}", + "confirm": "{count, plural, one {Cancella file} other {Cancella # file}}", + "failed": "I file selezionati non possono essere eliminati. Riprova." + }, "commaSeparated": "separati da virgole", "destinationLibrary": "Biblioteca di destinazione", "destinationFolder": "Cartella di destinazione", "nFailed": "{count} non riuscito", "updatedOfFiles": "Aggiornato {updated} di {total} file", "errorStatus": "Errore {status}", + "invalidSeriesIndex": "Inserisci cifre con al massimo un punto decimale, come ad esempio 5.10.", "tab": { "all": "Tutto", "pending": "In sospeso", @@ -4818,7 +5620,7 @@ "saved": "Salvato", "providerMetadataFound": "Metadati del fornitore trovati", "providerMetadataFoundEdited": "Metadati del fornitore trovati: l'applicazione collettiva salterà questo file (hai delle modifiche)", - "review": "Recensione", + "review": "Controlla", "added": "Aggiunto {date}", "searchMetadata": "Cerca metadati", "results": "Risultati" @@ -4842,7 +5644,7 @@ "allHaveDestination": "Tutti i file selezionati hanno già la destinazione impostata", "defaultDestinationLibrary": "Libreria di destinazione predefinita", "defaultDestinationFolder": "Cartella di destinazione predefinita", - "renamePreview": "Rinomina l'anteprima", + "renamePreview": "Anteprima cambiamento nome file", "moreFiles": "+{count} altri file", "start": "Inizia", "filesFinalized": "{succeeded} di {total} file finalizzati", @@ -4865,6 +5667,10 @@ "import": "Importa" }, "layout": { + "pause": "Sospendi", + "resume": "Riprendi", + "pauseUpdateFailed": "Pausa aggiornamento non riuscita", + "clearSearch": "Pulisci ricerca", "filter": { "all": "Tutti", "needsReview": "Da revisionare", @@ -4872,20 +5678,66 @@ "ready": "Pronti", "error": "Errori" }, + "working": { + "label": "{count} funzionanti" + }, "row": { + "select": "Seleziona {title}", "setDestination": "Imposta destinazione", + "file": "File", "match": "{percent}% corrispondenza", "noAuthor": "Nessun autore al momento", + "proposedChanges": "Modifiche proposte", + "noChanges": "Ancora nessun metadato recuperato", "editDetails": "Modifica dettagli", + "noMatch": "Nessuna corrispondenza", + "applied": "Applicato", "refetch": "Ricarica metadati", - "clickToZoom": "Fai clic su una copertina per ingrandirla" + "clickToZoom": "Fai clic su una copertina per ingrandirla", + "changedFields": "{count, plural, one {# campo} other {# campi}}", + "needMore": "Hai bisogno di cercare provider o modificare altri campi?" + }, + "selection": { + "fileToLibrary": "{count, plural, =0 {File in biblioteca} one {# file in biblioteca} other {# file in biblioteca}}", + "nSelected": "{count} selezionato/i", + "nReadyToFile": "{count} Pronti per l'inserimento" }, "empty": { + "nothingToReview": "Non c'è nulla da revisionare. Tutti i file pronti hanno una destinazione e una corrispondenza sicura.", + "nothingReadyToFile": "Nessun file è pronto per essere inserito.", "dropHint": "O trascina i file da qualche parte in questa pagina." }, + "selectAllOnPage": "Seleziona tutti i file in questa pagina", + "showingOf": "{shown} di {total}", "keyboardHint": "J / K per spostare · spazio per selezionare · Invio per espandere", + "allOnPageSelected": "Tutti gli {count} di questa pagina sono selezionati.", + "selectAllMatching": "Seleziona tutte le {count} corrispondenze", + "allMatchingSelected": "Tutti i {count} file corrispondenti sono selezionati", "sort": { - "createdAt": "Aggiunto di recente" + "label": "Ordina per", + "attention": "Da verificare", + "createdAt": "Aggiunto di recente", + "fileName": "Nome file", + "fileSize": "Dimensione", + "format": "Formato", + "status": "Stato" + }, + "conflict": { + "duplicate": "Duplicato", + "destination_conflict": "Percorso registrato", + "access_denied": "Nessun accesso", + "invalid_format": "Formato errato", + "error": "Fallirebbe" + }, + "unit": { + "fileCount": "{count, plural, one {# file} other {# file}}", + "filesHeading": "{count, plural, one {File in questa voce} other {# file in questa voce}}", + "role": { + "content": "Libro", + "cover": "Copertina", + "metadata": "Metadati", + "supplement": "Extra" + } } } }, @@ -5243,6 +6095,7 @@ "recentlyAdded": "Aggiunto di recente", "continueReading": "Continua a leggere", "continueListening": "Continua ad ascoltare", + "upNextInSeries": "Successivo nella serie", "random": "Scopri qualcosa di nuovo" }, "reorderHintWidget": "Trascina per riordinare. Seleziona per mostrare o nascondere un widget.", @@ -5673,7 +6526,7 @@ }, "summary": { "ready": "Pronto", - "review": "Recensione", + "review": "Controlla", "conflicts": "Conflitti", "unmatched": "Senza corrispondenza", "skipped": "Saltato" @@ -5711,14 +6564,14 @@ "tabs": { "all": "Tutto", "ready": "Pronto", - "review": "Recensione", + "review": "Controlla", "conflicts": "Conflitti", "unmatched": "Senza corrispondenza", "skipped": "Saltato" }, "summary": { "ready": "Pronto", - "review": "Recensione", + "review": "Controlla", "conflicts": "Conflitti", "unmatched": "Senza corrispondenza", "skipped": "Saltato" @@ -5733,7 +6586,7 @@ }, "outcome": { "ready": "Pronto", - "review": "Recensione", + "review": "Controlla", "conflict": "Conflitto", "unmatched": "Senza corrispondenza", "skipped": "Saltato" @@ -6480,7 +7333,7 @@ "pageSpreads": "La pagina si allarga", "pageSpreadsHint": "Scegli come questo EPUB basato su immagini accoppia le pagine.", "spread": { - "bookDefault": "Prenota predefinito", + "bookDefault": "Dettagli del libro", "singlePage": "Pagina singola" }, "columnGap": "Spazio tra le colonne", @@ -6664,7 +7517,9 @@ }, "gaps": { "label": "Possibili lacune:", - "missingList": "Mancanti {list}" + "missingCount": "{count, plural, one {# mancante} other {# mancanti}}", + "missingList": "Mancanti {list}", + "previewMore": "{shown} +{count}" }, "filters": { "title": "Filtri di serie", @@ -6696,7 +7551,8 @@ "readingProgress": "Progresso nella lettura" }, "clearSearch": "Cancella ricerca", - "noMatchHint": "Prova un'altra biblioteca, o cancella i filtri impostati." + "noMatchHint": "Prova un'altra biblioteca, o cancella i filtri impostati.", + "emptyHint": "Le serie appaiono una volta che i libri contengono metadati di serie." }, "detail": { "pageTitle": "Serie", @@ -6724,7 +7580,7 @@ "groupByMedia": "Raggruppa per supporto", "noBooksFound": "Nessun libro trovato in questa serie", "trySelectingLibrary": "Prova a selezionare un'altra libreria.", - "allBooksLoaded": "Tutti i libri {count} caricati", + "allBooksLoaded": "Tutti i {count} libri caricati", "leadBookLoadError": "Impossibile caricare i dettagli del libro principale", "noBooksToEdit": "Questa serie non ha libri da modificare.", "loadFullSeriesError": "Impossibile caricare la serie completa per la modifica.", @@ -6738,7 +7594,12 @@ "descending": "Discendente" } }, + "authorsPlus": "{authors} +{count}", "track": { + "readCount": "{count, plural, one {# letto} other {# letti}}", + "readingCount": "{count, plural, one {# in corso} other {# in corso}}", + "unreadCount": "{count, plural, one {# letto} other {# letti}}", + "missingCount": "{count, plural, one {# mancante} other {# mancanti}}", "slotMissing": "{number} non presenti nella biblioteca", "untitled": "Senza titolo" }, @@ -6750,9 +7611,9 @@ }, "status": { "label": "Filtra serie per stato di lettura", - "all": "Tutti", + "all": "Tutte", "reading": "In lettura", - "unread": "Non letti", + "unread": "Non lette", "complete": "Completate", "gaps": "Mancanti", "read": "Letta", @@ -6764,8 +7625,14 @@ "columnSeries": "Serie", "columnVolumes": "Volumi", "columnRead": "Letto", + "columnNext": "Prossimo della serie", "columnAdded": "Aggiunta", - "reading": "In lettura" + "percent": "{value}%", + "captionReading": "{base} · {count, plural, one {# in corso} other {# in corso}}", + "finished": "Letta integralmente", + "reading": "In lettura", + "next": "Prossimo", + "start": "Inizia" }, "grouping": { "label": "Raggruppa", @@ -6773,6 +7640,19 @@ "letter": "Alfabetico", "library": "Per biblioteca", "status": "Per stato" + }, + "libraries": { + "more": "+{count}" + }, + "card": { + "oneVolume": "Un volume", + "oneVolumeShort": "1 vol", + "volumeCount": "{count, plural, one {# volume} other {# volumi}}", + "readSummary": "{base} · {read} letto", + "publishedOf": "{owned} di {total} pubblicato", + "complete": "Completata", + "moreVolumes": "{count, plural, one {# altro volume} other {# altri volumi}}", + "label": "{name}, {read} di {total} volumi letti" } }, "smartScope": { @@ -7223,7 +8103,7 @@ "showControlsAria": "Mostra i controlli della libreria", "export": "Esportazione", "searchPlaceholder": "Cerca titolo, autore, serie, narratore...", - "allBooksLoaded": "Tutti i libri {count} caricati" + "allBooksLoaded": "Tutti i {count} libri caricati" }, "notFound": { "title": "Pagina non trovata", @@ -7245,7 +8125,7 @@ "title": "Libro", "titleWithId": "Libro n.{id}", "pageTitle": { - "book": "Prenota · {base}", + "book": "Libro · {base}", "editMetadata": "Modifica metadati · {base}", "edit": "Modifica · {base}", "files": "File · {base}", @@ -7440,7 +8320,7 @@ "custom-fields": "Metadati personalizzati", "genre-blocklist": "Blocklist di genere", "score": "Punteggio di fiducia", - "auto-fetch": "Prenota Recupero automatico", + "auto-fetch": "Auto-Recupero Libro", "authors": "Recupero automatico dell'autore" }, "admin": { diff --git a/client/src/locales/nl.json b/client/src/locales/nl.json index ef578b1a8..a305e7bd3 100644 --- a/client/src/locales/nl.json +++ b/client/src/locales/nl.json @@ -15,6 +15,7 @@ "retry": "Opnieuw proberen", "yes": "Ja", "no": "Nee", + "hide": "Verbergen", "undo": "Undo" }, "settings": { @@ -487,7 +488,8 @@ "accountTypeLocal": "Lokaal", "nameRequired": "Naam is verplicht", "updateFailed": "Bijwerken van profiel mislukt", - "updated": "Profiel bijgewerkt" + "updated": "Profiel bijgewerkt", + "passwordHintOidc": "Uw wachtwoord wordt beheerd door uw identiteitsprovider." }, "readingPreferences": { "title": "Leesvoorkeuren", @@ -6349,15 +6351,15 @@ "seasonEpisode": "S{season} E{episode}", "season": "S{season}", "episode": "E{episode}", + "episodeTypeTrailer": "Trailer", + "episodeTypeBonus": "Bonus", + "pinnedHint": "Pinned episodes are protected from storage retention removal.", "explicit": "Explicit", "lastListened": "Listened {time}", "timeLeft": "{time} left", "pinnedEpisode": "Pinned episode", "newEpisodeCount": "{count} new", - "unplayedShort": "{count} unplayed", - "episodeTypeTrailer": "Trailer", - "episodeTypeBonus": "Bonus", - "pinnedHint": "Pinned episodes are protected from storage retention removal." + "unplayedShort": "{count} unplayed" }, "acquisition": { "title": "Automatische downloads", @@ -6390,12 +6392,12 @@ "backSeconds": "{count} seconden terug", "forwardSeconds": "{count} seconden vooruit", "episodePosition": "Positie in aflevering", + "toggleTimeDisplay": "Toggle remaining and total time", "positionValue": "{elapsed} afgespeeld van {duration}", "playingAnnouncement": "Playing {title} from {podcast}", "pausedAnnouncement": "Paused {title} from {podcast}", "volume": "Volume", - "positionValueWithChapter": "{elapsed} elapsed of {duration}, chapter {chapter}", - "toggleTimeDisplay": "Toggle remaining and total time" + "positionValueWithChapter": "{elapsed} elapsed of {duration}, chapter {chapter}" }, "bookmarks": { "title": "Bladwijzers", @@ -6421,7 +6423,6 @@ "unplayed": "Niet beluisterd", "finished": "Voltooid", "health": "Status", - "feedHealth": "Feedstatus", "search": "Podcasts zoeken", "clearSearch": "Podcastzoekopdracht wissen", "import": "Importeren", @@ -6873,14 +6874,14 @@ "skipForward": "Skip forward", "next": "Next episode", "previous": "Previous episode", - "help": "Show this list", - "spaceKey": "Space", "speedDown": "Decrease playback speed", "speedUp": "Increase playback speed", "mute": "Mute or unmute", "volumeUp": "Increase volume", "volumeDown": "Decrease volume", "bookmark": "Add bookmark", + "help": "Show this list", + "spaceKey": "Space", "groups": { "playback": "Playback", "navigation": "Navigation", diff --git a/client/src/locales/pt.json b/client/src/locales/pt.json index f6c6c2b6a..bdf43b9af 100644 --- a/client/src/locales/pt.json +++ b/client/src/locales/pt.json @@ -16,7 +16,8 @@ "yes": "Sim", "no": "Não", "show": "Mostrar", - "hide": "Ocultar" + "hide": "Ocultar", + "undo": "Desfazer" }, "settings": { "privacySharing": { @@ -46,7 +47,7 @@ "trend": "Tendência geral de leitura", "books": "Títulos de livros atuais, recentes e mais lidos", "authors": "Principais autores", - "series": "Principais séries", + "series": "Principais programas", "narrators": "Principais narradores" }, "confirm": { @@ -734,6 +735,7 @@ "connected": "Conectado - {issuer}", "connectionFailed": "Falha na conexão", "privateIssuerAddress": "A URL do emissor resolve um endereço de rede privado ou local, então o servidor recusou-se a se conectar. Definir OIDC_ALLOW_LOCAL_ISSUERS=true no servidor da BookOrbit para permitir.", + "tlsCertificateUntrusted": "BookOrbit não pôde verificar o certificado TLS do provedor OIDC. Se o provedor usa uma autoridade certificadora privada, montar seu pacote CA PEM, configurar NODE_EXTRA_CA_CERTS no caminho interno do pacote e reiniciar o BookOrbit.", "hide": "Ocultar", "details": "Detalhes", "supported": "suportado", @@ -1355,8 +1357,102 @@ "account-activity": "Atividade da Conta", "magic-links": "Links Mágicos", "oidc": "OIDC / SSO", + "tts": "Texto-para-voz", "server-fonts": "Fontes do Servidor" }, + "tts": { + "title": "Provedores", + "subtitle": "Mecanismos de voz disponíveis para leitores. Vozes são geridas por provedor.", + "summary": "{providers, plural, one {# provedor} other {# provedores}} · {enabled} ativado · {voices, plural, one {# voz curada} other {# vozes curadas}}", + "addProvider": "Adicionar provedor", + "loadFailed": "Falha ao carregar a configuração de texto-para-voz", + "empty": "Nenhum provedor de voz configurado.", + "reorderHint": "Arrastar para reordenar. Os leitores veem os provedores nessa ordem.", + "dragHandle": "Reordenar {name}", + "moveUp": "Mover {name} para cima", + "moveDown": "Mover {name} para baixo", + "reorderFailed": "Falha ao salvar a ordem do provedor", + "expand": "Detalhes para {name}", + "collapse": "Ocultar detalhes para {name}", + "toggleEnabled": "Ativar {name}", + "enableFailed": "Falha ao atualizar {name}", + "statusConnected": "Conectado", + "statusUnreachable": "Inacessível", + "statusUnchecked": "Não verificado", + "voiceCount": "{count, plural, one {# voz} other {# vozes}}", + "configuration": "Configuração", + "fieldType": "Tipo", + "fieldTypeOpenAi": "Compatível com OpenAI", + "fieldApiKey": "Chave API", + "apiKeySet": "Definir", + "apiKeyNotSet": "Não definido", + "fieldModel": "Modelo padrão", + "fieldModelNone": "Provedor padrão", + "fieldDiscovery": "Descoberta de voz", + "discoverySupported": "Suportado", + "discoveryUnsupported": "Não suportado", + "voices": "Vozes", + "voicesCurated": "{count} gerenciado", + "voicesTapToPreview": "Toque em uma voz para visualizá-la", + "voicesNone": "Nenhuma voz configurada ainda", + "manageVoices": "Gerenciar vozes", + "previewVoice": "Pré-visualizar {name}", + "previewStop": "Pausar prévia", + "previewFailed": "Não foi possível reproduzir uma pré-visualização para {name}", + "previewNeedsEnabled": "Habilitar este provedor para pré-visualizar suas vozes", + "editConfiguration": "Editar configuração", + "testConnection": "Testar a conexão", + "testPassed": "Connectado · {count, plural, one {# voz encontrada} other {# vozes encontradas}}", + "testFailed": "Falha na conexão", + "delete": "Apagar", + "deleteConfirm": "Excluir o provedor \"{name}\"? Os leitores usando as vozes dele irão para outro provedor.", + "deleteFailed": "Falha ao excluir {name}", + "deleted": "Provedor excluído", + "saveFailed": "Falha ao salvar {name}", + "saved": "Provedor salvo", + "formAddTitle": "Novo provedor", + "formEditTitle": "Editar provedor", + "formName": "Nome", + "formNamePlaceholder": "Kokoro", + "formBaseUrl": "URL base", + "formBaseUrlPlaceholder": "http://localhost:8880/v1", + "formApiKey": "Chave API", + "formApiKeyOptional": "Opcional", + "formApiKeyPlaceholder": "sk-...", + "formApiKeyKeep": "Deixe em branco para manter a chave atual", + "formModel": "Modelo padrão", + "formModelPlaceholder": "tts-1", + "formDiscovery": "Este provedor pode listar suas próprias vozes", + "formRequired": "Nome e URL base são necessários", + "curation": { + "title": "Gerenciar Vozes - {provider}", + "summary": "{count, plural, one {# voz configurada} other {# vozes configuradas}}", + "summaryUnsaved": "{count, plural, one {# voz configurada} other {# vozes configuradas}} - Alterações não salvas", + "importFromProvider": "Importar do provedor", + "loadPreset": "Carregado {preset} presente", + "importUnsupported": "Este provedor não suporta descoberta de voz.", + "importUnsupportedWithPreset": "Este provedor não suporta a descoberta de voz. Use o botão \"Carregar {preset} predefinição\".", + "discoveryUnsupported": "Este provedor não expõe uma extremidade da lista de voz.", + "discoverFailed": "Falha ao descobrir vozes", + "emptyImportOrPreset": "Nenhuma voz configurada. Importe do provedor ou carregue uma predefinição.", + "emptyImport": "Nenhuma voz configurada. Importar do provedor.", + "emptyPreset": "Nenhuma voz configurada. Carregue uma predefinição para começar.", + "emptyManual": "Nenhuma voz configurada. Adicione vozes manualmente.", + "columnId": "ID", + "columnName": "Nome", + "columnLocale": "Região", + "columnGender": "Gênero", + "genderMale": "Masculino", + "genderFemale": "Feminino", + "genderUnknown": "Desconhecido", + "cancelEdit": "Cancelar edição", + "editVoice": "Editar {name}", + "deleteVoice": "Deletar {name}", + "previewVoice": "Pré-visualizar {name}", + "stopPreview": "Parar pré-visualização para {name}", + "saveVoices": "{count, plural, one {Save # voz} other {Save # vozes}}" + } + }, "serverFonts": { "title": "Fontes do Servidor", "subtitle": "Carregue fontes que cada usuário pode escolher no leitor de eBook sem carregar as suas próprias.", @@ -1376,11 +1472,13 @@ "opds": "OPDS", "kobo": "Kobo", "koreader": "KOReader", + "tts": "Texto-para-voz", "integrations": "Integrações", "hardcover": "Hardcover", "admin": "Admin", "system": "Sistema", - "account": "Conta" + "account": "Conta", + "podcasts": "Podcasts" } }, "integrations": { @@ -2846,7 +2944,9 @@ "clientTypes": { "qbittorrent": "qBittorrent", "transmission": "Transmission", - "deluge": "Deluge" + "deluge": "Deluge", + "nzbget": "NZBGet", + "sabnzbd": "SABnzbd" }, "color": { "label": "Cor", @@ -2859,10 +2959,13 @@ "baseUrl": "URL base", "username": "Nome de usuário", "password": "Senha", + "apiKey": "Chave API", "passwordKeep": "Deixe em branco para manter a senha armazenada", + "apiKeyKeep": "Deixe em branco para manter a senha armazenada", "passwordClear": "Limpar", "passwordKeepAction": "Manter", "passwordWillClear": "A senha armazenada será removida quando você salvar", + "apiKeyWillClear": "A chave API armazenada é removida quando você salvar", "category": "Categoria", "categoryHint": "Tags nos torrents o BookOrbit adiciona, então só age por conta própria.", "priority": "Prioridade", @@ -2871,6 +2974,7 @@ "allowPrivateAddress": "Permitir endereços privados", "allowPrivateAddressHint": "Necessário quando o cliente é executado na sua rede local ou na mesma máquina.", "passwordBrief": "Armazenado encriptado.", + "apiKeyBrief": "Encontrado no SABnzbd em Configuração > Geral. Criptografia armazenada.", "useHardlinksBrief": "Seeds sem usar o disco duas vezes. Faz uma cópia no sistemas de arquivos." }, "mappings": { @@ -2924,7 +3028,8 @@ "pathNotAbsolute": "Mapeamentos devem usar caminhos absolutos de ambos os lados", "nameRequired": "Dê um nome a esse cliente.", "urlRequired": "Digite o endereço que o BookOrbit deve alcançar este cliente.", - "mappingRequired": "Adicione pelo menos um mapeamento, para que o BookOrbit saiba de qual diretório ele pode importar." + "mappingRequired": "Adicione pelo menos um mapeamento, para que o BookOrbit saiba de qual diretório ele pode importar.", + "apiKeyRequired": "Digite a chave de API SABnzbd de Config > Geral." }, "encryptionKeyMissing": "BOOK_REQUEST_ENCRYPTION_KEY não está definido, então uma senha do cliente não pode ser salva. Gerar uma com: openssl rand -hex 32", "confirmDelete": { @@ -2942,10 +3047,15 @@ "body": "Pacotes do BookOrbit não possui fontes próprias, então uma pesquisa de solicitação não encontra nada até você adicionar um. Existem duas maneiras de entrar.", "bodyOneWay": "Pacotes do BookOrbit não são fontes próprias, então uma pesquisa não encontra nada até você adicionar um.", "responsibility": "O que você adiciona aos índices é de sua responsabilidade.", + "prowlarrTitle": "Conectar-se ao Prowlarr", + "prowlarrBody": "Gerenciar vários indexadores de torrent e Usenet através de uma conexão.", + "recommended": "Recomendado", "pluginTitle": "Instalar um plugin", "pluginBody": "Um arquivo que ensina ao BookOrbit como pesquisar um site específico. Você o fornece, e então preencha suas configurações.", "torznabTitle": "Adicionar indexador do Torznab", - "torznabBody": "Ponto para um Prowlarr, Jackett ou NZBHydra que você já executa. Um por feed." + "torznabBody": "Ponto para um Prowlarr, Jackett ou NZBHydra que você já executa. Um por feed.", + "builtInTitle": "Adicionar um indexador", + "builtInBody": "Ponto para a fonte Torznab ou Newznab que você já utiliza. Uma configuração por feed." }, "add": "Adicionar indexador", "edit": "Editar indexador", @@ -2964,6 +3074,18 @@ "deleted": "Fonte excluída", "unavailable": "Esta instalação não tem o \"{type}\" tipo de indexador. Altere o tipo ou exclua seu plugin e as configurações salvas.", "pluginFailed": "O plugin em \"{directory}\" não carregou: {reason}", + "sources": { + "title": "Fontes", + "hint": "Tudo o BookOrbit pode pesquisar, agrupado por conexão.", + "add": "Adicionar fonte", + "prowlarr": "Conectar-se ao Prowlarr", + "prowlarrHint": "Gerenciar vários indexadores de torrent e Usenet juntos.", + "direct": "Adicionar Torznab ou Newznab", + "directHint": "Conecte um feed compatível diretamente.", + "plugin": "Instalar um plugin", + "pluginHint": "Adicionar uma implementação de fonte especializada.", + "activeSummary": "{count, plural, one {# fonte ativa} other {# fontes ativas}}: {torrent} torrent, {usenet} Usenet, {direct} direto" + }, "network": { "title": "Rede avançada", "hint": "Só é necessário quando o caminho padrão para esta fonte não funciona. O que é permitido não altera: qualquer endereço alcançado ainda é verificado da mesma maneira.", @@ -2975,14 +3097,16 @@ "proxyBrief": "Um proxy http ou https para esta fonte. SOCKS não é suportado." }, "types": { - "torznab": "Torznab (Jackett, Prowlarr, NZBHydra)" + "torznab": "Torznab (Jackett, Prowlarr, NZBHydra)", + "newznab": "Newznab" }, "fields": { "name": "Nome", "type": "Tipo de indexador", "baseUrl": "URL base", "baseUrlHint": { - "torznab": "A URL do feed torznab sem a string de consulta. Jackett a mostra em cada indexador como \"Torznab Feed\"." + "torznab": "A URL do feed torznab sem a string de consulta. Jackett a mostra em cada indexador como \"Torznab Feed\".", + "newznab": "O URL do site Newznab ou ponto de extremidade da API, sem uma consulta de pesquisa." }, "credential": { "apiKey": "Chave API", @@ -3028,6 +3152,29 @@ "settings": { "restoreDefault": "Restaurar padrões" }, + "seeding": { + "applyTracker": "Aplicar metas de seeds no rastreador", + "applyTrackerBrief": "Quando um valor manual está em branco, use um objetivo válido relatado pelo rastreador. Quando esta opção estiver desligada, valores em branco usam os padrões de download do cliente. Valores manuais ainda se aplicam.", + "ratio": "Proporção de seeds", + "ratioBrief": "Um decimal positivo. O vazio herda do rastreador ou do cliente.", + "time": "Tempo da seed (minutos)", + "timeBrief": "Um número inteiro positivo. O vazio herda do rastreador ou do cliente.", + "clientSupport": "qBittorrent aceita a taxa e o tempo total de sementes. Apenas taxa de Deluge e Transmissão. Regras globais do cliente e o limite que for alcançado primeiro podem parar o seed, então esses valores não garantem que cada rastreador mínimo seja cumprido.", + "futureGrabs": "As alterações se aplicam a futuras capturas. Torrents existentes ou adotados podem manter limites específicos do cliente. Virar o fallback rastreador deixa o defeito ativo do cliente; não significa semeamento ilimitado.", + "reset": "Redefinir configurações de semeamento", + "summary": { + "title": "Resumo das políticas", + "ratio": "Proporção", + "time": "Tempo semeando", + "manual": "Manual: {value}", + "tracker": "Tracker fallback", + "client": "Padrão do cliente" + }, + "errors": { + "ratio": "Digite um número finito maior que zero, ou deixe em branco.", + "minutes": "Digite um número natural de 1 a 2.147.483,647 ou deixe em branco." + } + }, "confirmDelete": { "title": "Excluir esta fonte?", "description": "O endereço {name}, as configurações e as credenciais armazenadas são excluídas. Desative-o para parar de procurá-lo sem perdê-lo.", @@ -3054,7 +3201,8 @@ "builtIn": "Construído em", "plugin": "Plugin", "typeDescriptions": { - "torznab": "Seu próprio Jackett, Prowlarr ou NZBHydra. Usa categorias e objetivos de sementes." + "torznab": "Seu próprio Jackett, Prowlarr ou NZBHydra. Usa categorias e objetivos de sementes.", + "newznab": "Um indexador Usenet compatível com Newznab. Usa categorias e requer uma chave de API." }, "plugins": { "title": "Plugins", @@ -3082,6 +3230,25 @@ "usedBy": "{count, plural, one {usado pela fonte #} other {usado por # sources}}", "unused": "nenhuma fonte o utiliza ainda", "update": "Atualizar plugins", + "checkUpdates": "Verificar atualizações", + "updateCheckComplete": "Verificação de atualização do plugin concluída.", + "updateCheckFailed": "Não foi possível verificar se há atualizações para os plugins.", + "updateInspectFailed": "Não foi possível verificar a atualização do plugin publicado.", + "reviewUpdate": "Avaliação atualizada", + "updated": "Atualizado {label} para {version}.", + "autoUpdate": "Instalar atualizações assinadas automaticamente", + "autoUpdateFailed": "Não foi possível alterar as atualizações automáticas para este plugin.", + "installedVersion": "Versão instalada", + "updateChannel": "Canal de atualização assinado", + "signatureVerified": "A fonte baixada corresponde à assinatura Ed25519 do editor.", + "updateStates": { + "unsupported": "Atualizações manuais", + "unchecked": "Não verificado ainda", + "current": "Atualizado", + "available": "A versão {version} está disponível", + "custom": "Compilação personalizada", + "failed": "Falha ao procurar por atualizações" + }, "wrongType": "Esse arquivo é o plugin {found}, e não {expected}.", "replaceTitle": "Substituir este plugin?", "replace": "Substituir plugin", @@ -3104,6 +3271,61 @@ }, "posture": "BookOrbit não fornece ou endossa fontes de indexação. Cada fonte aqui é aquela que você configurou, e você é responsável pelo que você procura e baixa por meio dela." }, + "managers": { + "add": "Adicionar Prowlarr", + "loading": "Carregando conexões do Prowlarr...", + "managedSources": "{count, plural, one {# indexador gerenciado} other {# indexadores gerenciados}}", + "protocol": { + "torrent": "Torrent", + "usenet": "Usenet" + }, + "saved": "Configurações do Prowlarr salvas", + "deleted": "Prowlarr removido", + "synced": "Fontes do Prowlarr sincronizadas", + "test": "Testar a conexão", + "sync": "Sincronizar", + "testOk": "Conectado ao Prowlarr {version}. Encontrado {count, plural, one {# source} other {# sources}}.", + "unavailable": "Indisponível", + "priority": "Prioridade do Prowlarr {priority}", + "toggleSource": "Pesquisar com {name}", + "changeColor": "Mude a cor para {name}", + "sourceColor": "Cor da fonte", + "sourceColorHint": "Marcas liberadas por {name} em todo o BookOrbit.", + "noSources": "Nenhum torrent compatível ou indexadores do Usenet foram descobertos. Sincronizar após adicionar um no Prowlarr.", + "unknown": "Desconhecido", + "editorDescription": "Configurações de conexão e de origem de sincronização para Prowlarr.", + "confirmDelete": "Remover esta conexão com Prowlarr?", + "deleteConsequence": "A conexão, chave de API criptografada e todas as fontes sincronizadas são excluídas. Os downloads que já estão em andamento não são removidos.", + "fields": { + "name": "Nome", + "color": "Cor da conexão", + "colorHint": "Marca esta conexão Prowlarr aqui. Cada indexador gerenciado tem sua própria cor de lançamento.", + "baseUrl": "URL base", + "apiKey": "Chave API", + "apiKeyHint": "Encontrado no Prowlarr em Configurações > Geral > Segurança. Armazenado criptografado.", + "syncNew": "Ativar fontes recém-descobertas", + "syncNewHint": "Novos indexadores do Prowlarr são pesquisáveis imediatamente. Os recursos que você desativa aqui ficam desligados após sincronizações posteriores.", + "autoExpand": "Tentar novamente sem filtros de categoria", + "autoExpandHint": "Quando um indexador responder com sucesso sem resultados, tente novamente sem filtro de categoria de livro do BookOrbit.", + "inheritSeedLimits": "Usar limites de seeds do Prowlarr", + "inheritSeedLimitsHint": "Aplicar a taxa de seed configurada de cada indexador de torrent e seed para downloads futuros quando não existir nenhuma substituição do BookOrbit.", + "perIndexerTimeout": "Tempo limite do indexador (segundos)", + "perIndexerTimeoutHint": "Quanto tempo uma fonte sincronizada pode levar. Indexadores com suporte ao FlareSolver lentos podem precisar de mais tempo.", + "overallBudget": "Orçamento do Prowlarr (segundos)", + "overallBudgetHint": "Tempo total decorrido máximo compartilhado por todas as fontes desta conexão do Prowlarr durante uma pesquisa." + }, + "errors": { + "load": "Não foi possível carregar os gerentes de indexação", + "nameTaken": "Uma conexão com o Prowlarr já existe com esse nome", + "urlPrivate": "Esse endereço está em uma rede privada ou local. Ative \"Permitir endereços privados\" se o Prowlarr estiver em execução nela.", + "required": "Digite um nome, uma URL base e chave da API.", + "save": "Não foi possível salvar a conexão Prowlarr", + "delete": "Não foi possível remover a conexão do Prowlarr", + "test": "Não foi possível acessar o Prowlarr", + "sync": "Não foi possível sincronizar as fontes Prowlarr", + "source": "Não foi possível alterar essa fonte" + } + }, "automation": { "title": "Automação", "pipeline": "Quando um download termina, ele passa pela Doca do Livro, onde seu título e autor são lidos para que o arquivo possa ser nomeado e arquivado corretamente, e depois é movido para a biblioteca de destino do pedido por conta própria. Se a verificação de importação estiver ativada e o arquivo não corresponder ao que foi solicitado.", @@ -3132,6 +3354,7 @@ "autoGrabDisabled": "Downloads automáticos estão desligados", "minScore": "Pontuação mínima da versão", "minScoreHint": "Releases com pontuação abaixo deste limite nunca são baixados automaticamente. As pontuações vão até 100, sendo determinadas principalmente pela correspondência exata de título e autor, seguidas por formato, tamanho do arquivo, seeders e prioridade da fonte. Se nenhum release atingir a pontuação necessária, a solicitação aguardará uma seleção manual, indicando o motivo da interrupção.", + "minScoreHintV2": "Uma versão de pontuação abaixo disso nunca é baixada automaticamente. Pontuações executam até 100. A relevância do título e do autor contribui bastante, seguida de formato e tamanho plausível de arquivo, com saúde do swarm e freeleech usados quando uma fonte fornece eles. Se nada marcar alto o suficiente, o pedido espera que alguém escolha um manualmente e diga porque parou.", "autoRetry": "Tente o próximo lançamento depois de uma falha", "autoRetryHint": "Quando um download automático falha, a próxima melhor opção é tentada em vez de cancelar a solicitação. Isso abrange fontes que se recusam a transferir o arquivo e downloads interrompidos pelo caminho. Aplica-se apenas a releases escolhidos pelo próprio BookOrbit: itens selecionados manualmente por um aprovador permanecem em estado de falha aguardando ação do usuário.", "maxAttempts": "Tentativas por pedido", @@ -3176,6 +3399,9 @@ }, "profiles": { "title": "Perfis da versão", + "effectiveRule": "Regra de download automático: primeiro nível de correspondência, depois pontuação mais alta (mínimo {score}).", + "summary": "Lançamentos fora do perfil permanecem disponíveis para seleção manual. Sem níveis, libera a classificação apenas por pontuação.", + "howProfiles": "Como funcionam os perfis de lançamento", "hint": "A edição desejada, em ordem de preferência. Os releases são avaliados de cima para baixo e enquadrados no primeiro nível correspondente. O download automático seleciona apenas a partir destes níveis: releases que não atendem a nenhum critério nunca são baixados automaticamente, embora continuem visíveis no seletor para envio manual. Se deixar um tipo de mídia vazio, nenhum filtro ou recusa será aplicado, e os releases serão ordenados exclusivamente pela pontuação.", "bitrateNote": "Um limite mínimo de bitrate rejeita releases que declarem um valor inferior. A maioria das fontes raramente informa a taxa de bits de seus releases, e itens sem essa medição não são recusados; portanto, este filtro restringe menos do que aparenta.", "empty": "Sem perfil. Lançamentos para esse meio são classificados apenas por pontuação.", @@ -3190,6 +3416,10 @@ "anyLayout": "Qualquer", "minBitrate": "Min kbps", "minSeeders": "Min seeders", + "torrentConditions": "Condições do torrent", + "nonTorrentConditions": "As condições para semear, freeleech e VIP não se aplicam às fontes selecionadas.", + "incompatibleTorrentConditions": "Este nível não torrent ainda salvou as condições dos torrents. Eles podem ser ignorados ou impedir o nível de correspondência.", + "removeTorrentConditions": "Remover condições do torrent", "channels": "Canais", "anyChannels": "Qualquer", "mono": "Mono", @@ -3215,6 +3445,7 @@ "connection": "Conexão", "search": "Pronto para buscar", "access": "Acesso", + "seeding": "Semeando", "availability": "Disponibilidade", "behaviour": "Comportamento" }, @@ -3226,7 +3457,9 @@ "clientTypeDescriptions": { "qbittorrent": "Seu próprio qBittorrent. Precisa de um endereço e uma conta.", "transmission": "Sua própria transmissão. Ela não tem categorias, então a categoria se torna uma subpasta de seu diretório de download.", - "deluge": "Seu próprio Deluge. Faça login com a senha da interface da web; a categoria precisa do plugin de Etiqueta ligado." + "deluge": "Seu próprio Deluge. Faça login com a senha da interface da web; a categoria precisa do plugin de Etiqueta ligado.", + "nzbget": "Seu próprio NZBGet. BookOrbit envia arquivos NZB sobre sua API JSON-RPC.", + "sabnzbd": "Seu próprio SABnzbd. BookOrbit envia arquivos NZB usando sua chave de API." }, "searchHealth": { "failingOnce": "A última pesquisa falhou", @@ -3403,11 +3636,12 @@ "trend": "Tendência de leitura diária", "emptyTitle": "Nenhuma atividade de leitura neste período", "noData": "Nenhum dado de leitura registrado para este período.", - "sessionCount": "{count, plural, one {# sessão} many {# sessões} other {# sessões}}", + "sessionCount": "{count, plural, one {# sessão} other {# sessões}}", "sourceNames": { "web": "Leitor web", - "ios": "iOS app", + "ios": "iOS App", "watchos": "Apple Watch", + "android": "Android App", "koreader": "KOReader", "manual": "Manual", "kobo": "Kobo", @@ -3485,6 +3719,7 @@ "presetClearAll": "Limpar Tudo", "permissionGroups": { "content": "Conteúdo", + "podcasts": "Podcasts", "devicesAccess": "Dispositivos e Acesso", "email": "E-mail", "administration": "Administração", @@ -4065,6 +4300,8 @@ "User": "Usuário", "Library": "Biblioteca", "Book": "Livro", + "Podcast": "Podcast", + "PodcastEpisode": "Episódios do podcast", "Collection": "Coleção", "SmartScope": "Escopo inteligente", "BookDockFile": "Arquivo de dock", @@ -4128,6 +4365,18 @@ "LibraryAccessRevoke": "Revogar acesso à biblioteca", "LibraryWriteMetadataToFiles": "Gravar metadados nos arquivos", "LibraryBulkRename": "Renomear arquivos da biblioteca", + "LibraryRecomputeAddedAt": "Recalcular data de adição", + "PodcastCreate": "Criar podcast", + "PodcastUpdate": "Atualizar podcast", + "PodcastArchive": "Arquivar podcast", + "PodcastRestore": "Restaurar podcast", + "PodcastPurge": "Limpar podcast", + "PodcastMerge": "Mesclar podcasts", + "PodcastDownload": "Baixar episódio de podcast", + "PodcastDownloadRemove": "Remover download de podcast", + "PodcastRetentionUpdate": "Atualizar retenção de podcast", + "PodcastOpmlImport": "Importar podcast OPML", + "PodcastOpmlExport": "Exportar podcast OPML", "BookUpload": "Upload de livros", "BookMetadataUpdate": "Atualizar metadados do livro", "BookMetadataLocksUpdate": "Atualizar bloqueios de metadados", @@ -4535,6 +4784,10 @@ "actions": { "read": "Ler", "listen": "Ouvir", + "startReading": "Começar a ler", + "continueReading": "Continuar lendo", + "startListening": "Começar a ouvir", + "continueListening": "Continuar ouvindo", "peek": "Espiar", "quickView": "Visualização Rápida", "details": "Detalhes", @@ -4548,7 +4801,8 @@ "setStatus": "Definir Status", "sendViaEmail": "Enviar por E-mail", "rate": "Avaliar {star}", - "openAs": "Abrir como {format}" + "openAs": "Abrir como {format}", + "openReadAlong": "Abrir leitura ao longo do EPUB" }, "readStatus": { "unread": "Não Lido", @@ -4578,6 +4832,7 @@ "ascending": "Crescente", "descending": "Decrescente", "fields": { + "relevance": "Relevância", "author": "Autor", "title": "Título", "series": "Séries", @@ -4993,6 +5248,28 @@ "untitled": "Sem título", "metadataScore": "Pontuação de Metadados", "primaryFormat": "Formato primário", + "readAloudSync": { + "title": "Sincronização de progresso em voz alta", + "state": { + "enabled": "Habilitado", + "disabled": "Desabilitado", + "unavailable": "Indisponível", + "epubCopiesOnly": "Somente cópias EPUB" + }, + "enabledDescription": "As posições em Audiobook, leitor web, Kobo e KOReader permanecem em sincronia.", + "disabledDescription": "Cada formato mantém a sua própria posição de leitura.", + "epubCopiesDescription": "O progresso de leitura no Web reader, Kobo e KOReader permanece sincronizado entre as cópias em EPUB. Adicione os arquivos de audiolivro correspondentes para sincronizar o audiolivro também.", + "reason": { + "no_media_overlay_epub": "É necessária uma leitura ao longo do EPUB com sobreposições de mídia.", + "no_audio_files": "Correspondência de arquivos audioobook autônomos são necessárias.", + "missing_duration": "Os metadados da duração do áudio estão incompletos.", + "durationMismatch": "As durações não combinam o suficiente: audioobook {audio}, leitura ao longo do EPUB {overlay}." + }, + "enable": "Habilitar", + "disable": "Desativar", + "saving": "Salvando...", + "saveFailed": "Não foi possível atualizar a sincronização de progresso de leitura alta." + }, "openIn": "Abrir em {provider}", "showLess": "Mostrar menos", "showMore": "Mostrar mais", @@ -5785,7 +6062,7 @@ "table": { "title": "Sessões", "sourceWeb": "Web", - "sourceIos": "iOS app", + "sourceIos": "iOS App", "sourceWatchos": "Apple Watch", "sourceManual": "Manual", "colDate": "Data", @@ -5924,6 +6201,7 @@ "unread": "Não Lido" }, "series": { + "seriesRow": "Nº da Série", "bookCount": "{count, plural, =0 {(nenhum livro)} one {(# livro)} many {(# livros)} other {(# livros)}}", "readOfCount": "{read} de {total} lidos" }, @@ -6650,7 +6928,10 @@ "grab": "Baixar versão", "viewFiles": "Visualizar arquivos", "hideFiles": "Ocultar arquivos", + "viewDetails": "Sobre o conteúdo", + "hideDetails": "Ocultar detalhes", "inspectingFiles": "Lendo a lista de arquivos de lançamento...", + "inspectingNzb": "Buscando e validando o NZB...", "inspectingShort": "Verificando os arquivos...", "inspectionFailed": "A lista de arquivos desta versão não pôde ser lida.", "manifest": { @@ -6660,6 +6941,7 @@ "multipleBooks": "Este release contém {count} livros separados. Após o download, você escolherá qual deles importar.", "multiPartBook": "{count, plural, one {Este release é um livro composto por # arquivo.} other {Este release é um livro composto por # arquivos, importados juntos como um único livro.}}", "metadataUnavailable": "Este é um link magnet. Sua lista de arquivos está indisponível até um cliente torrent buscar os metadados do enxame.", + "usenetMetadataUnavailable": "Esta é uma versão do Usenet. Sua lista final de arquivos não está disponível até que NZBGet downloads e pós-processo.", "bookFile": "Arquivos do livro", "extraFile": "Extra", "truncated": "Mostrando {shown} de arquivos {total}.", @@ -6674,6 +6956,7 @@ } }, "manual": "Colar um link", + "manualTorrent": "Usar magnet ou .torrent em vez disso", "indexer": "Indexador", "size": "Tamanho", "seeders": "Seeders", @@ -6700,6 +6983,27 @@ "vipOnly": "Somente VIP", "hideVipOnly": "Ocultar apenas VIP", "noneMatchedProfile": "Nenhuma versão aqui corresponde ao seu perfil para este meio, então nenhuma delas será baixada automaticamente. Você ainda pode enviar um manualmente. Para ampliá-lo, adicione um nível com menos condições abaixo das que você tem.", + "profileMismatch": { + "summary": "{count, plural, one {A versão # foi encontrada, mas o download automático pulará ela porque ela não corresponde a nenhum nível de perfil {medium}.} other {# lançamentos foram encontrados, mas o download automático irá ignorá-los porque nenhum combina com um nível do perfil {medium}.}} A pontuação da partida e as regras do perfil são verificações separadas. Você ainda pode clicar em Enviar.", + "review": "Revisar perfil {medium}", + "row": "O download automático ignorará isso. Nível mais próximo: {tier}. {reasons}", + "failures": { + "formatUnknown": "{source} não definiu um formato; este nível requer {expected}.", + "format": "Formato é {actual}; este nível requer {expected}.", + "fileLayoutUnknown": "{source} não definiu um formato; este nível requer {expected}.", + "fileLayout": "O layout do arquivo é {actual}; este nível requer {expected}.", + "bitrate": "Bitrate é {actual} kbps; este nível requer pelo menos {expected} kbps.", + "channels": "O áudio é {actual}; este nível requer {expected}.", + "languageUnknown": "{source} não indicou uma linguagem; este nível requer {expected}.", + "language": "O idioma é {actual}; esse nível requer {expected}.", + "source": "Esta fonte não está incluída no nível.", + "seeders": "Esta versão tem {actual} seeders; este nível requer pelo menos {expected}.", + "sizeUnknown": "{source} não indicou um tamanho; este nível permite até {expected}.", + "size": "O tamanho é {actual}; esse nível permite até {expected}.", + "freeleech": "Este nível requer freeleech.", + "vipOnly": "Este nível exclui os lançamentos apenas VIP." + } + }, "alreadyGrabbed": "Já encontrado", "freeleechLabel": "FreeLeech", "published": "Publicado", @@ -6740,6 +7044,7 @@ "onlyBestMatch": "Essa é a única versão correspondida.", "tiedWithBest": "{count, plural, one {# outro release obteve a mesma pontuação} other {# outros releases obtiveram a mesma pontuação}}", "inspectionFailedHint": "Não foi enviado para um cliente de download. Tente novamente ou use Colar um link em vez disso.", + "inspectionFailedHintGeneric": "Não foi enviado para um cliente de download. Tente novamente ou escolha outra versão.", "mediumUncovered": "Nenhuma fonte carrega este tipo de livro.", "mediumUncoveredHint": "Nenhum dos seus indexadores habilitados cobre. Adicione um que faça ou cole um link você mesmo.", "noSourcesConfigured": "Ainda não há fontes de pesquisa configuradas.", @@ -6751,6 +7056,7 @@ "reviewSources": "Revisar fontes", "protocol": { "torrent": "Torrent", + "usenet": "Usenet", "direct": "Download direto", "directPill": "Direto" } @@ -6984,6 +7290,7 @@ }, "createDialog": { "title": "Nova Coleção", + "podcastTitle": "Nova coleção de Podcast", "namePlaceholder": "ex: Favoritos" }, "editDialog": { @@ -7088,6 +7395,10 @@ }, "support": "Apoie o BookOrbit", "supportAria": "Apoie o BookOrbit no Ko-fi", + "appLinks": { + "ios": "Obter o app para iOS", + "android": "Aplicativo para Android em breve" + }, "sectionHeader": { "add": "Adicionar", "showAll": "Mostrar tudo", @@ -7110,16 +7421,28 @@ "seeAllSmartScopes": "Ver todos os escopos inteligentes ({count})", "seeAllCollections": "Ver todas as coleções ({count})", "podcasts": "Podcasts", - "newPodcastLibrary": "New Podcast Library", - "noPodcastLibraries": "No podcast libraries yet", - "filterPodcastLibraries": "Filter podcast libraries", - "filterPodcastLibrariesPlaceholder": "Filter podcast libraries...", - "seeAllPodcastLibraries": "See all podcast libraries ({count})", - "queue": "Queue", + "newPodcastLibrary": "Nova Biblioteca de Podcast", + "noPodcastLibraries": "Ainda não há bibliotecas de podcast", + "filterPodcastLibraries": "Filtrar bibliotecas de podcast", + "filterPodcastLibrariesPlaceholder": "Filtrar bibliotecas de podcast...", + "seeAllPodcastLibraries": "Ver todas as bibliotecas de podcast ({count})", + "podcastScopes": "Escopos de Podcast", + "newPodcastScope": "Novo SmartScope", + "noPodcastScopes": "Nenhum escopo de podcast ainda", + "filterPodcastScopes": "Filtrar escopos de podcast", + "filterPodcastScopesPlaceholder": "Filtrar escopos de podcast...", + "seeAllPodcastScopes": "Ver todos os escopos de podcast ({count})", + "podcastCollections": "Coleções de Podcast", + "newPodcastCollection": "Nova coleção de Podcast", + "noPodcastCollections": "Nenhuma coleção de podcast ainda", + "filterPodcastCollections": "Filtrar coleções de podcast", + "filterPodcastCollectionsPlaceholder": "Filtrar coleções de podcast...", + "seeAllPodcastCollections": "Ver todas as coleções de podcast ({count})", + "queue": "Fila", "mode": { - "books": "Books", + "books": "Livros", "podcasts": "Podcasts", - "switcherAria": "Switch between books and podcasts" + "switcherAria": "Alternar entre livros e podcasts" }, "updateAvailable": "Atualizar {version}", "updateTooltip": "Atualização para {version} disponível", @@ -7134,7 +7457,15 @@ "dropped": "{name} caiu na posição {position} de {total}", "cancelled": "Reordenação cancelada. {name} retornou à posição {position} de {total}.", "filteredHint": "Limpar o filtro para reordenar" - } + }, + "podcastImportProgress": "{processed} / {total} arquivos", + "podcastImportCounting": "Contando arquivos…", + "playlists": "Playlists inteligentes", + "newPlaylist": "Nova playlist inteligente", + "noPlaylists": "Ainda não há playlists inteligentes", + "filterPlaylists": "Filtrar playlists inteligentes", + "filterPlaylistsPlaceholder": "Filtrar playlists inteligentes...", + "seeAllPlaylists": "Ver todas as playlists inteligentes ({count})" }, "selectionActionBar": { "setReadingStatus": "Definir status de leitura", @@ -7175,8 +7506,8 @@ "columnVisibilityHint": "Use o painel de visibilidade de colunas no cabeçalho da tabela para mostrar ou ocultar colunas.", "columnVisibilityMobileHint": "A visibilidade das colunas pode ser gerenciada no cabeçalho da tabela.", "searchPlaceholder": "Buscar título, autor, série, narrador...", - "clearSearch": "Clear search", - "closeSearch": "Close search", + "clearSearch": "Limpar busca", + "closeSearch": "Fechar busca", "mobileSearch": { "description": "Buscar itens por título, autor, série ou narrador.", "done": "Concluído" @@ -7191,7 +7522,7 @@ "display": "Exibição", "coverSize": "Tamanho da capa", "gridGap": "Espaçamento da grade", - "pixelValue": "{value} pixels", + "pixelValue": "{value} píxeis", "showJumpRails": "Mostrar trilhos de salto", "columnsHint": "Use o painel de visibilidade de colunas no cabeçalho da tabela para mostrar ou ocultar colunas.", "coverShape": "Formato da capa", @@ -7229,8 +7560,8 @@ }, "media": { "volume": "Volume", - "mute": "Mute", - "unmute": "Unmute" + "mute": "Mudo", + "unmute": "Desmutar" }, "themePicker": { "light": "Claro", @@ -7258,7 +7589,11 @@ "sidebar": { "title": "Barra lateral", "mobileDescription": "Exibe a barra lateral em dispositivos móveis.", - "toggle": "Alternar Barra Lateral" + "toggle": "Alternar Barra Lateral", + "collapse": "Diminuir a barra lateral", + "expand": "Expandir barra lateral", + "open": "Abrir barra lateral", + "close": "Fechar barra lateral" }, "chipInput": { "typeAndEnter": "Digite e pressione Enter para adicionar", @@ -7277,7 +7612,7 @@ "custom": "Ordem personalizada", "name": "Nome", "bookCount": "Contagem de livros", - "showCount": "Show count" + "showCount": "Mostrar contagem" }, "ascending": "Crescente", "descending": "Decrescente", @@ -7286,11 +7621,33 @@ "noMatches": "Sem resultados", "noMatchesHint": "Tente um termo de pesquisa diferente.", "bookCount": "Livros: {count}", - "showCount": "Shows: {count}", + "showCount": "Mostrar {count}", "librariesEmptyHint": "Criar uma biblioteca para começar a adicionar livros.", - "podcastLibrariesEmptyHint": "Create a podcast library to start following shows.", + "podcastLibrariesEmptyHint": "Crie uma biblioteca de podcast para começar a seguir programas.", "smartScopesEmptyHint": "Escopos inteligentes salvam um conjunto de filtros que você usa com frequência.", "collectionsEmptyHint": "Coleções agrupam livros que você escolhe à mão." + }, + "legalNotices": { + "about": "Sobre o BookOrbit", + "trigger": "Avisos legais", + "title": "Sobre o BookOrbit", + "description": "Atribuição BookOrbit, licenciamento e código-fonte.", + "poweredBy": "Desenvolvido por BookOrbit", + "originalDevelopment": "Este software contém material originalmente desenvolvido como BookOrbit.", + "copyright": "Copyright (C) 2025-2026 neon.", + "contributors": "Direitos autorais adicionais são mantidos pelos respectivos colaboradores da BookOrbit.", + "licenseSummary": "Licenciado nos termos da GNU Affero General Public License, versão 3 apenas, com termos adicionais. Este software é fornecido sem garantia. Você pode redistribuir e modificá-lo sob esses termos.", + "sourceCode": "Código fonte", + "license": "Licença AGPLv3", + "additionalTerms": "Termos adicionais" + }, + "confirmDialog": { + "typeToConfirm": "Digite “{phrase}” para confirmar" + }, + "formSheet": { + "discardTitle": "Descartar alterações?", + "discardDescription": "Suas alterações não salvas serão perdidas.", + "discardConfirm": "Descartar" } }, "customIcons": { @@ -7338,7 +7695,7 @@ "empty": { "continueReading": "Nenhum livro em andamento ainda. Comece a ler um para vê-lo aqui.", "continueListening": "Nenhum audiolivro em andamento ainda. Comece a ouvir um para vê-lo aqui.", - "continuePodcasts": "No podcast episodes in progress yet. Start one to see it here.", + "continuePodcasts": "Nenhum episódio de podcast em progresso ainda. Inicie um para vê-lo aqui.", "wantToRead": "Nenhum livro marcado como quero ler ainda.", "upNextInSeries": "Nenhuma escolha para a próxima série ainda. Termine um volume para sugerir o próximo.", "recentlyAdded": "Nenhum livro em sua biblioteca ainda.", @@ -7370,7 +7727,7 @@ "recentlyAdded": "Adicionados Recentemente", "continueReading": "Continuar lendo", "continueListening": "Continuar ouvindo", - "continuePodcasts": "Continue Podcasts", + "continuePodcasts": "Continuar Podcasts", "wantToRead": "Quero Ler", "upNextInSeries": "A Seguir na série", "random": "Descubra algo novo", @@ -7701,14 +8058,14 @@ } }, "errors": { - "network": "Could not reach BookOrbit. Check your connection, then try again.", + "network": "Não foi possível acessar o BookOrbit. Verifique sua conexão, e tente novamente.", "codes": { - "PODCAST_LOCAL_NO_REFRESH": "This show has no feed, so there is nothing to refresh.", - "PODCAST_LOCAL_NO_DOWNLOAD": "This episode is one of your own files, so there is nothing to download. Your copy is already the only one.", - "PODCAST_LOCAL_FILE_NOT_REMOVABLE": "This episode is one of your own files, so BookOrbit will not delete it. Remove it from the folder yourself.", - "PODCAST_LOCAL_MEDIA_MISSING": "The only copy of this episode is no longer on disk, so it cannot be played.", - "PODCAST_LOCAL_FOLDER_EMPTY": "This folder holds no audio BookOrbit can import, so it cannot become a show.", - "PODCAST_STORAGE_FULL": "This podcast library is out of storage. Free some space or raise its quota, then try again. Files that belong to local shows are never removed to make room." + "PODCAST_LOCAL_NO_REFRESH": "Este programa não tem nenhum feed, então não há nada para atualizar.", + "PODCAST_LOCAL_NO_DOWNLOAD": "Este episódio é um de seus próprios arquivos, então não há nada para baixar. Sua cópia já é a única.", + "PODCAST_LOCAL_FILE_NOT_REMOVABLE": "Este episódio é um dos seus próprios arquivos, por isso o BookOrbit não vai excluí-lo. Remova da pasta você mesmo.", + "PODCAST_LOCAL_MEDIA_MISSING": "A única cópia deste episódio não está mais no disco, então não pode ser reproduzido.", + "PODCAST_LOCAL_FOLDER_EMPTY": "Esta pasta não mantém nenhum audio que o BookOrbit pode importar, por isso não pode se tornar um programa.", + "PODCAST_STORAGE_FULL": "Esta biblioteca de podcast está sem espaço. Libere algum espaço ou aumente sua cota, e então tente novamente. Arquivos que pertencem a séries locais nunca são removidos para liberar espaço." } }, "hardcover": { @@ -7997,7 +8354,16 @@ "noneAdded": "Nenhuma pasta adicionada ainda", "runPrescanHint": "Execute uma verificação prévia (prescan) para validar os caminhos antes de salvar.", "scanning": "Escaneando…", - "prescan": "Verificação prévia" + "prescan": "Verificação prévia", + "local": { + "title": "Pastas existentes de podcast", + "optional": "Opcional", + "description": "Pastas que você já mantém podcasts. O BookOrbit lê elas onde elas estão e nunca renomeia, move ou exclui nada dentro delas.", + "addTitle": "Adicionar uma pasta de podcast existente", + "addDescription": "Cada pasta diretamente dentro se torna uma série.", + "add": "Adicionar outra pasta", + "remove": "Remover {folder}" + } }, "scanner": { "scanMode": { @@ -8014,6 +8380,49 @@ "hint": "Trata cada arquivo como um livro individual. Mais adequado para bibliotecas com um formato por título. Evite se seus audiolivros abrangerem vários arquivos." } }, + "addedAt": { + "title": "Data de Adição", + "hint": "Escolha o que \"data adicionada\" reflete a um livro. Isto se aplica a livros importados de agora em diante.", + "options": { + "imported": { + "title": "Quando importado", + "hint": "A data em que o BookOrbit importou o livro pela primeira vez. Este é o padrão." + }, + "file_modified": { + "title": "Tempo de modificação do arquivo", + "hint": "O último tempo de modificação do arquivo (mtime), muitas vezes preservados quando os arquivos são copiados." + }, + "file_created": { + "title": "Data da criação", + "hint": "Quando o arquivo chegou pela primeira vez no disco (hora de criação). Volta ao tempo modificado em sistemas de arquivos que não registram o tempo de criação." + } + }, + "recompute": "Recalcular agora", + "recomputing": "Recalculando...", + "recomputeHint": "Atualizar a data adicionada para livros existentes usando esta configuração.", + "recomputeSaveFirst": "Salve suas alterações primeiro e depois recuse os livros existentes.", + "backgroundConfirm": "Recalcular datas para livros existentes? Isso é executado em segundo plano e você pode fechar este editor. Livros com arquivos ilegíveis mantêm a data atual deles.", + "progressSummary": "Processado {processed} de {total}: {updated} atualizado, {unchanged} inalterado, {skipped} ignorado, {failed} falhou.", + "failedBooksHint": "Os livros que falharam mantiveram suas datas. Verifique o acesso ao arquivo, e então execute novamente para tentar novamente.", + "jobStatus": { + "running": "Recalculando datas em segundo plano.", + "completed": "Data de recálculo terminada.", + "failed": "Recalcular parou antes de finalizar. As alterações concluídas foram mantidas; você pode executá-lo novamente com segurança." + }, + "errors": { + "sourceImported": "Salve um arquivo de data e hora antes de recalcular datas.", + "alreadyRunning": "Uma recálculo já está sendo executado para esta biblioteca.", + "busy": "Outras recontagens estão em execução. Tente novamente em breve.", + "requestFailed": "Não foi possível alcançar o serviço de recálculo. Feche e reabra este editor para verificar o seu status.", + "interrupted": "O status da tarefa não está mais disponível. Ele pode ter sido interrompido por uma reinicialização do servidor. Você pode executar novamente com segurança." + }, + "failureSample": "Livro {bookId}: {reason}", + "failureReasons": { + "file_unavailable": "Um arquivo de conteúdo não pôde ser lido.", + "unsafe_path": "Um arquivo de conteúdo está fora da sua pasta de biblioteca permitida.", + "database_error": "A atualização do banco de dados falhou." + } + }, "allowedFormats": { "title": "Formatos permitidos", "allowAll": "Permitir todos", @@ -8735,6 +9144,12 @@ "keyboardShortcutsHint": "Atalhos de teclado (?)", "enterFullscreen": "Entrar em tela cheia", "exitFullscreen": "Sair da tela cheia", + "narrationPlaying": "Reproduzindo Narração", + "ttsPlaying": "TTS reproduzindo", + "listenWithNarrationShort": "Ouvir (narração)", + "listen": "Ouvir", + "listenWithNarration": "Ouvir com narração", + "listenWithTts": "Ouvir com TTS", "footerMode": { "pageProgress": "Informação do rodapé: página + progresso", "sessionTimeLeft": "Informação do rodapé: sessão de leitura + tempo restante", @@ -9013,6 +9428,19 @@ "sheet": { "expand": "Expandir painel", "collapse": "Colapsar painel" + }, + "narration": { + "fallbackTitle": "Narração", + "meta": "Narração de áudio - {speed}x", + "openControls": "Abrir controles de narração", + "previousSentence": "Frase anterior", + "nextSentence": "Próxima frase", + "play": "Reproduzir narração", + "pause": "Pausar narração", + "showControls": "Mostrar controles", + "hideControls": "Ocultar controles", + "stop": "Parar narração", + "error": "Erro de reprodução de Narração" } }, "scanner": { @@ -9185,6 +9613,7 @@ }, "createDialog": { "title": "Novo SmartScope", + "podcastTitle": "Nova playlist inteligente", "createFailed": "Falha ao criar o SmartScope" }, "saveAsDialog": { @@ -9212,6 +9641,14 @@ "noGenres": "Sem Gêneros", "epubOnly": "Apenas EPUB" } + }, + "errors": { + "load": "Falha ao carregar seus escopos inteligentes", + "loadEpisodes": "Falha ao carregar episódios para esta playlist inteligente", + "save": "Falha ao salvar o escopo inteligente", + "delete": "Falha ao excluir o escopo inteligente", + "reorder": "Falha ao reordenar escopos inteligentes", + "koboSync": "Falha ao atualizar a sincronização Kobo para este escopo inteligente" } }, "statistics": { @@ -9391,7 +9828,8 @@ "title": "Onde Você Lê", "emptyTitle": "Nenhuma atividade de leitura ainda", "emptyDescription": "Leia na web, KOReader ou Kobo para ver sua distribuição de fontes.", - "emptyDescriptionWithAppleClients": "Read on the web, iOS app, Apple Watch, KOReader, or Kobo to see your source split." + "emptyDescriptionWithAppleClients": "Leia no web, aplicativo iOS, Apple Watch, KOReader ou Kobo para ver sua divisão de origem.", + "emptyDescriptionWithNativeClients": "Leia no web, aplicativo para iOS, aplicativo para Android, Apple Watch, KOReader ou Kobo para ver sua divisão de origem." } } }, @@ -9573,7 +10011,16 @@ "isbn": "ISBN", "formats": "Formatos", "collections": "Coleções", - "added": "Adicionado" + "added": "Adicionado", + "size": "Tamanho", + "metadata": "Metadados", + "reading": "Lendo", + "folder": "Pasta", + "noIsbn": "Não definido", + "notStarted": "Não iniciado", + "outOfHundred": "/100", + "percentRead": "{percent} lido", + "fileCount": "{count, plural, one {# arquivo} other {# arquivos}}" }, "initial": { "title": "Localizar livros duplicados", @@ -9593,11 +10040,101 @@ "status": "Não foi possível carregar o progresso do escaneamento.", "scan": "A verificação de duplicada falhou. Tente executar novamente.", "results": "Não foi possível carregar grupos duplicados.", - "delete": "Não foi possível excluir os livros duplicados selecionados." + "delete": "Não foi possível excluir os livros duplicados selecionados.", + "dismiss": "Não foi possível descartar esse grupo.", + "restore": "Não foi possível restaurar esse pareamento." }, "pagination": { "label": "Páginas de grupos duplicados", "page": "Página {page} de {total}" + }, + "similarityOption": "{percent} e acima", + "scannedBooks": "{count} livros · verificados {when}", + "scanProgress": "{processed} de {total} livros", + "recommended": "Recomendado", + "keeping": "Mantendo", + "willDelete": "Apagar", + "keepCopy": "Manter {name}", + "selectGroup": "Selecionar {title}", + "selectAll": "Selecione todos os grupos nesta página", + "compareCopies": "Comparar as cópias do {title}", + "compareCaption": "Campo por comparação de cópias {count}", + "fieldColumn": "Campo", + "filesEach": "{count, plural, one {# cada arquivo} other {# cada arquivos}}", + "moreFilesCount": "{count, plural, one {e # mais arquivo} other {e # mais arquivos}}", + "identicalAcross": "{count, plural, one {Idêntico em ambas as cópias:} other {Idêntico em todas as # cópias:}}", + "deleteGroup": "{count, plural, one {Excluir # cópia, grátis {size}} other {Excluir # cópias, grátis {size}}}", + "confidence": { + "file_hash": "Identico", + "isbn": "Mesmo ISBN", + "exact_metadata": "Correspondência exata", + "fuzzy_metadata": "Semelhante", + "withSimilarity": "{label}: {percent}" + }, + "summary": { + "groups": "{count, plural, one {grupo} other {grupos}}", + "extraCopies": "{count, plural, one {cópia extra} other {cópias extras}}", + "reclaimable": "recuperável" + }, + "columns": { + "match": "Correspondência", + "book": "Livro", + "copies": "Cópias", + "libraries": "Bibliotecas", + "frees": "Livres", + "keeping": "Mantendo" + }, + "keepRule": { + "label": "Manter", + "metadata": "Melhores metadados", + "size": "Arquivos maiores", + "formats": "Mais formatos", + "oldest": "Cópia mais antiga", + "newest": "Cópia mais recente", + "hint": "Escolhe um mantenedor em cada grupo. Você pode substituir qualquer linha." + }, + "sort": { + "label": "Ordenar", + "reclaimable": "A maior parte do espaço liberado", + "copies": "Mais copiados", + "confidence": "Correspondência forte", + "title": "Título de A a Z" + }, + "keeper": { + "yourChoice": "Sua escolha", + "reading": "você está {percent} disso", + "collection": "está em {name}", + "metadata": "metadados {score}", + "largest": "maior em {size}", + "formats": "Formatos {count}", + "isbn": "tem um ISBN", + "added": "adicionado {date}", + "riskReading": "exclui uma cópia do {percent} através de", + "riskCollection": "exclui uma cópia em {name}" + }, + "selection": { + "summary": "{groups} grupos selecionados, {copies} cópias para excluir, libera {size}", + "clear": "Limpar", + "review": "{count, plural, one {Analise # cópia} other {Analise # cópias}}", + "hint": "Marque os grupos em que confia, ou abra um para comparar as cópias." + }, + "keys": { + "move": "mover", + "expand": "expandir", + "keep": "manter", + "select": "selecionar" + }, + "review": { + "title": "{count, plural, one {Exclua # cópia} other {Exclua # cópias}}", + "description": "Em todos os grupos {groups}, liberando {size}. Nada é excluído até que você confirme.", + "riskWarning": "{count, plural, one {# grupo exclui uma cópia carregando seus dados de leitura.} other {# grupos excluem uma cópia carregando seus dados de leitura.}}", + "footer": "Livre {size}" + }, + "dismissed": { + "show": "{count, plural, one {Mostre # par dispensado} other {Mostre # pares dispensados}}", + "hide": "Ocultar pares dispensados", + "restore": "Restaurar este par", + "restored": "Pareamento restaurado. Ele pode coincidir novamente na próxima digitalização." } }, "entityManager": { @@ -9978,6 +10515,35 @@ "noMatchHint": "Tente ajustar as regras de filtro.", "edit": "Editar SmartScope" } + }, + "podcastScope": { + "title": "Playlist inteligente", + "entity": "playlist inteligente", + "loadFailed": "Não foi possível carregar episódios para esta playlist.", + "loadMoreFailed": "Não foi possível carregar mais episódios.", + "retry": "Tentar novamente", + "editRules": "Editar regras", + "saveFailed": "Não foi possível salvar as regras de playlist.", + "deleteFailed": "Não foi possível excluir esta playlist.", + "empty": { + "title": "Sem episódios correspondentes", + "hint": "Ajustar as regras para coincidir com mais episódios." + } + }, + "podcastCollection": { + "title": "Coleção de Podcast", + "entity": "coleção de Podcast", + "loadFailed": "Não foi possível carregar os programas desta coleção.", + "remove": "Remover", + "removeAria": "Remover {name} desta coleção", + "removed": "Removido {name}", + "removeFailed": "Não foi possível remover este programa.", + "empty": { + "title": "Ainda não há programas", + "hint": "Adicionar programas para esta coleção de uma biblioteca de podcast." + }, + "loadMoreFailed": "Não foi possível carregar mais programas.", + "retry": "Tentar novamente" } }, "whatsNew": { @@ -10010,10 +10576,825 @@ "previousImage": "Imagem anterior", "nextImage": "Próxima imagem" }, + "podcast": { + "actions": { + "add": "Adicionar", + "cancel": "Cancelar", + "save": "Salvar", + "play": "Ouvir", + "pause": "Pausar", + "playEpisode": "Reproduzir episódio", + "listen": "Ouvir", + "remove": "Remover", + "episodeActions": "Ações do episódio", + "removeFromQueue": "Remover da fila", + "addToQueue": "Adicionar à fila", + "playNext": "Reproduzir a seguir", + "retryDownload": "Tentar download novamente", + "download": "Download", + "removeDownload": "Remover download", + "markUnplayed": "Marcar como não reproduzido", + "markPlayed": "Marcar como reproduzido", + "follow": "Seguir", + "unfollow": "Deixar de seguir", + "followPodcast": "Seguir podcast", + "unfollowPodcast": "Parar de seguir podcast", + "resume": "Retomar", + "playLatest": "Reproduzir mais recente", + "moveToTop": "Mover para o início", + "playFromHere": "Reproduzir a partir daqui", + "moveDown": "Mover para baixo", + "clearQueue": "Limpar fila", + "clearAll": "Limpar todos", + "search": "Buscar", + "clearPlayed": "Limpar reproduzidos", + "downloadSelected": "Transferir selecionados", + "removeSelectedDownloads": "Remover downloads selecionados", + "markSelectedPlayed": "Marcar selecionados como reproduzidos", + "removeSelectedFromQueue": "Remover selecionados da fila", + "selectEpisode": "Selecionar {title}", + "playNamedEpisode": "Reproduzir {title}", + "listenToEpisode": "Ouvir {title}", + "resumeEpisode": "Retomar {title}", + "playLatestEpisode": "Reproduzir último episódio {title}", + "episodeDetails": "Detalhes do episódio", + "episodeDetailsNamed": "Detalhes do episódio {title}", + "editEpisodeMetadata": "Editar metadados", + "openFullPlayer": "Abrir reprodutor completo", + "reorderEpisode": "Reordenar {title}", + "playAll": "Reproduzir tudo", + "resumeNamed": "Retomar {title}", + "queueAll": "Enfileirar todos", + "markAllPlayed": "Marcar todos como assistidos", + "latestCount": "Última versão {count}", + "downloadLatest": "Download mais recente", + "removeAllDownloads": "Remover todos os downloads", + "pin": "Fixar", + "unpin": "Desafixar", + "pinEpisode": "Fixar episódio", + "unpinEpisode": "Desafixar episódio" + }, + "status": { + "nowPlaying": "Reproduzindo agora", + "paused": "Pausado", + "downloaded": "Transferido", + "downloadQueued": "Download em fila", + "downloading": "Baixando", + "downloadFailed": "Falha no download", + "unavailable": "Indisponível", + "played": "Reproduzido", + "following": "Seguinte", + "playbackProgress": "Progresso de reprodução", + "downloadProgress": "Progresso do download", + "removedFromFeed": "Não está mais no feed", + "inQueue": "Na fila", + "feedFailing": "Feed falhou", + "archived": "Arquivado", + "localShow": "Local", + "localShowDescription": "Este programa não tem nenhum feed. Seus episódios são arquivos em sua pasta.", + "missing": "Ausente", + "missingDescription": "A pasta deste programa não está mais no disco. Ela é mantida aqui caso a pasta volte; exclua o programa para removê-lo definitivamente." + }, + "selection": { + "select": "Selecionar", + "selectAll": "Selecionar todos", + "count": "{count} selecionado", + "toggleShow": "Selecionar {title}" + }, + "bulkDelete": { + "title": "Excluir programas selecionados", + "action": "Apagar", + "confirmPhrase": "DELETAR", + "description": "Isto exclui permanentemente {count} séries e tudo o que o BookOrbit sabe sobre eles, incluindo seu histórico de ouvidos. Isso não pode ser desfeito.", + "descriptionWithFiles": "Isto exclui permanentemente o {count} programas, tudo o que o BookOrbit sabe sobre eles, e {size} de arquivos baixados. Suas próprias pastas nunca são alteradas. Isso não pode ser desfeito.", + "queued": "Excluindo {count} programas", + "queuedWithFailures": "Excluindo {count} programas, {failed} não pôde ser iniciado", + "errors": { + "prepare": "Não foi possível descobrir o que excluir estes programas removeria", + "delete": "Não foi possível apagar os programas selecionados" + } + }, + "views": { + "queue": "Fila" + }, + "labels": { + "episodeCount": "{count} episódios", + "unknownPublisher": "Editor desconhecido", + "durationHoursMinutes": "{hours}h {minutes}m", + "durationMinutes": "{minutes}m", + "durationSeconds": "{seconds}s", + "durationUnavailable": "Duração indisponível", + "unknownDate": "Data desconhecida", + "seasonEpisode": "T{season} - E{episode}", + "season": "T{season}", + "episode": "E{episode}", + "episodeTypeTrailer": "Trailer", + "episodeTypeBonus": "Bônus", + "pinnedHint": "Episódios fixados são protegidos da remoção pela retenção de armazenamento.", + "explicit": "Explícito", + "lastListened": "{time} Listado", + "timeLeft": "{time} restante", + "remainingClock": "-{time}", + "pinnedEpisode": "Episódio fixado", + "newEpisodeCount": "{count} novo", + "unplayedShort": "{count} não reproduzido" + }, + "acquisition": { + "title": "Downloads automático", + "never": "Nunca", + "newEpisodes": "Novos episódios", + "recentEpisodes": "Episódios recentes", + "maximumNewest": "Máximo de episódios mais novos", + "publishedWithinDays": "Publicado nos últimos (dias)", + "remoteDescription": "Transmitir episódios por padrão. Você ainda pode baixar episódios individuais para escutas offline.", + "newestDescription": "Baixar automaticamente o número selecionado de episódios mais recentes que já não estão armazenados ou na fila. Salvando essa regra também verifica episódios já existentes no feed.", + "windowDescription": "Baixar os episódios existentes e recém-descobertos publicados nesse período. Episódios sem uma data de publicação são ignorados. Alterar esta regra não remove downloads mais antigos, mas a retenção de armazenamento pode remover downloads desfixados quando o espaço for necessário." + }, + "cleanup": { + "title": "Apagar depois de ouvir", + "keep": "Manter downloads", + "afterFinished": "Excluir depois de concluído", + "delayHours": "Excluir isto muitas horas depois que o último ouvinte terminar", + "keepDescription": "Episódios baixados permanecem em disco até que a retenção de armazenamento precise do espaço.", + "afterFinishedDescription": "Exclua um episódio baixado depois que todos os ouvintes que o iniciaram terminarem e o atraso passar. Marcando-o como não reproduzido, fixando-o ou colocando-o de volta na fila durante a janela cancelará a exclusão." + }, + "player": { + "miniPlayer": "Mini player do Podcast", + "openFullPlayer": "Abrir reprodutor completo", + "expandMiniPlayer": "Expandir mini player", + "collapseMiniPlayer": "Recolher para o player compacto", + "stopAndClose": "Parar e fechar o player", + "sleepActive": "Timer ativo para dormir: {value}", + "previousEpisode": "Episódio anterior", + "nextEpisode": "Próximo episódio", + "backSeconds": "Voltar {count} segundos", + "forwardSeconds": "Avançar {count} segundos", + "episodePosition": "Posição do episódio", + "toggleTimeDisplay": "Alternar tempo restante e total", + "positionValue": "{elapsed} decorrido de {duration}", + "playingAnnouncement": "Reproduzindo {title} do {podcast}", + "pausedAnnouncement": "{title} pausado de {podcast}", + "volume": "Volume", + "positionValueWithChapter": "{elapsed} decorrido de {duration}, capítulo {chapter}" + }, + "bookmarks": { + "title": "Favoritos", + "empty": "Não há favoritos", + "closeForm": "Fechar formulário de favoritos", + "saveAt": "Salve em {time}", + "titlePlaceholder": "Título do favorito", + "notePlaceholder": "Nota opcional", + "save": "Salvar favorito", + "edit": "Editar favorito", + "delete": "Apagar favorito", + "titleLabel": "Título do favorito", + "noteLabel": "Título do favorito", + "editTitleLabel": "Editar título do favorito", + "editNoteLabel": "Editar título do favorito", + "defaultTitle": "Favorito a {time}" + }, + "library": { + "episodes": "Episódios", + "shows": "Programas", + "latest": "Mais recente", + "inProgress": "Em execuçao", + "unplayed": "Não reproduzido", + "finished": "Concluído", + "health": "Saúde", + "search": "Pesquisar podcasts", + "clearSearch": "Limpar pesquisa de podcast", + "import": "Importar", + "importOpml": "Importar OPML", + "importDescription": "Importar uma lista de inscrição OPML", + "addFeed": "Adicionar feed", + "settings": "Configurações do Podcast", + "views": "Visualizações do Podcast", + "loading": "Carregando podcasts...", + "noMatchingShows": "Nenhuma programa encontrado", + "ready": "Sua biblioteca de podcast está pronta", + "tryDifferentSearch": "Tente um título ou publicação diferente.", + "readyDescription": "Adicione um feed RSS ou importe um arquivo OPML para começar a construir sua biblioteca de audio.", + "loadMoreShows": "Carregar mais programas", + "upNext": "A seguir", + "emptyQueue": "Sua fila está vazia", + "emptyQueueDescription": "Adicione um episódio de um programa para manter sua próxima escuta ao seu alcance fácil.", + "loadMore": "Carregando mais", + "lastSuccess": "Último sucesso", + "failureCount": "{count} falharam: {error}", + "unknownError": "Erro desconhecido", + "healthy": "Saudável", + "noFeeds": "Nenhum feed para monitorar", + "noFeedsDescription": "Adicione um feed de podcast para ver seu status de atualização aqui.", + "noMatchingEpisodes": "Sem episódios correspondentes", + "noEpisodesLatest": "Nenhum episódio ainda", + "noEpisodesDownloaded": "Sem episódios baixados", + "noEpisodesInProgress": "Nenhum episódio em andamento", + "noEpisodesUnplayed": "Nenhum episódio não reproduzido", + "noEpisodesFinished": "Nenhum episódio finalizado", + "noEpisodesPinned": "Nenhum episódio fixado", + "pinned": "Fixado", + "continueListening": "Continuar ouvindo", + "viewAllContinue": "Ver tudo", + "noEpisodesDescription": "Novos episódios de seus programas aparecerão aqui.", + "loadMoreEpisodes": "Carregar mais episódios", + "addPodcastFeed": "Adicionar feed de podcast", + "rssUrl": "URL do Feed RSS", + "preview": "Pré-visualização", + "addPodcast": "Adicionar podcast", + "storage": "Armazenamento do Podcast", + "currentlyUsing": "Atualmente usando {size}", + "libraryQuotaGb": "Quota da biblioteca (GB)", + "freeSpaceReserveGb": "Reserva de espaço livre (GB)", + "defaultRefreshMinutes": "Atualização padrão (minutos)", + "finishRemainingSeconds": "Terminar com segundos restantes", + "exportOpml": "Exportar OPML", + "exportDescription": "Exportar esta biblioteca como uma lista de inscrição OPML", + "importOpmlDescription": "Escolha um arquivo OPML e a política de download para aplicar a todos os feed nele.", + "opmlFile": "Arquivo OPML", + "chooseOpmlFile": "Escolher arquivo", + "noOpmlFileChosen": "Nenhum arquivo escolhido", + "importPolicyHint": "Isso se aplica a cada feed importado. Você pode alterá-lo por programa depois.", + "searchShows": "Procurar programas", + "searchEpisodes": "Pesquisar episódios", + "searchHealth": "Procurar saúde das notícias", + "manageFeeds": "Gerenciar feeds", + "feedHealth": "Saúde do feed", + "feedsNeedAttention": "Os feeds precisam de atenção", + "episodeFilters": "Filtro de episódio", + "previewing": "Pré-visualizando...", + "addingPodcast": "Adicionando...", + "openShow": "Abrir {title}", + "retryFeed": "Atualizar {title}", + "reparseFeed": "Reanalisar o feed armazenado para {title}", + "confirmClearQueue": "Remover todos os episódios na fila?", + "importProgress": "Progresso da Importação", + "jobsQueued": "{count} enfileirado", + "jobsProcessing": "{count} processando", + "jobsFailed": "{count} falhou", + "retryUnhealthy": "Repetir feeds não saudáveis", + "followedOnly": "Seguir apenas", + "queueDuration": "{duration} no total", + "confirmClearPlayed": "Remover todos os episódios tocados da fila?", + "searchQueue": "Pesquisar na sua fila", + "noMatchingQueueEpisodes": "Sem episódios correspondentes", + "showAllEpisodes": "Mostrar todos os episódios", + "browseShows": "Buscar programas", + "browseEpisodes": "Procurar episódios", + "allLoaded": "Todos {total} carregados", + "addFeedDescription": "Procure o diretório do podcast ou cole uma URL de feed RSS, pré-visualize o programa e escolha como seus episódios são adquiridos.", + "searchDirectory": "Pesquisar no diretório de podcast", + "searchDirectoryPlaceholder": "Mostrar ou publicar nome", + "searchDirectoryEmpty": "Não há programas no diretório que coincidem com a pesquisa.", + "searchDirectoryHint": "Escolha um resultado para pré-visualizar ou cole uma URL de feed abaixo.", + "inLibrary": "Na biblioteca", + "openExistingShow": "Abrir {title}, já na sua biblioteca", + "pasteFeedUrl": "Ou cole a URL do feed", + "selectAllLoaded": "Selecione cada episódio carregado", + "reorderLoadedHint": "Reordenação aplica-se aos episódios carregados até agora.", + "retryUnhealthyLoaded": "Tente novamente carregar feeds com falha", + "manageFeedsUnhealthy": "Gerenciar feeds: feeds com falhas precisam de atenção", + "localImportTitle": "Importando podcasts de suas pastas", + "localImportDoneTitle": "Importação concluida", + "localImportCounting": "Buscando suas pastas…", + "localImportProgress": "{processed} de {total} arquivos", + "localImportDone": "{processed} arquivos importados", + "importingTitle": "Importando seus podcasts", + "importingHint": "Programas aparecem aqui como seus arquivos são lidos." + }, + "import": { + "title": "Importar arquivos locais", + "description": "Combine o áudio já na pasta desta biblioteca com os episódios dos feeds que você segue.", + "placementHint": "Primeiro coloque os arquivos dentro da pasta desta biblioteca. O BookOrbit os adota onde eles são: nada é copiado, renomeado ou movido.", + "scan": "Verificar arquivos", + "running": "Escaneando...", + "progress": "Arquivos {current} de {total} verificados", + "apply": "Importar arquivos correspondentes", + "applyWithChoices": "Importar arquivos correspondentes e suas escolhas", + "applied": "{count} arquivos adotados.", + "quota": "{adopt} para adotar, {headroom} da cota ainda livre", + "truncated": "Algumas listas são encurtadas. As contagens acima estão completas.", + "chooseEpisode": "Escolher o episódio", + "leaveUnresolved": "Deixar para mais tarde", + "noDate": "Sem dados", + "fileCount": "{count} arquivos", + "subscribe": "Inscrever-me", + "subscribed": "Inscrito", + "suggestedFeedsHint": "Esta pasta nomeia um feed que você ainda não segue. Inscreva-se e depois procure novamente para corresponder aos seus arquivos.", + "rescanHint": "Escaneie novamente para coincidir com os arquivos nas pastas que você acabou de se inscrever.", + "duplicateDiffers": "Um arquivo diferente já está anexado a este episódio", + "duplicateSame": "Este episódio já possui este arquivo", + "unreadableFolders": "{count} pastas não puderam ser lidas.", + "groups": { + "matched": "Correspondente", + "ambiguous": "Precisa de uma decisão", + "unmatched": "Não corresponde", + "duplicates": "Já anexado", + "skipped": "Ignorado", + "suggestedFeeds": "Feeds para se inscrever em", + "unclaimedFolders": "Pastas sem feed" + }, + "signals": { + "episode_guid": "Episódio ID nas tags do arquivo", + "episode_id_suffix": "ID do BookOrbit no nome do arquivo", + "enclosure_file_name": "O nome do arquivo corresponde ao do feed", + "title_and_date": "Título e data", + "title_and_duration": "Título e comprimento", + "manual": "Sua escolha" + }, + "scopes": { + "request": "Mostrar os selecionados", + "folder_suffix": "Mostrar o nome da pasta", + "feed_url_tag": "Endereço de feed nas etiquetas do arquivo", + "feed_sidecar": "Feed salvo na pasta", + "title_similarity": "Título do programa semelhante", + "library": "Nenhum programa identificado" + }, + "reasons": { + "show_unresolved": "Nenhuma programa foi identificado para este arquivo", + "no_episode_candidate": "O programa correspondeu, mas nenhum episódio fez", + "single_fuzzy_signal": "Apenas um sinal apontado em um episódio", + "multiple_candidates": "Vários episódios se encaixam igualmente bem", + "empty_file": "O arquivo está vazio", + "unsupported_format": "Não é um arquivo de áudio suportado", + "symlink": "Links simbólicos não são importados", + "unreadable": "Não foi possível ler o arquivo", + "outside_library_root": "O arquivo resolve fora da pasta da biblioteca", + "attach_conflict": "O episódio ganhou um arquivo enquanto a varredura estava sendo executada", + "quota_exceeded": "A importação destes arquivos excederia a quota de armazenamento desta biblioteca. Aumente a cota ou importe menos arquivos." + }, + "sources": { + "feed_sidecar": "Arquivo de feed salvo", + "metadata_json": "metadata.json", + "feed_url_tag": "Tags de arquivo" + }, + "errors": { + "status": "Falha ao ler o status de importação", + "start": "Falha ao iniciar a importação", + "subscribe": "Falha ao assinar este feed", + "createLocalShow": "Falha ao criar um programa local a partir desta pasta" + }, + "messages": { + "subscribed": "Podcast adicionado. Escaneie novamente para coincidir com seus arquivos.", + "localShowCreated": "Programa local criado. Seus episódios estão sendo importados.", + "localShowUpdated": "Importando os novos arquivos nesta pasta." + }, + "createLocalShow": "Criar programa local", + "addLocalEpisodes": "Adicionar novos episódios", + "localShowCreated": "Criado", + "unclaimedFoldersHint": "O nome dessas pastas não é feed. Transforme uma em um programa local e cada arquivo de áudio nele se torna um episódio.", + "localRescanHint": "Escaneie novamente para pegar qualquer coisa que tenha mudado nas pastas que você acabou de importar." + }, + "messages": { + "podcastAdded": "Podcast adicionado", + "feedsQueued": "{count} podcast na fila", + "settingsSaved": "Configurações do Podcast salvas", + "downloadQueued": "Baixar episódio na fila", + "downloadRemoved": "Download do episódio removido", + "refreshQueued": "Atualização do Podcast na fila", + "reparseQueued": "Reparação de Podcast na fila", + "mergeQueued": "Mesclagem de Podcast na fila", + "showDeleted": "{title} excluído", + "queueCleared": "Fila de Podcast limpa", + "playerClosed": "Player fechado", + "feedsRefreshQueued": "Atualização na fila para feeds do {count}", + "finishedQueueCleared": "Episódios reproduzidos removidos da fila", + "bulkQueueActionCompleted": "{count} episódios selecionados atualizados", + "bulkQueueActionFailed": "Episódios {completed} atualizados, {failed} falhou", + "bulkQueued": "{completed} episódios na fila; {skipped} já foram enfileirados ou excederam o limite de filas", + "bulkMarkedPlayed": "{count} episódios marcados", + "bulkDownloadsQueued": "{count} episódio na fila de downloads", + "bulkDownloadsRemoved": "Downloads de episódios {count} removidos", + "bulkDownloadsRemovedWithFailures": "{completed} downloads foram removidos; {failed} falhou", + "queueRestored": "{count} episódios restaurados para a fila", + "playlistSaved": "Playlist salva", + "playlistDeleted": "Playlist deletada", + "playlistQueued": "Episódios {completed} na fila, ignorados {skipped}", + "playlistQueueEmpty": "Nenhum episódio corresponde a esta playlist", + "detailsSaved": "Exibir detalhes salvos", + "episodeDetailsSaved": "Detalhes do episódio salvo", + "artworkUpdated": "Artwork atualizada", + "artworkRemoved": "Arte personalizada removida", + "localFileDeleted": "Arquivo de episódio excluído", + "opmlOmittedLocalShows": "{count} programas locais esquerda fora da exportação: OPML só pode descrever feeds." + }, + "fullPlayer": { + "queueNowPlaying": "Reproduzindo #{position} · {count} restantes", + "queuedCount": "{count} enfileirado", + "mediaUnavailable": "Mídia indisponível", + "streaming": "Transmissão", + "backToPodcast": "Voltar ao podcast", + "loading": "Carregando episódio...", + "tryAgain": "Tentar novamente", + "nowListening": "Ouvindo agora", + "retry": "Tentar novamente", + "restart": "Reiniciar", + "durationUnavailable": "Duração indisponível", + "previousQueued": "Episódio anterior na fila", + "nextQueued": "Próximo episódio na fila", + "startingPlayback": "Iniciando reprodução", + "speed": "Velocidade", + "playbackSpeed": "Velocidade de reprodução", + "sleep": "Dormir", + "off": "Desligado", + "endOfChapter": "Fim do capítulo", + "endOfEpisode": "Fim do episódio", + "minutesLeft": "{count}m restantes", + "aboutEpisode": "Sobre este episódio", + "showLess": "Mostrar menos", + "showMore": "Mostrar mais", + "chapters": "Capítulos", + "previousChapter": "Capítulo anterior", + "nextChapter": "Próximo capítulo", + "removeNamedFromQueue": "Remover {title} da fila", + "queueClear": "Sua fila está limpa.", + "transcripts": "Transcrições", + "transcript": "Transcrição", + "sleepMinutes": "{count} min", + "speedValue": "{rate}x", + "cyclePlaybackSpeed": "Velocidade do ciclo de reprodução", + "choosePlaybackSpeed": "Escolher velocidade de reprodução", + "moreSpeeds": "Mais", + "showSpeedOverride": "Esta velocidade é lembrada por este programa.", + "clearSpeedOverride": "Usar velocidade padrão para este programa", + "extendSleepLabel": "Adicione mais {count} minutos ao temporizador de descanso", + "sleepTimer": "Temporizador", + "sleepRemaining": "{count}m", + "fineTuneSpeed": "Ajuste fino", + "decreaseSpeed": "Diminuir velocidade de reprodução", + "increaseSpeed": "Aumentar a velocidade de reprodução", + "extendSleep": "Adicionar {count} min", + "bookmarkTooltip": "Favorito: {title}", + "openQueue": "Abrir a fila", + "openChapterLink": "Abrir link do capítulo para {title}" + }, + "show": { + "loading": "Carregando podcast...", + "noAlerts": "Sem alertas", + "immediate": "Imediata", + "dailyDigest": "Resumo diário", + "weeklyDigest": "Resumo semanal", + "refreshFeed": "Atualizar feed", + "refreshInterval": "Intervalo de atualização em minutos", + "restore": "Restaurar", + "archive": "Arquivar", + "deletePermanently": "Excluir permanentemente", + "mergeSource": "Mesclar outro ID de podcast nesse programa", + "queueMerge": "Mesclar a fila", + "confirmMerge": "Mesclar o podcast {id} nesse podcast? O podcast de origem será removido permanentemente.", + "confirmDelete": "Excluir permanentemente {title}, seus episódios {episodes} e todo estado de escuta? Isso não pode ser desfeito.", + "confirmDeleteWithDownloads": "Excluir permanentemente {title}, seus episódios {episodes}, {files} arquivos baixados ({size}), e todo o estado de escuta? Isso não pode ser desfeito.", + "back": "Voltar", + "notificationMode": "Frequência de notificações", + "readMore": "Ler mais", + "searchEpisodes": "Pesquisar os episódios deste programa", + "clearEpisodeSearch": "Limpar pesquisa de episódios", + "episodeFilter": "Filtro de episódio", + "episodeSort": "Ordem do episódio", + "newestFirst": "Mais recente primeiro", + "oldestFirst": "Mais antigos primeiro", + "noEpisodes": "Sem episódios correspondentes", + "noEpisodesDescription": "Tente outra busca, filtre ou ordene a pesquisa.", + "dangerZone": "Zona de perigo", + "dangerZoneActions": "Arquivar, apagar ou mesclar esse feed. Excluir não pode ser desfeito.", + "mergeTitle": "Unir programas duplicados", + "mergeDescription": "Encontre o programa de origem para mesclar neste aqui. A fonte será removida permanentemente.", + "searchMergeSource": "Pesquisar por um programa duplicado", + "mergeSelected": "Mesclar “{title}\" neste programa", + "fromDate": "De", + "toDate": "Para", + "feedFailingTitle": "Feed precisa de atenção", + "feedFailingDetail": "{count} falhas de atualização consecutivas. Última atualização bem-sucedida: {lastSuccess}", + "archivedTitle": "Este programa está arquivado", + "archivedDescription": "Os programas arquivados param de atualizar e não baixam novos episódios.", + "downloadLatestCount": "Número de episódios mais recentes para baixar", + "confirmRemoveAllDownloads": "Remover todos os episódios baixados para este programa? Episódios transmitidos e ouvir o progresso são mantidos.", + "refreshCompleted": "Atualizado, {count} novos episódios", + "refreshFailed": "Atualização falhou: {error}", + "manageTitle": "Gerenciar programas", + "manageActionsDescription": "Arquivando, excluindo e mesclando são tratadas separadamente, para que as configurações de rotina permaneçam seguras para mudar.", + "openManageActions": "Arquivar, apagar ou mesclar", + "archiveOrDelete": "Arquivar é reversível e mantém todos os episódios. Excluir remove o programa, seus episódios e quaisquer arquivos baixados para sempre.", + "deleteRequiresOwner": "Arquivando esconde esse programa e interrompe suas atualizações. Apenas o proprietário da biblioteca com permissão para apagar podcasts pode removê-lo permanentemente.", + "settingsDescription": "Escolha como os episódios são adquiridos e com que frequência o feed é verificado.", + "updatedAgo": "Atualizado há {time}", + "checksEvery": "Verifica todos os {time}", + "visitWebsite": "Visitar website", + "backToLibrary": "Voltar para {library}", + "categoryOverflow": "+{count}", + "moreCategories": "Mostrar mais {count} categorias", + "allCategories": "Todas as categorias", + "serial": "Serial", + "daysShort": "{count} d", + "hoursShort": "{count} h", + "minutesShort": "{count} min", + "moreActions": "Mais ações", + "dates": "Datas", + "anyDate": "Qualquer", + "dateRange": "{from} - {to}", + "dateFilter": "Datas de publicação do episódio", + "clearDates": "Limpar datas", + "seasonHeader": "Temporada {season}", + "localSettingsHint": "Este programa não tem nenhum feed, por isso não tem configurações para atualizar ou baixar." + }, + "edit": { + "title": "Editar detalhes", + "description": "Qualquer coisa que você muda aqui está bloqueada e a próxima atualização do feed não pode substituí-la.", + "titleLabel": "Mostrar título", + "authorLabel": "Editora", + "authorPlaceholder": "Quem publica este programa", + "descriptionLabel": "Descrição", + "descriptionPlaceholder": "A que este programa se refere", + "descriptionHint": "A formatação do feed é substituída pelo texto simples que você insere aqui.", + "siteUrlLabel": "Website", + "siteUrlPlaceholder": "https://exemplo.com/show", + "languageLabel": "Idioma", + "languagePlaceholder": "pt-br", + "categoriesLabel": "Categorias", + "categoriesPlaceholder": "Adicione uma categoria e pressione Enter", + "removeCategory": "Remover categoria {category}", + "categoryLimit": "Você pode manter até {count} categorias.", + "explicitLabel": "Explícito", + "explicitHint": "Marque este programa coo contendo conteúdo explícito.", + "artworkTitle": "Arte", + "artworkHint": "PNG, JPEG, WebP, GIF ou AVIF até 10 MB. Artes personalizadas substituem a imagem do feed em qualquer lugar.", + "artworkUrlLabel": "Endereço da imagem", + "artworkUrlPlaceholder": "https://exemplo.com/br/artwork.png", + "chooseImage": "Escolher imagem", + "useImage": "Use esta imagem", + "removeCustomArtwork": "Remover arte personalizada", + "lockField": "Bloquear {field} contra atualizações do feed", + "unlockField": "Desbloqueie {field} para que o feed possa atualizá-lo", + "willLockField": "{field} será bloqueado quando você salvar", + "willLockHint": "Este campo será bloqueado quando você salvar.", + "localDescription": "Este programa não tem nenhum feed, então suas edições são permanentes e nada pode substituí-las." + }, + "episodeEdit": { + "title": "Editar episódio", + "description": "Qualquer coisa que você muda aqui está bloqueada e a próxima atualização do feed não pode substituí-la.", + "lockHint": "Campos editados estão protegidos de atualizações do feed.", + "titleLabel": "Título do episódio", + "subtitleLabel": "Subtítulo", + "subtitlePlaceholder": "Uma breve linha sob o título", + "descriptionLabel": "Descrição", + "descriptionPlaceholder": "O que este episódio aborda", + "descriptionHint": "A formatação do feed é substituída pelo texto simples que você insere aqui.", + "publishedAtLabel": "Publicado", + "seasonLabel": "Temporada", + "seasonPlaceholder": "2", + "episodeLabel": "Número do episódio", + "episodePlaceholder": "14", + "episodeTypeLabel": "Tipo de episódio", + "episodeTypeNone": "Não definido", + "episodeTypeFull": "Episódio completo", + "episodeTypeTrailer": "Trailer", + "episodeTypeBonus": "Bônus", + "episodeTypeFromFeed": "{value} (a partir do feed)", + "durationLabel": "Duração", + "durationPlaceholder": "Minutos", + "durationHint": "Em minutos. Deixe em branco para remover a duração.", + "durationInvalid": "Insira uma duração em minutos maior que zero.", + "explicitLabel": "Explícito", + "explicitHint": "Marca este episódio como contendo conteúdo explícito.", + "localHint": "Este episódio veio de um arquivo ao invés de um feed, então suas edições são permanentes e nada pode substituí-las." + }, + "errors": { + "createBookmark": "Falha ao criar favorito", + "updateBookmark": "Falha ao atualizar favorito", + "deleteBookmark": "Falha ao apagar favorito", + "feedPreview": "Pré-visualização do feed falhou", + "directorySearch": "A pesquisa de diretório não está disponível no momento. Cole a URL do feed em vez disso.", + "invalidEpisodeLimit": "Insira um número máximo válido de episódios", + "invalidEpisodeWindow": "Insira uma janela de episódios recente válida", + "invalidCleanupDelay": "Atraso de limpeza deve ser de 0 a 8.760 horas", + "addPodcast": "Falha ao adicionar podcast", + "opmlTooLarge": "Arquivos OPML não podem exceder 5 MB", + "opmlImport": "Falha ao importar OPML", + "opmlExport": "Falha ao exportar OPML", + "loadSettings": "Falha ao carregar as configurações de podcast", + "invalidStorage": "Os valores de armazenamento devem ser números não negativos", + "invalidRefresh": "Atualização padrão deve ser entre 5 e 10.080 minutos", + "invalidCompletion": "O limite de conclusão deve ser de 0 a 3.600 segundos", + "saveSettings": "Falha ao salvar as configurações do podcast", + "markPlayed": "Falha ao marcar o episódio reproduzido", + "restartEpisode": "Falha ao reiniciar o episódio", + "queueDownload": "Falha ao enfileirar download do episódio", + "removeDownload": "Falha ao remover o download do episódio", + "addToQueue": "Falha ao adicionar episódio à fila", + "removeFromQueue": "Falha ao remover o episódio da fila", + "loadPodcast": "Falha ao carregar podcast", + "loadEpisodes": "Falha ao carregar episódios de podcast", + "queueNext": "Falha ao enfileirar o episódio seguinte", + "follow": "Falha ao seguir podcast", + "unfollow": "Falha ao deixar de seguir o podcast", + "updateEpisode": "Falha ao atualizar o episódio", + "refresh": "Falha ao enfileirar atualização de podcast", + "reparse": "Falha ao enfileirar reparo de podcast", + "reparseNoSnapshot": "O BookOrbit ainda não possui uma cópia armazenada deste feed. Atualize primeiro.", + "updatePodcast": "Falha ao atualizar podcast", + "archive": "Falha ao arquivar podcast", + "prepareDelete": "Falha ao preparar a eliminação do programa", + "deleteShow": "Falha ao excluir o programa", + "restore": "Falha ao restaurar o podcast", + "merge": "Falha ao enfileirar mesclagem de podcast", + "libraryAccess": "Falha ao carregar acesso à biblioteca", + "reorderQueue": "Falha ao reordenar fila de podcast", + "clearQueue": "Falha ao limpar fila de podcast", + "podcastNotFound": "Podcast não encontrado", + "loadPodcasts": "Falha ao carregar podcasts", + "loadQueue": "Falha ao carregar fila de podcast", + "loadHealth": "Falha ao carregar a saúde do feed", + "loadPlaybackSettings": "Falha ao carregar configurações de reprodução de podcast", + "invalidPlaybackRate": "A taxa de reprodução deve ser entre 0.5 e 3", + "invalidSkipBackward": "Pular para trás deve ser de 5 a 120 segundos", + "invalidSkipForward": "Avançar deve ser de 5 a 120 segundos", + "invalidDateRange": "A data de início deve ser antes da data de fim", + "episodeNotFound": "Episódio de Podcast não encontrado", + "loadEpisode": "Falha ao carregar o episódio de podcast", + "refreshPlaybackContext": "Falha ao atualizar o contexto de reprodução", + "streamUnavailable": "Não foi possível carregar este episódio de podcast", + "bulkAction": "Falha ao atualizar episódios de podcast", + "invalidVolume": "O volume deve ser de 0 a 100%", + "restoreQueue": "Falha ao restaurar fila de podcast", + "loadPlaylists": "Falha ao carregar suas playlists", + "savePlaylist": "Falha ao salvar a playlist", + "deletePlaylist": "Falha ao excluir a playlist", + "queuePlaylist": "Falha ao enfileirar a playlist", + "playlistNameRequired": "Nomeie a lista antes de salvá-la", + "playlistLimitReached": "Você atingiu o limite de listas de reprodução salvas", + "playlistDurationRange": "A duração mais curta deve estar abaixo do mais longo", + "updatePinned": "Falha ao atualizar o estado fixado", + "titleRequired": "A exibição do título não pode estar vazia", + "episodeTitleRequired": "O título do episódio não pode estar vazio", + "updateArtwork": "Falha ao atualizar a arte", + "removeArtwork": "Falha ao remover a arte personalizada" + }, + "settingsPage": { + "title": "Configurações do Podcast", + "subtitle": "Gerencie seus padrões de reprodução e comportamento de armazenamento para cada biblioteca do podcast.", + "loading": "Carregando configurações de podcast...", + "saving": "Salvando...", + "playbackTitle": "Padrão de reprodução", + "playbackDescription": "Estas preferências seguem sua conta entre dispositivos. As velocidades de reprodução lembradas para programas individuais são preservadas.", + "defaultPlaybackRate": "Velocidade padrão de reprodução", + "skipBackwardSeconds": "Retroceder (segundos)", + "skipForwardSeconds": "Pular para frente (segundos)", + "playbackSaved": "Configurações de reprodução do Podcast salvas", + "playbackSaveFailed": "Falha ao salvar configurações de reprodução de podcast", + "libraryTitle": "Padrões de biblioteca e armazenamento", + "libraryDescription": "Escolha uma biblioteca de podcast para ver seus limites de armazenamento e o comportamento padrão para atualizar.", + "library": "Biblioteca de Podcast", + "noLibraries": "Você ainda não tem acesso a uma biblioteca de podcast.", + "loadingLibrary": "Carregando configurações da biblioteca...", + "readOnlyLibrary": "Apenas os proprietários de biblioteca com permissão de retenção de podcast podem alterar estas configurações.", + "showSettingsHint": "Regras de download automáticas e atualização das substituições permanecem nas configurações de cada programa.", + "defaultVolume": "Volume padrão", + "gigabytesUnit": "GB" + }, + "queueReorder": { + "lifted": "{title} removeu na posição {position} de {total}", + "moved": "{title} movido para a posição {position} de {total}", + "dropped": "{title} caiu na posição {position} da {total}", + "cancelled": "Reordenação {title} cancelada" + }, + "sort": { + "label": "Ordenar", + "showLabel": "Ordenar programas", + "episodeLabel": "Ordenar episódios", + "showTitle": "Título A a Z", + "showRecent": "Atualizado recentemente", + "showUnplayed": "Mais não reproduzidas", + "shortest": "Mais curto primeiro", + "longest": "Longos primeiro", + "recentlyListened": "Ouvidos recentemente" + }, + "announce": { + "queued": "{title} adicionado à fila", + "queuedNext": "{title} irá reproduzir a seguir", + "unqueued": "{title} removido da fila", + "downloadReady": "Download de {title} finalizado", + "downloadFailed": "Falha ao baixar {title}", + "evictedSpace": "Download do {title} removido para armazenamento livre", + "evictedPlayed": "Download do {title} removido depois de ouvir", + "sleepExpired": "O Sleep timer terminou, a reprodução foi interrompida", + "sleepExtended": "Sleep timer estendido por {count} minutos", + "sleepChapterUnavailable": "O Sleep timer cancelado, este episódio não possui capítulos" + }, + "shortcuts": { + "title": "Atalhos de teclado Podcast", + "description": "Isso funciona enquanto um episódio é carregado. As teclas de setas atuam na página do player ou no mini player, e os marcadores só podem ser adicionados a partir da página do jogador.", + "open": "Atalhos de teclado", + "togglePlayback": "Reproduzir ou pausar", + "skipBackward": "Retroceder", + "skipForward": "Avançar", + "next": "Próximo episódio", + "previous": "Episódios anteriores", + "speedDown": "Diminuir velocidade de reprodução", + "speedUp": "Aumentar a velocidade de reprodução", + "mute": "Silenciar ou ativar som", + "volumeUp": "Aumentar volume", + "volumeDown": "Diminuir o volume", + "bookmark": "Adicionar ao favoritos", + "help": "Mostrar esta lista", + "spaceKey": "Espaço", + "groups": { + "playback": "Reprodução", + "navigation": "Navegação", + "tools": "Ferramentas" + } + }, + "playlists": { + "title": "Playlists", + "builtInLabel": "Construído em", + "savedLabel": "Salvo", + "choose": "Escolha uma playlist", + "search": "Pesquisar episódios da playlist", + "summary": "{count} episódios, {duration}", + "summaryShortest": "Mais curto", + "summaryLongest": "Mais longo", + "summaryPublishedWithin": "Publicado em", + "create": "Nova playlist", + "createTitle": "Nova playlist inteligente", + "editTitle": "Editar playlist inteligente", + "editorDescription": "Escolha quais episódios esta playlist inteligente coleta. As regras são reavaliadas toda vez que você abri-lo, para que novos episódios apareçam automaticamente.", + "edit": "Editar regras", + "adjustRules": "Ajustar regras", + "saveAs": "Salvar como playlist", + "save": "Salvar Playlist", + "delete": "Apagar playlist", + "deleteConfirmTitle": "Excluir esta playlist?", + "deleteConfirmDescription": "\"{name}\" e suas regras serão removidos. Os episódios que ele coleta não são afetados.", + "nameLabel": "Nome da playlist", + "namePlaceholder": "Caminhada matinal", + "filterLabel": "Episódios", + "sortLabel": "Ordem", + "minDuration": "Curto (minutos)", + "maxDuration": "Longo (minutos)", + "publishedWithin": "Publicado em (dias)", + "showsLabel": "Programas", + "showsDescription": "Deixe isto em branco para incluir todos os programas na biblioteca.", + "searchShows": "Buscar programa para adicionar", + "removeShow": "Remover {title}", + "showLimit": "Uma playlist pode chegar em até {count} programas.", + "copyOf": "Cópia de {name}", + "empty": "Nada corresponde a esta playlist ainda", + "emptyDescription": "Ajuste as regras ou volte quando chegarem novos episódios.", + "builtIn": { + "quick": "Ouvir rapidamente", + "continue": "Continuar ouvindo", + "downloaded": "Transferido", + "fresh": "Novidades esta semana" + }, + "nameRequired": "Nomeie a playlist antes de salvá-la" + }, + "downloadWidget": { + "title": "Downloads", + "progress": "{completed} de {total} baixado", + "progressWithFailures": "{completed} de {total} baixado; {failed} falhou", + "progressWithCancelled": "{completed} de {total} baixado; {cancelled} cancelado", + "complete": "Downloads concluídos: {count}", + "expand": "Expandir progresso do download", + "collapse": "Recolher progresso do download", + "overallProgress": "Progresso geral do download", + "unknownPodcast": "Podcast", + "unknownEpisode": "Episódio", + "batchProgress": "{completed} de {total} completo", + "dismiss": "Descartar progresso do download", + "bytes": "{received} de {total}", + "episodeProgress": "Progresso de Download para {title}", + "status": { + "queued": "Na fila", + "downloading": "Baixando", + "completed": "Transferido", + "failed": "Falhou", + "cancelled": "Cancelado" + } + }, + "collections": { + "addAction": "Adicionar à coleção", + "addTitle": "Adicionar à coleção", + "addDescription": "Escolha uma coleção de podcast para {title}.", + "added": "Adicionado a {name}", + "addFailed": "Não foi possível adicionar o programa a essa coleção.", + "createFailed": "Não foi possível criar a coleção.", + "alreadyIn": "Já está nesta coleção", + "none": "Nenhuma coleção de podcast ainda. Crie uma abaixo.", + "newPlaceholder": "Podcasts de Sci-fi", + "newLabel": "Nome da nova coleção", + "create": "Criar", + "newCollection": "Nova coleção", + "existing": "Coleções", + "inCollection": "Nesta coleção", + "showCount": "{count} programas", + "removed": "Removido de {name}", + "removeFailed": "Não foi possível remover um programa dessa coleção." + } + }, "titles": { "dashboard": "Painel", "libraries": "Bibliotecas", - "podcastLibraries": "Podcast Libraries", + "podcastLibraries": "Bibliotecas de Podcast", + "podcastScope": "Playlists inteligentes", + "podcastCollection": "Coleção de Podcast", "opds": "OPDS", "koboSync": "Sincronização Kobo", "koreaderSync": "Sincronização KOReader", @@ -10042,6 +11423,9 @@ "collection": "Coleção", "author": "Autor", "book": "Livro", + "podcasts": "Podcasts", + "podcast": "Podcast", + "podcastEpisode": "Episódio", "seriesItem": "Série", "appearance": { "theme": "Exibição", @@ -10081,7 +11465,8 @@ "account-activity": "Atividade da Conta", "magic-links": "Links Mágicos", "oidc": "OIDC / SSO", - "server-fonts": "Fontes do Servidor" + "server-fonts": "Fontes do Servidor", + "tts": "Texto-para-voz" }, "system": { "file-naming": "Nomeação de Arquivos", @@ -10101,6 +11486,88 @@ "missingResources": "Recursos faltando", "bookRequests": "Solicitações", "bookRequestDetail": "Pedido", - "bookRequestReleases": "Escolha uma versão" + "bookRequestReleases": "Escolha uma versão", + "tts": "Texto-para-voz" + }, + "tts": { + "readerControls": { + "listen": "Ouvir", + "playing": "Reproduzindo" + }, + "player": { + "fallbackTitle": "Reprodução TTS", + "play": "Executar TTS", + "pause": "Pausar TTS", + "openMiniPlayer": "Abrir mini player", + "shrinkPlayer": "Misturar player", + "expandPlayer": "Expandir player", + "collapsePlayer": "Recolher o player", + "openDetails": "Abrir detalhes do player", + "previousSentence": "Frase anterior", + "nextSentence": "Próxima frase", + "meta": "Ch {chapter} - Sent {sentence} - {voice} - {speed}x", + "metaWithoutVoice": "Ch {chapter} - Enviado {sentence} - {speed}x", + "position": "Capítulo {chapter} Sentença {sentence}", + "playbackError": "Erro de reprodução - toque em reproduzir para tentar novamente", + "voice": "Voz", + "sleep": "Dormir", + "sleepRemaining": "{count}m", + "currentVoice": "Voz atual", + "chooseVoice": "Escolha voz", + "saveForBook": "Salvar para este livro", + "setAsDefault": "Utilizar o padrão global", + "bookVoiceSaved": "Voz salva para este livro", + "bookVoiceSaveFailed": "Falha ao salvar voz do livro", + "defaultVoiceSaved": "Voz padrão do TTS atualizada", + "defaultVoiceSaveFailed": "Falha ao atualizar a voz padrão", + "stop": "Parar" + }, + "speed": { + "label": "Velocidade de reprodução", + "value": "{speed}x" + }, + "sleepTimer": { + "title": "Temporizador de Sono", + "preset": "{count}m", + "presetLabel": "Parar reprodução após {count} minutos", + "cancel": "Cancelar", + "cancelLabel": "Cancelar temporizador", + "remaining": "Pára em {minutes}m {seconds}" + }, + "resume": { + "title": "Retomar TTS?", + "description": "Você tem uma posição TTS salva", + "descriptionWithChapter": "Você tem uma posição TTS salva (Capítulo {chapter})", + "resume": "Retomar", + "startHere": "Iniciar esta página", + "dismiss": "Dispensar", + "clearing": "Limpando...", + "confirmClear": "Confirmar limpeza", + "clearSavedPosition": "Limpar posição salva" + }, + "voicePicker": { + "search": "Pesquisar voz...", + "allProviders": "Tudo", + "allLanguages": "Todos os idiomas", + "allCountries": "Todos os Países", + "filterByLanguage": "Filtrar por idioma", + "filterByCountry": "Filtrar por país", + "empty": "Nenhuma voz encontrada", + "select": "Selecionar {name}", + "preview": "Pré-visualizar {name}", + "voiceWithLocale": "{voice} - {locale}" + }, + "settings": { + "description": "Configure suas configurações padrão de TTS e a reprodução de voz.", + "defaultVoice": "Voz Padrão", + "selectVoice": "Selecione uma voz...", + "change": "Alterar", + "defaultSpeed": "Velocidade Padrão", + "saved": "Preferências de TTS salvas", + "saveFailed": "Falha ao salvar preferências de TTS" + }, + "errors": { + "generic": "Erro de TTS" + } } } diff --git a/client/src/locales/sl.json b/client/src/locales/sl.json index d830de2cf..7701a53fe 100644 --- a/client/src/locales/sl.json +++ b/client/src/locales/sl.json @@ -3004,12 +3004,21 @@ "loadError": "Dogodkov revizije ni bilo mogoče naložiti.", "removeFilter": "Odstrani filter: {value}", "allActions": "Vsa dejanja", + "allEventTypes": "Vse vrste dogodkov", + "allActors": "Vsi izvajalci", + "noActionsFound": "Ni ujemajočih se dejanj", + "noActorsFound": "Ni ustreznih izvajalcev", + "noResourcesFound": "Ni ustreznih vrst ciljev", + "unknownAction": "Neznana akcija", + "unknownResource": "Druga vrsta cilja", "allResources": "Vsi viri", + "allTargetTypes": "Vse vrste ciljev", "quickDates": "Hitri datumi", "today": "Danes", "sevenDays": "7 dni", "thirtyDays": "30 dni", "userId": "Uporabnik #{id}", + "userIdCompact": "#{id}", "targetAdditional": "in {count, plural, one {še # cilj} two {še # cilja} few {še # cilji} other {še # ciljev}}", "bookImpact": "{count, plural, one {# knjiga} two {# knjigi} few {# knjige} other {# knjig}}", "entryDetailsLabel": "Podrobnosti za revizijski dogodek št. #{id}", @@ -3018,9 +3027,12 @@ "detailActor": "Izvajalec", "detailCategory": "Kategorija", "detailActionLabel": "Dejanje", + "detailEventTypeLabel": "Vrsta dogodka", "detailIpLabel": "IP naslov", "detailResourceLabel": "Vir", "detailResourceIdLabel": "ID vira", + "detailTargetTypeLabel": "Vrsta cilja", + "detailTargetIdLabel": "ID cilja", "detailAction": "Dejanje: {value}", "detailIp": "IP: {value}", "detailResource": "Vir: {value}", @@ -3080,22 +3092,12 @@ "settings": "Nastavitve", "other": "Drugo" }, - "noActionsFound": "Ni ujemajočih se dejanj", - "unknownAction": "Neznana akcija", - "userIdCompact": "#{id}", - "allEventTypes": "Vse vrste dogodkov", - "allActors": "Vsi izvajalci", - "noActorsFound": "Ni ustreznih izvajalcev", - "noResourcesFound": "Ni ustreznih vrst ciljev", - "unknownResource": "Druga vrsta cilja", - "allTargetTypes": "Vse vrste ciljev", - "detailEventTypeLabel": "Vrsta dogodka", - "detailTargetTypeLabel": "Vrsta cilja", - "detailTargetIdLabel": "ID cilja", "resourceLabels": { "User": "Uporabnik", "Library": "Knjižnica", "Book": "Knjiga", + "Podcast": "Podcast", + "PodcastEpisode": "Podcast episode", "Collection": "Zbirka", "SmartScope": "Pametni obseg", "BookDockFile": "Datoteka v odložišču knjig", @@ -3114,9 +3116,7 @@ "Series": "Serija", "OidcIdentity": "Identiteta OIDC", "MagicLinkToken": "Čarobna povezava", - "ReadingInsightsProfile": "Profil bralnih vpogledov", - "Podcast": "Podcast", - "PodcastEpisode": "Podcast episode" + "ReadingInsightsProfile": "Profil bralnih vpogledov" }, "actionLabels": { "AuthRegister": "Ustvari račun", @@ -3158,6 +3158,17 @@ "LibraryAccessRevoke": "Preklic dostopa do knjižnice", "LibraryWriteMetadataToFiles": "Zapisovanje metapodatkov v datoteke", "LibraryBulkRename": "Preimenuj datoteke knjižnice", + "PodcastCreate": "Create podcast", + "PodcastUpdate": "Update podcast", + "PodcastArchive": "Archive podcast", + "PodcastRestore": "Restore podcast", + "PodcastPurge": "Purge podcast", + "PodcastMerge": "Merge podcasts", + "PodcastDownload": "Download podcast episode", + "PodcastDownloadRemove": "Remove podcast download", + "PodcastRetentionUpdate": "Update podcast retention", + "PodcastOpmlImport": "Import podcast OPML", + "PodcastOpmlExport": "Export podcast OPML", "BookUpload": "Naloži knjigo", "BookMetadataUpdate": "Posodobi metapodatke knjige", "BookMetadataLocksUpdate": "Posodobi zaklepanje metapodatkov", @@ -3217,18 +3228,7 @@ "EmailRecipientGroupUpdate": "Posodobi skupino prejemnikov", "EmailRecipientGroupDelete": "Izbriši skupino prejemnikov", "EmailRecipientGroupMemberAdd": "Dodaj prejemnika v skupino", - "EmailRecipientGroupMemberRemove": "Odstrani prejemnika iz skupine", - "PodcastCreate": "Create podcast", - "PodcastUpdate": "Update podcast", - "PodcastArchive": "Archive podcast", - "PodcastRestore": "Restore podcast", - "PodcastPurge": "Purge podcast", - "PodcastMerge": "Merge podcasts", - "PodcastDownload": "Download podcast episode", - "PodcastDownloadRemove": "Remove podcast download", - "PodcastRetentionUpdate": "Update podcast retention", - "PodcastOpmlImport": "Import podcast OPML", - "PodcastOpmlExport": "Export podcast OPML" + "EmailRecipientGroupMemberRemove": "Odstrani prejemnika iz skupine" } }, "auth": { @@ -7592,15 +7592,15 @@ "seasonEpisode": "S{season} E{episode}", "season": "S{season}", "episode": "E{episode}", + "episodeTypeTrailer": "Trailer", + "episodeTypeBonus": "Bonus", + "pinnedHint": "Pinned episodes are protected from storage retention removal.", "explicit": "Explicit", "lastListened": "Listened {time}", "timeLeft": "{time} left", "pinnedEpisode": "Pinned episode", "newEpisodeCount": "{count} new", - "unplayedShort": "{count} unplayed", - "episodeTypeTrailer": "Trailer", - "episodeTypeBonus": "Bonus", - "pinnedHint": "Pinned episodes are protected from storage retention removal." + "unplayedShort": "{count} unplayed" }, "acquisition": { "title": "Samodejni prenosi", @@ -7633,12 +7633,12 @@ "backSeconds": "Nazaj {count} sekund", "forwardSeconds": "Naprej {count} sekund", "episodePosition": "Položaj epizode", + "toggleTimeDisplay": "Toggle remaining and total time", "positionValue": "Predvajano {elapsed} od {duration}", "playingAnnouncement": "Playing {title} from {podcast}", "pausedAnnouncement": "Paused {title} from {podcast}", "volume": "Volume", - "positionValueWithChapter": "{elapsed} elapsed of {duration}, chapter {chapter}", - "toggleTimeDisplay": "Toggle remaining and total time" + "positionValueWithChapter": "{elapsed} elapsed of {duration}, chapter {chapter}" }, "bookmarks": { "title": "Zaznamki", @@ -8191,14 +8191,14 @@ "skipForward": "Skip forward", "next": "Next episode", "previous": "Previous episode", - "help": "Show this list", - "spaceKey": "Space", "speedDown": "Decrease playback speed", "speedUp": "Increase playback speed", "mute": "Mute or unmute", "volumeUp": "Increase volume", "volumeDown": "Decrease volume", "bookmark": "Add bookmark", + "help": "Show this list", + "spaceKey": "Space", "groups": { "playback": "Playback", "navigation": "Navigation", diff --git a/client/src/locales/tr.json b/client/src/locales/tr.json index ecfd1428a..b2474ee8a 100644 --- a/client/src/locales/tr.json +++ b/client/src/locales/tr.json @@ -14,7 +14,10 @@ "previous": "Önceki", "retry": "Tekrar Dene", "yes": "Evet", - "no": "Hayır" + "no": "Hayır", + "show": "Göster", + "hide": "Gizle", + "undo": "Geri Al" }, "settings": { "privacySharing": { diff --git a/client/src/locales/zh.json b/client/src/locales/zh.json index dbe2b2466..f6ca0ad16 100644 --- a/client/src/locales/zh.json +++ b/client/src/locales/zh.json @@ -16,7 +16,8 @@ "yes": "是", "no": "否", "show": "显示", - "hide": "隐藏" + "hide": "隐藏", + "undo": "撤销" }, "settings": { "privacySharing": { @@ -733,6 +734,7 @@ "connected": "已连接 - {issuer}", "connectionFailed": "连接失败", "privateIssuerAddress": "发行者的 URL 解析为私有或本地网络地址,因此服务器拒绝连接。 在 BookOrbit 服务器设置OIDC_ALLOCAL_ISSUERS=true 以允许它。", + "tlsCertificateUntrusted": "BookOrbit无法验证 OIDC 提供商的 TLS 证书。 如果提供商使用私人证书权威,将其PEM CA 包挂起,设置NODE_EXTRA_CA_CERTS 到该包的容器内路径,并重启BookOrbit。", "hide": "隐藏", "details": "详细信息", "supported": "支持的", @@ -1118,13 +1120,18 @@ "sortLabel": "排序", "noMatchesTitle": "没有匹配此过滤器的书库", "noMatchesHint": "没有找到与“{query}”匹配的名称或文件夹路径。", + "totalLibraries": "{count, plural, one {#页} other {#页}}", "neverScanned": "从未扫描", "neverScannedHint": "运行扫描以索引文件夹", "scanFailedAt": "执行失败:{time}\t", "scanningPercent": "扫描中{pct}", "scanCounting": "正在统计文件", "scanCounts": "已扫描:{processed} / 总计:{total}", + "scanAdded": "{count, plural, other {# folders}}", + "scanUpdated": "{count, plural, one {#页} other {#页}}", + "scanMissing": "{count, plural, one {# 字段} other {# 字段}}", "scanNoChange": "无更改", + "outcomeSeparator": ", ", "syncConfirmBody": "这将直接写入磁盘上 {name} 中每个受支持文件的元数据。该操作无法被撤回。", "columns": { "library": "书库", @@ -1152,6 +1159,7 @@ "fileWrite": "写入至文件", "fileRename": "重命名文件", "on": "{name}: 打开", + "off": "{name}:关闭", "legendHint": "虚线表示关闭" }, "stateOn": "打开", @@ -1341,72 +1349,96 @@ "account-activity": "帐户活动", "magic-links": "魔法链接", "oidc": "OIDC / SSO", + "tts": "文本转语音", "server-fonts": "服务端字体" }, "tts": { - "title": "Providers", + "title": "提供者", "subtitle": "Speech engines available to readers. Voices are curated per provider.", "summary": "{providers, plural, one {# provider} other {# providers}} · {enabled} enabled · {voices, plural, one {# voice curated} other {# voices curated}}", - "addProvider": "Add provider", - "loadFailed": "Failed to load text-to-speech configuration", - "empty": "No speech providers configured.", - "reorderHint": "Drag to reorder. Readers see providers in this order.", - "dragHandle": "Reorder {name}", - "moveUp": "Move {name} up", - "moveDown": "Move {name} down", - "reorderFailed": "Failed to save the provider order", - "expand": "Show details for {name}", - "collapse": "Hide details for {name}", - "toggleEnabled": "Enable {name}", - "enableFailed": "Failed to update {name}", - "statusConnected": "Connected", - "statusUnreachable": "Unreachable", - "statusUnchecked": "Not checked", - "voiceCount": "{count, plural, one {# voice} other {# voices}}", - "configuration": "Configuration", - "fieldType": "Type", - "fieldTypeOpenAi": "OpenAI-compatible", - "fieldApiKey": "API key", - "apiKeySet": "Set", - "apiKeyNotSet": "Not set", - "fieldModel": "Default model", - "fieldModelNone": "Provider default", - "fieldDiscovery": "Voice discovery", - "discoverySupported": "Supported", - "discoveryUnsupported": "Not supported", - "voices": "Voices", - "voicesCurated": "{count} curated", - "voicesTapToPreview": "Tap a voice to preview it", - "voicesNone": "No voices configured yet", - "manageVoices": "Manage voices", - "previewVoice": "Preview {name}", - "previewStop": "Stop preview", - "previewFailed": "Could not play a preview for {name}", - "previewNeedsEnabled": "Enable this provider to preview its voices", - "editConfiguration": "Edit configuration", - "testConnection": "Test connection", - "testPassed": "Connected · {count, plural, one {# voice found} other {# voices found}}", - "testFailed": "Connection failed", - "delete": "Delete", + "addProvider": "添加提供商", + "loadFailed": "加载文本到语音配置失败", + "empty": "没有配置语音提供商。", + "reorderHint": "拖动以重新排序。读者会按此顺序看到提供商。", + "dragHandle": "调整 \"{name}\" 排序", + "moveUp": "上移 {name}", + "moveDown": "下移 {name}", + "reorderFailed": "保存提供商指令失败", + "expand": "查看《{name}》详情", + "collapse": "隐藏《{name}》详情", + "toggleEnabled": "启用{name}", + "enableFailed": "更新 {name} 失败", + "statusConnected": "已连接", + "statusUnreachable": "无法访问", + "statusUnchecked": "未检查", + "voiceCount": "{count, plural, other {# folders}}", + "configuration": "配置", + "fieldType": "类型", + "fieldTypeOpenAi": "兼容 OpenAI", + "fieldApiKey": "API 密钥", + "apiKeySet": "设置", + "apiKeyNotSet": "未设置", + "fieldModel": "默认模型", + "fieldModelNone": "默认服务提供商", + "fieldDiscovery": "音频发现", + "discoverySupported": "已支持", + "discoveryUnsupported": "不支持", + "voices": "配音", + "voicesCurated": "新增 {count} 条", + "voicesTapToPreview": "点击语音以预览", + "voicesNone": "尚未配置语音。", + "manageVoices": "管理语音", + "previewVoice": "预览 {name}", + "previewStop": "停止预览", + "previewFailed": "{name}无法预览", + "previewNeedsEnabled": "启用此提供商预览其音频", + "editConfiguration": "编辑配置", + "testConnection": "连接测试", + "testPassed": "已连接 · {count, plural, other {# 声音找到}}", + "testFailed": "连接失败", + "delete": "删除", "deleteConfirm": "Delete the provider \"{name}\"? Readers using its voices fall back to another provider.", - "deleteFailed": "Failed to delete {name}", - "deleted": "Provider deleted", - "saveFailed": "Failed to save {name}", - "saved": "Provider saved", - "formAddTitle": "New provider", - "formEditTitle": "Edit provider", - "formName": "Name", + "deleteFailed": "删除 {name} 失败", + "deleted": "提供商已删除", + "saveFailed": "保存 {name} 失败", + "saved": "提供商已保存", + "formAddTitle": "新提供商", + "formEditTitle": "编辑提供商", + "formName": "名称", "formNamePlaceholder": "Kokoro", "formBaseUrl": "Base URL", "formBaseUrlPlaceholder": "http://localhost:8880/v1", - "formApiKey": "API key", - "formApiKeyOptional": "Optional", + "formApiKey": "API 密钥", + "formApiKeyOptional": "可选", "formApiKeyPlaceholder": "sk-...", - "formApiKeyKeep": "Leave blank to keep the current key", - "formModel": "Default model", + "formApiKeyKeep": "留空以保留当前密钥", + "formModel": "默认模型", "formModelPlaceholder": "tts-1", - "formDiscovery": "This provider can list its own voices", - "formRequired": "Name and base URL are required" + "formDiscovery": "此提供商可以列出自己的音频", + "formRequired": "名称和基础 URL 为必填项", + "curation": { + "summary": "{count, plural, other {# 音频配置}}", + "importFromProvider": "从提供商导入", + "discoveryUnsupported": "此提供商没有显示音色列表端点。", + "discoverFailed": "无法发现声音", + "emptyImportOrPreset": "未配置声音。从提供商导入或加载预设。", + "emptyImport": "没有配置声音。从提供商导入。", + "emptyPreset": "未配置声音。加载预设即可开始。", + "emptyManual": "未配置声音。手动添加声音。", + "columnId": "ID", + "columnName": "名称", + "columnLocale": "区域设置", + "columnGender": "性别", + "genderMale": "男", + "genderFemale": "女", + "genderUnknown": "未知", + "cancelEdit": "取消编辑", + "editVoice": "编辑 {name}", + "deleteVoice": "删除 {name}", + "previewVoice": "预览 {name}", + "stopPreview": "停止预览{name}", + "saveVoices": "{count, plural, other {# folders}}" + } }, "serverFonts": { "title": "服务端字体", @@ -1427,11 +1459,13 @@ "opds": "OPDS", "kobo": "Kobo", "koreader": "KOReader", + "tts": "文本转语音", "integrations": "集成", "hardcover": "硬封面", "admin": "管理员", "system": "系统", - "account": "账户" + "account": "账户", + "podcasts": "播客" } }, "integrations": { @@ -1454,9 +1488,10 @@ "noPermission": "您没有管理元数据设置的权限。", "fields": { "title": "标题", - "subtitle": "字幕", + "subtitle": "副标题", "description": "描述", "cover": "封面", + "audioCover": "有声书封面", "authors": "作者", "publisher": "出版社", "publishedYear": "发布年份", @@ -1641,6 +1676,7 @@ "clearAllProviders": "清除所有提供商", "clearAll": "全部清除", "resetToDefault": "重置为默认值", + "bookCover": "图书封面", "reset": "重置", "dragProvidersHint": "将提供商从这里拖动到任何字段以添加它", "dragProviderHere": "将一个提供商拖到这里", @@ -1944,6 +1980,11 @@ "fontSizeHint": "基本文本像素大小", "lineHeight": "行高度", "lineHeightHint": "线之间的垂直间距", + "letterSpacingHint": "字母之间的间距。预定默认保存发布者的间距。", + "wordSpacing": "单词间距", + "wordSpacingHint": "单词之间的间距。预约默认保存发布者的间距。", + "textIndent": "首行缩进", + "textIndentHint": "在普通段落开头缩进。预约默认保存发布者的缩进.", "justify": "对齐文本", "justifyHint": "将文本对齐到两个边距", "hyphenation": "连字符断字", @@ -2164,7 +2205,7 @@ "exCleanDownload": "清除下载文件名", "exAlphabetical": "按字母顺序分组", "exSeriesFallback": "系列或独立后退", - "exOptionalSubtitle": "下载可选字幕", + "exOptionalSubtitle": "下载可选副标题", "exMultilingual": "多语言库", "exPublisher": "出版社组织", "exStacked": "叠放的可选文件夹", @@ -2205,7 +2246,7 @@ "saveLibraryPattern": "为 {name} 保存命名模板", "resetLibraryPattern": "将 {name} 恢复为默认模板", "tokenTitle": "书籍标题", - "tokenSubtitle": "书字幕", + "tokenSubtitle": "图书副标题", "tokenAuthors": "作者,以逗号分隔", "tokenNarrators": "讲述者,以逗号分隔", "tokenYear": "出版年份", @@ -2278,8 +2319,13 @@ "resultCopied": "解析结果已复制到剪贴板", "resultCopyFailed": "复制解析结果失败", "sampleBookNote": "每次预览均使用示例书籍", + "missingMetadata": "如果元数据丢失", + "caseNoSeriesLabel": "无系列", + "caseNoYearLabel": "无年份", + "caseNoAuthorLabel": "无作者", "save": { - "discard": "丢弃", + "upToDate": "无未保存的更改", + "discard": "放弃", "action": "保存更改" } }, @@ -2783,10 +2829,15 @@ "tabs": { "file-naming": "文件名称", "book-dock": "Book Dock", + "requests": "请求", "maintenance": "维护", "audit-log": "审计日志" }, "requests": { + "title": "请求信息", + "tabs": { + "clients": "下载客户端" + }, "testOk": "已连接到 {client} {version}", "testOkNoVersion": "已连接到 {client}", "lastTestOk": "上次测试 {time}:已连接", @@ -4669,7 +4720,7 @@ "bookFiles": "预订文件", "supportedFields": "支持的字段", "titleLabel": "标题", - "subtitleLabel": "字幕", + "subtitleLabel": "副标题", "authorsLabel": "作者", "narratorsLabel": "神秘者", "genresLabel": "Genres", @@ -5264,7 +5315,7 @@ }, "field": { "title": "标题", - "subtitle": "字幕", + "subtitle": "副标题", "authors": "作者", "authorsCommaSeparated": "作者 (逗号分隔)", "publisher": "出版社",