Merge branch 'master' into Develop

pull/1014/head
Ozzieisaacs 5 years ago
commit 87fa4a57b5

@ -35,6 +35,13 @@ try:
from flask_login import __version__ as flask_loginVersion from flask_login import __version__ as flask_loginVersion
except ImportError: except ImportError:
from flask_login.__about__ import __version__ as flask_loginVersion from flask_login.__about__ import __version__ as flask_loginVersion
try:
import unidecode
unidecode_version = _(u'installed')
except ImportError:
unidecode_version = _(u'not installed')
from . import services
about = flask.Blueprint('about', __name__) about = flask.Blueprint('about', __name__)
@ -54,6 +61,9 @@ _VERSIONS = OrderedDict(
SQLite=sqlite3.sqlite_version, SQLite=sqlite3.sqlite_version,
iso639=isoLanguages.__version__, iso639=isoLanguages.__version__,
pytz=pytz.__version__, pytz=pytz.__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()) _VERSIONS.update(uploader.get_versions())

@ -785,4 +785,4 @@ def get_download_link(book_id, book_format):
############### Database Helper functions ############### Database Helper functions
def lcase(s): def lcase(s):
return unidecode.unidecode(s.lower()) return unidecode.unidecode(s.lower()) if use_unidecode else s.lower()

