From 9ace4d337229fae2f322862294b05663e7c68ed1 Mon Sep 17 00:00:00 2001 From: OzzieIsaacs Date: Sat, 18 Aug 2018 12:15:32 +0200 Subject: [PATCH] Updated german translation Bugfix additional format upload without extension Bugfix additional format upload to gdrive pathes assembled by os.path.join --- cps/gdriveutils.py | 4 +- cps/helper.py | 4 +- cps/static/css/style.css | 2 + cps/templates/config_edit.html | 8 +- cps/templates/config_view_edit.html | 6 +- cps/translations/de/LC_MESSAGES/messages.mo | Bin 306639 -> 308415 bytes cps/translations/de/LC_MESSAGES/messages.po | 667 +++++++++++------- cps/translations/es/LC_MESSAGES/messages.po | 655 ++++++++++------- cps/translations/fr/LC_MESSAGES/messages.po | 655 ++++++++++------- cps/translations/it/LC_MESSAGES/messages.po | 661 ++++++++++------- cps/translations/ja/LC_MESSAGES/messages.po | 661 ++++++++++------- cps/translations/nl/LC_MESSAGES/messages.po | 661 ++++++++++------- cps/translations/pl/LC_MESSAGES/messages.po | 657 ++++++++++------- cps/translations/ru/LC_MESSAGES/messages.po | 655 ++++++++++------- .../zh_Hans_CN/LC_MESSAGES/messages.po | 661 ++++++++++------- cps/web.py | 86 ++- messages.pot | 641 ++++++++++------- 17 files changed, 4102 insertions(+), 2582 deletions(-) diff --git a/cps/gdriveutils.py b/cps/gdriveutils.py index 0c66f6ce..d8df9587 100644 --- a/cps/gdriveutils.py +++ b/cps/gdriveutils.py @@ -189,8 +189,8 @@ def getEbooksFolderId(drive=None): return -def getFile(pathId, fileName, drive=None): - drive = getDrive(Gdrive.Instance().drive) +def getFile(pathId, fileName, drive): + # drive = getDrive(Gdrive.Instance().drive) metaDataFile = "'%s' in parents and trashed = false and title = '%s'" % (pathId, fileName.replace("'", "\\'")) fileList = drive.ListFile({'q': metaDataFile}).GetList() diff --git a/cps/helper.py b/cps/helper.py index be1ba69f..41278156 100755 --- a/cps/helper.py +++ b/cps/helper.py @@ -184,7 +184,7 @@ def delete_book_file(book, calibrepath, book_format=None): return False -def update_dir_stucture_file(book_id, calibrepath): +def update_dir_structure_file(book_id, calibrepath): localbook = db.session.query(db.Books).filter(db.Books.id == book_id).first() path = os.path.join(calibrepath, localbook.path) @@ -277,7 +277,7 @@ def update_dir_stucture(book_id, calibrepath): if ub.config.config_use_google_drive: return update_dir_structure_gdrive(book_id) else: - return update_dir_stucture_file(book_id, calibrepath) + return update_dir_structure_file(book_id, calibrepath) def delete_book(book, calibrepath, book_format): if ub.config.config_use_google_drive: diff --git a/cps/static/css/style.css b/cps/static/css/style.css index 6d6f7414..94334c25 100644 --- a/cps/static/css/style.css +++ b/cps/static/css/style.css @@ -96,3 +96,5 @@ input.pill:not(:checked) + label .glyphicon { .upload-format-input-text {display: initial;} #btn-upload-format {display: none;} + +.panel-title > a { text-decoration: none;} diff --git a/cps/templates/config_edit.html b/cps/templates/config_edit.html index c0da4643..b332a45a 100644 --- a/cps/templates/config_edit.html +++ b/cps/templates/config_edit.html @@ -7,7 +7,7 @@

- + {{_('Library Configuration')}} @@ -68,7 +68,7 @@

- + {{_('Server Configuration')}} @@ -94,7 +94,7 @@

- + {{_('Logfile Configuration')}} @@ -168,7 +168,7 @@

- + {{_('E-Book converter')}} diff --git a/cps/templates/config_view_edit.html b/cps/templates/config_view_edit.html index 8e7c1d91..83fb4beb 100644 --- a/cps/templates/config_view_edit.html +++ b/cps/templates/config_view_edit.html @@ -7,7 +7,7 @@

- + {{_('View Configuration')}} @@ -57,7 +57,7 @@

- + {{_('Default settings for new users')}} @@ -99,7 +99,7 @@

- + {{_('Default visibilities for new users')}} diff --git a/cps/translations/de/LC_MESSAGES/messages.mo b/cps/translations/de/LC_MESSAGES/messages.mo index 37e1523f1fe6e181716a264e114f845813c81bf4..608c621b3b261357196171a435e531a6dc3aecb9 100644 GIT binary patch delta 132200 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 delta 130573 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

