This commit is contained in:
Radosław Kierznowski 2019-08-18 21:54:29 +02:00
commit c73698e8fd
20 changed files with 260 additions and 217 deletions

View File

@ -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())

View File

@ -41,11 +41,13 @@ def extractCover(tmp_file_name, original_file_extension):
if use_comic_meta: if use_comic_meta:
archive = ComicArchive(tmp_file_name) archive = ComicArchive(tmp_file_name)
cover_data = None cover_data = None
ext = os.path.splitext(archive.getPageName(0)) for index, name in enumerate(archive.getPageNameList()):
ext = os.path.splitext(name)
if len(ext) > 1: if len(ext) > 1:
extension = ext[1].lower() extension = ext[1].lower()
if extension == '.jpg' or extension == '.jpeg': if extension == '.jpg' or extension == '.jpeg':
cover_data = archive.getPage(0) cover_data = archive.getPage(index)
break
else: else:
if original_file_extension.upper() == '.CBZ': if original_file_extension.upper() == '.CBZ':
cf = zipfile.ZipFile(tmp_file_name) cf = zipfile.ZipFile(tmp_file_name)
@ -53,7 +55,7 @@ def extractCover(tmp_file_name, original_file_extension):
ext = os.path.splitext(name) ext = os.path.splitext(name)
if len(ext) > 1: if len(ext) > 1:
extension = ext[1].lower() extension = ext[1].lower()
if extension == '.jpg': if extension == '.jpg' or extension == '.jpeg':
cover_data = cf.read(name) cover_data = cf.read(name)
break break
elif original_file_extension.upper() == '.CBT': elif original_file_extension.upper() == '.CBT':
@ -62,7 +64,7 @@ def extractCover(tmp_file_name, original_file_extension):
ext = os.path.splitext(name) ext = os.path.splitext(name)
if len(ext) > 1: if len(ext) > 1:
extension = ext[1].lower() extension = ext[1].lower()
if extension == '.jpg': if extension == '.jpg' or extension == '.jpeg':
cover_data = cf.extractfile(name).read() cover_data = cf.extractfile(name).read()
break break
prefix = os.path.dirname(tmp_file_name) prefix = os.path.dirname(tmp_file_name)
@ -87,10 +89,11 @@ def get_comic_info(tmp_file_path, original_file_name, original_file_extension):
else: else:
style = None style = None
if style is not None: # if style is not None:
loadedMetadata = archive.readMetadata(style) loadedMetadata = archive.readMetadata(style)
lang = loadedMetadata.language lang = loadedMetadata.language
if lang:
if len(lang) == 2: if len(lang) == 2:
loadedMetadata.language = isoLanguages.get(part1=lang).name loadedMetadata.language = isoLanguages.get(part1=lang).name
elif len(lang) == 3: elif len(lang) == 3:

View File

@ -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()

View File

@ -95,13 +95,6 @@ def setup(log_file, log_level=None):
Configure the logging output. Configure the logging output.
May be called multiple times. May be called multiple times.
''' '''
# if debugging, start logging to stderr immediately
if os.environ.get('FLASK_DEBUG', None):
log_file = LOG_TO_STDERR
log_level = logging.DEBUG
log_file = _absolute_log_file(log_file, DEFAULT_LOG_FILE)
log_level = log_level or DEFAULT_LOG_LEVEL log_level = log_level or DEFAULT_LOG_LEVEL
logging.getLogger(__package__).setLevel(log_level) logging.getLogger(__package__).setLevel(log_level)
@ -110,6 +103,8 @@ def setup(log_file, log_level=None):
# avoid spamming the log with debug messages from libraries # avoid spamming the log with debug messages from libraries
r.setLevel(log_level) r.setLevel(log_level)
log_file = _absolute_log_file(log_file, DEFAULT_LOG_FILE)
previous_handler = r.handlers[0] if r.handlers else None previous_handler = r.handlers[0] if r.handlers else None
if previous_handler: if previous_handler:
# if the log_file has not changed, don't create a new handler # if the log_file has not changed, don't create a new handler
@ -167,3 +162,7 @@ class StderrLogger(object):
self.buffer += message self.buffer += message
except Exception: except Exception:
self.log.debug("Logging Error") self.log.debug("Logging Error")
# default configuration, before application settngs are applied
setup(LOG_TO_STDERR, logging.DEBUG if os.environ.get('FLASK_DEBUG') else DEFAULT_LOG_LEVEL)

View File

@ -56,6 +56,7 @@ def requires_basic_auth_if_no_ano(f):
@opds.route("/opds/") @opds.route("/opds/")
@opds.route("/opds")
@requires_basic_auth_if_no_ano @requires_basic_auth_if_no_ano
def feed_index(): def feed_index():
return render_xml_template('index.xml') return render_xml_template('index.xml')
@ -288,7 +289,7 @@ def check_auth(username, password):
username=username.encode('windows-1252') username=username.encode('windows-1252')
user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) ==
username.decode('utf-8').lower()).first() username.decode('utf-8').lower()).first()
return bool(user and check_password_hash(user.password, password)) return bool(user and check_password_hash(str(user.password), password))
def authenticate(): def authenticate():

View File

@ -26,11 +26,13 @@ log = logger.create()
try: from . import goodreads try: from . import goodreads
except ImportError as err: except ImportError as err:
log.warning("goodreads: %s", err) log.debug("cannot import goodreads, showing authors-metadata will not work: %s", err)
goodreads = None goodreads = None
try: from . import simpleldap as ldap try: from . import simpleldap as ldap
except ImportError as err: except ImportError as err:
log.warning("simpleldap: %s", err) log.debug("cannot import simpleldap, logging in with ldap will not work: %s", err)
ldap = None ldap = None

View File