@ -5,20 +5,30 @@
# FIRST AUTHOR OzzieIsaacs, 2016. # FIRST AUTHOR OzzieIsaacs, 2016.
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2019-07-26 17:19+0200\n" "POT-Creation-Date: 2019-08-06 18:35+0200\n"
"PO-Revision-Date: 2019-06-22 19:54+0200\n" "PO-Revision-Date: 2019-08-06 18:36+0200\n"
"Last-Translator: Ozzie Isaacs\n" "Last-Translator: Ozzie Isaacs\n"
"Language: de\n" "Language: de\n"
"Language-Team: \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" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n" "Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\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" msgid "Statistics"
msgstr "Statistiken" 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" 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" 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 #, python-format
msgid "%(format)s format not found for book id: %(book)d" msgid "%(format)s format not found for book id: %(book)d"
msgstr "%(format)s Format für Buch-ID %(book)d nicht gefunden " msgstr "%(format)s Format für Buch-ID %(book)d nicht gefunden "
#: cps/helper.py:91 #: cps/helper.py:93
#, python-format #, python-format
msgid "%(format)s not found on Google Drive: %(fn)s" msgid "%(format)s not found on Google Drive: %(fn)s"
msgstr "%(format)s von Buch %(fn)s nicht auf Google Drive gefunden" 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 #: cps/templates/detail.html:45
msgid "Send to Kindle" msgid "Send to Kindle"
msgstr "An Kindle senden" 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." msgid "This e-mail has been sent via Calibre-Web."
msgstr "Diese E-Mail wurde durch Calibre-Web versendet." msgstr "Diese E-Mail wurde durch Calibre-Web versendet."
#: cps/helper.py:110 #: cps/helper.py:112
#, python-format #, python-format
msgid "%(format)s not found: %(fn)s" msgid "%(format)s not found: %(fn)s"
msgstr "%(format)s nicht gefunden: %(fn)s" msgstr "%(format)s nicht gefunden: %(fn)s"
#: cps/helper.py:115 #: cps/helper.py:117
msgid "Calibre-Web test e-mail" msgid "Calibre-Web test e-mail"
msgstr "Calibre-Web Test-E-Mail" msgstr "Calibre-Web Test-E-Mail"
#: cps/helper.py:117 #: cps/helper.py:119
msgid "Test e-mail" msgid "Test e-mail"
msgstr "Test-E-Mail" msgstr "Test-E-Mail"
#: cps/helper.py:132 #: cps/helper.py:134
msgid "Get Started with Calibre-Web" msgid "Get Started with Calibre-Web"
msgstr "Loslegen mit Calibre-Web" msgstr "Loslegen mit Calibre-Web"
#: cps/helper.py:134 #: cps/helper.py:136
#, python-format #, python-format
msgid "Registration e-mail for user: %(name)s" msgid "Registration e-mail for user: %(name)s"
msgstr "Registrierungs-E-Mail für Benutzer %(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:150 cps/helper.py:152 cps/helper.py:154 cps/helper.py:162
#: cps/helper.py:162 cps/helper.py:164 #: cps/helper.py:164 cps/helper.py:166
#, python-format #, python-format
msgid "Send %(format)s to Kindle" msgid "Send %(format)s to Kindle"
msgstr "Sende %(format)s an Kindle" msgstr "Sende %(format)s an Kindle"
#: cps/helper.py:168 #: cps/helper.py:170
#, python-format #, python-format
msgid "Convert %(orig)s to %(format)s and send to Kindle" msgid "Convert %(orig)s to %(format)s and send to Kindle"
msgstr "Konvertiere %(orig)s nach %(format)s und sende an Kindle" msgstr "Konvertiere %(orig)s nach %(format)s und sende an Kindle"
#: cps/helper.py:208 #: cps/helper.py:210
#, python-format #, python-format
msgid "E-mail: %(book)s" msgid "E-mail: %(book)s"
msgstr "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?" msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "Die angeforderte Datei konnte nicht gelesen werden. Evtl. falsche Zugriffsrechte?" msgstr "Die angeforderte Datei konnte nicht gelesen werden. Evtl. falsche Zugriffsrechte?"
#: cps/helper.py:317 #: cps/helper.py:319
#, python-format #, python-format
msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" 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" msgstr "Umbenennen des Titels '%(src)s' zu '%(dest)s' schlug fehl: %(error)s"
#: cps/helper.py:327 #: cps/helper.py:329
#, python-format #, python-format
msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" 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" msgstr "Umbenennen des Authors '%(src)s' zu '%(dest)s' schlug fehl: %(error)s"
#: cps/helper.py:341 #: cps/helper.py:343
#, python-format #, python-format
msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" 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" 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 #, python-format
msgid "File %(file)s not found on Google Drive" msgid "File %(file)s not found on Google Drive"
msgstr "Datei %(file)s wurde nicht auf Google Drive gefunden" msgstr "Datei %(file)s wurde nicht auf Google Drive gefunden"
#: cps/helper.py:406 #: cps/helper.py:408
#, python-format #, python-format
msgid "Book path %(path)s not found on Google Drive" msgid "Book path %(path)s not found on Google Drive"
msgstr "Buchpfad %(path)s wurde nicht auf Google Drive gefunden" msgstr "Buchpfad %(path)s wurde nicht auf Google Drive gefunden"
#: cps/helper.py:623 #: cps/helper.py:625
msgid "Waiting" msgid "Waiting"
msgstr "Wartend" msgstr "Wartend"
#: cps/helper.py:625 #: cps/helper.py:627
msgid "Failed" msgid "Failed"
msgstr "Fehlgeschlagen" msgstr "Fehlgeschlagen"
#: cps/helper.py:627 #: cps/helper.py:629
msgid "Started" msgid "Started"
msgstr "Gestartet" msgstr "Gestartet"
#: cps/helper.py:629 #: cps/helper.py:631
msgid "Finished" msgid "Finished"
msgstr "Beendet" msgstr "Beendet"
#: cps/helper.py:631 #: cps/helper.py:633
msgid "Unknown Status" msgid "Unknown Status"
msgstr "Unbekannter Status" msgstr "Unbekannter Status"
#: cps/helper.py:636 #: cps/helper.py:638
msgid "E-mail: " msgid "E-mail: "
msgstr "E-Mail: " msgstr "E-Mail: "
#: cps/helper.py:638 cps/helper.py:642 #: cps/helper.py:640 cps/helper.py:644
msgid "Convert: " msgid "Convert: "
msgstr "Konvertiere: " msgstr "Konvertiere: "
#: cps/helper.py:640 #: cps/helper.py:642
msgid "Upload: " msgid "Upload: "
msgstr "Upload: " msgstr "Upload: "
#: cps/helper.py:644 #: cps/helper.py:646
msgid "Unknown Task: " msgid "Unknown Task: "
msgstr "Unbekannte Aufgabe: " 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." 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." 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 #: cps/web.py:460
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "Kürzlich hinzugefügte Bücher" msgstr "Kürzlich hinzugefügte Bücher"
@ -2301,4 +2314,3 @@ msgstr "Letzte Downloads"
#~ msgid "Google OAuth Client Secret" #~ msgid "Google OAuth Client Secret"
#~ msgstr "Google OAuth Client-Secret" #~ msgstr "Google OAuth Client-Secret"