BI$%s(NDDAWpMU+((C8LbU9w8%y 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 VHz%Xj;6D8ZW#mm=npG{|{{zn4= %s" +msgstr "Bewertung >= %s" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "Suche" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "Gelesene Bücher" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "Ungelesene Bücher" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "Lese ein Buch" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "Bitte alle Felder ausfüllen!" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "Registieren" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen." -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "Der Benutzername oder die E-Mailadresse ist in bereits in Benutzung." -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Du bist nun eingeloggt als '%(nickname)s'" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "Falscher Benutzername oder Passwort" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "Login" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "Token wurde nicht gefunden" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "Das Token ist abgelaufen" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "Erfolg! Bitte zum Gerät zurückkehren" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "Bitte zuerst die SMTP Mail Einstellung konfigurieren ..." -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" -msgstr "Buch erfolgreich versandt an %(kindlemail)s" +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "Bitte die Kindle E-Mail Adresse zuuerst konfigurieren..." -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Das Buch wurde dem Bücherregal: %(sname)s hinzugefügt" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Das Buch wurde aus dem Bücherregal: %(sname)s entfernt" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "Keine Erlaubnis das Buch aus dem Bücherregal %(sname)s zu entfernen" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Es existiert bereits ein Bücheregal mit dem Titel '%(title)s'" -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "Bücherregal %(title)s erzeugt" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "Es trat ein Fehler auf" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "Bücherregal erzeugen" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "Bücherregal %(title)s verändert" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "Bücherregal editieren" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "Bücherregal %(name)s erfolgreich gelöscht" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "Bücherregal: '%(name)s'" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Fehler beim Öffnen. Bücherregel exisitert nicht oder ist nicht zugänglich" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Reihenfolge in Bücherregal '%(name)s' verändern" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "Es existiert ein Benutzerkonto für diese E-Mailadresse" -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's Profil" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "Profil aktualisiert" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "Unbekannt" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "Admin Seite" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "Calibre-web Konfiguration wurde aktualisiert" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "Konfiguration Benutzeroberfläche" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "Optionale Abhängigkeiten für Google Drive fehlen" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json nicht vorhanden, oder nicht lesbar" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "client_secrets.json nicht als Webapplication konfiguriert" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "Basis Konfiguration" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "SSL-Keydatei Speicherort ist ungültig, bitte gültigen Pfad angeben" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "SSL-Certdatei Speicherort ist ungültig, bitte gültigen Pfad angeben" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "Speicherort Logdatei ist ungültig, bitte Pfad korrigieren" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "DB Speicherort ist ungültig, bitte Pfad korrigieren" -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "Neuen Benutzer hinzufügen" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "Benutzer '%(user)s' angelegt" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "" "Es existiert ein Benutzerkonto für diese Emailadresse oder den " "Benutzernamen." -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "E-Mail Einstellungen aktualisiert" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "Test E-Mail erfolgreich an %(kindlemail)s versendet" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "Fehler beim versenden der Test E-Mail: %(res)s" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "E-Mail Einstellungen wurden aktualisiert" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "E-Mail Einstellungen editieren" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "Benutzer '%(nick)s' gelöscht" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "Benutzer '%(nick)s' aktualisiert" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "Es ist ein unbekanter Fehler aufgetreten" -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "Benutzer %(nick)s bearbeiten" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" "Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht " "zugänglich" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "Metadaten editieren" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "Die Dateiendung \"%s\" kann nicht auf diesen Server hochgeladen werden" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "Dateien müssen eine Erweiterung haben, um hochgeladen zu werden" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "Fehler beim Erzeugen des Pfads %s (Zugriff verweigert)" + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "Fehler beim speichern der Datei %s." -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "Dateiformat %s zu %s hinzugefügt" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "Unbekannt" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "Cover ist keine JPG Datei, konnte nicht gespeichert werden" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" -msgstr "Fehler beim editieren des Buchs, Details im Logfile" +msgstr "Fehler beim Editieren des Buchs, Details im Logfile" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" -msgstr "Datei müssen eine Erweiterung haben, um hochgeladen zu werden" - -#: cps/web.py:3297 -#, python-format -msgid "Failed to create path %s (Permission denied)." -msgstr "Fehler beim Erzeugen des Pfads %s (Zugriff verweigert)" - -#: cps/web.py:3302 +#: cps/web.py:3377 #, python-format msgid "Failed to store file %s (Permission denied)." msgstr "Fehler beim speichern der Datei %s (Zugriff verweigert)" -#: cps/web.py:3307 +#: cps/web.py:3382 #, python-format msgid "Failed to delete file %s (Permission denied)." msgstr "Fehler beim Löschen von Datei %s (Zugriff verweigert)" +#: cps/web.py:3464 +#, python-format +msgid "File %s uploaded" +msgstr "DAtei %s hochgeladen" + +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "Gestartet" + +#: cps/worker.py:221 +#, python-format +msgid "E-Mail: %stitle" +msgstr "E-Mail: %stitle" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "Konvertertool %(converter)s nicht gefunden" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "Fehler EBook-converter: %s" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "Kindlegen Aufruf mit Fehler %(error)s. Text: %(message)s fehlgeschlagen " + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "Beendet" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "Wartend" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "Die E-Mail wurde via calibre-web versendet" + +#: cps/worker.py:435 +msgid "Failed" +msgstr "Fehlgeschlagen" + #: cps/templates/admin.html:4 msgid "User list" msgstr "Benutzerliste" @@ -559,7 +626,7 @@ msgstr "Kindle" msgid "DLS" msgstr "DLS" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "Admin" @@ -613,96 +680,100 @@ msgid "Change SMTP settings" msgstr "SMTP Einstellungen ändern" #: cps/templates/admin.html:57 +msgid "Edit allowed domains" +msgstr "Editiere erlaubte Domains" + +#: cps/templates/admin.html:60 msgid "Configuration" msgstr "Konfiguration" -#: cps/templates/admin.html:60 +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "Calibre DB Pfad" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "Log Level" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "Bücher pro Seite" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "Hochladen" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "Öffentliche Registrierung" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "Anonymer Zugriff" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "Remote Login" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "Administration" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "Aktuelles Commit Datum" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "Neuestes Commit Datum" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "Calibre-DB neu verbinden" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "Calibre-web Neustarten" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "Stoppe Calibre-web" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "Suche nach Update" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "Update durchführen" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "Calibre-web wirklich neustarten?" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "Zurück" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "Calibre-web wirklich stoppen" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "Updatevorgang, bitte Seite nicht neu laden" @@ -722,38 +793,46 @@ msgstr "Mehr von" msgid "Delete Book" msgstr "Buch löschen" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "Lösche Formate:" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "Löschen" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "Buchtitel" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "Autor" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "Beschreibung" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "Tags" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "Serien" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "Serien ID" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "Bewertung" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is " "afterwards empty again)" @@ -761,95 +840,91 @@ msgstr "" "Cover URL (jpg, Cover wird heruntergeladen und in der Datenbank " "gespeichert, Feld erscheint anschließend wieder leer)" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "Herausgabedatum" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "Sprache" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "Ja" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "Nein" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "Format hochladen" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "Buch nach Bearbeitung ansehen" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "Metadaten laden" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "Abschicken" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "Sicher?" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "Das Buch wird aus der Calibre Datenbank" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "und von der Festplatte gelöscht" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "Löschen" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "Suchbegriff" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr "Suchbegriff" -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "Los!" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "Klicke auf das Bild um die Metadaten zu übertragen" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "Lade..." -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "Schließen" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "Herausgeber" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "Quelle" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "Fehler bei Suche!" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "Kein Ergebniss! Bitte anderen Begriff versuchen" @@ -874,78 +949,106 @@ msgid "Authenticate Google Drive" msgstr "Google Drive authentifizieren" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "Bitte Google Drive Konfiguration nach Login beenden" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "Google Drive Calibre Ordner" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" msgstr "Matadata Überwachungs-ID" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "Widerrufen" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "Server Konfiguration" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "Server Port" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "SSL Certdatei Speicherort (leerlassen für nicht SSL Server)" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "SSL Keydatei Speicherort (leerlassen für nicht SSL Server)" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "Konfiguration Logdatei" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "Pfad und Name der Logdatei (calibre-web.log bei keinem Eintrag)" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "Feature Konfiguration" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "Hochladen aktivieren" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "Anonymes Browsen aktivieren" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "Öffentliche Registrierung aktivieren" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "Remote login aktivieren (\"Magischer Link\")" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "Benutze" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "Einen API Schlüssel erhalten" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "Öffentlicher Goodreads API Schlüssel" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "eheimer Goodreads API Schlüssel" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "E-Book Konverter" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "Kein Konverter" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "Kindlegen benutzen" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "Benutze Calibre's Ebook Konverter" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "E-Book Konverter Einstellungen" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "Pfad zu Konvertertool" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "Login" @@ -954,8 +1057,8 @@ msgstr "Login" msgid "View Configuration" msgstr "Ansichtskonfiguration" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titel" @@ -1129,7 +1232,7 @@ msgstr "Einstellungen speichern" msgid "Save settings and send Test E-Mail" msgstr "Einstellungen speichern und Test E-Mail versenden" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "Nächste" @@ -1146,7 +1249,7 @@ msgstr "Entdecke (Zufälliges Buch)" msgid "Start" msgstr "Start" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Beliebte Bücher" @@ -1154,7 +1257,7 @@ msgstr "Beliebte Bücher" msgid "Popular publications from this catalog based on Downloads." msgstr "Beliebte Publikationen aus dieser Bibliothek basierend auf Downloadzahlen" -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Best bewertete Bücher" @@ -1174,7 +1277,7 @@ msgstr "Die neuesten Bücher" msgid "Show Random Books" msgstr "Zeige zufällige Bücher" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "Autoren" @@ -1190,7 +1293,7 @@ msgstr "Bücher nach Kategorien sortiert" msgid "Books ordered by series" msgstr "Bücher nach Reihen geordnet" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "Öffentliche Bücherregale" @@ -1198,7 +1301,7 @@ msgstr "Öffentliche Bücherregale" msgid "Books organized in public shelfs, visible to everyone" msgstr "Bücher organisiert in öffentlichem Bücherregal, sichtbar für jedermann" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "Deine Bücherregale" @@ -1216,80 +1319,80 @@ msgstr "Nagivation umschalten" msgid "Advanced Search" msgstr "Erweiterte Suche" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "Logout" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "Registrieren" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "Hochladen..." -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "Bitte die Seite nicht neu laden" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "Browsen" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "Kürzlich hinzugefügt" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "Bücher Sortiert" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "Sortiert nach" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "Neueste" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "Älteste" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "Aufsteigend" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "Absteigend" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "Entdecke" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "Kategorien" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "Sprachen" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "Bücherregal erzeugen" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "Über" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "Vorheriger" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "Buchdetails" @@ -1375,26 +1478,38 @@ msgstr "Versuche eine andere Suche" msgid "Results for:" msgstr "Ergebnisse für:" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "Such Resultate zu Bücherregal hinzufügen" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "Herausgabedatum von" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "Herausgabedatum bis" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "Tags ausschließen" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "Serie ausschließen" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "Sprache ausschließen" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "Bewertungen größer als" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "Bewertungen kleiner als" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "Lösche dieses Bücherregal" @@ -1455,6 +1570,42 @@ msgstr "Programm Bibliotheken" msgid "Installed Version" msgstr "Installierte Version" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "Aufgabenliste" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "Benutzer" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "Aufgabe" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "Status" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "Fortschritt" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "Laufzeit" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "Startzeitpunkt" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "Lösche beendete Aufgaben" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "Alle Aufgaben verstecken" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr "Kindle E-Mail" diff --git a/cps/translations/es/LC_MESSAGES/messages.po b/cps/translations/es/LC_MESSAGES/messages.po index 5e9733d7..1b98c9fa 100644 --- a/cps/translations/es/LC_MESSAGES/messages.po +++ b/cps/translations/es/LC_MESSAGES/messages.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" -"POT-Creation-Date: 2018-07-15 15:03+0200\n" +"POT-Creation-Date: 2018-08-18 12:11+0200\n" "PO-Revision-Date: 2017-04-04 15:09+0200\n" "Last-Translator: Juan F. Villa \n" "Language: es\n" @@ -25,505 +25,570 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" -#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422 +#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 +#: cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "No instalado" -#: cps/helper.py:68 -#, python-format -msgid "kindlegen binary %(kindlepath)s not found" +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" msgstr "" -#: cps/helper.py:74 +#: cps/helper.py:54 #, python-format msgid "epub format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:84 -msgid "kindlegen failed, no execution permissions" -msgstr "" - -#: cps/helper.py:99 +#: cps/helper.py:70 #, python-format -msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgid "Convert: %s" msgstr "" -#: cps/helper.py:178 -#, python-format -msgid "Failed to send mail: %s" -msgstr "Fallo al enviar el correo : %s" - -#: cps/helper.py:185 +#: cps/helper.py:79 msgid "Calibre-web test email" msgstr "Prueba de Correo Calibre-web" -#: cps/helper.py:186 cps/helper.py:198 -msgid "This email has been sent via calibre web." -msgstr "Este mensaje ha sido enviado via Calibre Web." +#: cps/helper.py:80 +msgid "Test E-Mail" +msgstr "" -#: cps/helper.py:195 cps/templates/detail.html:44 +#: cps/helper.py:102 cps/helper.py:112 +msgid "Could not find any formats suitable for sending by email" +msgstr "Formato no compatible para enviar por correo electronico" + +#: cps/helper.py:114 cps/templates/detail.html:44 cps/worker.py:219 msgid "Send to Kindle" msgstr "Enviar a Kindle" -#: cps/helper.py:215 cps/helper.py:229 -msgid "Could not find any formats suitable for sending by email" -msgstr "Formato no compatible para enviar por correo electronico" +#: cps/helper.py:115 +#, python-format +msgid "E-Mail: %s" +msgstr "" + +#: cps/helper.py:117 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "" -#: cps/helper.py:342 +#: cps/helper.py:212 #, python-format msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:351 +#: cps/helper.py:221 #, python-format msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:374 cps/helper.py:383 +#: cps/helper.py:244 cps/helper.py:253 #, python-format msgid "File %s not found on Google Drive" msgstr "" -#: cps/helper.py:394 +#: cps/helper.py:271 #, python-format msgid "Book path %s not found on Google Drive" msgstr "" -#: cps/web.py:954 +#: cps/web.py:1026 msgid "Requesting update package" msgstr "Solicitando paquete de actualización" -#: cps/web.py:955 +#: cps/web.py:1027 msgid "Downloading update package" msgstr "Descargando paquete de actualización" -#: cps/web.py:956 +#: cps/web.py:1028 msgid "Unzipping update package" msgstr "Descomprimiendo paquete de actualización" -#: cps/web.py:957 +#: cps/web.py:1029 msgid "Files are replaced" msgstr "Ficheros sustituidos" -#: cps/web.py:958 +#: cps/web.py:1030 msgid "Database connections are closed" msgstr "Los conexiones de base datos están cerradas" -#: cps/web.py:959 +#: cps/web.py:1031 msgid "Server is stopped" msgstr "El servidor está detenido" -#: cps/web.py:960 +#: cps/web.py:1032 msgid "Update finished, please press okay and reload page" msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página" -#: cps/web.py:1034 +#: cps/web.py:1052 msgid "Recently Added Books" msgstr "" -#: cps/web.py:1044 +#: cps/web.py:1062 msgid "Newest Books" msgstr "" -#: cps/web.py:1056 +#: cps/web.py:1074 msgid "Oldest Books" msgstr "" -#: cps/web.py:1068 +#: cps/web.py:1086 msgid "Books (A-Z)" msgstr "" -#: cps/web.py:1079 +#: cps/web.py:1097 msgid "Books (Z-A)" msgstr "" -#: cps/web.py:1108 +#: cps/web.py:1126 msgid "Hot Books (most downloaded)" msgstr "Libros populares (los mas descargados)" -#: cps/web.py:1121 +#: cps/web.py:1139 msgid "Best rated books" msgstr "Libros mejor valorados" -#: cps/templates/index.xml:32 cps/web.py:1132 +#: cps/templates/index.xml:32 cps/web.py:1151 msgid "Random Books" msgstr "Libros al azar" -#: cps/web.py:1146 +#: cps/web.py:1166 msgid "Author list" msgstr "Lista de autores" -#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909 +#: cps/web.py:1178 cps/web.py:1241 cps/web.py:1401 cps/web.py:1961 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Error en la apertura del eBook. El archivo no existe o no es accesible:" -#: cps/templates/index.xml:64 cps/web.py:1204 +#: cps/templates/index.xml:64 cps/web.py:1225 msgid "Series list" msgstr "Lista de series" -#: cps/web.py:1218 +#: cps/web.py:1239 #, python-format msgid "Series: %(serie)s" msgstr "Series : %(serie)s" -#: cps/web.py:1251 +#: cps/web.py:1272 msgid "Available languages" msgstr "Lenguajes disponibles" -#: cps/web.py:1268 +#: cps/web.py:1289 #, python-format msgid "Language: %(name)s" msgstr "Lenguaje: %(name)s" -#: cps/templates/index.xml:58 cps/web.py:1278 +#: cps/templates/index.xml:58 cps/web.py:1300 msgid "Category list" msgstr "Lista de categorias" -#: cps/web.py:1292 +#: cps/web.py:1314 #, python-format msgid "Category: %(name)s" msgstr "Categoría : %(name)s" -#: cps/web.py:1433 -msgid "Excecution permissions missing" +#: cps/templates/layout.html:71 cps/web.py:1451 +msgid "Tasks" msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1482 msgid "Statistics" msgstr "Estadisticas" -#: cps/web.py:1544 +#: cps/web.py:1588 msgid "" "Callback domain is not verified, please follow steps to verify domain in " "google developer console" msgstr "" -#: cps/web.py:1620 +#: cps/web.py:1664 msgid "Server restarted, please reload page" msgstr "Servidor reiniciado. Por favor, recargue la página" -#: cps/web.py:1623 +#: cps/web.py:1667 msgid "Performing shutdown of server, please close window" msgstr "Servidor en proceso de apagado. Por favor, cierre la ventana." -#: cps/web.py:1641 +#: cps/web.py:1685 msgid "Update done" msgstr "Actualización realizada" -#: cps/web.py:1698 +#: cps/web.py:1741 cps/web.py:1782 +#, python-format +msgid "%s: %s" +msgstr "" + +#: cps/web.py:1753 #, python-format msgid "Published after %s" msgstr "" -#: cps/web.py:1703 +#: cps/web.py:1758 msgid "Published before " msgstr "" -#: cps/web.py:1749 cps/web.py:1762 +#: cps/web.py:1776 +#, python-format +msgid "Rating <= %s" +msgstr "" + +#: cps/web.py:1778 +#, python-format +msgid "Rating >= %s" +msgstr "" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "búsqueda" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "Libros leídos" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "Libros no leídos" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "Leer un libro" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "¡Por favor completar todos los campos!" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "registrarse" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "Error desconocido. Por favor, inténtelo de nuevo mas tarde." -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "Usuario o dirección de correo en uso." -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Sesion iniciada como : '%(nickname)s'" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "Usuario o contraseña invalido" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "Iniciar sesión" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "Configurar primero los parametros SMTP por favor..." -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" -msgstr "Envio de Libro a %(kindlemail)s correctamente" +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Ha sucedido un error en el envio del Libro: %(res)s" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "Configurar primero la dirección de correo Kindle por favor..." -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "El libro fue agregado a el estante: %(sname)s" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "El libro fue removido del estante: %(sname)s" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Une étagère de ce nom '%(title)s' existe déjà." -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "Estante %(title)s creado" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "Ha sucedido un error" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "crear un estante" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "Estante %(title)s cambiado" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "Editar un estante" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "Estante %(name)s fue borrado correctamente" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "Estante: '%(name)s'" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Cambiar orden del estante: '%(name)s'" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "Existe una cuenta vinculada a esta dirección de correo." -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "Perfil de %(name)s" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "Perfil actualizado" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "Página de administración" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "Configuración de Calibre-web actualizada" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "Configuración básica" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "Localicación de la BD inválida. Por favor, introduzca la ruta correcta." -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "Agregar un nuevo usuario" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "Usuario '%(user)s' creado" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "" "Se ha encontrado una cuenta vinculada a esta dirección de correo o nombre" " de usuario." -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "Parámetros de correo actualizados" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "Exito al realizar envio de prueba a %(kindlemail)s" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "Error al realizar envio de prueba a E-Mail: %(res)s" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "Ajustes de correo electrónico actualizados" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "Editar parametros de correo" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "Usuario '%(nick)s' borrado" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "Usuario '%(nick)s' actualizado" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "Error inesperado." -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "Editar Usuario %(nick)s" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "editar metainformación" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "No se permite subir archivos con la extensión \"%s\" a este servidor" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "El archivo a subir debe tener una extensión" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "Fallo al crear la ruta %s (permiso negado)" + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "" -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" -msgstr "El archivo a subir debe tener una extensión" - -#: cps/web.py:3297 -#, python-format -msgid "Failed to create path %s (Permission denied)." -msgstr "Fallo al crear la ruta %s (permiso negado)" - -#: cps/web.py:3302 +#: cps/web.py:3377 #, python-format msgid "Failed to store file %s (Permission denied)." msgstr "Fallo al almacenar el archivo %s (permiso negado)" -#: cps/web.py:3307 +#: cps/web.py:3382 #, python-format msgid "Failed to delete file %s (Permission denied)." msgstr "Fallo al borrar el archivo %s (permiso negado)" +#: cps/web.py:3464 +#, python-format +msgid "File %s uploaded" +msgstr "" + +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "" + +#: cps/worker.py:221 +#, python-format +msgid "E-Mail: %stitle" +msgstr "" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "" + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "Este mensaje ha sido enviado via Calibre Web." + +#: cps/worker.py:435 +msgid "Failed" +msgstr "" + #: cps/templates/admin.html:4 msgid "User list" msgstr "lista de usuarios" @@ -544,7 +609,7 @@ msgstr "Kindle" msgid "DLS" msgstr "DLS" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "Administración" @@ -598,96 +663,100 @@ msgid "Change SMTP settings" msgstr "Cambiar parametros smtp" #: cps/templates/admin.html:57 +msgid "Edit allowed domains" +msgstr "" + +#: cps/templates/admin.html:60 msgid "Configuration" msgstr "Configuración" -#: cps/templates/admin.html:60 +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "Dir DB Calibre" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "Nivel de registro" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "Puerto" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "Libros por página" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "Subiendo" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "Registro público" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "Navegación anónima" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "Administración" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "Marca temporal del commit actual" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "Marca temporal del commit más reciente" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "Reconectar la BD Calibre" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "Reinicial Calibre-web" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "Detener Calibre-web" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "Buscar actualizaciones" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "Actualizar" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "¿Seguro que quiere reiniciar Calibre-web?" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "Regresar" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "¿Seguro que quiere detener Calibre-web?" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "Actualizando. Por favor, no recargue la página." @@ -707,132 +776,136 @@ msgstr "" msgid "Delete Book" msgstr "" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "Titulo del Libro" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "Autor" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "Descripcion" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "Etiqueta" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "Series" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "Id de la serie" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "Puntaje" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is " "afterwards empty again)" msgstr "" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "Fecha de publicación" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "Lenguaje" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "Si" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "No" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "Subir formato" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "Ver libro tras la edicion" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "Obtener metainformación" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "Enviar" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "Palabra clave" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr "Buscar palabras clave" -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "¡Vamos!" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "Haga clic en la portada para cargar la metainformación en el formulario" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "Cargando..." -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "Cerrar" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "Editor" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "Origen" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "¡Error en la búsqueda!" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "¡Sin resultados! Por favor, pruebe otra palabra clave." @@ -857,78 +930,106 @@ msgid "Authenticate Google Drive" msgstr "" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" msgstr "Metadata Watch Channel ID" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "Puerto del servidor" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "Permitir subida" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "Permitir navegación anónima" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "Permitir registro público" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "Inicio de Sesion" @@ -937,8 +1038,8 @@ msgstr "Inicio de Sesion" msgid "View Configuration" msgstr "" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titulo" @@ -1112,7 +1213,7 @@ msgstr "Guardar cambios" msgid "Save settings and send Test E-Mail" msgstr "Guardar cambios y enviar un correo de prueba" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "Siguiente" @@ -1129,7 +1230,7 @@ msgstr "Descubrir (Libros al azar)" msgid "Start" msgstr "Iniciar" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Libros Populares" @@ -1137,7 +1238,7 @@ msgstr "Libros Populares" msgid "Popular publications from this catalog based on Downloads." msgstr "Publicaciones mas populares para este catálogo basadas en las descargas." -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Libros mejor valorados" @@ -1157,7 +1258,7 @@ msgstr "Libros recientes" msgid "Show Random Books" msgstr "Mostrar libros al azar" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "Autores" @@ -1173,7 +1274,7 @@ msgstr "Libros ordenados por Categorias" msgid "Books ordered by series" msgstr "Libros ordenados por Series" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "Estantes públicos" @@ -1181,7 +1282,7 @@ msgstr "Estantes públicos" msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "Sus estantes" @@ -1197,80 +1298,80 @@ msgstr "Alternar navegación" msgid "Advanced Search" msgstr "Busqueda avanzada" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "Cerrar sesión" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "Registro" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "" -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "Explorar" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "Descubrir" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "Categoria" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "Lenguaje" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "Crear un estante" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "Acerca de" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "" @@ -1356,26 +1457,38 @@ msgstr "Intente una busqueda diferente" msgid "Results for:" msgstr "Resultados para:" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "Excluir etiquetas" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "Excluir series" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "Excluir idiomas" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "Borrar este estante" @@ -1436,6 +1549,42 @@ msgstr "Librerias del programa" msgid "Installed Version" msgstr "Version instalada" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr "Correo del Kindle" diff --git a/cps/translations/fr/LC_MESSAGES/messages.po b/cps/translations/fr/LC_MESSAGES/messages.po index a8d37e3b..57113aeb 100644 --- a/cps/translations/fr/LC_MESSAGES/messages.po +++ b/cps/translations/fr/LC_MESSAGES/messages.po @@ -20,7 +20,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" -"POT-Creation-Date: 2018-07-15 15:03+0200\n" +"POT-Creation-Date: 2018-08-18 12:11+0200\n" "PO-Revision-Date: 2017-10-26 22:42+0200\n" "Last-Translator: Nicolas Roudninski \n" "Language: fr\n" @@ -31,507 +31,572 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" -#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422 +#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 +#: cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "non installé" -#: cps/helper.py:68 -#, python-format -msgid "kindlegen binary %(kindlepath)s not found" +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" msgstr "" -#: cps/helper.py:74 +#: cps/helper.py:54 #, python-format msgid "epub format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:84 -msgid "kindlegen failed, no execution permissions" -msgstr "" - -#: cps/helper.py:99 +#: cps/helper.py:70 #, python-format -msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgid "Convert: %s" msgstr "" -#: cps/helper.py:178 -#, python-format -msgid "Failed to send mail: %s" -msgstr "Impossible d'envoyer le courriel : %s" - -#: cps/helper.py:185 +#: cps/helper.py:79 msgid "Calibre-web test email" msgstr "" -#: cps/helper.py:186 cps/helper.py:198 -msgid "This email has been sent via calibre web." -msgstr "Ce message a été envoyé depuis calibre web." +#: cps/helper.py:80 +msgid "Test E-Mail" +msgstr "" -#: cps/helper.py:195 cps/templates/detail.html:44 +#: cps/helper.py:102 cps/helper.py:112 +msgid "Could not find any formats suitable for sending by email" +msgstr "Impossible de trouver un format adapté à envoyer par courriel" + +#: cps/helper.py:114 cps/templates/detail.html:44 cps/worker.py:219 msgid "Send to Kindle" msgstr "Envoyer vers Kindle" -#: cps/helper.py:215 cps/helper.py:229 -msgid "Could not find any formats suitable for sending by email" -msgstr "Impossible de trouver un format adapté à envoyer par courriel" +#: cps/helper.py:115 +#, python-format +msgid "E-Mail: %s" +msgstr "" + +#: cps/helper.py:117 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "" -#: cps/helper.py:342 +#: cps/helper.py:212 #, python-format msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:351 +#: cps/helper.py:221 #, python-format msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:374 cps/helper.py:383 +#: cps/helper.py:244 cps/helper.py:253 #, python-format msgid "File %s not found on Google Drive" msgstr "" -#: cps/helper.py:394 +#: cps/helper.py:271 #, python-format msgid "Book path %s not found on Google Drive" msgstr "" -#: cps/web.py:954 +#: cps/web.py:1026 msgid "Requesting update package" msgstr "" -#: cps/web.py:955 +#: cps/web.py:1027 msgid "Downloading update package" msgstr "Téléchargement la mise à jour" -#: cps/web.py:956 +#: cps/web.py:1028 msgid "Unzipping update package" msgstr "Décompression de la mise à jour" -#: cps/web.py:957 +#: cps/web.py:1029 msgid "Files are replaced" msgstr "Fichiers remplacés" -#: cps/web.py:958 +#: cps/web.py:1030 msgid "Database connections are closed" msgstr "Connexion à la base de donnée fermée" -#: cps/web.py:959 +#: cps/web.py:1031 msgid "Server is stopped" msgstr "Serveur arrêté" -#: cps/web.py:960 +#: cps/web.py:1032 msgid "Update finished, please press okay and reload page" msgstr "Mise à jour terminée, merci d’appuyer sur okay et de rafraîchir la page" -#: cps/web.py:1034 +#: cps/web.py:1052 msgid "Recently Added Books" msgstr "Ajouts récents" -#: cps/web.py:1044 +#: cps/web.py:1062 msgid "Newest Books" msgstr "Livres récents" -#: cps/web.py:1056 +#: cps/web.py:1074 msgid "Oldest Books" msgstr "Anciens livres" -#: cps/web.py:1068 +#: cps/web.py:1086 msgid "Books (A-Z)" msgstr "Livres (A-Z)" -#: cps/web.py:1079 +#: cps/web.py:1097 msgid "Books (Z-A)" msgstr "Livres (Z-A)" -#: cps/web.py:1108 +#: cps/web.py:1126 msgid "Hot Books (most downloaded)" msgstr "Livres populaires (les plus téléchargés)" -#: cps/web.py:1121 +#: cps/web.py:1139 msgid "Best rated books" msgstr "Livres les mieux notés" -#: cps/templates/index.xml:32 cps/web.py:1132 +#: cps/templates/index.xml:32 cps/web.py:1151 msgid "Random Books" msgstr "Livres au hasard" -#: cps/web.py:1146 +#: cps/web.py:1166 msgid "Author list" msgstr "Liste des auteurs" -#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909 +#: cps/web.py:1178 cps/web.py:1241 cps/web.py:1401 cps/web.py:1961 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "" "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est " "pas accessible :" -#: cps/templates/index.xml:64 cps/web.py:1204 +#: cps/templates/index.xml:64 cps/web.py:1225 msgid "Series list" msgstr "Liste des séries" -#: cps/web.py:1218 +#: cps/web.py:1239 #, python-format msgid "Series: %(serie)s" msgstr "Séries : %(serie)s" -#: cps/web.py:1251 +#: cps/web.py:1272 msgid "Available languages" msgstr "Langues disponibles" -#: cps/web.py:1268 +#: cps/web.py:1289 #, python-format msgid "Language: %(name)s" msgstr "Langue : %(name)s" -#: cps/templates/index.xml:58 cps/web.py:1278 +#: cps/templates/index.xml:58 cps/web.py:1300 msgid "Category list" msgstr "Liste des catégories" -#: cps/web.py:1292 +#: cps/web.py:1314 #, python-format msgid "Category: %(name)s" msgstr "Catégorie : %(name)s" -#: cps/web.py:1433 -msgid "Excecution permissions missing" +#: cps/templates/layout.html:71 cps/web.py:1451 +msgid "Tasks" msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1482 msgid "Statistics" msgstr "Statistiques" -#: cps/web.py:1544 +#: cps/web.py:1588 msgid "" "Callback domain is not verified, please follow steps to verify domain in " "google developer console" msgstr "" -#: cps/web.py:1620 +#: cps/web.py:1664 msgid "Server restarted, please reload page" msgstr "Serveur redémarré, merci de rafraîchir la page" -#: cps/web.py:1623 +#: cps/web.py:1667 msgid "Performing shutdown of server, please close window" msgstr "" -#: cps/web.py:1641 +#: cps/web.py:1685 msgid "Update done" msgstr "Mise à jour effectuée" -#: cps/web.py:1698 +#: cps/web.py:1741 cps/web.py:1782 +#, python-format +msgid "%s: %s" +msgstr "" + +#: cps/web.py:1753 #, python-format msgid "Published after %s" msgstr "" -#: cps/web.py:1703 +#: cps/web.py:1758 msgid "Published before " msgstr "" -#: cps/web.py:1749 cps/web.py:1762 +#: cps/web.py:1776 +#, python-format +msgid "Rating <= %s" +msgstr "" + +#: cps/web.py:1778 +#, python-format +msgid "Rating >= %s" +msgstr "" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "recherche" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "Livres lus" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "Livres non-lus" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "Lire un livre" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "SVP, complétez tous les champs !" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "s’enregistrer" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "Une erreur a eu lieu. Merci de réessayez plus tard." -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "Ce nom d'utilisateur ou cette adresse de courriel est déjà utilisée." -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Vous êtes maintenant connecté sous : '%(nickname)s'" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "Mauvais nom d'utilisateur ou mot de passe" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "connexion" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "Jeton non trouvé" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "Jeton expiré" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "Réussite! Merci de vous tourner vers votre appareil" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "Veillez configurer les paramètres smtp d'abord..." -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" -msgstr "Livres envoyés à %(kindlemail)s avec succès" +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "Veuillez configurer votre adresse kindle d'abord..." -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Le livre a bien été ajouté à l'étagère : %(sname)s" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Le livre a été supprimé de l'étagère %(sname)s" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Une étagère de ce nom '%(title)s' existe déjà." -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "Étagère %(title)s créée" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "Il y a eu une erreur" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "créer une étagère" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "Modifier une étagère" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "l’étagère %(name)s a été supprimé avec succès" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "Étagère : '%(name)s'" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "Un compte avec cette adresse de courriel existe déjà." -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "Profil de %(name)s" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "Profil mis à jour" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "Page administrateur" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "Configuration de Calibre-web mise à jour" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "Configuration basique" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "" -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "Ajouter un nouvel utilisateur" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "Utilisateur '%(user)s' créé" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "Un compte avec cette adresse de courriel ou ce surnom existe déjà." -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "Paramètres de courriel mis à jour" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "Préférences e-mail mises à jour" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "Éditer les paramètres de courriel" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "Utilisateur '%(nick)s' supprimé" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "Utilisateur '%(nick)s' mis à jour" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "Oups ! Une erreur inconnue a eu lieu." -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "Éditer l'utilisateur %(nick)s" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" "Erreur à l’ouverture du livre. Le fichier n’existe pas ou n’est pas " "accessible" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "modifier les métadonnées" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "Pour être téléverser le fichier doit avoir une extension" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "Impossible de créer le chemin %s (permission refusée)" + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "" -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "inconnu" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" -msgstr "Pour être téléverser le fichier doit avoir une extension" - -#: cps/web.py:3297 -#, python-format -msgid "Failed to create path %s (Permission denied)." -msgstr "Impossible de créer le chemin %s (permission refusée)" - -#: cps/web.py:3302 +#: cps/web.py:3377 #, python-format msgid "Failed to store file %s (Permission denied)." msgstr "Impossible d'enregistrer le fichier %s (permission refusée)" -#: cps/web.py:3307 +#: cps/web.py:3382 #, python-format msgid "Failed to delete file %s (Permission denied)." msgstr "Impossible de supprimer le fichier %s (permission refusée)" +#: cps/web.py:3464 +#, python-format +msgid "File %s uploaded" +msgstr "" + +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "" + +#: cps/worker.py:221 +#, python-format +msgid "E-Mail: %stitle" +msgstr "" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "" + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "Ce message a été envoyé depuis calibre web." + +#: cps/worker.py:435 +msgid "Failed" +msgstr "" + #: cps/templates/admin.html:4 msgid "User list" msgstr "Liste des utilisateurs" @@ -552,7 +617,7 @@ msgstr "Kindle" msgid "DLS" msgstr "DLS" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "Administration" @@ -606,96 +671,100 @@ msgid "Change SMTP settings" msgstr "Changer les paramètre smtp" #: cps/templates/admin.html:57 +msgid "Edit allowed domains" +msgstr "" + +#: cps/templates/admin.html:60 msgid "Configuration" msgstr "Configuration" -#: cps/templates/admin.html:60 +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "Livres par page" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "Téléversement" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "Inscription public" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "Navigation anonyme" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "Administration" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "Se reconnecter à Calibre-web" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "Redémarrer Calibre-web" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "Arrêter Calibre-web" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "Rechercher les mise à jour" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "Effectuer la mise à jour" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "Voulez-vous vraiment redémarrer Calibre-web?" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "D’accord" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "Retour" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "Voulez-Vous vraiment arrêter Calibre-web?" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "Mise à jour en cours, ne pas rafraîchir la page" @@ -715,132 +784,136 @@ msgstr "" msgid "Delete Book" msgstr "Effacer le livre" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "Supprimer" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "Titre du livre" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "Auteur" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "Description" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "Étiquette" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "Séries" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "Id de série" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "Évaluation" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is " "afterwards empty again)" msgstr "" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "Date de publication" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "Langue" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "Oui" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "Non" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "voir le livre après l'édition" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "Obtenir les métadonnées" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "Soumettre" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "Etes-vous vraiment sur?" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "Le livre va être supprimé de la base de données de Calibre" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "et du disque dur" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "Supprimer" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "Mot-clé" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr " Rechercher le mot-clé " -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "Allez !" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "Chargement…" -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "Fermer" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "Editeur" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "Source" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "Rechercher les erreur!" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "Aucun résultat, Merci d’essayer un autre mot-clé." @@ -865,78 +938,106 @@ msgid "Authenticate Google Drive" msgstr "" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "Dossier Calibre de Google Drive" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" msgstr "" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "Autoriser le téléversement" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "Autoriser la navigation anonyme" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "Autoriser l’inscription publique" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "Utiliser" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "Obtenir la clé API" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "Connexion" @@ -945,8 +1046,8 @@ msgstr "Connexion" msgid "View Configuration" msgstr "" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titre" @@ -1120,7 +1221,7 @@ msgstr "Sauvegarder les réglages" msgid "Save settings and send Test E-Mail" msgstr "Sauvegarder les réglages et tester l’envoi d’e-mail" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "Suivant" @@ -1137,7 +1238,7 @@ msgstr "Découverte (livres au hasard)" msgid "Start" msgstr "Démarrer" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Livres populaires" @@ -1147,7 +1248,7 @@ msgstr "" "Publications populaires depuis le catalogue basées sur les " "téléchargements." -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Livres les mieux notés" @@ -1167,7 +1268,7 @@ msgstr "Les derniers livres" msgid "Show Random Books" msgstr "Montrer des livres au hasard" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "Auteurs" @@ -1183,7 +1284,7 @@ msgstr "Livres classés par catégorie" msgid "Books ordered by series" msgstr "Livres classés par série" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "Étagères publiques" @@ -1191,7 +1292,7 @@ msgstr "Étagères publiques" msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "Vos étagères" @@ -1207,80 +1308,80 @@ msgstr "Basculer la navigation" msgid "Advanced Search" msgstr "Recherche avancée" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "Déconnexion" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "S'enregistrer" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "" -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "Explorer" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "Ajouts récents" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "Classer les livres" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "Classer par" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "Récents" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "Anciens" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "Ascendant" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "Descendant" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "Découvrir" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "Catégories" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "Langues" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "Créer une étagère" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "À propos" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "Précédent" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "Détails du livre" @@ -1366,26 +1467,38 @@ msgstr "Essayer une recherche différente" msgid "Results for:" msgstr "Résultats pour :" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "Exclure des étiquettes" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "Exclure les séries" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "Exclure les langues" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "Effacer cette étagère" @@ -1446,6 +1559,42 @@ msgstr "Bibliothèque logiciel" msgid "Installed Version" msgstr "Version installée" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr "Courriel Kindle" diff --git a/cps/translations/it/LC_MESSAGES/messages.po b/cps/translations/it/LC_MESSAGES/messages.po index 3e7b94b6..c586ddee 100644 --- a/cps/translations/it/LC_MESSAGES/messages.po +++ b/cps/translations/it/LC_MESSAGES/messages.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" -"POT-Creation-Date: 2018-07-15 15:03+0200\n" +"POT-Creation-Date: 2018-08-18 12:11+0200\n" "PO-Revision-Date: 2017-04-04 15:09+0200\n" "Last-Translator: Marco Picone \n" "Language: it\n" @@ -25,511 +25,576 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" -#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422 +#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 +#: cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "non installato" -#: cps/helper.py:68 -#, python-format -msgid "kindlegen binary %(kindlepath)s not found" -msgstr "Non trovato" +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" +msgstr "Mancano autorizzazioni di esecuzione" -#: cps/helper.py:74 +#: cps/helper.py:54 #, python-format msgid "epub format not found for book id: %(book)d" msgstr "formato epub non trovato" -#: cps/helper.py:84 -msgid "kindlegen failed, no execution permissions" -msgstr "non ci sono permessi" - -#: cps/helper.py:99 -#, python-format -msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" -msgstr "errore" - -#: cps/helper.py:178 +#: cps/helper.py:70 #, python-format -msgid "Failed to send mail: %s" -msgstr "Impossibile inviare email: %s" +msgid "Convert: %s" +msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:79 msgid "Calibre-web test email" msgstr "test email Calibre-web" -#: cps/helper.py:186 cps/helper.py:198 -msgid "This email has been sent via calibre web." -msgstr "L'email è stata inviata tramite Calibre Web." +#: cps/helper.py:80 +msgid "Test E-Mail" +msgstr "" + +#: cps/helper.py:102 cps/helper.py:112 +msgid "Could not find any formats suitable for sending by email" +msgstr "Impossibile trovare i formati adatti per l'invio tramite email" -#: cps/helper.py:195 cps/templates/detail.html:44 +#: cps/helper.py:114 cps/templates/detail.html:44 cps/worker.py:219 msgid "Send to Kindle" msgstr "Invia a Kindle" -#: cps/helper.py:215 cps/helper.py:229 -msgid "Could not find any formats suitable for sending by email" -msgstr "Impossibile trovare i formati adatti per l'invio tramite email" +#: cps/helper.py:115 +#, python-format +msgid "E-Mail: %s" +msgstr "" -#: cps/helper.py:342 +#: cps/helper.py:117 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "" + +#: cps/helper.py:212 #, python-format msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:351 +#: cps/helper.py:221 #, python-format msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:374 cps/helper.py:383 +#: cps/helper.py:244 cps/helper.py:253 #, python-format msgid "File %s not found on Google Drive" msgstr "" -#: cps/helper.py:394 +#: cps/helper.py:271 #, python-format msgid "Book path %s not found on Google Drive" msgstr "" -#: cps/web.py:954 +#: cps/web.py:1026 msgid "Requesting update package" msgstr "Richiesta del pacchetto di aggiornamento" -#: cps/web.py:955 +#: cps/web.py:1027 msgid "Downloading update package" msgstr "Scaricare il pacchetto di aggiornamento" -#: cps/web.py:956 +#: cps/web.py:1028 msgid "Unzipping update package" msgstr "Decomprimere pacchetto di aggiornamento" -#: cps/web.py:957 +#: cps/web.py:1029 msgid "Files are replaced" msgstr "I file vengono sostituiti" -#: cps/web.py:958 +#: cps/web.py:1030 msgid "Database connections are closed" msgstr "Le connessioni di database sono chiuse" -#: cps/web.py:959 +#: cps/web.py:1031 msgid "Server is stopped" msgstr "Il server viene arrestato" -#: cps/web.py:960 +#: cps/web.py:1032 msgid "Update finished, please press okay and reload page" msgstr "Aggiornamento completato, prego premere bene e ricaricare pagina" -#: cps/web.py:1034 +#: cps/web.py:1052 msgid "Recently Added Books" msgstr "Libri aggiunti di recente" -#: cps/web.py:1044 +#: cps/web.py:1062 msgid "Newest Books" msgstr "I più nuovi libri" -#: cps/web.py:1056 +#: cps/web.py:1074 msgid "Oldest Books" msgstr "Libri più vecchi" -#: cps/web.py:1068 +#: cps/web.py:1086 msgid "Books (A-Z)" msgstr "Ebook (A-Z)" -#: cps/web.py:1079 +#: cps/web.py:1097 msgid "Books (Z-A)" msgstr "Ebook (Z-A)" -#: cps/web.py:1108 +#: cps/web.py:1126 msgid "Hot Books (most downloaded)" msgstr "Hot Books (più scaricati)" -#: cps/web.py:1121 +#: cps/web.py:1139 msgid "Best rated books" msgstr "I migliori libri valutati" -#: cps/templates/index.xml:32 cps/web.py:1132 +#: cps/templates/index.xml:32 cps/web.py:1151 msgid "Random Books" msgstr "Libri casuali" -#: cps/web.py:1146 +#: cps/web.py:1166 msgid "Author list" msgstr "Elenco degli autori" -#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909 +#: cps/web.py:1178 cps/web.py:1241 cps/web.py:1401 cps/web.py:1961 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "" "Errore durante l'apertura di eBook. Il file non esiste o il file non è " "accessibile:" -#: cps/templates/index.xml:64 cps/web.py:1204 +#: cps/templates/index.xml:64 cps/web.py:1225 msgid "Series list" msgstr "Lista delle serie" -#: cps/web.py:1218 +#: cps/web.py:1239 #, python-format msgid "Series: %(serie)s" msgstr "Serie :" -#: cps/web.py:1251 +#: cps/web.py:1272 msgid "Available languages" msgstr "Lingue disponibili" -#: cps/web.py:1268 +#: cps/web.py:1289 #, python-format msgid "Language: %(name)s" msgstr "Lingue: %(name)s" -#: cps/templates/index.xml:58 cps/web.py:1278 +#: cps/templates/index.xml:58 cps/web.py:1300 msgid "Category list" msgstr "Elenco categorie" -#: cps/web.py:1292 +#: cps/web.py:1314 #, python-format msgid "Category: %(name)s" msgstr "Categoria : %(name)s" -#: cps/web.py:1433 -msgid "Excecution permissions missing" -msgstr "Mancano autorizzazioni di esecuzione" +#: cps/templates/layout.html:71 cps/web.py:1451 +msgid "Tasks" +msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1482 msgid "Statistics" msgstr "Statistica" -#: cps/web.py:1544 +#: cps/web.py:1588 msgid "" "Callback domain is not verified, please follow steps to verify domain in " "google developer console" msgstr "" -#: cps/web.py:1620 +#: cps/web.py:1664 msgid "Server restarted, please reload page" msgstr "Server riavviato, ricarica pagina" -#: cps/web.py:1623 +#: cps/web.py:1667 msgid "Performing shutdown of server, please close window" msgstr "Eseguire l'arresto del server, chiudi la finestra." -#: cps/web.py:1641 +#: cps/web.py:1685 msgid "Update done" msgstr "Aggiornamento fatto" -#: cps/web.py:1698 +#: cps/web.py:1741 cps/web.py:1782 +#, python-format +msgid "%s: %s" +msgstr "" + +#: cps/web.py:1753 #, python-format msgid "Published after %s" msgstr "" -#: cps/web.py:1703 +#: cps/web.py:1758 msgid "Published before " msgstr "" -#: cps/web.py:1749 cps/web.py:1762 +#: cps/web.py:1776 +#, python-format +msgid "Rating <= %s" +msgstr "" + +#: cps/web.py:1778 +#, python-format +msgid "Rating >= %s" +msgstr "" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "ricerca" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "Leggere libri" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "Libri non letti" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "Leggere un libro" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "Compila tutti i campi" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "Registrare" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "Si è verificato un errore sconosciuto. Per favore riprova più tardi." -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "Questo nome utente o indirizzo email è già in uso." -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "ora sei connesso come : '%(nickname)s'" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "Nome utente o password errata" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "Accesso" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "Token non trovato" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "Il token è scaduto" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "Successo! Torna al tuo dispositivo" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "Configurare prima le impostazioni della posta SMTP..." -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" -msgstr "Libro inviare con successo %(kindlemail)s correttamente" +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Si è verificato un errore durante l'invio di questo libro: %(res)s" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "Si prega di configurare innanzitutto il tuo indirizzo email..." -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Il libro è stato aggiunto alla mensola: %(sname)s" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Il libro è stato rimosso dalla mensola: %(sname)s" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Uno scaffale con il nome '%(title)s' esiste già." -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "Mensola %(title)s creato" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "c'era un errore" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "creare uno scaffale" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "Mensola %(title)s cambiato" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "Modifica un ripiano" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "cancellato con successo il ripiano %(name)s" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "Mensola: '%(name)s'" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" "Errore durante l'apertura dello scaffale. La mensola non esiste o non è " "accessibile" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Modificare l'ordine della mensola: '%(name)s'" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "Trovato un account esistente per questo indirizzo email." -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "Profilo di %(name)s" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "Profilo aggiornato" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "Pagina di amministrazione" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "Aggiornamento della configurazione del calibro-web" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "Configurazione di base" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "Posizione DB non valida. Inserisci il percorso corretto." -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "Aggiungi un nuovo utente" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "utente '%(user)s' creato" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "" "È stato trovato un account collegato a questo indirizzo e-mail o nome " "utente." -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "Parametri di posta aggiornati" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "Successo quando invii il test a %(kindlemail)s" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "Impossibile inviare il test a E-Mail: %(res)s" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "Impostazioni email aggiornate" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "Modificare i parametri della posta" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "utente '%(nick)s' cancellati" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "utente '%(nick)s' aggiornato" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "Errore imprevisto." -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "Modifica utente %(nick)s" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" "Errore durante l'apertura di eBook. Il file non esiste o il file non è " "accessibile" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "modificare la metainformazione" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "Non è consentito caricare i file con l'estensione \"%s\" a questo server" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "Il file da caricare deve avere un'estensione" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "Impossibile creare il percorso %s (autorizzazione negata)" + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "" -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "Sconosciuto" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" -msgstr "Il file da caricare deve avere un'estensione" - -#: cps/web.py:3297 -#, python-format -msgid "Failed to create path %s (Permission denied)." -msgstr "Impossibile creare il percorso %s (autorizzazione negata)" - -#: cps/web.py:3302 +#: cps/web.py:3377 #, python-format msgid "Failed to store file %s (Permission denied)." msgstr "Impossibile archiviare il file %s (autorizzazione negata)" -#: cps/web.py:3307 +#: cps/web.py:3382 #, python-format msgid "Failed to delete file %s (Permission denied)." msgstr "Impossibile eliminare il file %s (autorizzazione negata)" +#: cps/web.py:3464 +#, python-format +msgid "File %s uploaded" +msgstr "" + +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "" + +#: cps/worker.py:221 +#, python-format +msgid "E-Mail: %stitle" +msgstr "" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "errore" + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "L'email è stata inviata tramite Calibre Web." + +#: cps/worker.py:435 +msgid "Failed" +msgstr "" + #: cps/templates/admin.html:4 msgid "User list" msgstr "elenco utenti" @@ -550,7 +615,7 @@ msgstr "Kindle" msgid "DLS" msgstr "DLS" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "Admin" @@ -604,96 +669,100 @@ msgid "Change SMTP settings" msgstr "Modificare SMTP impostazioni" #: cps/templates/admin.html:57 +msgid "Edit allowed domains" +msgstr "" + +#: cps/templates/admin.html:60 msgid "Configuration" msgstr "Configurazione" -#: cps/templates/admin.html:60 +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "Calibre DB dir" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "Livello del registro" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "Libri per pagina" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "Uploading" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "Registrazione pubblica" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "Navigazione anonima" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "Login remoto" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "Administration" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "Timestamp di commit corrente" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "Più recente commit timestamp" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "Ricollegare al DB Calibre" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "Ricomincia Calibre-web" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "Stop Calibre-web" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "Ricerca aggiornamenti" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "Esegui aggiornamento" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "Vuoi veramente riavviare Caliber-web?" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "Indietro" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "Vuoi veramente fermare Caliber-web?" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "Aggiornamento, non ricaricare la pagina." @@ -713,132 +782,136 @@ msgstr "Altro da" msgid "Delete Book" msgstr "Elimina libro" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "Elimina" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "Titolo del libro" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "Autore" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "Descrizione" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "Tags" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "Serie" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "Series id" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "Valutazione" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is " "afterwards empty again)" msgstr "" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "Data di pubblicazione" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "Lingua" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "Si" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "No" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "visualizzare il libro dopo la modifica" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "Ottieni metadati" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "Sottoscrivi" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "Sei davvero sicuro?" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "l libro verrà cancellato dal database Calibre\"" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "e dal disco rigido" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "Elimina" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "Parola chiave" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr "Cerca parola chiave" -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "Partire" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "Fai clic sul coperchio per caricare i metadati nel modulo" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "Caricamento in corso..." -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "Chiuso" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "Editore" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "fonte" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "Errore di ricerca!" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "Nessun risultato! Prova un'altra parola chiave." @@ -863,78 +936,106 @@ msgid "Authenticate Google Drive" msgstr "" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" msgstr "ID canale Watch Metadata" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "Porta del server" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "Abilita il caricamento" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "Abilita la navigazione anonima" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "Abilita la registrazione pubblica" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "Attiva login remoto (\"magic link\")" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "Uso" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "Ottenere una chiave API" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "API di Goodreads" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "Goodreads API Secret" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "Accesso" @@ -943,8 +1044,8 @@ msgstr "Accesso" msgid "View Configuration" msgstr "" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titolo" @@ -1118,7 +1219,7 @@ msgstr "Salva le impostazioni" msgid "Save settings and send Test E-Mail" msgstr "Salvare le impostazioni e inviare Test e-mail" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "Prossimo" @@ -1135,7 +1236,7 @@ msgstr "Scoprire (Libri casuali)" msgid "Start" msgstr "Inizio" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Hot Ebook" @@ -1143,7 +1244,7 @@ msgstr "Hot Ebook" msgid "Popular publications from this catalog based on Downloads." msgstr "Pubblicazioni popolari di questo catalogo in base ai download." -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Libri più votati" @@ -1163,7 +1264,7 @@ msgstr "Gli ultimi Libri" msgid "Show Random Books" msgstr "Mostra libri casuali" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "Autori" @@ -1179,7 +1280,7 @@ msgstr "Libri ordinati per categoria" msgid "Books ordered by series" msgstr "Libri ordinati per serie" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "Ripiani pubblici" @@ -1187,7 +1288,7 @@ msgstr "Ripiani pubblici" msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "I tuoi scaffali" @@ -1203,80 +1304,80 @@ msgstr "Toggle navigation" msgid "Advanced Search" msgstr "Ricerca avanzata" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "Logout" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "Registrare" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "" -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "Navigare" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "Aggiunto recentemente" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "Libri ordinati" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "Ordina per" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "i più nuovi" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "il più vecchio" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "Ascendente" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "Discendente" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "Per scoprire" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "Categoria" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "lingua" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "Crea una mensola" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "Di" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "Precedente" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "Dettagli ebook" @@ -1364,26 +1465,38 @@ msgstr "Prova una ricerca diversa" msgid "Results for:" msgstr "Risultati per:" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "Elimina i tag" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "Escludi la serie" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "Elimina lingue" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "Cancellare questa libreria" @@ -1444,6 +1557,42 @@ msgstr "Programma libreria" msgid "Installed Version" msgstr "Versione installata" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr "Email Kindle" diff --git a/cps/translations/ja/LC_MESSAGES/messages.po b/cps/translations/ja/LC_MESSAGES/messages.po index 8d1a5701..1318c706 100644 --- a/cps/translations/ja/LC_MESSAGES/messages.po +++ b/cps/translations/ja/LC_MESSAGES/messages.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" -"POT-Creation-Date: 2018-07-15 15:03+0200\n" +"POT-Creation-Date: 2018-08-18 12:11+0200\n" "PO-Revision-Date: 2018-02-07 02:20-0500\n" "Last-Translator: white \n" "Language: ja\n" @@ -20,503 +20,568 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" -#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422 +#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 +#: cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "インストールされません" -#: cps/helper.py:68 -#, python-format -msgid "kindlegen binary %(kindlepath)s not found" -msgstr "kindlegenのバイナリー %(kindlepath)s は見つかりません" +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" +msgstr "実行許可はありません" -#: cps/helper.py:74 +#: cps/helper.py:54 #, python-format msgid "epub format not found for book id: %(book)d" msgstr "本ID %(book)d のepub拡張子は見つからない" -#: cps/helper.py:84 -msgid "kindlegen failed, no execution permissions" -msgstr "kindlegenは失敗しました、実行許可はありません" - -#: cps/helper.py:99 -#, python-format -msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" -msgstr "Kindlegen 失敗しました、エーラ %(error)s. メッセージ: %(message)s" - -#: cps/helper.py:178 +#: cps/helper.py:70 #, python-format -msgid "Failed to send mail: %s" -msgstr "送信は失敗しました: %s" +msgid "Convert: %s" +msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:79 msgid "Calibre-web test email" msgstr "Calibre-webのテストメール" -#: cps/helper.py:186 cps/helper.py:198 -msgid "This email has been sent via calibre web." -msgstr "このメールはcalibre webより送信されました" +#: cps/helper.py:80 +msgid "Test E-Mail" +msgstr "" + +#: cps/helper.py:102 cps/helper.py:112 +msgid "Could not find any formats suitable for sending by email" +msgstr "メールを送るための適切な拡張子は見つかりません" -#: cps/helper.py:195 cps/templates/detail.html:44 +#: cps/helper.py:114 cps/templates/detail.html:44 cps/worker.py:219 msgid "Send to Kindle" msgstr "Kindleに送信する" -#: cps/helper.py:215 cps/helper.py:229 -msgid "Could not find any formats suitable for sending by email" -msgstr "メールを送るための適切な拡張子は見つかりません" +#: cps/helper.py:115 +#, python-format +msgid "E-Mail: %s" +msgstr "" -#: cps/helper.py:342 +#: cps/helper.py:117 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "" + +#: cps/helper.py:212 #, python-format msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s" msgstr "タイトルを\"%s\"から\"%s\"の改名は失敗しました。エーラ: %s" -#: cps/helper.py:351 +#: cps/helper.py:221 #, python-format msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s" msgstr "著者を\"%s\"から\"%s\"の改名は失敗しました。エーラ:%s" -#: cps/helper.py:374 cps/helper.py:383 +#: cps/helper.py:244 cps/helper.py:253 #, python-format msgid "File %s not found on Google Drive" msgstr "" -#: cps/helper.py:394 +#: cps/helper.py:271 #, python-format msgid "Book path %s not found on Google Drive" msgstr "" -#: cps/web.py:954 +#: cps/web.py:1026 msgid "Requesting update package" msgstr "更新パッケージを要求します" -#: cps/web.py:955 +#: cps/web.py:1027 msgid "Downloading update package" msgstr "更新パッケージをダウンロードします" -#: cps/web.py:956 +#: cps/web.py:1028 msgid "Unzipping update package" msgstr "更新パッケージをZIP解凍します" -#: cps/web.py:957 +#: cps/web.py:1029 msgid "Files are replaced" msgstr "ファイルを書き換えました" -#: cps/web.py:958 +#: cps/web.py:1030 msgid "Database connections are closed" msgstr "データベースの接続が閉じられました" -#: cps/web.py:959 +#: cps/web.py:1031 msgid "Server is stopped" msgstr "サーバがシャットダウンされました" -#: cps/web.py:960 +#: cps/web.py:1032 msgid "Update finished, please press okay and reload page" msgstr "更新完了、Okayまたは再読み込みボタンを押してください" -#: cps/web.py:1034 +#: cps/web.py:1052 msgid "Recently Added Books" msgstr "最近追加された本" -#: cps/web.py:1044 +#: cps/web.py:1062 msgid "Newest Books" msgstr "最新の本" -#: cps/web.py:1056 +#: cps/web.py:1074 msgid "Oldest Books" msgstr "最古の本" -#: cps/web.py:1068 +#: cps/web.py:1086 msgid "Books (A-Z)" msgstr "本(A-Z)" -#: cps/web.py:1079 +#: cps/web.py:1097 msgid "Books (Z-A)" msgstr "本 (Z-A)" -#: cps/web.py:1108 +#: cps/web.py:1126 msgid "Hot Books (most downloaded)" msgstr "有名な本(ダウンロード数)" -#: cps/web.py:1121 +#: cps/web.py:1139 msgid "Best rated books" msgstr "最高評判の本" -#: cps/templates/index.xml:32 cps/web.py:1132 +#: cps/templates/index.xml:32 cps/web.py:1151 msgid "Random Books" msgstr "任意の本" -#: cps/web.py:1146 +#: cps/web.py:1166 msgid "Author list" msgstr "著者リスト" -#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909 +#: cps/web.py:1178 cps/web.py:1241 cps/web.py:1401 cps/web.py:1961 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "電子本を開けません。ファイルは存在しないまたはアクセスできません" -#: cps/templates/index.xml:64 cps/web.py:1204 +#: cps/templates/index.xml:64 cps/web.py:1225 msgid "Series list" msgstr "叢書リスト" -#: cps/web.py:1218 +#: cps/web.py:1239 #, python-format msgid "Series: %(serie)s" msgstr "叢書: %(serie)s" -#: cps/web.py:1251 +#: cps/web.py:1272 msgid "Available languages" msgstr "利用可能な言語" -#: cps/web.py:1268 +#: cps/web.py:1289 #, python-format msgid "Language: %(name)s" msgstr "言語: %(name)s" -#: cps/templates/index.xml:58 cps/web.py:1278 +#: cps/templates/index.xml:58 cps/web.py:1300 msgid "Category list" msgstr "カテゴリーリスト" -#: cps/web.py:1292 +#: cps/web.py:1314 #, python-format msgid "Category: %(name)s" msgstr "カテゴリー: %(name)s" -#: cps/web.py:1433 -msgid "Excecution permissions missing" -msgstr "実行許可はありません" +#: cps/templates/layout.html:71 cps/web.py:1451 +msgid "Tasks" +msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1482 msgid "Statistics" msgstr "統計" -#: cps/web.py:1544 +#: cps/web.py:1588 msgid "" "Callback domain is not verified, please follow steps to verify domain in " "google developer console" msgstr "" -#: cps/web.py:1620 +#: cps/web.py:1664 msgid "Server restarted, please reload page" msgstr "サーバを再起動しました、ページを再読み込みしてください" -#: cps/web.py:1623 +#: cps/web.py:1667 msgid "Performing shutdown of server, please close window" msgstr "サーバをシャットダウンします、ページを閉じてください" -#: cps/web.py:1641 +#: cps/web.py:1685 msgid "Update done" msgstr "更新完了" -#: cps/web.py:1698 +#: cps/web.py:1741 cps/web.py:1782 +#, python-format +msgid "%s: %s" +msgstr "" + +#: cps/web.py:1753 #, python-format msgid "Published after %s" msgstr "" -#: cps/web.py:1703 +#: cps/web.py:1758 msgid "Published before " msgstr "" -#: cps/web.py:1749 cps/web.py:1762 +#: cps/web.py:1776 +#, python-format +msgid "Rating <= %s" +msgstr "" + +#: cps/web.py:1778 +#, python-format +msgid "Rating >= %s" +msgstr "" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "検索" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "既読の本" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "未読の本" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "本を読む" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "全ての項目を入力してください" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "登録" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "未知のエーラが発生しました、再度試してください" -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "ユーザ名またはメールアドレスは使われました" -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "%(nickname)s としてログインします" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "ユーザ名またはパスワードは間違いました" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "ログイン" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "トークンは見つかりません" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "トークンは失効されました" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "成功しまた!端末に戻ってください" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "SMTPメールをまず設定してください" -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" -msgstr "本を %(kindlemail)s に送信しました" +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "%(res)s を送信する際にエーラが発生しました" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "Kindleのメールアドレスをまず設定してください" -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "本 %(sname)s を書架に追加されました" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "本 %(sname)s を書架から除去されました" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "名前を使った書架 '%(title)s' は既に存在しました" -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "書架%(title)s は作成されました" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "エーラが発生しました" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "書架を作成する" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "書架 %(title)s 変わりました" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "書架を編集する" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "%(name)s の書架を削除されました" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "書架: '%(name)s'" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "書架を開けません。書架は存在しないまたはアクセスできません" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "'%(name)s' の書架の順番を入れ替える" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "このメールアドレスを使ったアカウント名は既に存在します" -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "%(name)sのプロファイル" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "プロファイルが更新されました" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "管理者ページ" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "Calibre-web 設定を更新されました" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "基本設定" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "ログファイルの場所は不適切です。正しい場所を入力してください" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "データベースの場所は不適切です。正しい場所を入力してください" -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "新規ユーザ追加" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "ユーザ '%(user)s' が作成されました" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "同じメールアドレスまたは通所は既に存在しました" -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "メール設定が更新されました" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "テストメールから%(kindlemail)sまでの送信は完了しました" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "テストメールに送信するエラーが発生しました: %(res)s" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "メール設定更新されました" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "メール編集設定" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "ユーザ '%(nick)s' 削除されました" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "ユーザ '%(nick)s' 更新されました" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "不明のエーラが発生しました" -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "ユーザ編集 %(nick)s" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "電子本を開けません。ファイルは存在しないまたはアクセスできません" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "メタデータを編集します" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "ファイル拡張子 \"%s\" をこのサーバにアップロードする許可はありません" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "ファイルをアップロードするために拡張子が必要です" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "場所 %s の作成を失敗しました (許可拒否)" + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "フアイル %s の保存を失敗しました" -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "不明" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" -msgstr "ファイルをアップロードするために拡張子が必要です" - -#: cps/web.py:3297 -#, python-format -msgid "Failed to create path %s (Permission denied)." -msgstr "場所 %s の作成を失敗しました (許可拒否)" - -#: cps/web.py:3302 +#: cps/web.py:3377 #, python-format msgid "Failed to store file %s (Permission denied)." msgstr "ファイル %s の保存を失敗しました (許可拒否)" -#: cps/web.py:3307 +#: cps/web.py:3382 #, python-format msgid "Failed to delete file %s (Permission denied)." msgstr "ファイル %s の削除を失敗しました (許可拒否)" +#: cps/web.py:3464 +#, python-format +msgid "File %s uploaded" +msgstr "" + +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "" + +#: cps/worker.py:221 +#, python-format +msgid "E-Mail: %stitle" +msgstr "" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "Kindlegen 失敗しました、エーラ %(error)s. メッセージ: %(message)s" + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "このメールはcalibre webより送信されました" + +#: cps/worker.py:435 +msgid "Failed" +msgstr "" + #: cps/templates/admin.html:4 msgid "User list" msgstr "ユーザリスト" @@ -537,7 +602,7 @@ msgstr "Kindle" msgid "DLS" msgstr "DLS" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "管理者" @@ -591,96 +656,100 @@ msgid "Change SMTP settings" msgstr "SMTP設定を変更する" #: cps/templates/admin.html:57 +msgid "Edit allowed domains" +msgstr "" + +#: cps/templates/admin.html:60 msgid "Configuration" msgstr "設定" -#: cps/templates/admin.html:60 +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "Calibre データベースの場所" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "ログレベル" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "ポート" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "本数毎ページ" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "アップロード中" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "公的登録" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "匿名ブラウジング" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "遠距離ログイン" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "管理" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "現在コミットのタイムスタンプ" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "最新コミットのタイムスタンプ" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "Calibreデータベースに再接続します" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "Calibre-webを再起動します" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "Calibre-webを停止します" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "更新を確認します" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "更新を実行します" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "Calibre-webを再起動します。宜しいですか?" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "はい" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "戻る" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "Calibre-webを停止します。宜しいですか?" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "更新中、ページ再読み込みしないでください" @@ -700,132 +769,136 @@ msgstr "もっと多い" msgid "Delete Book" msgstr "本を削除" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "削除" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "本のタイトル" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "著者" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "詳細" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "タグ" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "叢書" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "叢書番号" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "評価" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is " "afterwards empty again)" msgstr "" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "発行日" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "言語" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "はい" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "いいえ" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "アップロード拡張子" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "編集してから本を表示します" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "メタデータを取得します" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "提出" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "宜しいですか?" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "この本はCalibreデータベースから削除されます" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "とハードディクスから" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "削除" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "キーワード" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr "キーワードを検索します" -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "行く" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "メタデータをフォームに読み込むためにカバーをクリックしてください" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "読み込み中..." -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "閉じる" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "出版社" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "ソース" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "検索エーラ!" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "結果なし! 他のキーワードで検索してください。" @@ -850,78 +923,106 @@ msgid "Authenticate Google Drive" msgstr "" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" msgstr "" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "サーバポート" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "ログファイルの場所と名前 (エントリーなしでcalibre-web.log)" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "アップロードを 有効する" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "匿名ブラウジングを有効する" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "公的登録を有効する" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "遠距離ログインを有効する (\"マジックリンク\")" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "使う" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "APIキーを取得する" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "GoodreadsのAPIキー" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "GoodreadsのAPI秘密" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "ログイン" @@ -930,8 +1031,8 @@ msgstr "ログイン" msgid "View Configuration" msgstr "" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "タイトル" @@ -1103,7 +1204,7 @@ msgstr "設定を保存する" msgid "Save settings and send Test E-Mail" msgstr "設定を保存するとテストメールを送信する" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "次" @@ -1120,7 +1221,7 @@ msgstr "発見 (任意の本)" msgid "Start" msgstr "開始" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "最新の本" @@ -1128,7 +1229,7 @@ msgstr "最新の本" msgid "Popular publications from this catalog based on Downloads." msgstr "ダウンロードによりカタログの有名な出版" -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "最高評価の本" @@ -1148,7 +1249,7 @@ msgstr "最近の本" msgid "Show Random Books" msgstr "任意の本を表示する" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "著者" @@ -1164,7 +1265,7 @@ msgstr "カテゴリーで並び替える" msgid "Books ordered by series" msgstr "叢書で並び替える" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "公的の叢書" @@ -1172,7 +1273,7 @@ msgstr "公的の叢書" msgid "Books organized in public shelfs, visible to everyone" msgstr "公的の叢書に選び分ける、みんなに見える" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "あなたの叢書" @@ -1188,80 +1289,80 @@ msgstr "ナビゲーション" msgid "Advanced Search" msgstr "詳細検索" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "ロクアウト" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "登録" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "" -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "ブラウズ" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "最近追加" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "整列した本" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "整列" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "最新" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "最古" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "昇順" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "降順" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "発見" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "カテゴリー" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "言語" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "叢書を作成する" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "このサイトについて" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "前" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "本の詳細" @@ -1347,26 +1448,38 @@ msgstr "他の検索を試してくだい" msgid "Results for:" msgstr "結果:" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "タグを除外" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "叢書を除外" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "言語を除外" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "この叢書を削除" @@ -1427,6 +1540,42 @@ msgstr "プログラム図書館" msgid "Installed Version" msgstr "インストールされたバージョン" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr "Kindleメール" diff --git a/cps/translations/nl/LC_MESSAGES/messages.po b/cps/translations/nl/LC_MESSAGES/messages.po index 4f4b4cef..9bb4a307 100644 --- a/cps/translations/nl/LC_MESSAGES/messages.po +++ b/cps/translations/nl/LC_MESSAGES/messages.po @@ -22,7 +22,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-web dutch translation by Ed Driesen (GPL V3)\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-07-15 15:03+0200\n" +"POT-Creation-Date: 2018-08-18 12:11+0200\n" "PO-Revision-Date: 2017-06-21 20:15+0200\n" "Last-Translator: \n" "Language: nl\n" @@ -33,507 +33,572 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" -#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422 +#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 +#: cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "niet geïnstalleerd" -#: cps/helper.py:68 -#, python-format -msgid "kindlegen binary %(kindlepath)s not found" -msgstr "kindlegen binary %(kindlepath)s niet gevonden" +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" +msgstr "Rechten om uit te voeren ontbreken" -#: cps/helper.py:74 +#: cps/helper.py:54 #, python-format msgid "epub format not found for book id: %(book)d" msgstr "epub type niet gevonden voor boek met id: %(book)d" -#: cps/helper.py:84 -msgid "kindlegen failed, no execution permissions" -msgstr "kindlegen gefaald, geen rechten om uit te voeren" - -#: cps/helper.py:99 -#, python-format -msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" -msgstr "Kindlegen gefaald met Error %(error)s. Bericht: %(message)s" - -#: cps/helper.py:178 +#: cps/helper.py:70 #, python-format -msgid "Failed to send mail: %s" -msgstr "Mail sturen gefaald: %s" +msgid "Convert: %s" +msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:79 msgid "Calibre-web test email" msgstr "Calibre-web test email" -#: cps/helper.py:186 cps/helper.py:198 -msgid "This email has been sent via calibre web." -msgstr "Deze mail werd verstuurd met calibre web." +#: cps/helper.py:80 +msgid "Test E-Mail" +msgstr "" + +#: cps/helper.py:102 cps/helper.py:112 +msgid "Could not find any formats suitable for sending by email" +msgstr "Kon geen geschikte formaten vinden om te verzenden per email" -#: cps/helper.py:195 cps/templates/detail.html:44 +#: cps/helper.py:114 cps/templates/detail.html:44 cps/worker.py:219 msgid "Send to Kindle" msgstr "Stuur naar Kindle:" -#: cps/helper.py:215 cps/helper.py:229 -msgid "Could not find any formats suitable for sending by email" -msgstr "Kon geen geschikte formaten vinden om te verzenden per email" +#: cps/helper.py:115 +#, python-format +msgid "E-Mail: %s" +msgstr "" -#: cps/helper.py:342 +#: cps/helper.py:117 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "" + +#: cps/helper.py:212 #, python-format msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:351 +#: cps/helper.py:221 #, python-format msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:374 cps/helper.py:383 +#: cps/helper.py:244 cps/helper.py:253 #, python-format msgid "File %s not found on Google Drive" msgstr "" -#: cps/helper.py:394 +#: cps/helper.py:271 #, python-format msgid "Book path %s not found on Google Drive" msgstr "" -#: cps/web.py:954 +#: cps/web.py:1026 msgid "Requesting update package" msgstr "Update pakket wordt aangevraagd" -#: cps/web.py:955 +#: cps/web.py:1027 msgid "Downloading update package" msgstr "Update pakket wordt gedownload" -#: cps/web.py:956 +#: cps/web.py:1028 msgid "Unzipping update package" msgstr "Update pakket wordt uitgepakt" -#: cps/web.py:957 +#: cps/web.py:1029 msgid "Files are replaced" msgstr "Bestanden zijn vervangen" -#: cps/web.py:958 +#: cps/web.py:1030 msgid "Database connections are closed" msgstr "Database verbindingen zijn gesloten" -#: cps/web.py:959 +#: cps/web.py:1031 msgid "Server is stopped" msgstr "Server is gestopt" -#: cps/web.py:960 +#: cps/web.py:1032 msgid "Update finished, please press okay and reload page" msgstr "Update voltooid, klik op ok en herlaad de pagina" -#: cps/web.py:1034 +#: cps/web.py:1052 msgid "Recently Added Books" msgstr "Recent toegevoegde boeken" -#: cps/web.py:1044 +#: cps/web.py:1062 msgid "Newest Books" msgstr "Nieuwste boeken" -#: cps/web.py:1056 +#: cps/web.py:1074 msgid "Oldest Books" msgstr "Oudste boeken" -#: cps/web.py:1068 +#: cps/web.py:1086 msgid "Books (A-Z)" msgstr "Boeken (A-Z)" -#: cps/web.py:1079 +#: cps/web.py:1097 msgid "Books (Z-A)" msgstr "Boeken (A-Z)" -#: cps/web.py:1108 +#: cps/web.py:1126 msgid "Hot Books (most downloaded)" msgstr "Populaire boeken (meeste downloads)" -#: cps/web.py:1121 +#: cps/web.py:1139 msgid "Best rated books" msgstr "Best beoordeelde boeken" -#: cps/templates/index.xml:32 cps/web.py:1132 +#: cps/templates/index.xml:32 cps/web.py:1151 msgid "Random Books" msgstr "Willekeurige boeken" -#: cps/web.py:1146 +#: cps/web.py:1166 msgid "Author list" msgstr "Auteur lijst" -#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909 +#: cps/web.py:1178 cps/web.py:1241 cps/web.py:1401 cps/web.py:1961 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "" "Fout bij openen van het boek. Bestand bestaat niet of is niet " "toegankelijk:" -#: cps/templates/index.xml:64 cps/web.py:1204 +#: cps/templates/index.xml:64 cps/web.py:1225 msgid "Series list" msgstr "Serie lijst" -#: cps/web.py:1218 +#: cps/web.py:1239 #, python-format msgid "Series: %(serie)s" msgstr "Serie: %(serie)s" -#: cps/web.py:1251 +#: cps/web.py:1272 msgid "Available languages" msgstr "Beschikbare talen" -#: cps/web.py:1268 +#: cps/web.py:1289 #, python-format msgid "Language: %(name)s" msgstr "Taal: %(name)s" -#: cps/templates/index.xml:58 cps/web.py:1278 +#: cps/templates/index.xml:58 cps/web.py:1300 msgid "Category list" msgstr "Categorie lijst" -#: cps/web.py:1292 +#: cps/web.py:1314 #, python-format msgid "Category: %(name)s" msgstr "Categorie: %(name)s" -#: cps/web.py:1433 -msgid "Excecution permissions missing" -msgstr "Rechten om uit te voeren ontbreken" +#: cps/templates/layout.html:71 cps/web.py:1451 +msgid "Tasks" +msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1482 msgid "Statistics" msgstr "Statistieken" -#: cps/web.py:1544 +#: cps/web.py:1588 msgid "" "Callback domain is not verified, please follow steps to verify domain in " "google developer console" msgstr "" -#: cps/web.py:1620 +#: cps/web.py:1664 msgid "Server restarted, please reload page" msgstr "Server herstart, gelieve de pagina herladen" -#: cps/web.py:1623 +#: cps/web.py:1667 msgid "Performing shutdown of server, please close window" msgstr "Bezig met het stoppen van de server, gelieve venster te sluiten" -#: cps/web.py:1641 +#: cps/web.py:1685 msgid "Update done" msgstr "Update voltooid" -#: cps/web.py:1698 +#: cps/web.py:1741 cps/web.py:1782 +#, python-format +msgid "%s: %s" +msgstr "" + +#: cps/web.py:1753 #, python-format msgid "Published after %s" msgstr "" -#: cps/web.py:1703 +#: cps/web.py:1758 msgid "Published before " msgstr "" -#: cps/web.py:1749 cps/web.py:1762 +#: cps/web.py:1776 +#, python-format +msgid "Rating <= %s" +msgstr "" + +#: cps/web.py:1778 +#, python-format +msgid "Rating >= %s" +msgstr "" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "zoek" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "Gelezen Boeken" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "Ongelezen Boeken" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "Lees een boek" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "Gelieve alle velden in te vullen!" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "registreer" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "Een onbekende fout deed zich voor. Gelieve later nog eens te proberen." -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "Deze gebruikersnaam of dit emailadres is reeds in gebruik." -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "je bent nu ingelogd als: '%(nickname)s'" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "Verkeerde gebruikersnaam of Wachtwoord" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "login" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "Token niet gevonden" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "Token is verlopen" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "Gelukt! Ga terug naar je apparaat" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "Gelieve de SMTP mail instellingen eerst te configureren..." -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" -msgstr "Boek met succes verstuurd naar %(kindlemail)s" +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Er trad een fout op bij het versturen van dit boek: %(res)s" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "Gelieve eerst je kindle email adres te configureren..." -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Boek werd toegevoegd aan boekenplank: %(sname)s" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Boek werd verwijderd van boekenplank: %(sname)s" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Een boekenplank met de naam '%(title)s' bestaat reeds." -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "Boekenplank %(title)s aangemaakt" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "Er deed zich een fout voor" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "maak een boekenplank" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "Boekenplank %(title)s gewijzigd" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "Bewerk een boekenplank" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "Boekenplank %(name)s succesvol gewist" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "Boekenplank: '%(name)s'" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" "Fout bij openen boekenplank. Boekenplank bestaat niet of is niet " "toegankelijk" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Verander volgorde van Boekenplank: '%(name)s'" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "Een bestaand gebruiker gevonden voor dit email adres." -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "%(name)s's profiel" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "Profiel aangepast" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "Administratie pagina" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "Calibre-web configuratie aangepast" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "Basis configuratie" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "DB locatie is niet geldig, gelieve het correcte pad in te geven" -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "Voeg nieuwe gebruiker toe" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "Gebruiker '%(user)s' aangemaakt" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "Een bestaande gebruiker gevonden voor dit emailadres of gebruikersnaam." -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "Mail instellingen aangepast" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "Test email met succes verstuurd naar %(kindlemail)s" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "Er trad een fout op met het versturen van de test email: %(res)s" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "Email instellingen aangepast" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "Bewerk mail instellingen" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "Gebruiker '%(nick)s' verwijderd" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "Gebruiker '%(nick)s' aangepast" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "Een onbekende fout deed zich voor." -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "Bewerk gebruiker '%(nick)s'" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "Fout bij openen eBook. Het bestand bestaat niet of is niet toegankelijk" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "Bewerk metadata" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "Het uploaden van bestandsextensie \"%s\" is niet toegestaan op deze server" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "Up te loaden bestanden dienen een extensie te hebben" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "Het pad %s aanmaken mislukt (Geen toestemming)." + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "Bestand opslaan niet gelukt voor %s." -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "onbekend" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" -msgstr "Up te loaden bestanden dienen een extensie te hebben" - -#: cps/web.py:3297 -#, python-format -msgid "Failed to create path %s (Permission denied)." -msgstr "Het pad %s aanmaken mislukt (Geen toestemming)." - -#: cps/web.py:3302 +#: cps/web.py:3377 #, python-format msgid "Failed to store file %s (Permission denied)." msgstr "Bestand %s opslaan mislukt (Geen toestemming)." -#: cps/web.py:3307 +#: cps/web.py:3382 #, python-format msgid "Failed to delete file %s (Permission denied)." msgstr "Bestand %s wissen mislukt (Geen toestemming)." +#: cps/web.py:3464 +#, python-format +msgid "File %s uploaded" +msgstr "" + +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "" + +#: cps/worker.py:221 +#, python-format +msgid "E-Mail: %stitle" +msgstr "" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "Kindlegen gefaald met Error %(error)s. Bericht: %(message)s" + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "Deze mail werd verstuurd met calibre web." + +#: cps/worker.py:435 +msgid "Failed" +msgstr "" + #: cps/templates/admin.html:4 msgid "User list" msgstr "Gebruikerslijst" @@ -554,7 +619,7 @@ msgstr "Kindlle" msgid "DLS" msgstr "DLS" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "Administratie" @@ -608,96 +673,100 @@ msgid "Change SMTP settings" msgstr "Bewerk SMTP instellingen" #: cps/templates/admin.html:57 +msgid "Edit allowed domains" +msgstr "" + +#: cps/templates/admin.html:60 msgid "Configuration" msgstr "Configuratie" -#: cps/templates/admin.html:60 +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "Calibre DB map" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "Log niveau" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "Poort" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "Boeken per pagina" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "Aan het uploaden" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "Publieke registratie" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "Anoniem verkennen" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "Login op afstand" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "Administratie" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "Huidige commit tijdsstempel" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "Nieuwste commit tijdsstempel" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "Herverbinden met calibre DB" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "Herstart Calibre-web" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "Stop Calibre-web" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "Controleer voor update" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "Voer update uit" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "Wil je Calibre-web echt herstarten?" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "Terug" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "Wil je Calibre-web echt stoppen?" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "Aan het updaten, gelieve de pagina niet te herladen" @@ -717,132 +786,136 @@ msgstr "Meer van" msgid "Delete Book" msgstr "Wis boek" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "Wis" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "Boek titel" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "Auteur" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "Omschrijving" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "Tags" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "Series" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "Series id" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "Beoordeling" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is " "afterwards empty again)" msgstr "" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "Publicatie datum" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "Taal" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "Ja" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "Nee" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "Upload type" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "bekijk boek na bewerking" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "Verkrijg metadata" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "Opslaan" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "Ben je zeker?" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "Boek wordt nu gewist uit de Calibre database" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "en van de harde schijf" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "Wis" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "Zoekwoord" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr "Zoek voor zoekwoord" -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "Start!" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "Klik op de omslag om de metatadata in het formulier te laden" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "Aan het laden..." -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "Sluit" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "Uitgever" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "Bron" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "Zoek fout!" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "Geen resultaat! Gelieve een ander zoekwoord proberen" @@ -867,78 +940,106 @@ msgid "Authenticate Google Drive" msgstr "" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" msgstr "Metadata Watch Channel ID" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "Server poort" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "Uploaden aanzetten" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "Anoniem verkennen aanzetten" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "Publieke registratie aanzetten" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "Maak op afstand ionloggen mogelijk (\"magic link\")" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "Gebruik" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "Verkrijg een API sleutel" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "Goodreads API sleutel" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "Goodreads API geheim" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "Login" @@ -947,8 +1048,8 @@ msgstr "Login" msgid "View Configuration" msgstr "" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Titel" @@ -1122,7 +1223,7 @@ msgstr "Bewaar instelling" msgid "Save settings and send Test E-Mail" msgstr "Bewaar instellingen en stuur test email" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "Volgende" @@ -1139,7 +1240,7 @@ msgstr "Ontdek (Willekeurige Boeken)" msgid "Start" msgstr "Start" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Populaire Boeken" @@ -1147,7 +1248,7 @@ msgstr "Populaire Boeken" msgid "Popular publications from this catalog based on Downloads." msgstr "Populaire publicaties van deze cataloog gebaseerd op Downloads." -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Best beoordeeld" @@ -1167,7 +1268,7 @@ msgstr "Recentste boeken" msgid "Show Random Books" msgstr "Toon Willekeurige Boeken" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "Auteurs" @@ -1183,7 +1284,7 @@ msgstr "Boeken gesorteerd op Categorie" msgid "Books ordered by series" msgstr "Boeken gesorteerd op Serie" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "Publieke Boekenplanken" @@ -1191,7 +1292,7 @@ msgstr "Publieke Boekenplanken" msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "Jou Boekenplanken" @@ -1207,80 +1308,80 @@ msgstr "Kies navigatie" msgid "Advanced Search" msgstr "Geavanceerd zoeken" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "Log uit" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "Registreer" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "" -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "Verkennen" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "Recent Toegevoegd" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "Gesorteerde Boeken" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "Sorteren op" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "Nieuwste" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "Oudste" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "Oplopend" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "Aflopend" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "Ontdek" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "Categorieën" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "Talen" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "Maak een boekenplank" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "Over" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "Vorige" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "Boek Details" @@ -1366,26 +1467,38 @@ msgstr "Gelieve een ander zoekwoord proberen" msgid "Results for:" msgstr "Resultaten voor:" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "Sluit Tags uit" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "Sluit Series uit" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "Sluit Talen uit" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "Wis deze boekenplank" @@ -1446,6 +1559,42 @@ msgstr "Programma bibliotheek" msgid "Installed Version" msgstr "Geïnstalleerde versie" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr "Kindle email" diff --git a/cps/translations/pl/LC_MESSAGES/messages.po b/cps/translations/pl/LC_MESSAGES/messages.po index 5221d71f..0ed7ca56 100644 --- a/cps/translations/pl/LC_MESSAGES/messages.po +++ b/cps/translations/pl/LC_MESSAGES/messages.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre Web - polski (POT: 2017-04-11 22:51)\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-07-15 15:03+0200\n" +"POT-Creation-Date: 2018-08-18 12:11+0200\n" "PO-Revision-Date: 2017-04-11 22:51+0200\n" "Last-Translator: Radosław Kierznowski \n" "Language: pl\n" @@ -24,505 +24,570 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" -#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422 +#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 +#: cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "nie zainstalowane" -#: cps/helper.py:68 -#, python-format -msgid "kindlegen binary %(kindlepath)s not found" +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" msgstr "" -#: cps/helper.py:74 +#: cps/helper.py:54 #, python-format msgid "epub format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:84 -msgid "kindlegen failed, no execution permissions" -msgstr "" - -#: cps/helper.py:99 +#: cps/helper.py:70 #, python-format -msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgid "Convert: %s" msgstr "" -#: cps/helper.py:178 -#, python-format -msgid "Failed to send mail: %s" -msgstr "Nie można wysłać poczty: %s" - -#: cps/helper.py:185 +#: cps/helper.py:79 msgid "Calibre-web test email" msgstr "Calibre-web testowy email" -#: cps/helper.py:186 cps/helper.py:198 -msgid "This email has been sent via calibre web." -msgstr "Ten e-mail został wysłany przez Calibre Web." - -#: cps/helper.py:195 cps/templates/detail.html:44 -msgid "Send to Kindle" -msgstr "Wyślij do Kindle" +#: cps/helper.py:80 +msgid "Test E-Mail" +msgstr "" -#: cps/helper.py:215 cps/helper.py:229 +#: cps/helper.py:102 cps/helper.py:112 msgid "Could not find any formats suitable for sending by email" msgstr "" "Nie można znaleźć żadnych formatów przystosowane do wysyłania pocztą " "e-mail" -#: cps/helper.py:342 +#: cps/helper.py:114 cps/templates/detail.html:44 cps/worker.py:219 +msgid "Send to Kindle" +msgstr "Wyślij do Kindle" + +#: cps/helper.py:115 +#, python-format +msgid "E-Mail: %s" +msgstr "" + +#: cps/helper.py:117 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "" + +#: cps/helper.py:212 #, python-format msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:351 +#: cps/helper.py:221 #, python-format msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:374 cps/helper.py:383 +#: cps/helper.py:244 cps/helper.py:253 #, python-format msgid "File %s not found on Google Drive" msgstr "" -#: cps/helper.py:394 +#: cps/helper.py:271 #, python-format msgid "Book path %s not found on Google Drive" msgstr "" -#: cps/web.py:954 +#: cps/web.py:1026 msgid "Requesting update package" msgstr "Żądanie o pakiet aktualizacji" -#: cps/web.py:955 +#: cps/web.py:1027 msgid "Downloading update package" msgstr "Pobieranie pakietu aktualizacji" -#: cps/web.py:956 +#: cps/web.py:1028 msgid "Unzipping update package" msgstr "Rozpakowywanie pakietu aktualizacji" -#: cps/web.py:957 +#: cps/web.py:1029 msgid "Files are replaced" msgstr "Pliki zostały zastąpione" -#: cps/web.py:958 +#: cps/web.py:1030 msgid "Database connections are closed" msgstr "Połączenia z bazą danych zostały zakończone" -#: cps/web.py:959 +#: cps/web.py:1031 msgid "Server is stopped" msgstr "Serwer jest zatrzymany" -#: cps/web.py:960 +#: cps/web.py:1032 msgid "Update finished, please press okay and reload page" msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę" -#: cps/web.py:1034 +#: cps/web.py:1052 msgid "Recently Added Books" msgstr "" -#: cps/web.py:1044 +#: cps/web.py:1062 msgid "Newest Books" msgstr "" -#: cps/web.py:1056 +#: cps/web.py:1074 msgid "Oldest Books" msgstr "" -#: cps/web.py:1068 +#: cps/web.py:1086 msgid "Books (A-Z)" msgstr "" -#: cps/web.py:1079 +#: cps/web.py:1097 msgid "Books (Z-A)" msgstr "" -#: cps/web.py:1108 +#: cps/web.py:1126 msgid "Hot Books (most downloaded)" msgstr "Najpopularniejsze książki (najczęściej pobierane)" -#: cps/web.py:1121 +#: cps/web.py:1139 msgid "Best rated books" msgstr "Najlepiej oceniane książki" -#: cps/templates/index.xml:32 cps/web.py:1132 +#: cps/templates/index.xml:32 cps/web.py:1151 msgid "Random Books" msgstr "Losowe książki" -#: cps/web.py:1146 +#: cps/web.py:1166 msgid "Author list" msgstr "Lista autorów" -#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909 +#: cps/web.py:1178 cps/web.py:1241 cps/web.py:1401 cps/web.py:1961 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:" -#: cps/templates/index.xml:64 cps/web.py:1204 +#: cps/templates/index.xml:64 cps/web.py:1225 msgid "Series list" msgstr "Lista serii" -#: cps/web.py:1218 +#: cps/web.py:1239 #, python-format msgid "Series: %(serie)s" msgstr "Seria: %(serie)s" -#: cps/web.py:1251 +#: cps/web.py:1272 msgid "Available languages" msgstr "Dostępne języki" -#: cps/web.py:1268 +#: cps/web.py:1289 #, python-format msgid "Language: %(name)s" msgstr "Język: %(name)s" -#: cps/templates/index.xml:58 cps/web.py:1278 +#: cps/templates/index.xml:58 cps/web.py:1300 msgid "Category list" msgstr "Lista kategorii" -#: cps/web.py:1292 +#: cps/web.py:1314 #, python-format msgid "Category: %(name)s" msgstr "Kategoria: %(name)s" -#: cps/web.py:1433 -msgid "Excecution permissions missing" +#: cps/templates/layout.html:71 cps/web.py:1451 +msgid "Tasks" msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1482 msgid "Statistics" msgstr "Statystyki" -#: cps/web.py:1544 +#: cps/web.py:1588 msgid "" "Callback domain is not verified, please follow steps to verify domain in " "google developer console" msgstr "" -#: cps/web.py:1620 +#: cps/web.py:1664 msgid "Server restarted, please reload page" msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę" -#: cps/web.py:1623 +#: cps/web.py:1667 msgid "Performing shutdown of server, please close window" msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno" -#: cps/web.py:1641 +#: cps/web.py:1685 msgid "Update done" msgstr "Aktualizacja zakończona" -#: cps/web.py:1698 +#: cps/web.py:1741 cps/web.py:1782 +#, python-format +msgid "%s: %s" +msgstr "" + +#: cps/web.py:1753 #, python-format msgid "Published after %s" msgstr "" -#: cps/web.py:1703 +#: cps/web.py:1758 msgid "Published before " msgstr "" -#: cps/web.py:1749 cps/web.py:1762 +#: cps/web.py:1776 +#, python-format +msgid "Rating <= %s" +msgstr "" + +#: cps/web.py:1778 +#, python-format +msgid "Rating >= %s" +msgstr "" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "szukaj" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "Przeczytane książki" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "Nieprzeczytane książki" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "Czytaj książkę" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "Proszę wypełnić wszystkie pola!" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "rejestracja" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później." -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "Nazwa użytkownika lub adres e-mail jest już w użyciu." -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Zalogowałeś się jako: '%(nickname)s'" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "Błędna nazwa użytkownika lub hasło" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "logowanie" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..." -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" -msgstr "Książka została pomyślnie wysłana do %(kindlemail)s" +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "Proszę najpierw skonfigurować adres e-mail swojego kindla..." -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Książka została dodana do półki: %(sname)s" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Książka została usunięta z półki: %(sname)s" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Półka o nazwie '%(title)s' już istnieje." -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "Półka %(title)s została utworzona" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "Wystąpił błąd" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "utwórz półkę" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "Półka %(title)s została zmieniona" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "Edytuj półkę" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "pomyślnie usunięto półkę %(name)s" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "Półka: '%(name)s'" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Zmieniono kolejność półki: '%(name)s'" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "Znaleziono istniejące konto dla tego adresu e-mail." -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "Profil użytkownika %(name)s" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "Zaktualizowano profil" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "Portal administracyjny" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "Konfiguracja Calibre-web została zaktualizowana" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "Podstawowa konfiguracja" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "Lokalizacja bazy danych jest nieprawidłowa, wpisz poprawną ścieżkę" -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "Dodaj nowego użytkownika" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "Użytkownik '%(user)s' został utworzony" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub nazwy użytkownika." -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "Zaktualizowano ustawienia poczty e-mail" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "Testowy e-mail został pomyślnie wysłany do %(kindlemail)s" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "Wystąpił błąd podczas wysyłania testowej wiadomości e-mail: %(res)s" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "Zaktualizowano ustawienia e-mail" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "Edytuj ustawienia poczty e-mail" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "Użytkownik '%(nick)s' został usunięty" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "Użytkownik '%(nick)s' został zaktualizowany" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "Wystąpił nieznany błąd." -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "Edytuj użytkownika %(nick)s" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "edytuj metadane" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "Rozszerzenie pliku \"%s\" nie jest dozwolone do przesłania na ten serwer" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "Plik do przesłania musi mieć rozszerzenie" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "Nie udało się utworzyć łącza %s (Odmowa dostępu)." + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "" -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" -msgstr "Plik do przesłania musi mieć rozszerzenie" - -#: cps/web.py:3297 -#, python-format -msgid "Failed to create path %s (Permission denied)." -msgstr "Nie udało się utworzyć łącza %s (Odmowa dostępu)." - -#: cps/web.py:3302 +#: cps/web.py:3377 #, python-format msgid "Failed to store file %s (Permission denied)." msgstr "Nie można przechowywać pliku %s (Odmowa dostępu)." -#: cps/web.py:3307 +#: cps/web.py:3382 #, python-format msgid "Failed to delete file %s (Permission denied)." msgstr "Nie udało się usunąć pliku %s (Odmowa dostępu)." +#: cps/web.py:3464 +#, python-format +msgid "File %s uploaded" +msgstr "" + +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "" + +#: cps/worker.py:221 +#, python-format +msgid "E-Mail: %stitle" +msgstr "" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "" + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "Ten e-mail został wysłany przez Calibre Web." + +#: cps/worker.py:435 +msgid "Failed" +msgstr "" + #: cps/templates/admin.html:4 msgid "User list" msgstr "Lista użytkowników" @@ -543,7 +608,7 @@ msgstr "Kindle" msgid "DLS" msgstr "DLS" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "Portal administracyjny" @@ -597,96 +662,100 @@ msgid "Change SMTP settings" msgstr "Zmień ustawienia SMTP" #: cps/templates/admin.html:57 +msgid "Edit allowed domains" +msgstr "" + +#: cps/templates/admin.html:60 msgid "Configuration" msgstr "Konfiguracja" -#: cps/templates/admin.html:60 +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "Folder bazy danych Calibre" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "Poziom logów" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "Port" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "Ilość książek na stronie" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "Wysyłanie" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "Publiczna rejestracja" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "Anonimowe przeglądanie" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "Zarządzanie" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "Znacznik czasowy zainstalowanej wersji" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "Znacznik czasowy nowej wersji" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "Połącz ponownie z bazą danych Calibre" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "Uruchom ponownie Calibre Web" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "Zatrzymaj Calibre Web" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "Sprawdź aktualizacje" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "Wykonaj aktualizację" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "Na pewno chcesz uruchomić ponownie Calibre Web?" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "OK" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "Wróć" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "Na pewno chcesz zatrzymać Calibre Web?" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "Aktualizowanie, proszę nie odświeżać strony" @@ -706,132 +775,136 @@ msgstr "" msgid "Delete Book" msgstr "" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "Tytuł książki" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "Autor" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "Opis" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "Tagi" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "Seria" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "ID serii" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "Ocena" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is " "afterwards empty again)" msgstr "" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "Data publikacji" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "Język" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "Tak" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "Nie" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "wyświetl książkę po edycji" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "Uzyskaj metadane" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "Wyślij" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "Słowo kluczowe" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr " Szukaj słowa kluczowego " -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "Idź!" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "Kliknij okładkę, aby załadować metadane do formularza" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "Ładowanie..." -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "Zamknij" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "Wydawca" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "Źródło" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "Błąd wyszukiwania!" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "Brak wyników! Spróbuj innego słowa kluczowego." @@ -856,79 +929,107 @@ msgid "Authenticate Google Drive" msgstr "" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 #, fuzzy msgid "Metadata Watch Channel ID" msgstr "Metadane Watch Channel ID" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "Port serwera" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "Włącz wysyłanie" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "Włącz anonimowe przeglądanie" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "Włącz publiczną rejestrację" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "Zaloguj się" @@ -937,8 +1038,8 @@ msgstr "Zaloguj się" msgid "View Configuration" msgstr "" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Tytuł" @@ -1112,7 +1213,7 @@ msgstr "Zapisz ustawienia" msgid "Save settings and send Test E-Mail" msgstr "Zapisz ustawienia i wyślij testową wiadomość e-mail" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "Następne" @@ -1129,7 +1230,7 @@ msgstr "Odkrywaj (losowe książki)" msgid "Start" msgstr "Rozpocznij" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Najpopularniejsze książki" @@ -1137,7 +1238,7 @@ msgstr "Najpopularniejsze książki" msgid "Popular publications from this catalog based on Downloads." msgstr "Popularne publikacje z tego katalogu bazujące na pobranych." -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Najlepiej ocenione książki" @@ -1157,7 +1258,7 @@ msgstr "Ostatnie książki" msgid "Show Random Books" msgstr "Pokazuj losowe książki" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "Autorzy" @@ -1173,7 +1274,7 @@ msgstr "Książki sortowane według kategorii" msgid "Books ordered by series" msgstr "Książki sortowane według serii" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "Publiczne półki" @@ -1181,7 +1282,7 @@ msgstr "Publiczne półki" msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "Twoje półki" @@ -1197,80 +1298,80 @@ msgstr "Przełącz nawigację" msgid "Advanced Search" msgstr "Zaawansowane wyszukiwanie" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "Wyloguj się" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "Zarejestruj się" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "" -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "Przeglądaj" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "Odkrywaj" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "Kategorie" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "Języki" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "Utwórz półkę" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "O programie" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "" @@ -1357,26 +1458,38 @@ msgstr "Proszę wypróbować podobne wyszukiwanie" msgid "Results for:" msgstr "Wyniki dla:" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "Wyklucz tagi" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "Wyklucz serie" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "Wyklucz języki" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "Usuń tą półkę" @@ -1437,6 +1550,42 @@ msgstr "Biblioteka programu" msgid "Installed Version" msgstr "Zainstalowana wersja" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr "Adres e-mail Kindle" diff --git a/cps/translations/ru/LC_MESSAGES/messages.po b/cps/translations/ru/LC_MESSAGES/messages.po index 314f4e5d..ddeab9c4 100644 --- a/cps/translations/ru/LC_MESSAGES/messages.po +++ b/cps/translations/ru/LC_MESSAGES/messages.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" -"POT-Creation-Date: 2018-07-15 15:03+0200\n" +"POT-Creation-Date: 2018-08-18 12:11+0200\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n" "Last-Translator: Pavel Korovin \n" "Language: ru\n" @@ -26,503 +26,568 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" -#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422 +#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 +#: cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "Отсутствует" -#: cps/helper.py:68 -#, python-format -msgid "kindlegen binary %(kindlepath)s not found" +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" msgstr "" -#: cps/helper.py:74 +#: cps/helper.py:54 #, python-format msgid "epub format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:84 -msgid "kindlegen failed, no execution permissions" -msgstr "" - -#: cps/helper.py:99 +#: cps/helper.py:70 #, python-format -msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgid "Convert: %s" msgstr "" -#: cps/helper.py:178 -#, python-format -msgid "Failed to send mail: %s" -msgstr "Ошибка отправки письма: %s" - -#: cps/helper.py:185 +#: cps/helper.py:79 msgid "Calibre-web test email" msgstr "Тестовое письмо от Calibre-web" -#: cps/helper.py:186 cps/helper.py:198 -msgid "This email has been sent via calibre web." -msgstr "Письмо было отправлено через calibre web" +#: cps/helper.py:80 +msgid "Test E-Mail" +msgstr "" -#: cps/helper.py:195 cps/templates/detail.html:44 +#: cps/helper.py:102 cps/helper.py:112 +msgid "Could not find any formats suitable for sending by email" +msgstr "Невозоможно найти формат, подходящий для отправки по email" + +#: cps/helper.py:114 cps/templates/detail.html:44 cps/worker.py:219 msgid "Send to Kindle" msgstr "Отправить на Kindle" -#: cps/helper.py:215 cps/helper.py:229 -msgid "Could not find any formats suitable for sending by email" -msgstr "Невозоможно найти формат, подходящий для отправки по email" +#: cps/helper.py:115 +#, python-format +msgid "E-Mail: %s" +msgstr "" + +#: cps/helper.py:117 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "" -#: cps/helper.py:342 +#: cps/helper.py:212 #, python-format msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:351 +#: cps/helper.py:221 #, python-format msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:374 cps/helper.py:383 +#: cps/helper.py:244 cps/helper.py:253 #, python-format msgid "File %s not found on Google Drive" msgstr "" -#: cps/helper.py:394 +#: cps/helper.py:271 #, python-format msgid "Book path %s not found on Google Drive" msgstr "" -#: cps/web.py:954 +#: cps/web.py:1026 msgid "Requesting update package" msgstr "Проверка обновлений" -#: cps/web.py:955 +#: cps/web.py:1027 msgid "Downloading update package" msgstr "Загрузка обновлений" -#: cps/web.py:956 +#: cps/web.py:1028 msgid "Unzipping update package" msgstr "Распаковка обновлений" -#: cps/web.py:957 +#: cps/web.py:1029 msgid "Files are replaced" msgstr "Файлы заменены" -#: cps/web.py:958 +#: cps/web.py:1030 msgid "Database connections are closed" msgstr "Соеднинения с базой данных закрыты" -#: cps/web.py:959 +#: cps/web.py:1031 msgid "Server is stopped" msgstr "Сервер остановлен" -#: cps/web.py:960 +#: cps/web.py:1032 msgid "Update finished, please press okay and reload page" msgstr "Обновления установлены, нажмите okay и перезагрузите страницу" -#: cps/web.py:1034 +#: cps/web.py:1052 msgid "Recently Added Books" msgstr "" -#: cps/web.py:1044 +#: cps/web.py:1062 msgid "Newest Books" msgstr "" -#: cps/web.py:1056 +#: cps/web.py:1074 msgid "Oldest Books" msgstr "" -#: cps/web.py:1068 +#: cps/web.py:1086 msgid "Books (A-Z)" msgstr "" -#: cps/web.py:1079 +#: cps/web.py:1097 msgid "Books (Z-A)" msgstr "" -#: cps/web.py:1108 +#: cps/web.py:1126 msgid "Hot Books (most downloaded)" msgstr "Популярные книги (часто загружаемые)" -#: cps/web.py:1121 +#: cps/web.py:1139 msgid "Best rated books" msgstr "Книги с наивысшим рейтингом" -#: cps/templates/index.xml:32 cps/web.py:1132 +#: cps/templates/index.xml:32 cps/web.py:1151 msgid "Random Books" msgstr "Случайный выбор" -#: cps/web.py:1146 +#: cps/web.py:1166 msgid "Author list" msgstr "Авторы" -#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909 +#: cps/web.py:1178 cps/web.py:1241 cps/web.py:1401 cps/web.py:1961 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "Невозможно открыть книгу. Файл не существует или недоступен." -#: cps/templates/index.xml:64 cps/web.py:1204 +#: cps/templates/index.xml:64 cps/web.py:1225 msgid "Series list" msgstr "Серии" -#: cps/web.py:1218 +#: cps/web.py:1239 #, python-format msgid "Series: %(serie)s" msgstr "Серии: %(serie)s" -#: cps/web.py:1251 +#: cps/web.py:1272 msgid "Available languages" msgstr "Языки" -#: cps/web.py:1268 +#: cps/web.py:1289 #, python-format msgid "Language: %(name)s" msgstr "Язык: %(name)s" -#: cps/templates/index.xml:58 cps/web.py:1278 +#: cps/templates/index.xml:58 cps/web.py:1300 msgid "Category list" msgstr "Категории" -#: cps/web.py:1292 +#: cps/web.py:1314 #, python-format msgid "Category: %(name)s" msgstr "Категория: %(name)s" -#: cps/web.py:1433 -msgid "Excecution permissions missing" +#: cps/templates/layout.html:71 cps/web.py:1451 +msgid "Tasks" msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1482 msgid "Statistics" msgstr "Статистика" -#: cps/web.py:1544 +#: cps/web.py:1588 msgid "" "Callback domain is not verified, please follow steps to verify domain in " "google developer console" msgstr "" -#: cps/web.py:1620 +#: cps/web.py:1664 msgid "Server restarted, please reload page" msgstr "Сервер перезагружен, пожалуйста, перезагрузите страницу" -#: cps/web.py:1623 +#: cps/web.py:1667 msgid "Performing shutdown of server, please close window" msgstr "Производится остановка сервера, пожалуйста, закройте окно" -#: cps/web.py:1641 +#: cps/web.py:1685 msgid "Update done" msgstr "Обновление закончено" -#: cps/web.py:1698 +#: cps/web.py:1741 cps/web.py:1782 +#, python-format +msgid "%s: %s" +msgstr "" + +#: cps/web.py:1753 #, python-format msgid "Published after %s" msgstr "" -#: cps/web.py:1703 +#: cps/web.py:1758 msgid "Published before " msgstr "" -#: cps/web.py:1749 cps/web.py:1762 +#: cps/web.py:1776 +#, python-format +msgid "Rating <= %s" +msgstr "" + +#: cps/web.py:1778 +#, python-format +msgid "Rating >= %s" +msgstr "" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "поиск" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "Прочитанные" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "Непрочитанные" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "Читать книгу" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "Пожалуйста, заполните все поля!" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "зарегистрироваться" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "Неизвестная ошибка. Пожалуйста, попробуйте позже." -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "Имя пользователя или адрес эл. почты уже используется" -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "Вы вошли как пользователь '%(nickname)s'" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "Ошибка в имени пользователя или пароле" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "войти" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "Пожалуйста, сначала сконфигурируйте параметры SMTP" -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" -msgstr "Книга успешно отправлена на %(kindlemail)s" +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "Ошибка при отправке книги: %(res)s" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "Пожалуйста, сначала укажите ваш kindle email..." -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "Книга добавлена на книжную полку: %(sname)s" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "Книга удалена с книжной полки: %(sname)s" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "Книжкная полка с названием '%(title)s' уже существует." -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "Создана книжная полка %(title)s" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "Произошла ошибка" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "создать книжную полку" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "Книжная полка %(title)s изменена" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "Изменить книжную полку" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "Книжная полка %(name)s удалена" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "Книжная полка: '%(name)s'" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Изменить расположение книжной полки '%(name)s'" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "Найдена учётная запись для для данного адреса email." -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "Профиль %(name)s" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "Профиль обновлён" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "Администрирование" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "Конфигурация Calibre-web обновлена" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "Настройки сервера" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "Неверный путь к фалу БД, пожалуйста, укажите правильное расположение БД" -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "Добавить пользователя" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "Пользователь '%(user)s' добавлен" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "Для указанного адреса или имени найдена существующая учётная запись." -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "Настройки почты изменены" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "Тестовое сообщение успешно отправлено на адрес %(kindlemail)s" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "Ошибка отправки тестового сообщения: %(res)s" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "Обновлены настройки e-mail" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "Изменить почтовые настройки" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "Пользователь '%(nick)s' удалён" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "Пользователь '%(nick)s' обновлён" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "Произошла неизвестная ошибка." -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "Изменить пользователя %(nick)s" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "изменить метаданные" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "Запрещена загрузка файлов с расширением \"%s\"" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "Загружаемый файл должен иметь расширение" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "Ошибка при создании пути %s (доступ запрещён)" + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "" -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "неизвестно" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" -msgstr "Загружаемый файл должен иметь расширение" - -#: cps/web.py:3297 -#, python-format -msgid "Failed to create path %s (Permission denied)." -msgstr "Ошибка при создании пути %s (доступ запрещён)" - -#: cps/web.py:3302 +#: cps/web.py:3377 #, python-format msgid "Failed to store file %s (Permission denied)." msgstr "Ошибка записи файоа %s (доступ запрещён)" -#: cps/web.py:3307 +#: cps/web.py:3382 #, python-format msgid "Failed to delete file %s (Permission denied)." msgstr "Ошибка удаления файла %s (доступ запрещён)" +#: cps/web.py:3464 +#, python-format +msgid "File %s uploaded" +msgstr "" + +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "" + +#: cps/worker.py:221 +#, python-format +msgid "E-Mail: %stitle" +msgstr "" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "" + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "Письмо было отправлено через calibre web" + +#: cps/worker.py:435 +msgid "Failed" +msgstr "" + #: cps/templates/admin.html:4 msgid "User list" msgstr "Список пользователей" @@ -543,7 +608,7 @@ msgstr "Kindle" msgid "DLS" msgstr "DLS" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "Управление" @@ -597,96 +662,100 @@ msgid "Change SMTP settings" msgstr "Изменить настройки SMTP" #: cps/templates/admin.html:57 +msgid "Edit allowed domains" +msgstr "" + +#: cps/templates/admin.html:60 msgid "Configuration" msgstr "Настройки сервера" -#: cps/templates/admin.html:60 +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "Папка Calibre DB" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "Уровень логирования" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "Порт" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "Количество книг на странице" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "Загрузка на сервер" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "Публичная регистрация" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "Анонимный просмотр" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "Управление" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "Переподключиться к БД Calibre" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "Перезагрузить Calibre-web" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "Остановить Calibre-web" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "Проверка обновлений" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "Установить обновления" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "Вы действительно хотите перезагрузить Calibre-web?" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "Ok" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "Назад" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "Вы действительно хотите остановить Calibre-web?" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "Установка обновлений, пожалуйста, не обновляйте страницу." @@ -706,132 +775,136 @@ msgstr "" msgid "Delete Book" msgstr "Удалить книгу" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "Удалить" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "Название" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "Автор" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "Описание" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "Теги" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "Серии" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "Серия" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "Рейтинг" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is " "afterwards empty again)" msgstr "" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "Опубликовано" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "Язык" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "Да" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "Нет" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "смотреть книгу после редактирования" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "Получить метаданные" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "Отправить" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "Вы действительно уверены?" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "Книга будет удалена из БД Calibre" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "и с диска" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "Удалить" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "Ключевое слово" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr " Поиск по ключевому слову" -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "Искать" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "Нажмите на обложку, чтобы получить метаданные" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "Загрузка..." -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "Закрыть" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "Издатель" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "Источник" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "Ошибка поиска!" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "Нет результатов. Пожалуйста, попробуйте другое ключевое слово" @@ -856,78 +929,106 @@ msgid "Authenticate Google Drive" msgstr "" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" msgstr "Metadata Watch Channel ID" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "Порт сервера" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "Разрешить загрузку на сервер" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "Разрешить анонимный просмотр" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "Разрешить публичную регистрацию" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "Имя пользователя" @@ -936,8 +1037,8 @@ msgstr "Имя пользователя" msgid "View Configuration" msgstr "" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "Заголовок" @@ -1109,7 +1210,7 @@ msgstr "Сохранить настройки" msgid "Save settings and send Test E-Mail" msgstr "Сохранить настройки и отправить тестовое письмо" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "Дальше" @@ -1126,7 +1227,7 @@ msgstr "Обзор (случайные книги)" msgid "Start" msgstr "Старт" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "Популярные книги" @@ -1134,7 +1235,7 @@ msgstr "Популярные книги" msgid "Popular publications from this catalog based on Downloads." msgstr "Популярные книги в этом каталоге, на основе количества скачиваний" -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "Книги с наилучшим рейтингом" @@ -1154,7 +1255,7 @@ msgstr "Последние поступления" msgid "Show Random Books" msgstr "Показывать случайные книги" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "Авторы" @@ -1170,7 +1271,7 @@ msgstr "Книги, отсортированные по категории" msgid "Books ordered by series" msgstr "Книги, отсортированные по серии" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "Общие книжные полки" @@ -1178,7 +1279,7 @@ msgstr "Общие книжные полки" msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "Ваши книжные полки" @@ -1194,80 +1295,80 @@ msgstr "Включить навигацию" msgid "Advanced Search" msgstr "Расширенный поиск" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "Выход" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "Зарегистрироваться" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "" -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "Просмотр" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "Обзор" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "Категории" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "Языки" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "Создать книжную полку" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "О программе" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "" @@ -1353,26 +1454,38 @@ msgstr "Попробуйте изменить критерии поиск" msgid "Results for:" msgstr "Результаты для:" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "Исключить теги" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "Исключить серии" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "Исключить языки" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "Удалить эту книжную полку" @@ -1433,6 +1546,42 @@ msgstr "Название" msgid "Installed Version" msgstr "Версия" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr "Адрес почты Kindle" diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po index 7c293c06..eb36736a 100644 --- a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po +++ b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" -"POT-Creation-Date: 2018-07-15 15:03+0200\n" +"POT-Creation-Date: 2018-08-18 12:11+0200\n" "PO-Revision-Date: 2017-01-06 17:00+0000\n" "Last-Translator: dalin \n" "Language: zh_Hans_CN\n" @@ -26,503 +26,568 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" -#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422 +#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 +#: cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "未安装" -#: cps/helper.py:68 -#, python-format -msgid "kindlegen binary %(kindlepath)s not found" -msgstr "找不到kindlegen二进制 %(kindlepath)s" +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" +msgstr "可执行权限缺失" -#: cps/helper.py:74 +#: cps/helper.py:54 #, python-format msgid "epub format not found for book id: %(book)d" msgstr "没有找到书籍ID %(book)d 的epub格式" -#: cps/helper.py:84 -msgid "kindlegen failed, no execution permissions" -msgstr "kindlegen失败,没有可执行权限" - -#: cps/helper.py:99 -#, python-format -msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" -msgstr "Kindlegen 因为错误 %(error)s 失败。消息: %(message)s" - -#: cps/helper.py:178 +#: cps/helper.py:70 #, python-format -msgid "Failed to send mail: %s" -msgstr "发送邮件失败: %s" +msgid "Convert: %s" +msgstr "" -#: cps/helper.py:185 +#: cps/helper.py:79 msgid "Calibre-web test email" msgstr "Calibre-web 测试邮件" -#: cps/helper.py:186 cps/helper.py:198 -msgid "This email has been sent via calibre web." -msgstr "此邮件由calibre web发送" +#: cps/helper.py:80 +msgid "Test E-Mail" +msgstr "" + +#: cps/helper.py:102 cps/helper.py:112 +msgid "Could not find any formats suitable for sending by email" +msgstr "无法找到适合邮件发送的格式" -#: cps/helper.py:195 cps/templates/detail.html:44 +#: cps/helper.py:114 cps/templates/detail.html:44 cps/worker.py:219 msgid "Send to Kindle" msgstr "发送到Kindle" -#: cps/helper.py:215 cps/helper.py:229 -msgid "Could not find any formats suitable for sending by email" -msgstr "无法找到适合邮件发送的格式" +#: cps/helper.py:115 +#, python-format +msgid "E-Mail: %s" +msgstr "" -#: cps/helper.py:342 +#: cps/helper.py:117 +msgid "The requested file could not be read. Maybe wrong permissions?" +msgstr "" + +#: cps/helper.py:212 #, python-format msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:351 +#: cps/helper.py:221 #, python-format msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:374 cps/helper.py:383 +#: cps/helper.py:244 cps/helper.py:253 #, python-format msgid "File %s not found on Google Drive" msgstr "" -#: cps/helper.py:394 +#: cps/helper.py:271 #, python-format msgid "Book path %s not found on Google Drive" msgstr "" -#: cps/web.py:954 +#: cps/web.py:1026 msgid "Requesting update package" msgstr "正在请求更新包" -#: cps/web.py:955 +#: cps/web.py:1027 msgid "Downloading update package" msgstr "正在下载更新包" -#: cps/web.py:956 +#: cps/web.py:1028 msgid "Unzipping update package" msgstr "正在解压更新包" -#: cps/web.py:957 +#: cps/web.py:1029 msgid "Files are replaced" msgstr "文件已替换" -#: cps/web.py:958 +#: cps/web.py:1030 msgid "Database connections are closed" msgstr "数据库连接已关闭" -#: cps/web.py:959 +#: cps/web.py:1031 msgid "Server is stopped" msgstr "服务器已停止" -#: cps/web.py:960 +#: cps/web.py:1032 msgid "Update finished, please press okay and reload page" msgstr "更新完成,请按确定并刷新页面" -#: cps/web.py:1034 +#: cps/web.py:1052 msgid "Recently Added Books" msgstr "最近添加的书籍" -#: cps/web.py:1044 +#: cps/web.py:1062 msgid "Newest Books" msgstr "最新书籍" -#: cps/web.py:1056 +#: cps/web.py:1074 msgid "Oldest Books" msgstr "最旧书籍" -#: cps/web.py:1068 +#: cps/web.py:1086 msgid "Books (A-Z)" msgstr "书籍 (A-Z)" -#: cps/web.py:1079 +#: cps/web.py:1097 msgid "Books (Z-A)" msgstr "书籍 (Z-A)" -#: cps/web.py:1108 +#: cps/web.py:1126 msgid "Hot Books (most downloaded)" msgstr "热门书籍(最多下载)" -#: cps/web.py:1121 +#: cps/web.py:1139 msgid "Best rated books" msgstr "最高评分书籍" -#: cps/templates/index.xml:32 cps/web.py:1132 +#: cps/templates/index.xml:32 cps/web.py:1151 msgid "Random Books" msgstr "随机书籍" -#: cps/web.py:1146 +#: cps/web.py:1166 msgid "Author list" msgstr "作者列表" -#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909 +#: cps/web.py:1178 cps/web.py:1241 cps/web.py:1401 cps/web.py:1961 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "无法打开电子书。 文件不存在或者文件不可访问:" -#: cps/templates/index.xml:64 cps/web.py:1204 +#: cps/templates/index.xml:64 cps/web.py:1225 msgid "Series list" msgstr "丛书列表" -#: cps/web.py:1218 +#: cps/web.py:1239 #, python-format msgid "Series: %(serie)s" msgstr "丛书: %(serie)s" -#: cps/web.py:1251 +#: cps/web.py:1272 msgid "Available languages" msgstr "可用语言" -#: cps/web.py:1268 +#: cps/web.py:1289 #, python-format msgid "Language: %(name)s" msgstr "语言: %(name)s" -#: cps/templates/index.xml:58 cps/web.py:1278 +#: cps/templates/index.xml:58 cps/web.py:1300 msgid "Category list" msgstr "分类列表" -#: cps/web.py:1292 +#: cps/web.py:1314 #, python-format msgid "Category: %(name)s" msgstr "分类: %(name)s" -#: cps/web.py:1433 -msgid "Excecution permissions missing" -msgstr "可执行权限缺失" +#: cps/templates/layout.html:71 cps/web.py:1451 +msgid "Tasks" +msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1482 msgid "Statistics" msgstr "统计" -#: cps/web.py:1544 +#: cps/web.py:1588 msgid "" "Callback domain is not verified, please follow steps to verify domain in " "google developer console" msgstr "" -#: cps/web.py:1620 +#: cps/web.py:1664 msgid "Server restarted, please reload page" msgstr "服务器已重启,请刷新页面" -#: cps/web.py:1623 +#: cps/web.py:1667 msgid "Performing shutdown of server, please close window" msgstr "正在关闭服务器,请关闭窗口" -#: cps/web.py:1641 +#: cps/web.py:1685 msgid "Update done" msgstr "更新完成" -#: cps/web.py:1698 +#: cps/web.py:1741 cps/web.py:1782 +#, python-format +msgid "%s: %s" +msgstr "" + +#: cps/web.py:1753 #, python-format msgid "Published after %s" msgstr "" -#: cps/web.py:1703 +#: cps/web.py:1758 msgid "Published before " msgstr "" -#: cps/web.py:1749 cps/web.py:1762 +#: cps/web.py:1776 +#, python-format +msgid "Rating <= %s" +msgstr "" + +#: cps/web.py:1778 +#, python-format +msgid "Rating >= %s" +msgstr "" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "搜索" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "已读书籍" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "未读书籍" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "阅读一本书" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "请填写所有字段" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "注册" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "发生一个未知错误。请稍后再试。" -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "此用户名或邮箱已被使用。" -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "您现在已以'%(nickname)s'身份登录" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "用户名或密码错误" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "登录" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "找不到Token" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "Token已过期" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "成功!请返回您的设备" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "请先配置SMTP邮箱..." -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" -msgstr "此书已被成功发给 %(kindlemail)s" +msgid "Book successfully queued for sending to %(kindlemail)s" +msgstr "" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "发送这本书的时候出现错误: %(res)s" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "请先配置您的kindle电子邮箱地址..." -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "此书已被添加到书架: %(sname)s" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "此书已从书架 %(sname)s 中删除" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "已存在书架 '%(title)s'。" -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "书架 %(title)s 已被创建" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "发生错误" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "创建书架" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "书架 %(title)s 已被修改" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "编辑书架" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "成功删除书架 %(name)s" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "书架: '%(name)s'" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "打开书架出错。书架不存在或不可访问" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "修改书架 '%(name)s' 顺序" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "找到已使用此邮箱的账号。" -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "%(name)s 的资料" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "资料已更新" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "管理页" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "Calibre-web配置已更新" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "基本配置" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "DB位置无效,请输入正确路径" -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "添加新用户" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "用户 '%(user)s' 已被创建" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "已存在使用此邮箱或昵称的账号。" -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "邮箱设置已更新" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "测试邮件已成功发送到 %(kindlemail)s" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "发送测试邮件时发生错误: %(res)s" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "E-Mail 设置已更新" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "编辑邮箱设置" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "用户 '%(nick)s' 已被删除" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "用户 '%(nick)s' 已被更新" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "发生未知错误。" -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "编辑用户 %(nick)s" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "打开电子书出错。文件不存在或不可访问" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "编辑元数据" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "不能上传后缀为 \"%s\" 的文件到此服务器" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "要上传的文件必须有一个后缀" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "创建路径 %s 失败(权限拒绝)。" + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "" -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "未知" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" -msgstr "要上传的文件必须有一个后缀" - -#: cps/web.py:3297 -#, python-format -msgid "Failed to create path %s (Permission denied)." -msgstr "创建路径 %s 失败(权限拒绝)。" - -#: cps/web.py:3302 +#: cps/web.py:3377 #, python-format msgid "Failed to store file %s (Permission denied)." msgstr "存储文件 %s 失败(权限拒绝)。" -#: cps/web.py:3307 +#: cps/web.py:3382 #, python-format msgid "Failed to delete file %s (Permission denied)." msgstr "删除文件 %s 失败(权限拒绝)。" +#: cps/web.py:3464 +#, python-format +msgid "File %s uploaded" +msgstr "" + +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "" + +#: cps/worker.py:221 +#, python-format +msgid "E-Mail: %stitle" +msgstr "" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "Kindlegen 因为错误 %(error)s 失败。消息: %(message)s" + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "此邮件由calibre web发送" + +#: cps/worker.py:435 +msgid "Failed" +msgstr "" + #: cps/templates/admin.html:4 msgid "User list" msgstr "用户列表" @@ -543,7 +608,7 @@ msgstr "" msgid "DLS" msgstr "" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "管理" @@ -597,96 +662,100 @@ msgid "Change SMTP settings" msgstr "修改SMTP设置" #: cps/templates/admin.html:57 +msgid "Edit allowed domains" +msgstr "" + +#: cps/templates/admin.html:60 msgid "Configuration" msgstr "配置" -#: cps/templates/admin.html:60 +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "Calibre DB目录" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "日志级别" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "端口" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "每页书籍数" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "上传" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "开放注册" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "匿名浏览" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "远程登录" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "管理" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "当前提交时间戳" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "最新提交时间戳" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "重新连接到Calibre数据库" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "重启 Calibre-web" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "停止 Calibre-web" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "检查更新" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "执行更新" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "您确定要重启 Calibre-web 吗?" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "确定" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "后退" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "您确定要关闭 Calibre-web 吗?" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "正在更新,请不要刷新页面" @@ -706,132 +775,136 @@ msgstr "" msgid "Delete Book" msgstr "删除书籍" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "删除" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "书名" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "作者" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "简介" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "标签" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "丛书" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "丛书ID" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "评分" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "" "Cover URL (jpg, cover is downloaded and stored in database, field is " "afterwards empty again)" msgstr "" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "出版日期" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "语言" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "确认" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "编辑后查看书籍" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "获取元数据" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "提交" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "您真的确认?" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "书籍会被从Calibre数据库和硬盘中删除" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "删除" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "关键字" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr "搜索关键字" -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "走起!" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "点击封面加载元数据到表单" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "加载中..." -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "关闭" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "出版社" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "来源" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "搜索错误" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "没有结果!请尝试别的关键字." @@ -856,78 +929,106 @@ msgid "Authenticate Google Drive" msgstr "" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" msgstr "" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "服务器端口" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "启用上传" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "启用匿名浏览" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "启用注册" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "启用远程登录 (\"魔法链接\")" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "登录" @@ -936,8 +1037,8 @@ msgstr "登录" msgid "View Configuration" msgstr "" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "标题" @@ -1109,7 +1210,7 @@ msgstr "保存设置" msgid "Save settings and send Test E-Mail" msgstr "保存设置并发送测试邮件" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "下一个" @@ -1126,7 +1227,7 @@ msgstr "发现(随机书籍)" msgid "Start" msgstr "开始" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "热门书籍" @@ -1134,7 +1235,7 @@ msgstr "热门书籍" msgid "Popular publications from this catalog based on Downloads." msgstr "基于下载数的热门书籍" -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "最高评分书籍" @@ -1154,7 +1255,7 @@ msgstr "最新书籍" msgid "Show Random Books" msgstr "显示随机书籍" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "作者" @@ -1170,7 +1271,7 @@ msgstr "书籍按分类排序" msgid "Books ordered by series" msgstr "书籍按丛书排序" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "公开书架" @@ -1178,7 +1279,7 @@ msgstr "公开书架" msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "您的书架" @@ -1194,80 +1295,80 @@ msgstr "切换导航" msgid "Advanced Search" msgstr "高级搜索" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "注销" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "注册" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "" -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "浏览" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "最近添加" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "已排序书籍" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "排序" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "最新" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "最旧" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "升序" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "降序" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "发现" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "分类" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "语言" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "创建书架" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "关于" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "" @@ -1353,26 +1454,38 @@ msgstr "请尝试别的关键字" msgid "Results for:" msgstr "结果:" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "排除标签" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "排除丛书" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "排除语言" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "删除此书架" @@ -1433,6 +1546,42 @@ msgstr "程序库" msgid "Installed Version" msgstr "已安装版本" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr "" diff --git a/cps/web.py b/cps/web.py index d23a708c..3539eef9 100755 --- a/cps/web.py +++ b/cps/web.py @@ -48,7 +48,6 @@ from flask_principal import __version__ as flask_principalVersion from flask_babel import Babel from flask_babel import gettext as _ import pytz -# from tzlocal import get_localzone import requests from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.datastructures import Headers @@ -3088,32 +3087,47 @@ def edit_book(book_id): edited_books_id = set() # Check and handle Uploaded file - if 'btn-upload-format' in request.files and '.' in request.files['btn-upload-format'].filename: + if 'btn-upload-format' in request.files: requested_file = request.files['btn-upload-format'] - file_ext = requested_file.filename.rsplit('.', 1)[-1].lower() - if file_ext not in ALLOWED_EXTENSIONS: - flash(_('File extension "%s" is not allowed to be uploaded to this server' % file_ext), category="error") - return redirect(url_for('index')) + if '.' in requested_file.filename: + file_ext = requested_file.filename.rsplit('.', 1)[-1].lower() + if file_ext not in ALLOWED_EXTENSIONS: + flash(_('File extension "%s" is not allowed to be uploaded to this server' % file_ext), category="error") + return redirect(url_for('show_book', book_id=book.id)) + else: + flash(_('File to be uploaded must have an extension'), category="error") + return redirect(url_for('show_book', book_id=book.id)) file_name = book.path.rsplit('/', 1)[-1] - filepath = config.config_calibre_dir + os.sep + book.path - filepath = os.path.normpath(filepath) - saved_filename = filepath + os.sep + file_name + '.' + file_ext + filepath = os.path.normpath(os.path.join(config.config_calibre_dir, book.path)) + saved_filename = os.path.join(filepath, file_name + '.' + file_ext) + # check if file path exists, otherwise create it, copy file to calibre path and delete temp file + if not os.path.exists(filepath): + try: + os.makedirs(filepath) + except OSError: + flash(_(u"Failed to create path %s (Permission denied)." % filepath), category="error") + return redirect(url_for('show_book', book_id=book.id)) try: requested_file.save(saved_filename) except OSError: flash(_(u"Failed to store file %s." % saved_filename), category="error") - return redirect(url_for('index')) + return redirect(url_for('show_book', book_id=book.id)) file_size = os.path.getsize(saved_filename) is_format = db.session.query(db.Data).filter(db.Data.book == book_id).filter(db.Data.format == file_ext.upper()).first() + + # Format entry already exists, no need to update the database if is_format: - # Format entry already exists, no need to update the database app.logger.info('Book format already existing') else: db_format = db.Data(book_id, file_ext.upper(), file_size, file_name) db.session.add(db_format) + db.session.commit() + db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort) + + # Queue uploader info uploadText=_(u"File format %s added to %s" % (file_ext.upper(),book.title)) helper.global_WorkerThread.add_upload(current_user.nickname, ""+ uploadText + "") @@ -3148,6 +3162,7 @@ def edit_book(book_id): for b in edited_books_id: error = helper.update_dir_stucture(b, config.config_calibre_dir) if error: # stop on error + flash(error, category="error") break if not error: @@ -3289,6 +3304,8 @@ def edit_book(book_id): input_tags = list(map(lambda it: it.strip(), input_tags)) modify_database_object(input_tags, getattr(book, cc_string), db.cc_classes[c.id], db.session, 'custom') db.session.commit() + if config.config_use_google_drive: + gdriveutils.updateGdriveCalibreFromLocal() author_names = [] for author in book.authors: author_names.append(author.name) @@ -3320,6 +3337,8 @@ def upload(): # create the function for sorting... db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort) db.session.connection().connection.connection.create_function('uuid4', 0, lambda: str(uuid4())) + + # check if file extension is correct if '.' in requested_file.filename: file_ext = requested_file.filename.rsplit('.', 1)[-1].lower() if file_ext not in ALLOWED_EXTENSIONS: @@ -3332,8 +3351,9 @@ def upload(): else: flash(_('File to be uploaded must have an extension'), category="error") return redirect(url_for('index')) + + # extract metadata from file meta = uploader.upload(requested_file) - title = meta.title author = meta.author tags = meta.tags @@ -3341,10 +3361,10 @@ def upload(): series_index = meta.series_id title_dir = helper.get_valid_filename(title) author_dir = helper.get_valid_filename(author) - data_name = title_dir - filepath = config.config_calibre_dir + os.sep + author_dir + os.sep + title_dir - saved_filename = filepath + os.sep + data_name + meta.extension.lower() + filepath = os.path.join(config.config_calibre_dir, author_dir, title_dir) + saved_filename = os.path.join(filepath, title_dir + meta.extension.lower()) + # check if file path exists, otherwise create it, copy file to calibre path and delete temp file if not os.path.exists(filepath): try: os.makedirs(filepath) @@ -3361,22 +3381,22 @@ def upload(): except OSError: flash(_(u"Failed to delete file %s (Permission denied)." % meta.file_path), category="warning") - file_size = os.path.getsize(saved_filename) if meta.cover is None: has_cover = 0 - basedir = config.get_main_dir # os.path.dirname(__file__) - copyfile(os.path.join(basedir, "cps/static/generic_cover.jpg"), os.path.join(filepath, "cover.jpg")) + copyfile(os.path.join(config.get_main_dir, "cps/static/generic_cover.jpg"), os.path.join(filepath, "cover.jpg")) else: has_cover = 1 move(meta.cover, os.path.join(filepath, "cover.jpg")) + # handle authors is_author = db.session.query(db.Authors).filter(db.Authors.name == author).first() if is_author: db_author = is_author else: db_author = db.Authors(author, helper.get_sorted_author(author), "") db.session.add(db_author) - + + # handle series db_series = None is_series = db.session.query(db.Series).filter(db.Series.name == series).first() if is_series: @@ -3396,6 +3416,7 @@ def upload(): else: db_language = db.Languages(input_language) db.session.add(db_language) + # combine path and normalize path from windows systems path = os.path.join(author_dir, title_dir).replace('\\', '/') db_book = db.Books(title, "", db_author.sort, datetime.datetime.now(), datetime.datetime(101, 1, 1), @@ -3405,42 +3426,47 @@ def upload(): db_book.series.append(db_series) if db_language is not None: db_book.languages.append(db_language) - db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, data_name) - + file_size = os.path.getsize(saved_filename) + db_data = db.Data(db_book, meta.extension.upper()[1:], file_size, title_dir) + + # handle tags input_tags = tags.split(',') input_tags = list(map(lambda it: it.strip(), input_tags)) if input_tags[0] !="": modify_database_object(input_tags, db_book.tags, db.Tags, db.session, 'tags') - + + # flush content, get db_book.id available db_book.data.append(db_data) - db.session.add(db_book) - db.session.flush() # flush content get db_book.id available + db.session.flush() # add comment book_id = db_book.id upload_comment = Markup(meta.description).unescape() if upload_comment != "": db.session.add(db.Comments(upload_comment, book_id)) - + + # save data to database, reread data db.session.commit() db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort) - book = db.session.query(db.Books) \ .filter(db.Books.id == book_id).filter(common_filters()).first() + # upload book to gdrive if nesseccary and add "(bookid)" to folder name if config.config_use_google_drive: gdriveutils.updateGdriveCalibreFromLocal() - error = helper.update_dir_stucture(book.id, config.config_calibre_dir) - + db.session.commit() + if config.config_use_google_drive: + gdriveutils.updateGdriveCalibreFromLocal() if error: flash(error, category="error") - uploadText=_(u"File %s uploaded" % book.title) + uploadText=_(u"File %s uploaded" % book.title) helper.global_WorkerThread.add_upload(current_user.nickname, "" + uploadText + "") - if db_language is not None: # display Full name instead of iso639.part3 + # create data for displaying display Full language name instead of iso639.part3language + if db_language is not None: book.languages[0].language_name = _(meta.languages) author_names = [] for author in db_book.authors: diff --git a/messages.pot b/messages.pot index 1af23932..9d2ed362 100644 --- a/messages.pot +++ b/messages.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2018-07-15 15:03+0200\n" +"POT-Creation-Date: 2018-08-18 12:11+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,499 +17,564 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.5.1\n" -#: cps/book_formats.py:123 cps/book_formats.py:127 cps/web.py:1422 +#: cps/book_formats.py:128 cps/book_formats.py:132 cps/book_formats.py:136 +#: cps/converter.py:11 cps/converter.py:27 msgid "not installed" msgstr "" -#: cps/helper.py:68 -#, python-format -msgid "kindlegen binary %(kindlepath)s not found" +#: cps/converter.py:22 cps/converter.py:38 +msgid "Excecution permissions missing" msgstr "" -#: cps/helper.py:74 +#: cps/helper.py:54 #, python-format msgid "epub format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:84 -msgid "kindlegen failed, no execution permissions" -msgstr "" - -#: cps/helper.py:99 +#: cps/helper.py:70 #, python-format -msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgid "Convert: %s" msgstr "" -#: cps/helper.py:178 -#, python-format -msgid "Failed to send mail: %s" +#: cps/helper.py:79 +msgid "Calibre-web test email" msgstr "" -#: cps/helper.py:185 -msgid "Calibre-web test email" +#: cps/helper.py:80 +msgid "Test E-Mail" msgstr "" -#: cps/helper.py:186 cps/helper.py:198 -msgid "This email has been sent via calibre web." +#: cps/helper.py:102 cps/helper.py:112 +msgid "Could not find any formats suitable for sending by email" msgstr "" -#: cps/helper.py:195 cps/templates/detail.html:44 +#: cps/helper.py:114 cps/templates/detail.html:44 cps/worker.py:219 msgid "Send to Kindle" msgstr "" -#: cps/helper.py:215 cps/helper.py:229 -msgid "Could not find any formats suitable for sending by email" +#: cps/helper.py:115 +#, python-format +msgid "E-Mail: %s" +msgstr "" + +#: cps/helper.py:117 +msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:342 +#: cps/helper.py:212 #, python-format msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:351 +#: cps/helper.py:221 #, python-format msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s" msgstr "" -#: cps/helper.py:374 cps/helper.py:383 +#: cps/helper.py:244 cps/helper.py:253 #, python-format msgid "File %s not found on Google Drive" msgstr "" -#: cps/helper.py:394 +#: cps/helper.py:271 #, python-format msgid "Book path %s not found on Google Drive" msgstr "" -#: cps/web.py:954 +#: cps/web.py:1026 msgid "Requesting update package" msgstr "" -#: cps/web.py:955 +#: cps/web.py:1027 msgid "Downloading update package" msgstr "" -#: cps/web.py:956 +#: cps/web.py:1028 msgid "Unzipping update package" msgstr "" -#: cps/web.py:957 +#: cps/web.py:1029 msgid "Files are replaced" msgstr "" -#: cps/web.py:958 +#: cps/web.py:1030 msgid "Database connections are closed" msgstr "" -#: cps/web.py:959 +#: cps/web.py:1031 msgid "Server is stopped" msgstr "" -#: cps/web.py:960 +#: cps/web.py:1032 msgid "Update finished, please press okay and reload page" msgstr "" -#: cps/web.py:1034 +#: cps/web.py:1052 msgid "Recently Added Books" msgstr "" -#: cps/web.py:1044 +#: cps/web.py:1062 msgid "Newest Books" msgstr "" -#: cps/web.py:1056 +#: cps/web.py:1074 msgid "Oldest Books" msgstr "" -#: cps/web.py:1068 +#: cps/web.py:1086 msgid "Books (A-Z)" msgstr "" -#: cps/web.py:1079 +#: cps/web.py:1097 msgid "Books (Z-A)" msgstr "" -#: cps/web.py:1108 +#: cps/web.py:1126 msgid "Hot Books (most downloaded)" msgstr "" -#: cps/web.py:1121 +#: cps/web.py:1139 msgid "Best rated books" msgstr "" -#: cps/templates/index.xml:32 cps/web.py:1132 +#: cps/templates/index.xml:32 cps/web.py:1151 msgid "Random Books" msgstr "" -#: cps/web.py:1146 +#: cps/web.py:1166 msgid "Author list" msgstr "" -#: cps/web.py:1158 cps/web.py:1220 cps/web.py:1379 cps/web.py:1909 +#: cps/web.py:1178 cps/web.py:1241 cps/web.py:1401 cps/web.py:1961 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "" -#: cps/templates/index.xml:64 cps/web.py:1204 +#: cps/templates/index.xml:64 cps/web.py:1225 msgid "Series list" msgstr "" -#: cps/web.py:1218 +#: cps/web.py:1239 #, python-format msgid "Series: %(serie)s" msgstr "" -#: cps/web.py:1251 +#: cps/web.py:1272 msgid "Available languages" msgstr "" -#: cps/web.py:1268 +#: cps/web.py:1289 #, python-format msgid "Language: %(name)s" msgstr "" -#: cps/templates/index.xml:58 cps/web.py:1278 +#: cps/templates/index.xml:58 cps/web.py:1300 msgid "Category list" msgstr "" -#: cps/web.py:1292 +#: cps/web.py:1314 #, python-format msgid "Category: %(name)s" msgstr "" -#: cps/web.py:1433 -msgid "Excecution permissions missing" +#: cps/templates/layout.html:71 cps/web.py:1451 +msgid "Tasks" msgstr "" -#: cps/web.py:1448 +#: cps/web.py:1482 msgid "Statistics" msgstr "" -#: cps/web.py:1544 +#: cps/web.py:1588 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/web.py:1620 +#: cps/web.py:1664 msgid "Server restarted, please reload page" msgstr "" -#: cps/web.py:1623 +#: cps/web.py:1667 msgid "Performing shutdown of server, please close window" msgstr "" -#: cps/web.py:1641 +#: cps/web.py:1685 msgid "Update done" msgstr "" -#: cps/web.py:1698 +#: cps/web.py:1741 cps/web.py:1782 +#, python-format +msgid "%s: %s" +msgstr "" + +#: cps/web.py:1753 #, python-format msgid "Published after %s" msgstr "" -#: cps/web.py:1703 +#: cps/web.py:1758 msgid "Published before " msgstr "" -#: cps/web.py:1749 cps/web.py:1762 +#: cps/web.py:1776 +#, python-format +msgid "Rating <= %s" +msgstr "" + +#: cps/web.py:1778 +#, python-format +msgid "Rating >= %s" +msgstr "" + +#: cps/web.py:1833 cps/web.py:1849 msgid "search" msgstr "" #: cps/templates/index.xml:39 cps/templates/index.xml:42 -#: cps/templates/layout.html:143 cps/web.py:1864 +#: cps/templates/layout.html:146 cps/web.py:1916 msgid "Read Books" msgstr "" #: cps/templates/index.xml:46 cps/templates/index.xml:49 -#: cps/templates/layout.html:145 cps/web.py:1867 +#: cps/templates/layout.html:148 cps/web.py:1919 msgid "Unread Books" msgstr "" -#: cps/web.py:1919 cps/web.py:1921 cps/web.py:1923 cps/web.py:1935 +#: cps/web.py:1971 cps/web.py:1973 cps/web.py:1975 cps/web.py:1987 msgid "Read a Book" msgstr "" -#: cps/web.py:1991 cps/web.py:2744 +#: cps/web.py:2044 cps/web.py:2817 msgid "Please fill out all fields!" msgstr "" -#: cps/web.py:1992 cps/web.py:2009 cps/web.py:2014 cps/web.py:2016 +#: cps/web.py:2045 cps/web.py:2062 cps/web.py:2067 cps/web.py:2069 msgid "register" msgstr "" -#: cps/web.py:2008 +#: cps/web.py:2061 msgid "An unknown error occured. Please try again later." msgstr "" -#: cps/web.py:2013 +#: cps/web.py:2066 msgid "This username or email address is already in use." msgstr "" -#: cps/web.py:2030 cps/web.py:2126 +#: cps/web.py:2083 cps/web.py:2179 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:2035 +#: cps/web.py:2088 msgid "Wrong Username or Password" msgstr "" -#: cps/web.py:2041 cps/web.py:2062 +#: cps/web.py:2094 cps/web.py:2115 msgid "login" msgstr "" -#: cps/web.py:2074 cps/web.py:2105 +#: cps/web.py:2127 cps/web.py:2158 msgid "Token not found" msgstr "" -#: cps/web.py:2082 cps/web.py:2113 +#: cps/web.py:2135 cps/web.py:2166 msgid "Token has expired" msgstr "" -#: cps/web.py:2090 +#: cps/web.py:2143 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:2140 +#: cps/web.py:2193 msgid "Please configure the SMTP mail settings first..." msgstr "" -#: cps/web.py:2144 +#: cps/web.py:2197 #, python-format -msgid "Book successfully send to %(kindlemail)s" +msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:2148 +#: cps/web.py:2201 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:2150 cps/web.py:2832 +#: cps/web.py:2203 cps/web.py:2905 msgid "Please configure your kindle email address first..." msgstr "" -#: cps/web.py:2194 +#: cps/web.py:2247 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2232 +#: cps/web.py:2285 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "" -#: cps/web.py:2238 +#: cps/web.py:2291 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2258 cps/web.py:2282 +#: cps/web.py:2311 cps/web.py:2335 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "" -#: cps/web.py:2263 +#: cps/web.py:2316 #, python-format msgid "Shelf %(title)s created" msgstr "" -#: cps/web.py:2265 cps/web.py:2293 +#: cps/web.py:2318 cps/web.py:2346 msgid "There was an error" msgstr "" -#: cps/web.py:2266 cps/web.py:2268 +#: cps/web.py:2319 cps/web.py:2321 msgid "create a shelf" msgstr "" -#: cps/web.py:2291 +#: cps/web.py:2344 #, python-format msgid "Shelf %(title)s changed" msgstr "" -#: cps/web.py:2294 cps/web.py:2296 +#: cps/web.py:2347 cps/web.py:2349 msgid "Edit a shelf" msgstr "" -#: cps/web.py:2317 +#: cps/web.py:2370 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "" -#: cps/web.py:2339 +#: cps/web.py:2392 #, python-format msgid "Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2342 +#: cps/web.py:2395 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2373 +#: cps/web.py:2426 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2444 +#: cps/web.py:2498 msgid "Found an existing account for this email address." msgstr "" -#: cps/web.py:2446 cps/web.py:2450 +#: cps/web.py:2500 cps/web.py:2503 #, python-format msgid "%(name)s's profile" msgstr "" -#: cps/web.py:2447 +#: cps/web.py:2501 msgid "Profile updated" msgstr "" -#: cps/web.py:2459 +#: cps/web.py:2513 msgid "Unknown" msgstr "" -#: cps/web.py:2472 +#: cps/web.py:2526 msgid "Admin page" msgstr "" -#: cps/web.py:2560 cps/web.py:2692 +#: cps/web.py:2604 cps/web.py:2766 msgid "Calibre-web configuration updated" msgstr "" -#: cps/templates/admin.html:80 cps/web.py:2565 +#: cps/templates/admin.html:83 cps/web.py:2617 msgid "UI Configuration" msgstr "" -#: cps/web.py:2581 +#: cps/web.py:2633 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2584 +#: cps/web.py:2636 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2589 cps/web.py:2617 +#: cps/web.py:2641 cps/web.py:2669 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:79 cps/web.py:2620 cps/web.py:2645 cps/web.py:2656 -#: cps/web.py:2680 cps/web.py:2700 cps/web.py:2707 cps/web.py:2725 +#: cps/templates/admin.html:82 cps/web.py:2672 cps/web.py:2698 cps/web.py:2710 +#: cps/web.py:2753 cps/web.py:2774 cps/web.py:2781 cps/web.py:2798 msgid "Basic Configuration" msgstr "" -#: cps/web.py:2642 +#: cps/web.py:2695 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2653 +#: cps/web.py:2707 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2677 +#: cps/web.py:2750 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2704 +#: cps/web.py:2778 msgid "DB location is not valid, please enter correct path" msgstr "" -#: cps/templates/admin.html:34 cps/web.py:2746 cps/web.py:2802 +#: cps/templates/admin.html:34 cps/web.py:2819 cps/web.py:2875 msgid "Add new user" msgstr "" -#: cps/web.py:2792 +#: cps/web.py:2865 #, python-format msgid "User '%(user)s' created" msgstr "" -#: cps/web.py:2796 +#: cps/web.py:2869 msgid "Found an existing account for this email address or nickname." msgstr "" -#: cps/web.py:2820 +#: cps/web.py:2893 msgid "Mail settings updated" msgstr "" -#: cps/web.py:2827 +#: cps/web.py:2900 #, python-format msgid "Test E-Mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:2830 +#: cps/web.py:2903 #, python-format msgid "There was an error sending the Test E-Mail: %(res)s" msgstr "" -#: cps/web.py:2834 +#: cps/web.py:2907 msgid "E-Mail settings updated" msgstr "" -#: cps/web.py:2835 +#: cps/web.py:2908 msgid "Edit mail settings" msgstr "" -#: cps/web.py:2865 +#: cps/web.py:2938 #, python-format msgid "User '%(nick)s' deleted" msgstr "" -#: cps/web.py:2974 +#: cps/web.py:3047 #, python-format msgid "User '%(nick)s' updated" msgstr "" -#: cps/web.py:2977 +#: cps/web.py:3050 msgid "An unknown error occured." msgstr "" -#: cps/web.py:2980 +#: cps/web.py:3052 #, python-format msgid "Edit User %(nick)s" msgstr "" -#: cps/web.py:2996 +#: cps/web.py:3069 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3011 cps/web.py:3222 cps/web.py:3227 cps/web.py:3395 +#: cps/web.py:3084 cps/web.py:3316 cps/web.py:3321 cps/web.py:3478 msgid "edit metadata" msgstr "" -#: cps/web.py:3021 cps/web.py:3272 +#: cps/web.py:3095 cps/web.py:3346 #, python-format msgid "File extension \"%s\" is not allowed to be uploaded to this server" msgstr "" -#: cps/web.py:3032 +#: cps/web.py:3098 cps/web.py:3352 +msgid "File to be uploaded must have an extension" +msgstr "" + +#: cps/web.py:3110 cps/web.py:3372 +#, python-format +msgid "Failed to create path %s (Permission denied)." +msgstr "" + +#: cps/web.py:3115 #, python-format msgid "Failed to store file %s." msgstr "" -#: cps/web.py:3056 cps/web.py:3060 +#: cps/web.py:3131 +#, python-format +msgid "File format %s added to %s" +msgstr "" + +#: cps/web.py:3147 cps/web.py:3151 msgid "unknown" msgstr "" -#: cps/web.py:3081 +#: cps/web.py:3173 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3231 +#: cps/web.py:3325 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3278 -msgid "File to be uploaded must have an extension" +#: cps/web.py:3377 +#, python-format +msgid "Failed to store file %s (Permission denied)." msgstr "" -#: cps/web.py:3297 +#: cps/web.py:3382 #, python-format -msgid "Failed to create path %s (Permission denied)." +msgid "Failed to delete file %s (Permission denied)." msgstr "" -#: cps/web.py:3302 +#: cps/web.py:3464 #, python-format -msgid "Failed to store file %s (Permission denied)." +msgid "File %s uploaded" msgstr "" -#: cps/web.py:3307 +#: cps/worker.py:212 cps/worker.py:357 +msgid "Started" +msgstr "" + +#: cps/worker.py:221 #, python-format -msgid "Failed to delete file %s (Permission denied)." +msgid "E-Mail: %stitle" +msgstr "" + +#: cps/worker.py:229 +#, python-format +msgid "Convertertool %(converter)s not found" +msgstr "" + +#: cps/worker.py:248 +#, python-format +msgid "Ebook-converter failed: %s" +msgstr "" + +#: cps/worker.py:258 +#, python-format +msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" +msgstr "" + +#: cps/worker.py:291 cps/worker.py:346 cps/worker.py:409 +msgid "Finished" +msgstr "" + +#: cps/worker.py:314 cps/worker.py:332 +msgid "Waiting" +msgstr "" + +#: cps/worker.py:364 +msgid "This email has been sent via calibre web." +msgstr "" + +#: cps/worker.py:435 +msgid "Failed" msgstr "" #: cps/templates/admin.html:4 @@ -532,7 +597,7 @@ msgstr "" msgid "DLS" msgstr "" -#: cps/templates/admin.html:12 cps/templates/layout.html:71 +#: cps/templates/admin.html:12 cps/templates/layout.html:74 msgid "Admin" msgstr "" @@ -586,96 +651,100 @@ msgid "Change SMTP settings" msgstr "" #: cps/templates/admin.html:57 -msgid "Configuration" +msgid "Edit allowed domains" msgstr "" #: cps/templates/admin.html:60 +msgid "Configuration" +msgstr "" + +#: cps/templates/admin.html:63 msgid "Calibre DB dir" msgstr "" -#: cps/templates/admin.html:61 cps/templates/config_edit.html:100 +#: cps/templates/admin.html:64 cps/templates/config_edit.html:106 msgid "Log Level" msgstr "" -#: cps/templates/admin.html:62 +#: cps/templates/admin.html:65 msgid "Port" msgstr "" -#: cps/templates/admin.html:63 cps/templates/config_view_edit.html:23 +#: cps/templates/admin.html:66 cps/templates/config_view_edit.html:23 msgid "Books per page" msgstr "" -#: cps/templates/admin.html:64 +#: cps/templates/admin.html:67 msgid "Uploading" msgstr "" -#: cps/templates/admin.html:65 +#: cps/templates/admin.html:68 msgid "Public registration" msgstr "" -#: cps/templates/admin.html:66 +#: cps/templates/admin.html:69 msgid "Anonymous browsing" msgstr "" -#: cps/templates/admin.html:67 cps/templates/remote_login.html:4 +#: cps/templates/admin.html:70 cps/templates/remote_login.html:4 msgid "Remote Login" msgstr "" -#: cps/templates/admin.html:81 +#: cps/templates/admin.html:84 msgid "Administration" msgstr "" -#: cps/templates/admin.html:83 +#: cps/templates/admin.html:85 msgid "Current commit timestamp" msgstr "" -#: cps/templates/admin.html:84 +#: cps/templates/admin.html:86 msgid "Newest commit timestamp" msgstr "" -#: cps/templates/admin.html:86 +#: cps/templates/admin.html:88 msgid "Reconnect to Calibre DB" msgstr "" -#: cps/templates/admin.html:87 +#: cps/templates/admin.html:89 msgid "Restart Calibre-web" msgstr "" -#: cps/templates/admin.html:88 +#: cps/templates/admin.html:90 msgid "Stop Calibre-web" msgstr "" -#: cps/templates/admin.html:89 +#: cps/templates/admin.html:91 msgid "Check for update" msgstr "" -#: cps/templates/admin.html:90 +#: cps/templates/admin.html:92 msgid "Perform Update" msgstr "" -#: cps/templates/admin.html:100 +#: cps/templates/admin.html:101 msgid "Do you really want to restart Calibre-web?" msgstr "" -#: cps/templates/admin.html:105 cps/templates/admin.html:119 -#: cps/templates/admin.html:140 cps/templates/shelf.html:59 +#: cps/templates/admin.html:106 cps/templates/admin.html:120 +#: cps/templates/admin.html:141 cps/templates/shelf.html:59 msgid "Ok" msgstr "" -#: cps/templates/admin.html:106 cps/templates/admin.html:120 -#: cps/templates/book_edit.html:135 cps/templates/book_edit.html:157 -#: cps/templates/config_edit.html:168 cps/templates/config_view_edit.html:164 +#: cps/templates/admin.html:107 cps/templates/admin.html:121 +#: cps/templates/book_edit.html:144 cps/templates/book_edit.html:166 +#: cps/templates/config_edit.html:206 cps/templates/config_view_edit.html:164 #: cps/templates/email_edit.html:36 cps/templates/shelf.html:60 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/user_edit.html:147 msgid "Back" msgstr "" -#: cps/templates/admin.html:118 +#: cps/templates/admin.html:119 msgid "Do you really want to stop Calibre-web?" msgstr "" -#: cps/templates/admin.html:131 +#: cps/templates/admin.html:132 msgid "Updating, please do not reload page" msgstr "" @@ -695,130 +764,134 @@ msgstr "" msgid "Delete Book" msgstr "" -#: cps/templates/book_edit.html:22 cps/templates/search_form.html:6 +#: cps/templates/book_edit.html:19 +msgid "Delete formats:" +msgstr "" + +#: cps/templates/book_edit.html:22 cps/templates/book_edit.html:165 +msgid "Delete" +msgstr "" + +#: cps/templates/book_edit.html:31 cps/templates/search_form.html:6 msgid "Book Title" msgstr "" -#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:216 -#: cps/templates/book_edit.html:234 cps/templates/search_form.html:10 +#: cps/templates/book_edit.html:35 cps/templates/book_edit.html:225 +#: cps/templates/book_edit.html:243 cps/templates/search_form.html:10 msgid "Author" msgstr "" -#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:221 -#: cps/templates/book_edit.html:236 +#: cps/templates/book_edit.html:39 cps/templates/book_edit.html:230 +#: cps/templates/book_edit.html:245 cps/templates/search_form.html:106 msgid "Description" msgstr "" -#: cps/templates/book_edit.html:34 cps/templates/search_form.html:34 +#: cps/templates/book_edit.html:43 cps/templates/search_form.html:33 msgid "Tags" msgstr "" -#: cps/templates/book_edit.html:39 cps/templates/layout.html:154 -#: cps/templates/search_form.html:54 +#: cps/templates/book_edit.html:48 cps/templates/layout.html:157 +#: cps/templates/search_form.html:53 msgid "Series" msgstr "" -#: cps/templates/book_edit.html:43 +#: cps/templates/book_edit.html:52 msgid "Series id" msgstr "" -#: cps/templates/book_edit.html:47 +#: cps/templates/book_edit.html:56 msgid "Rating" msgstr "" -#: cps/templates/book_edit.html:51 +#: cps/templates/book_edit.html:60 msgid "Cover URL (jpg, cover is downloaded and stored in database, field is afterwards empty again)" msgstr "" -#: cps/templates/book_edit.html:56 cps/templates/detail.html:131 +#: cps/templates/book_edit.html:65 cps/templates/detail.html:131 msgid "Publishing date" msgstr "" -#: cps/templates/book_edit.html:63 cps/templates/user_edit.html:27 +#: cps/templates/book_edit.html:72 cps/templates/user_edit.html:27 msgid "Language" msgstr "" -#: cps/templates/book_edit.html:74 +#: cps/templates/book_edit.html:83 cps/templates/search_form.html:117 msgid "Yes" msgstr "" -#: cps/templates/book_edit.html:75 +#: cps/templates/book_edit.html:84 cps/templates/search_form.html:118 msgid "No" msgstr "" -#: cps/templates/book_edit.html:121 +#: cps/templates/book_edit.html:130 msgid "Upload format" msgstr "" -#: cps/templates/book_edit.html:130 +#: cps/templates/book_edit.html:139 msgid "view book after edit" msgstr "" -#: cps/templates/book_edit.html:133 cps/templates/book_edit.html:169 +#: cps/templates/book_edit.html:142 cps/templates/book_edit.html:178 msgid "Get metadata" msgstr "" -#: cps/templates/book_edit.html:134 cps/templates/config_edit.html:166 +#: cps/templates/book_edit.html:143 cps/templates/config_edit.html:204 #: cps/templates/config_view_edit.html:163 cps/templates/login.html:20 -#: cps/templates/search_form.html:96 cps/templates/shelf_edit.html:17 +#: cps/templates/search_form.html:153 cps/templates/shelf_edit.html:17 #: cps/templates/user_edit.html:145 msgid "Submit" msgstr "" -#: cps/templates/book_edit.html:148 +#: cps/templates/book_edit.html:157 msgid "Are really you sure?" msgstr "" -#: cps/templates/book_edit.html:151 +#: cps/templates/book_edit.html:160 msgid "Book will be deleted from Calibre database" msgstr "" -#: cps/templates/book_edit.html:152 +#: cps/templates/book_edit.html:161 msgid "and from hard disk" msgstr "" -#: cps/templates/book_edit.html:156 -msgid "Delete" -msgstr "" - -#: cps/templates/book_edit.html:172 +#: cps/templates/book_edit.html:181 msgid "Keyword" msgstr "" -#: cps/templates/book_edit.html:173 +#: cps/templates/book_edit.html:182 msgid " Search keyword " msgstr "" -#: cps/templates/book_edit.html:175 cps/templates/layout.html:46 +#: cps/templates/book_edit.html:184 cps/templates/layout.html:46 msgid "Go!" msgstr "" -#: cps/templates/book_edit.html:179 +#: cps/templates/book_edit.html:188 msgid "Click the cover to load metadata to the form" msgstr "" -#: cps/templates/book_edit.html:191 cps/templates/book_edit.html:231 +#: cps/templates/book_edit.html:200 cps/templates/book_edit.html:240 msgid "Loading..." msgstr "" -#: cps/templates/book_edit.html:196 cps/templates/layout.html:218 +#: cps/templates/book_edit.html:205 cps/templates/layout.html:221 msgid "Close" msgstr "" -#: cps/templates/book_edit.html:218 cps/templates/book_edit.html:235 +#: cps/templates/book_edit.html:227 cps/templates/book_edit.html:244 #: cps/templates/detail.html:126 cps/templates/search_form.html:14 msgid "Publisher" msgstr "" -#: cps/templates/book_edit.html:223 cps/templates/book_edit.html:237 +#: cps/templates/book_edit.html:232 cps/templates/book_edit.html:246 msgid "Source" msgstr "" -#: cps/templates/book_edit.html:232 +#: cps/templates/book_edit.html:241 msgid "Search error!" msgstr "" -#: cps/templates/book_edit.html:233 +#: cps/templates/book_edit.html:242 msgid "No Result! Please try anonther keyword." msgstr "" @@ -843,78 +916,106 @@ msgid "Authenticate Google Drive" msgstr "" #: cps/templates/config_edit.html:40 +msgid "Please finish Google Drive setup after login" +msgstr "" + +#: cps/templates/config_edit.html:44 msgid "Google Drive Calibre folder" msgstr "" -#: cps/templates/config_edit.html:48 +#: cps/templates/config_edit.html:52 msgid "Metadata Watch Channel ID" msgstr "" -#: cps/templates/config_edit.html:51 +#: cps/templates/config_edit.html:55 msgid "Revoke" msgstr "" -#: cps/templates/config_edit.html:67 +#: cps/templates/config_edit.html:73 msgid "Server Configuration" msgstr "" -#: cps/templates/config_edit.html:74 +#: cps/templates/config_edit.html:80 msgid "Server Port" msgstr "" -#: cps/templates/config_edit.html:78 +#: cps/templates/config_edit.html:84 msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:82 +#: cps/templates/config_edit.html:88 msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgstr "" -#: cps/templates/config_edit.html:93 +#: cps/templates/config_edit.html:99 msgid "Logfile Configuration" msgstr "" -#: cps/templates/config_edit.html:109 +#: cps/templates/config_edit.html:115 msgid "Location and name of logfile (calibre-web.log for no entry)" msgstr "" -#: cps/templates/config_edit.html:120 +#: cps/templates/config_edit.html:126 msgid "Feature Configuration" msgstr "" -#: cps/templates/config_edit.html:128 +#: cps/templates/config_edit.html:134 msgid "Enable uploading" msgstr "" -#: cps/templates/config_edit.html:132 +#: cps/templates/config_edit.html:138 msgid "Enable anonymous browsing" msgstr "" -#: cps/templates/config_edit.html:136 +#: cps/templates/config_edit.html:142 msgid "Enable public registration" msgstr "" -#: cps/templates/config_edit.html:140 +#: cps/templates/config_edit.html:146 msgid "Enable remote login (\"magic link\")" msgstr "" -#: cps/templates/config_edit.html:145 +#: cps/templates/config_edit.html:151 msgid "Use" msgstr "" -#: cps/templates/config_edit.html:146 +#: cps/templates/config_edit.html:152 msgid "Obtain an API Key" msgstr "" -#: cps/templates/config_edit.html:150 +#: cps/templates/config_edit.html:156 msgid "Goodreads API Key" msgstr "" -#: cps/templates/config_edit.html:154 +#: cps/templates/config_edit.html:160 msgid "Goodreads API Secret" msgstr "" -#: cps/templates/config_edit.html:171 cps/templates/layout.html:79 +#: cps/templates/config_edit.html:173 +msgid "E-Book converter" +msgstr "" + +#: cps/templates/config_edit.html:181 +msgid "No converter" +msgstr "" + +#: cps/templates/config_edit.html:183 +msgid "Use Kindlegen" +msgstr "" + +#: cps/templates/config_edit.html:185 +msgid "Use calibre's ebook converter" +msgstr "" + +#: cps/templates/config_edit.html:189 +msgid "E-Book converter settings" +msgstr "" + +#: cps/templates/config_edit.html:193 +msgid "Path to convertertool" +msgstr "" + +#: cps/templates/config_edit.html:209 cps/templates/layout.html:82 #: cps/templates/login.html:4 msgid "Login" msgstr "" @@ -923,8 +1024,8 @@ msgstr "" msgid "View Configuration" msgstr "" -#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:130 -#: cps/templates/layout.html:131 cps/templates/shelf_edit.html:7 +#: cps/templates/config_view_edit.html:19 cps/templates/layout.html:133 +#: cps/templates/layout.html:134 cps/templates/shelf_edit.html:7 msgid "Title" msgstr "" @@ -1096,7 +1197,7 @@ msgstr "" msgid "Save settings and send Test E-Mail" msgstr "" -#: cps/templates/feed.xml:20 cps/templates/layout.html:202 +#: cps/templates/feed.xml:20 cps/templates/layout.html:205 msgid "Next" msgstr "" @@ -1113,7 +1214,7 @@ msgstr "" msgid "Start" msgstr "" -#: cps/templates/index.xml:14 cps/templates/layout.html:136 +#: cps/templates/index.xml:14 cps/templates/layout.html:139 msgid "Hot Books" msgstr "" @@ -1121,7 +1222,7 @@ msgstr "" msgid "Popular publications from this catalog based on Downloads." msgstr "" -#: cps/templates/index.xml:20 cps/templates/layout.html:139 +#: cps/templates/index.xml:20 cps/templates/layout.html:142 msgid "Best rated Books" msgstr "" @@ -1141,7 +1242,7 @@ msgstr "" msgid "Show Random Books" msgstr "" -#: cps/templates/index.xml:52 cps/templates/layout.html:157 +#: cps/templates/index.xml:52 cps/templates/layout.html:160 msgid "Authors" msgstr "" @@ -1157,7 +1258,7 @@ msgstr "" msgid "Books ordered by series" msgstr "" -#: cps/templates/index.xml:70 cps/templates/layout.html:163 +#: cps/templates/index.xml:70 cps/templates/layout.html:166 msgid "Public Shelves" msgstr "" @@ -1165,7 +1266,7 @@ msgstr "" msgid "Books organized in public shelfs, visible to everyone" msgstr "" -#: cps/templates/index.xml:77 cps/templates/layout.html:167 +#: cps/templates/index.xml:77 cps/templates/layout.html:170 msgid "Your Shelves" msgstr "" @@ -1181,80 +1282,80 @@ msgstr "" msgid "Advanced Search" msgstr "" -#: cps/templates/layout.html:75 +#: cps/templates/layout.html:78 msgid "Logout" msgstr "" -#: cps/templates/layout.html:80 cps/templates/register.html:18 +#: cps/templates/layout.html:83 cps/templates/register.html:18 msgid "Register" msgstr "" -#: cps/templates/layout.html:105 +#: cps/templates/layout.html:108 msgid "Uploading..." msgstr "" -#: cps/templates/layout.html:106 +#: cps/templates/layout.html:109 msgid "please don't refresh the page" msgstr "" -#: cps/templates/layout.html:117 +#: cps/templates/layout.html:120 msgid "Browse" msgstr "" -#: cps/templates/layout.html:119 +#: cps/templates/layout.html:122 msgid "Recently Added" msgstr "" -#: cps/templates/layout.html:124 +#: cps/templates/layout.html:127 msgid "Sorted Books" msgstr "" -#: cps/templates/layout.html:128 cps/templates/layout.html:129 -#: cps/templates/layout.html:130 cps/templates/layout.html:131 +#: cps/templates/layout.html:131 cps/templates/layout.html:132 +#: cps/templates/layout.html:133 cps/templates/layout.html:134 msgid "Sort By" msgstr "" -#: cps/templates/layout.html:128 +#: cps/templates/layout.html:131 msgid "Newest" msgstr "" -#: cps/templates/layout.html:129 +#: cps/templates/layout.html:132 msgid "Oldest" msgstr "" -#: cps/templates/layout.html:130 +#: cps/templates/layout.html:133 msgid "Ascending" msgstr "" -#: cps/templates/layout.html:131 +#: cps/templates/layout.html:134 msgid "Descending" msgstr "" -#: cps/templates/layout.html:148 +#: cps/templates/layout.html:151 msgid "Discover" msgstr "" -#: cps/templates/layout.html:151 +#: cps/templates/layout.html:154 msgid "Categories" msgstr "" -#: cps/templates/layout.html:160 cps/templates/search_form.html:75 +#: cps/templates/layout.html:163 cps/templates/search_form.html:74 msgid "Languages" msgstr "" -#: cps/templates/layout.html:172 +#: cps/templates/layout.html:175 msgid "Create a Shelf" msgstr "" -#: cps/templates/layout.html:173 cps/templates/stats.html:3 +#: cps/templates/layout.html:176 cps/templates/stats.html:3 msgid "About" msgstr "" -#: cps/templates/layout.html:187 +#: cps/templates/layout.html:190 msgid "Previous" msgstr "" -#: cps/templates/layout.html:214 +#: cps/templates/layout.html:217 msgid "Book Details" msgstr "" @@ -1340,26 +1441,38 @@ msgstr "" msgid "Results for:" msgstr "" -#: cps/templates/search_form.html:20 +#: cps/templates/search.html:12 +msgid "Search result to shelf" +msgstr "" + +#: cps/templates/search_form.html:19 msgid "Publishing date from" msgstr "" -#: cps/templates/search_form.html:27 +#: cps/templates/search_form.html:26 msgid "Publishing date to" msgstr "" -#: cps/templates/search_form.html:44 +#: cps/templates/search_form.html:43 msgid "Exclude Tags" msgstr "" -#: cps/templates/search_form.html:64 +#: cps/templates/search_form.html:63 msgid "Exclude Series" msgstr "" -#: cps/templates/search_form.html:85 +#: cps/templates/search_form.html:84 msgid "Exclude Languages" msgstr "" +#: cps/templates/search_form.html:97 +msgid "Rating bigger than" +msgstr "" + +#: cps/templates/search_form.html:101 +msgid "Rating less than" +msgstr "" + #: cps/templates/shelf.html:7 msgid "Delete this Shelf" msgstr "" @@ -1420,6 +1533,42 @@ msgstr "" msgid "Installed Version" msgstr "" +#: cps/templates/tasks.html:7 +msgid "Tasks list" +msgstr "" + +#: cps/templates/tasks.html:12 +msgid "User" +msgstr "" + +#: cps/templates/tasks.html:14 +msgid "Task" +msgstr "" + +#: cps/templates/tasks.html:15 +msgid "Status" +msgstr "" + +#: cps/templates/tasks.html:16 +msgid "Progress" +msgstr "" + +#: cps/templates/tasks.html:17 +msgid "Runtime" +msgstr "" + +#: cps/templates/tasks.html:18 +msgid "Starttime" +msgstr "" + +#: cps/templates/tasks.html:24 +msgid "Delete finished tasks" +msgstr "" + +#: cps/templates/tasks.html:25 +msgid "Hide all tasks" +msgstr "" + #: cps/templates/user_edit.html:23 msgid "Kindle E-Mail" msgstr ""