From 4be55285d82c8c5d1ee369cc070acd8ee0849a30 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Tue, 6 Aug 2019 18:38:17 +0200 Subject: [PATCH 1/2] Fix #1001 --- cps/about.py | 6 ++ cps/helper.py | 2 +- cps/translations/de/LC_MESSAGES/messages.mo | Bin 50963 -> 37971 bytes cps/translations/de/LC_MESSAGES/messages.po | 90 +++++++++++--------- messages.pot | 82 ++++++++++-------- 5 files changed, 105 insertions(+), 75 deletions(-) diff --git a/cps/about.py b/cps/about.py index 7c61dbd0..85a924e2 100644 --- a/cps/about.py +++ b/cps/about.py @@ -35,6 +35,11 @@ try: from flask_login import __version__ as flask_loginVersion except ImportError: from flask_login.__about__ import __version__ as flask_loginVersion +try: + import unidecode + unidecode_version = _(u'installed') +except ImportError: + unidecode_version = _(u'not installed') about = flask.Blueprint('about', __name__) @@ -54,6 +59,7 @@ _VERSIONS = OrderedDict( SQLite=sqlite3.sqlite_version, iso639=isoLanguages.__version__, pytz=pytz.__version__, + Unidecode = unidecode_version ) _VERSIONS.update(uploader.get_versions()) diff --git a/cps/helper.py b/cps/helper.py index 4e7f3efb..e909086e 100644 --- a/cps/helper.py +++ b/cps/helper.py @@ -785,4 +785,4 @@ def get_download_link(book_id, book_format): ############### Database Helper functions def lcase(s): - return unidecode.unidecode(s.lower()) + return unidecode.unidecode(s.lower()) if use_unidecode else s.lower() diff --git a/cps/translations/de/LC_MESSAGES/messages.mo b/cps/translations/de/LC_MESSAGES/messages.mo index 0c3c0054f6b6e55fd0c6202f119fdf9e8f8786d9..dbe4f7085ac5ae4e1329e4e52437236bd86627c1 100644 GIT binary patch delta 12590 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 literal 50963 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 RClE~yoX$x>S3f8B{{bA;40`|o diff --git a/cps/translations/de/LC_MESSAGES/messages.po b/cps/translations/de/LC_MESSAGES/messages.po index 9e712e40..eb5c17b6 100644 --- a/cps/translations/de/LC_MESSAGES/messages.po +++ b/cps/translations/de/LC_MESSAGES/messages.po @@ -5,20 +5,30 @@ # FIRST AUTHOR OzzieIsaacs, 2016. msgid "" msgstr "" -"Project-Id-Version: Calibre-Web\n" +"Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2019-07-26 17:19+0200\n" -"PO-Revision-Date: 2019-06-22 19:54+0200\n" +"POT-Creation-Date: 2019-08-06 18:35+0200\n" +"PO-Revision-Date: 2019-08-06 18:36+0200\n" "Last-Translator: Ozzie Isaacs\n" "Language: de\n" "Language-Team: \n" -"Plural-Forms: nplurals=2; plural=(n != 1)\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=utf-8\n" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.7.0\n" +"X-Generator: Poedit 2.2.3\n" -#: cps/about.py:70 +#: cps/about.py:40 +msgid "installed" +msgstr "Installiert" + +#: cps/about.py:42 cps/uploader.py:213 cps/uploader.py:214 cps/uploader.py:218 +#: cps/uploader.py:222 cps/uploader.py:226 +msgid "not installed" +msgstr "Nicht installiert" + +#: cps/about.py:76 msgid "Statistics" msgstr "Statistiken" @@ -276,125 +286,133 @@ msgstr "Google Drive Setup is nicht komplett, bitte versuche Google Drive zu dea msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "Callback Domain ist nicht verifiziert, bitte Domain in der Google Developer Console verifizieren" -#: cps/helper.py:79 +#: cps/helper.py:53 +msgid "Installed" +msgstr "" + +#: cps/helper.py:56 +msgid "Not installed" +msgstr "" + +#: cps/helper.py:81 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "%(format)s Format für Buch-ID %(book)d nicht gefunden " -#: cps/helper.py:91 +#: cps/helper.py:93 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "%(format)s von Buch %(fn)s nicht auf Google Drive gefunden" -#: cps/helper.py:98 cps/helper.py:206 cps/templates/detail.html:41 +#: cps/helper.py:100 cps/helper.py:208 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "An Kindle senden" -#: cps/helper.py:99 cps/helper.py:117 cps/helper.py:208 +#: cps/helper.py:101 cps/helper.py:119 cps/helper.py:210 msgid "This e-mail has been sent via Calibre-Web." msgstr "Diese E-Mail wurde durch Calibre-Web versendet." -#: cps/helper.py:110 +#: cps/helper.py:112 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "%(format)s nicht gefunden: %(fn)s" -#: cps/helper.py:115 +#: cps/helper.py:117 msgid "Calibre-Web test e-mail" msgstr "Calibre-Web Test-E-Mail" -#: cps/helper.py:117 +#: cps/helper.py:119 msgid "Test e-mail" msgstr "Test-E-Mail" -#: cps/helper.py:132 +#: cps/helper.py:134 msgid "Get Started with Calibre-Web" msgstr "Loslegen mit Calibre-Web" -#: cps/helper.py:134 +#: cps/helper.py:136 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "Registrierungs-E-Mail für Benutzer %(name)s" -#: cps/helper.py:148 cps/helper.py:150 cps/helper.py:152 cps/helper.py:160 -#: cps/helper.py:162 cps/helper.py:164 +#: cps/helper.py:150 cps/helper.py:152 cps/helper.py:154 cps/helper.py:162 +#: cps/helper.py:164 cps/helper.py:166 #, python-format msgid "Send %(format)s to Kindle" msgstr "Sende %(format)s an Kindle" -#: cps/helper.py:168 +#: cps/helper.py:170 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "Konvertiere %(orig)s nach %(format)s und sende an Kindle" -#: cps/helper.py:208 +#: cps/helper.py:210 #, python-format msgid "E-mail: %(book)s" msgstr "E-Mail: %(book)s" -#: cps/helper.py:210 +#: cps/helper.py:212 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "Die angeforderte Datei konnte nicht gelesen werden. Evtl. falsche Zugriffsrechte?" -#: cps/helper.py:317 +#: cps/helper.py:319 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Umbenennen des Titels '%(src)s' zu '%(dest)s' schlug fehl: %(error)s" -#: cps/helper.py:327 +#: cps/helper.py:329 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Umbenennen des Authors '%(src)s' zu '%(dest)s' schlug fehl: %(error)s" -#: cps/helper.py:341 +#: cps/helper.py:343 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "Umbenennen der Datei im Pfad '%(src)s' nach '%(dest)s' ist fehlgeschlagen: %(error)s" -#: cps/helper.py:367 cps/helper.py:377 cps/helper.py:385 +#: cps/helper.py:369 cps/helper.py:379 cps/helper.py:387 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "Datei %(file)s wurde nicht auf Google Drive gefunden" -#: cps/helper.py:406 +#: cps/helper.py:408 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "Buchpfad %(path)s wurde nicht auf Google Drive gefunden" -#: cps/helper.py:623 +#: cps/helper.py:625 msgid "Waiting" msgstr "Wartend" -#: cps/helper.py:625 +#: cps/helper.py:627 msgid "Failed" msgstr "Fehlgeschlagen" -#: cps/helper.py:627 +#: cps/helper.py:629 msgid "Started" msgstr "Gestartet" -#: cps/helper.py:629 +#: cps/helper.py:631 msgid "Finished" msgstr "Beendet" -#: cps/helper.py:631 +#: cps/helper.py:633 msgid "Unknown Status" msgstr "Unbekannter Status" -#: cps/helper.py:636 +#: cps/helper.py:638 msgid "E-mail: " msgstr "E-Mail: " -#: cps/helper.py:638 cps/helper.py:642 +#: cps/helper.py:640 cps/helper.py:644 msgid "Convert: " msgstr "Konvertiere: " -#: cps/helper.py:640 +#: cps/helper.py:642 msgid "Upload: " msgstr "Upload: " -#: cps/helper.py:644 +#: cps/helper.py:646 msgid "Unknown Task: " msgstr "Unbekannte Aufgabe: " @@ -676,11 +694,6 @@ msgstr "Ein neues Update ist verfügbar. Klicke auf den Button unten, um auf Ver msgid "Click on the button below to update to the latest stable version." msgstr "Klicke auf den Button unten, um auf die letzte stabile Version zu aktualisieren." -#: cps/uploader.py:213 cps/uploader.py:214 cps/uploader.py:218 -#: cps/uploader.py:222 cps/uploader.py:226 -msgid "not installed" -msgstr "Nicht installiert" - #: cps/web.py:460 msgid "Recently Added Books" msgstr "Kürzlich hinzugefügte Bücher" @@ -2301,4 +2314,3 @@ msgstr "Letzte Downloads" #~ msgid "Google OAuth Client Secret" #~ msgstr "Google OAuth Client-Secret" - diff --git a/messages.pot b/messages.pot index e4bd017c..daaccd01 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: 2019-07-26 16:41+0200\n" +"POT-Creation-Date: 2019-08-06 18:35+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,7 +17,16 @@ msgstr "" "Content-Transfer-Encoding: 8bit\n" "Generated-By: Babel 2.7.0\n" -#: cps/about.py:70 +#: cps/about.py:40 +msgid "installed" +msgstr "" + +#: cps/about.py:42 cps/uploader.py:213 cps/uploader.py:214 cps/uploader.py:218 +#: cps/uploader.py:222 cps/uploader.py:226 +msgid "not installed" +msgstr "" + +#: cps/about.py:76 msgid "Statistics" msgstr "" @@ -275,125 +284,133 @@ msgstr "" msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/helper.py:79 +#: cps/helper.py:53 +msgid "Installed" +msgstr "" + +#: cps/helper.py:56 +msgid "Not installed" +msgstr "" + +#: cps/helper.py:81 #, python-format msgid "%(format)s format not found for book id: %(book)d" msgstr "" -#: cps/helper.py:91 +#: cps/helper.py:93 #, python-format msgid "%(format)s not found on Google Drive: %(fn)s" msgstr "" -#: cps/helper.py:98 cps/helper.py:206 cps/templates/detail.html:41 +#: cps/helper.py:100 cps/helper.py:208 cps/templates/detail.html:41 #: cps/templates/detail.html:45 msgid "Send to Kindle" msgstr "" -#: cps/helper.py:99 cps/helper.py:117 cps/helper.py:208 +#: cps/helper.py:101 cps/helper.py:119 cps/helper.py:210 msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/helper.py:110 +#: cps/helper.py:112 #, python-format msgid "%(format)s not found: %(fn)s" msgstr "" -#: cps/helper.py:115 +#: cps/helper.py:117 msgid "Calibre-Web test e-mail" msgstr "" -#: cps/helper.py:117 +#: cps/helper.py:119 msgid "Test e-mail" msgstr "" -#: cps/helper.py:132 +#: cps/helper.py:134 msgid "Get Started with Calibre-Web" msgstr "" -#: cps/helper.py:134 +#: cps/helper.py:136 #, python-format msgid "Registration e-mail for user: %(name)s" msgstr "" -#: cps/helper.py:148 cps/helper.py:150 cps/helper.py:152 cps/helper.py:160 -#: cps/helper.py:162 cps/helper.py:164 +#: cps/helper.py:150 cps/helper.py:152 cps/helper.py:154 cps/helper.py:162 +#: cps/helper.py:164 cps/helper.py:166 #, python-format msgid "Send %(format)s to Kindle" msgstr "" -#: cps/helper.py:168 +#: cps/helper.py:170 #, python-format msgid "Convert %(orig)s to %(format)s and send to Kindle" msgstr "" -#: cps/helper.py:208 +#: cps/helper.py:210 #, python-format msgid "E-mail: %(book)s" msgstr "" -#: cps/helper.py:210 +#: cps/helper.py:212 msgid "The requested file could not be read. Maybe wrong permissions?" msgstr "" -#: cps/helper.py:317 +#: cps/helper.py:319 #, python-format msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:327 +#: cps/helper.py:329 #, python-format msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:341 +#: cps/helper.py:343 #, python-format msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgstr "" -#: cps/helper.py:367 cps/helper.py:377 cps/helper.py:385 +#: cps/helper.py:369 cps/helper.py:379 cps/helper.py:387 #, python-format msgid "File %(file)s not found on Google Drive" msgstr "" -#: cps/helper.py:406 +#: cps/helper.py:408 #, python-format msgid "Book path %(path)s not found on Google Drive" msgstr "" -#: cps/helper.py:623 +#: cps/helper.py:625 msgid "Waiting" msgstr "" -#: cps/helper.py:625 +#: cps/helper.py:627 msgid "Failed" msgstr "" -#: cps/helper.py:627 +#: cps/helper.py:629 msgid "Started" msgstr "" -#: cps/helper.py:629 +#: cps/helper.py:631 msgid "Finished" msgstr "" -#: cps/helper.py:631 +#: cps/helper.py:633 msgid "Unknown Status" msgstr "" -#: cps/helper.py:636 +#: cps/helper.py:638 msgid "E-mail: " msgstr "" -#: cps/helper.py:638 cps/helper.py:642 +#: cps/helper.py:640 cps/helper.py:644 msgid "Convert: " msgstr "" -#: cps/helper.py:640 +#: cps/helper.py:642 msgid "Upload: " msgstr "" -#: cps/helper.py:644 +#: cps/helper.py:646 msgid "Unknown Task: " msgstr "" @@ -675,11 +692,6 @@ msgstr "" msgid "Click on the button below to update to the latest stable version." msgstr "" -#: cps/uploader.py:213 cps/uploader.py:214 cps/uploader.py:218 -#: cps/uploader.py:222 cps/uploader.py:226 -msgid "not installed" -msgstr "" - #: cps/web.py:460 msgid "Recently Added Books" msgstr "" From 9356148e2d9961a464f7fc5e6374dcab90b007c9 Mon Sep 17 00:00:00 2001 From: Ozzieisaacs Date: Tue, 6 Aug 2019 19:53:24 +0200 Subject: [PATCH 2/2] Added more information about dependencies --- cps/about.py | 6 +++++- cps/uploader.py | 7 ++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cps/about.py b/cps/about.py index 85a924e2..a54754c7 100644 --- a/cps/about.py +++ b/cps/about.py @@ -41,6 +41,8 @@ try: except ImportError: unidecode_version = _(u'not installed') +from . import services + about = flask.Blueprint('about', __name__) @@ -59,7 +61,9 @@ _VERSIONS = OrderedDict( SQLite=sqlite3.sqlite_version, iso639=isoLanguages.__version__, pytz=pytz.__version__, - Unidecode = unidecode_version + Unidecode = unidecode_version, + Flask_SimpleLDAP = _(u'installed') if bool(services.ldap) else _(u'not installed'), + Goodreads = _(u'installed') if bool(services.goodreads) else _(u'not installed'), ) _VERSIONS.update(uploader.get_versions()) diff --git a/cps/uploader.py b/cps/uploader.py index 7be5e6ba..4c6b0c97 100644 --- a/cps/uploader.py +++ b/cps/uploader.py @@ -224,11 +224,16 @@ def get_versions(): PILVersion = 'v' + PILversion else: PILVersion = _(u'not installed') + if comic.use_comic_meta: + ComicVersion = _(u'installed') + else: + ComicVersion = _(u'not installed') return {'Image Magick': IVersion, 'PyPdf': PVersion, 'lxml':XVersion, 'Wand': WVersion, - 'Pillow': PILVersion} + 'Pillow': PILVersion, + 'Comic_API': ComicVersion} def upload(uploadfile):