@ -268,7 +268,6 @@ def delete_shelf(shelf_id):
# @shelf.route("/shelfdown/<int:shelf_id>") # @shelf.route("/shelfdown/<int:shelf_id>")
@shelf.route("/shelf/<int:shelf_id>", defaults={'shelf_type': 1}) @shelf.route("/shelf/<int:shelf_id>", defaults={'shelf_type': 1})
@shelf.route("/shelf/<int:shelf_id>/<int:shelf_type>") @shelf.route("/shelf/<int:shelf_id>/<int:shelf_type>")
@login_required
def show_shelf(shelf_type, shelf_id): def show_shelf(shelf_type, shelf_id):
if current_user.is_anonymous: if current_user.is_anonymous:
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first() shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.is_public == 1, ub.Shelf.id == shelf_id).first()

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -52,7 +52,7 @@
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
{% if g.user.is_authenticated or g.allow_anonymous %} {% if g.user.is_authenticated or g.allow_anonymous %}
<ul class="nav navbar-nav "> <ul class="nav navbar-nav ">
<li><a href="{{url_for('web.advanced_search')}}"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm"> {{_('Advanced Search')}}</span></a></li> <li><a href="{{url_for('web.advanced_search')}}"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm">{{_('Advanced Search')}}</span></a></li>
</ul> </ul>
{% endif %} {% endif %}
<ul class="nav navbar-nav navbar-right" id="main-nav"> <ul class="nav navbar-nav navbar-right" id="main-nav">
@ -128,7 +128,7 @@
{% endif %} {% endif %}
{% endfor %} {% endfor %}
{% if g.user.is_authenticated or allow_anonymous %} {% if g.user.is_authenticated or g.allow_anonymous %}
<li class="nav-head hidden-xs public-shelves">{{_('Public Shelves')}}</li> <li class="nav-head hidden-xs public-shelves">{{_('Public Shelves')}}</li>
{% for shelf in g.public_shelfes %} {% for shelf in g.public_shelfes %}
<li><a href="{{url_for('shelf.show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list public_shelf"></span>{{shelf.name|shortentitle(40)}}</a></li> <li><a href="{{url_for('shelf.show_shelf', shelf_id=shelf.id)}}"><span class="glyphicon glyphicon-list public_shelf"></span>{{shelf.name|shortentitle(40)}}</a></li>

View File

@ -7,18 +7,28 @@ 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"

View File

