diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
index f59e5943..34d2c453 100644
--- a/.github/ISSUE_TEMPLATE/bug_report.md
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -27,12 +27,12 @@ A clear and concise description of what you expected to happen.
If applicable, add screenshots to help explain your problem.
**Environment (please complete the following information):**
- - OS: [e.g. Windows 10/raspian]
- - Python version [e.g. python2.7]
- - Calibre-Web version [e.g. 0.6.5 or master@16.02.20, 19:55 ]:
- - Docker container [ None/Technosoft2000/Linuxuser]:
- - Special Hardware [e.g. Rasperry Pi Zero]
- - Browser [e.g. chrome, safari]
+ - OS: [e.g. Windows 10/Raspberry Pi OS]
+ - Python version: [e.g. python2.7]
+ - Calibre-Web version: [e.g. 0.6.8 or 087c4c59 (git rev-parse --short HEAD)]:
+ - Docker container: [None/Technosoft2000/Linuxuser]:
+ - Special Hardware: [e.g. Rasperry Pi Zero]
+ - Browser: [e.g. Chrome 83.0.4103.97, Safari 13.3.7, Firefox 68.0.1 ESR]
**Additional context**
-Add any other context about the problem here. [e.g. access via reverse proxy]
+Add any other context about the problem here. [e.g. access via reverse proxy, database background sync, special database location]
diff --git a/cps/admin.py b/cps/admin.py
index 84a94cba..4fe027a2 100644
--- a/cps/admin.py
+++ b/cps/admin.py
@@ -34,7 +34,7 @@ from flask import Blueprint, flash, redirect, url_for, abort, request, make_resp
from flask_login import login_required, current_user, logout_user
from flask_babel import gettext as _
from sqlalchemy import and_
-from sqlalchemy.exc import IntegrityError
+from sqlalchemy.exc import IntegrityError, OperationalError, InvalidRequestError
from sqlalchemy.sql.expression import func
from . import constants, logger, helper, services
@@ -613,80 +613,86 @@ def _configuration_update_helper():
reboot_required = False
db_change = False
to_save = request.form.to_dict()
+ gdriveError = None
to_save['config_calibre_dir'] = re.sub('[\\/]metadata\.db$', '', to_save['config_calibre_dir'], flags=re.IGNORECASE)
- db_change |= _config_string(to_save, "config_calibre_dir")
+ try:
+ db_change |= _config_string(to_save, "config_calibre_dir")
+
+ # Google drive setup
+ gdriveError = _configuration_gdrive_helper(to_save)
+
+ reboot_required |= _config_int(to_save, "config_port")
+
+ reboot_required |= _config_string(to_save, "config_keyfile")
+ if config.config_keyfile and not os.path.isfile(config.config_keyfile):
+ return _configuration_result(_('Keyfile Location is not Valid, Please Enter Correct Path'), gdriveError)
+
+ reboot_required |= _config_string(to_save, "config_certfile")
+ if config.config_certfile and not os.path.isfile(config.config_certfile):
+ return _configuration_result(_('Certfile Location is not Valid, Please Enter Correct Path'), gdriveError)
+
+ _config_checkbox_int(to_save, "config_uploading")
+ _config_checkbox_int(to_save, "config_anonbrowse")
+ _config_checkbox_int(to_save, "config_public_reg")
+ _config_checkbox_int(to_save, "config_register_email")
+ reboot_required |= _config_checkbox_int(to_save, "config_kobo_sync")
+ _config_checkbox_int(to_save, "config_kobo_proxy")
+
+ _config_string(to_save, "config_upload_formats")
+ constants.EXTENSIONS_UPLOAD = [x.lstrip().rstrip() for x in config.config_upload_formats.split(',')]
+
+ _config_string(to_save, "config_calibre")
+ _config_string(to_save, "config_converterpath")
+ _config_string(to_save, "config_kepubifypath")
- # Google drive setup
- gdriveError = _configuration_gdrive_helper(to_save)
+ reboot_required |= _config_int(to_save, "config_login_type")
- reboot_required |= _config_int(to_save, "config_port")
+ #LDAP configurator,
+ if config.config_login_type == constants.LOGIN_LDAP:
+ reboot, message = _configuration_ldap_helper(to_save, gdriveError)
+ if message:
+ return message
+ reboot_required |= reboot
- reboot_required |= _config_string(to_save, "config_keyfile")
- if config.config_keyfile and not os.path.isfile(config.config_keyfile):
- return _configuration_result(_('Keyfile Location is not Valid, Please Enter Correct Path'), gdriveError)
+ # Remote login configuration
- reboot_required |= _config_string(to_save, "config_certfile")
- if config.config_certfile and not os.path.isfile(config.config_certfile):
- return _configuration_result(_('Certfile Location is not Valid, Please Enter Correct Path'), gdriveError)
+ _config_checkbox(to_save, "config_remote_login")
+ if not config.config_remote_login:
+ ub.session.query(ub.RemoteAuthToken).filter(ub.RemoteAuthToken.token_type==0).delete()
- _config_checkbox_int(to_save, "config_uploading")
- _config_checkbox_int(to_save, "config_anonbrowse")
- _config_checkbox_int(to_save, "config_public_reg")
- _config_checkbox_int(to_save, "config_register_email")
- reboot_required |= _config_checkbox_int(to_save, "config_kobo_sync")
- _config_checkbox_int(to_save, "config_kobo_proxy")
+ # Goodreads configuration
+ _config_checkbox(to_save, "config_use_goodreads")
+ _config_string(to_save, "config_goodreads_api_key")
+ _config_string(to_save, "config_goodreads_api_secret")
+ if services.goodreads_support:
+ services.goodreads_support.connect(config.config_goodreads_api_key,
+ config.config_goodreads_api_secret,
+ config.config_use_goodreads)
- _config_string(to_save, "config_upload_formats")
- constants.EXTENSIONS_UPLOAD = [x.lstrip().rstrip() for x in config.config_upload_formats.split(',')]
+ _config_int(to_save, "config_updatechannel")
- _config_string(to_save, "config_calibre")
- _config_string(to_save, "config_converterpath")
- _config_string(to_save, "config_kepubifypath")
+ # Reverse proxy login configuration
+ _config_checkbox(to_save, "config_allow_reverse_proxy_header_login")
+ _config_string(to_save, "config_reverse_proxy_login_header_name")
- reboot_required |= _config_int(to_save, "config_login_type")
+ # OAuth configuration
+ if config.config_login_type == constants.LOGIN_OAUTH:
+ reboot_required |= _configuration_oauth_helper(to_save)
- #LDAP configurator,
- if config.config_login_type == constants.LOGIN_LDAP:
- reboot, message = _configuration_ldap_helper(to_save, gdriveError)
+ reboot, message = _configuration_logfile_helper(to_save, gdriveError)
if message:
return message
reboot_required |= reboot
-
- # Remote login configuration
- _config_checkbox(to_save, "config_remote_login")
- if not config.config_remote_login:
- ub.session.query(ub.RemoteAuthToken).filter(ub.RemoteAuthToken.token_type==0).delete()
-
- # Goodreads configuration
- _config_checkbox(to_save, "config_use_goodreads")
- _config_string(to_save, "config_goodreads_api_key")
- _config_string(to_save, "config_goodreads_api_secret")
- if services.goodreads_support:
- services.goodreads_support.connect(config.config_goodreads_api_key,
- config.config_goodreads_api_secret,
- config.config_use_goodreads)
-
- _config_int(to_save, "config_updatechannel")
-
- # Reverse proxy login configuration
- _config_checkbox(to_save, "config_allow_reverse_proxy_header_login")
- _config_string(to_save, "config_reverse_proxy_login_header_name")
-
- # OAuth configuration
- if config.config_login_type == constants.LOGIN_OAUTH:
- reboot_required |= _configuration_oauth_helper(to_save)
-
- reboot, message = _configuration_logfile_helper(to_save, gdriveError)
- if message:
- return message
- reboot_required |= reboot
- # Rarfile Content configuration
- _config_string(to_save, "config_rarfile_location")
- if "config_rarfile_location" in to_save:
- unrar_status = helper.check_unrar(config.config_rarfile_location)
- if unrar_status:
- return _configuration_result(unrar_status, gdriveError)
+ # Rarfile Content configuration
+ _config_string(to_save, "config_rarfile_location")
+ if "config_rarfile_location" in to_save:
+ unrar_status = helper.check_unrar(config.config_rarfile_location)
+ if unrar_status:
+ return _configuration_result(unrar_status, gdriveError)
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ _configuration_result(_(u"Settings DB is not Writeable"), gdriveError)
try:
metadata_db = os.path.join(config.config_calibre_dir, "metadata.db")
@@ -719,7 +725,7 @@ def _configuration_result(error_flash=None, gdriveError=None):
gdriveError = _(gdriveError)
else:
# if config.config_use_google_drive and\
- if not gdrive_authenticate:
+ if not gdrive_authenticate and gdrive_support:
gdrivefolders = gdriveutils.listRootFolders()
show_back_button = current_user.is_authenticated
@@ -783,6 +789,9 @@ def _handle_new_user(to_save, content,languages, translations, kobo_support):
except IntegrityError:
ub.session.rollback()
flash(_(u"Found an existing account for this e-mail address or nickname."), category="error")
+ except OperationalError:
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
def _handle_edit_user(to_save, content,languages, translations, kobo_support, downloads):
@@ -872,6 +881,9 @@ def _handle_edit_user(to_save, content,languages, translations, kobo_support, do
except IntegrityError:
ub.session.rollback()
flash(_(u"An unknown error occured."), category="error")
+ except OperationalError:
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
@admi.route("/admin/user/new", methods=["GET", "POST"])
@@ -916,7 +928,12 @@ def update_mailsettings():
_config_string(to_save, "mail_password")
_config_string(to_save, "mail_from")
_config_int(to_save, "mail_size", lambda y: int(y)*1024*1024)
- config.save()
+ try:
+ config.save()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
+ return edit_mailsettings()
if to_save.get("test"):
if current_user.email:
diff --git a/cps/editbooks.py b/cps/editbooks.py
index 30cc918b..91c795ea 100644
--- a/cps/editbooks.py
+++ b/cps/editbooks.py
@@ -354,7 +354,8 @@ def edit_book_ratings(to_save, book):
def edit_book_tags(tags, book):
input_tags = tags.split(',')
input_tags = list(map(lambda it: it.strip(), input_tags))
- # if input_tags[0] !="": ??
+ # Remove duplicates
+ input_tags = helper.uniq(input_tags)
return modify_database_object(input_tags, book.tags, db.Tags, calibre_db.session, 'tags')
@@ -368,8 +369,6 @@ def edit_book_series_index(series_index, book):
# Add default series_index to book
modif_date = False
series_index = series_index or '1'
- #if series_index == '':
- # series_index = '1'
if book.series_index != series_index:
book.series_index = series_index
modif_date = True
@@ -403,6 +402,8 @@ def edit_book_languages(languages, book, upload=False):
if input_l[0] != current_user.filter_language() and current_user.filter_language() != "all":
input_l[0] = calibre_db.session.query(db.Languages). \
filter(db.Languages.lang_code == current_user.filter_language()).first()
+ # Remove duplicates
+ input_l = helper.uniq(input_l)
return modify_database_object(input_l, book.languages, db.Languages, calibre_db.session, 'languages')
@@ -605,6 +606,8 @@ def edit_book(book_id):
# handle author(s)
input_authors = to_save["author_name"].split('&')
input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors))
+ # Remove duplicates in authors list
+ input_authors = helper.uniq(input_authors)
# we have all author names now
if input_authors == ['']:
input_authors = [_(u'Unknown')] # prevent empty Author
@@ -775,6 +778,9 @@ def upload():
input_authors = authr.split('&')
# handle_authors(input_authors)
input_authors = list(map(lambda it: it.strip().replace(',', '|'), input_authors))
+ # Remove duplicates in authors list
+ input_authors = helper.uniq(input_authors)
+
# we have all author names now
if input_authors == ['']:
input_authors = [_(u'Unknown')] # prevent empty Author
diff --git a/cps/epub.py b/cps/epub.py
index 8b988084..f863db61 100644
--- a/cps/epub.py
+++ b/cps/epub.py
@@ -122,9 +122,14 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
markupTree = etree.fromstring(markup)
# no matter xhtml or html with no namespace
imgsrc = markupTree.xpath("//*[local-name() = 'img']/@src")
- # imgsrc maybe startwith "../"" so fullpath join then relpath to cwd
- filename = os.path.relpath(os.path.join(os.path.dirname(os.path.join(coverpath, coversection[0])), imgsrc[0]))
- coverfile = extractCover(epubZip, filename, "", tmp_file_path)
+ # Alternative image source
+ if not len(imgsrc):
+ imgsrc = markupTree.xpath("//attribute::*[contains(local-name(), 'href')]")
+ if len(imgsrc):
+ # imgsrc maybe startwith "../"" so fullpath join then relpath to cwd
+ filename = os.path.relpath(os.path.join(os.path.dirname(os.path.join(coverpath, coversection[0])),
+ imgsrc[0]))
+ coverfile = extractCover(epubZip, filename, "", tmp_file_path)
else:
coverfile = extractCover(epubZip, coversection[0], coverpath, tmp_file_path)
diff --git a/cps/gdriveutils.py b/cps/gdriveutils.py
index d53044bd..9ea0479d 100644
--- a/cps/gdriveutils.py
+++ b/cps/gdriveutils.py
@@ -27,12 +27,14 @@ from sqlalchemy import Column, UniqueConstraint
from sqlalchemy import String, Integer
from sqlalchemy.orm import sessionmaker, scoped_session
from sqlalchemy.ext.declarative import declarative_base
+from sqlalchemy.exc import OperationalError, InvalidRequestError
try:
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from pydrive.auth import RefreshError
from apiclient import errors
+ from httplib2 import ServerNotFoundError
gdrive_support = True
except ImportError:
gdrive_support = False
@@ -192,9 +194,13 @@ def getDrive(drive=None, gauth=None):
return drive
def listRootFolders():
- drive = getDrive(Gdrive.Instance().drive)
- folder = "'root' in parents and mimeType = 'application/vnd.google-apps.folder' and trashed = false"
- fileList = drive.ListFile({'q': folder}).GetList()
+ try:
+ drive = getDrive(Gdrive.Instance().drive)
+ folder = "'root' in parents and mimeType = 'application/vnd.google-apps.folder' and trashed = false"
+ fileList = drive.ListFile({'q': folder}).GetList()
+ except ServerNotFoundError as e:
+ log.info("GDrive Error %s" % e)
+ fileList = []
return fileList
@@ -474,8 +480,13 @@ def getChangeById (drive, change_id):
# Deletes the local hashes database to force search for new folder names
def deleteDatabaseOnChange():
- session.query(GdriveId).delete()
- session.commit()
+ try:
+ session.query(GdriveId).delete()
+ session.commit()
+ except (OperationalError, InvalidRequestError):
+ session.rollback()
+ log.info(u"GDrive DB is not Writeable")
+
def updateGdriveCalibreFromLocal():
copyToDrive(Gdrive.Instance().drive, config.config_calibre_dir, False, True)
diff --git a/cps/helper.py b/cps/helper.py
index b9463416..506613eb 100644
--- a/cps/helper.py
+++ b/cps/helper.py
@@ -468,6 +468,14 @@ def generate_random_password():
passlen = 8
return "".join(s[c % len(s)] for c in os.urandom(passlen))
+
+def uniq(input):
+ output = []
+ for x in input:
+ if x not in output:
+ output.append(x)
+ return output
+
################################## External interface
diff --git a/cps/services/simpleldap.py b/cps/services/simpleldap.py
index b6fd0ac2..0933a933 100644
--- a/cps/services/simpleldap.py
+++ b/cps/services/simpleldap.py
@@ -64,7 +64,6 @@ def init_app(app, config):
app.config['LDAP_OPENLDAP'] = bool(config.config_ldap_openldap)
app.config['LDAP_GROUP_OBJECT_FILTER'] = config.config_ldap_group_object_filter
app.config['LDAP_GROUP_MEMBERS_FIELD'] = config.config_ldap_group_members_field
- # app.config['LDAP_CUSTOM_OPTIONS'] = {'OPT_NETWORK_TIMEOUT': 10}
_ldap.init_app(app)
diff --git a/cps/shelf.py b/cps/shelf.py
index 30768930..37cfc02a 100644
--- a/cps/shelf.py
+++ b/cps/shelf.py
@@ -27,8 +27,9 @@ from flask import Blueprint, request, flash, redirect, url_for
from flask_babel import gettext as _
from flask_login import login_required, current_user
from sqlalchemy.sql.expression import func
+from sqlalchemy.exc import OperationalError, InvalidRequestError
-from . import logger, ub, searched_ids, db, calibre_db
+from . import logger, ub, searched_ids, calibre_db
from .web import render_title_template
@@ -91,8 +92,16 @@ def add_to_shelf(shelf_id, book_id):
shelf.books.append(ub.BookShelf(shelf=shelf.id, book_id=book_id, order=maxOrder + 1))
shelf.last_modified = datetime.utcnow()
- ub.session.merge(shelf)
- ub.session.commit()
+ try:
+ ub.session.merge(shelf)
+ ub.session.commit()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
+ if "HTTP_REFERER" in request.environ:
+ return redirect(request.environ["HTTP_REFERER"])
+ else:
+ return redirect(url_for('web.index'))
if not xhr:
flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success")
if "HTTP_REFERER" in request.environ:
@@ -143,9 +152,13 @@ def search_to_shelf(shelf_id):
maxOrder = maxOrder + 1
shelf.books.append(ub.BookShelf(shelf=shelf.id, book_id=book, order=maxOrder))
shelf.last_modified = datetime.utcnow()
- ub.session.merge(shelf)
- ub.session.commit()
- flash(_(u"Books have been added to shelf: %(sname)s", sname=shelf.name), category="success")
+ try:
+ ub.session.merge(shelf)
+ ub.session.commit()
+ flash(_(u"Books have been added to shelf: %(sname)s", sname=shelf.name), category="success")
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
else:
flash(_(u"Could not add books to shelf: %(sname)s", sname=shelf.name), category="error")
return redirect(url_for('web.index'))
@@ -180,10 +193,17 @@ def remove_from_shelf(shelf_id, book_id):
return redirect(url_for('web.index'))
return "Book already removed from shelf", 410
- ub.session.delete(book_shelf)
- shelf.last_modified = datetime.utcnow()
- ub.session.commit()
-
+ try:
+ ub.session.delete(book_shelf)
+ shelf.last_modified = datetime.utcnow()
+ ub.session.commit()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
+ if "HTTP_REFERER" in request.environ:
+ return redirect(request.environ["HTTP_REFERER"])
+ else:
+ return redirect(url_for('web.index'))
if not xhr:
flash(_(u"Book has been removed from shelf: %(sname)s", sname=shelf.name), category="success")
if "HTTP_REFERER" in request.environ:
@@ -235,7 +255,11 @@ def create_shelf():
ub.session.commit()
flash(_(u"Shelf %(title)s created", title=to_save["title"]), category="success")
return redirect(url_for('shelf.show_shelf', shelf_id=shelf.id))
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
except Exception:
+ ub.session.rollback()
flash(_(u"There was an error"), category="error")
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Create a Shelf"), page="shelfcreate")
else:
@@ -280,7 +304,11 @@ def edit_shelf(shelf_id):
try:
ub.session.commit()
flash(_(u"Shelf %(title)s changed", title=to_save["title"]), category="success")
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
except Exception:
+ ub.session.rollback()
flash(_(u"There was an error"), category="error")
return render_title_template('shelf_edit.html', shelf=shelf, title=_(u"Edit a shelf"), page="shelfedit")
else:
@@ -298,11 +326,16 @@ def delete_shelf_helper(cur_shelf):
log.info("successfully deleted %s", cur_shelf)
+
@shelf.route("/shelf/delete/")
@login_required
def delete_shelf(shelf_id):
cur_shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
- delete_shelf_helper(cur_shelf)
+ try:
+ delete_shelf_helper(cur_shelf)
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
return redirect(url_for('web.index'))
@@ -327,8 +360,12 @@ def show_shelf(shelf_type, shelf_id):
cur_book = calibre_db.get_book(book.book_id)
if not cur_book:
log.info('Not existing book %s in %s deleted', book.book_id, shelf)
- ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book.book_id).delete()
- ub.session.commit()
+ try:
+ ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book.book_id).delete()
+ ub.session.commit()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
return render_title_template(page, entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name),
shelf=shelf, page="shelf")
else:
@@ -348,7 +385,11 @@ def order_shelf(shelf_id):
setattr(book, 'order', to_save[str(book.book_id)])
counter += 1
# if order diffrent from before -> shelf.last_modified = datetime.utcnow()
- ub.session.commit()
+ try:
+ ub.session.commit()
+ except (OperationalError, InvalidRequestError):
+ ub.session.rollback()
+ flash(_(u"Settings DB is not Writeable"), category="error")
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
result = list()
diff --git a/cps/templates/generate_kobo_auth_url.html b/cps/templates/generate_kobo_auth_url.html
index 4711dd51..fb62424c 100644
--- a/cps/templates/generate_kobo_auth_url.html
+++ b/cps/templates/generate_kobo_auth_url.html
@@ -5,7 +5,7 @@
{{_('Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):')}}
- {% if not warning %}'api_endpoint='{{kobo_auth_url}}{% else %}{{warning}}{% endif %}
+ {% if not warning %}api_endpoint={{kobo_auth_url}}{% else %}{{warning}}{% endif %}
diff --git a/cps/translations/cs/LC_MESSAGES/messages.mo b/cps/translations/cs/LC_MESSAGES/messages.mo
index eed0c719..74bc33ef 100644
Binary files a/cps/translations/cs/LC_MESSAGES/messages.mo and b/cps/translations/cs/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/cs/LC_MESSAGES/messages.po b/cps/translations/cs/LC_MESSAGES/messages.po
index 9928ff2b..6ef881ed 100644
--- a/cps/translations/cs/LC_MESSAGES/messages.po
+++ b/cps/translations/cs/LC_MESSAGES/messages.po
@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
-"PO-Revision-Date: 2020-01-08 11:37+0000\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
+"PO-Revision-Date: 2020-06-09 21:11+0100\n"
"Last-Translator: Lukas Heroudek \n"
"Language: cs_CZ\n"
"Language-Team: \n"
@@ -45,9 +45,9 @@ msgstr "Úspěšně obnovené připojení"
msgid "Unknown command"
msgstr "Neznámý příkaz"
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Neznámý"
@@ -60,7 +60,7 @@ msgstr "Stránka správce"
msgid "UI Configuration"
msgstr "Konfigurace uživatelského rozhraní"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Konfigurace Calibre-Web aktualizována"
@@ -76,213 +76,219 @@ msgstr "Povolit"
#: cps/admin.py:510
msgid "client_secrets.json Is Not Configured For Web Application"
-msgstr ""
+msgstr "client_secrets.json není nakonfigurováno pro webové aplikace"
#: cps/admin.py:549
msgid "Logfile Location is not Valid, Please Enter Correct Path"
-msgstr "Umístění zápisového souboru není platné. Určete prosím platnou polohu."
+msgstr "Umístění zápisového souboru není platné. Určete prosím platnou polohu"
#: cps/admin.py:554
msgid "Access Logfile Location is not Valid, Please Enter Correct Path"
-msgstr "Umístění zápisového souboru pro přístup není platné. Určete prosím platnou polohu."
+msgstr "Umístění zápisového souboru pro přístup není platné. Určete prosím platnou polohu"
#: cps/admin.py:580
msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier"
-msgstr ""
+msgstr "Prosím zadejte LDAP poskytovatele, port, DN a Identifikátor objektu uživatele"
#: cps/admin.py:593
#, python-format
msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier"
-msgstr ""
+msgstr "Filtr objektů skupiny LDAP musí mít jeden “%s” formátový identifikátor"
#: cps/admin.py:596
msgid "LDAP Group Object Filter Has Unmatched Parenthesis"
-msgstr ""
+msgstr "Filtr objektů skupiny LDAP má nesrovnatelnou závorku"
#: cps/admin.py:600
#, python-format
msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier"
-msgstr ""
+msgstr "Filtr uživatelských objektů LDAP musí mít jeden “%s” formátový identifikátor"
#: cps/admin.py:603
msgid "LDAP User Object Filter Has Unmatched Parenthesis"
-msgstr ""
+msgstr "Filtr uživatelských objektů LDAP má nesrovnatelnou závorku"
#: cps/admin.py:607
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
-msgstr ""
+msgstr "Umístění certifikátu LDAP není platné, zadejte prosím správnou cestu"
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
-msgstr ""
+msgstr "Umístění souboru klíčů není platné, zadejte prosím správnou cestu"
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
+msgstr "Umístění certifikátu není platné, zadejte prosím správnou cestu"
+
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
-msgstr "Poloha databáze není platná, opravte prosím polohu"
+msgstr "Umístění databáze není platné, opravte prosím cestu"
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
-msgstr "Databáze není psatelná"
+msgstr "Databáze není zapisovatelná"
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Základní konfigurace"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Vyplňte všechna pole!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Přidat nového uživatele"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "E-mail není z platné domény"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu nebo přezdívku."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Uživatel '%(user)s' vytvořen"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Uživatel '%(nick)s' smazán"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Nezbývá žádný správce, nemůžete jej odstranit"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
-msgstr ""
+msgstr "Nezbývá žádný správce, nelze odebrat roli správce"
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Upravit uživatele %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
-msgstr "Toto uživatelské jméno je již použito"
+msgstr "Zadané uživatelské jméno je již použito"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Uživatel '%(nick)s' aktualizován"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Došlo k neznámé chybě."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "Změnit SMTP nastavení"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Zkušební e-mail úspěšně odeslán na %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Při odesílání zkušebního e-mailu došlo k chybě: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Prvně nastavte svou e-mailovou adresu..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "Nastavení e-mailového serveru aktualizováno"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr "Uživatel nenalezen"
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Heslo pro uživatele %(user)s resetováno"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Neznámá chyba. Opakujte prosím později."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Nejprve nakonfigurujte nastavení pošty SMTP..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Prohlížeč log souborů"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Požadování balíčku aktualizace"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Stahování balíčku aktualizace"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Rozbalování balíčku aktualizace"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Nahrazování souborů"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Databázová připojení jsou uzavřena"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Zastavuji server"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Aktualizace dokončena, klepněte na tlačítko OK a znovu načtěte stránku"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Aktualizace selhala:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "HTTP chyba"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Chyba připojení"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Vypršel časový limit při navazování spojení"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Všeobecná chyba"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
-msgstr ""
+msgstr "Aktualizační soubor nemohl být uložen do Temp Dir"
#: cps/converter.py:32
msgid "not configured"
@@ -294,14 +300,14 @@ msgstr "Chybí povolení k exekuci"
#: cps/editbooks.py:242
msgid "Book Format Successfully Deleted"
-msgstr "Formát knihy úspěšně vymazán"
+msgstr "Formát knihy úspěšně smazán"
#: cps/editbooks.py:245
msgid "Book Successfully Deleted"
-msgstr "Kniha úspěšně vymazána"
+msgstr "Kniha úspěšně smazána"
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Chyba otevírání eknihy. Soubor neexistuje nebo není přístupný"
@@ -309,82 +315,82 @@ msgstr "Chyba otevírání eknihy. Soubor neexistuje nebo není přístupný"
msgid "edit metadata"
msgstr "upravit metadata"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s není platným jazykem"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Soubor s příponou '%(ext)s' nelze odeslat na tento server"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Soubor, který má být odeslán musí mít příponu"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Nepodařilo se vytvořit cestu %(path)s (oprávnění odepřeno)."
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Uložení souboru %(file)s se nezdařilo."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
-msgstr "Error databáze: %(error)s. "
+msgstr "Chyba databáze: %(error)s."
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Formát souboru %(ext)s přidán do %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "Metadata úspěšně aktualizována"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Chyba při úpravách knihy, zkontrolujte prosím log pro podrobnosti"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "Soubor %(filename)s nemohl být uložen do dočasného adresáře"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "Nahraná kniha pravděpodobně existuje v knihovně, zvažte prosím změnu před nahráním nové: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
-msgstr ""
+msgstr "Nepodařilo se přesunout soubor %(file)s: %(error)s"
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
-msgstr ""
+msgstr "Nepodařilo se přesunout soubor obalu %(file)s: %(error)s"
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "Soubor %(file)s nahrán"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Chybí zdrojový nebo cílový formát pro převod"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Kniha byla úspěšně zařazena do fronty pro převod do %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Při převodu této knihy došlo k chybě: %(res)s"
@@ -461,17 +467,17 @@ msgstr "Požadovaný soubor nelze přečíst. Možná nesprávná oprávnění?"
#: cps/helper.py:300
#, python-format
msgid "Deleting book %(id)s failed, path has subfolders: %(path)s"
-msgstr ""
+msgstr "Mazání knihy %(id)s selhalo, cesta má podsložky” %(path)s"
#: cps/helper.py:310
#, python-format
msgid "Deleting book %(id)s failed: %(message)s"
-msgstr ""
+msgstr "Mazání knihy selhalo %(id)s failed: %(message)s"
#: cps/helper.py:320
#, python-format
msgid "Deleting book %(id)s, book path not valid: %(path)s"
-msgstr ""
+msgstr "Mazání knihy %(id)s, cesta ke knize není platná %(path)s"
#: cps/helper.py:355
#, python-format
@@ -498,81 +504,81 @@ msgstr "Soubor %(file)s nenalezen na Google Drive"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Cesta ke knize %(path)s nebyla nalezena na Google Drive"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
-msgstr ""
+msgstr "Chyba stahování obalu"
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
-msgstr ""
+msgstr "Chyba formátu obalu"
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
-msgstr ""
+msgstr "Vytvoření cesty obalu selhalo"
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
-msgstr ""
+msgstr "Soubor obalu není platný, nebo nelze uložit"
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
-msgstr ""
+msgstr "Pouze jpg/jpeg/png/webp jsou podporované soubory pro obal"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
-msgstr ""
+msgstr "Pouze jpg/jpeg jsou podporované soubory pro obal"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
-msgstr ""
+msgstr "Unrar binární soubor nenalezen"
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
-msgstr ""
+msgstr "Chyba provádění UnRar"
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Čekám"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Selhalo"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Spuštěno"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Dokončeno"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Neznámý stav"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "E-mail: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Převést:"
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Nahrát:"
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Neznámá úloha:"
#: cps/kobo_auth.py:130
msgid "PLease access calibre-web from non localhost to get valid api_endpoint for kobo device"
-msgstr ""
+msgstr "Pro získání platného api_endpoint pro zařízení Kobo, přístupte na calibre-web bez localhost"
#: cps/kobo_auth.py:133 cps/kobo_auth.py:153
msgid "Kobo Setup"
-msgstr ""
+msgstr "Kobo nastavení"
#: cps/oauth_bb.py:73
#, python-format
@@ -581,271 +587,271 @@ msgstr "Registrovat s %(provider)s"
#: cps/oauth_bb.py:154
msgid "Failed to log in with GitHub."
-msgstr "Přihlášení pomocí GitHub selhalo"
+msgstr "Přihlášení pomocí GitHub selhalo."
#: cps/oauth_bb.py:159
msgid "Failed to fetch user info from GitHub."
-msgstr "Nepodařilo se načíst informace o uživateli z GitHub"
+msgstr "Nepodařilo se načíst informace o uživateli z GitHub."
#: cps/oauth_bb.py:170
msgid "Failed to log in with Google."
-msgstr "Přihlášení pomocí Google selhalo"
+msgstr "Přihlášení pomocí Google selhalo."
#: cps/oauth_bb.py:175
msgid "Failed to fetch user info from Google."
-msgstr "Nepodařilo se načíst informace o uživateli z Google"
+msgstr "Nepodařilo se načíst informace o uživateli z Google."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
-msgstr "nyní jste přihlášeni jako: '%(nickname)s'"
+msgstr "nyní jste přihlášen jako: '%(nickname)s'"
#: cps/oauth_bb.py:235
#, python-format
msgid "Link to %(oauth)s Succeeded"
-msgstr ""
+msgstr "Připojení k %(oauth)s úspěšné"
#: cps/oauth_bb.py:241
msgid "Login failed, No User Linked With OAuth Account"
-msgstr ""
+msgstr "Přihlášení selhalo, žádný uživatel s OAuth účtem"
#: cps/oauth_bb.py:283
#, python-format
msgid "Unlink to %(oauth)s Succeeded"
-msgstr ""
+msgstr "Odpojení od %(oauth)s úspěšné"
#: cps/oauth_bb.py:287
#, python-format
msgid "Unlink to %(oauth)s Failed"
-msgstr ""
+msgstr "Odpojení od %(oauth)s selhalo"
#: cps/oauth_bb.py:290
#, python-format
msgid "Not Linked to %(oauth)s."
-msgstr ""
+msgstr "Nepřipojeno k %(oauth)s."
#: cps/oauth_bb.py:318
msgid "GitHub Oauth error, please retry later."
-msgstr "GitHub Oauth chyba, prosím opakujte později"
+msgstr "GitHub Oauth chyba, prosím opakujte později."
#: cps/oauth_bb.py:337
msgid "Google Oauth error, please retry later."
-msgstr "Google Oauth chyba, prosím opakujte později"
+msgstr "Google Oauth chyba, prosím opakujte později."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Zadána neplatná police"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Lituji, nejste oprávněni přidat knihu do police: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Kniha je již součástí police: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Kniha byla přidána do police: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Nejste oprávněni přidat knihu do police: %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Knihy jsou již součástí police: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "Knihy byly přidány do police: %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Nelze přidat knihy do police: %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Kniha byla odebrána z police: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Lituji, nejste oprávněni odebrat knihu z této police: %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
-msgstr ""
+msgstr "Veřejná police s názvem '%(title)s' již existuje."
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
-msgstr ""
+msgstr "Osobní police s názvem ‘%(title)s’ již existuje."
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Police %(title)s vytvořena"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Došlo k chybě"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
-msgstr "vytvořit polici"
+msgstr "Vytvořit polici"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Police %(title)s změněna"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Upravit polici"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Police: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Chyba otevírání police. Police neexistuje nebo není přístupná"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
-msgstr ""
+msgstr "Skrytá kniha"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Změnit pořadí Police: '%(name)s'"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Nedávno přidáné"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Zobrazit nedávné knihy"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Žhavé knihy"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
-msgstr ""
+msgstr "Zobrazit žhavé knihy"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
-msgstr ""
+msgstr "Nejlépe hodnocené knihy"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
-msgstr ""
+msgstr "Zobrazit nejlépe hodnocené knihy"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Přečtené knihy"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Zobrazit prečtené a nepřečtené"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Nepřečtené knihy"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Zobrazit nepřečtené"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Objevte"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Zobrazit náhodné knihy"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Kategorie"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Zobrazit výběr kategorie"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Série"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
-msgstr "Zobrazit výběr sérií"
+msgstr "Zobrazit výběr sérií"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Autoři"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Zobrazit výběr autora"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Vydavatelé"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Zobrazit výběr vydavatele"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Jazyky"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Zobrazit výběr jazyka"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Hodnocení"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Zobrazit výběr hodnocení"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Formáty souborů"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Zobrazit výběr formátů"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
-msgstr ""
+msgstr "Archivované knihy"
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
-msgstr ""
+msgstr "Zobrazit archivované knihy"
#: cps/updater.py:294 cps/updater.py:305 cps/updater.py:406 cps/updater.py:420
msgid "Unexpected data while reading update information"
@@ -876,227 +882,227 @@ msgstr "Nová aktualizace k dispozici. Klepnutím na tlačítko níže aktualizu
msgid "Click on the button below to update to the latest stable version."
msgstr "Klepnutím na tlačítko níže aktualizujte na nejnovější stabilní verzi."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
-msgstr ""
+msgstr "Chyba: %(ldaperror)s"
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
-msgstr ""
+msgstr "Chyba: Žádná reakce od uživatele LDAP serveru"
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
-msgstr ""
+msgstr "Nepodařilo se vytvořit nejméně jednoho uživatele LDAP"
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
-msgstr ""
+msgstr "Nejméně jeden uživatel LDAP nenalezen v databázi"
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
-msgstr ""
+msgstr "Uživatel úspěšně importován"
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Nedávno přidané knihy"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Objevte (Náhodné knihy)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Knihy"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
-msgstr ""
+msgstr "Žhavé knihy (Nejstahovanější)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
-msgstr ""
+msgstr "Jejda! Vybraná kniha není k dispozici. Soubor neexistuje nebo není přístupný"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Autoři: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Vydavatel: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Série: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Hodnocení: %(rating)s stars"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Soubor formátů: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Kategorie: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Jazyky: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Seznam hodnocení"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Seznam formátů"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Úlohy"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Hledat"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Vydáno po "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Vydáno před "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Hodnocení <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Hodnocení >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "hledat"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
-msgstr ""
+msgstr "Vlastní sloupec %(column)d neexistuje v databázi"
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Kniha byla úspěšně zařazena do fronty pro odeslání na %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "Při odesílání této knihy došlo k chybě: %(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Nejprve nakonfigurujte vaši kindle e-mailovou adresu.."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "E-mailový server není nakonfigurován, kontaktujte svého správce!"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "registrovat"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Váš e-mail nemá povolení k registraci"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Potvrzovací e-mail byl odeslán na váš účet."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Toto uživatelské jméno nebo e-mailová adresa jsou již používány."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "Nelze aktivovat ověření LDAP"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
-msgstr ""
+msgstr "Záložní přihlášení jako: ‘%(nickname)s’, server LDAP není dosažitelný nebo neznámý uživatel"
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
-msgstr ""
+msgstr "Nelze se přihlásit: %(message)s"
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Špatné uživatelské jméno nebo heslo"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
-msgstr "Nové heslo bylo zasláno na váši emailovou adresu"
+msgstr "Nové heslo bylo zasláno na vaši emailovou adresu"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Zadejte platné uživatelské jméno pro obnovení hesla"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Nyní jste přihlášeni jako: '%(nickname)s'"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "přihlásit se"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Token nenalezen"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Token vypršel"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Úspěch! Vraťte se prosím do zařízení"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s profil"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Profil aktualizován"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Číst knihu"
#: cps/worker.py:313
#, python-format
msgid "Calibre ebook-convert %(tool)s not found"
-msgstr ""
+msgstr "Calibre převaděč %(tool)s nenalezen"
#: cps/worker.py:373
#, python-format
@@ -1106,16 +1112,16 @@ msgstr "Převaděč eknih selhal: %(error)s"
#: cps/worker.py:406
#, python-format
msgid "Kepubify-converter failed: %(error)s"
-msgstr ""
+msgstr "Kepubify-převaděč selhal: %(error)s"
#: cps/worker.py:430
#, python-format
msgid "Converted file not found or more than one file in folder %(folder)s"
-msgstr ""
+msgstr "Převedený soubor nebyl nalezen nebo více než jeden soubor ve složce %(folder)s"
#: cps/templates/admin.html:9
msgid "Users"
-msgstr "Seznam uživatelů"
+msgstr "Uživatelé"
#: cps/templates/admin.html:12 cps/templates/login.html:8
#: cps/templates/login.html:9 cps/templates/register.html:8
@@ -1130,11 +1136,11 @@ msgstr "E-mail"
#: cps/templates/admin.html:14 cps/templates/user_edit.html:27
msgid "Send to Kindle E-mail Address"
-msgstr "Kindle"
+msgstr "Poslat do Kindle e-mailová adresa"
#: cps/templates/admin.html:15
msgid "Downloads"
-msgstr "Staženo"
+msgstr "Stáhnutí"
#: cps/templates/admin.html:16 cps/templates/layout.html:77
msgid "Admin"
@@ -1157,7 +1163,7 @@ msgstr "Stahovat"
#: cps/templates/admin.html:20
msgid "View Books"
-msgstr ""
+msgstr "Prohlížení knih"
#: cps/templates/admin.html:21
msgid "Edit"
@@ -1171,15 +1177,15 @@ msgstr "Smazat"
#: cps/templates/admin.html:23
msgid "Public Shelf"
-msgstr ""
+msgstr "Veřejná police"
#: cps/templates/admin.html:44
msgid "Add New User"
-msgstr ""
+msgstr "Přidat nového uživatele"
#: cps/templates/admin.html:46 cps/templates/admin.html:47
msgid "Import LDAP Users"
-msgstr ""
+msgstr "Importovat LDAP uživatele"
#: cps/templates/admin.html:54
msgid "E-mail Server Settings"
@@ -1195,7 +1201,7 @@ msgstr "SMTP port"
#: cps/templates/admin.html:59 cps/templates/email_edit.html:19
msgid "Encryption"
-msgstr "SSL"
+msgstr "Šifrování"
#: cps/templates/admin.html:60 cps/templates/email_edit.html:27
msgid "SMTP Login"
@@ -1239,7 +1245,7 @@ msgstr "Veřejná registrace"
#: cps/templates/admin.html:110
msgid "Magic Link Remote Login"
-msgstr "Vzdálené přihlášení"
+msgstr "Magic Link vzdálené přihlášení"
#: cps/templates/admin.html:114
msgid "Reverse Proxy Login"
@@ -1251,11 +1257,11 @@ msgstr "Název záhlaví reverzního prixy"
#: cps/templates/admin.html:124
msgid "Edit Basic Configuration"
-msgstr ""
+msgstr "Upravit základní konfiguraci"
#: cps/templates/admin.html:125
msgid "Edit UI Configuration"
-msgstr ""
+msgstr "Upravit konfiguraci uživatelského rozhraní"
#: cps/templates/admin.html:131
msgid "Administration"
@@ -1267,15 +1273,15 @@ msgstr "Zobrazit log"
#: cps/templates/admin.html:133
msgid "Reconnect Calibre Database"
-msgstr "Znovupřipojení ke Calibre DB"
+msgstr "Znovupřipojení ke Calibre databázi"
#: cps/templates/admin.html:134
msgid "Restart"
-msgstr "Restartovat Calibre-Web"
+msgstr "Restartovat"
#: cps/templates/admin.html:135
msgid "Shutdown"
-msgstr "Zastavit Calibre-Web"
+msgstr "Vypnout"
#: cps/templates/admin.html:141
msgid "Update"
@@ -1303,7 +1309,7 @@ msgstr "Provést aktualizaci"
#: cps/templates/admin.html:171
msgid "Are you sure you want to restart?"
-msgstr "Opravdu chcete restartovat Calibre-Web?"
+msgstr "Opravdu chcete restartovat?"
#: cps/templates/admin.html:176 cps/templates/admin.html:190
#: cps/templates/admin.html:210 cps/templates/shelf.html:72
@@ -1317,11 +1323,11 @@ msgstr "OK"
#: cps/templates/shelf.html:73 cps/templates/shelf_edit.html:19
#: cps/templates/user_edit.html:139
msgid "Cancel"
-msgstr ""
+msgstr "Zrušit"
#: cps/templates/admin.html:189
msgid "Are you sure you want to shutdown?"
-msgstr "Opravdu chcete zastavit Calibre-Web?"
+msgstr "Opravdu chcete vypnout?"
#: cps/templates/admin.html:201
msgid "Updating, please do not reload this page"
@@ -1396,23 +1402,23 @@ msgstr "Popis"
#: cps/templates/book_edit.html:66
msgid "Identifiers"
-msgstr ""
+msgstr "Identifikátory"
#: cps/templates/book_edit.html:70 cps/templates/book_edit.html:308
msgid "Identifier Type"
-msgstr ""
+msgstr "Typy identifikátorů"
#: cps/templates/book_edit.html:71 cps/templates/book_edit.html:309
msgid "Identifier Value"
-msgstr ""
+msgstr "Hodnota identifikátorů"
#: cps/templates/book_edit.html:72 cps/templates/book_edit.html:310
msgid "Remove"
-msgstr ""
+msgstr "Odstranit"
#: cps/templates/book_edit.html:76
msgid "Add Identifier"
-msgstr ""
+msgstr "Přidat identifikátor"
#: cps/templates/book_edit.html:80 cps/templates/search_form.html:33
msgid "Tags"
@@ -1420,7 +1426,7 @@ msgstr "Štítky"
#: cps/templates/book_edit.html:88
msgid "Series ID"
-msgstr ""
+msgstr "ID série"
#: cps/templates/book_edit.html:92
msgid "Rating"
@@ -1463,7 +1469,7 @@ msgstr "Nahrát formát"
#: cps/templates/book_edit.html:182
msgid "View Book on Save"
-msgstr "zobrazit knihu po úpravě"
+msgstr "Zobrazit knihu po uložení"
#: cps/templates/book_edit.html:185 cps/templates/book_edit.html:229
msgid "Fetch Metadata"
@@ -1473,7 +1479,7 @@ msgstr "Získat metadata"
#: cps/templates/config_view_edit.html:150 cps/templates/email_edit.html:45
#: cps/templates/shelf_edit.html:17 cps/templates/user_edit.html:137
msgid "Save"
-msgstr ""
+msgstr "Uložit"
#: cps/templates/book_edit.html:200
msgid "Are you really sure?"
@@ -1481,7 +1487,7 @@ msgstr "Jste si opravdu jisti?"
#: cps/templates/book_edit.html:204
msgid "This book will be permanently erased from database"
-msgstr "Kniha bude smazána z Calibre databáze"
+msgstr "Tato kniha bude trvale odstraněna z databáze"
#: cps/templates/book_edit.html:205
msgid "and hard disk"
@@ -1489,11 +1495,11 @@ msgstr "a z hard disku"
#: cps/templates/book_edit.html:209
msgid "Important Kobo Note: deleted books will remain on any paired Kobo device."
-msgstr ""
+msgstr "Důležitá Kobo poznámka: smazané knihy zůstanou na jakémkoli spárovaném zařízení Kobo."
#: cps/templates/book_edit.html:210
msgid "Books must first be archived and the device synced before a book can safely be deleted."
-msgstr ""
+msgstr "Knihy musí být nejprve archivovány a zařízení musí být synchronizováno, než bude kniha bezpečně smazána."
#: cps/templates/book_edit.html:232
msgid "Keyword"
@@ -1505,7 +1511,7 @@ msgstr "Hledat klíčové slovo"
#: cps/templates/book_edit.html:239
msgid "Click the cover to load metadata to the form"
-msgstr "Klepnutím na obal načtěte metadata do formuláře"
+msgstr "Kliknutím na obal načtěte metadata do formuláře"
#: cps/templates/book_edit.html:254 cps/templates/book_edit.html:294
msgid "Loading..."
@@ -1535,7 +1541,7 @@ msgstr "Konfigurace knihovny"
#: cps/templates/config_edit.html:19
msgid "Location of Calibre Database"
-msgstr ""
+msgstr "Umístění Calibre databáze"
#: cps/templates/config_edit.html:28
msgid "Use Google Drive?"
@@ -1587,7 +1593,7 @@ msgstr "Umístění souboru s klíčem SSL (ponechte prázdné pro servery jiné
#: cps/templates/config_edit.html:108
msgid "Update Channel"
-msgstr "Aktualizovat kanál"
+msgstr "Aktualizační kanál"
#: cps/templates/config_edit.html:110
msgid "Stable"
@@ -1623,7 +1629,7 @@ msgstr "Povolit nahrávání"
#: cps/templates/config_edit.html:169
msgid "Allowed Upload Fileformats"
-msgstr ""
+msgstr "Povolené nahrávání formátů souborů"
#: cps/templates/config_edit.html:175
msgid "Enable Anonymous Browsing"
@@ -1635,19 +1641,19 @@ msgstr "Povolit veřejnou registraci"
#: cps/templates/config_edit.html:184
msgid "Use E-Mail as Username"
-msgstr ""
+msgstr "Použít e-mail jako přezdívku"
#: cps/templates/config_edit.html:189
msgid "Enable Magic Link Remote Login"
-msgstr "Povolit vzdálené přihlášení (\\\"magic link\\\")"
+msgstr "Povolit Magic Link vzdálené přihlášení"
#: cps/templates/config_edit.html:194
msgid "Enable Kobo sync"
-msgstr ""
+msgstr "Povolit Kobo synchronizaci"
#: cps/templates/config_edit.html:199
msgid "Proxy unknown requests to Kobo Store"
-msgstr ""
+msgstr "Proxy neznámé požadavky na obchod Kobo"
#: cps/templates/config_edit.html:206
msgid "Use Goodreads"
@@ -1663,7 +1669,7 @@ msgstr "Goodreads API Klíč"
#: cps/templates/config_edit.html:215
msgid "Goodreads API Secret"
-msgstr "Goodreads API Secret"
+msgstr "Goodreads API tajemství"
#: cps/templates/config_edit.html:222
msgid "Allow Reverse Proxy Authentication"
@@ -1699,7 +1705,7 @@ msgstr "LDAP Server Port"
#: cps/templates/config_edit.html:255
msgid "LDAP Encryption"
-msgstr ""
+msgstr "LDAP Šifrování"
#: cps/templates/config_edit.html:257 cps/templates/config_view_edit.html:61
#: cps/templates/email_edit.html:21
@@ -1708,31 +1714,31 @@ msgstr "Žádné"
#: cps/templates/config_edit.html:258
msgid "TLS"
-msgstr ""
+msgstr "TLS"
#: cps/templates/config_edit.html:259
msgid "SSL"
-msgstr ""
+msgstr "SSL"
#: cps/templates/config_edit.html:264
msgid "LDAP Certificate Path"
-msgstr ""
+msgstr "Cesta certifikátu LDAP"
#: cps/templates/config_edit.html:269
msgid "LDAP Authentication"
-msgstr ""
+msgstr "LDAP Ověření"
#: cps/templates/config_edit.html:271
msgid "Anonymous"
-msgstr ""
+msgstr "Anonymní"
#: cps/templates/config_edit.html:272
msgid "Unauthenticated"
-msgstr ""
+msgstr "Neověřeno"
#: cps/templates/config_edit.html:273
msgid "Simple"
-msgstr ""
+msgstr "Jednoduché"
#: cps/templates/config_edit.html:278
msgid "LDAP Administrator Username"
@@ -1756,24 +1762,24 @@ msgstr "Server LDAP je OpenLDAP?"
#: cps/templates/config_edit.html:300
msgid "Following Settings are Needed For User Import"
-msgstr ""
+msgstr "Následující nastavení jsou potřeba pro import uživatele"
#: cps/templates/config_edit.html:302
msgid "LDAP Group Object Filter"
-msgstr ""
+msgstr "Filtr objektů skupiny LDAP"
#: cps/templates/config_edit.html:306
msgid "LDAP Group Name"
-msgstr ""
+msgstr "Jméno skupiny LDAP"
#: cps/templates/config_edit.html:310
msgid "LDAP Group Members Field"
-msgstr ""
+msgstr "Pole členů skupiny LDAP"
#: cps/templates/config_edit.html:319
#, python-format
msgid "Obtain %(provider)s OAuth Credential"
-msgstr "Obtain %(provider)s OAuth Credential"
+msgstr "Získat %(provider)s OAuth pověření"
#: cps/templates/config_edit.html:322
#, python-format
@@ -1791,15 +1797,15 @@ msgstr "Externí binární soubory"
#: cps/templates/config_edit.html:348
msgid "Path to Calibre E-Book Converter"
-msgstr "Poloha Calibre E-Book Converteru"
+msgstr "Cesta k převaděči e-knih Calibre"
#: cps/templates/config_edit.html:356
msgid "Calibre E-Book Converter Settings"
-msgstr "Nastevní Calibre E-Book Converter"
+msgstr "Nastavení převaděče e-knih Calibre"
#: cps/templates/config_edit.html:359
msgid "Path to Kepubify E-Book Converter"
-msgstr "Poloha Kepubify E-Book Converter"
+msgstr "Cesta k převaděči e-knih Kepubify"
#: cps/templates/config_edit.html:367
msgid "Location of Unrar binary"
@@ -1824,7 +1830,7 @@ msgstr "Počet náhodných knih k zobrazení"
#: cps/templates/config_view_edit.html:35
msgid "No. of Authors to Display Before Hiding (0=Disable Hiding)"
-msgstr "Počet autorů k zobrazení před skrytím (0 = zakázat skrytí)"
+msgstr "Počet autorů k zobrazení před skrytím (0 = Zakázat skrytí)"
#: cps/templates/config_view_edit.html:39 cps/templates/readcbr.html:112
msgid "Theme"
@@ -1848,7 +1854,7 @@ msgstr "Propojit stav čtení/nepřečtení do sloupce Calibre"
#: cps/templates/config_view_edit.html:59
msgid "View Restrictions based on Calibre column"
-msgstr "Zobrazit omezení podle sloupku Calibre"
+msgstr "Zobrazit omezení podle Calibre sloupce"
#: cps/templates/config_view_edit.html:68
msgid "Regular Expression for Title Sorting"
@@ -1904,7 +1910,7 @@ msgstr "Přidat povolené/zakázané štítky"
#: cps/templates/config_view_edit.html:145
msgid "Add Allowed/Denied custom column values"
-msgstr ""
+msgstr "Přidat povolené/zakázané hodnoty vlastních sloupců"
#: cps/templates/detail.html:59
msgid "Read in Browser"
@@ -1982,7 +1988,7 @@ msgstr "SMTP heslo"
#: cps/templates/email_edit.html:38
msgid "Attachment Size Limit"
-msgstr "Limit velikosti souboru:"
+msgstr "Limit velikosti souboru"
#: cps/templates/email_edit.html:46
msgid "Save and Send Test E-mail"
@@ -2086,7 +2092,7 @@ msgstr "Knihy řazené podle hodnocení"
#: cps/templates/index.xml:108
msgid "Books ordered by file formats"
-msgstr "Knihy seřazené podle soboru formátů"
+msgstr "Knihy seřazené podle souboru formátů"
#: cps/templates/index.xml:111 cps/templates/layout.html:135
msgid "Shelves"
@@ -2111,7 +2117,7 @@ msgstr "Přepnout navigaci"
#: cps/templates/layout.html:46
msgid "Search Library"
-msgstr "Hledat ve knihovně"
+msgstr "Hledat v knihovně"
#: cps/templates/layout.html:56
msgid "Advanced Search"
@@ -2140,7 +2146,7 @@ msgstr "Nahrávání..."
#: cps/templates/layout.html:118
msgid "Please do not refresh the page"
-msgstr "prosím neobnovujte stránku"
+msgstr "Prosím neobnovujte stránku"
#: cps/templates/layout.html:128
msgid "Browse"
@@ -2152,7 +2158,7 @@ msgstr "Vaše police"
#: cps/templates/layout.html:145 cps/templates/stats.html:3
msgid "About"
-msgstr "O Calibre-Web"
+msgstr "O knihovně"
#: cps/templates/layout.html:159
msgid "Previous"
@@ -2176,11 +2182,11 @@ msgstr "Zapamatovat si"
#: cps/templates/login.html:22
msgid "Forgot Password?"
-msgstr "Zapomenuté heslo"
+msgstr "Zapomenuté heslo?"
#: cps/templates/login.html:25
msgid "Log in with Magic Link"
-msgstr "Přihlásit se pomocí magického odkazu"
+msgstr "Přihlásit se pomocí Magic Link"
#: cps/templates/logviewer.html:6
msgid "Show Calibre-Web Log: "
@@ -2192,7 +2198,7 @@ msgstr "Calibre-Web log: "
#: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed"
-msgstr ""
+msgstr "Streamový výstup, nelze zobrazit"
#: cps/templates/logviewer.html:12
msgid "Show Access Log: "
@@ -2200,19 +2206,19 @@ msgstr "Zobrazit log přístupu: "
#: cps/templates/modal_restriction.html:6
msgid "Select Allowed/Denied Tags"
-msgstr ""
+msgstr "Vybrat povolené/zakázané štítky"
#: cps/templates/modal_restriction.html:7
msgid "Select Allowed/Denied Custom Column Values"
-msgstr ""
+msgstr "Vybrat povolené/zakázané hodnoty vlastních sloupců"
#: cps/templates/modal_restriction.html:8
msgid "Select Allowed/Denied Tags of User"
-msgstr ""
+msgstr "Vybrat povolené/zakázané uživatelské štítky"
#: cps/templates/modal_restriction.html:9
msgid "Select Allowed/Denied Custom Column Values of User"
-msgstr ""
+msgstr "Vybrat povolené/zakázané hodnoty vlastních sloupců uživatele"
#: cps/templates/modal_restriction.html:15
msgid "Enter Tag"
@@ -2348,11 +2354,11 @@ msgstr "Vaše e-mailová adresa"
#: cps/templates/remote_login.html:4
msgid "Magic Link - Authorise New Device"
-msgstr "Kouzelný odkaz - Schválit nové zařízení"
+msgstr "Magic Link - Schválit nové zařízení"
#: cps/templates/remote_login.html:6
msgid "On another device, login and visit:"
-msgstr "Použijte své druhé zařízení, přihlaste se a navštivte"
+msgstr "Použijte své druhé zařízení, přihlaste se a navštivte:"
#: cps/templates/remote_login.html:10
msgid "Once verified, you will automatically be logged in on this device."
@@ -2360,11 +2366,11 @@ msgstr "Jakmile tak učiníte, budete automaticky přihlášeni na tomto zaříz
#: cps/templates/remote_login.html:13
msgid "This verification link will expire in 10 minutes."
-msgstr "Odkaz vyprší za 10 minut"
+msgstr "Tento ověřovací odkaz vyprší za 10 minut."
#: cps/templates/search.html:5
msgid "No Results Found"
-msgstr "Žádné výsledky pro:"
+msgstr "Nenalezeny žádné výsledky"
#: cps/templates/search.html:6
msgid "Search Term:"
@@ -2428,11 +2434,11 @@ msgstr "Jste si jisti, že chcete odstranit tuto polici?"
#: cps/templates/shelf.html:70
msgid "Shelf will be deleted for all users"
-msgstr "Police budou ztracena pro všechny a navždy!"
+msgstr "Police bude smazána pro všechny uživatele"
#: cps/templates/shelf_edit.html:13
msgid "Share with Everyone"
-msgstr "měla by být police veřejná?"
+msgstr "Sdílet se všemi"
#: cps/templates/shelf_order.html:5
msgid "Drag to Rearrange Order"
@@ -2440,7 +2446,7 @@ msgstr "Přetažením uspořádáte pořadí"
#: cps/templates/stats.html:7
msgid "Library Statistics"
-msgstr "Statistika knihovny Calibre"
+msgstr "Statistika knihovny"
#: cps/templates/stats.html:12
msgid "Books in this Library"
@@ -2528,15 +2534,15 @@ msgstr "Odpojit"
#: cps/templates/user_edit.html:63
msgid "Kobo Sync Token"
-msgstr "Kobo Sync TOken"
+msgstr "Kobo Sync token"
#: cps/templates/user_edit.html:65
msgid "Create/View"
-msgstr "Nové/Otevřít"
+msgstr "Vytvořit/Prohlížet"
#: cps/templates/user_edit.html:86
msgid "Add allowed/Denied Custom Column Values"
-msgstr ""
+msgstr "Přidat povolené/zakázané hodnoty vlastních sloupců"
#: cps/templates/user_edit.html:131
msgid "Delete User"
@@ -2552,5 +2558,5 @@ msgstr "Vygenerovat URL pro Kobo Auth"
#: cps/templates/user_edit.html:178
msgid "Do you really want to delete the Kobo Token?"
-msgstr "Chcete opravdu odstranit Kobo Token?"
+msgstr "Opravdu chcete odstranit Kobo token?"
diff --git a/cps/translations/de/LC_MESSAGES/messages.mo b/cps/translations/de/LC_MESSAGES/messages.mo
index 7d06c8ba..8cda8251 100644
Binary files a/cps/translations/de/LC_MESSAGES/messages.mo and b/cps/translations/de/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/de/LC_MESSAGES/messages.po b/cps/translations/de/LC_MESSAGES/messages.po
index 536938e3..a1372adb 100644
--- a/cps/translations/de/LC_MESSAGES/messages.po
+++ b/cps/translations/de/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2020-06-02 20:57+0200\n"
"Last-Translator: Ozzie Isaacs\n"
"Language: de\n"
@@ -46,9 +46,9 @@ msgstr "Erfolgreich neu verbunden"
msgid "Unknown command"
msgstr "Unbekannter Befehl"
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Unbekannt"
@@ -61,7 +61,7 @@ msgstr "Admin Seite"
msgid "UI Configuration"
msgstr "Benutzeroberflächenkonfiguration"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Konfiguration von Calibre-Web wurde aktualisiert"
@@ -113,175 +113,181 @@ msgstr "LDAP Benutzer Objekt Filter hat ungleiche Anzahl von Klammern"
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr "LDAP Zertifikat Pfad ist ungültig, bitte einen gültigen Pfad angeben"
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr "Schlüsseldatei ist ungültig, bitte einen gültigen Pfad angeben"
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr "Zertifikatsdatei ist ungültig, bitte einen gültigen Pfad angeben"
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr "DB Pfad ist nicht gültig, bitte einen gültigen Pfad angeben"
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr "Datenbank ist nicht schreibbar"
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Basiskonfiguration"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Bitte alle Felder ausfüllen!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Neuen Benutzer hinzufügen"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "E-Mail bezieht sich nicht auf eine gültige Domain"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Es existiert bereits ein Account für diese E-Mailadresse oder diesen Benutzernamen."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Benutzer '%(user)s' angelegt"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Benutzer '%(nick)s' gelöscht"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Benutzer kann nicht gelöscht werden, es wäre kein Admin Benutzer übrig"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr "Kein Admin Benutzer verblieben Admin Berechtigung kann nicht entfernt werden"
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Benutzer %(nick)s bearbeiten"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "Benutzername ist schon vorhanden"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Benutzer '%(nick)s' aktualisiert"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Es ist ein unbekannter Fehler aufgetreten."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "SMTP-Einstellungen ändern"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Test-E-Mail wurde erfolgreich an %(kindlemail)s versendet"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Es trat ein Fehler beim Versenden der Test-E-Mail auf: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Bitte zuerst E-Mail Adresse konfigurieren..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "Einstellungen des E-Mail-Servers aktualisiert"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr "Benutzer nicht gefunden"
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Bitte zuerst die SMTP-Einstellung konfigurieren ..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Logdatei Anzeige"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Frage Update an"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Lade Update herunter"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Entpacke Update"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Ersetze Dateien"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Schließe Datenbankverbindungen"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Stoppe Server"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Update fehlgeschlagen:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "HTTP Fehler"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Verbindungsfehler"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Timeout beim Verbindungsaufbau"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Allgemeiner Fehler"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr "Updatedatei konnte nicht in Temporärem Ordner gespeichert werden"
@@ -301,8 +307,8 @@ msgstr "Buch Format erfolgreich gelöscht"
msgid "Book Successfully Deleted"
msgstr "Buch erfolgreich geschlöscht"
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich"
@@ -310,82 +316,82 @@ msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht z
msgid "edit metadata"
msgstr "Metadaten editieren"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s ist keine gültige Sprache"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Dateiendung '%(ext)s' kann nicht auf diesen Server hochgeladen werden"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Dateien müssen eine Erweiterung haben, um hochgeladen zu werden"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Fehler beim Erzeugen des Pfads %(path)s (Zugriff verweigert)"
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Fehler beim Speichern der Datei %(file)s."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr "Datenbankfehler: %(error)s."
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Dateiformat %(ext)s zu %(book)s hinzugefügt"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "Metadaten wurden erfolgreich aktualisiert"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Fehler beim Editieren des Buchs, Details im Logfile"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "Die Datei %(filename)s konnte nicht im temporären Ordner gespeichert werden"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "Das hochgeladene Buch existiert evtl. schon in der Bibliothek: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr "Fehler beim Verschieben der Datei %(file)s: %(error)s"
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr "Fehler beim Verschieben der Cover Datei %(file)s: %(error)s"
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "Datei %(file)s hochgeladen"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Quell- oder Zielformat für Konvertierung fehlt"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Buch wurde erfolgreich für die Konvertierung nach %(book_format)s eingereiht"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Es trat ein Fehler beim Konvertieren des Buches auf: %(res)s"
@@ -499,71 +505,71 @@ msgstr "Datei %(file)s wurde nicht auf Google Drive gefunden"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Buchpfad %(path)s wurde nicht auf Google Drive gefunden"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr "Fehler beim Herunterladen des Covers"
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr "Coverdatei fehlerhaft"
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr "Fehler beim Erzeugen des Ordners für die Coverdatei"
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr "Cover Datei ist keine gültige Bilddatei, kann nicht gespeichert werden"
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr "Es werden nur jpg/jpeg/png/webp Dateien als Cover untertützt"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr "Es werden nur jpg/jpeg Dateien als Cover untertützt"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr "UnRar Programm nicht gefunden"
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr "Fehler beim ausführen von UnRar"
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Wartend"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Fehlgeschlagen"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Gestartet"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Beendet"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Unbekannter Status"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "E-Mail: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Konvertiere: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Upload: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Unbekannte Aufgabe: "
@@ -596,7 +602,7 @@ msgstr "Login mit Google fehlgeschlagen."
msgid "Failed to fetch user info from Google."
msgstr "Laden der Benutzerinformationen von Google fehlgeschlagen."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Du bist nun eingeloggt als '%(nickname)s'"
@@ -633,218 +639,218 @@ msgstr "GitHub Oauth Fehler, bitte später erneut versuchen."
msgid "Google Oauth error, please retry later."
msgstr "Google Oauth Fehler, bitte später erneut versuchen."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Ungültiges Bücherregal angegeben"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Du hast keine Berechtigung, ein Buch zu diesem Bücherregal hinzuzufügen: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Buch ist bereits Teil des Bücherregals %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Das Buch wurde dem Bücherregal %(sname)s hinzugefügt"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Dir ist es nicht erlaubt, ein Buch zum Bücherregal %(name)s hinzuzufügen"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Bücher sind bereits Teil des Bücherregals %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "Bücher wurden zum Bücherregal %(sname)s hinzugefügt"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Bücher konnten nicht zum Bücherregal %(sname)s hinzugefügt werden"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Das Buch wurde aus dem Bücherregal: %(sname)s entfernt"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Dir ist es nicht erlaubt, Bücher aus dem Bücherregal %(sname)s zu entfernen"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr "Es existiert bereit ein öffentliches Bücherregal mit dem Name '%(title)s'."
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr "Es existiert bereit ein privates Bücherregal mit dem Name '%(title)s'."
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Bücherregal %(title)s erzeugt"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Es trat ein Fehler auf"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "Bücherregal erzeugen"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Bücherregal %(title)s verändert"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Bücherregal editieren"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Bücherregal: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Fehler beim Öffnen des Bücherregals. Bücherregal exisitert nicht oder ist nicht zugänglich"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr "Verstecktes Buch"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Reihenfolge in Bücherregal '%(name)s' verändern"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Kürzlich hinzugefügt"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Zeige kürzlich hinzugefügte Bücher"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Beliebte Bücher"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Zeige beliebte Bücher"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Best bewertete Bücher"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Bestbewertete Bücher anzeigen"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Gelesene Bücher"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Zeige gelesene/ungelesene Bücher"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Ungelesene Bücher"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Zeige Ungelesene"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Entdecke"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Zeige zufällige Bücher"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Kategorien"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Zeige Kategorienauswahl"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Serien"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Zeige Serienauswahl"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Autoren"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Zeige Autorenauswahl"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Verleger"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Zeige Verlegerauswahl"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Sprachen"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Zeige Sprachauswahl"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Bewertungen"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Zeige Bewertungsauswahl"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Dateiformate"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Zeige Dateiformatauswahl"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr "Archivierte Bücher"
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr "Zeige archivierte Bücher"
@@ -877,220 +883,220 @@ 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/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr "Fehler: %(ldaperror)s"
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr "Fehler: Keine Benutzerinformationen von LDAP Server empfangen"
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr "Mindestens ein LDAP Benutzer konnte nicht erzeugt werden"
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr "Mindestens ein LDAP Benutzer wurde nicht in der Datenbank gefudnen"
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr "Benutzer erfolgreich hinzugefügt"
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Kürzlich hinzugefügte Bücher"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Zufällige Bücher"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Bücher"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Beliebte Bücher (am meisten Downloads)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Author: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Verleger: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Bewertung: %(rating)s Sterne"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Dateiformat: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Kategorie: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Sprache: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Bewertungsliste"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Liste der Dateiformate"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Aufgaben"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Suche"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Herausgegeben nach dem "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Herausgegeben vor dem "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Bewertung <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Bewertung >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "Suche"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr "Benutzerdefinierte Spalte Nr. %(column)d ist nicht in Calibre Datenbank vorhanden"
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "Der E-Mail Server ist nicht konfigurierte, bitte den Administrator kontaktieren!"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "Registieren"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Eine Bestätigungs-E-Mail wurde an deinen E-Mail Account versendet."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "LDAP-Authentifizierung kann nicht aktiviert werden"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr "Rückfall Login als: '%(nickname)s', LDAP Server ist nicht erreichbar, oder der Nutzer ist unbekannt"
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr "Login nicht erfolgreich: %(message)s"
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Falscher Benutzername oder Passwort"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "Das neue Passwort wurde an die E-Mail Adresse verschickt"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Bitte einen gültigen Benutzernamen zum Zurücksetzen des Passworts angeben"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Eingeloggt als: '%(nickname)s'"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "Login"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Token wurde nicht gefunden"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Token ist abgelaufen"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Erfolg! Bitte zum Gerät zurückkehren"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s's Profil"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Profil aktualisiert"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Lese ein Buch"
diff --git a/cps/translations/es/LC_MESSAGES/messages.mo b/cps/translations/es/LC_MESSAGES/messages.mo
index 5fbec266..0d5a9153 100644
Binary files a/cps/translations/es/LC_MESSAGES/messages.mo and b/cps/translations/es/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/es/LC_MESSAGES/messages.po b/cps/translations/es/LC_MESSAGES/messages.po
index 4c745a11..99bac86e 100644
--- a/cps/translations/es/LC_MESSAGES/messages.po
+++ b/cps/translations/es/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: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2020-05-25 17:22+0200\n"
"Last-Translator: minakmostoles \n"
"Language: es\n"
@@ -49,9 +49,9 @@ msgstr "Reconexión correcta"
msgid "Unknown command"
msgstr "Comando desconocido"
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Desconocido"
@@ -64,7 +64,7 @@ msgstr "Página de administración"
msgid "UI Configuration"
msgstr "Configuración de la interfaz de usuario"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Configuración de Calibre-Web actualizada"
@@ -116,175 +116,181 @@ msgstr "El LDAP Group Object Filter tiene un paréntesis diferente"
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr "La ruta del certificado LDAP no es válida. Por favor, introduzca la ruta correcta"
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr "La ruta del Keyfile no es válida, por favor, introduzca la ruta correcta"
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr "La ruta de Certfile no es válida, por favor, introduzca la ruta correcta"
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr "La ruta de la base de datos no es válida. Por favor, introduzca la ruta correcta"
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Configuración básica"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "¡Por favor, completa todos los campos!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Añadir un nuevo usuario"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "El correo electrónico no tiene un dominio válido"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Encontrada una cuenta existente para este correo electrónico o nombre de usuario."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Usuario '%(user)s' creado"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Usuario '%(nick)s' borrado"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "No queda ningún usuario administrador, no se puede eliminar al usuario"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr "No queda ningún usuario administrador, no se puede eliminar al usuario"
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Encontrada una cuenta existente para esa dirección de correo electrónico."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Editar Usuario %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "Este nombre de usuario ya está en uso"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Usuario '%(nick)s' actualizado"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Ocurrió un error desconocido."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "Cambiar parámetros de correo"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Correo electrónico de prueba enviado con éxito a %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Ocurrió un error enviando el correo electrónico de prueba: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Por favor, configure su correo electrónico primero..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "Actualizados los ajustes del servidor de correo electrónico"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr "Usuario no encontrado"
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Contraseña para el usuario %(user)s reinicializada"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Ha ocurrido un error desconocido. Por favor vuelva a intentarlo más tarde."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Configura primero los parámetros del servidor SMTP..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Visor del fichero de log"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Solicitando paquete de actualización"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Descargando paquete de actualización"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Descomprimiendo paquete de actualización"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Remplazando archivos"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Los conexiones con la base datos están cerradas"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Parando el servidor"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Falló la actualización:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "Error HTTP"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Error de conexión"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Tiempo agotado mientras se trataba de establecer la conexión"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Error general"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr "La actualización del archivo no pudo guardarse en el directorio temporal (Temp Dir)"
@@ -304,8 +310,8 @@ msgstr "Formato de libro borrado correctamente"
msgid "Book Successfully Deleted"
msgstr "Libro borrado correctamente"
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Error abriendo un eBook. El archivo no existe o no es accesible"
@@ -313,82 +319,82 @@ msgstr "Error abriendo un eBook. El archivo no existe o no es accesible"
msgid "edit metadata"
msgstr "editar metadatos"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s no es un idioma válido"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "No se permite subir archivos con la extensión '%(ext)s' a este servidor"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "El archivo a subir debe tener una extensión"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Fallo al crear la ruta %(path)s (permiso denegado)"
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Fallo al guardar el archivo %(file)s."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Archivo con formato %(ext)s añadido a %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "Metadatos actualizados correctamente"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Error al editar el libro, por favor, compruebe el archivo de registro (logfile) para tener más detalles"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "El archivo %(filename)s no pudo salvarse en el directorio temporal (Temp Dir)"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "El libro cargado probablemente existe en la biblioteca, considera cambiarlo antes de subirlo de nuevo: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr "Fallo al mover el archivo %(file)s: %(error)s"
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr "Fallo al mover el archivo de cubierta %(file)s: %(error)s"
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "El fichero %(file)s a sido subido"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Falta la fuente o el formato de destino para la conversión"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Libro puesto a la cola para su conversión a %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Ocurrió un error al convertir este libro: %(res)s"
@@ -502,71 +508,71 @@ msgstr "Fichero %(file)s no encontrado en Google Drive"
msgid "Book path %(path)s not found on Google Drive"
msgstr "La ruta %(path)s del libro no fue encontrada en Google Drive"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr "Error al crear una ruta para la cubierta"
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr "El archivo de cubierta no es una imágen válida"
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr "Las cubiertas deben estar en formato jpg/jpeg/png/webp"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr "Siki kis archivos jpg/jpeg están soportados como cubierta"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr "No se ha encontrado el binario del comando UnRar"
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr "Error ejecutando UnRar"
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Esperando"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Fallido"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Comenzado"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Finalizado"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Estado desconocido"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "E-mail: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Convertir: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Subir: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Tarea desconocida:"
@@ -599,7 +605,7 @@ msgstr "Error al iniciar sesión con Google."
msgid "Failed to fetch user info from Google."
msgstr "Error al obtener información del usuario de Google."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "has iniciado sesión como : '%(nickname)s'"
@@ -636,218 +642,218 @@ msgstr "Error en GitHub Oauth, por favor, vuelva a intentarlo más tarde."
msgid "Google Oauth error, please retry later."
msgstr "Error en Google Oauth, por favor vuelva a intentarlo más tarde."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Estante especificado inválido"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Lo sentimos, no tiene permisos para agregar un libro al estante: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "El libro ya forma parte del estante: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "El libro fue agregado a el estante: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "No tiene permiso para añadir un libro a el estante: %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Los libros ya forman parte del estante: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "Los libros han sido añadidos al estante: %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "No se pudieron agregar libros al estante: %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "El libro fue eliminado del estante: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Lo siento, no tiene permiso para eliminar un libro del estante: %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr "Ya existe un estante público con el nombre '%(title)s'."
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr "Ya existe un estante privado con el nombre '%(title)s'."
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Estante %(title)s creado"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Ha sucedido un error"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "Crear un estante"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Estante %(title)s cambiado"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Editar un estante"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Estante: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Error al abrir un estante. El estante no existe o no es accesible"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr "Libro oculto"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Cambiar orden del estante: '%(name)s'"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Añadido recientemente"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Mostrar libros recientes"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Libros populares"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Mostrar libros populares"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Libros mejor valorados"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Mostrar libros mejor valorados"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Libros leídos"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Mostrar leídos y no leídos"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Libros no leídos"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Mostrar no leído"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Descubrir"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Mostrar libros al azar"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Categorías"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Mostrar selección de categorías"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Series"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Mostrar selección de series"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Autores"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Mostrar selección de autores"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Editores"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Mostrar selección de editores"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Idiomas"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Mostrar selección de idiomas"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Calificaciones"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Mostrar selección de calificaciones"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Formatos de archivo"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Mostrar selección de formatos de archivo"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr "Libros archivados"
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr "Mostrar libros archivados"
@@ -880,220 +886,220 @@ msgstr "Hay una nueva actualización disponible. Haz clic en el botón de abajo
msgid "Click on the button below to update to the latest stable version."
msgstr "Haz clic en el botón de abajo para actualizar a la última versión estable."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr "Error: %(ldaperror)s"
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr "Error: el servidor LDAP no ha devuelto ningún usuario"
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr "Error al crear al menos un usuario LDAP"
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr "Al menos, un usuario LDAP no se ha encontrado en la base de datos"
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr "Usuario importado correctamente"
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Libros añadidos recientemente"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Descubrir (Libros al azar)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Libros"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Libros populares (los más descargados)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "oh, oh, el libro seleccionado no está disponible. El archivo no existe o no es accesible"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Autor/es: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Editor/es: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Series: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Calificación: %(rating)s estrellas"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Formato del archivo: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Categoría : %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Idioma: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Lista de calificaciones"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Lista de formatos"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Tareas"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Buscar"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Publicado después de "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Publicado antes de "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Calificación <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Calificación >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "búsqueda"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Libro puesto en la cola de envío a %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "Ha sucedido un error en el envío del libro: %(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Por favor actualiza tu perfil con la dirección de correo de su kindle..."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "El servidor de E-Mail no está configurado, por favor, ¡avisa a tu administrador!"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "registrarse"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Su correo electrónico no está permitido para registrarse"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Se ha enviado un correo electrónico de verificación a su cuenta de correo."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Este nombre de usuario o correo electrónico ya están en uso."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "No se puede activar la autenticación LDAP"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr "Fallback login como: '%(nickname)s', no se puede acceder al servidor LDAP o usuario desconocido"
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr "No se pudo entrar: %(message)s"
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Usuario o contraseña inválido"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "Una nueva contraseña se ha enviado a su cuenta de correo electrónico"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Por favor, introduce un usuario válido para restablecer la contraseña"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Ahora estás conectado como: '%(nickname)s'"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "iniciar sesión"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Token no encontrado"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "El token ha expirado"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "¡Correcto! Por favor regrese a su dispositivo"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "Perfil de %(name)s"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Perfil actualizado"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Leer un libro"
diff --git a/cps/translations/fi/LC_MESSAGES/messages.mo b/cps/translations/fi/LC_MESSAGES/messages.mo
index 5a61b9d6..7df8c7c8 100644
Binary files a/cps/translations/fi/LC_MESSAGES/messages.mo and b/cps/translations/fi/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/fi/LC_MESSAGES/messages.po b/cps/translations/fi/LC_MESSAGES/messages.po
index 2fe9cc58..09b133f1 100644
--- a/cps/translations/fi/LC_MESSAGES/messages.po
+++ b/cps/translations/fi/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2020-01-12 13:56+0100\n"
"Last-Translator: Samuli Valavuo \n"
"Language: fi\n"
@@ -46,9 +46,9 @@ msgstr ""
msgid "Unknown command"
msgstr ""
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Tuntematon"
@@ -61,7 +61,7 @@ msgstr "Ylläpitosivu"
msgid "UI Configuration"
msgstr "Käyttöliittymän asetukset"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Calibre-Web asetukset päivitetty"
@@ -113,175 +113,181 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Perusasetukset"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Ole hyvä ja täytä kaikki kentät!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Lisää uusi käyttäjä"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "Sähköpostiosoite ei ole toimivasta domainista"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Tälle sähköpostiosoitteelle tai tunnukselle löytyi jo tili."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Käyttäjä '%(user)s' lisätty"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Käyttäjä '%(nick)s' poistettu"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Pääkäyttäjiä ei jää jäljelle, käyttäjää ei voi poistaa"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Tälle sähköpostiosoitteelle läytyi jo käyttäjätunnus."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Muokkaa käyttäjää %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr ""
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Käyttäjä '%(nick)s' päivitetty"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Tapahtui tuntematon virhe."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "Muuta SMTP asetuksia"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Testisähköposti lähetetty onnistuneesti osoitteeseen %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Testisähköpostin lähetyksessä tapahtui virhe: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr ""
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "Sähköpostipalvelimen tiedot päivitetty"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Käyttäjän %(user)s salasana palautettu"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Tapahtui tuntematon virhe. Yritä myöhemmin uudelleen."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Ole hyvä ja aseta SMTP postiasetukset ensin..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Lokitiedoston katselin"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Haetaan päivitystiedostoa"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Ladataan päivitystiedostoa"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Puretaan päivitystiedostoa"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Korvataan tiedostoja"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Tietokantayhteydet on katkaistu"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Sammutetaan palvelin"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Päivitys valmistui, ole hyvä ja paina OK ja lataa sivu uudelleen"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Päivitys epäonnistui:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "HTTP virhe"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Yhteysvirhe"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Aikakatkaisu yhteyttä luotaessa"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Yleinen virhe"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr ""
@@ -301,8 +307,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Virhe e-kirjaa avatessa. Tiedostoa ei löydy tai se ei ole saatavilla"
@@ -310,82 +316,82 @@ msgstr "Virhe e-kirjaa avatessa. Tiedostoa ei löydy tai se ei ole saatavilla"
msgid "edit metadata"
msgstr "muokkaa metadataa"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s ei ole kelvollinen kieli"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Tiedostopääte '%(ext)s' ei ole sallittujen palvelimelle ladattavien listalla"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Ladattavalla tiedostolla on oltava tiedostopääte"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Polun %(path)s luonti epäonnistui (Ei oikeutta)."
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Tiedoston %(file)s tallennus epäonnistui."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Tiedostoformaatti %(ext)s lisätty %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "Metadata päivitetty onnistuneesti"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Kirjan editoinnissa tapahtui virhe, tarkista virheilmoitus lokista"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr ""
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr ""
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "Tiedosto %(file)s tallennettu"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Lähteen tai kohteen tiedostomuoto puuttuu"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Kirja lisätty muutosjonoon muotoon %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Kirjan muunnoksessa tapahtui virhe: %(res)s"
@@ -499,71 +505,71 @@ msgstr "Tiedostoa %(file)s ei löytynyt Google Drivesta"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Kirjan polkua %(path)s ei löytynyt Google Drivesta"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr ""
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr ""
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr ""
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Odottaa"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Epäonnistui"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Aloitettu"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Valmistui"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Tuntematon tila"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "Sähköposti: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Muunna: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Lähetä: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Tuntematon tehtävä: "
@@ -596,7 +602,7 @@ msgstr "Googleen kirjautuminen epäonnistui."
msgid "Failed to fetch user info from Google."
msgstr "Käyttäjätietojen haku Googlesta epäonnistui."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "olet nyt kirjautunut tunnuksella: \"%(nickname)s\""
@@ -633,218 +639,218 @@ msgstr "GitHub Oauth virhe, yritä myöhemmin uudelleen."
msgid "Google Oauth error, please retry later."
msgstr "Google Oauth virhe, yritä myöhemmin uudelleen."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Virheellinen hylly valittu"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Valitettavasti sinulla ei ole oikeutta lisätä kirjaa hyllyyn: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Kirja on jo hyllyssä: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Kirja on lisätty hyllyyn: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Sinulla ei ole oikeutta lisätä kirjaa hyllyyn: %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Kirjat on jo osa hyllyssä: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "Kirjat on lisätty hyllyyn: %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Kirjojen lisäys hyllyyn: %(sname)s epäonnistui"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Kirja on poistettu hyllystä: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Valitettavsti sinulla ei ole oikeutta poistaa kirjaa hyllystä: %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Hylly %(title)s luotu"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Tapahtui virhe"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "luo hylly"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Hylly %(title)s muutettu"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Muokkaa hyllyä"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Hylly: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Virhe hyllyn avauksessa. Hyllyä ei ole tai se ei ole saatavilla"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr ""
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Muuta hyllyn: '%(name)s' järjestystä"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Viimeksi lisätty"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Näytä viimeisimmät kirjat"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Kuumat kirjat"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Näytä kuumat kirjat"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Parhaiten arvioidut kirjat"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Näytä parhaiten arvioidut kirjat"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Luetut kirjat"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Näytä luetut ja lukemattomat"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Lukemattomat kirjat"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Näyt lukemattomat"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Löydä"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Näytä satunnaisia kirjoja"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Kategoriat"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Näytä kategoriavalinta"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Sarjat"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Näytä sarjavalinta"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Kirjailijat"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Näytä kirjailijavalinta"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Julkaisijat"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Näytä julkaisijavalinta"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Kielet"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Näytä keilivalinta"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Arvostelut"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Näytä arvosteluvalinta"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Tiedotomuodot"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Näytä tiedostomuotovalinta"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -877,220 +883,220 @@ msgstr "Uusi päivitys saatavilla. Paina alla olevaa nappia päivittääksesi ve
msgid "Click on the button below to update to the latest stable version."
msgstr "Paina alla olevaa nappia päivittääksesi uusimpaan vakaaseen versioon."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr ""
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr ""
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr ""
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Viimeksi lisätyt kirjat"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Löydä (satunnaiset kirjat)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Kirjat"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Kuumat kirjat (ladatuimmat)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Virhe eKirjan avaamisessa. Tiedostoa ei ole tai se ei ole saatavilla:"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Kirjailija: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Julkaisija: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Sarja: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Arvostelu: %(rating)s tähteä"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Tiedostomuoto: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Kategoria: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Kieli: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Arvostelulistaus"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Tiedostomuotolistaus"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Tehtävät"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Hae"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Julkaistu alkaen "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Julkaisut ennen "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Arvostelu <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Arvostelu >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "hae"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Kirja lisätty onnistuneeksi lähetettäväksi osoitteeseen %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "Kirjan: %(res)s lähettämisessa tapahtui virhe"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Ole hyvä ja aseta Kindle sähköpostiosoite ensin..."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr ""
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "rekisteröidy"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Sähköpostiosoitteellasi ei ole sallittua rekisteröityä"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Vahvistusviesti on lähetetty sähköpostiosoitteeseesi."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Käyttäjätunnus tai sähköpostiosoite on jo käytössä."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "LDAP autnetikoinnin aktivointi ei onnistu"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr ""
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Väärä käyttäjätunnus tai salasana"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr ""
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr ""
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "olet kirjautunut tunnuksella: '%(nickname)s'"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "kirjaudu"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Valtuutusta ei löytynyt"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Valtuutus vanhentunut"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Onnistui! Ole hyvä ja palaa laitteellesi"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)sn profiili"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Profiili päivitetty"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Lue kirja"
diff --git a/cps/translations/fr/LC_MESSAGES/messages.mo b/cps/translations/fr/LC_MESSAGES/messages.mo
index a60b8ff1..64560b3e 100644
Binary files a/cps/translations/fr/LC_MESSAGES/messages.mo and b/cps/translations/fr/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/fr/LC_MESSAGES/messages.po b/cps/translations/fr/LC_MESSAGES/messages.po
index b5bd6e22..6860cc52 100644
--- a/cps/translations/fr/LC_MESSAGES/messages.po
+++ b/cps/translations/fr/LC_MESSAGES/messages.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2020-06-07 06:47+0200\n"
"Last-Translator: Dekani \n"
"Language: fr\n"
@@ -60,9 +60,9 @@ msgstr "Reconnecté avec succès"
msgid "Unknown command"
msgstr "Commande inconnue"
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Inconnu"
@@ -75,7 +75,7 @@ msgstr "Page admin"
msgid "UI Configuration"
msgstr "Configuration de l’interface utilisateur"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Configuration de Calibre-Web mise à jour"
@@ -127,175 +127,181 @@ msgstr "Le filtre objet de l'utilisateur LDAP a une parenthèse non gérée"
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr "L'emplacement du certificat LDAP est incorrect, veuillez saisir un chemin valide"
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr "L'emplacement du fichier Keyfile est incorrect, veuillez saisir un chemin valide"
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr "L'emplacement du fichier Certfile est incorrect, veuillez saisir un chemin valide"
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr "L'emplacement DB est incorrect, veuillez saisir un chemin valide"
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr "La DB n'est pas accessible en écriture"
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Configuration principale"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Veuillez compléter tous les champs !"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Ajouter un nouvel utilisateur"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "Cette adresse de courriel n’appartient pas à un domaine valide"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Un compte existant a été trouvé pour cette adresse de courriel ou pour ce surnom."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Utilisateur '%(user)s' créé"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Utilisateur '%(nick)s' supprimé"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Aucun utilisateur admin restant, impossible de supprimer l’utilisateur"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr "Aucun utilisateur admin restant, impossible de supprimer le rôle admin"
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Un compte existant a été trouvé pour cette adresse de courriel."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Éditer l'utilisateur %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "Cet utilisateur est déjà pris"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Utilisateur '%(nick)s' mis à jour"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Oups ! Une erreur inconnue a eu lieu."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "Modifier les paramètres du serveur de courriels"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Courriel de test envoyé avec succès sur %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Il y a eu une erreur pendant l’envoi du courriel de test : %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Veuillez d'abord configurer votre adresse de courriel..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "Les paramètres du serveur de courriels ont été mis à jour"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr "L'utilisateur n'a pas été trouvé"
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Le mot de passe de l’utilisateur %(user)s a été réinitialisé"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Une erreur inconnue est survenue. Veuillez réessayer plus tard."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Veuillez configurer les paramètres SMTP au préalable..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Visualiseur de fichier journal"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Demande de mise à jour"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Téléchargement de la mise à jour"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Décompression de la mise à jour"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Remplacement des fichiers"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Les connexions à la base de données ont été fermées"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Arrêt du serveur"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
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/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "La mise à jour a échoué :"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "Erreur HTTP"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Erreur de connexion"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Délai d'attente dépassé lors de l'établissement de connexion"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Erreur générale"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr "Le fichier de mise à jour ne peut pas être sauvegardé dans le répertoire temporaire"
@@ -315,8 +321,8 @@ msgstr "Le format du livre a été supprimé avec succès"
msgid "Book Successfully Deleted"
msgstr "Le livre a été supprimé avec succès"
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
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"
@@ -324,82 +330,82 @@ msgstr "Erreur à l’ouverture du livre. Le fichier n’existe pas ou n’est p
msgid "edit metadata"
msgstr "modifier les métadonnées"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s n'est pas une langue valide"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "L’extension de fichier '%(ext)s' n’est pas autorisée pour être déposée sur ce serveur"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Pour être déposé le fichier doit avoir une extension"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Impossible de créer le chemin %(path)s (Permission refusée)."
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Échec de la sauvegarde du fichier %(file)s."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr "Erreur de la base de données: %(error)s."
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Le format de fichier %(ext)s a été ajouté à %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "Les métadonnées ont bien été mises à jour"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Erreur d’édition du livre, veuillez consulter le journal (log) pour plus de détails"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "Le fichier %(filename)s ne peut pas être sauvegardé dans le répertoire temporaire"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "Le fichier téléchargé existe probablement dans la librairie, veuillez le modifier avant de le télécharger de nouveau: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr "Impossible de déplacer le fichier %(file)s: %(error)s"
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr "Impossible de déplacer le fichier de couverture %(file)s: %(error)s"
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "Le fichier %(file)s a été téléchargé"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Le format de conversion de la source ou de la destination est manquant"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Le livre a été mis avec succès en file de traitement pour conversion vers %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Une erreur est survenue au cours de la conversion du livre : %(res)s"
@@ -513,71 +519,71 @@ msgstr "Le fichier %(file)s n'a pas été trouvé dans Google Drive"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Le chemin du livre %(path)s n'a pas été trouvé dans Google Drive"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr "Erreur lors du téléchargement de la couverture"
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr "Erreur de format de couverture"
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr "Impossible de créer le chemin pour la couverture"
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr "Le fichier couverture n'est pas un fichier image valide, ou ne peut pas être stocké"
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr "Seuls les fichiers jpg/jpeg/png/webp sont supportés comme fichier de couverture"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr "Seuls les fichiers jpg/jpeg sont supportés comme fichier de couverture"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr "Fichier binaire Unrar non trouvé"
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr "Une erreur est survenue lors de l'exécution d'UnRar"
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "En attente"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Echoué"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Débuté"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Terminé"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Statut inconnu"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "Courriel : "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Convertir vers : "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Téléverser : "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Tâche inconnue : "
@@ -610,7 +616,7 @@ msgstr "Échec de la connexion avec Google."
msgid "Failed to fetch user info from Google."
msgstr "Impossible d’obtenir les informations d’utilisateur avec Google."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "vous êtes maintenant connecté comme : '%(nickname)s'"
@@ -647,218 +653,218 @@ msgstr "Erreur Oauth GitHub, veuillez réessayer plus tard."
msgid "Google Oauth error, please retry later."
msgstr "Erreur Oauth Google, veuillez réessayer plus tard."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "L’étagère indiquée est invalide"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Désolé, vous n’êtes pas autorisé à ajouter un livre dans l’étagère: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Ce livre est déjà sur l’étagère : %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Le livre a bien été ajouté à l'étagère : %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Vous n’êtes pas autorisé à ajouter un livre dans l’étagère : %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Ces livres sont déjà sur l’étagère : %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "Les livres ont été ajoutés à l’étagère : %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Impossible d’ajouter les livres à l’étagère : %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Le livre a été supprimé de l'étagère %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Désolé, vous n’êtes pas autorisé à enlever un livre de cette étagère : %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr "Une étagère publique avec le nom '%(title)s' existe déjà."
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr "Une étagère privée avec le nom '%(title)s' existe déjà."
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Étagère %(title)s créée"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Il y a eu une erreur"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "Créer une étagère"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "L’étagère %(title)s a été modifiée"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Modifier une étagère"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Étagère : '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Erreur à l’ouverture de l’étagère. Elle n’existe plus ou n’est plus accessible"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr "Livre caché"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Modifier l’arrangement de l’étagère : ‘%(name)s’"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Ajouts récents"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Afficher les livres récents"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Livres populaires"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Montrer les livres populaires"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Livres les mieux notés"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Montrer les livres les mieux notés"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Livres lus"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Montrer lus et non-lus"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Livres non-lus"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Afficher non-lus"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Découvrir"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Montrer des livres au hasard"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Catégories"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Montrer la sélection par catégories"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Séries"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Montrer la sélection par séries"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Auteurs"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Montrer la sélection par auteur"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Éditeurs"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Montrer la sélection par éditeur"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Langues"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Montrer la sélection par langue"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Notes"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Afficher la sélection des évaluations"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Formats de fichier"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Afficher la sélection des formats de fichiers"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr "Livres archivés"
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr "Afficher les livres archivés"
@@ -891,220 +897,220 @@ msgstr "Une nouvelle mise à jour est disponible. Cliquez sur le bouton ci-desso
msgid "Click on the button below to update to the latest stable version."
msgstr "Téléchargez la dernière version en cliquant sur le bouton ci-dessous."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr "Erreur : %(ldaperror)s"
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr "Erreur : Aucun utilisateur renvoyé dans la réponse LDAP du serveur"
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr "Impossible de créer au moins un utilisateur LDAP"
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr "Au moins un utilisateur LDAP n'a pas été trouvé dans la base de données"
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr "L'utilisateur a été importé avec succès"
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Ajouts récents de livres"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Découvrir (Livres au hasard)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Livres"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Livres populaires (les plus téléchargés)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est pas accessible"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Auteur : %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Éditeur : '%(name)s'"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Séries : %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Évaluation : %(rating)s étoiles"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Format de fichier : %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Catégorie : %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Langue : %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Liste des évaluations"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Liste de formats de fichiers"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Tâches"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Chercher"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Publié après le "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Publié avant le "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Évaluation <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Évaluation >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "recherche"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr "La colonne personnalisée No.%(column)d n'existe pas dans la base de données calibre"
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Le livre a été mis en file de traitement avec succès pour un envoi vers %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! 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:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Veuillez mettre à jour votre profil avec une adresse de courriel Kindle valide."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "Le serveur de courriel n'est pas configuré, veuillez contacter votre administrateur!"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "s’enregistrer"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Votre adresse de courriel n’est pas autorisé pour une inscription"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Le courriel de confirmation a été envoyé à votre adresse."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Ce nom d’utilisateur ou cette adresse de courriel sont déjà utilisés."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "Impossible d’activer l’authentification LDAP"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr "Connexion de secours comme: '%(nickname)s', le serveur LDAP est indisponible, ou l'utilisateur est inconnu"
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr "Impossible de se connecter: %(message)s"
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Mauvais nom d'utilisateur ou mot de passe"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "Le nouveau mot de passe a été envoyé vers votre adresse de courriel"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Veuillez entrer un nom d'utilisateur valide pour réinitialiser le mot de passe"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Vous êtes maintenant connecté en tant que : ‘%(nickname)s’"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "connexion"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Jeton non trouvé"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Jeton expiré"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Réussite! Merci de vous tourner vers votre appareil"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "Profil de %(name)s"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Profil mis à jour"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Lire un livre"
diff --git a/cps/translations/hu/LC_MESSAGES/messages.mo b/cps/translations/hu/LC_MESSAGES/messages.mo
index 88958bc3..99031abe 100644
Binary files a/cps/translations/hu/LC_MESSAGES/messages.mo and b/cps/translations/hu/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/hu/LC_MESSAGES/messages.po b/cps/translations/hu/LC_MESSAGES/messages.po
index a12df9d3..0b0f71b4 100644
--- a/cps/translations/hu/LC_MESSAGES/messages.po
+++ b/cps/translations/hu/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2019-04-06 23:36+0200\n"
"Last-Translator: \n"
"Language: hu\n"
@@ -46,9 +46,9 @@ msgstr ""
msgid "Unknown command"
msgstr ""
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Ismeretlen"
@@ -61,7 +61,7 @@ msgstr "Rendszergazda oldala"
msgid "UI Configuration"
msgstr "Felhasználói felület beállításai"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "A Calibre-Web konfigurációja frissítve."
@@ -113,175 +113,181 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Alapvető beállítások"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Az összes mezőt ki kell tölteni!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Új felhasználó hozzáadása"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "Az e-mail tartománya nem érvényes."
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Már létezik felhasználó ehhez az e-mail címhez vagy felhasználói névhez."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "A következő felhasználó létrehozva: %(user)s"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "A felhasználó törölve: %(nick)s"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr ""
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Már létezik felhasználó ehhez az e-mail címhez."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr " A felhasználó szerkesztése: %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr ""
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "A felhasználó frissítve: %(nick)s"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Ismeretlen hiba történt."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "SMTP beállítások változtatása"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "A teszt levél sikeresen elküldve ide: %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Hiba történt a teszt levél küldése során: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr ""
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "Az e-mail kiszolgáló beállításai frissítve."
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "A(z) %(user)s felhasználó jelszavának alaphelyzetbe állítása"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Ismeretlen hiba történt. Próbáld újra később!"
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Először be kell állítani az SMTP levelező beállításokat..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr ""
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Frissítési csomag kérése"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Frissítési csomag letöltése"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Frissítési csomag kitömörítése"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Fájlok cserélése"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Adatbázis kapcsolatok lezárva"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Szerver leállítása"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "A frissítés települt, kattints az OK-ra és újra tölt az oldal"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "A frissítés nem sikerült:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "HTTP hiba"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Kapcsolódási hiba"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Időtúllépés a kapcsolódás során"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Általános hiba"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr ""
@@ -301,8 +307,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Hiba az ekönyv megnyitásakor. A fájl nem létezik vagy nem elérhető."
@@ -310,82 +316,82 @@ msgstr "Hiba az ekönyv megnyitásakor. A fájl nem létezik vagy nem elérhető
msgid "edit metadata"
msgstr "Metaadatok szerkesztése"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "A(z) %(langname)s nem érvényes nyelv"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "A(z) \"%(ext)s\" kiterjesztésű fájlok feltöltése nincs engedélyezve ezen a szerveren."
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "A feltöltendő fájlnak kiterjesztéssel kell rendelkeznie!"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Nem sikerült létrehozni az elérési utat (engedély megtagadva): %(path)s."
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Nem sikerült elmenteni a %(file)s fájlt."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "A(z) %(ext)s fájlformátum hozzáadva a könyvhez: %(book)s."
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "A metaadatok sikeresen frissültek"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Hiba a könyv szerkesztése során, további részletek a naplófájlban."
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr ""
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr ""
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr ""
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Az átalakításhoz hiányzik a forrás- vagy a célformátum!"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "A könyv sikeresen átalakításra lett jelölve a következő formátumra: %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Hiba történt a könyv átalakításakor: %(res)s"
@@ -499,71 +505,71 @@ msgstr "A \"%(file)s\" fájl nem található a Google Drive-on"
msgid "Book path %(path)s not found on Google Drive"
msgstr "A könyv elérési útja (\"%(path)s\") nem található a Google Drive-on"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr ""
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr ""
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr ""
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Várakozás"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Nem sikerült"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Elindítva"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Végrehajtva"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Ismeretlen állapot"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "E-mail cím: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Konvertálás:"
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Feltöltés:"
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Ismeretlen feladat:"
@@ -596,7 +602,7 @@ msgstr ""
msgid "Failed to fetch user info from Google."
msgstr ""
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Be vagy jelentkezve mint: %(nickname)s"
@@ -633,218 +639,218 @@ msgstr ""
msgid "Google Oauth error, please retry later."
msgstr ""
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "A megadott polc érvénytelen!"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Elnézést, nem vagy jogosult hozzáadni a könyvet a következő polcra: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "A könyv már a következő polcon van: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "A könyv hozzá lett adva a következő polchoz: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Nincs jogosultságod könyvet tenni a következő polcra: %(name)s."
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "A könyvek már a következő polcon vannak: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "A könyvek hozzá lettek adva a következő polchoz: %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Nem sikerült hozzáadni a könyveket a polchoz: %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "A könyv el lett távolítva a polcról: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Sajnálom, nincs jogosultságot eltávolítani könyvet erről a polcról: %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "A következő polc létre lett hozva: %(title)s"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Hiba történt"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "Polc készítése"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "A következő polc megváltoztatva: %(title)s"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Polc szerkesztése"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Polc: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Hiba a polc megnyitásakor. A polc nem létezik vagy nem elérhető."
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr ""
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "A következő polc átrendezése: %(name)s"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Legutóbb hozzáadott"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Legutóbbi könyvek mutatása"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Kelendő könyvek"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Kelendő könyvek mutatása"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Legjobb könyvek"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Legjobbra értékelt könyvek mutatása"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Olvasott könyvek"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Mutassa az olvasva/olvasatlan állapotot"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Olvasatlan könyvek"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr ""
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Felfedezés"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Könyvek találomra mutatása"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Címkék"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Címke választó mutatása"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Sorozatok"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Sorozat választó mutatása"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Szerzők"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Szerző választó mutatása"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Kiadók"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Kiadó választó mutatása"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Nyelvek"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Nyelv választó mutatása"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr ""
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr ""
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr ""
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr ""
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -877,220 +883,220 @@ msgstr "Új frissítés érhető el. Kattints az alábbi gombra a frissítéshez
msgid "Click on the button below to update to the latest stable version."
msgstr ""
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr ""
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr ""
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr ""
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Legutóbb hozzáadott könyvek"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Felfedezés (könyvek találomra)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr ""
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Kelendő könyvek (legtöbbet letöltöttek)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Hiba történt az e-könyv megnyitásakor. A fájl nem létezik vagy nem érhető el:"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr ""
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Kiadó: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Sorozat: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr ""
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr ""
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Címke: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Nyelv: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr ""
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr ""
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Feladatok"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Keresés"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Kiadva ezután: "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Kiadva ezelőtt: "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Értékelés <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Értékelés <= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "keresés"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "A könyv sikeresen küldésre lett jelölve a következő címre: %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "Hiba történt a könyv küldésekor: %(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Először be kell állítani a kindle e-mail címet..."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr ""
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "regisztrálás"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Nem engedélyezett a megadott e-mail cím bejegyzése"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Jóváhagyó levél elküldve az email címedre."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Ez a felhasználónév vagy e-mail cím már használatban van."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr ""
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr ""
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Rossz felhasználó név vagy jelszó!"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr ""
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr ""
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr ""
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "belépés"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "A token nem található."
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "A token érvényessége lejárt."
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Sikerült! Újra használható az eszköz."
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s profilja"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "A profil frissítve."
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Egy olvasott könyv"
diff --git a/cps/translations/it/LC_MESSAGES/messages.mo b/cps/translations/it/LC_MESSAGES/messages.mo
index afb7afaf..d9b1d594 100644
Binary files a/cps/translations/it/LC_MESSAGES/messages.mo and b/cps/translations/it/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/it/LC_MESSAGES/messages.po b/cps/translations/it/LC_MESSAGES/messages.po
index 14493c37..8c544937 100644
--- a/cps/translations/it/LC_MESSAGES/messages.po
+++ b/cps/translations/it/LC_MESSAGES/messages.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2017-04-04 15:09+0200\n"
"Last-Translator: ElQuimm \n"
"Language: it\n"
@@ -45,9 +45,9 @@ msgstr "Ricollegato con successo"
msgid "Unknown command"
msgstr "Comando sconosciuto"
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Sconosciuto"
@@ -60,7 +60,7 @@ msgstr "Pagina di amministrazione"
msgid "UI Configuration"
msgstr "Configurazione dell'interfaccia utente"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "La configurazione di Calibre-Web è stata aggiornata"
@@ -112,175 +112,181 @@ msgstr "LDAP User Object Filter contiene una parentesi senza la corrispettiva"
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr "La posizione del certificato LDAP non è valida, per favore indica il percorso corretto"
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr "La posizione del Keyfile non è valida, per favore indica il percorso corretto"
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr "La posizione del Certfile non è valida, per favore indica il percorso corretto"
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr "La posizione del DB non è valida, per favore indica il percorso corretto"
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr "Il DB non è scrivibile"
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Configurazione di base"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Per favore compila tutti i campi!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Aggiungi un nuovo utente"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "L'e-mail non proviene da un dominio valido"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Trovato un account esistente con questo e-mail o nome di utente"
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Creato l'utente '%(user)s'"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Utente '%(nick)s' eliminato"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Non rimarrebbe nessun utente amministratore, non posso eliminare l'utente"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr "Non rimarrebbe nessun utente amministratore, non posso rimuovere il ruolo di amministratore"
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Ho trovato un account creato in precedenza con questo e-mail."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Modifica l'utente %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "Questo nome di utente è già utilizzato"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Utente '%(nick)s' aggiornato"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Si è verificato un errore imprevisto."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "Modifica le impostazioni SMTP"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "E-mail di test inviato con successo a %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Si è verificato un errore nell'invio dell'e-mail di test: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Per favore prima configura il tuo indirizzo e-mail..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "Configurazione del server e-mail aggiornata"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr "Utente non trovato"
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "La password dell'utente %(user)s è stata resettata"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Si è verificato un errore sconosciuto: per favore riprova."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Configura dapprima le impostazioni del server SMTP..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Visualizzatore del Logfile"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Richiedo il pacchetto di aggiornamento"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Scarico il pacchetto di aggiornamento"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Decomprimo il pacchetto di aggiornamento"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Sostituisco i file"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Le connessioni al database sono chiuse"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Arresto il server"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Aggiornamento completato, per favore premi ok e ricarica la pagina"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Aggiornamento non riuscito:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "Errore HTTP"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Errore di connessione"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Tempo scaduto nello stabilire la connessione"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Errore generale"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr "Il file di aggiornamento non può essere salvato nella cartella temporanea"
@@ -300,8 +306,8 @@ msgstr "Il formato del libro è stato eliminato con successo"
msgid "Book Successfully Deleted"
msgstr "Il libro é stato eliminato con successo"
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Errore durante l'apertura del libro. Il file non esiste o il file non è accessibile"
@@ -309,82 +315,82 @@ msgstr "Errore durante l'apertura del libro. Il file non esiste o il file non è
msgid "edit metadata"
msgstr "Modifica i metadati"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s non è una lingua valida"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Non è consentito caricare file con l'estensione '%(ext)s' su questo server"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Il file da caricare deve avere un'estensione"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Impossibile creare la cartella %(path)s (autorizzazione negata)."
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Il salvataggio del file %(file)s non è riuscito."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr "Errore nel database: %(error)s."
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Ho aggiunto il formato %(ext)s al libro %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "I metadati sono stati aggiornati con successo"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Errore nella modifica del libro. Per favore verifica i dettagli nel file di registro (logfile)"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "Il file %(filename)s non può essere salvato nella cartella temporanea"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "Probabilmnete il libro caricato esiste già nella libreria; considera di cambiare prima di sottoporlo nuovamente: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr "Impossibile spostare il file %(file)s: %(error)s"
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr "Impossibile spostare il file della copertina %(file)s: %(error)s"
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "Il file %(file)s è stato caricato"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Mancano o il formato sorgente o quello di destinazione, necessari alla conversione"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Libro accodato con successo per essere convertito in %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Si è verificato un errore durante la conversione del libro: %(res)s"
@@ -498,71 +504,71 @@ msgstr "File %(file)s non trovato su Google Drive"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Non ho trovato la cartella %(path)s del libro su Google Drive"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr "Errore nello scaricare la copertina"
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr "Errore nel creare la cartella per la copertina"
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr "Il file della copertina non è in un formato immagine valido o non può essere salvato"
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr "Solamente i file nei formati jpg/jpeg/png/webp sono supportati per le copertine"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr "Solamente i file nei formati jpg/jpeg sono supportati per le copertine"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr "Non ho trovato il file binario di UnRar"
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr "Errore nell'eseguire UnRar"
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Attendi"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Non riuscito"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Avviato"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Terminato"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Stato sconosciuto"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "E-mail: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Conversione: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Upload: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Processo sconosciuto: "
@@ -595,7 +601,7 @@ msgstr "L'accesso con Google non è riuscito."
msgid "Failed to fetch user info from Google."
msgstr "Il recupero delle informazioni dell'utente da Google non è riuscito."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "ora sei connesso come: '%(nickname)s'"
@@ -632,218 +638,218 @@ msgstr "GitHub errore Oauth, per favore riprova più tardi."
msgid "Google Oauth error, please retry later."
msgstr "Google errore Oauth, per favore riprova più tardi."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Lo scaffale specificato non è valido"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Mi spiace, ma non sei autorizzato ad aggiungere libri allo scaffale: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Il libro è gia presente nello scaffale: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Il libro è stato aggiunto allo scaffale: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Non sei autorizzato ad aggiungere libri allo scaffale: %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "I libri sono già presenti nello scaffale: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "I libri sono stati aggiunti allo scaffale: %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Non posso aggiungere libri allo scaffale: %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Il libro è stato rimosso dallo scaffale: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Spiacente, ma non sei autorizzato a togliere libri dallo scaffale: %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr "Uno scaffale pubblico denominato '%(title)s' esiste già."
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr "Uno scaffale privato denominato '%(title)s' esiste già."
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Lo scaffale %(title)s è stato creato"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "C'era un errore"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "Crea uno scaffale"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Lo scaffale %(title)s è stato modificato"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Modifica uno scaffale"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Scaffale: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Errore durante l'apertura dello scaffale. Lo scaffale non esiste o non è accessibile"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr "Libro nascosto"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Modifica l'ordine dello scaffale: '%(name)s'"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Aggiunti recentemente"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Mostra l'opzione per la selezione dei libri più recenti"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Libri popolari"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Mostra l'opzione per la selezione dei libri più popolari"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Libri meglio valutati"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Mostra l'opzione per la selezione dei libri meglio valutati"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Libri da leggere"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Mostra l'opzione per la selezione letto e non letto"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Libri non letti"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Mostra l'opzione per la selezione dei libri non letti"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Per scoprire"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Mostra l'opzione per presentare libri aleatoriamente"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Categorie"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Mostra l'opzione per la selezione delle categorie"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Serie"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Mostra l'opzione per la selezione delle serie"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Autori"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Mostra l'opzione per la selezione degli autori"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Editori"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Mostra l'opzione per la selezione degli editori"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Lingue"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Mostra l'opzione per la selezione delle lingue"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Valutazioni"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Mostra l'opzione per la selezione della valutazione"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Formati file"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Mostra la selezione del formato dei file"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr "Libri archiviati"
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr "Mostra l'opzione per la selezione dei libri archiviati"
@@ -876,220 +882,220 @@ msgstr "Nuovo aggiornamento disponibile. Clicca sul pulsante sottostante per agg
msgid "Click on the button below to update to the latest stable version."
msgstr "Clicca sul pulsante per aggiornare all'ultima versione stabile."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr "Errore: %(ldaperror)s"
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr "Errore: nessun utente restituito in risposta dal server LDAP"
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr "Fallita la creazione di almeno un utente LDAP"
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr "Almeno un utente LDAP non è stato trovato nel database"
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr "Utente importato con successo"
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Libri aggiunti di recente"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Scopri (libri casuali)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Libri"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "I libri più richiesti"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Errore durante l'apertura del libro selezionato. Il file non esiste o il file non è accessibile"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Autore: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Editore: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Valutazione: %(rating)s stelle"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Formato del file: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Categoria: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Lingua: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Elenco delle valutazioni"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Elenco dei formati"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Compito"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Cerca"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Pubblicato dopo "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Pubblicato prima "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Valutazione <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Valutazione >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "ricerca"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr "La colonna personale no.%(column)d non esiste nel database di Calibre"
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Libro accodato con successo per essere spedito a %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! 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:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Per favore aggiorna il tuo profilo con un indirizzo e-mail Kindle a cui inviare i libri."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "Il server e-mail non è configurato, per favore contatta l'amministratore"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "registra"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Il tuo e-mail non è autorizzato alla registrazione"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Un e-mail di conferma è stato inviato al tuo indirizzo."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Questo nome di utente o questo e-mail sono già utilizzati."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "Non posso attivare l'autenticazione LDAP"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr "Login come: '%(nickname)s', il server LDAP non è raggiungibile o l'utente è sconosciuto"
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr "Non posso accedere: %(message)s"
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Nome utente o password errati"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "Una nuova password è stata inviata al tuo recapito e-mail"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Per favore digita un nome di utente valido per resettare la password"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Ora sei connesso come '%(nickname)s'"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "accedi"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Token non trovato"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Il token è scaduto"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Riuscito! Torna al tuo dispositivo"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "Profilo di %(name)s"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Profilo aggiornato"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Leggi un libro"
diff --git a/cps/translations/ja/LC_MESSAGES/messages.mo b/cps/translations/ja/LC_MESSAGES/messages.mo
index 93735fd7..636d38e0 100644
Binary files a/cps/translations/ja/LC_MESSAGES/messages.mo and b/cps/translations/ja/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/ja/LC_MESSAGES/messages.po b/cps/translations/ja/LC_MESSAGES/messages.po
index a9c8bfd8..4ae537dc 100644
--- a/cps/translations/ja/LC_MESSAGES/messages.po
+++ b/cps/translations/ja/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2018-02-07 02:20-0500\n"
"Last-Translator: white \n"
"Language: ja\n"
@@ -46,9 +46,9 @@ msgstr ""
msgid "Unknown command"
msgstr ""
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "不明"
@@ -61,7 +61,7 @@ msgstr "管理者ページ"
msgid "UI Configuration"
msgstr "UI設定"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Calibre-Web の設定を更新しました"
@@ -113,175 +113,181 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "基本設定"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "全ての項目を入力してください"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "新規ユーザ追加"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "このメールは有効なドメインからのものではありません"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "このメールアドレスかニックネームで登録されたアカウントが見つかりました"
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "ユーザ '%(user)s' を作成しました"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "ユーザ '%(nick)s' を削除しました"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr ""
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "このメールアドレスで登録されたアカウントがあります"
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "%(nick)s を編集"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr ""
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "ユーザ '%(nick)s' を更新しました"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "不明なエラーが発生しました。"
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "SMTP設定を変更"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "テストメールが %(kindlemail)s に送信されました"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "テストメールを %(res)s に送信中にエラーが発生しました"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr ""
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "メールサーバの設定を更新しました"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "%(user)s 用のパスワードをリセット"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "不明なエラーが発生しました。あとで再試行してください。"
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "初めにSMTPメールの設定をしてください"
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr ""
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "更新データを要求中"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "更新データをダウンロード中"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "更新データを展開中"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "ファイルを置換中"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "データベースの接続を切断完了"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "サーバ停止中"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "アップデート完了、OKを押してページをリロードしてください"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "アップデート失敗:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "HTTPエラー"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "接続エラー"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "接続を確立中にタイムアウトしました"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "エラー発生"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr ""
@@ -301,8 +307,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "電子書籍を開けません。ファイルが存在しないかアクセスできません"
@@ -310,82 +316,82 @@ msgstr "電子書籍を開けません。ファイルが存在しないかアク
msgid "edit metadata"
msgstr "メタデータを編集"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s は有効な言語ではありません"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "ファイル拡張子 '%(ext)s' をこのサーバにアップロードすることは許可されていません"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "アップロードするファイルには拡張子が必要です"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "%(path)s の作成に失敗しました (Permission denied)。"
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "%(file)s を保存できません。"
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "ファイル形式 %(ext)s が %(book)s に追加されました"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "メタデータを更新しました"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "本の編集でエラーが発生しました。詳細はログファイルを確認してください"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr ""
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr ""
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr ""
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "変換元の形式または変換後の形式が指定されていません"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "本の %(book_format)s への変換がキューに追加されました"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "この本の変換中にエラーが発生しました: %(res)s"
@@ -499,71 +505,71 @@ msgstr "ファイル %(file)s はGoogleドライブ上にありません"
msgid "Book path %(path)s not found on Google Drive"
msgstr "本のパス %(path)s はGoogleドライブ上にありません"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr ""
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr ""
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr ""
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "待機中"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "失敗"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "開始"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "終了"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "不明"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "メール: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "変換: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "アップロード: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "不明なタスク: "
@@ -596,7 +602,7 @@ msgstr ""
msgid "Failed to fetch user info from Google."
msgstr ""
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "%(nickname)s としてログイン中"
@@ -633,218 +639,218 @@ msgstr ""
msgid "Google Oauth error, please retry later."
msgstr ""
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "指定された本棚は無効です"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "申し訳ありませんが、あなたは %(shelfname)s に本を追加することが許可されていません"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "この本は %(shelfname)s にすでに追加されています"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "本を %(sname)s に追加しました"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "%(name)s に本を追加することが許可されていません"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "これらの本は %(name)s にすでに追加されています"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "本が %(sname)s に追加されました"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "%(sname)s に本を追加できません"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "本が %(sname)s から削除されました"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "申し訳ありませんが、%(sname)s から本を削除することが許可されていません"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "%(title)s を作成しました"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "エラーが発生しました"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "本棚を作成する"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "%(title)s を変更しました"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "本棚を編集する"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "本棚: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "本棚を開けません。この本棚は存在しないかアクセスできません"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr ""
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "'%(name)s' 内の本の順番を変更する"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "最近追加した本"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "最近追加された本を表示"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "人気の本"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr ""
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr ""
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr ""
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "読んだ本"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "既読の本と未読の本を表示"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "未読の本"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr ""
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "見つける"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "ランダムで本を表示"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "カテゴリ"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "カテゴリ選択を表示"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "シリーズ"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "シリーズ選択を表示"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "著者"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "著者選択を表示"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "出版社"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "出版社選択を表示"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "言語"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "言語選択を表示"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr ""
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr ""
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr ""
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr ""
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -877,220 +883,220 @@ msgstr "アップデートが利用可能です。下のボタンをクリック
msgid "Click on the button below to update to the latest stable version."
msgstr ""
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr ""
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr ""
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr ""
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "最近追加された本"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "本を見つける (ランダムで表示)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr ""
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr ""
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr ""
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr ""
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "出版社: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "シリーズ: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr ""
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr ""
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "カテゴリ: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "言語: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr ""
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr ""
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "タスク"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "検索"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "これ以降に出版 "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "これ以前に出版 "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "評価 <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "評価 >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "検索"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "本の %(kindlemail)s への送信がキューに追加されました"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "%(res)s を送信中にエラーが発生しました"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "初めにKindleのメールアドレスを設定してください"
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr ""
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "登録"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "このメールアドレスは登録が許可されていません"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "確認メールがこのメールアドレスに送信されました。"
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "このユーザ名またはメールアドレスはすでに使われています。"
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr ""
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr ""
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "ユーザ名またはパスワードが違います"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr ""
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr ""
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr ""
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "ログイン"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "トークンが見つかりません"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "トークンが無効です"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "成功です!端末に戻ってください"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s のプロフィール"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "プロフィールを更新しました"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "本を読む"
diff --git a/cps/translations/km/LC_MESSAGES/messages.mo b/cps/translations/km/LC_MESSAGES/messages.mo
index 9f789233..2db61a46 100644
Binary files a/cps/translations/km/LC_MESSAGES/messages.mo and b/cps/translations/km/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/km/LC_MESSAGES/messages.po b/cps/translations/km/LC_MESSAGES/messages.po
index c1a2b074..10d2d6af 100644
--- a/cps/translations/km/LC_MESSAGES/messages.po
+++ b/cps/translations/km/LC_MESSAGES/messages.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2018-08-27 17:06+0700\n"
"Last-Translator: \n"
"Language: km_KH\n"
@@ -47,9 +47,9 @@ msgstr ""
msgid "Unknown command"
msgstr ""
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "មិនដឹង"
@@ -62,7 +62,7 @@ msgstr "ទំព័ររដ្ឋបាល"
msgid "UI Configuration"
msgstr "ការកំណត់ផ្ទាំងប្រើប្រាស់"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr ""
@@ -114,175 +114,181 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "ការកំណត់សាមញ្ញ"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "សូមបំពេញចន្លោះទាំងអស់!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "បន្ថែមអ្នកប្រើប្រាស់ថ្មី"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr ""
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr ""
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "បានបង្កើតអ្នកប្រើប្រាស់ ‘%(user)s’"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានលុប"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr ""
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr ""
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "កែប្រែអ្នកប្រើប្រាស់ %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr ""
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "អ្នកប្រើប្រាស់ ‘%(nick)s’ ត្រូវបានកែប្រែ"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "បញ្ហាដែលមិនដឹងបានកើតឡើង។"
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "ប្តូរការកំណត់ SMTP"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr ""
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr ""
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr ""
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr ""
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr ""
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr ""
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "សូមកំណត់អ៊ីមែល SMTP ជាមុនសិន"
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr ""
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "កំពុងស្នើសុំឯកសារបច្ចុប្បន្នភាព"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "កំពុងទាញយកឯកសារបច្ចុប្បន្នភាព"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "កំពុងពន្លាឯកសារបច្ចុប្បន្នភាព"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr ""
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "ទំនាក់ទំនងទៅមូលដ្ឋានទិន្នន័យត្រូវបានផ្តាច់"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr ""
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "ការធ្វើបច្ចុប្បន្នភាពបានបញ្ចប់ សូមចុច okay រួចបើកទំព័រជាថ្មី"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr ""
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr ""
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr ""
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr ""
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr ""
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr ""
@@ -302,8 +308,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ពុំមានឯកសារ ឬឯកសារនេះមិនអាចបើកបាន"
@@ -311,82 +317,82 @@ msgstr "មានបញ្ហាពេលបើកឯកសារ eBook ។ ព
msgid "edit metadata"
msgstr "កែប្រែទិន្នន័យមេតា"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr ""
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "ឯកសារប្រភេទ '%(ext)s' មិនត្រូវបានអនុញ្ញាតឲអាប់ឡូដទៅម៉ាស៊ីន server នេះទេ"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "ឯកសារដែលត្រូវអាប់ឡូដត្រូវមានកន្ទុយឯកសារ"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "មិនអាចបង្កើតទីតាំង %(path)s (ពុំមានសិទ្ធិ)។"
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s ។"
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "ឯកសារទម្រង់ %(ext)s ត្រូវបានបន្ថែមទៅ %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr ""
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "មានបញ្ហាពេលកែប្រែសៀវភៅ សូមពិនិត្យមើល logfile សម្រាប់ព័ត៌មានបន្ថែម"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr ""
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr ""
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr ""
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr ""
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr ""
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr ""
@@ -500,71 +506,71 @@ msgstr "ឯកសារ %(file)s រកមិនឃើញក្នុង Google
msgid "Book path %(path)s not found on Google Drive"
msgstr "ទីតាំងសៀវភៅ %(path)s រកមិនឃើញក្នុង Google Drive"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr ""
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr ""
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr ""
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "កំពុងរង់ចាំ"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "បានបរាជ័យ"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "បានចាប់ផ្តើម"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "បានបញ្ចប់"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr ""
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr ""
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr ""
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr ""
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr ""
@@ -597,7 +603,7 @@ msgstr ""
msgid "Failed to fetch user info from Google."
msgstr ""
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "ឥឡូវអ្នកបានចូលដោយមានឈ្មោះថា៖ ‘%(nickname)s’"
@@ -634,218 +640,218 @@ msgstr ""
msgid "Google Oauth error, please retry later."
msgstr ""
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr ""
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr ""
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr ""
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "សៀវភៅត្រូវបានបន្ថែមទៅធ្នើ៖ %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr ""
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr ""
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr ""
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr ""
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "សៀវភៅត្រូវបានដកចេញពីធ្នើ៖ %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "សូមអភ័យទោស អ្នកមិនមានសិទ្ធិដកសៀវភៅចេញពីធ្នើនេះទេ៖ %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានបង្កើត"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "មានបញ្ហា"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "បង្កើតធ្នើ"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "ធ្នើឈ្មោះ %(title)s ត្រូវបានប្តូរ"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "កែប្រែធ្នើ"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "ធ្នើ៖ ‘%(name)s’"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "មានបញ្ហាពេលបើកធ្នើ។ ពុំមានធ្នើ ឬមិនអាចបើកបាន"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr ""
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "ប្តូរលំដាប់ធ្នើ៖ ‘%(name)s’"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "ទើបបន្ថែមថ្មីៗ"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "បង្ហាញសៀវភៅមកថ្មី"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "សៀវភៅដែលមានប្រជាប្រិយភាព"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "បង្ហាញសៀវភៅដែលមានប្រជាប្រិយភាព"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "សៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "បង្ហាញសៀវភៅដែលមានការវាយតម្លៃល្អជាងគេ"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "សៀវភៅដែលបានអានរួច"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "បង្ហាញអានរួច និងមិនទាន់អាន"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "សៀវភៅដែលមិនទាន់បានអាន"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr ""
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "ស្រាវជ្រាវ"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "បង្ហាញសៀវភៅចៃដន្យ"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "ប្រភេទនានា"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "បង្ហាញជម្រើសប្រភេទ"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "ស៊េរី"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "បង្ហាញជម្រើសស៊េរី"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "អ្នកនិពន្ធ"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "បង្ហាញជម្រើសអ្នកនិពន្ធ"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr ""
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr ""
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "ភាសានានា"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "បង្ហាញផ្នែកភាសា"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr ""
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr ""
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr ""
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr ""
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -878,220 +884,220 @@ msgstr ""
msgid "Click on the button below to update to the latest stable version."
msgstr ""
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr ""
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr ""
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr ""
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "សៀវភៅដែលទើបបានបន្ថែម"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "ស្រាវជ្រាវ (សៀវភៅចៃដន្យ)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr ""
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "សៀវភៅដែលត្រូវបានទាញយកច្រើនជាងគេ"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr ""
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr ""
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr ""
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "ស៊េរី៖ %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr ""
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr ""
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "ប្រភេទ៖ %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "ភាសា៖ %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr ""
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr ""
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "កិច្ចការនានា"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "ស្វែងរក"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "បានបោះពុម្ភក្រោយ "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "បានបោះពុម្ភមុន "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "ការវាយតម្លៃ <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "ការវាយតម្លៃ >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "ស្វែងរក"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "សៀវភៅបានចូលជួរសម្រាប់ផ្ញើទៅ %(kindlemail)s ដោយជោគជ័យ"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេះ៖ %(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr ""
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr ""
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "ចុះឈ្មោះ"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr ""
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr ""
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr ""
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr ""
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr ""
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "ខុសឈ្មោះអ្នកប្រើប្រាស់ ឬលេខសម្ងាត់"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr ""
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr ""
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr ""
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "ចូលប្រើ"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "រកមិនឃើញវត្ថុតាង"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "វត្ថុតាងហួសពេលកំណត់"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "ជោគជ័យ! សូមវិលមកឧបករណ៍អ្នកវិញ"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "ព័ត៌មានសង្ខេបរបស់ %(name)s"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "ព័ត៌មានសង្ខេបបានកែប្រែ"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "អានសៀវភៅ"
diff --git a/cps/translations/nl/LC_MESSAGES/messages.mo b/cps/translations/nl/LC_MESSAGES/messages.mo
index 9c73f73d..b1c4a55b 100644
Binary files a/cps/translations/nl/LC_MESSAGES/messages.mo and b/cps/translations/nl/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/nl/LC_MESSAGES/messages.po b/cps/translations/nl/LC_MESSAGES/messages.po
index c5482537..4ce11eb2 100644
--- a/cps/translations/nl/LC_MESSAGES/messages.po
+++ b/cps/translations/nl/LC_MESSAGES/messages.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web (GPLV3)\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2020-05-10 21:00+0200\n"
"Last-Translator: Marcel Maas \n"
"Language: nl\n"
@@ -47,9 +47,9 @@ msgstr "Opnieuw verbinden gelukt"
msgid "Unknown command"
msgstr "Onbekende opdracht"
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Onbekend"
@@ -62,7 +62,7 @@ msgstr "Systeembeheer"
msgid "UI Configuration"
msgstr "Uiterlijk aanpassen"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Calibre-Web-configuratie bijgewerkt"
@@ -114,175 +114,181 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr "LDAP certificaatlocatie is onjuist, voer een geldige locatie in"
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr "SSL-sleutellocatie is niet geldig, voer een geldige locatie in"
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr "SSL-certificaatlocatie is niet geldig, voer een geldige locatie in"
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr "Database niet gevonden, voer de juiste locatie in"
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Basis configuratie"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Vul alle velden in!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Gebruiker toevoegen"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "Het e-mailadres bevat geen geldige domeinnaam"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Bestaand account met dit e-mailadres of deze gebruikersnaam aangetroffen."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Gebruiker '%(user)s' aangemaakt"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Gebruiker '%(nick)s' verwijderd"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Kan laatste systeembeheerder niet verwijderen"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr "Kan systeembeheerder rol niet verwijderen van de laatste systeembeheerder"
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Bestaand account met dit e-mailadres aangetroffen."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Gebruiker '%(nick)s' bewerken"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "Deze gebruikersnaam is al in gebruik"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Gebruiker '%(nick)s' bijgewerkt"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Er is een onbekende fout opgetreden."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "SMTP-instellingen bewerken"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Test-e-mail verstuurd naar %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Fout opgetreden bij het versturen van de test-e-mail: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Gelieve eerst je e-mail adres configureren..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "E-mailserver-instellingen bijgewerkt"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr "Gebruiker niet gevonden"
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Wachtwoord voor gebruiker %(user)s is hersteld"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Onbekende fout opgetreden. Probeer het later nog eens."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Stel eerst SMTP-mail in..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Logbestand lezer"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Update opvragen"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Update downloaden"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Update uitpakken"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Update toepassen"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Databaseverbindingen zijn gesloten"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Bezig met stoppen van Calibre-Web"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Update voltooid, klik op 'Oké' en vernieuw de pagina"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Update mislukt:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "HTTP-fout"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Verbindingsfout"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Time-out tijdens maken van verbinding"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Algemene fout"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr "Geüpload bestand kon niet opgeslagen worden in de tijdelijke map"
@@ -302,8 +308,8 @@ msgstr "Het boekformaat is verwijderd"
msgid "Book Successfully Deleted"
msgstr "Het boek is verwijderd"
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Kan e-boek niet openen: het bestand bestaat niet of is ontoegankelijk"
@@ -311,82 +317,82 @@ msgstr "Kan e-boek niet openen: het bestand bestaat niet of is ontoegankelijk"
msgid "edit metadata"
msgstr "metagegevens bewerken"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s is geen geldige taal"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "De bestandsextensie '%(ext)s' is niet toegestaan op deze server"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Het te uploaden bestand moet voorzien zijn van een extensie"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Kan de locatie '%(path)s' niet aanmaken (niet gemachtigd)."
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Kan %(file)s niet opslaan."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Bestandsformaat %(ext)s toegevoegd aan %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "De metagegevens zijn bijgewerkt"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Kan het boek niet bewerken, controleer het logbestand"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "Bestand %(filename)s kon niet opgeslagen worden in de tijdelijke map"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "Geüpload boek staat mogelijk al in de bibliotheek, controleer alvorens door te gaan: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr "Bestand %(file)s niet verplaatst: %(error)s"
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr "Omslag %(file)s niet verplaatst: %(error)s"
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "Bestand %(file)s geüpload"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Bron- of doelformaat ontbreekt voor conversie"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Het boek is in de wachtrij geplaatst voor conversie naar %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Er is een fout opgetreden bij het converteren van dit boek: %(res)s"
@@ -500,71 +506,71 @@ msgstr "Bestand '%(file)s' niet aangetroffen op Google Drive"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Boeken locatie '%(path)s' niet aangetroffen op Google Drive"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr "Locatie aanmaken voor omslag mislukt"
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr "Omslag-bestand is geen afbeelding of kon niet opgeslagen worden"
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr "Alleen jpg/jpeg/png/webp bestanden zijn toegestaan als omslag"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr "Alleen jpg/jpeg bestanden zijn toegestaan als omslag"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr "Unrar executable niet gevonden"
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr "Fout bij het uitvoeren van Unrar"
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Wachten"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Mislukt"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Gestart"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Voltooid"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Onbekende status"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "E-mailadres: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Converteren: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Uploaden: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Onbekende taak: "
@@ -597,7 +603,7 @@ msgstr "Inloggen bij Google mislukt."
msgid "Failed to fetch user info from Google."
msgstr "Opvragen gebruikersinfo bij Google mislukt."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "je bent ingelogd als: '%(nickname)s'"
@@ -634,218 +640,218 @@ msgstr "GitHub OAuth fout, probeer het later nog eens."
msgid "Google Oauth error, please retry later."
msgstr "Google OAuth fout, probeer het later nog eens."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Ongeldige boekenplank opgegeven"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Sorry, je mag geen boeken toevoegen aan boekenplank: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Dit boek maakt al deel uit van boekenplank: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Het boek is toegevoegd aan boekenplank: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Je bent niet gemachtigd om boeken toe te voegen aan boekenplank: %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Deze boeken maken al deel uit van boekenplank: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "De boeken zijn toegevoegd aan boekenplank: %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Kan boeken niet toevoegen aan boekenplank: %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Het boek is verwijderd van boekenplank: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Je bent niet gemachtigd om boeken te verwijderen van boekenplank: %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr "Een openbare boekenplank met de naam '%(title)s' bestaat al."
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr "Een persoonlijke boekenplank met de naam '%(title)s' bestaat al."
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Boekenplank '%(title)s' aangemaakt"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Er is een fout opgetreden"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "Boekenplank maken"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Boekenplank '%(title)s' is aangepast"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Pas een boekenplank aan"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Boekenplank: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Kan boekenplank niet openen: de boekenplank bestaat niet of is ontoegankelijk"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr "Verborgen boek"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Volgorde bewerken van boekenplank: '%(name)s'"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Recent toegevoegd"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Recent toegevoegde boeken tonen"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Populaire boeken"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Populaire boeken tonen"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Best beoordeelde boeken"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Best beoordeelde boeken tonen"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Gelezen boeken"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Gelezen/Ongelezen boeken tonen"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Ongelezen boeken"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Ongelezen boeken tonen"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Willekeurige boeken"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Willekeurige boeken tonen"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Categorieën"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Categoriekeuze tonen"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Boekenreeksen"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Boekenreeksenkeuze tonen"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Auteurs"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Auteurkeuze tonen"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Uitgevers"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Uitgeverskeuze tonen"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Talen"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Taalkeuze tonen"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Beoordelingen"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Beoordelingen tonen"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Bestandsformaten"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Bestandsformaten tonen"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr "Gearchiveerde boeken"
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr "Gearchiveerde boeken tonen"
@@ -878,220 +884,220 @@ msgstr "Er is een update beschikbaar. Klik op de knop hieronder om te updaten na
msgid "Click on the button below to update to the latest stable version."
msgstr "Klik op onderstaande knop om de laatste stabiele versie te installeren."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr "Fout: %(ldaperror)s"
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr "Fout: No user returned in response of LDAP server"
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr "Gebruiker is geïmporteerd"
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Recent toegevoegde boeken"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Verkennen (willekeurige boeken)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Boeken"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Populaire boeken (meest gedownload)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Oeps! Geselecteerd boek is niet beschikbaar. Bestand bestaat niet of is niet toegankelijk"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Auteur: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Uitgever: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Reeks: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Beoordeling: %(rating)s sterren"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Bestandsformaat: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Categorie: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Taal: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Beoordelingen"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Alle bestandsformaten"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Taken"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Zoeken"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Gepubliceerd na "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Gepubliceerd vóór "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Beoordeling <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Beoordeling >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "zoeken"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Het boek is in de wachtrij geplaatst om te worden verstuurd aan %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "Fout opgetreden bij het versturen van dit boek: %(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Stel je kindle-e-mailadres in..."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "E-mailserver is niet geconfigureerd, neem contact op met de beheerder!"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "registreren"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Dit e-mailadres mag niet worden gebruikt voor registratie"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Er is een bevestigings-e-mail verstuurd naar je e-mailadres."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Gebruikersnaam of e-mailadres is al in gebruik."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "Kan de LDAP authenticatie niet activeren"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr "Inloggen mislukt: %(message)s"
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Verkeerde gebruikersnaam of wachtwoord"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "Een nieuw wachtwoord is verzonden naar je e-mailadres"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Geef een geldige gebruikersnaam op om je wachtwoord te herstellen"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Je bent ingelogd als: '%(nickname)s'"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "inloggen"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Toegangssleutel niet gevonden"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Toegangssleutel is verlopen"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Gelukt! Ga terug naar je apparaat"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s's profiel"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Profiel bijgewerkt"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Lees een boek"
diff --git a/cps/translations/pl/LC_MESSAGES/messages.mo b/cps/translations/pl/LC_MESSAGES/messages.mo
index 3c05f2a7..6f3c5f96 100644
Binary files a/cps/translations/pl/LC_MESSAGES/messages.mo and b/cps/translations/pl/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/pl/LC_MESSAGES/messages.po b/cps/translations/pl/LC_MESSAGES/messages.po
index 2b917980..e6dc6b45 100644
--- a/cps/translations/pl/LC_MESSAGES/messages.po
+++ b/cps/translations/pl/LC_MESSAGES/messages.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre Web - polski (POT: 2019-08-06 18:35)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2020-03-31 21:50+0200\n"
"Last-Translator: Jerzy Piątek \n"
"Language: pl\n"
@@ -48,9 +48,9 @@ msgid "Unknown command"
msgstr ""
# ???
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Nieznany"
@@ -63,7 +63,7 @@ msgstr "Panel administratora"
msgid "UI Configuration"
msgstr "Konfiguracja Interfejsu"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Konfiguracja Calibre-Web została zaktualizowana"
@@ -115,177 +115,183 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Konfiguracja podstawowa"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Proszę wypełnić wszystkie pola!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Dodaj nowego użytkownika"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "E-mail nie pochodzi z prawidłowej domeny"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub pseudonimu."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Użytkownik '%(user)s' został utworzony"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Użytkownik '%(nick)s' został usunięty"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Nie można usunąć użytkownika. Brak na serwerze innego konta z prawami administratora"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Edytuj użytkownika %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "Nazwa użytkownika jest już zajęta"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Użytkownik '%(nick)s' został zaktualizowany"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Wystąpił nieznany błąd."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "Zmień ustawienia SMTP"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Testowy e-mail pomyślnie przesłany do %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Wystąpił błąd podczas wysyłania e-maila testowego: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Najpierw skonfiguruj swój adres e-mail..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "Zaktualizowano ustawienia serwera poczty e-mail"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
# ???
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Zrestartowano hasło użytkownika %(user)s"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Przeglądanie dziennika"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Żądanie o pakiet aktualizacji"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Pobieranie pakietu aktualizacji"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Rozpakowywanie pakietu aktualizacji"
# ???
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Zastępowanie plików"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Połączenia z bazą danych zostały zakończone"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Zatrzymywanie serwera"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Aktualizacja nieudana:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "Błąd HTTP"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Błąd połączenia"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Przekroczono limit czasu podczas nawiązywania połączenia"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Błąd ogólny"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr ""
@@ -305,8 +311,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Błąd podczas otwierania e-booka. Plik nie istnieje lub jest niedostępny"
@@ -314,82 +320,82 @@ msgstr "Błąd podczas otwierania e-booka. Plik nie istnieje lub jest niedostęp
msgid "edit metadata"
msgstr "edytuj metadane"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s nie jest prawidłowym językiem"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Rozszerzenie pliku '%(ext)s' nie jest dozwolone do wysłania na ten serwer"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Plik do wysłania musi mieć rozszerzenie"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Nie udało się utworzyć łącza %(path)s (Odmowa dostępu)."
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Nie można zapisać pliku %(file)s."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Format pliku %(ext)s dodany do %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "Metadane zostały pomyślnie zaktualizowane"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Błąd podczas edycji książki, sprawdź plik dziennika, aby uzyskać szczegółowe informacje"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "Nie można zapisać pliku %(filename)s w katalogu tymczasowym"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "Wysłana książka prawdopodobnie istnieje w bibliotece, rozważ zmianę przed przesłaniem nowej: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "Wysłano plik %(file)s"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Brak formatu źródłowego lub docelowego do konwersji"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Książka została pomyślnie umieszczona w zadaniach do konwersji %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Podczas konwersji książki wystąpił błąd: %(res)s"
@@ -505,71 +511,71 @@ msgstr "Nie znaleziono pliku %(file)s na Google Drive"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Nie znaleziono ścieżki do książki %(path)s na Google Drive"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr "Nie udało się utworzyć ścieżki dla okładki"
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr "Jako plik okładki dopuszczalne są jedynie pliki jpg/jpeg/png/webp"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr "Jako plik okładki dopuszczalne są jedynie pliki jpg/jpeg"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Oczekiwanie"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Nieudane"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Rozpoczynanie"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Zakończone"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Ststus nieznany"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "E-mail: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Konwertowanie: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Wyślij: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Nieznane zadanie: "
@@ -603,7 +609,7 @@ msgstr "Nie udało się zalogować do Google."
msgid "Failed to fetch user info from Google."
msgstr "Nie udało się pobrać informacji o użytkowniku z Google."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "zalogowałeś się jako: '%(nickname)s'"
@@ -640,218 +646,218 @@ msgstr "Błąd GitHub Oauth, proszę spróbować później."
msgid "Google Oauth error, please retry later."
msgstr "Błąd Google Oauth, proszę spróbować później."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Podano niewłaściwą półkę"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Niestety, nie posiadasz uprawnień do dodania książki do półki: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Książka jest już dodana do półki: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Książka została dodana do półki: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Nie masz uprawnień do dodania ksiażki do półki: %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Książki są już dodane do półki: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "Książki zostały dodane do półki %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Nie można dodać książek do półki: %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Książka została usunięta z półki: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Niestety nie możesz usunąć książki z tej półki %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Półka %(title)s została utworzona"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Wystąpił błąd"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "utwórz półkę"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Półka %(title)s została zmieniona"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Edytuj półkę"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Półka: „%(name)s”"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Błąd otwierania półki. Półka nie istnieje lub jest niedostępna"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr "Ukryta książka"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Zmieniono kolejność półki: '%(name)s'"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Ostatnio dodane"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Pokaż menu ostatnio dodanych książek"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Najpopularniejsze"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Pokaż menu najpopularniejszych książek"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Najwyżej ocenione"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Pokaż menu najwyżej ocenionych książek"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Przeczytane"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Pokaż menu przeczytane i nieprzeczytane"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Nieprzeczytane"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Pokaż nieprzeczytane"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Odkrywaj"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Pokaż menu losowych książek"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Kategorie"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Pokaż menu wyboru kategorii"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Cykle"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Pokaż menu wyboru cyklu"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Autorzy"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Pokaż menu wyboru autora"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Wydawcy"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Pokaż menu wyboru wydawcy"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Języki"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Pokaż menu wyboru języka"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Oceny"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Pokaż menu listy ocen"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Formaty plików"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Pokaż menu formatu plików"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -884,220 +890,220 @@ msgstr "Dostępna jest nowa aktualizacja. Kliknij przycisk poniżej, aby zaktual
msgid "Click on the button below to update to the latest stable version."
msgstr "Kliknij przycisk poniżej, aby zaktualizować do najnowszej stabilnej wersji."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr ""
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr ""
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr ""
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Ostatnio dodane książki"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Odkrywaj (losowe książki)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Książki"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Najpopularniejsze książki (najczęściej pobierane)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Błąd otwierania e-booka. Plik nie istnieje lub jest niedostępny"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Autor: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Wydawca: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Cykl: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Ocena: %(rating)s gwiazdek"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Format pliku: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Kategoria: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Język: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Lista z ocenami"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Lista formatów"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Zadania"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Szukaj"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Opublikowane po "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Opublikowane przed "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Ocena <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Ocena >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "szukaj"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Książka została umieszczona w kolejce do wysłania do %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! 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:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Najpierw skonfiguruj adres e-mail Kindle..."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "Serwer e-mail nie jest skonfigurowany, skontaktuj się z administratorem!"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "rejestracja"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Twój e-mail nie może się zarejestrować"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Wiadomość e-mail z potwierdzeniem została wysłana na Twoje konto e-mail."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Ta nazwa użytkownika lub adres e-mail jest już używany."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "Nie można aktywować uwierzytelniania LDAP"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr ""
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Błędna nazwa użytkownika lub hasło"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "Nowe hasło zostało wysłane na Twój adres e-mail"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Wprowadź prawidłową nazwę użytkownika, aby zresetować hasło"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Jesteś teraz zalogowany jako: '%(nickname)s'"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "logowanie"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Nie znaleziono tokenu"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Token wygasł"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Powodzenie! Wróć do swojego urządzenia"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "Profil użytkownika %(name)s"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Zaktualizowano profil"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Czytaj książkę"
diff --git a/cps/translations/ru/LC_MESSAGES/messages.mo b/cps/translations/ru/LC_MESSAGES/messages.mo
index 8a7658f2..47a7b23c 100644
Binary files a/cps/translations/ru/LC_MESSAGES/messages.mo and b/cps/translations/ru/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/ru/LC_MESSAGES/messages.po b/cps/translations/ru/LC_MESSAGES/messages.po
index 60e636cc..8b265dab 100644
--- a/cps/translations/ru/LC_MESSAGES/messages.po
+++ b/cps/translations/ru/LC_MESSAGES/messages.po
@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2020-04-29 01:20+0400\n"
"Last-Translator: ZIZA\n"
"Language: ru\n"
@@ -47,9 +47,9 @@ msgstr "Успешно переподключено"
msgid "Unknown command"
msgstr "Неизвестная команда"
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Неизвестно"
@@ -62,7 +62,7 @@ msgstr "Администрирование"
msgid "UI Configuration"
msgstr "Настройка интерфейса"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Конфигурация Calibre-Web обновлена"
@@ -114,175 +114,181 @@ msgstr "Фильтр объектов пользователя LDAP имеет
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr "Неверное расположение сертификата LDAP, пожалуйста, введите правильный путь"
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr "Расположение ключевого файла неверно, пожалуйста, введите правильный путь"
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr "Расположение Certfile не является действительным, пожалуйста, введите правильный путь"
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr "Расположение Базы Данных неверно, пожалуйста, введите правильный путь."
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Настройки сервера"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Пожалуйста, заполните все поля!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Добавить пользователя"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "E-mail не из существующей доменной зоны"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Для этого адреса электронной почты или логина уже есть учётная запись."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Пользователь '%(user)s' добавлен"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Пользователь '%(nick)s' удалён"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Это последний администратор, невозможно удалить пользователя"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Этот адрес электронной почты уже зарегистрирован."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Изменить пользователя %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "Это имя пользователя уже занято"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Пользователь '%(nick)s' обновлён"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Произошла неизвестная ошибка."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "Изменить настройки SMTP"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Тестовое письмо успешно отправлено на %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Произошла ошибка при отправке тестового письма на: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Пожалуйста, сначала настройте свой адрес электронной почты ..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "Настройки E-mail сервера обновлены"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Пароль для пользователя %(user)s сброшен"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Неизвестная ошибка. Попробуйте позже."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Пожалуйста, сперва настройте параметры SMTP....."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Просмотр лога"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Проверка обновлений"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Загрузка обновлений"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Распаковка обновлений"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Замена файлов"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Соединения с базой данных закрыты"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Остановка сервера"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Обновления установлены, нажмите ок и перезагрузите страницу"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Ошибка обновления:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "Ошибка HTTP"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Ошибка соединения"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Тайм-аут при установлении соединения"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Общая ошибка"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr "Не удалось сохранить файл обновления во временной папке."
@@ -302,8 +308,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Ошибка при открытии eBook. Файл не существует или файл недоступен"
@@ -311,82 +317,82 @@ msgstr "Ошибка при открытии eBook. Файл не существ
msgid "edit metadata"
msgstr "изменить метаданные"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s не допустимый язык"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Запрещена загрузка файлов с расширением '%(ext)s'"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Загружаемый файл должен иметь расширение"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Ошибка при создании пути %(path)s (Доступ запрещён)."
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Не удалось сохранить файл %(file)s."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Формат файла %(ext)s добавлен в %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "Метаданные обновлены"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Ошибка редактирования книги. Пожалуйста, проверьте лог-файл для дополнительной информации"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "Файл %(filename)s не удалось сохранить во временную папку"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "Загруженная книга, вероятно, существует в библиотеке, перед тем как загрузить новую, рассмотрите возможность изменения: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "Файл %(file)s загружен"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Исходный или целевой формат для конвертирования отсутствует"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Книга успешно поставлена в очередь для конвертирования в %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Произошла ошибка при конвертирования этой книги: %(res)s"
@@ -500,71 +506,71 @@ msgstr "Файл %(file)s не найден на Google Drive"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Путь книги %(path)s не найден на Google Drive"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr "Не удалось создать путь для обложки."
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr "Только файлы jpg / jpeg / png / webp поддерживаются в качестве файла обложки"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr "Только файлы в формате jpg / jpeg поддерживаются как файл обложки"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Ожидание"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Неудачно"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Начало"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Завершено"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Неизвестный статус"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "E-mail: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Конвертировать: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Загрузить: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Неизвестная задача: "
@@ -597,7 +603,7 @@ msgstr "Не удалось войти в систему с помощью Googl
msgid "Failed to fetch user info from Google."
msgstr "Не удалось получить информацию о пользователе из Google."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "вы вошли как пользователь '%(nickname)s'"
@@ -634,218 +640,218 @@ msgstr "Ошибка GitHub Oauth, пожалуйста попробуйте п
msgid "Google Oauth error, please retry later."
msgstr "Ошибка Google Oauth, пожалуйста попробуйте позже."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Указана неверная полка"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Извините, но вам не разрешено добавлять книги на полку: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Книги уже размещены на полке: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Книга добавлена на книжную полку: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Вам не разрешено добавлять книгу на полку: %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Книги уже размещены на полке: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "Книги добавлены на полку: %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Не удалось добавить книги на полку: %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Книга удалена с полки: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Извините, вы не можете удалить книгу с полки: %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr "Публичная полка с названием '%(title)s' уже существует."
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr "Приватная полка с названием '%(title)s' уже существует."
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Создана полка %(title)s"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Произошла ошибка"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "Создать полку"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Колка %(title)s изменена"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Изменить полку"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Полка: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Ошибка открытия Полки. Полка не существует или недоступна"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr "Скрытая книга"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Изменить расположение полки '%(name)s'"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Недавно Добавленные"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Показывать недавние книги"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Популярные Книги"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Показывать популярные книги"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Книги с наилучшим рейтингом"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Показывать книги с наивысшим рейтингом"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Прочитанные Книги"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Показывать прочитанные и непрочитанные"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Непрочитанные Книги"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Показать непрочитанное"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Обзор"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Показывать случайные книги"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Категории"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Показывать выбор категории"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Серии"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Показывать выбор серии"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Авторы"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Показывать выбор автора"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Издатели"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Показать выбор издателя"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Языки"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Показывать выбор языка"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Рейтинги"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Показать выбор рейтинга"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Форматы файлов"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Показать выбор форматов файлов"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -878,220 +884,220 @@ msgstr "Новое обновление доступно. Нажмите на к
msgid "Click on the button below to update to the latest stable version."
msgstr "Нажмите на кнопку ниже для обновления до последней стабильной версии."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr "Ошибка: %(ldaperror)s"
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr "Ошибка: ни одного пользователя не найдено в ответ на запрос сервер LDAP"
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr "Не удалось создать хотя бы одного пользователя LDAP"
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr "По крайней мере, один пользователь LDAP не найден в базе данных"
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr "Пользователь успешно импортирован"
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Недавно Добавленные Книги"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Обзор (Случайные Книги)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Книги"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Популярные книги (часто загружаемые)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Невозможно открыть книгу. Файл не существует или недоступен"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Автор: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Издатель: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Серии: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Оценка: %(rating)s звезды(а)"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Формат файла: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Категория: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Язык: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Список рейтингов"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Список форматов файлов"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Задания"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Поиск"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Опубликовано после "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Опубликовано до "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Рейтинг <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Рейтинг >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "поиск"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Книга успешно поставлена в очередь для отправки на %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "При отправке этой книги произошла ошибка: %(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle..."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "Сервер электронной почты не настроен, обратитесь к администратору !"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "регистрация"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Ваш e-mail не подходит для регистрации"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Письмо с подтверждением отправлено вам на e-mail."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Этот никнейм или e-mail уже используются."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "Не удается активировать LDAP аутентификацию"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr "Резервный вход в систему как: '%(nickname)s', LDAP-сервер недоступен или пользователь не известен"
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr "Не удалось войти: %(message)s"
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Ошибка в имени пользователя или пароле"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "Новый пароль был отправлен на ваш адрес электронной почты"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Пожалуйста, введите действительное имя пользователя для сброса пароля"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Вы вошли как: '%(nickname)s'"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "войти"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Ключ не найден"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Ключ просрочен"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Успешно! Пожалуйста, проверьте свое устройство"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "Профиль %(name)s's"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Профиль обновлён"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Читать Книгу"
diff --git a/cps/translations/sv/LC_MESSAGES/messages.mo b/cps/translations/sv/LC_MESSAGES/messages.mo
index b1297f76..d65c43d7 100644
Binary files a/cps/translations/sv/LC_MESSAGES/messages.mo and b/cps/translations/sv/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/sv/LC_MESSAGES/messages.po b/cps/translations/sv/LC_MESSAGES/messages.po
index eb877b75..b41fd929 100644
--- a/cps/translations/sv/LC_MESSAGES/messages.po
+++ b/cps/translations/sv/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2020-03-14 09:30+0100\n"
"Last-Translator: Jonatan Nyberg \n"
"Language: sv\n"
@@ -46,9 +46,9 @@ msgstr ""
msgid "Unknown command"
msgstr ""
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Okänd"
@@ -61,7 +61,7 @@ msgstr "Administrationssida"
msgid "UI Configuration"
msgstr "Användargränssnitt konfiguration"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Calibre-Web konfiguration uppdaterad"
@@ -113,175 +113,181 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Grundläggande konfiguration"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Fyll i alla fält!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Lägg till ny användare"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "E-posten är inte från giltig domän"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Hittade ett befintligt konto för den här e-postadressen eller smeknamnet."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Användaren '%(user)s' skapad"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Användaren '%(nick)s' borttagen"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Ingen adminstratörsanvändare kvar, kan inte ta bort användaren"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Hittade ett befintligt konto för den här e-postadressen."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Redigera användaren %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "Detta användarnamn är redan taget"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Användaren '%(nick)s' uppdaterad"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Ett okänt fel uppstod."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "Ändra SMTP-inställningar"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Test-e-post skicka till %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Det gick inte att skicka Testmeddelandet: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Vänligen konfigurera din e-postadress först..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "E-postserverinställningar uppdaterade"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "Lösenord för användaren %(user)s återställd"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Ett okänt fel uppstod. Försök igen senare."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Konfigurera SMTP-postinställningarna först..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Visaren för loggfil"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Begär uppdateringspaketet"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Hämtar uppdateringspaketet"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Packar upp uppdateringspaketet"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Ersätta filer"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Databasanslutningarna är stängda"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Stoppar server"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Uppdatering klar, tryck på okej och uppdatera sidan"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Uppdateringen misslyckades:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "HTTP-fel"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Anslutningsfel"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Tiden ute när du etablerade anslutning"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Allmänt fel"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr ""
@@ -301,8 +307,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Det gick inte att öppna e-boken. Filen finns inte eller filen är inte tillgänglig"
@@ -310,82 +316,82 @@ msgstr "Det gick inte att öppna e-boken. Filen finns inte eller filen är inte
msgid "edit metadata"
msgstr "redigera metadata"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s är inte ett giltigt språk"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Filändelsen '%(ext)s' får inte laddas upp till den här servern"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Filen som ska laddas upp måste ha en ändelse"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "Det gick inte att skapa sökväg %(path)s (behörighet nekad)."
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "Det gick inte att lagra filen %(file)s."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "Filformatet %(ext)s lades till %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "Metadata uppdaterades"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Det gick inte att redigera boken, kontrollera loggfilen för mer information"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "Filen %(filename)s kunde inte sparas i temp dir"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "Uppladdad bok finns förmodligen i biblioteket, överväg att ändra innan du laddar upp nya: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "Filen %(file)s uppladdad"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Källa eller målformat för konvertering saknas"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "Boken är i kö för konvertering till %(book_format)s"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Det gick inte att konvertera den här boken: %(res)s"
@@ -499,71 +505,71 @@ msgstr "Filen %(file)s hittades inte på Google Drive"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Boksökvägen %(path)s hittades inte på Google Drive"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr "Det gick inte att skapa sökväg för omslag"
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr "Endast jpg/jpeg/png/webp-filer stöds som omslagsfil"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr "Endast jpg/jpeg-filer stöds som omslagsfil"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Väntar"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Misslyckades"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Startad"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Klar"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Okänd status"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "E-post: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Konvertera: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Överför: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Okänd uppgift: "
@@ -596,7 +602,7 @@ msgstr "Det gick inte att logga in med Google."
msgid "Failed to fetch user info from Google."
msgstr "Det gick inte att hämta användarinformation från Google."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "du är nu inloggad som: \"%(nickname)s\""
@@ -633,218 +639,218 @@ msgstr "GitHub Oauth-fel, försök igen senare."
msgid "Google Oauth error, please retry later."
msgstr "Google Oauth-fel, försök igen senare."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Ogiltig hylla specificerad"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Tyvärr får du inte lägga till en bok på hyllan: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "Boken är redan en del av hyllan: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Boken har lagts till i hyllan: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Du får inte lägga till en bok i hyllan: %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "Böcker är redan en del av hyllan: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "Böcker har lagts till hyllan: %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "Kunde inte lägga till böcker till hyllan: %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Boken har tagits bort från hyllan: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Tyvärr har du inte rätt att ta bort en bok från den här hyllan: %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Hyllan %(title)s skapad"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Det fanns ett fel"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "skapa en hylla"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Hyllan %(title)s ändrad"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Redigera en hylla"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Hylla: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Fel vid öppning av hyllan. Hylla finns inte eller är inte tillgänglig"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr "Dold bok"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Ändra ordning på hyllan: '%(name)s'"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Nyligen tillagda"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Visa senaste böcker"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Heta böcker"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Visa heta böcker"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Bäst rankade böcker"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Visa böcker med bästa betyg"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Lästa böcker"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Visa lästa och olästa"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Olästa böcker"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Visa olästa"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Upptäck"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Visa slumpmässiga böcker"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Kategorier"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Visa kategorival"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Serier"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Visa serieval"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Författare"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Visa författarval"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Förlag"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Visa urval av förlag"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Språk"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Visa språkval"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Betyg"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Visa val av betyg"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Filformat"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Visa val av filformat"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -877,220 +883,220 @@ msgstr "En ny uppdatering är tillgänglig. Klicka på knappen nedan för att up
msgid "Click on the button below to update to the latest stable version."
msgstr "Klicka på knappen nedan för att uppdatera till den senaste stabila versionen."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr ""
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr ""
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr ""
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Nyligen tillagda böcker"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Upptäck (slumpmässiga böcker)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "Böcker"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Heta böcker (mest hämtade)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Hoppsan! Vald boktitel är inte tillgänglig. Filen finns inte eller är inte tillgänglig"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Författare: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Förlag: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Serier: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Betyg: %(rating)s stars"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Filformat: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Kategori: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Språk: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Betygslista"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Lista över filformat"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Uppgifter"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Sök"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Publicerad efter "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Publicerad före "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Betyg <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Betyg >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "sök"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "Boken är i kö för att skicka till %(kindlemail)s"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "Det gick inte att skicka den här boken: %(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr "Konfigurera din kindle-e-postadress först..."
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "E-postservern är inte konfigurerad, kontakta din administratör!"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "registrera"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "Din e-post är inte tillåten att registrera"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Bekräftelsemail skickades till ditt e-postkonto."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Det här användarnamnet eller e-postadressen är redan i bruk."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "Det går inte att aktivera LDAP-autentisering"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr ""
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Fel användarnamn eller lösenord"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "Nytt lösenord skickades till din e-postadress"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Ange giltigt användarnamn för att återställa lösenordet"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Du är nu inloggad som: \"%(nickname)s\""
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "logga in"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Token hittades inte"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Token har löpt ut"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Lyckades! Vänligen återvänd till din enhet"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)ss profil"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Profilen uppdaterad"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Läs en bok"
diff --git a/cps/translations/tr/LC_MESSAGES/messages.mo b/cps/translations/tr/LC_MESSAGES/messages.mo
index b097b46b..433bf447 100644
Binary files a/cps/translations/tr/LC_MESSAGES/messages.mo and b/cps/translations/tr/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/tr/LC_MESSAGES/messages.po b/cps/translations/tr/LC_MESSAGES/messages.po
index a5c06811..b6ee8906 100644
--- a/cps/translations/tr/LC_MESSAGES/messages.po
+++ b/cps/translations/tr/LC_MESSAGES/messages.po
@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2020-04-23 22:47+0300\n"
"Last-Translator: iz \n"
"Language: tr\n"
@@ -46,9 +46,9 @@ msgstr ""
msgid "Unknown command"
msgstr ""
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Bilinmeyen"
@@ -61,7 +61,7 @@ msgstr "Yönetim sayfası"
msgid "UI Configuration"
msgstr "Arayüz Ayarları"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Calibre-Web yapılandırması güncellendi"
@@ -113,175 +113,181 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Temel Ayarlar"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Lütfen tüm alanları doldurun!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Yeni kullanıcı ekle"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr "E-posta izin verilen bir servisten değil"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr "Bu e-posta adresi veya kullanıcı adı için zaten bir hesap var."
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "'%(user)s' kullanıcısı oluşturuldu"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Kullanıcı '%(nick)s' silindi"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr "Başka yönetici kullanıcı olmadığından silinemedi"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr "Bu e-posta adresi için bir hesap mevcut."
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "%(nick)s kullanıcısını düzenle"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "Bu kullanıcı adı zaten alındı"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "'%(nick)s' kullanıcısı güncellendi"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Bilinmeyen bir hata oluştu."
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr ""
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "Deneme e-postası başarıyla %(kindlemail)s adresine gönderildi"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr "Deneme e-postası gönderilirken bir hata oluştu: %(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr "Lütfen önce e-posta adresinizi ayarlayın..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr "E-posta sunucusu ayarları güncellendi"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "%(user)s kullanıcısının şifresi sıfırlandı"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "Bilinmeyen bir hata oluştu. Lütfen daha sonra tekrar deneyiniz."
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Lütfen önce SMTP e-posta ayarlarını ayarlayın..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "Log dosyası görüntüleyici"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Güncelleme paketi isteniyor"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Güncelleme paketi indiriliyor"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Güncelleme paketi ayıklanıyor"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "Dosyalar değiştiriliyor"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "Veritabanı bağlantıları kapalı"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "Sunucu durduruyor"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Güncelleme tamamlandı, sayfayı yenilemek için lütfen Tamam'a tıklayınız"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "Güncelleme başarısız:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "HTTP Hatası"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "Bağlantı hatası"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "Bağlantı kurulmaya çalışırken zaman aşımına uğradı"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "Genel hata"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr ""
@@ -301,8 +307,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "eKitap açılırken hata oluştu. Dosya mevcut değil veya erişilemiyor"
@@ -310,82 +316,82 @@ msgstr "eKitap açılırken hata oluştu. Dosya mevcut değil veya erişilemiyor
msgid "edit metadata"
msgstr "metaveri düzenle"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s geçerli bir dil değil"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "'%(ext)s' uzantılı dosyaların bu sunucuya yüklenmesine izin verilmiyor"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Yüklenecek dosyanın mutlaka bir uzantısı olması gerekli"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "%(path)s dizini oluşturulamadı. (İzin reddedildi)"
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "%(file)s dosyası kaydedilemedi."
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "%(book)s kitabına %(ext)s dosya biçimi eklendi"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "Metaveri başarıyla güncellendi"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "eKitap düzenlenirken hata oluştu, detaylar için lütfen log dosyasını kontrol edin"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "%(filename)s dosyası geçici dizine kaydedilemedi"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr "Yüklenen eKitap muhtemelen kitaplıkta zaten var. Yenisini yüklemeden değiştirmeyi düşünün: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "%(file)s dosyası yüklendi"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "Dönüştürme için kaynak ya da hedef biçimi eksik"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr "eKitap %(book_format)s formatlarına dönüştürülmek üzere başarıyla sıraya alındı"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr "Bu eKitabı dönüştürürken bir hata oluştu: %(res)s"
@@ -499,71 +505,71 @@ msgstr "%(file)s dosyası Google Drive'da bulunamadı"
msgid "Book path %(path)s not found on Google Drive"
msgstr "eKitap yolu %(path)s Google Drive'da bulunamadı"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr ""
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr ""
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr ""
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "Bekleniyor"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "Başarısız"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "Başladı"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "Bitti"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "Bilinmeyen Durum"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr "e-Posta: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr "Dönüştür: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr "Yükle: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr "Bilinmeyen Görev: "
@@ -596,7 +602,7 @@ msgstr "Google ile giriş yapılamadı."
msgid "Failed to fetch user info from Google."
msgstr "Google'dan kullanıcı bilgileri alınamadı."
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "giriş yaptınız: '%(nickname)s'"
@@ -633,218 +639,218 @@ msgstr "GitHub Oauth hatası, lütfen tekrar deneyin."
msgid "Google Oauth error, please retry later."
msgstr "Google Oauth hatası, lütfen tekrar deneyin."
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "Geçersiz kitaplık seçildi"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "Maalesef bu kitaplığa eKitap eklemenize izin verilmiyor: %(shelfname)s"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "eKitap zaten bu kitaplıkta bulunuyor: %(shelfname)s"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "eKitap kitaplığa eklendi: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "Bu kitaplığa eKitap eklemenize izin verilmiyor: %(name)s"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "eKitaplar zaten bu kitaplıkta bulunuyor: %(name)s"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr "eKitaplar kitaplığa eklendi: %(sname)s"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr "eKitaplar kitaplığa eklenemedi: %(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "eKitap kitaplıktan silindi: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Maalesef bu kitaplıktan eKitap silmenize izin verilmiyor: %(sname)s"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "%(title)s kitaplığı oluşturuldu."
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Bir hata oluştu"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "Kitaplık oluştur"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "%(title)s kitaplığı değiştirildi"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Kitaplığı düzenle"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Kitaplık: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Kitaplık açılırken hata oluştu. Kitaplık mevcut değil ya da erişilebilir değil"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr ""
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Kitaplık sıralamasını değiştir: '%(name)s'"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Yeni"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Son eKitapları göster"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Popüler"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr ""
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr ""
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr ""
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Okunanlar"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Okunan ve okunmayanları göster"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Okunmamışlar"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "Okunmamışları göster"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Keşfet"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Rastgele eKitap göster"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Kategoriler"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Kategori seçimini göster"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Seriler"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Seri seçimini göster"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Yazarlar"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Yazar seçimini göster"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "Yayıncılar"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "Yayıncı seçimini göster"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Diller"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Dil seçimini göster"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "Değerlendirmeler"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "Değerlendirme seçimini göster"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "Biçimler"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "Dosya biçimi seçimini göster"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -877,220 +883,220 @@ msgstr "Yeni bir güncelleme mevcut. Son sürüme güncellemek için aşağıdak
msgid "Click on the button below to update to the latest stable version."
msgstr "Son kararlı sürüme güncellemek için aşağıdaki düğmeye tıklayın."
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr ""
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr ""
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr ""
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Yeni Eklenen eKitaplar"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Keşfet (Rastgele)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr "eKitaplar"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr ""
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr ""
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr "Yazar: %(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr "Yayınevi: %(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Seri: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr "Değerlendirme: %(rating)s yıldız"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr "Biçim: %(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Kategori: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Dil: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "Değerlendirme listesi"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "Biçim listesi"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr "Görevler"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Ara"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr "Yayınlanma (sonra)"
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Yayınlanma (önce)"
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "Değerlendirme <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "Değerlendirme >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "ara"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr "%(kindlemail)s'a gönderilmek üzere başarıyla sıraya alındı"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr ""
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr ""
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr "E-Posta sunucusu ayarlanmadı, lütfen yöneticinizle iletişime geçin!"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "kaydol"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr "E-posta adresinizle kaydolunmasına izin verilmiyor"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "Onay e-Postası hesabınıza gönderildi."
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr "Kullanıcı adı ya da e-Posta adresi zaten kullanımda."
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "LDAP Kimlik Doğrulaması etkinleştirilemiyor"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr ""
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Yanlış Kullanıcı adı ya da Şifre"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "Yeni şifre e-Posta adresinize gönderildi"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "Şifrenizi sıfırlayabilmek için lütfen geçerli bir kullanıcı adı giriniz"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr "Giriş yaptınız: '%(nickname)s'"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "giriş"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Token bulunamadı"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Token süresi doldu"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Başarılı! Lütfen cihazınıza dönün"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s Profili"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Profil güncellendi"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Kitap Oku"
diff --git a/cps/translations/uk/LC_MESSAGES/messages.mo b/cps/translations/uk/LC_MESSAGES/messages.mo
index 81ee7eee..cb7a81c9 100644
Binary files a/cps/translations/uk/LC_MESSAGES/messages.mo and b/cps/translations/uk/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/uk/LC_MESSAGES/messages.po b/cps/translations/uk/LC_MESSAGES/messages.po
index 933343ef..41c448b2 100644
--- a/cps/translations/uk/LC_MESSAGES/messages.po
+++ b/cps/translations/uk/LC_MESSAGES/messages.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: 2017-04-30 00:47+0300\n"
"Last-Translator: ABIS Team \n"
"Language: uk\n"
@@ -45,9 +45,9 @@ msgstr ""
msgid "Unknown command"
msgstr ""
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "Невідомий"
@@ -60,7 +60,7 @@ msgstr "Сторінка адміністратора"
msgid "UI Configuration"
msgstr "Конфігурація інтерфейсу"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr ""
@@ -112,175 +112,181 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "Настройки сервера"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr "Будь-ласка, заповніть всі поля!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "Додати користувача"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr ""
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr ""
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr "Користувач '%(user)s' додан"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Користувача '%(nick)s' видалено"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr ""
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr ""
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "Змінити користувача %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr ""
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Користувача '%(nick)s' оновлено"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "Сталась невідома помилка"
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr "Змінити налаштування SMTP"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr ""
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr ""
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr ""
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr ""
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr ""
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr ""
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr "Будь-ласка, спочатку сконфігуруйте параметри SMTP"
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr ""
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "Перевірка оновлень"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "Завантаження оновлень"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "Розпакування оновлення"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr ""
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "З'єднання з базою даних закрите"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr ""
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr "Оновлення встановлені, натисніть ok і перезавантажте сторінку"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr ""
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr ""
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr ""
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr ""
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr ""
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr ""
@@ -300,8 +306,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "Сталась помилка при відкриванні eBook. Файл не існує або відсутній доступ до нього"
@@ -309,82 +315,82 @@ msgstr "Сталась помилка при відкриванні eBook. Фа
msgid "edit metadata"
msgstr "змінити метадані"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr ""
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr ""
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr "Завантажувальний файл повинен мати розширення"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr ""
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr ""
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr ""
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr ""
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr "Сталась помилка при редагуванні книги. Будь-ласка, перевірте лог-файл для деталей"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr ""
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr ""
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr ""
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr ""
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr ""
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr ""
@@ -498,71 +504,71 @@ msgstr ""
msgid "Book path %(path)s not found on Google Drive"
msgstr ""
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr ""
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr ""
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr ""
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr ""
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr ""
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr ""
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr ""
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr ""
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr ""
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr ""
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr ""
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr ""
@@ -595,7 +601,7 @@ msgstr ""
msgid "Failed to fetch user info from Google."
msgstr ""
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Ви увійшли як користувач: '%(nickname)s'"
@@ -632,218 +638,218 @@ msgstr ""
msgid "Google Oauth error, please retry later."
msgstr ""
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr ""
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr ""
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr ""
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Книга додана на книжкову полицю: %(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr ""
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr ""
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr ""
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr ""
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Книга видалена з книжкової полиці: %(sname)s"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "Вибачте, але у вас немає дозволу для видалення книги з цієї полиці"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr "Створена книжкова полиця %(title)s"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "Сталась помилка"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "створити книжкову полицю"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Книжкова полиця %(title)s змінена"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "Змінити книжкову полицю"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Книжкова полиця: '%(name)s'"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Помилка при відкриванні полиці. Полиця не існує або до неї відсутній доступ"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr ""
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Змінити розташування книжкової полиці '%(name)s'"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "Останні додані"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "Показувати останні книги"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "Популярні книги"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "Показувати популярні книги"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "Книги з найкращим рейтингом"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "Показувати книги з найвищим рейтингом"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "Прочитані книги"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr "Показувати прочитані та непрочитані книги"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "Непрочитані книги"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr ""
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "Огляд"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "Показувати випадкові книги"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "Категорії"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "Показувати вибір категорії"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "Серії"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "Показувати вибір серії"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "Автори"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "Показувати вибір автора"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr ""
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr ""
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "Мови"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "Показувати вибір мови"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr ""
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr ""
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr ""
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr ""
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -876,220 +882,220 @@ msgstr ""
msgid "Click on the button below to update to the latest stable version."
msgstr ""
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr ""
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr ""
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr ""
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "Нещодавно додані книги"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "Огляд (випадкові книги)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr ""
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "Популярні книги (найбільш завантажувані)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr "Неможливо відкрити книгу. Файл не існує або немає доступу."
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr ""
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr ""
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr "Серії: %(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr ""
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr ""
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr "Категорія: %(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr "Мова: %(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr ""
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr ""
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr ""
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "Пошук"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr ""
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr "Опубліковано до"
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr ""
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr ""
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "пошук"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr ""
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr "Помилка при відправці книги: %(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr ""
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr ""
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "зареєструватись"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr ""
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr ""
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr ""
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr ""
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr ""
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "Помилка в імені користувача або паролі"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr ""
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr ""
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr ""
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "увійти"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "Токен не знайдено"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Час дії токено вичерпано"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "Вдалося! Будь-ласка, поверніться до вашого пристрою"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr "Профіль %(name)s"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "Профіль оновлено"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "Читати книгу"
diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo
index da7ed62e..3c7de466 100644
Binary files a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo and b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo differ
diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
index 16091a54..76b99287 100644
--- a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
+++ b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po
@@ -6,11 +6,11 @@
msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
-"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
-"POT-Creation-Date: 2020-06-07 06:47+0200\n"
-"PO-Revision-Date: 2017-01-06 17:00+0000\n"
+"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
+"PO-Revision-Date: 2020-06-20 19:06+0800\n"
"Last-Translator: dalin \n"
-"Language: zh_Hans_CN\n"
+"Language: zh_CN\n"
"Language-Team: zh_Hans_CN \n"
"Plural-Forms: nplurals=1; plural=0\n"
"MIME-Version: 1.0\n"
@@ -40,15 +40,15 @@ msgstr "正在关闭服务器,请关闭窗口"
#: cps/admin.py:103
msgid "Reconnect successful"
-msgstr ""
+msgstr "重新连接成功"
#: cps/admin.py:106
msgid "Unknown command"
-msgstr ""
+msgstr "未知命令"
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr "未知"
@@ -61,248 +61,254 @@ msgstr "管理页"
msgid "UI Configuration"
msgstr "UI配置"
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr "Calibre-Web配置已更新"
#: cps/admin.py:434 cps/admin.py:440 cps/admin.py:451 cps/admin.py:462
#: cps/templates/modal_restriction.html:29
msgid "Deny"
-msgstr "限制"
+msgstr "隐藏"
#: cps/admin.py:436 cps/admin.py:442 cps/admin.py:453 cps/admin.py:464
#: cps/templates/modal_restriction.html:28
msgid "Allow"
-msgstr "允许"
+msgstr "显示"
#: cps/admin.py:510
msgid "client_secrets.json Is Not Configured For Web Application"
-msgstr ""
+msgstr "client_secrets.json 未为 Web 应用程序配置"
#: cps/admin.py:549
msgid "Logfile Location is not Valid, Please Enter Correct Path"
-msgstr ""
+msgstr "日志文件路径无效,请输入正确的路径"
#: cps/admin.py:554
msgid "Access Logfile Location is not Valid, Please Enter Correct Path"
-msgstr ""
+msgstr "访问日志路径无效,请输入正确的路径"
#: cps/admin.py:580
msgid "Please Enter a LDAP Provider, Port, DN and User Object Identifier"
-msgstr ""
+msgstr "请输入LDAP主机、端口、DN和用户对象标识符"
#: cps/admin.py:593
#, python-format
msgid "LDAP Group Object Filter Needs to Have One \"%s\" Format Identifier"
-msgstr ""
+msgstr "LDAP组对象过滤器需要一个具有“%s”格式标识符"
#: cps/admin.py:596
msgid "LDAP Group Object Filter Has Unmatched Parenthesis"
-msgstr ""
+msgstr "LDAP组对象过滤器的括号不匹配"
#: cps/admin.py:600
#, python-format
msgid "LDAP User Object Filter needs to Have One \"%s\" Format Identifier"
-msgstr ""
+msgstr "LDAP用户对象过滤器需要一个具有“%s”格式标识符"
#: cps/admin.py:603
msgid "LDAP User Object Filter Has Unmatched Parenthesis"
-msgstr ""
+msgstr "LDAP用户对象过滤器的括号不匹配"
#: cps/admin.py:607
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
-msgstr ""
+msgstr "LDAP证书路径无效,请输入正确的路径"
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
-msgstr ""
+msgstr "密钥文件路径无效,请输入正确的路径"
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
+msgstr "证书文件路径无效,请输入正确的路径"
+
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
-msgstr ""
+msgstr "数据库路径无效,请输入正确的路径"
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
-msgstr ""
+msgstr "数据库不可写入"
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr "基本配置"
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
-msgstr "请填写所有字段"
+msgstr "请填写所有字段!"
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr "添加新用户"
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
-msgstr "邮箱不在有效域中'"
+msgstr "邮箱不在有效域中"
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
-msgstr "此邮箱或昵称的账号已经存在。"
+msgstr "此邮箱或用户名的账号已经存在。"
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
-msgstr "用户 '%(user)s' 已被创建"
+msgstr "用户“%(user)s”已创建"
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
-msgstr "用户 '%(nick)s' 已被删除"
+msgstr "用户“%(nick)s”已删除"
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
-msgstr "admin账户不存在,无法删除用户"
+msgstr "管理员账户不存在,无法删除用户"
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
-msgstr ""
+msgstr "理员账户不存在,无法删除管理员角色"
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
-msgstr "找到一个已有账号使用这个邮箱。"
+msgstr "此邮箱的账号已经存在。"
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr "编辑用户 %(nick)s"
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr "此用户名已被使用"
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
-msgstr "用户 '%(nick)s' 已被更新"
+msgstr "用户“%(nick)s”已更新"
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr "发生未知错误。"
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
-msgstr "修改SMTP设置"
+msgstr "编辑邮件服务器设置"
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr "测试邮件已经被成功发到 %(kindlemail)s"
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
-msgstr "发送测试邮件出错了: %(res)s"
+msgstr "发送测试邮件时出错:%(res)s"
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
-msgstr "请先配置有效的邮箱地址..."
+msgstr "请先配置您的邮箱地址..."
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
-msgstr "已更新邮件服务器设置"
+msgstr "邮件服务器设置已更新"
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
-msgstr ""
+msgstr "找不到用户"
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr "用户 %(user)s 的密码已重置"
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr "发生一个未知错误,请稍后再试。"
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
-msgstr "请先配置SMTP邮箱..."
+msgstr "请先配置SMTP邮箱设置..."
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr "日志文件查看器"
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr "正在请求更新包"
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr "正在下载更新包"
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr "正在解压更新包"
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr "正在替换文件"
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr "数据库连接已关闭"
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr "正在停止服务器"
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
-msgstr "更新完成,请按确定并刷新页面"
+msgstr "更新完成,请点击确定并刷新页面"
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr "更新失败:"
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr "HTTP错误"
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr "连接错误"
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr "建立连接超时"
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr "一般错误"
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
-msgstr ""
+msgstr "更新文件无法保存在临时目录中"
#: cps/converter.py:32
msgid "not configured"
-msgstr "配置为空"
+msgstr "未配置"
#: cps/converter.py:34
msgid "Execution permissions missing"
-msgstr ""
+msgstr "缺少执行权限"
#: cps/editbooks.py:242
msgid "Book Format Successfully Deleted"
-msgstr ""
+msgstr "书籍格式已成功删除"
#: cps/editbooks.py:245
msgid "Book Successfully Deleted"
-msgstr ""
+msgstr "书籍已成功删除"
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "打开电子书出错。文件不存在或不可访问"
@@ -310,89 +316,89 @@ msgstr "打开电子书出错。文件不存在或不可访问"
msgid "edit metadata"
msgstr "编辑元数据"
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr "%(langname)s 不是一种有效语言"
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
-msgstr "不能上传后缀为 '%(ext)s' 的文件到此服务器"
+msgstr "不能上传文件扩展名为“%(ext)s”的文件到此服务器"
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
-msgstr "要上传的文件必须有一个后缀"
+msgstr "要上传的文件必须具有扩展名"
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr "创建路径 %(path)s 失败(权限拒绝)。"
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr "保存文件 %(file)s 失败。"
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
-msgstr ""
+msgstr "数据库错误:%(error)s。"
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr "已添加 %(ext)s 格式到 %(book)s"
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr "已成功更新元数据"
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
-msgstr "编辑书籍出错,详情请检查日志文件"
+msgstr "编辑书籍出错,请检查日志文件以获取详细信息"
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr "文件 %(filename)s 无法保存到临时目录"
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
-msgstr "上传的书籍可能已经存在,建议修改后重新上传:"
+msgstr "上传的书籍可能已经存在,建议修改后重新上传: "
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
-msgstr ""
+msgstr "移动文件失败 %(file)s:%(error)s"
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
-msgstr ""
+msgstr "移动封面文件失败 %(file)s:%(error)s"
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr "文件 %(file)s 已上传"
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr "转换的源或目的格式缺失"
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
-msgstr "书籍已经被成功加入 %(book_format)s 的转换队列"
+msgstr "书籍已经被成功加入到 %(book_format)s 格式转换队列"
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
-msgstr "转换此书时出现错误: %(res)s"
+msgstr "转换此书籍时出现错误: %(res)s"
#: cps/gdrive.py:61
msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again"
-msgstr "Google Drive 没有完成,试试重新关闭Google Drive再开启"
+msgstr "Google Drive 设置未完成,请尝试停用并再次激活Google云端硬盘"
#: cps/gdrive.py:103
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
@@ -401,7 +407,7 @@ msgstr "回调域名尚未被校验,请在google开发者控制台按步骤校
#: cps/helper.py:79
#, python-format
msgid "%(format)s format not found for book id: %(book)d"
-msgstr "找不到id为 %(book)d 的书的 %(format)s 格式"
+msgstr "找不到id为 %(book)d 的书籍的 %(format)s 格式"
#: cps/helper.py:91
#, python-format
@@ -415,12 +421,12 @@ msgstr "发送到Kindle"
#: cps/helper.py:99 cps/helper.py:117 cps/helper.py:228
msgid "This e-mail has been sent via Calibre-Web."
-msgstr "此邮件已经通过Calibre-Web发送"
+msgstr "此邮件已经通过Calibre-Web发送。"
#: cps/helper.py:110
#, python-format
msgid "%(format)s not found: %(fn)s"
-msgstr "找不到 %(format)s: %(fn)s"
+msgstr "找不到 %(format)s:%(fn)s"
#: cps/helper.py:115
msgid "Calibre-Web test e-mail"
@@ -437,7 +443,7 @@ msgstr "开启Calibre-Web之旅"
#: cps/helper.py:134
#, python-format
msgid "Registration e-mail for user: %(name)s"
-msgstr "用户 %(name)s 的注册邮箱"
+msgstr "用户注册电子邮件:%(name)s"
#: cps/helper.py:151 cps/helper.py:155 cps/helper.py:159 cps/helper.py:168
#: cps/helper.py:172 cps/helper.py:176
@@ -453,41 +459,41 @@ msgstr "转换 %(orig)s 到 %(format)s 并发送到Kindle"
#: cps/helper.py:228
#, python-format
msgid "E-mail: %(book)s"
-msgstr ""
+msgstr "邮件:%(book)s"
#: cps/helper.py:230
msgid "The requested file could not be read. Maybe wrong permissions?"
-msgstr "无法读取请求的文件。 可能有错误的权限设置?"
+msgstr "无法读取请求的文件。可能有错误的权限设置?"
#: cps/helper.py:300
#, python-format
msgid "Deleting book %(id)s failed, path has subfolders: %(path)s"
-msgstr ""
+msgstr "删除书籍 %(id)s失败,路径包含子文件夹:%(path)s"
#: cps/helper.py:310
#, python-format
msgid "Deleting book %(id)s failed: %(message)s"
-msgstr ""
+msgstr "删除书籍 %(id)s失败:%(message)s"
#: cps/helper.py:320
#, python-format
msgid "Deleting book %(id)s, book path not valid: %(path)s"
-msgstr ""
+msgstr "删除书籍 %(id)s失败,书籍路径无效:%(path)s"
#: cps/helper.py:355
#, python-format
msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
-msgstr "将标题从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s"
+msgstr "将标题从“%(src)s”改为“%(dest)s”时失败,出错信息:%(error)s"
#: cps/helper.py:365
#, python-format
msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
-msgstr "将作者从'%(src)s'改为'%(dest)s'时失败,出错信息: %(error)s"
+msgstr "将作者从“%(src)s”改为“%(dest)s”时失败,出错信息:%(error)s"
#: cps/helper.py:379
#, python-format
msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s"
-msgstr "从 '%(src)s' 重命名为 '%(dest)s' 失败,报错信息: %(error)s"
+msgstr "从“%(src)s”重命名为“%(dest)s”失败,出错信息:%(error)s"
#: cps/helper.py:405 cps/helper.py:415 cps/helper.py:423
#, python-format
@@ -499,81 +505,81 @@ msgstr "Google Drive上找不到文件 %(file)s"
msgid "Book path %(path)s not found on Google Drive"
msgstr "Google Drive上找不到书籍路径 %(path)s"
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
-msgstr ""
+msgstr "下载封面时出错"
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
-msgstr ""
+msgstr "封面格式出错"
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
-msgstr ""
+msgstr "创建封面路径失败"
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
-msgstr ""
+msgstr "封面文件不是有效的图片文件,或者无法存储"
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
-msgstr ""
+msgstr "仅将jpg、jpeg、png、webp文件作为封面文件"
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
-msgstr ""
+msgstr "仅将jpg、jpeg文件作为封面文件"
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
-msgstr ""
+msgstr "找不到Unrar执行文件"
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
-msgstr ""
+msgstr "执行UnRar时出错"
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr "等待中"
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr "失败"
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr "已开始"
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr "已完成"
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr "未知状态"
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
-msgstr ""
+msgstr "邮件: "
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
-msgstr "转换:"
+msgstr "转换: "
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
-msgstr "上传:"
+msgstr "上传: "
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
-msgstr "未知任务:"
+msgstr "未知任务: "
#: cps/kobo_auth.py:130
msgid "PLease access calibre-web from non localhost to get valid api_endpoint for kobo device"
-msgstr "请不要使用localhost访问calibre-web,以便kobo设备能获取有效的api_endpoint"
+msgstr "请不要使用localhost访问Calibre-Web,以便Kobo设备能获取有效的api_endpoint"
#: cps/kobo_auth.py:133 cps/kobo_auth.py:153
msgid "Kobo Setup"
-msgstr ""
+msgstr "Kobo 设置"
#: cps/oauth_bb.py:73
#, python-format
@@ -596,34 +602,34 @@ msgstr "使用Google登录失败。"
msgid "Failed to fetch user info from Google."
msgstr "从Google获取用户信息失败。"
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
-msgstr "您现在已以'%(nickname)s'身份登录"
+msgstr "您现在已以“%(nickname)s”身份登录"
#: cps/oauth_bb.py:235
#, python-format
msgid "Link to %(oauth)s Succeeded"
-msgstr ""
+msgstr "链接到%(oauth)s成功"
#: cps/oauth_bb.py:241
msgid "Login failed, No User Linked With OAuth Account"
-msgstr ""
+msgstr "登录失败,没有用户与OAuth帐户关联"
#: cps/oauth_bb.py:283
#, python-format
msgid "Unlink to %(oauth)s Succeeded"
-msgstr ""
+msgstr "取消链接到%(oauth)s成功"
#: cps/oauth_bb.py:287
#, python-format
msgid "Unlink to %(oauth)s Failed"
-msgstr ""
+msgstr "取消链接到%(oauth)s失败"
#: cps/oauth_bb.py:290
#, python-format
msgid "Not Linked to %(oauth)s."
-msgstr ""
+msgstr "未链接到%(oauth)s。"
#: cps/oauth_bb.py:318
msgid "GitHub Oauth error, please retry later."
@@ -633,232 +639,232 @@ msgstr "GitHub Oauth 错误,请重试。"
msgid "Google Oauth error, please retry later."
msgstr "Google Oauth 错误,请重试。"
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr "指定的书架无效"
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr "对不起,您没有添加书籍到书架 %(shelfname)s 的权限"
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
-msgstr "此书已经是书架 %(shelfname)s 的一部分"
+msgstr "此书籍已经是书架 %(shelfname)s 的一部分"
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
-msgstr "此书已被添加到书架: %(sname)s"
+msgstr "此书籍已被添加到书架:%(sname)s"
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "您没有添加书籍到书架 %(name)s 的权限"
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr "书籍已经在书架 %(name)s 中了"
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
-msgstr "书籍已经被添加到书架 %(sname)s 中'"
+msgstr "书籍已经被添加到书架 %(sname)s 中"
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
-msgstr "无法添加书籍到书架: %(sname)s"
+msgstr "无法添加书籍到书架:%(sname)s"
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "此书已从书架 %(sname)s 中删除"
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "对不起,您没有从书架 %(sname)s 中删除书籍的权限"
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
-msgstr ""
+msgstr "公共书架:%(title)s已经存在已经存在。"
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
-msgstr ""
+msgstr "私有书架:%(title)s已经存在已经存在。"
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
-msgstr "书架 %(title)s 已被创建"
+msgstr "书架 %(title)s 已创建"
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr "发生错误"
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr "创建书架"
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
-msgstr "书架 %(title)s 已被修改"
+msgstr "书架 %(title)s 已修改"
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr "编辑书架"
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
-msgstr "书架: '%(name)s'"
+msgstr "书架:%(name)s"
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "打开书架出错。书架不存在或不可访问"
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr "隐藏书籍"
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
-msgstr "修改书架 '%(name)s' 顺序"
+msgstr "修改书架 %(name)s 顺序"
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr "最近添加"
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr "显示最近书籍"
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr "热门书籍"
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr "显示热门书籍"
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr "最高评分书籍"
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr "显示最高评分书籍"
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr "已读书籍"
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
-msgstr "显示已读和未读"
+msgstr "显示阅读状态"
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr "未读书籍"
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr "显示未读"
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr "发现"
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr "显示随机书籍"
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr "分类"
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr "显示分类选择"
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr "丛书"
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr "显示丛书选择"
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr "作者"
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr "显示作者选择"
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr "出版社"
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr "显示出版社选择"
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr "语言"
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr "显示语言选择"
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr "评分"
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr "显示评分选择"
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr "文件格式"
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr "显示文件格式选择"
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
-msgstr ""
+msgstr "归档书籍"
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
-msgstr ""
+msgstr "显示归档书籍"
#: cps/updater.py:294 cps/updater.py:305 cps/updater.py:406 cps/updater.py:420
msgid "Unexpected data while reading update information"
-msgstr "读取更新信息时出现异常数据"
+msgstr "读取更新信息时出现意外数据"
#: cps/updater.py:301 cps/updater.py:412
msgid "No update available. You already have the latest version installed"
-msgstr "没有可用更新。您已经安装了最新版本"
+msgstr "无可用更新。您已经安装了最新版本"
#: cps/updater.py:333
msgid "A new update is available. Click on the button below to update to the latest version."
-msgstr "有一个更新可用。点击正文按钮更新到最新版本。"
+msgstr "有新的更新。单击下面的按钮以更新到最新版本。"
#: cps/updater.py:385
msgid "Could not fetch update information"
@@ -866,238 +872,238 @@ msgstr "无法获取更新信息"
#: cps/updater.py:399
msgid "No release information available"
-msgstr "没有可用发布信息"
+msgstr "无可用发布信息"
#: cps/updater.py:456 cps/updater.py:467 cps/updater.py:486
#, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s"
-msgstr "一个新的更新可用。点击下面按钮更新到版本: %(version)s"
+msgstr "有新的更新。单击下面的按钮以更新到版本: %(version)s"
#: cps/updater.py:477
msgid "Click on the button below to update to the latest stable version."
msgstr "点击下面按钮更新到最新稳定版本。"
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
-msgstr ""
+msgstr "错误:%(ldaperror)s"
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
-msgstr ""
+msgstr "错误:在LDAP服务器的响应中没有返回用户"
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
-msgstr ""
+msgstr "创建至少一个LDAP用户失败"
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
-msgstr ""
+msgstr "数据库中没有找到至少一个LDAP用户"
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
-msgstr ""
+msgstr "用户成功导入"
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr "最近添加的书籍"
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr "发现(随机书籍)"
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
-msgstr ""
+msgstr "书籍"
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr "热门书籍(最多下载)"
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
-msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
+msgstr "糟糕!选择书名无法打开。文件不存在或者文件不可访问"
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
-msgstr "作者: %(name)s"
+msgstr "作者:%(name)s"
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
-msgstr "出版社: %(name)s"
+msgstr "出版社:%(name)s"
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
-msgstr "丛书: %(serie)s"
+msgstr "丛书:%(serie)s"
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
-msgstr "评分: %(rating)s 星"
+msgstr "评分:%(rating)s 星"
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
-msgstr "文件格式: %(format)s"
+msgstr "文件格式:%(format)s"
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
-msgstr "分类: %(name)s"
+msgstr "分类:%(name)s"
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
-msgstr "语言: %(name)s"
+msgstr "语言:%(name)s"
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr "评分列表"
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr "文件格式列表"
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
-msgstr "任务"
+msgstr "任务列表"
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr "搜索"
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
-msgstr "出版时晚于 "
+msgstr "出版时间晚于 "
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
-msgstr "出版时早于 "
+msgstr "出版时间早于 "
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr "评分 <= %(rating)s"
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr "评分 >= %(rating)s"
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr "搜索"
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
-msgstr ""
+msgstr "自定义列号:%(column)d在Calibre数据库中不存在"
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
-msgstr "书籍已经被成功加入 %(kindlemail)s 的发送队列"
+msgstr "书籍已经成功加入 %(kindlemail)s 的发送队列"
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
-msgstr "发送这本书的时候出现错误: %(res)s"
+msgstr "糟糕!发送这本书籍的时候出现错误:%(res)s"
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
-msgstr "请先配置您的kindle邮箱..."
+msgstr "请先配置您的kindle邮箱。"
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
-msgstr "邮件服务未配置,请联系网站管理员"
+msgstr "邮件服务未配置,请联系网站管理员!"
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr "注册"
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
-msgstr "您的邮箱不能用来注册"
+msgstr "您的电子邮件不允许注册"
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr "确认邮件已经发送到您的邮箱。"
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
-msgstr "这个用户名或者邮箱已经被使用。"
+msgstr "这个用户名或者邮箱已被使用。"
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr "无法激活LDAP认证"
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
-msgstr ""
+msgstr "后备登录“%(nickname)s”:无法访问LDAP服务器,或用户未知"
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
-msgstr ""
+msgstr "无法登录:%(message)s"
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr "用户名或密码错误"
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr "新密码已发送到您的邮箱"
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr "请输入有效的用户名进行密码重置"
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
-msgstr "您已以 '%(nickname)s' 登录"
+msgstr "您现在已以“%(nickname)s”登录"
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr "登录"
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr "找不到Token"
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr "Token已过期"
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr "成功!请返回您的设备"
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
-msgstr "%(name)s 的资料"
+msgstr "%(name)s 的用户配置"
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr "资料已更新"
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr "阅读一本书"
#: cps/worker.py:313
#, python-format
msgid "Calibre ebook-convert %(tool)s not found"
-msgstr ""
+msgstr "Calibre 电子书转换器%(tool)s没有发现"
#: cps/worker.py:373
#, python-format
@@ -1107,12 +1113,12 @@ msgstr "电子书转换器失败: %(error)s"
#: cps/worker.py:406
#, python-format
msgid "Kepubify-converter failed: %(error)s"
-msgstr ""
+msgstr "Kepubify 转换失败:%(error)s"
#: cps/worker.py:430
#, python-format
msgid "Converted file not found or more than one file in folder %(folder)s"
-msgstr ""
+msgstr "找不到转换后的文件或文件夹%(folder)s中有多个文件"
#: cps/templates/admin.html:9
msgid "Users"
@@ -1122,65 +1128,65 @@ msgstr "用户列表"
#: cps/templates/login.html:9 cps/templates/register.html:8
#: cps/templates/user_edit.html:9
msgid "Username"
-msgstr "昵称"
+msgstr "用户名"
#: cps/templates/admin.html:13 cps/templates/register.html:13
#: cps/templates/user_edit.html:14
msgid "E-mail Address"
-msgstr "邮箱"
+msgstr "邮箱地址"
#: cps/templates/admin.html:14 cps/templates/user_edit.html:27
msgid "Send to Kindle E-mail Address"
-msgstr "Send to Kindle邮箱"
+msgstr "接收书籍的Kindle邮箱地址"
#: cps/templates/admin.html:15
msgid "Downloads"
-msgstr "下载量"
+msgstr "下载次数"
#: cps/templates/admin.html:16 cps/templates/layout.html:77
msgid "Admin"
-msgstr "管理"
+msgstr "管理权限"
#: cps/templates/admin.html:17 cps/templates/login.html:12
#: cps/templates/login.html:13 cps/templates/user_edit.html:22
msgid "Password"
-msgstr "密码"
+msgstr "有无密码"
#: cps/templates/admin.html:18 cps/templates/layout.html:66
msgid "Upload"
-msgstr "上传"
+msgstr "上传书籍"
#: cps/templates/admin.html:19 cps/templates/detail.html:18
#: cps/templates/detail.html:27 cps/templates/shelf.html:6
#: cps/templates/shelfdown.html:62
msgid "Download"
-msgstr "下载"
+msgstr "下载书籍"
#: cps/templates/admin.html:20
msgid "View Books"
-msgstr "查看电子书"
+msgstr "查看书籍"
#: cps/templates/admin.html:21
msgid "Edit"
-msgstr "编辑"
+msgstr "编辑书籍"
#: cps/templates/admin.html:22 cps/templates/book_edit.html:16
#: cps/templates/book_edit.html:216 cps/templates/email_edit.html:100
#: cps/templates/user_edit.html:66 cps/templates/user_edit.html:179
msgid "Delete"
-msgstr "删除"
+msgstr "删除数据"
#: cps/templates/admin.html:23
msgid "Public Shelf"
-msgstr ""
+msgstr "公共书架"
#: cps/templates/admin.html:44
msgid "Add New User"
-msgstr "新建用户"
+msgstr "添加新用户"
#: cps/templates/admin.html:46 cps/templates/admin.html:47
msgid "Import LDAP Users"
-msgstr ""
+msgstr "导入LDAP用户"
#: cps/templates/admin.html:54
msgid "E-mail Server Settings"
@@ -1188,7 +1194,7 @@ msgstr "SMTP邮件服务器设置"
#: cps/templates/admin.html:57 cps/templates/email_edit.html:11
msgid "SMTP Hostname"
-msgstr "SMTP地址"
+msgstr "SMTP主机名"
#: cps/templates/admin.html:58 cps/templates/email_edit.html:15
msgid "SMTP Port"
@@ -1204,7 +1210,7 @@ msgstr "SMTP用户名"
#: cps/templates/admin.html:61 cps/templates/email_edit.html:35
msgid "From E-mail"
-msgstr "来自邮箱"
+msgstr "发件人邮箱"
#: cps/templates/admin.html:77
msgid "Configuration"
@@ -1212,7 +1218,7 @@ msgstr "配置"
#: cps/templates/admin.html:80
msgid "Calibre Database Directory"
-msgstr "Calibre DB目录"
+msgstr "Calibre 数据库路径"
#: cps/templates/admin.html:84 cps/templates/config_edit.html:129
msgid "Log Level"
@@ -1240,7 +1246,7 @@ msgstr "开放注册"
#: cps/templates/admin.html:110
msgid "Magic Link Remote Login"
-msgstr "远程登录"
+msgstr "魔法链接远程登录"
#: cps/templates/admin.html:114
msgid "Reverse Proxy Login"
@@ -1248,15 +1254,15 @@ msgstr "反向代理登录"
#: cps/templates/admin.html:119
msgid "Reverse proxy header name"
-msgstr "反向代理header name"
+msgstr "反向代理头部名称"
#: cps/templates/admin.html:124
msgid "Edit Basic Configuration"
-msgstr "修改基本配置"
+msgstr "编辑基本配置"
#: cps/templates/admin.html:125
msgid "Edit UI Configuration"
-msgstr "修改界面配置"
+msgstr "编辑界面配置"
#: cps/templates/admin.html:131
msgid "Administration"
@@ -1272,11 +1278,11 @@ msgstr "重新连接到Calibre数据库"
#: cps/templates/admin.html:134
msgid "Restart"
-msgstr "重启 Calibre-Web"
+msgstr "重启"
#: cps/templates/admin.html:135
msgid "Shutdown"
-msgstr "停止 Calibre-Web"
+msgstr "停止"
#: cps/templates/admin.html:141
msgid "Update"
@@ -1304,7 +1310,7 @@ msgstr "执行更新"
#: cps/templates/admin.html:171
msgid "Are you sure you want to restart?"
-msgstr "您确定要重启 Calibre-Web 吗?"
+msgstr "您确定要重启吗?"
#: cps/templates/admin.html:176 cps/templates/admin.html:190
#: cps/templates/admin.html:210 cps/templates/shelf.html:72
@@ -1322,7 +1328,7 @@ msgstr "取消"
#: cps/templates/admin.html:189
msgid "Are you sure you want to shutdown?"
-msgstr "您确定要关闭 Calibre-Web 吗?"
+msgstr "您确定要关闭吗?"
#: cps/templates/admin.html:201
msgid "Updating, please do not reload this page"
@@ -1330,11 +1336,11 @@ msgstr "正在更新,请不要刷新页面"
#: cps/templates/author.html:15
msgid "via"
-msgstr ""
+msgstr "通过"
#: cps/templates/author.html:23
msgid "In Library"
-msgstr ""
+msgstr "在书库"
#: cps/templates/author.html:34 cps/templates/book_table.html:14
#: cps/templates/grid.html:14 cps/templates/list.html:14
@@ -1347,11 +1353,11 @@ msgstr "全部"
#: cps/templates/index.html:89 cps/templates/search.html:64
#: cps/templates/shelf.html:36
msgid "reduce"
-msgstr ""
+msgstr "减少"
#: cps/templates/author.html:94
msgid "More by"
-msgstr ""
+msgstr "更多"
#: cps/templates/book_edit.html:10
msgid "Delete Book"
@@ -1367,7 +1373,7 @@ msgstr "转换书籍格式:"
#: cps/templates/book_edit.html:28
msgid "Convert from:"
-msgstr "从格式转换:"
+msgstr "转换从:"
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:37
msgid "select an option"
@@ -1397,23 +1403,23 @@ msgstr "简介"
#: cps/templates/book_edit.html:66
msgid "Identifiers"
-msgstr ""
+msgstr "书号"
#: cps/templates/book_edit.html:70 cps/templates/book_edit.html:308
msgid "Identifier Type"
-msgstr ""
+msgstr "书号类型"
#: cps/templates/book_edit.html:71 cps/templates/book_edit.html:309
msgid "Identifier Value"
-msgstr ""
+msgstr "书号编号"
#: cps/templates/book_edit.html:72 cps/templates/book_edit.html:310
msgid "Remove"
-msgstr ""
+msgstr "移除"
#: cps/templates/book_edit.html:76
msgid "Add Identifier"
-msgstr ""
+msgstr "添加书号"
#: cps/templates/book_edit.html:80 cps/templates/search_form.html:33
msgid "Tags"
@@ -1421,7 +1427,7 @@ msgstr "标签"
#: cps/templates/book_edit.html:88
msgid "Series ID"
-msgstr ""
+msgstr "丛书编号"
#: cps/templates/book_edit.html:92
msgid "Rating"
@@ -1429,7 +1435,7 @@ msgstr "评分"
#: cps/templates/book_edit.html:96
msgid "Fetch Cover from URL (JPEG - Image will be downloaded and stored in database)"
-msgstr "封面URL(jpg,封面会被下载被保存在数据库中,然后字段会被重新清空)"
+msgstr "从URL获取封面(JPEG - 图片将下载并存储在数据库中)"
#: cps/templates/book_edit.html:100
msgid "Upload Cover from Local Disk"
@@ -1456,7 +1462,7 @@ msgstr "确认"
#: cps/templates/book_edit.html:127 cps/templates/search_form.html:138
msgid "No"
-msgstr "无"
+msgstr "没有"
#: cps/templates/book_edit.html:173
msgid "Upload Format"
@@ -1464,7 +1470,7 @@ msgstr "上传格式"
#: cps/templates/book_edit.html:182
msgid "View Book on Save"
-msgstr "编辑后查看书籍"
+msgstr "查看保存书籍"
#: cps/templates/book_edit.html:185 cps/templates/book_edit.html:229
msgid "Fetch Metadata"
@@ -1482,7 +1488,7 @@ msgstr "您真的确认?"
#: cps/templates/book_edit.html:204
msgid "This book will be permanently erased from database"
-msgstr "书籍会从Calibre数据库中删除"
+msgstr "此书籍将从数据库中永久删除"
#: cps/templates/book_edit.html:205
msgid "and hard disk"
@@ -1490,11 +1496,11 @@ msgstr ",包括从硬盘中"
#: cps/templates/book_edit.html:209
msgid "Important Kobo Note: deleted books will remain on any paired Kobo device."
-msgstr ""
+msgstr "Kobo 重要说明:被删除的书籍将保留在任何配对的 Kobo 设备上。"
#: cps/templates/book_edit.html:210
msgid "Books must first be archived and the device synced before a book can safely be deleted."
-msgstr ""
+msgstr "必须先将书籍存档并同步设备,然后才能安全地删除书籍。"
#: cps/templates/book_edit.html:232
msgid "Keyword"
@@ -1502,11 +1508,11 @@ msgstr "关键字"
#: cps/templates/book_edit.html:233
msgid " Search keyword "
-msgstr "搜索关键字"
+msgstr " 搜索关键字 "
#: cps/templates/book_edit.html:239
msgid "Click the cover to load metadata to the form"
-msgstr "点击封面加载元数据到表单"
+msgstr "单击封面将元数据加载到表单"
#: cps/templates/book_edit.html:254 cps/templates/book_edit.html:294
msgid "Loading..."
@@ -1520,15 +1526,15 @@ msgstr "关闭"
#: cps/templates/book_edit.html:286 cps/templates/book_edit.html:300
msgid "Source"
-msgstr "来源"
+msgstr "源"
#: cps/templates/book_edit.html:295
msgid "Search error!"
-msgstr "搜索错误"
+msgstr "搜索错误!"
#: cps/templates/book_edit.html:296
msgid "No Result(s) found! Please try another keyword."
-msgstr "找不到结果。请尝试另一个关键字"
+msgstr "无搜索结果!请尝试另一个关键字。"
#: cps/templates/config_edit.html:12
msgid "Library Configuration"
@@ -1536,7 +1542,7 @@ msgstr "书库配置"
#: cps/templates/config_edit.html:19
msgid "Location of Calibre Database"
-msgstr "Calibre 数据库位置"
+msgstr "Calibre 数据库路径"
#: cps/templates/config_edit.html:28
msgid "Use Google Drive?"
@@ -1560,11 +1566,11 @@ msgstr "登录后请完成Google Drive设置"
#: cps/templates/config_edit.html:52
msgid "Google Drive Calibre folder"
-msgstr "Google Drive Calibre 目录"
+msgstr "Google Drive Calibre 路径"
#: cps/templates/config_edit.html:60
msgid "Metadata Watch Channel ID"
-msgstr "元数据监视频道ID"
+msgstr "元数据监视通道ID"
#: cps/templates/config_edit.html:63
msgid "Revoke"
@@ -1580,15 +1586,15 @@ msgstr "服务器端口"
#: cps/templates/config_edit.html:93
msgid "SSL certfile location (leave it empty for non-SSL Servers)"
-msgstr "SSL 证书文件位置(非SSL服务器请留空)"
+msgstr "SSL 证书文件路径(非SSL服务器请留空)"
#: cps/templates/config_edit.html:100
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
-msgstr "SSL Key文件位置(非SSL服务器请留空)"
+msgstr "SSL 密钥文件路径(非SSL服务器请留空)"
#: cps/templates/config_edit.html:108
msgid "Update Channel"
-msgstr ""
+msgstr "更新通道"
#: cps/templates/config_edit.html:110
msgid "Stable"
@@ -1596,7 +1602,7 @@ msgstr "稳定版"
#: cps/templates/config_edit.html:111
msgid "Nightly"
-msgstr ""
+msgstr "夜间版"
#: cps/templates/config_edit.html:122
msgid "Logfile Configuration"
@@ -1604,7 +1610,7 @@ msgstr "日志文件配置"
#: cps/templates/config_edit.html:138
msgid "Location and name of logfile (calibre-web.log for no entry)"
-msgstr "日志文件位置和名称(默认为calibre-web.log)"
+msgstr "日志文件路径和名称(默认为calibre-web.log)"
#: cps/templates/config_edit.html:143
msgid "Enable Access Log"
@@ -1612,11 +1618,11 @@ msgstr "启用访问日志"
#: cps/templates/config_edit.html:146
msgid "Location and name of access logfile (access.log for no entry)"
-msgstr "访问日志位置和名称(默认为access.log)"
+msgstr "访问日志路径和名称(默认为access.log)"
#: cps/templates/config_edit.html:157
msgid "Feature Configuration"
-msgstr "特性配置"
+msgstr "功能配置"
#: cps/templates/config_edit.html:165
msgid "Enable Uploads"
@@ -1624,7 +1630,7 @@ msgstr "启用上传"
#: cps/templates/config_edit.html:169
msgid "Allowed Upload Fileformats"
-msgstr ""
+msgstr "允许上传的文件格式"
#: cps/templates/config_edit.html:175
msgid "Enable Anonymous Browsing"
@@ -1636,11 +1642,11 @@ msgstr "启用注册"
#: cps/templates/config_edit.html:184
msgid "Use E-Mail as Username"
-msgstr ""
+msgstr "使用邮箱或用户名"
#: cps/templates/config_edit.html:189
msgid "Enable Magic Link Remote Login"
-msgstr "启用远程登录 ('魔法链接')"
+msgstr "启用魔法链接远程登录"
#: cps/templates/config_edit.html:194
msgid "Enable Kobo sync"
@@ -1648,7 +1654,7 @@ msgstr "启用Kobo同步"
#: cps/templates/config_edit.html:199
msgid "Proxy unknown requests to Kobo Store"
-msgstr ""
+msgstr "代理未知请求到Kobo商店"
#: cps/templates/config_edit.html:206
msgid "Use Goodreads"
@@ -1656,15 +1662,15 @@ msgstr "使用Goodreads"
#: cps/templates/config_edit.html:207
msgid "Create an API Key"
-msgstr "获取API Key"
+msgstr "创建API Key"
#: cps/templates/config_edit.html:211
msgid "Goodreads API Key"
-msgstr ""
+msgstr "Goodreads API Key"
#: cps/templates/config_edit.html:215
msgid "Goodreads API Secret"
-msgstr ""
+msgstr "Goodreads API Secret"
#: cps/templates/config_edit.html:222
msgid "Allow Reverse Proxy Authentication"
@@ -1672,7 +1678,7 @@ msgstr "允许反向代理认证方式"
#: cps/templates/config_edit.html:226
msgid "Reverse Proxy Header Name"
-msgstr "反向代理Header Name"
+msgstr "反向代理头部名称"
#: cps/templates/config_edit.html:233
msgid "Login type"
@@ -1688,11 +1694,11 @@ msgstr "使用LDAP认证"
#: cps/templates/config_edit.html:240
msgid "Use OAuth"
-msgstr "使用OAuth"
+msgstr "使用OAuth认证"
#: cps/templates/config_edit.html:247
msgid "LDAP Server Host Name or IP Address"
-msgstr "LDAP服务器名称或IP地址"
+msgstr "LDAP服务器主机名或IP地址"
#: cps/templates/config_edit.html:251
msgid "LDAP Server Port"
@@ -1700,7 +1706,7 @@ msgstr "LDAP服务器端口"
#: cps/templates/config_edit.html:255
msgid "LDAP Encryption"
-msgstr ""
+msgstr "LDAP 加密"
#: cps/templates/config_edit.html:257 cps/templates/config_view_edit.html:61
#: cps/templates/email_edit.html:21
@@ -1709,31 +1715,31 @@ msgstr "无"
#: cps/templates/config_edit.html:258
msgid "TLS"
-msgstr ""
+msgstr "TLS协议"
#: cps/templates/config_edit.html:259
msgid "SSL"
-msgstr ""
+msgstr "SSL协议"
#: cps/templates/config_edit.html:264
msgid "LDAP Certificate Path"
-msgstr ""
+msgstr "LDAP 证书路径"
#: cps/templates/config_edit.html:269
msgid "LDAP Authentication"
-msgstr ""
+msgstr "LDAP 验证方式"
#: cps/templates/config_edit.html:271
msgid "Anonymous"
-msgstr ""
+msgstr "匿名"
#: cps/templates/config_edit.html:272
msgid "Unauthenticated"
-msgstr ""
+msgstr "无验证"
#: cps/templates/config_edit.html:273
msgid "Simple"
-msgstr ""
+msgstr "简单"
#: cps/templates/config_edit.html:278
msgid "LDAP Administrator Username"
@@ -1745,66 +1751,66 @@ msgstr "LDAP管理员密码"
#: cps/templates/config_edit.html:289
msgid "LDAP Distinguished Name (DN)"
-msgstr ""
+msgstr "LDAP专有名称(DN)"
#: cps/templates/config_edit.html:293
msgid "LDAP User Object Filter"
-msgstr ""
+msgstr "LDAP用户对象过滤器"
#: cps/templates/config_edit.html:298
msgid "LDAP Server is OpenLDAP?"
-msgstr ""
+msgstr "LDAP服务器是 OpenLDAP?"
#: cps/templates/config_edit.html:300
msgid "Following Settings are Needed For User Import"
-msgstr ""
+msgstr "用户导入需要以下设置"
#: cps/templates/config_edit.html:302
msgid "LDAP Group Object Filter"
-msgstr ""
+msgstr "LDAP组对象过滤器"
#: cps/templates/config_edit.html:306
msgid "LDAP Group Name"
-msgstr ""
+msgstr "LDAP组名"
#: cps/templates/config_edit.html:310
msgid "LDAP Group Members Field"
-msgstr ""
+msgstr "LDAP组成员字段"
#: cps/templates/config_edit.html:319
#, python-format
msgid "Obtain %(provider)s OAuth Credential"
-msgstr "获取 %(provider)s OAuth Credential"
+msgstr "获取 %(provider)s OAuth凭证"
#: cps/templates/config_edit.html:322
#, python-format
msgid "%(provider)s OAuth Client Id"
-msgstr ""
+msgstr "%(provider)s OAuth Client Secret"
#: cps/templates/config_edit.html:326
#, python-format
msgid "%(provider)s OAuth Client Secret"
-msgstr ""
+msgstr "%(provider)s OAuth Client Secret"
#: cps/templates/config_edit.html:342
msgid "External binaries"
-msgstr "外部二进制"
+msgstr "扩展程序配置"
#: cps/templates/config_edit.html:348
msgid "Path to Calibre E-Book Converter"
-msgstr ""
+msgstr "Calibre 电子书转换器路径"
#: cps/templates/config_edit.html:356
msgid "Calibre E-Book Converter Settings"
-msgstr ""
+msgstr "Calibre 电子书转换器设置"
#: cps/templates/config_edit.html:359
msgid "Path to Kepubify E-Book Converter"
-msgstr ""
+msgstr "KEpubify 电子书转换器路径"
#: cps/templates/config_edit.html:367
msgid "Location of Unrar binary"
-msgstr "Unrar二进制位置"
+msgstr "Unrar程序路径"
#: cps/templates/config_edit.html:390 cps/templates/layout.html:85
#: cps/templates/login.html:4 cps/templates/login.html:20
@@ -1817,7 +1823,7 @@ msgstr "查看配置"
#: cps/templates/config_view_edit.html:23 cps/templates/shelf_edit.html:7
msgid "Title"
-msgstr "标题"
+msgstr "名称"
#: cps/templates/config_view_edit.html:31
msgid "No. of Random Books to Display"
@@ -1825,7 +1831,7 @@ msgstr "随机书籍显示数量"
#: cps/templates/config_view_edit.html:35
msgid "No. of Authors to Display Before Hiding (0=Disable Hiding)"
-msgstr "作者数量显示上限(0=不隐藏)"
+msgstr "主页中书籍作者的最大显示数量(0=不隐藏)"
#: cps/templates/config_view_edit.html:39 cps/templates/readcbr.html:112
msgid "Theme"
@@ -1837,47 +1843,47 @@ msgstr "标准主题"
#: cps/templates/config_view_edit.html:42
msgid "caliBlur! Dark Theme"
-msgstr ""
+msgstr "黑暗主题"
#: cps/templates/config_view_edit.html:46
msgid "Regular Expression for Ignoring Columns"
-msgstr "忽略列的正则表达式"
+msgstr "可忽略的自定义栏目(正则表达式)"
#: cps/templates/config_view_edit.html:50
msgid "Link Read/Unread Status to Calibre Column"
-msgstr "链接 已读/未读 状态到Calibre栏"
+msgstr "选择自定义栏目作为阅读状态"
#: cps/templates/config_view_edit.html:59
msgid "View Restrictions based on Calibre column"
-msgstr "根据Calibre column设定查看限制"
+msgstr "选择自定义栏目作为书籍可见性"
#: cps/templates/config_view_edit.html:68
msgid "Regular Expression for Title Sorting"
-msgstr "标题排序的正则表达式"
+msgstr "按规则提取书名后排序(正则表达式)"
#: cps/templates/config_view_edit.html:80
msgid "Default Settings for New Users"
-msgstr "新用户默认设置"
+msgstr "新用户默认权限设置"
#: cps/templates/config_view_edit.html:88 cps/templates/user_edit.html:94
msgid "Admin User"
-msgstr "管理用户"
+msgstr "管理员用户"
#: cps/templates/config_view_edit.html:92 cps/templates/user_edit.html:99
msgid "Allow Downloads"
-msgstr "允许下载"
+msgstr "允许下载书籍"
#: cps/templates/config_view_edit.html:96 cps/templates/user_edit.html:103
msgid "Allow eBook Viewer"
-msgstr "允许eBook Viewer"
+msgstr "允许在线阅读"
#: cps/templates/config_view_edit.html:100 cps/templates/user_edit.html:107
msgid "Allow Uploads"
-msgstr "允许上传"
+msgstr "允许上传书籍"
#: cps/templates/config_view_edit.html:104 cps/templates/user_edit.html:111
msgid "Allow Edit"
-msgstr "允许编辑"
+msgstr "允许编辑书籍"
#: cps/templates/config_view_edit.html:108 cps/templates/user_edit.html:115
msgid "Allow Delete Books"
@@ -1893,23 +1899,23 @@ msgstr "允许编辑公共书架"
#: cps/templates/config_view_edit.html:126
msgid "Default Visibilities for New Users"
-msgstr "新用户的默认显示权限"
+msgstr "新用户默认显示权限"
#: cps/templates/config_view_edit.html:142 cps/templates/user_edit.html:82
msgid "Show Random Books in Detail View"
-msgstr "在详情页显示随机书籍"
+msgstr "在主页显示随机书籍"
#: cps/templates/config_view_edit.html:144 cps/templates/user_edit.html:85
msgid "Add Allowed/Denied Tags"
-msgstr "添加(允许/禁止)标签"
+msgstr "添加显示或隐藏书籍的标签值"
#: cps/templates/config_view_edit.html:145
msgid "Add Allowed/Denied custom column values"
-msgstr "添加(允许/禁止)自定义栏值"
+msgstr "添加显示或隐藏书籍的自定义栏目值"
#: cps/templates/detail.html:59
msgid "Read in Browser"
-msgstr "在线浏览"
+msgstr "在线阅读"
#: cps/templates/detail.html:72
msgid "Listen in Browser"
@@ -1917,15 +1923,15 @@ msgstr "在线听书"
#: cps/templates/detail.html:117
msgid "Book"
-msgstr ""
+msgstr "丛书编号"
#: cps/templates/detail.html:117
msgid "of"
-msgstr ""
+msgstr "在"
#: cps/templates/detail.html:165
msgid "Published"
-msgstr "出版"
+msgstr "出版日期"
#: cps/templates/detail.html:200
msgid "Mark As Unread"
@@ -1941,15 +1947,15 @@ msgstr "已读"
#: cps/templates/detail.html:209
msgid "Restore from archive"
-msgstr ""
+msgstr "从档案还原"
#: cps/templates/detail.html:209
msgid "Add to archive"
-msgstr ""
+msgstr "添加到归档"
#: cps/templates/detail.html:210
msgid "Archived"
-msgstr ""
+msgstr "归档"
#: cps/templates/detail.html:221
msgid "Description:"
@@ -1963,7 +1969,7 @@ msgstr "添加到书架"
#: cps/templates/feed.xml:79 cps/templates/layout.html:137
#: cps/templates/layout.html:141 cps/templates/search.html:20
msgid "(Public)"
-msgstr ""
+msgstr "(公共)"
#: cps/templates/detail.html:276
msgid "Edit Metadata"
@@ -1971,11 +1977,11 @@ msgstr "编辑元数据"
#: cps/templates/email_edit.html:22
msgid "STARTTLS"
-msgstr ""
+msgstr "STARTTLS协议"
#: cps/templates/email_edit.html:23
msgid "SSL/TLS"
-msgstr ""
+msgstr "SSL/TLS协议"
#: cps/templates/email_edit.html:31
msgid "SMTP Password"
@@ -1983,7 +1989,7 @@ msgstr "SMTP密码"
#: cps/templates/email_edit.html:38
msgid "Attachment Size Limit"
-msgstr ""
+msgstr "附件大小限制"
#: cps/templates/email_edit.html:46
msgid "Save and Send Test E-mail"
@@ -1991,7 +1997,7 @@ msgstr "保存设置并发送测试邮件"
#: cps/templates/email_edit.html:51
msgid "Allowed Domains (Whitelist)"
-msgstr "允许注册的域名"
+msgstr "允许注册的域名(白名单)"
#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:80
msgid "Add Domain"
@@ -2007,11 +2013,11 @@ msgstr "输入域名"
#: cps/templates/email_edit.html:68
msgid "Denied Domains (Blacklist)"
-msgstr "禁用的域名(黑名单)"
+msgstr "禁止注册的域名(黑名单)"
#: cps/templates/email_edit.html:99
msgid "Are you sure you want to delete this domain?"
-msgstr "您确定要删除这条域名规则吗?"
+msgstr "您确定要删除此域名吗?"
#: cps/templates/feed.xml:21 cps/templates/layout.html:174
msgid "Next"
@@ -2019,11 +2025,11 @@ msgstr "下一个"
#: cps/templates/generate_kobo_auth_url.html:5
msgid "Open the .kobo/Kobo eReader.conf file in a text editor and add (or edit):"
-msgstr "在文本编辑器中打开.kobo/Kobo eReader.conf,增加(修改为):"
+msgstr "在文本编辑器中打开.kobo/Kobo eReader.conf,添加(或编辑):"
#: cps/templates/http_error.html:38
msgid "Create Issue"
-msgstr "创建issue"
+msgstr "创建问题"
#: cps/templates/http_error.html:45
msgid "Return to Home"
@@ -2031,7 +2037,7 @@ msgstr "回到首页"
#: cps/templates/index.html:64
msgid "Group by series"
-msgstr "根据系列分组"
+msgstr "根据丛书分组"
#: cps/templates/index.xml:6
msgid "Start"
@@ -2039,11 +2045,11 @@ msgstr "开始"
#: cps/templates/index.xml:21
msgid "Popular publications from this catalog based on Downloads."
-msgstr "基于下载数的热门书籍"
+msgstr "基于下载数的热门书籍。"
#: cps/templates/index.xml:28
msgid "Popular publications from this catalog based on Rating."
-msgstr "基于评分的热门书籍"
+msgstr "基于评分的热门书籍。"
#: cps/templates/index.xml:31
msgid "Recently added Books"
@@ -2067,7 +2073,7 @@ msgstr "书籍按作者排序"
#: cps/templates/index.xml:72
msgid "Books ordered by publisher"
-msgstr "书籍按出版社排版"
+msgstr "书籍按出版社排序"
#: cps/templates/index.xml:79
msgid "Books ordered by category"
@@ -2079,23 +2085,23 @@ msgstr "书籍按丛书排序"
#: cps/templates/index.xml:93
msgid "Books ordered by Languages"
-msgstr "根据语言排序书籍"
+msgstr "书籍按语言排序"
#: cps/templates/index.xml:100
msgid "Books ordered by Rating"
-msgstr ""
+msgstr "书籍按评分排序"
#: cps/templates/index.xml:108
msgid "Books ordered by file formats"
-msgstr "根据文件类型排序书籍"
+msgstr "书籍按文件格式排序"
#: cps/templates/index.xml:111 cps/templates/layout.html:135
msgid "Shelves"
-msgstr ""
+msgstr "书架列表"
#: cps/templates/index.xml:115
msgid "Books organized in shelves"
-msgstr ""
+msgstr "书架上的书"
#: cps/templates/layout.html:29
msgid "Home"
@@ -2137,7 +2143,7 @@ msgstr "注册"
#: cps/templates/layout.html:117 cps/templates/layout.html:221
msgid "Uploading..."
-msgstr "上传中..."
+msgstr "正在上传..."
#: cps/templates/layout.html:118
msgid "Please do not refresh the page"
@@ -2145,7 +2151,7 @@ msgstr "请不要刷新页面"
#: cps/templates/layout.html:128
msgid "Browse"
-msgstr "浏览"
+msgstr "按条件浏览"
#: cps/templates/layout.html:139
msgid "Your Shelves"
@@ -2185,35 +2191,35 @@ msgstr "通过魔法链接登录"
#: cps/templates/logviewer.html:6
msgid "Show Calibre-Web Log: "
-msgstr "显示Calibre-Web Log"
+msgstr "显示Calibre-Web日志: "
#: cps/templates/logviewer.html:8
msgid "Calibre-Web Log: "
-msgstr ""
+msgstr "Calibre-Web 日志: "
#: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed"
-msgstr ""
+msgstr "输出流,无法显示"
#: cps/templates/logviewer.html:12
msgid "Show Access Log: "
-msgstr "显示Access Log: "
+msgstr "显示访问日志: "
#: cps/templates/modal_restriction.html:6
msgid "Select Allowed/Denied Tags"
-msgstr "选择(允许/禁止)标签"
+msgstr "选择标签值显示或隐藏书籍"
#: cps/templates/modal_restriction.html:7
msgid "Select Allowed/Denied Custom Column Values"
-msgstr "选择(允许/禁止)自定义栏值"
+msgstr "选择自定义栏目值显示或隐藏本用户书籍"
#: cps/templates/modal_restriction.html:8
msgid "Select Allowed/Denied Tags of User"
-msgstr "选择(允许/禁止)用户标签"
+msgstr "选择标签值显示或隐藏书籍"
#: cps/templates/modal_restriction.html:9
msgid "Select Allowed/Denied Custom Column Values of User"
-msgstr "选择(允许/禁止)用户自定义栏值"
+msgstr "选择自定义栏目值显示或隐藏本用户书籍"
#: cps/templates/modal_restriction.html:15
msgid "Enter Tag"
@@ -2221,15 +2227,15 @@ msgstr "输入标签"
#: cps/templates/modal_restriction.html:24
msgid "Add View Restriction"
-msgstr "输入查看限制"
+msgstr "添加显示或隐藏书籍的值"
#: cps/templates/osd.xml:5
msgid "Calibre-Web eBook Catalog"
-msgstr "Caliebre-Web电子书目录"
+msgstr "Caliebre-Web电子书路径"
#: cps/templates/read.html:74
msgid "Reflow text when sidebars are open."
-msgstr "侧栏打开时重排文本"
+msgstr "打开侧栏时重排文本。"
#: cps/templates/readcbr.html:88
msgid "Keyboard Shortcuts"
@@ -2333,11 +2339,11 @@ msgstr "PDF阅读器"
#: cps/templates/readtxt.html:6
msgid "Basic txt Reader"
-msgstr "简单txt阅读器"
+msgstr "基础文本阅读器"
#: cps/templates/register.html:4
msgid "Register New Account"
-msgstr "注册新用户"
+msgstr "注册新账号"
#: cps/templates/register.html:9
msgid "Choose a username"
@@ -2353,7 +2359,7 @@ msgstr "魔法链接 - 授权新设备"
#: cps/templates/remote_login.html:6
msgid "On another device, login and visit:"
-msgstr "在另一个设备上,登录并访问:"
+msgstr "在另一个设备上,登录并访问:"
#: cps/templates/remote_login.html:10
msgid "Once verified, you will automatically be logged in on this device."
@@ -2365,7 +2371,7 @@ msgstr "此验证链接将在10分钟后失效。"
#: cps/templates/search.html:5
msgid "No Results Found"
-msgstr "搜索无结果"
+msgstr "无搜索结果"
#: cps/templates/search.html:6
msgid "Search Term:"
@@ -2373,7 +2379,7 @@ msgstr "搜索项:"
#: cps/templates/search.html:8
msgid "Results for:"
-msgstr "结果:"
+msgstr "结果:"
#: cps/templates/search_form.html:19
msgid "Published Date From"
@@ -2397,11 +2403,11 @@ msgstr "排除语言"
#: cps/templates/search_form.html:95
msgid "Extensions"
-msgstr "后缀名"
+msgstr "扩展名"
#: cps/templates/search_form.html:105
msgid "Exclude Extensions"
-msgstr "排除后缀名"
+msgstr "排除扩展名"
#: cps/templates/search_form.html:117
msgid "Rating Above"
@@ -2421,19 +2427,19 @@ msgstr "编辑书架"
#: cps/templates/shelf.html:12 cps/templates/shelf_order.html:31
msgid "Change order"
-msgstr "修改顺序"
+msgstr "修改排序"
#: cps/templates/shelf.html:67
msgid "Are you sure you want to delete this shelf?"
-msgstr "您真的想要删除这个书架吗?"
+msgstr "您确定要删除此书架吗?"
#: cps/templates/shelf.html:70
msgid "Shelf will be deleted for all users"
-msgstr "书架将会永远丢失!"
+msgstr "书架将会重所有用户中删除"
#: cps/templates/shelf_edit.html:13
msgid "Share with Everyone"
-msgstr "要公开此书架吗?"
+msgstr "书架将被公开"
#: cps/templates/shelf_order.html:5
msgid "Drag to Rearrange Order"
@@ -2441,31 +2447,31 @@ msgstr "拖拽以重新排序"
#: cps/templates/stats.html:7
msgid "Library Statistics"
-msgstr "Calibre书库统计"
+msgstr "书库统计"
#: cps/templates/stats.html:12
msgid "Books in this Library"
-msgstr "本书在此书库"
+msgstr "本书籍在此书库中"
#: cps/templates/stats.html:16
msgid "Authors in this Library"
-msgstr "个作者在此书库"
+msgstr "位作者在此书库中"
#: cps/templates/stats.html:20
msgid "Categories in this Library"
-msgstr "个分类在此书库"
+msgstr "种分类在此书库中"
#: cps/templates/stats.html:24
msgid "Series in this Library"
-msgstr "个丛书在此书库"
+msgstr "套丛书在此书库中"
#: cps/templates/stats.html:28
msgid "Linked Libraries"
-msgstr "链接库"
+msgstr "外部依赖程序"
#: cps/templates/stats.html:32
msgid "Program Library"
-msgstr "程序库"
+msgstr "程序名称"
#: cps/templates/stats.html:33
msgid "Installed Version"
@@ -2473,19 +2479,19 @@ msgstr "已安装版本"
#: cps/templates/tasks.html:12
msgid "User"
-msgstr "用户"
+msgstr "用户名称"
#: cps/templates/tasks.html:14
msgid "Task"
-msgstr "任务"
+msgstr "任务信息"
#: cps/templates/tasks.html:15
msgid "Status"
-msgstr "状态"
+msgstr "任务状态"
#: cps/templates/tasks.html:16
msgid "Progress"
-msgstr "进展"
+msgstr "任务进度"
#: cps/templates/tasks.html:17
msgid "Run Time"
@@ -2529,15 +2535,15 @@ msgstr "取消链接"
#: cps/templates/user_edit.html:63
msgid "Kobo Sync Token"
-msgstr ""
+msgstr "Kobo 同步 Token"
#: cps/templates/user_edit.html:65
msgid "Create/View"
-msgstr "新建/查看"
+msgstr "新建或查看"
#: cps/templates/user_edit.html:86
msgid "Add allowed/Denied Custom Column Values"
-msgstr "添加(允许/禁止)自定义栏值"
+msgstr "添加显示或隐藏书籍的自定义栏目值"
#: cps/templates/user_edit.html:131
msgid "Delete User"
@@ -2549,7 +2555,7 @@ msgstr "最近下载"
#: cps/templates/user_edit.html:162
msgid "Generate Kobo Auth URL"
-msgstr "生成Kobo Auth URL"
+msgstr "生成Kobo Auth 地址"
#: cps/templates/user_edit.html:178
msgid "Do you really want to delete the Kobo Token?"
diff --git a/cps/ub.py b/cps/ub.py
index d994b408..9e053bd5 100644
--- a/cps/ub.py
+++ b/cps/ub.py
@@ -19,6 +19,7 @@
from __future__ import division, print_function, unicode_literals
import os
+import sys
import datetime
import itertools
import uuid
@@ -611,9 +612,13 @@ def migrate_Database(session):
session.commit()
# Remove login capability of user Guest
- conn = engine.connect()
- conn.execute("UPDATE user SET password='' where nickname = 'Guest' and password !=''")
- session.commit()
+ try:
+ conn = engine.connect()
+ conn.execute("UPDATE user SET password='' where nickname = 'Guest' and password !=''")
+ session.commit()
+ except exc.OperationalError:
+ print('Settings database is not writeable. Exiting...')
+ sys.exit(1)
def clean_database(session):
diff --git a/cps/web.py b/cps/web.py
index 0e0578ea..f74c87d0 100644
--- a/cps/web.py
+++ b/cps/web.py
@@ -446,7 +446,7 @@ def toggle_read(book_id):
new_cc = cc_class(value=1, book=book_id)
calibre_db.session.add(new_cc)
calibre_db.session.commit()
- except KeyError:
+ except (KeyError, AttributeError):
log.error(u"Custom Column No.%d is not exisiting in calibre database", config.config_read_column)
except OperationalError as e:
calibre_db.session.rollback()
@@ -1252,7 +1252,7 @@ def render_read_books(page, are_read, as_xml=False, order=None, *args, **kwargs)
db_filter,
order,
db.cc_classes[config.config_read_column])
- except KeyError:
+ except (KeyError, AttributeError):
log.error("Custom Column No.%d is not existing in calibre database", config.config_read_column)
if not as_xml:
flash(_("Custom Column No.%(column)d is not existing in calibre database",
@@ -1482,7 +1482,7 @@ def login():
log.info('Login failed for user "%s" IP-adress: %s', form['username'], ipAdress)
flash(_(u"Wrong Username or Password"), category="error")
- next_url = url_for('web.index')
+ next_url = request.args.get('next', default=url_for("web.index"), type=str)
return render_title_template('login.html',
title=_(u"login"),
next_url=next_url,
@@ -1759,7 +1759,7 @@ def show_book(book_id):
try:
matching_have_read_book = getattr(entries, 'custom_column_' + str(config.config_read_column))
have_read = len(matching_have_read_book) > 0 and matching_have_read_book[0].value
- except KeyError:
+ except (KeyError, AttributeError):
log.error("Custom Column No.%d is not existing in calibre database", config.config_read_column)
have_read = None
diff --git a/messages.pot b/messages.pot
index c8120f61..8b630b6c 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: 2020-06-07 06:47+0200\n"
+"POT-Creation-Date: 2020-06-28 09:31+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME \n"
"Language-Team: LANGUAGE \n"
@@ -45,9 +45,9 @@ msgstr ""
msgid "Unknown command"
msgstr ""
-#: cps/admin.py:116 cps/editbooks.py:563 cps/editbooks.py:573
-#: cps/editbooks.py:667 cps/editbooks.py:669 cps/editbooks.py:730
-#: cps/editbooks.py:743 cps/updater.py:509 cps/uploader.py:97
+#: cps/admin.py:116 cps/editbooks.py:564 cps/editbooks.py:576
+#: cps/editbooks.py:670 cps/editbooks.py:672 cps/editbooks.py:733
+#: cps/editbooks.py:749 cps/updater.py:509 cps/uploader.py:97
#: cps/uploader.py:107
msgid "Unknown"
msgstr ""
@@ -60,7 +60,7 @@ msgstr ""
msgid "UI Configuration"
msgstr ""
-#: cps/admin.py:189 cps/admin.py:706
+#: cps/admin.py:189 cps/admin.py:711
msgid "Calibre-Web configuration updated"
msgstr ""
@@ -112,175 +112,181 @@ msgstr ""
msgid "LDAP Certificate Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:627
+#: cps/admin.py:628
msgid "Keyfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:631
+#: cps/admin.py:632
msgid "Certfile Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:701
+#: cps/admin.py:694 cps/admin.py:793 cps/admin.py:885 cps/admin.py:934
+#: cps/shelf.py:100 cps/shelf.py:161 cps/shelf.py:202 cps/shelf.py:260
+#: cps/shelf.py:309 cps/shelf.py:338 cps/shelf.py:368 cps/shelf.py:392
+msgid "Settings DB is not Writeable"
+msgstr ""
+
+#: cps/admin.py:706
msgid "DB Location is not Valid, Please Enter Correct Path"
msgstr ""
-#: cps/admin.py:703
+#: cps/admin.py:708
msgid "DB is not Writeable"
msgstr ""
-#: cps/admin.py:736
+#: cps/admin.py:741
msgid "Basic Configuration"
msgstr ""
-#: cps/admin.py:751 cps/web.py:1337
+#: cps/admin.py:756 cps/web.py:1334
msgid "Please fill out all fields!"
msgstr ""
-#: cps/admin.py:754 cps/admin.py:766 cps/admin.py:772 cps/admin.py:892
+#: cps/admin.py:759 cps/admin.py:771 cps/admin.py:777 cps/admin.py:903
msgid "Add new user"
msgstr ""
-#: cps/admin.py:763 cps/web.py:1578
+#: cps/admin.py:768 cps/web.py:1575
msgid "E-mail is not from valid domain"
msgstr ""
-#: cps/admin.py:770 cps/admin.py:785
+#: cps/admin.py:775 cps/admin.py:790
msgid "Found an existing account for this e-mail address or nickname."
msgstr ""
-#: cps/admin.py:781
+#: cps/admin.py:786
#, python-format
msgid "User '%(user)s' created"
msgstr ""
-#: cps/admin.py:794
+#: cps/admin.py:802
#, python-format
msgid "User '%(nick)s' deleted"
msgstr ""
-#: cps/admin.py:797
+#: cps/admin.py:805
msgid "No admin user remaining, can't delete user"
msgstr ""
-#: cps/admin.py:803
+#: cps/admin.py:811
msgid "No admin user remaining, can't remove admin role"
msgstr ""
-#: cps/admin.py:839 cps/web.py:1621
+#: cps/admin.py:847 cps/web.py:1618
msgid "Found an existing account for this e-mail address."
msgstr ""
-#: cps/admin.py:849 cps/admin.py:864 cps/admin.py:967 cps/web.py:1596
+#: cps/admin.py:857 cps/admin.py:872 cps/admin.py:983 cps/web.py:1593
#, python-format
msgid "Edit User %(nick)s"
msgstr ""
-#: cps/admin.py:855 cps/web.py:1588
+#: cps/admin.py:863 cps/web.py:1585
msgid "This username is already taken"
msgstr ""
-#: cps/admin.py:871
+#: cps/admin.py:879
#, python-format
msgid "User '%(nick)s' updated"
msgstr ""
-#: cps/admin.py:874
+#: cps/admin.py:882
msgid "An unknown error occured."
msgstr ""
-#: cps/admin.py:901 cps/templates/admin.html:71
+#: cps/admin.py:912 cps/templates/admin.html:71
msgid "Edit E-mail Server Settings"
msgstr ""
-#: cps/admin.py:925
+#: cps/admin.py:941
#, python-format
msgid "Test e-mail successfully send to %(kindlemail)s"
msgstr ""
-#: cps/admin.py:928
+#: cps/admin.py:944
#, python-format
msgid "There was an error sending the Test e-mail: %(res)s"
msgstr ""
-#: cps/admin.py:930
+#: cps/admin.py:946
msgid "Please configure your e-mail address first..."
msgstr ""
-#: cps/admin.py:932
+#: cps/admin.py:948
msgid "E-mail server settings updated"
msgstr ""
-#: cps/admin.py:943
+#: cps/admin.py:959
msgid "User not found"
msgstr ""
-#: cps/admin.py:978
+#: cps/admin.py:994
#, python-format
msgid "Password for user %(user)s reset"
msgstr ""
-#: cps/admin.py:981 cps/web.py:1361 cps/web.py:1425
+#: cps/admin.py:997 cps/web.py:1358 cps/web.py:1422
msgid "An unknown error occurred. Please try again later."
msgstr ""
-#: cps/admin.py:984 cps/web.py:1299
+#: cps/admin.py:1000 cps/web.py:1296
msgid "Please configure the SMTP mail settings first..."
msgstr ""
-#: cps/admin.py:996
+#: cps/admin.py:1012
msgid "Logfile viewer"
msgstr ""
-#: cps/admin.py:1035
+#: cps/admin.py:1051
msgid "Requesting update package"
msgstr ""
-#: cps/admin.py:1036
+#: cps/admin.py:1052
msgid "Downloading update package"
msgstr ""
-#: cps/admin.py:1037
+#: cps/admin.py:1053
msgid "Unzipping update package"
msgstr ""
-#: cps/admin.py:1038
+#: cps/admin.py:1054
msgid "Replacing files"
msgstr ""
-#: cps/admin.py:1039
+#: cps/admin.py:1055
msgid "Database connections are closed"
msgstr ""
-#: cps/admin.py:1040
+#: cps/admin.py:1056
msgid "Stopping server"
msgstr ""
-#: cps/admin.py:1041
+#: cps/admin.py:1057
msgid "Update finished, please press okay and reload page"
msgstr ""
-#: cps/admin.py:1042 cps/admin.py:1043 cps/admin.py:1044 cps/admin.py:1045
-#: cps/admin.py:1046
+#: cps/admin.py:1058 cps/admin.py:1059 cps/admin.py:1060 cps/admin.py:1061
+#: cps/admin.py:1062
msgid "Update failed:"
msgstr ""
-#: cps/admin.py:1042 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
+#: cps/admin.py:1058 cps/updater.py:319 cps/updater.py:520 cps/updater.py:522
msgid "HTTP Error"
msgstr ""
-#: cps/admin.py:1043 cps/updater.py:321 cps/updater.py:524
+#: cps/admin.py:1059 cps/updater.py:321 cps/updater.py:524
msgid "Connection error"
msgstr ""
-#: cps/admin.py:1044 cps/updater.py:323 cps/updater.py:526
+#: cps/admin.py:1060 cps/updater.py:323 cps/updater.py:526
msgid "Timeout while establishing connection"
msgstr ""
-#: cps/admin.py:1045 cps/updater.py:325 cps/updater.py:528
+#: cps/admin.py:1061 cps/updater.py:325 cps/updater.py:528
msgid "General error"
msgstr ""
-#: cps/admin.py:1046
+#: cps/admin.py:1062
msgid "Update File Could Not be Saved in Temp Dir"
msgstr ""
@@ -300,8 +306,8 @@ msgstr ""
msgid "Book Successfully Deleted"
msgstr ""
-#: cps/editbooks.py:254 cps/editbooks.py:548 cps/web.py:1644 cps/web.py:1685
-#: cps/web.py:1747
+#: cps/editbooks.py:254 cps/editbooks.py:549 cps/web.py:1641 cps/web.py:1682
+#: cps/web.py:1744
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
@@ -309,82 +315,82 @@ msgstr ""
msgid "edit metadata"
msgstr ""
-#: cps/editbooks.py:361
+#: cps/editbooks.py:360
#, python-format
msgid "%(langname)s is not a valid language"
msgstr ""
-#: cps/editbooks.py:467 cps/editbooks.py:712
+#: cps/editbooks.py:468 cps/editbooks.py:715
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr ""
-#: cps/editbooks.py:471 cps/editbooks.py:716
+#: cps/editbooks.py:472 cps/editbooks.py:719
msgid "File to be uploaded must have an extension"
msgstr ""
-#: cps/editbooks.py:483 cps/editbooks.py:773
+#: cps/editbooks.py:484 cps/editbooks.py:779
#, python-format
msgid "Failed to create path %(path)s (Permission denied)."
msgstr ""
-#: cps/editbooks.py:488
+#: cps/editbooks.py:489
#, python-format
msgid "Failed to store file %(file)s."
msgstr ""
-#: cps/editbooks.py:506 cps/editbooks.py:864
+#: cps/editbooks.py:507 cps/editbooks.py:870
#, python-format
msgid "Database error: %(error)s."
msgstr ""
-#: cps/editbooks.py:510
+#: cps/editbooks.py:511
#, python-format
msgid "File format %(ext)s added to %(book)s"
msgstr ""
-#: cps/editbooks.py:653
+#: cps/editbooks.py:656
msgid "Metadata successfully updated"
msgstr ""
-#: cps/editbooks.py:662
+#: cps/editbooks.py:665
msgid "Error editing book, please check logfile for details"
msgstr ""
-#: cps/editbooks.py:724
+#: cps/editbooks.py:727
#, python-format
msgid "File %(filename)s could not saved to temp dir"
msgstr ""
-#: cps/editbooks.py:734
+#: cps/editbooks.py:737
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
msgstr ""
-#: cps/editbooks.py:780
+#: cps/editbooks.py:786
#, python-format
msgid "Failed to Move File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:836
+#: cps/editbooks.py:842
#, python-format
msgid "Failed to Move Cover File %(file)s: %(error)s"
msgstr ""
-#: cps/editbooks.py:850
+#: cps/editbooks.py:856
#, python-format
msgid "File %(file)s uploaded"
msgstr ""
-#: cps/editbooks.py:876
+#: cps/editbooks.py:882
msgid "Source or destination format for conversion missing"
msgstr ""
-#: cps/editbooks.py:884
+#: cps/editbooks.py:890
#, python-format
msgid "Book successfully queued for converting to %(book_format)s"
msgstr ""
-#: cps/editbooks.py:888
+#: cps/editbooks.py:894
#, python-format
msgid "There was an error converting this book: %(res)s"
msgstr ""
@@ -498,71 +504,71 @@ msgstr ""
msgid "Book path %(path)s not found on Google Drive"
msgstr ""
-#: cps/helper.py:542
+#: cps/helper.py:550
msgid "Error Downloading Cover"
msgstr ""
-#: cps/helper.py:545
+#: cps/helper.py:553
msgid "Cover Format Error"
msgstr ""
-#: cps/helper.py:561
+#: cps/helper.py:569
msgid "Failed to create path for cover"
msgstr ""
-#: cps/helper.py:566
+#: cps/helper.py:574
msgid "Cover-file is not a valid image file, or could not be stored"
msgstr ""
-#: cps/helper.py:577
+#: cps/helper.py:585
msgid "Only jpg/jpeg/png/webp files are supported as coverfile"
msgstr ""
-#: cps/helper.py:591
+#: cps/helper.py:599
msgid "Only jpg/jpeg files are supported as coverfile"
msgstr ""
-#: cps/helper.py:640
+#: cps/helper.py:648
msgid "Unrar binary file not found"
msgstr ""
-#: cps/helper.py:654
+#: cps/helper.py:662
msgid "Error excecuting UnRar"
msgstr ""
-#: cps/helper.py:710
+#: cps/helper.py:718
msgid "Waiting"
msgstr ""
-#: cps/helper.py:712
+#: cps/helper.py:720
msgid "Failed"
msgstr ""
-#: cps/helper.py:714
+#: cps/helper.py:722
msgid "Started"
msgstr ""
-#: cps/helper.py:716
+#: cps/helper.py:724
msgid "Finished"
msgstr ""
-#: cps/helper.py:718
+#: cps/helper.py:726
msgid "Unknown Status"
msgstr ""
-#: cps/helper.py:723
+#: cps/helper.py:731
msgid "E-mail: "
msgstr ""
-#: cps/helper.py:725 cps/helper.py:729
+#: cps/helper.py:733 cps/helper.py:737
msgid "Convert: "
msgstr ""
-#: cps/helper.py:727
+#: cps/helper.py:735
msgid "Upload: "
msgstr ""
-#: cps/helper.py:731
+#: cps/helper.py:739
msgid "Unknown Task: "
msgstr ""
@@ -595,7 +601,7 @@ msgstr ""
msgid "Failed to fetch user info from Google."
msgstr ""
-#: cps/oauth_bb.py:225 cps/web.py:1397 cps/web.py:1537
+#: cps/oauth_bb.py:225 cps/web.py:1394 cps/web.py:1534
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr ""
@@ -632,218 +638,218 @@ msgstr ""
msgid "Google Oauth error, please retry later."
msgstr ""
-#: cps/shelf.py:66 cps/shelf.py:111
+#: cps/shelf.py:67 cps/shelf.py:120
msgid "Invalid shelf specified"
msgstr ""
-#: cps/shelf.py:72
+#: cps/shelf.py:73
#, python-format
msgid "Sorry you are not allowed to add a book to the the shelf: %(shelfname)s"
msgstr ""
-#: cps/shelf.py:82
+#: cps/shelf.py:83
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr ""
-#: cps/shelf.py:97
+#: cps/shelf.py:106
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr ""
-#: cps/shelf.py:115
+#: cps/shelf.py:124
#, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr ""
-#: cps/shelf.py:133
+#: cps/shelf.py:142
#, python-format
msgid "Books are already part of the shelf: %(name)s"
msgstr ""
-#: cps/shelf.py:148
+#: cps/shelf.py:158
#, python-format
msgid "Books have been added to shelf: %(sname)s"
msgstr ""
-#: cps/shelf.py:150
+#: cps/shelf.py:163
#, python-format
msgid "Could not add books to shelf: %(sname)s"
msgstr ""
-#: cps/shelf.py:188
+#: cps/shelf.py:208
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr ""
-#: cps/shelf.py:196
+#: cps/shelf.py:216
#, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr ""
-#: cps/shelf.py:220 cps/shelf.py:260
+#: cps/shelf.py:240 cps/shelf.py:284
#, python-format
msgid "A public shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:229 cps/shelf.py:270
+#: cps/shelf.py:249 cps/shelf.py:294
#, python-format
msgid "A private shelf with the name '%(title)s' already exists."
msgstr ""
-#: cps/shelf.py:236
+#: cps/shelf.py:256
#, python-format
msgid "Shelf %(title)s created"
msgstr ""
-#: cps/shelf.py:239 cps/shelf.py:284
+#: cps/shelf.py:263 cps/shelf.py:312
msgid "There was an error"
msgstr ""
-#: cps/shelf.py:240 cps/shelf.py:242 cps/templates/layout.html:144
+#: cps/shelf.py:264 cps/shelf.py:266 cps/templates/layout.html:144
msgid "Create a Shelf"
msgstr ""
-#: cps/shelf.py:282
+#: cps/shelf.py:306
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
-#: cps/shelf.py:285 cps/shelf.py:287
+#: cps/shelf.py:313 cps/shelf.py:315
msgid "Edit a shelf"
msgstr ""
-#: cps/shelf.py:332
+#: cps/shelf.py:369
#, python-format
msgid "Shelf: '%(name)s'"
msgstr ""
-#: cps/shelf.py:335
+#: cps/shelf.py:372
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
-#: cps/shelf.py:368
+#: cps/shelf.py:409
msgid "Hidden Book"
msgstr ""
-#: cps/shelf.py:373
+#: cps/shelf.py:414
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
-#: cps/ub.py:64
+#: cps/ub.py:65
msgid "Recently Added"
msgstr ""
-#: cps/ub.py:66
+#: cps/ub.py:67
msgid "Show recent books"
msgstr ""
-#: cps/templates/index.xml:17 cps/ub.py:67
+#: cps/templates/index.xml:17 cps/ub.py:68
msgid "Hot Books"
msgstr ""
-#: cps/ub.py:69
+#: cps/ub.py:70
msgid "Show Hot Books"
msgstr ""
-#: cps/templates/index.xml:24 cps/ub.py:71 cps/web.py:655
+#: cps/templates/index.xml:24 cps/ub.py:72 cps/web.py:652
msgid "Top Rated Books"
msgstr ""
-#: cps/ub.py:73
+#: cps/ub.py:74
msgid "Show Top Rated Books"
msgstr ""
-#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:74
-#: cps/web.py:1222
+#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:75
+#: cps/web.py:1219
msgid "Read Books"
msgstr ""
-#: cps/ub.py:76
+#: cps/ub.py:77
msgid "Show read and unread"
msgstr ""
-#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:78
-#: cps/web.py:1225
+#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:79
+#: cps/web.py:1222
msgid "Unread Books"
msgstr ""
-#: cps/ub.py:80
+#: cps/ub.py:81
msgid "Show unread"
msgstr ""
-#: cps/ub.py:81
+#: cps/ub.py:82
msgid "Discover"
msgstr ""
-#: cps/ub.py:83
+#: cps/ub.py:84
msgid "Show random books"
msgstr ""
-#: cps/templates/index.xml:75 cps/ub.py:84 cps/web.py:970
+#: cps/templates/index.xml:75 cps/ub.py:85 cps/web.py:967
msgid "Categories"
msgstr ""
-#: cps/ub.py:86
+#: cps/ub.py:87
msgid "Show category selection"
msgstr ""
#: cps/templates/book_edit.html:84 cps/templates/index.xml:82
-#: cps/templates/search_form.html:53 cps/ub.py:87 cps/web.py:886 cps/web.py:896
+#: cps/templates/search_form.html:53 cps/ub.py:88 cps/web.py:883 cps/web.py:893
msgid "Series"
msgstr ""
-#: cps/ub.py:89
+#: cps/ub.py:90
msgid "Show series selection"
msgstr ""
-#: cps/templates/index.xml:61 cps/ub.py:90
+#: cps/templates/index.xml:61 cps/ub.py:91
msgid "Authors"
msgstr ""
-#: cps/ub.py:92
+#: cps/ub.py:93
msgid "Show author selection"
msgstr ""
-#: cps/templates/index.xml:68 cps/ub.py:94 cps/web.py:869
+#: cps/templates/index.xml:68 cps/ub.py:95 cps/web.py:866
msgid "Publishers"
msgstr ""
-#: cps/ub.py:96
+#: cps/ub.py:97
msgid "Show publisher selection"
msgstr ""
-#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:97
-#: cps/web.py:953
+#: cps/templates/index.xml:89 cps/templates/search_form.html:74 cps/ub.py:98
+#: cps/web.py:950
msgid "Languages"
msgstr ""
-#: cps/ub.py:100
+#: cps/ub.py:101
msgid "Show language selection"
msgstr ""
-#: cps/templates/index.xml:96 cps/ub.py:101
+#: cps/templates/index.xml:96 cps/ub.py:102
msgid "Ratings"
msgstr ""
-#: cps/ub.py:103
+#: cps/ub.py:104
msgid "Show ratings selection"
msgstr ""
-#: cps/templates/index.xml:104 cps/ub.py:104
+#: cps/templates/index.xml:104 cps/ub.py:105
msgid "File formats"
msgstr ""
-#: cps/ub.py:106
+#: cps/ub.py:107
msgid "Show file formats selection"
msgstr ""
-#: cps/ub.py:108 cps/web.py:1249
+#: cps/ub.py:109 cps/web.py:1246
msgid "Archived Books"
msgstr ""
-#: cps/ub.py:110
+#: cps/ub.py:111
msgid "Show archived books"
msgstr ""
@@ -876,220 +882,220 @@ msgstr ""
msgid "Click on the button below to update to the latest stable version."
msgstr ""
-#: cps/web.py:322
+#: cps/web.py:319
#, python-format
msgid "Error: %(ldaperror)s"
msgstr ""
-#: cps/web.py:326
+#: cps/web.py:323
msgid "Error: No user returned in response of LDAP server"
msgstr ""
-#: cps/web.py:374
+#: cps/web.py:371
msgid "Failed to Create at Least One LDAP User"
msgstr ""
-#: cps/web.py:377
+#: cps/web.py:374
msgid "At Least One LDAP User Not Found in Database"
msgstr ""
-#: cps/web.py:379
+#: cps/web.py:376
msgid "User Successfully Imported"
msgstr ""
-#: cps/web.py:625
+#: cps/web.py:622
msgid "Recently Added Books"
msgstr ""
-#: cps/templates/index.html:5 cps/web.py:663
+#: cps/templates/index.html:5 cps/web.py:660
msgid "Discover (Random Books)"
msgstr ""
-#: cps/web.py:691
+#: cps/web.py:688
msgid "Books"
msgstr ""
-#: cps/web.py:718
+#: cps/web.py:715
msgid "Hot Books (Most Downloaded)"
msgstr ""
-#: cps/web.py:731
+#: cps/web.py:728
msgid "Oops! Selected book title is unavailable. File does not exist or is not accessible"
msgstr ""
-#: cps/web.py:745
+#: cps/web.py:742
#, python-format
msgid "Author: %(name)s"
msgstr ""
-#: cps/web.py:759
+#: cps/web.py:756
#, python-format
msgid "Publisher: %(name)s"
msgstr ""
-#: cps/web.py:772
+#: cps/web.py:769
#, python-format
msgid "Series: %(serie)s"
msgstr ""
-#: cps/web.py:785
+#: cps/web.py:782
#, python-format
msgid "Rating: %(rating)s stars"
msgstr ""
-#: cps/web.py:798
+#: cps/web.py:795
#, python-format
msgid "File format: %(format)s"
msgstr ""
-#: cps/web.py:812
+#: cps/web.py:809
#, python-format
msgid "Category: %(name)s"
msgstr ""
-#: cps/web.py:831
+#: cps/web.py:828
#, python-format
msgid "Language: %(name)s"
msgstr ""
-#: cps/web.py:910
+#: cps/web.py:907
msgid "Ratings list"
msgstr ""
-#: cps/web.py:925
+#: cps/web.py:922
msgid "File formats list"
msgstr ""
-#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:984
+#: cps/templates/layout.html:74 cps/templates/tasks.html:7 cps/web.py:981
msgid "Tasks"
msgstr ""
#: cps/templates/book_edit.html:235 cps/templates/feed.xml:33
#: cps/templates/layout.html:45 cps/templates/layout.html:48
-#: cps/templates/search_form.html:174 cps/web.py:1010 cps/web.py:1015
+#: cps/templates/search_form.html:174 cps/web.py:1007 cps/web.py:1012
msgid "Search"
msgstr ""
-#: cps/web.py:1066
+#: cps/web.py:1063
msgid "Published after "
msgstr ""
-#: cps/web.py:1073
+#: cps/web.py:1070
msgid "Published before "
msgstr ""
-#: cps/web.py:1087
+#: cps/web.py:1084
#, python-format
msgid "Rating <= %(rating)s"
msgstr ""
-#: cps/web.py:1089
+#: cps/web.py:1086
#, python-format
msgid "Rating >= %(rating)s"
msgstr ""
-#: cps/web.py:1158 cps/web.py:1183
+#: cps/web.py:1155 cps/web.py:1180
msgid "search"
msgstr ""
-#: cps/web.py:1213
+#: cps/web.py:1210
#, python-format
msgid "Custom Column No.%(column)d is not existing in calibre database"
msgstr ""
-#: cps/web.py:1304
+#: cps/web.py:1301
#, python-format
msgid "Book successfully queued for sending to %(kindlemail)s"
msgstr ""
-#: cps/web.py:1308
+#: cps/web.py:1305
#, python-format
msgid "Oops! There was an error sending this book: %(res)s"
msgstr ""
-#: cps/web.py:1310
+#: cps/web.py:1307
msgid "Please update your profile with a valid Send to Kindle E-mail Address."
msgstr ""
-#: cps/web.py:1327
+#: cps/web.py:1324
msgid "E-Mail server is not configured, please contact your administrator!"
msgstr ""
-#: cps/web.py:1328 cps/web.py:1338 cps/web.py:1362 cps/web.py:1366
-#: cps/web.py:1371 cps/web.py:1375
+#: cps/web.py:1325 cps/web.py:1335 cps/web.py:1359 cps/web.py:1363
+#: cps/web.py:1368 cps/web.py:1372
msgid "register"
msgstr ""
-#: cps/web.py:1364
+#: cps/web.py:1361
msgid "Your e-mail is not allowed to register"
msgstr ""
-#: cps/web.py:1367
+#: cps/web.py:1364
msgid "Confirmation e-mail was send to your e-mail account."
msgstr ""
-#: cps/web.py:1370
+#: cps/web.py:1367
msgid "This username or e-mail address is already in use."
msgstr ""
-#: cps/web.py:1387
+#: cps/web.py:1384
msgid "Cannot activate LDAP authentication"
msgstr ""
-#: cps/web.py:1404
+#: cps/web.py:1401
#, python-format
msgid "Fallback Login as: '%(nickname)s', LDAP Server not reachable, or user not known"
msgstr ""
-#: cps/web.py:1410
+#: cps/web.py:1407
#, python-format
msgid "Could not login: %(message)s"
msgstr ""
-#: cps/web.py:1414 cps/web.py:1438
+#: cps/web.py:1411 cps/web.py:1435
msgid "Wrong Username or Password"
msgstr ""
-#: cps/web.py:1421
+#: cps/web.py:1418
msgid "New Password was send to your email address"
msgstr ""
-#: cps/web.py:1427
+#: cps/web.py:1424
msgid "Please enter valid username to reset password"
msgstr ""
-#: cps/web.py:1433
+#: cps/web.py:1430
#, python-format
msgid "You are now logged in as: '%(nickname)s'"
msgstr ""
-#: cps/web.py:1442 cps/web.py:1469
+#: cps/web.py:1439 cps/web.py:1466
msgid "login"
msgstr ""
-#: cps/web.py:1481 cps/web.py:1515
+#: cps/web.py:1478 cps/web.py:1512
msgid "Token not found"
msgstr ""
-#: cps/web.py:1490 cps/web.py:1523
+#: cps/web.py:1487 cps/web.py:1520
msgid "Token has expired"
msgstr ""
-#: cps/web.py:1499
+#: cps/web.py:1496
msgid "Success! Please return to your device"
msgstr ""
-#: cps/web.py:1580 cps/web.py:1625 cps/web.py:1631
+#: cps/web.py:1577 cps/web.py:1622 cps/web.py:1628
#, python-format
msgid "%(name)s's profile"
msgstr ""
-#: cps/web.py:1627
+#: cps/web.py:1624
msgid "Profile updated"
msgstr ""
-#: cps/web.py:1656 cps/web.py:1659 cps/web.py:1662 cps/web.py:1669
-#: cps/web.py:1674
+#: cps/web.py:1653 cps/web.py:1656 cps/web.py:1659 cps/web.py:1666
+#: cps/web.py:1671
msgid "Read a Book"
msgstr ""
diff --git a/optional-requirements.txt b/optional-requirements.txt
index 5cef4a05..6537a077 100644
--- a/optional-requirements.txt
+++ b/optional-requirements.txt
@@ -1,6 +1,6 @@
# GDrive Integration
google-api-python-client==1.7.11,<1.8.0
-#gevent>=1.2.1,<20.6.0
+gevent>=1.2.1,<20.6.0
greenlet>=0.4.12,<0.5.0
httplib2>=0.9.2,<0.18.0
oauth2client>=4.0.0,<4.1.4