@ -224,11 +224,16 @@ def get_versions():
PILVersion = 'v' + PILversion PILVersion = 'v' + PILversion
else: else:
PILVersion = _(u'not installed') PILVersion = _(u'not installed')
if comic.use_comic_meta:
ComicVersion = _(u'installed')
else:
ComicVersion = _(u'not installed')
return {'Image Magick': IVersion, return {'Image Magick': IVersion,
'PyPdf': PVersion, 'PyPdf': PVersion,
'lxml':XVersion, 'lxml':XVersion,
'Wand': WVersion, 'Wand': WVersion,
'Pillow': PILVersion} 'Pillow': PILVersion,
'Comic_API': ComicVersion}
def upload(uploadfile): def upload(uploadfile):

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PROJECT VERSION\n" "Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\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" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,7 +17,16 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.7.0\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" msgid "Statistics"
msgstr "" msgstr ""
@ -275,125 +284,133 @@ msgstr ""
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
msgstr "" 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 #, python-format
msgid "%(format)s format not found for book id: %(book)d" msgid "%(format)s format not found for book id: %(book)d"
msgstr "" msgstr ""
#: cps/helper.py:91 #: cps/helper.py:93
#, python-format #, python-format
msgid "%(format)s not found on Google Drive: %(fn)s" msgid "%(format)s not found on Google Drive: %(fn)s"
msgstr "" 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 #: cps/templates/detail.html:45
msgid "Send to Kindle" msgid "Send to Kindle"
msgstr "" 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." msgid "This e-mail has been sent via Calibre-Web."
msgstr "" msgstr ""
#: cps/helper.py:110 #: cps/helper.py:112
#, python-format #, python-format
msgid "%(format)s not found: %(fn)s" msgid "%(format)s not found: %(fn)s"
msgstr "" msgstr ""
#: cps/helper.py:115 #: cps/helper.py:117
msgid "Calibre-Web test e-mail" msgid "Calibre-Web test e-mail"
msgstr "" msgstr ""
#: cps/helper.py:117 #: cps/helper.py:119
msgid "Test e-mail" msgid "Test e-mail"
msgstr "" msgstr ""
#: cps/helper.py:132 #: cps/helper.py:134
msgid "Get Started with Calibre-Web" msgid "Get Started with Calibre-Web"
msgstr "" msgstr ""
#: cps/helper.py:134 #: cps/helper.py:136
#, python-format #, python-format
msgid "Registration e-mail for user: %(name)s" msgid "Registration e-mail for user: %(name)s"
msgstr "" msgstr ""
#: cps/helper.py:148 cps/helper.py:150 cps/helper.py:152 cps/helper.py:160 #: cps/helper.py:150 cps/helper.py:152 cps/helper.py:154 cps/helper.py:162
#: cps/helper.py:162 cps/helper.py:164 #: cps/helper.py:164 cps/helper.py:166
#, python-format #, python-format
msgid "Send %(format)s to Kindle" msgid "Send %(format)s to Kindle"
msgstr "" msgstr ""
#: cps/helper.py:168 #: cps/helper.py:170
#, python-format #, python-format
msgid "Convert %(orig)s to %(format)s and send to Kindle" msgid "Convert %(orig)s to %(format)s and send to Kindle"
msgstr "" msgstr ""
#: cps/helper.py:208 #: cps/helper.py:210
#, python-format #, python-format
msgid "E-mail: %(book)s" msgid "E-mail: %(book)s"
msgstr "" msgstr ""
#: cps/helper.py:210 #: cps/helper.py:212
msgid "The requested file could not be read. Maybe wrong permissions?" msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "" msgstr ""
#: cps/helper.py:317 #: cps/helper.py:319
#, python-format #, python-format
msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "" msgstr ""
#: cps/helper.py:327 #: cps/helper.py:329
#, python-format #, python-format
msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "" msgstr ""
#: cps/helper.py:341 #: cps/helper.py:343
#, python-format #, python-format
msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "" 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 #, python-format
msgid "File %(file)s not found on Google Drive" msgid "File %(file)s not found on Google Drive"
msgstr "" msgstr ""
#: cps/helper.py:406 #: cps/helper.py:408
#, python-format #, python-format
msgid "Book path %(path)s not found on Google Drive" msgid "Book path %(path)s not found on Google Drive"
msgstr "" msgstr ""
#: cps/helper.py:623 #: cps/helper.py:625
msgid "Waiting" msgid "Waiting"
msgstr "" msgstr ""
#: cps/helper.py:625 #: cps/helper.py:627
msgid "Failed" msgid "Failed"
msgstr "" msgstr ""
#: cps/helper.py:627 #: cps/helper.py:629
msgid "Started" msgid "Started"
msgstr "" msgstr ""
#: cps/helper.py:629 #: cps/helper.py:631
msgid "Finished" msgid "Finished"
msgstr "" msgstr ""
#: cps/helper.py:631 #: cps/helper.py:633
msgid "Unknown Status" msgid "Unknown Status"
msgstr "" msgstr ""
#: cps/helper.py:636 #: cps/helper.py:638
msgid "E-mail: " msgid "E-mail: "
msgstr "" msgstr ""
#: cps/helper.py:638 cps/helper.py:642 #: cps/helper.py:640 cps/helper.py:644
msgid "Convert: " msgid "Convert: "
msgstr "" msgstr ""
#: cps/helper.py:640 #: cps/helper.py:642
msgid "Upload: " msgid "Upload: "
msgstr "" msgstr ""
#: cps/helper.py:644 #: cps/helper.py:646
msgid "Unknown Task: " msgid "Unknown Task: "
msgstr "" msgstr ""
@ -675,11 +692,6 @@ msgstr ""
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" 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 #: cps/web.py:460
msgid "Recently Added Books" msgid "Recently Added Books"
msgstr "" msgstr ""

Loading…
Cancel
Save