@ -8,9 +8,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web (GPLV3)\n" "Project-Id-Version: Calibre-Web (GPLV3)\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-07-31 17:36+0200\n"
"PO-Revision-Date: 2019-06-17 22:37+0200\n" "PO-Revision-Date: 2019-06-17 22:37+0200\n"
"Last-Translator: Heimen Stoffels <vistausss@outlook.com>\n" "Last-Translator: Marcel Maas <marcel.maas@outlook.com>\n"
"Language: nl\n" "Language: nl\n"
"Language-Team: ed.driesen@telenet.be\n" "Language-Team: ed.driesen@telenet.be\n"
"Plural-Forms: nplurals=2; plural=(n != 1)\n" "Plural-Forms: nplurals=2; plural=(n != 1)\n"
@ -37,11 +37,11 @@ msgstr "Onbekend"
#: cps/admin.py:130 #: cps/admin.py:130
msgid "Admin page" msgid "Admin page"
msgstr "Administratiepagina" msgstr "Systeembeheer"
#: cps/admin.py:149 cps/templates/admin.html:102 #: cps/admin.py:149 cps/templates/admin.html:102
msgid "UI Configuration" msgid "UI Configuration"
msgstr "Uiterlijke instellingen" msgstr "Uiterlijk aanpassen"
#: cps/admin.py:181 cps/admin.py:399 #: cps/admin.py:181 cps/admin.py:399
msgid "Calibre-Web configuration updated" msgid "Calibre-Web configuration updated"
@ -71,7 +71,7 @@ msgstr "Er is een bestaand account met dit e-mailadres of deze gebruikersnaam aa
#: cps/admin.py:474 #: cps/admin.py:474
#, python-format #, python-format
msgid "User '%(user)s' created" msgid "User '%(user)s' created"
msgstr "Gebruiker '%(user)s' is gecreëerd" msgstr "Gebruiker '%(user)s' aangemaakt"
#: cps/admin.py:494 #: cps/admin.py:494
msgid "Edit e-mail server settings" msgid "Edit e-mail server settings"
@ -80,16 +80,16 @@ msgstr "E-mailserverinstellingen bewerken"
#: cps/admin.py:520 #: cps/admin.py:520
#, python-format #, python-format
msgid "Test e-mail successfully send to %(kindlemail)s" msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "De test-e-mail is verstuurd naar %(kindlemail)s" msgstr "Test-e-mail verstuurd naar %(kindlemail)s"
#: cps/admin.py:523 #: cps/admin.py:523
#, python-format #, python-format
msgid "There was an error sending the Test e-mail: %(res)s" msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Er is een fout opgetreden bij het versturen van de test-e-mail: %(res)s" msgstr "Fout opgetreden bij het versturen van de test-e-mail: %(res)s"
#: cps/admin.py:525 cps/web.py:1033 #: cps/admin.py:525 cps/web.py:1033
msgid "Please configure your kindle e-mail address first..." msgid "Please configure your kindle e-mail address first..."
msgstr "Stel eerst je kindle-mailadres in..." msgstr "Stel je kindle-e-mailadres in..."
#: cps/admin.py:527 #: cps/admin.py:527
msgid "E-mail server settings updated" msgid "E-mail server settings updated"
@ -102,11 +102,11 @@ msgstr "Gebruiker '%(nick)s' is verwijderd"
#: cps/admin.py:559 #: cps/admin.py:559
msgid "No admin user remaining, can't delete user" msgid "No admin user remaining, can't delete user"
msgstr "" msgstr "Kan laatste systeembeheerder niet verwijderen"
#: cps/admin.py:598 cps/web.py:1279 #: cps/admin.py:598 cps/web.py:1279
msgid "Found an existing account for this e-mail address." msgid "Found an existing account for this e-mail address."
msgstr "Er is een bestaand account met dit e-mailadres aangetroffen." msgstr "Bestaand account met dit e-mailadres aangetroffen."
#: cps/admin.py:601 cps/admin.py:613 #: cps/admin.py:601 cps/admin.py:613
#, python-format #, python-format
@ -116,7 +116,7 @@ msgstr "Gebruiker '%(nick)s' bewerken"
#: cps/admin.py:607 #: cps/admin.py:607
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Gebruiker '%(nick)s' is bijgewerkt" msgstr "Gebruiker '%(nick)s' bijgewerkt"
#: cps/admin.py:610 #: cps/admin.py:610
msgid "An unknown error occured." msgid "An unknown error occured."
@ -129,7 +129,7 @@ msgstr "Wachtwoord voor gebruiker %(user)s is hersteld"
#: cps/admin.py:632 cps/web.py:1075 #: cps/admin.py:632 cps/web.py:1075
msgid "An unknown error occurred. Please try again later." msgid "An unknown error occurred. Please try again later."
msgstr "Er is een onbekende fout opgetreden. Probeer het later nog eens." msgstr "Onbekende fout opgetreden. Probeer het later nog eens."
#: cps/admin.py:643 #: cps/admin.py:643
msgid "Logfile viewer" msgid "Logfile viewer"
@ -225,7 +225,7 @@ msgstr "onbekend"
#: cps/editbooks.py:447 #: cps/editbooks.py:447
msgid "Cover is not a jpg file, can't save" msgid "Cover is not a jpg file, can't save"
msgstr "" msgstr "Cover is geen jpg bestand, opslaan niet mogelijk"
#: cps/editbooks.py:490 #: cps/editbooks.py:490
#, python-format #, python-format
@ -253,7 +253,7 @@ msgstr "Kan %(file)s niet verwijderen (niet gemachtigd)."
#: cps/editbooks.py:668 #: cps/editbooks.py:668
#, python-format #, python-format
msgid "File %(file)s uploaded" msgid "File %(file)s uploaded"
msgstr "" msgstr "Bestand %(file)s geüpload"
#: cps/editbooks.py:697 #: cps/editbooks.py:697
msgid "Source or destination format for conversion missing" msgid "Source or destination format for conversion missing"
@ -402,23 +402,23 @@ msgstr "Onbekende taak: "
#: cps/oauth_bb.py:75 #: cps/oauth_bb.py:75
#, python-format #, python-format
msgid "Register with %(provider)s" msgid "Register with %(provider)s"
msgstr "" msgstr "Aanmelden bij %(provider)s"
#: cps/oauth_bb.py:155 #: cps/oauth_bb.py:155
msgid "Failed to log in with GitHub." msgid "Failed to log in with GitHub."
msgstr "" msgstr "Aanmelden bij GitHub mislukt."
#: cps/oauth_bb.py:160 #: cps/oauth_bb.py:160
msgid "Failed to fetch user info from GitHub." msgid "Failed to fetch user info from GitHub."
msgstr "" msgstr "Opvragen gebruikersinfo bij GitHub mislukt"
#: cps/oauth_bb.py:171 #: cps/oauth_bb.py:171
msgid "Failed to log in with Google." msgid "Failed to log in with Google."
msgstr "" msgstr "Aanmelden bij Google mislukt."
#: cps/oauth_bb.py:176 #: cps/oauth_bb.py:176
msgid "Failed to fetch user info from Google." msgid "Failed to fetch user info from Google."
msgstr "" msgstr "Opvragen gebruikersinfo bij Google mislukt."
#: cps/oauth_bb.py:274 #: cps/oauth_bb.py:274
#, python-format #, python-format
@ -454,7 +454,7 @@ msgstr "Sorry, je mag geen boeken toevoegen aan de boekenplank '%(shelfname)s'"
#: cps/shelf.py:61 #: cps/shelf.py:61
msgid "You are not allowed to edit public shelves" msgid "You are not allowed to edit public shelves"
msgstr "Je mag openbare boekenplanken niet aanpassen" msgstr "Je mag openbare boekenplanken niet bewerken"
#: cps/shelf.py:70 #: cps/shelf.py:70
#, python-format #, python-format
@ -508,7 +508,7 @@ msgstr "Er bestaat al een boekenplank met de naam '%(title)s'."
#: cps/shelf.py:211 #: cps/shelf.py:211
#, python-format #, python-format
msgid "Shelf %(title)s created" msgid "Shelf %(title)s created"
msgstr "Boekenplank '%(title)s' is gecreëerd" msgstr "Boekenplank '%(title)s' is aangemaakt"
#: cps/shelf.py:213 cps/shelf.py:241 #: cps/shelf.py:213 cps/shelf.py:241
msgid "There was an error" msgid "There was an error"
@ -539,7 +539,7 @@ msgstr "Kan boekenplank niet openen: de boekenplank bestaat niet of is ontoegank
#: cps/shelf.py:330 #: cps/shelf.py:330
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "Volgorde aanpassen van boekenplank '%(name)s'" msgstr "Volgorde bewerken van boekenplank '%(name)s'"
#: cps/ub.py:57 #: cps/ub.py:57
msgid "Recently Added" msgid "Recently Added"
@ -547,7 +547,7 @@ msgstr "Recent toegevoegd"
#: cps/ub.py:59 #: cps/ub.py:59
msgid "Show recent books" msgid "Show recent books"
msgstr "Recente boeken tonen" msgstr "Recent toegevoegde boeken tonen"
#: cps/templates/index.xml:17 cps/ub.py:60 #: cps/templates/index.xml:17 cps/ub.py:60
msgid "Hot Books" msgid "Hot Books"
@ -572,7 +572,7 @@ msgstr "Gelezen boeken"
#: cps/ub.py:69 #: cps/ub.py:69
msgid "Show read and unread" msgid "Show read and unread"
msgstr "Gelezen/Ongelezen tonen" msgstr "Gelezen/Ongelezen boeken tonen"
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71 #: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
#: cps/web.py:975 #: cps/web.py:975
@ -581,11 +581,11 @@ msgstr "Ongelezen boeken"
#: cps/ub.py:73 #: cps/ub.py:73
msgid "Show unread" msgid "Show unread"
msgstr "" msgstr "Ongelezen boeken tonen"
#: cps/ub.py:74 #: cps/ub.py:74
msgid "Discover" msgid "Discover"
msgstr "Verkennen" msgstr "Willekeurige boeken"
#: cps/ub.py:76 #: cps/ub.py:76
msgid "Show random books" msgid "Show random books"
@ -602,11 +602,11 @@ msgstr "Categoriekeuze tonen"
#: cps/templates/book_edit.html:71 cps/templates/search_form.html:53 #: cps/templates/book_edit.html:71 cps/templates/search_form.html:53
#: cps/ub.py:80 #: cps/ub.py:80
msgid "Series" msgid "Series"
msgstr "Serie" msgstr "Boekenreeksen"
#: cps/ub.py:82 #: cps/ub.py:82
msgid "Show series selection" msgid "Show series selection"
msgstr "Seriekeuze tonen" msgstr "Boekenreeksen keuze tonen"
#: cps/templates/index.xml:61 cps/ub.py:83 #: cps/templates/index.xml:61 cps/ub.py:83
msgid "Authors" msgid "Authors"
@ -634,19 +634,19 @@ msgstr "Taalkeuze tonen"
#: cps/ub.py:94 #: cps/ub.py:94
msgid "Ratings" msgid "Ratings"
msgstr "" msgstr "Beoordelingen"
#: cps/ub.py:96 #: cps/ub.py:96
msgid "Show ratings selection" msgid "Show ratings selection"
msgstr "" msgstr "Beoordelingen tonen"
#: cps/ub.py:97 #: cps/ub.py:97
msgid "File formats" msgid "File formats"
msgstr "" msgstr "Bestandsformaten"
#: cps/ub.py:99 #: cps/ub.py:99
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "" msgstr "Bestandsformaten tonen"
#: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371 #: cps/updater.py:251 cps/updater.py:358 cps/updater.py:371
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
@ -654,7 +654,7 @@ msgstr "Onverwachte gegevens tijdens het uitlezen van de update-informatie"
#: cps/updater.py:258 cps/updater.py:364 #: cps/updater.py:258 cps/updater.py:364
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "Geen update beschikbaar; je beschikt al over de nieuwste versie" msgstr "Geen update beschikbaar. Je beschikt al over de nieuwste versie"
#: cps/updater.py:284 #: cps/updater.py:284
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
@ -671,11 +671,11 @@ msgstr "Geen wijzigingslog beschikbaar"
#: cps/updater.py:404 cps/updater.py:413 #: cps/updater.py:404 cps/updater.py:413
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten naar de nieuwste versie: %(version)s" msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten naar versie: %(version)s"
#: cps/updater.py:423 #: cps/updater.py:423
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 "Druk op onderstaande knop om de laatste stabiele versie te installeren."
#: cps/uploader.py:213 cps/uploader.py:214 cps/uploader.py:218 #: cps/uploader.py:213 cps/uploader.py:214 cps/uploader.py:218
#: cps/uploader.py:222 cps/uploader.py:226 #: cps/uploader.py:222 cps/uploader.py:226
@ -696,11 +696,11 @@ msgstr "Willekeurige boeken"
#: cps/web.py:522 #: cps/web.py:522
msgid "Books" msgid "Books"
msgstr "" msgstr "Boeken"
#: cps/web.py:549 #: cps/web.py:549
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Populaire boeken (vaakst gedownload)" msgstr "Populaire boeken (meest gedownload)"
#: cps/web.py:560 cps/web.py:1300 cps/web.py:1388 #: cps/web.py:560 cps/web.py:1300 cps/web.py:1388
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
@ -709,7 +709,7 @@ msgstr "Kan e-boek niet openen. Het bestand bestaat niet of is niet toegankelijk
#: cps/web.py:573 #: cps/web.py:573
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr "Auteur: %(name)s"
#: cps/web.py:585 #: cps/web.py:585
#, python-format #, python-format
@ -719,17 +719,17 @@ msgstr "Uitgever: %(name)s"
#: cps/web.py:596 #: cps/web.py:596
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s" msgstr "Reeks: %(serie)s"
#: cps/web.py:607 #: cps/web.py:607
#, python-format #, python-format
msgid "Rating: %(rating)s stars" msgid "Rating: %(rating)s stars"
msgstr "" msgstr "Beoordeling: %(rating)s sterren"
#: cps/web.py:618 #: cps/web.py:618
#, python-format #, python-format
msgid "File format: %(format)s" msgid "File format: %(format)s"
msgstr "" msgstr "Bestandsformaat: %(format)s"
#: cps/web.py:630 #: cps/web.py:630
#, python-format #, python-format
@ -747,15 +747,15 @@ msgstr "Uitgeverslijst"
#: cps/templates/index.xml:82 cps/web.py:695 #: cps/templates/index.xml:82 cps/web.py:695
msgid "Series list" msgid "Series list"
msgstr "Serielijst" msgstr "Boekenreeksen"
#: cps/web.py:709 #: cps/web.py:709
msgid "Ratings list" msgid "Ratings list"
msgstr "" msgstr "Beoordelingen"
#: cps/web.py:722 #: cps/web.py:722
msgid "File formats list" msgid "File formats list"
msgstr "" msgstr "Alle bestandsformaten"
#: cps/web.py:750 #: cps/web.py:750
msgid "Available languages" msgid "Available languages"
@ -803,7 +803,7 @@ msgstr "Het boek is in de wachtrij geplaatst om te worden verstuurd aan %(kindle
#: cps/web.py:1031 #: cps/web.py:1031
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Er is een fout opgetreden bij het versturen van dit boek: %(res)s" msgstr "Fout opgetreden bij het versturen van dit boek: %(res)s"
#: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085 #: cps/web.py:1051 cps/web.py:1076 cps/web.py:1080 cps/web.py:1085
#: cps/web.py:1089 #: cps/web.py:1089
@ -829,11 +829,11 @@ msgstr ""
#: cps/web.py:1108 cps/web.py:1214 #: cps/web.py:1108 cps/web.py:1214
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "je bent nu ingelogd als: '%(nickname)s'" msgstr "je bent ingelogd als: '%(nickname)s'"
#: cps/web.py:1112 #: cps/web.py:1112
msgid "Could not login. LDAP server down, please contact your administrator" msgid "Could not login. LDAP server down, please contact your administrator"
msgstr "" msgstr "Kan niet inloggen, LDAP server niet bereikbaar, contacteer de beheerder"
#: cps/web.py:1116 cps/web.py:1124 #: cps/web.py:1116 cps/web.py:1124
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
@ -842,7 +842,7 @@ msgstr "Verkeerde gebruikersnaam of wachtwoord"
#: cps/web.py:1120 #: cps/web.py:1120
#, python-format #, python-format
msgid "You are now logged in as: '%(nickname)s'" msgid "You are now logged in as: '%(nickname)s'"
msgstr "" msgstr "Je bent ingelogd als: '%(nickname)s'"
#: cps/web.py:1128 cps/web.py:1150 #: cps/web.py:1128 cps/web.py:1150
msgid "login" msgid "login"
@ -886,7 +886,7 @@ msgstr "E-boek-conversie mislukt: %(error)s"
#: cps/worker.py:339 #: cps/worker.py:339
#, python-format #, python-format
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
msgstr "Kindlegen mislukt; fout: %(error)s. Bericht: %(message)s" msgstr "KindleGen mislukt; fout: %(error)s. Bericht: %(message)s"
#: cps/templates/admin.html:6 #: cps/templates/admin.html:6
msgid "User list" msgid "User list"
@ -898,19 +898,19 @@ msgstr "Gebruikersnaam"
#: cps/templates/admin.html:10 #: cps/templates/admin.html:10
msgid "E-mail" msgid "E-mail"
msgstr "E-mailadres" msgstr "e-mailadres"
#: cps/templates/admin.html:11 #: cps/templates/admin.html:11
msgid "Kindle" msgid "Kindle"
msgstr "Kindlle" msgstr "Kindle-e-mailadres"
#: cps/templates/admin.html:12 #: cps/templates/admin.html:12
msgid "DLS" msgid "DLS"
msgstr "DLS" msgstr "Downloads"
#: cps/templates/admin.html:13 cps/templates/layout.html:76 #: cps/templates/admin.html:13 cps/templates/layout.html:76
msgid "Admin" msgid "Admin"
msgstr "Administratie" msgstr "Beheer"
#: cps/templates/admin.html:14 cps/templates/detail.html:18 #: cps/templates/admin.html:14 cps/templates/detail.html:18
#: cps/templates/detail.html:27 cps/templates/shelf.html:6 #: cps/templates/detail.html:27 cps/templates/shelf.html:6
@ -920,7 +920,7 @@ msgstr "Downloaden"
#: cps/templates/admin.html:15 #: cps/templates/admin.html:15
msgid "View Ebooks" msgid "View Ebooks"
msgstr "" msgstr "Boeken lezen"
#: cps/templates/admin.html:16 cps/templates/layout.html:65 #: cps/templates/admin.html:16 cps/templates/layout.html:65
msgid "Upload" msgid "Upload"
@ -980,7 +980,7 @@ msgstr "Aantal boeken per pagina"
#: cps/templates/admin.html:85 #: cps/templates/admin.html:85
msgid "Uploading" msgid "Uploading"
msgstr "Bezig met uploaden" msgstr "Uploaden toestaan"
#: cps/templates/admin.html:89 #: cps/templates/admin.html:89
msgid "Anonymous browsing" msgid "Anonymous browsing"
@ -996,11 +996,11 @@ msgstr "Inloggen op afstand"
#: cps/templates/admin.html:108 #: cps/templates/admin.html:108
msgid "Administration" msgid "Administration"
msgstr "Administratie" msgstr "Systeembeheer"
#: cps/templates/admin.html:109 #: cps/templates/admin.html:109
msgid "View Logfiles" msgid "View Logfiles"
msgstr "" msgstr "Logboeken bekijken"
#: cps/templates/admin.html:110 #: cps/templates/admin.html:110
msgid "Reconnect to Calibre DB" msgid "Reconnect to Calibre DB"
@ -1055,7 +1055,7 @@ msgstr "Oké"
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12 #: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:12
#: cps/templates/user_edit.html:132 #: cps/templates/user_edit.html:132
msgid "Back" msgid "Back"
msgstr "Terug" msgstr "Annuleren"
#: cps/templates/admin.html:166 #: cps/templates/admin.html:166
msgid "Do you really want to stop Calibre-Web?" msgid "Do you really want to stop Calibre-Web?"
@ -1203,7 +1203,7 @@ msgstr "Weet je het zeker?"
#: cps/templates/book_edit.html:190 #: cps/templates/book_edit.html:190
msgid "Book will be deleted from Calibre database" msgid "Book will be deleted from Calibre database"
msgstr "Het boek wordt verwijderd uit de Calibre-databank" msgstr "Het boek wordt verwijderd uit de Calibre-database"
#: cps/templates/book_edit.html:191 #: cps/templates/book_edit.html:191
msgid "and from hard disk" msgid "and from hard disk"
@ -1252,7 +1252,7 @@ msgstr "Bibliotheekinstellingen"
#: cps/templates/config_edit.html:19 #: cps/templates/config_edit.html:19
msgid "Location of Calibre database" msgid "Location of Calibre database"
msgstr "Locatie van de Calibre-databank" msgstr "Locatie van de Calibre-database"
#: cps/templates/config_edit.html:25 #: cps/templates/config_edit.html:25
msgid "Use Google Drive?" msgid "Use Google Drive?"
@ -1324,7 +1324,7 @@ msgstr "Bèta (automatisch)"
#: cps/templates/config_edit.html:115 #: cps/templates/config_edit.html:115
msgid "Logfile Configuration" msgid "Logfile Configuration"
msgstr "Logbestand-instellingen" msgstr "Logbestanden"
#: cps/templates/config_edit.html:122 #: cps/templates/config_edit.html:122
msgid "Log Level" msgid "Log Level"
@ -1344,7 +1344,7 @@ msgstr ""
#: cps/templates/config_edit.html:150 #: cps/templates/config_edit.html:150
msgid "Feature Configuration" msgid "Feature Configuration"
msgstr "Mogelijkheden" msgstr "Geavanceerde opties"
#: cps/templates/config_edit.html:158 #: cps/templates/config_edit.html:158
msgid "Enable uploading" msgid "Enable uploading"
@ -1364,7 +1364,7 @@ msgstr "Inloggen op afstand inschakelen ('magic link')"
#: cps/templates/config_edit.html:175 #: cps/templates/config_edit.html:175
msgid "Use" msgid "Use"
msgstr "Gebruiken" msgstr "Gebruik"
#: cps/templates/config_edit.html:176 #: cps/templates/config_edit.html:176
msgid "Obtain an API Key" msgid "Obtain an API Key"
@ -1384,27 +1384,27 @@ msgstr ""
#: cps/templates/config_edit.html:193 #: cps/templates/config_edit.html:193
msgid "Use standard Authentication" msgid "Use standard Authentication"
msgstr "" msgstr "Gebruik standaard authenticatie"
#: cps/templates/config_edit.html:195 #: cps/templates/config_edit.html:195
msgid "Use LDAP Authentication" msgid "Use LDAP Authentication"
msgstr "" msgstr "Gebruik LDAP authenticatie"
#: cps/templates/config_edit.html:198 #: cps/templates/config_edit.html:198
msgid "Use OAuth" msgid "Use OAuth"
msgstr "" msgstr "Gebruik OAuth"
#: cps/templates/config_edit.html:205 #: cps/templates/config_edit.html:205
msgid "LDAP Server Host Name or IP Address" msgid "LDAP Server Host Name or IP Address"
msgstr "" msgstr "LDAP Server hostnaam of IP-adres"
#: cps/templates/config_edit.html:209 #: cps/templates/config_edit.html:209
msgid "LDAP Server Port" msgid "LDAP Server Port"
msgstr "" msgstr "LDAP Server Poort"
#: cps/templates/config_edit.html:213 #: cps/templates/config_edit.html:213
msgid "LDAP schema (ldap or ldaps)" msgid "LDAP schema (ldap or ldaps)"
msgstr "" msgstr "LDAP schema (ldap of ldaps)"
#: cps/templates/config_edit.html:217 #: cps/templates/config_edit.html:217
msgid "LDAP Admin username" msgid "LDAP Admin username"
@ -1459,7 +1459,7 @@ msgstr ""
#: cps/templates/config_edit.html:282 #: cps/templates/config_edit.html:282
msgid "External binaries" msgid "External binaries"
msgstr "Externe bibliotheken" msgstr "Externe programma's"
#: cps/templates/config_edit.html:290 #: cps/templates/config_edit.html:290
msgid "No converter" msgid "No converter"
@ -1467,7 +1467,7 @@ msgstr "Geen conversieprogramma"
#: cps/templates/config_edit.html:292 #: cps/templates/config_edit.html:292
msgid "Use Kindlegen" msgid "Use Kindlegen"
msgstr "Kindlegen gebruiken" msgstr "KindleGen"
#: cps/templates/config_edit.html:294 #: cps/templates/config_edit.html:294
msgid "Use calibre's ebook converter" msgid "Use calibre's ebook converter"
@ -1479,7 +1479,7 @@ msgstr "Conversie-instellingen"
#: cps/templates/config_edit.html:302 #: cps/templates/config_edit.html:302
msgid "Path to convertertool" msgid "Path to convertertool"
msgstr "Pad naar conversieprogramma" msgstr "Locatie van conversieprogramma"
#: cps/templates/config_edit.html:308 #: cps/templates/config_edit.html:308
msgid "Location of Unrar binary" msgid "Location of Unrar binary"
@ -1540,7 +1540,7 @@ msgstr "Standaardinstellingen voor nieuwe gebruikers"
#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:83 #: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:83
msgid "Admin user" msgid "Admin user"
msgstr "Admin-gebruiker" msgstr "Systeembeheerder"
#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:92 #: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:92
msgid "Allow Downloads" msgid "Allow Downloads"
@ -1548,7 +1548,7 @@ msgstr "Downloads toestaan"
#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:96 #: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:96
msgid "Allow book viewer" msgid "Allow book viewer"
msgstr "" msgstr "Boeken lezen toestaan"
#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:100 #: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:100
msgid "Allow Uploads" msgid "Allow Uploads"
@ -1588,7 +1588,7 @@ msgstr "Lezen in webbrowser"
#: cps/templates/detail.html:72 #: cps/templates/detail.html:72
msgid "Listen in browser" msgid "Listen in browser"
msgstr "" msgstr "Luisteren in webbrowser"
#: cps/templates/detail.html:117 #: cps/templates/detail.html:117
msgid "Book" msgid "Book"
@ -1612,11 +1612,11 @@ msgstr "Markeren als gelezen"
#: cps/templates/detail.html:201 #: cps/templates/detail.html:201
msgid "Read" msgid "Read"
msgstr "Lezen" msgstr "Gelezen"
#: cps/templates/detail.html:211 cps/templates/listenmp3.html:54 #: cps/templates/detail.html:211 cps/templates/listenmp3.html:54
msgid "Description:" msgid "Description:"
msgstr "Omschrijving:" msgstr "Beschrijving:"
#: cps/templates/detail.html:224 cps/templates/search.html:14 #: cps/templates/detail.html:224 cps/templates/search.html:14
msgid "Add to shelf" msgid "Add to shelf"
@ -1632,7 +1632,7 @@ msgstr "SMTP-poort (meestal 25 voor normale SMTP, 465 voor SSL en 587 voor START
#: cps/templates/email_edit.html:19 #: cps/templates/email_edit.html:19
msgid "Encryption" msgid "Encryption"
msgstr "Versleuteling" msgstr "Beveiliging"
#: cps/templates/email_edit.html:21 #: cps/templates/email_edit.html:21
msgid "None" msgid "None"
@ -1693,7 +1693,7 @@ msgstr "Zoeken"
#: cps/templates/http_error.html:37 #: cps/templates/http_error.html:37
msgid "Create issue" msgid "Create issue"
msgstr "" msgstr "Probleem melden"
#: cps/templates/http_error.html:44 #: cps/templates/http_error.html:44
msgid "Back to home" msgid "Back to home"
@ -1705,7 +1705,7 @@ msgstr "Verkennen (willekeurige boeken)"
#: cps/templates/index.html:64 #: cps/templates/index.html:64
msgid "Group by series" msgid "Group by series"
msgstr "" msgstr "Sorteren op reeks"
#: cps/templates/index.xml:6 #: cps/templates/index.xml:6
msgid "Start" msgid "Start"
@ -1745,7 +1745,7 @@ msgstr "Boeken gesorteerd op categorie"
#: cps/templates/index.xml:86 #: cps/templates/index.xml:86
msgid "Books ordered by series" msgid "Books ordered by series"
msgstr "Boeken gesorteerd op serie" msgstr "Boeken gesorteerd op reeks"
#: cps/templates/index.xml:89 cps/templates/layout.html:132 #: cps/templates/index.xml:89 cps/templates/layout.html:132
msgid "Public Shelves" msgid "Public Shelves"
@ -1761,7 +1761,7 @@ msgstr "Jouw boekenplanken"
#: cps/templates/index.xml:101 #: cps/templates/index.xml:101
msgid "User's own shelfs, only visible to the current user himself" msgid "User's own shelfs, only visible to the current user himself"
msgstr "Eigen boekenplanken, enkel zichtbaar voor de huidige gebruiker" msgstr "Eigen boekenplanken, enkel zichtbaar voor huidige gebruiker"
#: cps/templates/layout.html:28 #: cps/templates/layout.html:28
msgid "Home" msgid "Home"
@ -1806,11 +1806,11 @@ msgstr "Verkennen"
#: cps/templates/layout.html:141 #: cps/templates/layout.html:141
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "Creëer een boekenplank" msgstr "Boekenplank aanmaken"
#: cps/templates/layout.html:142 cps/templates/stats.html:3 #: cps/templates/layout.html:142 cps/templates/stats.html:3
msgid "About" msgid "About"
msgstr "Over" msgstr "Informatie"
#: cps/templates/layout.html:156 #: cps/templates/layout.html:156
msgid "Previous" msgid "Previous"
@ -1822,7 +1822,7 @@ msgstr "Boekgegevens"
#: cps/templates/layout.html:217 #: cps/templates/layout.html:217
msgid "Upload done, processing, please wait..." msgid "Upload done, processing, please wait..."
msgstr "Uploaden voltooid; bezig met verwerken..." msgstr "Uploaden voltooid, bezig met verwerken..."
#: cps/templates/layout.html:220 #: cps/templates/layout.html:220
msgid "Error" msgid "Error"
@ -1830,11 +1830,11 @@ msgstr "Fout"
#: cps/templates/listenmp3.html:66 #: cps/templates/listenmp3.html:66
msgid "Play / pause" msgid "Play / pause"
msgstr "" msgstr "Afspelen / pauze"
#: cps/templates/listenmp3.html:98 #: cps/templates/listenmp3.html:98
msgid "volume" msgid "volume"
msgstr "" msgstr "volume"
#: cps/templates/login.html:8 cps/templates/login.html:9 #: cps/templates/login.html:8 cps/templates/login.html:9
#: cps/templates/register.html:7 cps/templates/user_edit.html:8 #: cps/templates/register.html:7 cps/templates/user_edit.html:8
@ -1848,7 +1848,7 @@ msgstr "Wachtwoord"
#: cps/templates/login.html:17 #: cps/templates/login.html:17
msgid "Remember me" msgid "Remember me"
msgstr "Onthouden" msgstr "Mij onthouden"
#: cps/templates/login.html:22 #: cps/templates/login.html:22
msgid "Log in with magic link" msgid "Log in with magic link"
@ -1856,11 +1856,11 @@ msgstr "Inloggen met magische koppeling"
#: cps/templates/logviewer.html:5 #: cps/templates/logviewer.html:5
msgid "Show Calibre-Web log" msgid "Show Calibre-Web log"
msgstr "" msgstr "Calibre-Web log inzien"
#: cps/templates/logviewer.html:8 #: cps/templates/logviewer.html:8
msgid "Show access log" msgid "Show access log"
msgstr "" msgstr "Toegangslogboek"
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "Calibre-Web ebook catalog" msgid "Calibre-Web ebook catalog"
@ -1984,7 +1984,7 @@ msgstr "Kies een gebruikersnaam"
#: cps/templates/register.html:11 cps/templates/user_edit.html:13 #: cps/templates/register.html:11 cps/templates/user_edit.html:13
msgid "E-mail address" msgid "E-mail address"
msgstr "E-mailadres" msgstr "e-mailadres"
#: cps/templates/register.html:12 #: cps/templates/register.html:12
msgid "Your email address" msgid "Your email address"
@ -2028,7 +2028,7 @@ msgstr "Labels uitsluiten"
#: cps/templates/search_form.html:63 #: cps/templates/search_form.html:63
msgid "Exclude Series" msgid "Exclude Series"
msgstr "Series uitsluiten" msgstr "Boekenreeksen uitsluiten"
#: cps/templates/search_form.html:84 #: cps/templates/search_form.html:84
msgid "Exclude Languages" msgid "Exclude Languages"
@ -2048,7 +2048,7 @@ msgstr "Deze boekenplank verwijderen"
#: cps/templates/shelf.html:11 #: cps/templates/shelf.html:11
msgid "Edit Shelf" msgid "Edit Shelf"
msgstr "Boekenplank aanpassen" msgstr "Boekenplank bewerken"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11 #: cps/templates/shelf.html:12 cps/templates/shelf_order.html:11
msgid "Change order" msgid "Change order"
@ -2072,7 +2072,7 @@ msgstr "Verander de volgorde middels slepen-en-neerzetten"
#: cps/templates/stats.html:7 #: cps/templates/stats.html:7
msgid "Calibre library statistics" msgid "Calibre library statistics"
msgstr "Calibre-bibliotheekstatistieken" msgstr "Calibre bibliotheekstatistieken"
#: cps/templates/stats.html:12 #: cps/templates/stats.html:12
msgid "Books in this Library" msgid "Books in this Library"
@ -2088,7 +2088,7 @@ msgstr "Categorieën in deze bibliotheek"
#: cps/templates/stats.html:24 #: cps/templates/stats.html:24
msgid "Series in this Library" msgid "Series in this Library"
msgstr "Series in deze bibliotheek" msgstr "Boekenreeksen in deze bibliotheek"
#: cps/templates/stats.html:28 #: cps/templates/stats.html:28
msgid "Linked libraries" msgid "Linked libraries"
@ -2100,7 +2100,7 @@ msgstr "Programmabibliotheek"
#: cps/templates/stats.html:33 #: cps/templates/stats.html:33
msgid "Installed Version" msgid "Installed Version"
msgstr "Geïnstalleerde versie" msgstr "Versie"
#: cps/templates/tasks.html:7 #: cps/templates/tasks.html:7
msgid "Tasks list" msgid "Tasks list"
@ -2148,23 +2148,23 @@ msgstr "Kindle-e-mailadres"
#: cps/templates/user_edit.html:40 #: cps/templates/user_edit.html:40
msgid "Show books with language" msgid "Show books with language"
msgstr "Boeken tonen met taal" msgstr "Taal van boeken"
#: cps/templates/user_edit.html:42 #: cps/templates/user_edit.html:42
msgid "Show all" msgid "Show all"
msgstr "Alle tonen" msgstr "Alle talen"
#: cps/templates/user_edit.html:52 #: cps/templates/user_edit.html:52
msgid "OAuth Settings" msgid "OAuth Settings"
msgstr "" msgstr "OAuth Instellingen"
#: cps/templates/user_edit.html:54 #: cps/templates/user_edit.html:54
msgid "Link" msgid "Link"
msgstr "" msgstr "Koppelen"
#: cps/templates/user_edit.html:56 #: cps/templates/user_edit.html:56
msgid "Unlink" msgid "Unlink"
msgstr "" msgstr "Ontkoppelen"
#: cps/templates/user_edit.html:124 #: cps/templates/user_edit.html:124
msgid "Delete this user" msgid "Delete this user"

View File

@ -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):

View File

@ -133,7 +133,7 @@ def load_user_from_header(header_val):
except TypeError: except TypeError:
pass pass
user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == basic_username.lower()).first() user = ub.session.query(ub.User).filter(func.lower(ub.User.nickname) == basic_username.lower()).first()
if user and check_password_hash(user.password, basic_password): if user and check_password_hash(str(user.password), basic_password):
return user return user
return return
@ -1115,7 +1115,7 @@ def login():
log.info('LDAP Login failed for user "%s" IP-adress: %s', form['username'], ipAdress) log.info('LDAP Login failed for user "%s" IP-adress: %s', form['username'], ipAdress)
flash(_(u"Wrong Username or Password"), category="error") flash(_(u"Wrong Username or Password"), category="error")
else: else:
if user and check_password_hash(user.password, form['password']) and user.nickname != "Guest": if user and check_password_hash(str(user.password), form['password']) and user.nickname != "Guest":
login_user(user, remember=True) login_user(user, remember=True)
flash(_(u"You are now logged in as: '%(nickname)s'", nickname=user.nickname), category="success") flash(_(u"You are now logged in as: '%(nickname)s'", nickname=user.nickname), category="success")
return redirect_back(url_for("web.index")) return redirect_back(url_for("web.index"))

View File

@ -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 ""