Merge remote-tracking branch 'original/Develop' into kobo_book_delete
This commit is contained in:
		
						commit
						9804a98af8
					
				| 
						 | 
					@ -30,7 +30,7 @@ Calibre-Web is a web app providing a clean interface for browsing, reading and d
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Quick start
 | 
					## Quick start
 | 
				
			||||||
 | 
					
 | 
				
			||||||
1. Install dependencies by running `pip install --target vendor -r requirements.txt`.
 | 
					1. Install dependencies by running `pip3 install --target vendor -r requirements.txt`.
 | 
				
			||||||
2. Execute the command: `python cps.py` (or `nohup python cps.py` - recommended if you want to exit the terminal window)
 | 
					2. Execute the command: `python cps.py` (or `nohup python cps.py` - recommended if you want to exit the terminal window)
 | 
				
			||||||
3. Point your browser to `http://localhost:8083` or `http://localhost:8083/opds` for the OPDS catalog
 | 
					3. Point your browser to `http://localhost:8083` or `http://localhost:8083/opds` for the OPDS catalog
 | 
				
			||||||
4. Set `Location of Calibre database` to the path of the folder where your Calibre library (metadata.db) lives, push "submit" button\
 | 
					4. Set `Location of Calibre database` to the path of the folder where your Calibre library (metadata.db) lives, push "submit" button\
 | 
				
			||||||
| 
						 | 
					@ -46,7 +46,7 @@ Please note that running the above install command can fail on some versions of
 | 
				
			||||||
 | 
					
 | 
				
			||||||
## Requirements
 | 
					## Requirements
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Python 2.7+, python 3.x+
 | 
					python 3.x+, (Python 2.7+)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Optionally, to enable on-the-fly conversion from one ebook format to another when using the send-to-kindle feature, or during editing of ebooks metadata:
 | 
					Optionally, to enable on-the-fly conversion from one ebook format to another when using the send-to-kindle feature, or during editing of ebooks metadata:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -532,6 +532,9 @@ def _configuration_update_helper():
 | 
				
			||||||
    _config_checkbox_int("config_uploading")
 | 
					    _config_checkbox_int("config_uploading")
 | 
				
			||||||
    _config_checkbox_int("config_anonbrowse")
 | 
					    _config_checkbox_int("config_anonbrowse")
 | 
				
			||||||
    _config_checkbox_int("config_public_reg")
 | 
					    _config_checkbox_int("config_public_reg")
 | 
				
			||||||
 | 
					    _config_checkbox_int("config_kobo_sync")
 | 
				
			||||||
 | 
					    _config_checkbox_int("config_kobo_proxy")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    _config_int("config_ebookconverter")
 | 
					    _config_int("config_ebookconverter")
 | 
				
			||||||
    _config_string("config_calibre")
 | 
					    _config_string("config_calibre")
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -68,6 +68,7 @@ class _Settings(_Base):
 | 
				
			||||||
    config_anonbrowse = Column(SmallInteger, default=0)
 | 
					    config_anonbrowse = Column(SmallInteger, default=0)
 | 
				
			||||||
    config_public_reg = Column(SmallInteger, default=0)
 | 
					    config_public_reg = Column(SmallInteger, default=0)
 | 
				
			||||||
    config_remote_login = Column(Boolean, default=False)
 | 
					    config_remote_login = Column(Boolean, default=False)
 | 
				
			||||||
 | 
					    config_kobo_sync = Column(Boolean, default=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config_default_role = Column(SmallInteger, default=0)
 | 
					    config_default_role = Column(SmallInteger, default=0)
 | 
				
			||||||
    config_default_show = Column(SmallInteger, default=38911)
 | 
					    config_default_show = Column(SmallInteger, default=38911)
 | 
				
			||||||
| 
						 | 
					@ -89,7 +90,8 @@ class _Settings(_Base):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config_login_type = Column(Integer, default=0)
 | 
					    config_login_type = Column(Integer, default=0)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # config_oauth_provider = Column(Integer)
 | 
					    config_kobo_proxy = Column(Boolean, default=False)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    config_ldap_provider_url = Column(String, default='localhost')
 | 
					    config_ldap_provider_url = Column(String, default='localhost')
 | 
				
			||||||
    config_ldap_port = Column(SmallInteger, default=389)
 | 
					    config_ldap_port = Column(SmallInteger, default=389)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -126,7 +126,7 @@ def selected_roles(dictionary):
 | 
				
			||||||
BookMeta = namedtuple('BookMeta', 'file_path, extension, title, author, cover, description, tags, series, '
 | 
					BookMeta = namedtuple('BookMeta', 'file_path, extension, title, author, cover, description, tags, series, '
 | 
				
			||||||
                                  'series_id, languages')
 | 
					                                  'series_id, languages')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
STABLE_VERSION = {'version': '0.6.5 Beta'}
 | 
					STABLE_VERSION = {'version': '0.6.6 Beta'}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
NIGHTLY_VERSION = {}
 | 
					NIGHTLY_VERSION = {}
 | 
				
			||||||
NIGHTLY_VERSION[0] = '$Format:%H$'
 | 
					NIGHTLY_VERSION[0] = '$Format:%H$'
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										199
									
								
								cps/kobo.py
									
									
									
									
									
								
							
							
						
						
									
										199
									
								
								cps/kobo.py
									
									
									
									
									
								
							| 
						 | 
					@ -19,7 +19,6 @@
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import sys
 | 
					import sys
 | 
				
			||||||
import uuid
 | 
					import uuid
 | 
				
			||||||
from datetime import datetime
 | 
					 | 
				
			||||||
from time import gmtime, strftime
 | 
					from time import gmtime, strftime
 | 
				
			||||||
 | 
					
 | 
				
			||||||
try:
 | 
					try:
 | 
				
			||||||
| 
						 | 
					@ -32,9 +31,10 @@ from flask import (
 | 
				
			||||||
    request,
 | 
					    request,
 | 
				
			||||||
    make_response,
 | 
					    make_response,
 | 
				
			||||||
    jsonify,
 | 
					    jsonify,
 | 
				
			||||||
    json,
 | 
					    current_app,
 | 
				
			||||||
    url_for,
 | 
					    url_for,
 | 
				
			||||||
    redirect,
 | 
					    redirect,
 | 
				
			||||||
 | 
					    abort
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
from flask_login import login_required, current_user
 | 
					from flask_login import login_required, current_user
 | 
				
			||||||
from werkzeug.datastructures import Headers
 | 
					from werkzeug.datastructures import Headers
 | 
				
			||||||
| 
						 | 
					@ -46,7 +46,7 @@ from . import config, logger, kobo_auth, db, helper, ub
 | 
				
			||||||
from .services import SyncToken as SyncToken
 | 
					from .services import SyncToken as SyncToken
 | 
				
			||||||
from .web import download_required
 | 
					from .web import download_required
 | 
				
			||||||
 | 
					
 | 
				
			||||||
KOBO_FORMATS = {"KEPUB": ["KEPUB"], "EPUB": ["EPUB", "EPUB3"]}
 | 
					KOBO_FORMATS = {"KEPUB": ["KEPUB"], "EPUB": ["EPUB3", "EPUB"]}
 | 
				
			||||||
KOBO_STOREAPI_URL = "https://storeapi.kobo.com"
 | 
					KOBO_STOREAPI_URL = "https://storeapi.kobo.com"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
kobo = Blueprint("kobo", __name__, url_prefix="/kobo/<auth_token>")
 | 
					kobo = Blueprint("kobo", __name__, url_prefix="/kobo/<auth_token>")
 | 
				
			||||||
| 
						 | 
					@ -74,9 +74,11 @@ CONNECTION_SPECIFIC_HEADERS = [
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def redirect_or_proxy_request():
 | 
					def redirect_or_proxy_request():
 | 
				
			||||||
 | 
					    if config.config_kobo_proxy:
 | 
				
			||||||
        if request.method == "GET":
 | 
					        if request.method == "GET":
 | 
				
			||||||
            return redirect(get_store_url_for_current_request(), 307)
 | 
					            return redirect(get_store_url_for_current_request(), 307)
 | 
				
			||||||
        if request.method == "DELETE":
 | 
					        if request.method == "DELETE":
 | 
				
			||||||
 | 
					            log.info('Delete Book')
 | 
				
			||||||
            return make_response(jsonify({}))
 | 
					            return make_response(jsonify({}))
 | 
				
			||||||
        else:
 | 
					        else:
 | 
				
			||||||
            # The Kobo device turns other request types into GET requests on redirects, so we instead proxy to the Kobo store ourselves.
 | 
					            # The Kobo device turns other request types into GET requests on redirects, so we instead proxy to the Kobo store ourselves.
 | 
				
			||||||
| 
						 | 
					@ -97,7 +99,8 @@ def redirect_or_proxy_request():
 | 
				
			||||||
            return make_response(
 | 
					            return make_response(
 | 
				
			||||||
                store_response.content, store_response.status_code, response_headers.items()
 | 
					                store_response.content, store_response.status_code, response_headers.items()
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        return make_response(jsonify({}))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@kobo.route("/v1/library/sync")
 | 
					@kobo.route("/v1/library/sync")
 | 
				
			||||||
@login_required
 | 
					@login_required
 | 
				
			||||||
| 
						 | 
					@ -105,6 +108,8 @@ def redirect_or_proxy_request():
 | 
				
			||||||
def HandleSyncRequest():
 | 
					def HandleSyncRequest():
 | 
				
			||||||
    sync_token = SyncToken.SyncToken.from_headers(request.headers)
 | 
					    sync_token = SyncToken.SyncToken.from_headers(request.headers)
 | 
				
			||||||
    log.info("Kobo library sync request received.")
 | 
					    log.info("Kobo library sync request received.")
 | 
				
			||||||
 | 
					    if not current_app.wsgi_app.is_proxied:
 | 
				
			||||||
 | 
					        log.debug('Kobo: Received unproxied request, changed request port to server port')
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    # TODO: Limit the number of books return per sync call, and rely on the sync-continuatation header
 | 
					    # TODO: Limit the number of books return per sync call, and rely on the sync-continuatation header
 | 
				
			||||||
    # instead so that the device triggers another sync.
 | 
					    # instead so that the device triggers another sync.
 | 
				
			||||||
| 
						 | 
					@ -149,6 +154,7 @@ def HandleSyncRequest():
 | 
				
			||||||
        .filter(db.Data.format.in_(KOBO_FORMATS))
 | 
					        .filter(db.Data.format.in_(KOBO_FORMATS))
 | 
				
			||||||
        .all()
 | 
					        .all()
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    for book in changed_entries:
 | 
					    for book in changed_entries:
 | 
				
			||||||
        entitlement = {
 | 
					        entitlement = {
 | 
				
			||||||
            "BookEntitlement": create_book_entitlement(book, archived=(book.id in archived_book_ids)),
 | 
					            "BookEntitlement": create_book_entitlement(book, archived=(book.id in archived_book_ids)),
 | 
				
			||||||
| 
						 | 
					@ -169,8 +175,12 @@ def HandleSyncRequest():
 | 
				
			||||||
    sync_token.books_last_modified = new_books_last_modified
 | 
					    sync_token.books_last_modified = new_books_last_modified
 | 
				
			||||||
    sync_token.archive_last_modified = new_archived_last_modified
 | 
					    sync_token.archive_last_modified = new_archived_last_modified
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if config.config_kobo_proxy:
 | 
				
			||||||
        return generate_sync_response(request, sync_token, entitlements)
 | 
					        return generate_sync_response(request, sync_token, entitlements)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    return make_response(jsonify(entitlements))
 | 
				
			||||||
 | 
					    # Missing feature: Detect server-side book deletions.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def generate_sync_response(request, sync_token, entitlements):
 | 
					def generate_sync_response(request, sync_token, entitlements):
 | 
				
			||||||
    # We first merge in sync results from the official Kobo store.
 | 
					    # We first merge in sync results from the official Kobo store.
 | 
				
			||||||
| 
						 | 
					@ -210,6 +220,8 @@ def generate_sync_response(request, sync_token, entitlements):
 | 
				
			||||||
@login_required
 | 
					@login_required
 | 
				
			||||||
@download_required
 | 
					@download_required
 | 
				
			||||||
def HandleMetadataRequest(book_uuid):
 | 
					def HandleMetadataRequest(book_uuid):
 | 
				
			||||||
 | 
					    if not current_app.wsgi_app.is_proxied:
 | 
				
			||||||
 | 
					        log.debug('Kobo: Received unproxied request, changed request port to server port')
 | 
				
			||||||
    log.info("Kobo library metadata request received for book %s" % book_uuid)
 | 
					    log.info("Kobo library metadata request received for book %s" % book_uuid)
 | 
				
			||||||
    book = db.session.query(db.Books).filter(db.Books.uuid == book_uuid).first()
 | 
					    book = db.session.query(db.Books).filter(db.Books.uuid == book_uuid).first()
 | 
				
			||||||
    if not book or not book.data:
 | 
					    if not book or not book.data:
 | 
				
			||||||
| 
						 | 
					@ -221,6 +233,15 @@ def HandleMetadataRequest(book_uuid):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_download_url_for_book(book, book_format):
 | 
					def get_download_url_for_book(book, book_format):
 | 
				
			||||||
 | 
					    if not current_app.wsgi_app.is_proxied:
 | 
				
			||||||
 | 
					        return "{url_scheme}://{url_base}:{url_port}/download/{book_id}/{book_format}".format(
 | 
				
			||||||
 | 
					            url_scheme=request.environ['wsgi.url_scheme'],
 | 
				
			||||||
 | 
					            url_base=request.environ['SERVER_NAME'],
 | 
				
			||||||
 | 
					            url_port=config.config_port,
 | 
				
			||||||
 | 
					            book_id=book.id,
 | 
				
			||||||
 | 
					            book_format=book_format.lower()
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
        return url_for(
 | 
					        return url_for(
 | 
				
			||||||
            "web.download_link",
 | 
					            "web.download_link",
 | 
				
			||||||
            book_id=book.id,
 | 
					            book_id=book.id,
 | 
				
			||||||
| 
						 | 
					@ -278,11 +299,11 @@ def get_series(book):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
def get_metadata(book):
 | 
					def get_metadata(book):
 | 
				
			||||||
    download_urls = []
 | 
					    download_urls = []
 | 
				
			||||||
 | 
					 | 
				
			||||||
    for book_data in book.data:
 | 
					    for book_data in book.data:
 | 
				
			||||||
        if book_data.format not in KOBO_FORMATS:
 | 
					        if book_data.format not in KOBO_FORMATS:
 | 
				
			||||||
            continue
 | 
					            continue
 | 
				
			||||||
        for kobo_format in KOBO_FORMATS[book_data.format]:
 | 
					        for kobo_format in KOBO_FORMATS[book_data.format]:
 | 
				
			||||||
 | 
					            # log.debug('Id: %s, Format: %s' % (book.id, kobo_format))
 | 
				
			||||||
            download_urls.append(
 | 
					            download_urls.append(
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    "Format": kobo_format,
 | 
					                    "Format": kobo_format,
 | 
				
			||||||
| 
						 | 
					@ -356,7 +377,10 @@ def HandleCoverImageRequest(book_uuid):
 | 
				
			||||||
        book_uuid, use_generic_cover_on_failure=False
 | 
					        book_uuid, use_generic_cover_on_failure=False
 | 
				
			||||||
    )
 | 
					    )
 | 
				
			||||||
    if not book_cover:
 | 
					    if not book_cover:
 | 
				
			||||||
 | 
					        if config.config_kobo_proxy:
 | 
				
			||||||
            return redirect(get_store_url_for_current_request(), 307)
 | 
					            return redirect(get_store_url_for_current_request(), 307)
 | 
				
			||||||
 | 
					        else:
 | 
				
			||||||
 | 
					            abort(404)
 | 
				
			||||||
    return book_cover
 | 
					    return book_cover
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -397,19 +421,41 @@ def HandleBookDeletionRequest(book_uuid):
 | 
				
			||||||
@kobo.route("/v1/library/tags/<shelf_name>", methods=["POST"])
 | 
					@kobo.route("/v1/library/tags/<shelf_name>", methods=["POST"])
 | 
				
			||||||
@kobo.route("/v1/library/tags/<tag_id>", methods=["DELETE"])
 | 
					@kobo.route("/v1/library/tags/<tag_id>", methods=["DELETE"])
 | 
				
			||||||
def HandleUnimplementedRequest(book_uuid=None, shelf_name=None, tag_id=None):
 | 
					def HandleUnimplementedRequest(book_uuid=None, shelf_name=None, tag_id=None):
 | 
				
			||||||
 | 
					    log.debug("Alternative Request received:")
 | 
				
			||||||
    return redirect_or_proxy_request()
 | 
					    return redirect_or_proxy_request()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					# TODO: Implement the following routes
 | 
				
			||||||
 | 
					@kobo.route("/v1/user/loyalty/<dummy>", methods=["GET", "POST"])
 | 
				
			||||||
 | 
					@kobo.route("/v1/user/profile", methods=["GET", "POST"])
 | 
				
			||||||
 | 
					@kobo.route("/v1/user/wishlist", methods=["GET", "POST"])
 | 
				
			||||||
 | 
					@kobo.route("/v1/user/recommendations", methods=["GET", "POST"])
 | 
				
			||||||
 | 
					@kobo.route("/v1/analytics/<dummy>", methods=["GET", "POST"])
 | 
				
			||||||
 | 
					def HandleUserRequest(dummy=None):
 | 
				
			||||||
 | 
					    log.debug("Unimplemented Request received: %s", request.base_url)
 | 
				
			||||||
 | 
					    return redirect_or_proxy_request()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@kobo.app_errorhandler(404)
 | 
					@kobo.app_errorhandler(404)
 | 
				
			||||||
def handle_404(err):
 | 
					def handle_404(err):
 | 
				
			||||||
    # This handler acts as a catch-all for endpoints that we don't have an interest in
 | 
					    # This handler acts as a catch-all for endpoints that we don't have an interest in
 | 
				
			||||||
    # implementing (e.g: v1/analytics/gettests, v1/user/recommendations, etc)
 | 
					    # implementing (e.g: v1/analytics/gettests, v1/user/recommendations, etc)
 | 
				
			||||||
 | 
					    log.debug("Unknown Request received: %s", request.base_url)
 | 
				
			||||||
    return redirect_or_proxy_request()
 | 
					    return redirect_or_proxy_request()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@kobo.route("/v1/initialization")
 | 
					@kobo.route("/v1/initialization")
 | 
				
			||||||
@login_required
 | 
					@login_required
 | 
				
			||||||
def HandleInitRequest():
 | 
					def HandleInitRequest():
 | 
				
			||||||
 | 
					    if not current_app.wsgi_app.is_proxied:
 | 
				
			||||||
 | 
					        log.debug('Kobo: Received unproxied request, changed request port to server port')
 | 
				
			||||||
 | 
					        calibre_web_url = "{url_scheme}://{url_base}:{url_port}".format(
 | 
				
			||||||
 | 
					            url_scheme=request.environ['wsgi.url_scheme'],
 | 
				
			||||||
 | 
					            url_base=request.environ['SERVER_NAME'],
 | 
				
			||||||
 | 
					            url_port=config.config_port
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        calibre_web_url = url_for("web.index", _external=True).strip("/")
 | 
				
			||||||
 | 
					    if config.config_kobo_proxy:
 | 
				
			||||||
        outgoing_headers = Headers(request.headers)
 | 
					        outgoing_headers = Headers(request.headers)
 | 
				
			||||||
        outgoing_headers.remove("Host")
 | 
					        outgoing_headers.remove("Host")
 | 
				
			||||||
        store_response = requests.request(
 | 
					        store_response = requests.request(
 | 
				
			||||||
| 
						 | 
					@ -422,14 +468,149 @@ def HandleInitRequest():
 | 
				
			||||||
        store_response_json = store_response.json()
 | 
					        store_response_json = store_response.json()
 | 
				
			||||||
        if "Resources" in store_response_json:
 | 
					        if "Resources" in store_response_json:
 | 
				
			||||||
            kobo_resources = store_response_json["Resources"]
 | 
					            kobo_resources = store_response_json["Resources"]
 | 
				
			||||||
 | 
					            # calibre_web_url = url_for("web.index", _external=True).strip("/")
 | 
				
			||||||
        calibre_web_url = url_for("web.index", _external=True).strip("/")
 | 
					 | 
				
			||||||
            kobo_resources["image_host"] = calibre_web_url
 | 
					            kobo_resources["image_host"] = calibre_web_url
 | 
				
			||||||
        kobo_resources["image_url_quality_template"] = unquote(url_for("kobo.HandleCoverImageRequest", _external=True,
 | 
					            kobo_resources["image_url_quality_template"] = unquote(calibre_web_url + url_for("kobo.HandleCoverImageRequest",
 | 
				
			||||||
                auth_token = kobo_auth.get_auth_token(),
 | 
					                auth_token = kobo_auth.get_auth_token(),
 | 
				
			||||||
                book_uuid="{ImageId}"))
 | 
					                book_uuid="{ImageId}"))
 | 
				
			||||||
        kobo_resources["image_url_template"] = unquote(url_for("kobo.HandleCoverImageRequest", _external=True,
 | 
					            kobo_resources["image_url_template"] = unquote(calibre_web_url + url_for("kobo.HandleCoverImageRequest",
 | 
				
			||||||
                auth_token = kobo_auth.get_auth_token(),
 | 
					                auth_token = kobo_auth.get_auth_token(),
 | 
				
			||||||
                book_uuid="{ImageId}"))
 | 
					                book_uuid="{ImageId}"))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return make_response(store_response_json, store_response.status_code)
 | 
					        return make_response(store_response_json, store_response.status_code)
 | 
				
			||||||
 | 
					    else:
 | 
				
			||||||
 | 
					        resources = NATIVE_KOBO_RESOURCES(calibre_web_url)
 | 
				
			||||||
 | 
					        response = make_response(jsonify({"Resources": resources}))
 | 
				
			||||||
 | 
					        response.headers["x-kobo-apitoken"] = "e30="
 | 
				
			||||||
 | 
					        return response
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					def NATIVE_KOBO_RESOURCES(calibre_web_url):
 | 
				
			||||||
 | 
					    return {
 | 
				
			||||||
 | 
					        "account_page": "https://secure.kobobooks.com/profile",
 | 
				
			||||||
 | 
					        "account_page_rakuten": "https://my.rakuten.co.jp/",
 | 
				
			||||||
 | 
					        "add_entitlement": "https://storeapi.kobo.com/v1/library/{RevisionIds}",
 | 
				
			||||||
 | 
					        "affiliaterequest": "https://storeapi.kobo.com/v1/affiliate",
 | 
				
			||||||
 | 
					        "audiobook_subscription_orange_deal_inclusion_url": "https://authorize.kobo.com/inclusion",
 | 
				
			||||||
 | 
					        "authorproduct_recommendations": "https://storeapi.kobo.com/v1/products/books/authors/recommendations",
 | 
				
			||||||
 | 
					        "autocomplete": "https://storeapi.kobo.com/v1/products/autocomplete",
 | 
				
			||||||
 | 
					        "blackstone_header": {"key": "x-amz-request-payer", "value": "requester"},
 | 
				
			||||||
 | 
					        "book": "https://storeapi.kobo.com/v1/products/books/{ProductId}",
 | 
				
			||||||
 | 
					        "book_detail_page": "https://store.kobobooks.com/{culture}/ebook/{slug}",
 | 
				
			||||||
 | 
					        "book_detail_page_rakuten": "http://books.rakuten.co.jp/rk/{crossrevisionid}",
 | 
				
			||||||
 | 
					        "book_landing_page": "https://store.kobobooks.com/ebooks",
 | 
				
			||||||
 | 
					        "book_subscription": "https://storeapi.kobo.com/v1/products/books/subscriptions",
 | 
				
			||||||
 | 
					        "categories": "https://storeapi.kobo.com/v1/categories",
 | 
				
			||||||
 | 
					        "categories_page": "https://store.kobobooks.com/ebooks/categories",
 | 
				
			||||||
 | 
					        "category": "https://storeapi.kobo.com/v1/categories/{CategoryId}",
 | 
				
			||||||
 | 
					        "category_featured_lists": "https://storeapi.kobo.com/v1/categories/{CategoryId}/featured",
 | 
				
			||||||
 | 
					        "category_products": "https://storeapi.kobo.com/v1/categories/{CategoryId}/products",
 | 
				
			||||||
 | 
					        "checkout_borrowed_book": "https://storeapi.kobo.com/v1/library/borrow",
 | 
				
			||||||
 | 
					        "configuration_data": "https://storeapi.kobo.com/v1/configuration",
 | 
				
			||||||
 | 
					        "content_access_book": "https://storeapi.kobo.com/v1/products/books/{ProductId}/access",
 | 
				
			||||||
 | 
					        "customer_care_live_chat": "https://v2.zopim.com/widget/livechat.html?key=Y6gwUmnu4OATxN3Tli4Av9bYN319BTdO",
 | 
				
			||||||
 | 
					        "daily_deal": "https://storeapi.kobo.com/v1/products/dailydeal",
 | 
				
			||||||
 | 
					        "deals": "https://storeapi.kobo.com/v1/deals",
 | 
				
			||||||
 | 
					        "delete_entitlement": "https://storeapi.kobo.com/v1/library/{Ids}",
 | 
				
			||||||
 | 
					        "delete_tag": "https://storeapi.kobo.com/v1/library/tags/{TagId}",
 | 
				
			||||||
 | 
					        "delete_tag_items": "https://storeapi.kobo.com/v1/library/tags/{TagId}/items/delete",
 | 
				
			||||||
 | 
					        "device_auth": "https://storeapi.kobo.com/v1/auth/device",
 | 
				
			||||||
 | 
					        "device_refresh": "https://storeapi.kobo.com/v1/auth/refresh",
 | 
				
			||||||
 | 
					        "dictionary_host": "https://kbdownload1-a.akamaihd.net",
 | 
				
			||||||
 | 
					        "discovery_host": "https://discovery.kobobooks.com",
 | 
				
			||||||
 | 
					        "eula_page": "https://www.kobo.com/termsofuse?style=onestore",
 | 
				
			||||||
 | 
					        "exchange_auth": "https://storeapi.kobo.com/v1/auth/exchange",
 | 
				
			||||||
 | 
					        "external_book": "https://storeapi.kobo.com/v1/products/books/external/{Ids}",
 | 
				
			||||||
 | 
					        "facebook_sso_page": "https://authorize.kobo.com/signin/provider/Facebook/login?returnUrl=http://store.kobobooks.com/",
 | 
				
			||||||
 | 
					        "featured_list": "https://storeapi.kobo.com/v1/products/featured/{FeaturedListId}",
 | 
				
			||||||
 | 
					        "featured_lists": "https://storeapi.kobo.com/v1/products/featured",
 | 
				
			||||||
 | 
					        "free_books_page": {
 | 
				
			||||||
 | 
					            "EN": "https://www.kobo.com/{region}/{language}/p/free-ebooks",
 | 
				
			||||||
 | 
					            "FR": "https://www.kobo.com/{region}/{language}/p/livres-gratuits",
 | 
				
			||||||
 | 
					            "IT": "https://www.kobo.com/{region}/{language}/p/libri-gratuiti",
 | 
				
			||||||
 | 
					            "NL": "https://www.kobo.com/{region}/{language}/List/bekijk-het-overzicht-van-gratis-ebooks/QpkkVWnUw8sxmgjSlCbJRg",
 | 
				
			||||||
 | 
					            "PT": "https://www.kobo.com/{region}/{language}/p/livros-gratis",
 | 
				
			||||||
 | 
					        },
 | 
				
			||||||
 | 
					        "fte_feedback": "https://storeapi.kobo.com/v1/products/ftefeedback",
 | 
				
			||||||
 | 
					        "get_tests_request": "https://storeapi.kobo.com/v1/analytics/gettests",
 | 
				
			||||||
 | 
					        "giftcard_epd_redeem_url": "https://www.kobo.com/{storefront}/{language}/redeem-ereader",
 | 
				
			||||||
 | 
					        "giftcard_redeem_url": "https://www.kobo.com/{storefront}/{language}/redeem",
 | 
				
			||||||
 | 
					        "help_page": "http://www.kobo.com/help",
 | 
				
			||||||
 | 
					        "image_host": calibre_web_url,
 | 
				
			||||||
 | 
					        "image_url_quality_template": unquote(calibre_web_url + url_for("kobo.HandleCoverImageRequest",
 | 
				
			||||||
 | 
					                auth_token = kobo_auth.get_auth_token(),
 | 
				
			||||||
 | 
					                book_uuid="{ImageId}")),
 | 
				
			||||||
 | 
					        "image_url_template":  unquote(calibre_web_url + url_for("kobo.HandleCoverImageRequest",
 | 
				
			||||||
 | 
					                auth_token = kobo_auth.get_auth_token(),
 | 
				
			||||||
 | 
					                book_uuid="{ImageId}")),
 | 
				
			||||||
 | 
					        "kobo_audiobooks_enabled": "False",
 | 
				
			||||||
 | 
					        "kobo_audiobooks_orange_deal_enabled": "False",
 | 
				
			||||||
 | 
					        "kobo_audiobooks_subscriptions_enabled": "False",
 | 
				
			||||||
 | 
					        "kobo_nativeborrow_enabled": "True",
 | 
				
			||||||
 | 
					        "kobo_onestorelibrary_enabled": "False",
 | 
				
			||||||
 | 
					        "kobo_redeem_enabled": "True",
 | 
				
			||||||
 | 
					        "kobo_shelfie_enabled": "False",
 | 
				
			||||||
 | 
					        "kobo_subscriptions_enabled": "False",
 | 
				
			||||||
 | 
					        "kobo_superpoints_enabled": "False",
 | 
				
			||||||
 | 
					        "kobo_wishlist_enabled": "True",
 | 
				
			||||||
 | 
					        "library_book": "https://storeapi.kobo.com/v1/user/library/books/{LibraryItemId}",
 | 
				
			||||||
 | 
					        "library_items": "https://storeapi.kobo.com/v1/user/library",
 | 
				
			||||||
 | 
					        "library_metadata": "https://storeapi.kobo.com/v1/library/{Ids}/metadata",
 | 
				
			||||||
 | 
					        "library_prices": "https://storeapi.kobo.com/v1/user/library/previews/prices",
 | 
				
			||||||
 | 
					        "library_stack": "https://storeapi.kobo.com/v1/user/library/stacks/{LibraryItemId}",
 | 
				
			||||||
 | 
					        "library_sync": "https://storeapi.kobo.com/v1/library/sync",
 | 
				
			||||||
 | 
					        "love_dashboard_page": "https://store.kobobooks.com/{culture}/kobosuperpoints",
 | 
				
			||||||
 | 
					        "love_points_redemption_page": "https://store.kobobooks.com/{culture}/KoboSuperPointsRedemption?productId={ProductId}",
 | 
				
			||||||
 | 
					        "magazine_landing_page": "https://store.kobobooks.com/emagazines",
 | 
				
			||||||
 | 
					        "notifications_registration_issue": "https://storeapi.kobo.com/v1/notifications/registration",
 | 
				
			||||||
 | 
					        "oauth_host": "https://oauth.kobo.com",
 | 
				
			||||||
 | 
					        "overdrive_account": "https://auth.overdrive.com/account",
 | 
				
			||||||
 | 
					        "overdrive_library": "https://{libraryKey}.auth.overdrive.com/library",
 | 
				
			||||||
 | 
					        "overdrive_library_finder_host": "https://libraryfinder.api.overdrive.com",
 | 
				
			||||||
 | 
					        "overdrive_thunder_host": "https://thunder.api.overdrive.com",
 | 
				
			||||||
 | 
					        "password_retrieval_page": "https://www.kobobooks.com/passwordretrieval.html",
 | 
				
			||||||
 | 
					        "post_analytics_event": "https://storeapi.kobo.com/v1/analytics/event",
 | 
				
			||||||
 | 
					        "privacy_page": "https://www.kobo.com/privacypolicy?style=onestore",
 | 
				
			||||||
 | 
					        "product_nextread": "https://storeapi.kobo.com/v1/products/{ProductIds}/nextread",
 | 
				
			||||||
 | 
					        "product_prices": "https://storeapi.kobo.com/v1/products/{ProductIds}/prices",
 | 
				
			||||||
 | 
					        "product_recommendations": "https://storeapi.kobo.com/v1/products/{ProductId}/recommendations",
 | 
				
			||||||
 | 
					        "product_reviews": "https://storeapi.kobo.com/v1/products/{ProductIds}/reviews",
 | 
				
			||||||
 | 
					        "products": "https://storeapi.kobo.com/v1/products",
 | 
				
			||||||
 | 
					        "provider_external_sign_in_page": "https://authorize.kobo.com/ExternalSignIn/{providerName}?returnUrl=http://store.kobobooks.com/",
 | 
				
			||||||
 | 
					        "purchase_buy": "https://www.kobo.com/checkout/createpurchase/",
 | 
				
			||||||
 | 
					        "purchase_buy_templated": "https://www.kobo.com/{culture}/checkout/createpurchase/{ProductId}",
 | 
				
			||||||
 | 
					        "quickbuy_checkout": "https://storeapi.kobo.com/v1/store/quickbuy/{PurchaseId}/checkout",
 | 
				
			||||||
 | 
					        "quickbuy_create": "https://storeapi.kobo.com/v1/store/quickbuy/purchase",
 | 
				
			||||||
 | 
					        "rating": "https://storeapi.kobo.com/v1/products/{ProductId}/rating/{Rating}",
 | 
				
			||||||
 | 
					        "reading_state": "https://storeapi.kobo.com/v1/library/{Ids}/state",
 | 
				
			||||||
 | 
					        "redeem_interstitial_page": "https://store.kobobooks.com",
 | 
				
			||||||
 | 
					        "registration_page": "https://authorize.kobo.com/signup?returnUrl=http://store.kobobooks.com/",
 | 
				
			||||||
 | 
					        "related_items": "https://storeapi.kobo.com/v1/products/{Id}/related",
 | 
				
			||||||
 | 
					        "remaining_book_series": "https://storeapi.kobo.com/v1/products/books/series/{SeriesId}",
 | 
				
			||||||
 | 
					        "rename_tag": "https://storeapi.kobo.com/v1/library/tags/{TagId}",
 | 
				
			||||||
 | 
					        "review": "https://storeapi.kobo.com/v1/products/reviews/{ReviewId}",
 | 
				
			||||||
 | 
					        "review_sentiment": "https://storeapi.kobo.com/v1/products/reviews/{ReviewId}/sentiment/{Sentiment}",
 | 
				
			||||||
 | 
					        "shelfie_recommendations": "https://storeapi.kobo.com/v1/user/recommendations/shelfie",
 | 
				
			||||||
 | 
					        "sign_in_page": "https://authorize.kobo.com/signin?returnUrl=http://store.kobobooks.com/",
 | 
				
			||||||
 | 
					        "social_authorization_host": "https://social.kobobooks.com:8443",
 | 
				
			||||||
 | 
					        "social_host": "https://social.kobobooks.com",
 | 
				
			||||||
 | 
					        "stacks_host_productId": "https://store.kobobooks.com/collections/byproductid/",
 | 
				
			||||||
 | 
					        "store_home": "www.kobo.com/{region}/{language}",
 | 
				
			||||||
 | 
					        "store_host": "store.kobobooks.com",
 | 
				
			||||||
 | 
					        "store_newreleases": "https://store.kobobooks.com/{culture}/List/new-releases/961XUjtsU0qxkFItWOutGA",
 | 
				
			||||||
 | 
					        "store_search": "https://store.kobobooks.com/{culture}/Search?Query={query}",
 | 
				
			||||||
 | 
					        "store_top50": "https://store.kobobooks.com/{culture}/ebooks/Top",
 | 
				
			||||||
 | 
					        "tag_items": "https://storeapi.kobo.com/v1/library/tags/{TagId}/Items",
 | 
				
			||||||
 | 
					        "tags": "https://storeapi.kobo.com/v1/library/tags",
 | 
				
			||||||
 | 
					        "taste_profile": "https://storeapi.kobo.com/v1/products/tasteprofile",
 | 
				
			||||||
 | 
					        "update_accessibility_to_preview": "https://storeapi.kobo.com/v1/library/{EntitlementIds}/preview",
 | 
				
			||||||
 | 
					        "use_one_store": "False",
 | 
				
			||||||
 | 
					        "user_loyalty_benefits": "https://storeapi.kobo.com/v1/user/loyalty/benefits",
 | 
				
			||||||
 | 
					        "user_platform": "https://storeapi.kobo.com/v1/user/platform",
 | 
				
			||||||
 | 
					        "user_profile": "https://storeapi.kobo.com/v1/user/profile",
 | 
				
			||||||
 | 
					        "user_ratings": "https://storeapi.kobo.com/v1/user/ratings",
 | 
				
			||||||
 | 
					        "user_recommendations": "https://storeapi.kobo.com/v1/user/recommendations",
 | 
				
			||||||
 | 
					        "user_reviews": "https://storeapi.kobo.com/v1/user/reviews",
 | 
				
			||||||
 | 
					        "user_wishlist": "https://storeapi.kobo.com/v1/user/wishlist",
 | 
				
			||||||
 | 
					        "userguide_host": "https://kbdownload1-a.akamaihd.net",
 | 
				
			||||||
 | 
					        "wishlist_page": "https://store.kobobooks.com/{region}/{language}/account/wishlist",
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -62,7 +62,7 @@ from datetime import datetime
 | 
				
			||||||
from os import urandom
 | 
					from os import urandom
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from flask import g, Blueprint, url_for
 | 
					from flask import g, Blueprint, url_for
 | 
				
			||||||
from flask_login import login_user, current_user, login_required
 | 
					from flask_login import login_user, login_required
 | 
				
			||||||
from flask_babel import gettext as _
 | 
					from flask_babel import gettext as _
 | 
				
			||||||
 | 
					
 | 
				
			||||||
from . import logger, ub, lm
 | 
					from . import logger, ub, lm
 | 
				
			||||||
| 
						 | 
					@ -102,8 +102,7 @@ def load_user_from_kobo_request(request):
 | 
				
			||||||
            login_user(user)
 | 
					            login_user(user)
 | 
				
			||||||
            return user
 | 
					            return user
 | 
				
			||||||
    log.info("Received Kobo request without a recognizable auth token.")
 | 
					    log.info("Received Kobo request without a recognizable auth token.")
 | 
				
			||||||
    return None
 | 
					    return
 | 
				
			||||||
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
kobo_auth = Blueprint("kobo_auth", __name__, url_prefix="/kobo_auth")
 | 
					kobo_auth = Blueprint("kobo_auth", __name__, url_prefix="/kobo_auth")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -60,10 +60,13 @@ class ReverseProxied(object):
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __init__(self, application):
 | 
					    def __init__(self, application):
 | 
				
			||||||
        self.app = application
 | 
					        self.app = application
 | 
				
			||||||
 | 
					        self.proxied = False
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    def __call__(self, environ, start_response):
 | 
					    def __call__(self, environ, start_response):
 | 
				
			||||||
 | 
					        self.proxied = False
 | 
				
			||||||
        script_name = environ.get('HTTP_X_SCRIPT_NAME', '')
 | 
					        script_name = environ.get('HTTP_X_SCRIPT_NAME', '')
 | 
				
			||||||
        if script_name:
 | 
					        if script_name:
 | 
				
			||||||
 | 
					            self.proxied = True
 | 
				
			||||||
            environ['SCRIPT_NAME'] = script_name
 | 
					            environ['SCRIPT_NAME'] = script_name
 | 
				
			||||||
            path_info = environ.get('PATH_INFO', '')
 | 
					            path_info = environ.get('PATH_INFO', '')
 | 
				
			||||||
            if path_info and path_info.startswith(script_name):
 | 
					            if path_info and path_info.startswith(script_name):
 | 
				
			||||||
| 
						 | 
					@ -76,3 +79,7 @@ class ReverseProxied(object):
 | 
				
			||||||
        if servr:
 | 
					        if servr:
 | 
				
			||||||
            environ['HTTP_HOST'] = servr
 | 
					            environ['HTTP_HOST'] = servr
 | 
				
			||||||
        return self.app(environ, start_response)
 | 
					        return self.app(environ, start_response)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @property
 | 
				
			||||||
 | 
					    def is_proxied(self):
 | 
				
			||||||
 | 
					        return self.proxied
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1,6 +1,6 @@
 | 
				
			||||||
{% extends "layout.html" %}
 | 
					{% extends "layout.html" %}
 | 
				
			||||||
{% block body %}
 | 
					{% block body %}
 | 
				
			||||||
<div class="discover">
 | 
					<div class="discover" xmlns:text-indent="http://www.w3.org/1999/xhtml">
 | 
				
			||||||
  <h2>{{title}}</h2>
 | 
					  <h2>{{title}}</h2>
 | 
				
			||||||
  <form role="form" method="POST" autocomplete="off">
 | 
					  <form role="form" method="POST" autocomplete="off">
 | 
				
			||||||
<div class="panel-group">
 | 
					<div class="panel-group">
 | 
				
			||||||
| 
						 | 
					@ -169,6 +169,18 @@
 | 
				
			||||||
      <input type="checkbox" id="config_remote_login" name="config_remote_login" {% if config.config_remote_login %}checked{% endif %}>
 | 
					      <input type="checkbox" id="config_remote_login" name="config_remote_login" {% if config.config_remote_login %}checked{% endif %}>
 | 
				
			||||||
      <label for="config_remote_login">{{_('Enable remote login ("magic link")')}}</label>
 | 
					      <label for="config_remote_login">{{_('Enable remote login ("magic link")')}}</label>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					    {% if feature_support['kobo'] %}
 | 
				
			||||||
 | 
					    <div class="form-group">
 | 
				
			||||||
 | 
					      <input type="checkbox" id="config_kobo_sync" name="config_kobo_sync" data-control="kobo-settings" {% if config.config_kobo_sync %}checked{% endif %}>
 | 
				
			||||||
 | 
					      <label for="config_kobo_sync">{{_('Enable Kobo sync')}}</label>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    <div data-related="kobo-settings">
 | 
				
			||||||
 | 
					      <div class="form-group" style="text-indent:10px;">
 | 
				
			||||||
 | 
					        <input type="checkbox" id="config_kobo_proxy" name="config_kobo_proxy"  {% if config.config_kobo_proxy %}checked{% endif %}>
 | 
				
			||||||
 | 
					        <label for="config_kobo_proxy">{{_('Proxy unknown requests to Kobo Store')}}</label>
 | 
				
			||||||
 | 
					      </div>
 | 
				
			||||||
 | 
					    </div>
 | 
				
			||||||
 | 
					    {% endif %}
 | 
				
			||||||
    {% if feature_support['goodreads'] %}
 | 
					    {% if feature_support['goodreads'] %}
 | 
				
			||||||
    <div class="form-group">
 | 
					    <div class="form-group">
 | 
				
			||||||
      <input type="checkbox" id="config_use_goodreads" name="config_use_goodreads" data-control="goodreads-settings" {% if config.config_use_goodreads %}checked{% endif %}>
 | 
					      <input type="checkbox" id="config_use_goodreads" name="config_use_goodreads" data-control="goodreads-settings" {% if config.config_use_goodreads %}checked{% endif %}>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -26,6 +26,7 @@
 | 
				
			||||||
      <label for="kindle_mail">{{_('Kindle E-Mail')}}</label>
 | 
					      <label for="kindle_mail">{{_('Kindle E-Mail')}}</label>
 | 
				
			||||||
      <input type="email" class="form-control" name="kindle_mail" id="kindle_mail" value="{{ content.kindle_mail if content.kindle_mail != None }}">
 | 
					      <input type="email" class="form-control" name="kindle_mail" id="kindle_mail" value="{{ content.kindle_mail if content.kindle_mail != None }}">
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					    {% if not content.role_anonymous() %}
 | 
				
			||||||
    <div class="form-group">
 | 
					    <div class="form-group">
 | 
				
			||||||
    <label for="locale">{{_('Language')}}</label>
 | 
					    <label for="locale">{{_('Language')}}</label>
 | 
				
			||||||
        <select name="locale" id="locale" class="form-control">
 | 
					        <select name="locale" id="locale" class="form-control">
 | 
				
			||||||
| 
						 | 
					@ -34,6 +35,8 @@
 | 
				
			||||||
            {% endfor %}
 | 
					            {% endfor %}
 | 
				
			||||||
        </select>
 | 
					        </select>
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
 | 
					    {% endif %}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    <div class="form-group">
 | 
					    <div class="form-group">
 | 
				
			||||||
      <label for="default_language">{{_('Show books with language')}}</label>
 | 
					      <label for="default_language">{{_('Show books with language')}}</label>
 | 
				
			||||||
        <select name="default_language" id="default_language" class="form-control">
 | 
					        <select name="default_language" id="default_language" class="form-control">
 | 
				
			||||||
| 
						 | 
					@ -55,7 +58,7 @@
 | 
				
			||||||
      {% endfor %}
 | 
					      {% endfor %}
 | 
				
			||||||
    </div>
 | 
					    </div>
 | 
				
			||||||
    {% endif %}
 | 
					    {% endif %}
 | 
				
			||||||
    {% if feature_support['kobo'] %}
 | 
					    {% if feature_support['kobo'] and not new_user %}
 | 
				
			||||||
    <label>{{ _('Kobo Sync Token')}}</label>
 | 
					    <label>{{ _('Kobo Sync Token')}}</label>
 | 
				
			||||||
    <div class="form-group col">
 | 
					    <div class="form-group col">
 | 
				
			||||||
      <a class="btn btn-default" id="config_create_kobo_token" data-toggle="modal" data-target="#modal_kobo_token" data-remote="false" href="{{ url_for('kobo_auth.generate_auth_token', user_id=content.id) }}">{{_('Create/View')}}</a>
 | 
					      <a class="btn btn-default" id="config_create_kobo_token" data-toggle="modal" data-target="#modal_kobo_token" data-remote="false" href="{{ url_for('kobo_auth.generate_auth_token', user_id=content.id) }}">{{_('Create/View')}}</a>
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										65
									
								
								cps/tess.py
									
									
									
									
									
								
							
							
						
						
									
										65
									
								
								cps/tess.py
									
									
									
									
									
								
							| 
						 | 
					@ -1,65 +0,0 @@
 | 
				
			||||||
#!/usr/bin/env python
 | 
					 | 
				
			||||||
# -*- coding: utf-8 -*-
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
#  This file is part of the Calibre-Web (https://github.com/janeczku/calibre-web)
 | 
					 | 
				
			||||||
#    Copyright (C) 2018-2019 OzzieIsaacs
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#  This program is free software: you can redistribute it and/or modify
 | 
					 | 
				
			||||||
#  it under the terms of the GNU General Public License as published by
 | 
					 | 
				
			||||||
#  the Free Software Foundation, either version 3 of the License, or
 | 
					 | 
				
			||||||
#  (at your option) any later version.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#  This program is distributed in the hope that it will be useful,
 | 
					 | 
				
			||||||
#  but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					 | 
				
			||||||
#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					 | 
				
			||||||
#  GNU General Public License for more details.
 | 
					 | 
				
			||||||
#
 | 
					 | 
				
			||||||
#  You should have received a copy of the GNU General Public License
 | 
					 | 
				
			||||||
#  along with this program. If not, see <http://www.gnu.org/licenses/>.
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
from subproc_wrapper import process_open, cmdlineCall
 | 
					 | 
				
			||||||
import os
 | 
					 | 
				
			||||||
import sys
 | 
					 | 
				
			||||||
import re
 | 
					 | 
				
			||||||
import time
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
def main():
 | 
					 | 
				
			||||||
    quotes = [1, 2]
 | 
					 | 
				
			||||||
    format_new_ext = '.mobi'
 | 
					 | 
				
			||||||
    format_old_ext = '.epub'
 | 
					 | 
				
			||||||
    file_path = '/home/matthias/Dokumente/bücher/Bettina Szramah/Die Giftmischerin TCP_IP (10)/Die Giftmischerin TCP_IP - Bettina, Szrama'
 | 
					 | 
				
			||||||
    command = ['/opt/calibre/ebook-convert', (file_path + format_old_ext),
 | 
					 | 
				
			||||||
               (file_path + format_new_ext)]
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    #print(command)
 | 
					 | 
				
			||||||
    #p1 = cmdlineCall(command[0],command[1:])
 | 
					 | 
				
			||||||
    #time.sleep(10)
 | 
					 | 
				
			||||||
    #print(p1)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    p = process_open(command, quotes)
 | 
					 | 
				
			||||||
    while p.poll() is None:
 | 
					 | 
				
			||||||
        nextline = p.stdout.readline()
 | 
					 | 
				
			||||||
        if os.name == 'nt' and sys.version_info < (3, 0):
 | 
					 | 
				
			||||||
            nextline = nextline.decode('windows-1252')
 | 
					 | 
				
			||||||
        elif os.name == 'posix' and sys.version_info < (3, 0):
 | 
					 | 
				
			||||||
            nextline = nextline.decode('utf-8')
 | 
					 | 
				
			||||||
        # log.debug(nextline.strip('\r\n'))
 | 
					 | 
				
			||||||
        # parse progress string from calibre-converter
 | 
					 | 
				
			||||||
        progress = re.search(r"(\d+)%\s.*", nextline)
 | 
					 | 
				
			||||||
        if progress:
 | 
					 | 
				
			||||||
            print('Progress:' + str(progress))
 | 
					 | 
				
			||||||
            # self.UIqueue[index]['progress'] = progress.group(1) + ' %
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    # process returncode
 | 
					 | 
				
			||||||
    check = p.returncode
 | 
					 | 
				
			||||||
    calibre_traceback = p.stderr.readlines()
 | 
					 | 
				
			||||||
    for ele in calibre_traceback:
 | 
					 | 
				
			||||||
        if sys.version_info < (3, 0):
 | 
					 | 
				
			||||||
            ele = ele.decode('utf-8')
 | 
					 | 
				
			||||||
        print(ele.strip('\n'))
 | 
					 | 
				
			||||||
        if not ele.startswith('Traceback') and not ele.startswith('  File'):
 | 
					 | 
				
			||||||
            print( "Calibre failed with error: %s" % ele.strip('\n'))
 | 
					 | 
				
			||||||
    print(str(check))
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
if __name__ == '__main__':
 | 
					 | 
				
			||||||
    main()
 | 
					 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -6,7 +6,7 @@ msgid ""
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Project-Id-Version:  Calibre-Web\n"
 | 
					"Project-Id-Version:  Calibre-Web\n"
 | 
				
			||||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
 | 
					"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
 | 
				
			||||||
"POT-Creation-Date: 2020-01-12 13:57+0100\n"
 | 
					"POT-Creation-Date: 2020-01-20 20:31+0100\n"
 | 
				
			||||||
"PO-Revision-Date: 2020-01-08 11:37+0000\n"
 | 
					"PO-Revision-Date: 2020-01-08 11:37+0000\n"
 | 
				
			||||||
"Last-Translator: Lukas Heroudek <lukas.heroudek@gmail.com>\n"
 | 
					"Last-Translator: Lukas Heroudek <lukas.heroudek@gmail.com>\n"
 | 
				
			||||||
"Language: cs_CZ\n"
 | 
					"Language: cs_CZ\n"
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,7 @@ msgstr "Konfigurace Calibre-Web aktualizována"
 | 
				
			||||||
msgid "Basic Configuration"
 | 
					msgid "Basic Configuration"
 | 
				
			||||||
msgstr "Základní konfigurace"
 | 
					msgstr "Základní konfigurace"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:465 cps/web.py:1093
 | 
					#: cps/admin.py:465 cps/web.py:1090
 | 
				
			||||||
msgid "Please fill out all fields!"
 | 
					msgid "Please fill out all fields!"
 | 
				
			||||||
msgstr "Vyplňte všechna pole!"
 | 
					msgstr "Vyplňte všechna pole!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -68,7 +68,7 @@ msgstr "Vyplňte všechna pole!"
 | 
				
			||||||
msgid "Add new user"
 | 
					msgid "Add new user"
 | 
				
			||||||
msgstr "Přidat nového uživatele"
 | 
					msgstr "Přidat nového uživatele"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:476 cps/web.py:1318
 | 
					#: cps/admin.py:476 cps/web.py:1315
 | 
				
			||||||
msgid "E-mail is not from valid domain"
 | 
					msgid "E-mail is not from valid domain"
 | 
				
			||||||
msgstr "E-mail není z platné domény"
 | 
					msgstr "E-mail není z platné domény"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,23 +112,23 @@ msgstr "Uživatel '%(nick)s' smazán"
 | 
				
			||||||
msgid "No admin user remaining, can't delete user"
 | 
					msgid "No admin user remaining, can't delete user"
 | 
				
			||||||
msgstr "Nezbývá žádný správce, nemůžete jej odstranit"
 | 
					msgstr "Nezbývá žádný správce, nemůžete jej odstranit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:612 cps/web.py:1359
 | 
					#: cps/admin.py:612 cps/web.py:1356
 | 
				
			||||||
msgid "Found an existing account for this e-mail address."
 | 
					msgid "Found an existing account for this e-mail address."
 | 
				
			||||||
msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu."
 | 
					msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1334
 | 
					#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1331
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Edit User %(nick)s"
 | 
					msgid "Edit User %(nick)s"
 | 
				
			||||||
msgstr "Upravit uživatele %(nick)s"
 | 
					msgstr "Upravit uživatele %(nick)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:622 cps/web.py:1327
 | 
					#: cps/admin.py:622 cps/web.py:1324
 | 
				
			||||||
msgid "This username is already taken"
 | 
					msgid "This username is already taken"
 | 
				
			||||||
msgstr "Toto uživatelské jméno je již použito"
 | 
					msgstr "Toto uživatelské jméno je již použito"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:637
 | 
					#: cps/admin.py:637
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "User '%(nick)s' updated"
 | 
					msgid "User '%(nick)s' updated"
 | 
				
			||||||
msgstr "Uživatel %(nick)s’ aktualizován"
 | 
					msgstr "Uživatel '%(nick)s' aktualizován"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:640
 | 
					#: cps/admin.py:640
 | 
				
			||||||
msgid "An unknown error occured."
 | 
					msgid "An unknown error occured."
 | 
				
			||||||
| 
						 | 
					@ -139,11 +139,11 @@ msgstr "Došlo k neznámé chybě."
 | 
				
			||||||
msgid "Password for user %(user)s reset"
 | 
					msgid "Password for user %(user)s reset"
 | 
				
			||||||
msgstr "Heslo pro uživatele %(user)s resetováno"
 | 
					msgstr "Heslo pro uživatele %(user)s resetováno"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:660 cps/web.py:1118 cps/web.py:1174
 | 
					#: cps/admin.py:660 cps/web.py:1115 cps/web.py:1171
 | 
				
			||||||
msgid "An unknown error occurred. Please try again later."
 | 
					msgid "An unknown error occurred. Please try again later."
 | 
				
			||||||
msgstr "Neznámá chyba. Opakujte prosím později."
 | 
					msgstr "Neznámá chyba. Opakujte prosím později."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:663 cps/web.py:1062
 | 
					#: cps/admin.py:663 cps/web.py:1059
 | 
				
			||||||
msgid "Please configure the SMTP mail settings first..."
 | 
					msgid "Please configure the SMTP mail settings first..."
 | 
				
			||||||
msgstr "Nejprve nakonfigurujte nastavení pošty SMTP..."
 | 
					msgstr "Nejprve nakonfigurujte nastavení pošty SMTP..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -241,7 +241,7 @@ msgstr "Obal není v podporovaném formátu (jpg/png/webp), nelze uložit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/editbooks.py:451
 | 
					#: cps/editbooks.py:451
 | 
				
			||||||
msgid "Cover is not a jpg file, can't save"
 | 
					msgid "Cover is not a jpg file, can't save"
 | 
				
			||||||
msgstr "Obal neni soubor jpg, nelze uložit"
 | 
					msgstr "Obal není soubor jpg, nelze uložit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/editbooks.py:494
 | 
					#: cps/editbooks.py:494
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
| 
						 | 
					@ -489,7 +489,7 @@ msgstr "Kniha je již součástí police: %(shelfname)s"
 | 
				
			||||||
#: cps/shelf.py:85
 | 
					#: cps/shelf.py:85
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Book has been added to shelf: %(sname)s"
 | 
					msgid "Book has been added to shelf: %(sname)s"
 | 
				
			||||||
msgstr "Kniha byla přidána do plice: %(sname)s"
 | 
					msgstr "Kniha byla přidána do police: %(sname)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/shelf.py:104
 | 
					#: cps/shelf.py:104
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
| 
						 | 
					@ -591,7 +591,7 @@ msgid "Show best rated books"
 | 
				
			||||||
msgstr "Zobrazit nejlépe hodnocené knihy"
 | 
					msgstr "Zobrazit nejlépe hodnocené knihy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
 | 
					#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
 | 
				
			||||||
#: cps/web.py:1011
 | 
					#: cps/web.py:1009
 | 
				
			||||||
msgid "Read Books"
 | 
					msgid "Read Books"
 | 
				
			||||||
msgstr "Přečtené knihy"
 | 
					msgstr "Přečtené knihy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -600,7 +600,7 @@ msgid "Show read and unread"
 | 
				
			||||||
msgstr "Zobrazit prečtené a nepřečtené"
 | 
					msgstr "Zobrazit prečtené a nepřečtené"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
 | 
					#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
 | 
				
			||||||
#: cps/web.py:1015
 | 
					#: cps/web.py:1013
 | 
				
			||||||
msgid "Unread Books"
 | 
					msgid "Unread Books"
 | 
				
			||||||
msgstr "Nepřečtené knihy"
 | 
					msgstr "Nepřečtené knihy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -722,7 +722,7 @@ msgstr "Knihy"
 | 
				
			||||||
msgid "Hot Books (most downloaded)"
 | 
					msgid "Hot Books (most downloaded)"
 | 
				
			||||||
msgstr "Žhavé knihy (nejstahovanější)"
 | 
					msgstr "Žhavé knihy (nejstahovanější)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:586 cps/web.py:1382 cps/web.py:1478
 | 
					#: cps/web.py:586 cps/web.py:1379 cps/web.py:1475
 | 
				
			||||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
 | 
					msgid "Error opening eBook. File does not exist or file is not accessible:"
 | 
				
			||||||
msgstr "Chyba při otevíraní eKnihy. Soubor neexistuje nebo neni přístupný:"
 | 
					msgstr "Chyba při otevíraní eKnihy. Soubor neexistuje nebo neni přístupný:"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -790,128 +790,128 @@ msgid "Tasks"
 | 
				
			||||||
msgstr "Úlohy"
 | 
					msgstr "Úlohy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
 | 
					#: cps/templates/feed.xml:33 cps/templates/layout.html:44
 | 
				
			||||||
#: cps/templates/layout.html:45 cps/web.py:829 cps/web.py:831
 | 
					#: cps/templates/layout.html:45 cps/web.py:827 cps/web.py:829
 | 
				
			||||||
msgid "Search"
 | 
					msgid "Search"
 | 
				
			||||||
msgstr "Hledat"
 | 
					msgstr "Hledat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:881
 | 
					#: cps/web.py:879
 | 
				
			||||||
msgid "Published after "
 | 
					msgid "Published after "
 | 
				
			||||||
msgstr "Vydáno po "
 | 
					msgstr "Vydáno po "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:888
 | 
					#: cps/web.py:886
 | 
				
			||||||
msgid "Published before "
 | 
					msgid "Published before "
 | 
				
			||||||
msgstr "Vydáno před "
 | 
					msgstr "Vydáno před "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:902
 | 
					#: cps/web.py:900
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Rating <= %(rating)s"
 | 
					msgid "Rating <= %(rating)s"
 | 
				
			||||||
msgstr "Hodnocení <= %(rating)s"
 | 
					msgstr "Hodnocení <= %(rating)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:904
 | 
					#: cps/web.py:902
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Rating >= %(rating)s"
 | 
					msgid "Rating >= %(rating)s"
 | 
				
			||||||
msgstr "Hodnocení  >= %(rating)s"
 | 
					msgstr "Hodnocení  >= %(rating)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:970 cps/web.py:982
 | 
					#: cps/web.py:968 cps/web.py:980
 | 
				
			||||||
msgid "search"
 | 
					msgid "search"
 | 
				
			||||||
msgstr "hledat"
 | 
					msgstr "hledat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1067
 | 
					#: cps/web.py:1064
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Book successfully queued for sending to %(kindlemail)s"
 | 
					msgid "Book successfully queued for sending to %(kindlemail)s"
 | 
				
			||||||
msgstr "Kniha byla úspěšně zařazena do fronty pro odeslání na %(kindlemail)s"
 | 
					msgstr "Kniha byla úspěšně zařazena do fronty pro odeslání na %(kindlemail)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1071
 | 
					#: cps/web.py:1068
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "There was an error sending this book: %(res)s"
 | 
					msgid "There was an error sending this book: %(res)s"
 | 
				
			||||||
msgstr "Při odesílání této knihy došlo k chybě: %(res)s"
 | 
					msgstr "Při odesílání této knihy došlo k chybě: %(res)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1073
 | 
					#: cps/web.py:1070
 | 
				
			||||||
msgid "Please configure your kindle e-mail address first..."
 | 
					msgid "Please configure your kindle e-mail address first..."
 | 
				
			||||||
msgstr "Nejprve nakonfigurujte vaši kindle e-mailovou adresu.."
 | 
					msgstr "Nejprve nakonfigurujte vaši kindle e-mailovou adresu.."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1087
 | 
					#: cps/web.py:1084
 | 
				
			||||||
msgid "E-Mail server is not configured, please contact your administrator!"
 | 
					msgid "E-Mail server is not configured, please contact your administrator!"
 | 
				
			||||||
msgstr "E-mailový server není nakonfigurován, kontaktujte svého správce!"
 | 
					msgstr "E-mailový server není nakonfigurován, kontaktujte svého správce!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1088 cps/web.py:1094 cps/web.py:1119 cps/web.py:1123
 | 
					#: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120
 | 
				
			||||||
#: cps/web.py:1128 cps/web.py:1132
 | 
					#: cps/web.py:1125 cps/web.py:1129
 | 
				
			||||||
msgid "register"
 | 
					msgid "register"
 | 
				
			||||||
msgstr "registrovat"
 | 
					msgstr "registrovat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1121
 | 
					#: cps/web.py:1118
 | 
				
			||||||
msgid "Your e-mail is not allowed to register"
 | 
					msgid "Your e-mail is not allowed to register"
 | 
				
			||||||
msgstr "Váš e-mail nemá povolení k registraci"
 | 
					msgstr "Váš e-mail nemá povolení k registraci"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1124
 | 
					#: cps/web.py:1121
 | 
				
			||||||
msgid "Confirmation e-mail was send to your e-mail account."
 | 
					msgid "Confirmation e-mail was send to your e-mail account."
 | 
				
			||||||
msgstr "Potvrzovací e-mail byl odeslán na váš účet."
 | 
					msgstr "Potvrzovací e-mail byl odeslán na váš účet."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1127
 | 
					#: cps/web.py:1124
 | 
				
			||||||
msgid "This username or e-mail address is already in use."
 | 
					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."
 | 
					msgstr "Toto uživatelské jméno nebo e-mailová adresa jsou již používány."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1144
 | 
					#: cps/web.py:1141
 | 
				
			||||||
msgid "Cannot activate LDAP authentication"
 | 
					msgid "Cannot activate LDAP authentication"
 | 
				
			||||||
msgstr "Nelze aktivovat ověření LDAP"
 | 
					msgstr "Nelze aktivovat ověření LDAP"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1154 cps/web.py:1281
 | 
					#: cps/web.py:1151 cps/web.py:1278
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "you are now logged in as: '%(nickname)s'"
 | 
					msgid "you are now logged in as: '%(nickname)s'"
 | 
				
			||||||
msgstr "nyní jste přihlášeni jako: ‘%(nickname)s’"
 | 
					msgstr "nyní jste přihlášeni jako: ‘%(nickname)s’"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1159
 | 
					#: cps/web.py:1156
 | 
				
			||||||
msgid "Could not login. LDAP server down, please contact your administrator"
 | 
					msgid "Could not login. LDAP server down, please contact your administrator"
 | 
				
			||||||
msgstr "Nelze se přihlásit. LDAP server neodpovídá, kontaktujte svého správce"
 | 
					msgstr "Nelze se přihlásit. LDAP server neodpovídá, kontaktujte svého správce"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1163 cps/web.py:1186
 | 
					#: cps/web.py:1160 cps/web.py:1183
 | 
				
			||||||
msgid "Wrong Username or Password"
 | 
					msgid "Wrong Username or Password"
 | 
				
			||||||
msgstr "Špatné uživatelské jméno nebo heslo"
 | 
					msgstr "Špatné uživatelské jméno nebo heslo"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1170
 | 
					#: cps/web.py:1167
 | 
				
			||||||
msgid "New Password was send to your email address"
 | 
					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 váši emailovou adresu"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1176
 | 
					#: cps/web.py:1173
 | 
				
			||||||
msgid "Please enter valid username to reset password"
 | 
					msgid "Please enter valid username to reset password"
 | 
				
			||||||
msgstr "Zadejte platné uživatelské jméno pro obnovení hesla"
 | 
					msgstr "Zadejte platné uživatelské jméno pro obnovení hesla"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1182
 | 
					#: cps/web.py:1179
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "You are now logged in as: '%(nickname)s'"
 | 
					msgid "You are now logged in as: '%(nickname)s'"
 | 
				
			||||||
msgstr "Nyní jste přihlášeni jako: '%(nickname)s'"
 | 
					msgstr "Nyní jste přihlášeni jako: '%(nickname)s'"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1189 cps/web.py:1213
 | 
					#: cps/web.py:1186 cps/web.py:1210
 | 
				
			||||||
msgid "login"
 | 
					msgid "login"
 | 
				
			||||||
msgstr "přihlásit se"
 | 
					msgstr "přihlásit se"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1225 cps/web.py:1259
 | 
					#: cps/web.py:1222 cps/web.py:1256
 | 
				
			||||||
msgid "Token not found"
 | 
					msgid "Token not found"
 | 
				
			||||||
msgstr "Token nenalezen"
 | 
					msgstr "Token nenalezen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1234 cps/web.py:1267
 | 
					#: cps/web.py:1231 cps/web.py:1264
 | 
				
			||||||
msgid "Token has expired"
 | 
					msgid "Token has expired"
 | 
				
			||||||
msgstr "Token vypršel"
 | 
					msgstr "Token vypršel"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1243
 | 
					#: cps/web.py:1240
 | 
				
			||||||
msgid "Success! Please return to your device"
 | 
					msgid "Success! Please return to your device"
 | 
				
			||||||
msgstr "Úspěch! Vraťte se prosím do zařízení"
 | 
					msgstr "Úspěch! Vraťte se prosím do zařízení"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1320 cps/web.py:1363 cps/web.py:1369
 | 
					#: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "%(name)s's profile"
 | 
					msgid "%(name)s's profile"
 | 
				
			||||||
msgstr "%(name)s profil"
 | 
					msgstr "%(name)s profil"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1365
 | 
					#: cps/web.py:1362
 | 
				
			||||||
msgid "Profile updated"
 | 
					msgid "Profile updated"
 | 
				
			||||||
msgstr "Profil aktualizován"
 | 
					msgstr "Profil aktualizován"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1394 cps/web.py:1397 cps/web.py:1400 cps/web.py:1407
 | 
					#: cps/web.py:1391 cps/web.py:1394 cps/web.py:1397 cps/web.py:1404
 | 
				
			||||||
#: cps/web.py:1412
 | 
					#: cps/web.py:1409
 | 
				
			||||||
msgid "Read a Book"
 | 
					msgid "Read a Book"
 | 
				
			||||||
msgstr "Číst knihu"
 | 
					msgstr "Číst knihu"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1423
 | 
					#: cps/web.py:1420
 | 
				
			||||||
msgid "Error opening eBook. File does not exist or file is not accessible."
 | 
					msgid "Error opening eBook. File does not exist or file is not accessible."
 | 
				
			||||||
msgstr "Chyba při otevírání eKnihy. Soubor neexistuje nebo není přístupný"
 | 
					msgstr "Chyba při otevírání eKnihy. Soubor neexistuje nebo není přístupný"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -953,11 +953,11 @@ msgstr "Správce"
 | 
				
			||||||
#: cps/templates/detail.html:27 cps/templates/shelf.html:6
 | 
					#: cps/templates/detail.html:27 cps/templates/shelf.html:6
 | 
				
			||||||
#: cps/templates/shelfdown.html:62
 | 
					#: cps/templates/shelfdown.html:62
 | 
				
			||||||
msgid "Download"
 | 
					msgid "Download"
 | 
				
			||||||
msgstr "Stáhovat"
 | 
					msgstr "Stahovat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/admin.html:18
 | 
					#: cps/templates/admin.html:18
 | 
				
			||||||
msgid "View Ebooks"
 | 
					msgid "View Ebooks"
 | 
				
			||||||
msgstr "Prohlížet eknihy"
 | 
					msgstr "Prohlížet"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/admin.html:19 cps/templates/layout.html:65
 | 
					#: cps/templates/admin.html:19 cps/templates/layout.html:65
 | 
				
			||||||
msgid "Upload"
 | 
					msgid "Upload"
 | 
				
			||||||
| 
						 | 
					@ -1098,7 +1098,7 @@ msgstr "Ok"
 | 
				
			||||||
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
 | 
					#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
 | 
				
			||||||
#: cps/templates/layout.html:28 cps/templates/shelf.html:73
 | 
					#: cps/templates/layout.html:28 cps/templates/shelf.html:73
 | 
				
			||||||
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
 | 
					#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
 | 
				
			||||||
#: cps/templates/user_edit.html:131
 | 
					#: cps/templates/user_edit.html:133
 | 
				
			||||||
msgid "Back"
 | 
					msgid "Back"
 | 
				
			||||||
msgstr "Zpět"
 | 
					msgstr "Zpět"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1211,7 +1211,7 @@ msgstr "Datum vydání"
 | 
				
			||||||
msgid "Publisher"
 | 
					msgid "Publisher"
 | 
				
			||||||
msgstr "Vydavatel"
 | 
					msgstr "Vydavatel"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:30
 | 
					#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:31
 | 
				
			||||||
msgid "Language"
 | 
					msgid "Language"
 | 
				
			||||||
msgstr "Jazyk"
 | 
					msgstr "Jazyk"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1238,7 +1238,7 @@ msgstr "Získat metadata"
 | 
				
			||||||
#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
 | 
					#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
 | 
				
			||||||
#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
 | 
					#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
 | 
				
			||||||
#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
 | 
					#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
 | 
				
			||||||
#: cps/templates/user_edit.html:129
 | 
					#: cps/templates/user_edit.html:131
 | 
				
			||||||
msgid "Submit"
 | 
					msgid "Submit"
 | 
				
			||||||
msgstr "Odeslat"
 | 
					msgstr "Odeslat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1405,7 +1405,7 @@ msgstr "Povolit veřejnou registraci"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_edit.html:170
 | 
					#: cps/templates/config_edit.html:170
 | 
				
			||||||
msgid "Enable remote login (\"magic link\")"
 | 
					msgid "Enable remote login (\"magic link\")"
 | 
				
			||||||
msgstr "Povolit vzdálené přihlášení (\“magic link\”)"
 | 
					msgstr "Povolit vzdálené přihlášení (\\“magic link\\”)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_edit.html:175
 | 
					#: cps/templates/config_edit.html:175
 | 
				
			||||||
msgid "Use Goodreads"
 | 
					msgid "Use Goodreads"
 | 
				
			||||||
| 
						 | 
					@ -1591,35 +1591,35 @@ msgstr "Štítky pro obsah pro dospělé"
 | 
				
			||||||
msgid "Default settings for new users"
 | 
					msgid "Default settings for new users"
 | 
				
			||||||
msgstr "Výchozí nastavení pro nového uživatele"
 | 
					msgstr "Výchozí nastavení pro nového uživatele"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:82
 | 
					#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:84
 | 
				
			||||||
msgid "Admin user"
 | 
					msgid "Admin user"
 | 
				
			||||||
msgstr "Uživatel admin"
 | 
					msgstr "Uživatel admin"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:91
 | 
					#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:93
 | 
				
			||||||
msgid "Allow Downloads"
 | 
					msgid "Allow Downloads"
 | 
				
			||||||
msgstr "Povolit stahování"
 | 
					msgstr "Povolit stahování"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:95
 | 
					#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:97
 | 
				
			||||||
msgid "Allow book viewer"
 | 
					msgid "Allow book viewer"
 | 
				
			||||||
msgstr "Povolit prohlížeč knih"
 | 
					msgstr "Povolit prohlížeč knih"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:99
 | 
					#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:101
 | 
				
			||||||
msgid "Allow Uploads"
 | 
					msgid "Allow Uploads"
 | 
				
			||||||
msgstr "Povolit nahrávání"
 | 
					msgstr "Povolit nahrávání"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:103
 | 
					#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:105
 | 
				
			||||||
msgid "Allow Edit"
 | 
					msgid "Allow Edit"
 | 
				
			||||||
msgstr "Povolit úpravy"
 | 
					msgstr "Povolit úpravy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:107
 | 
					#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:109
 | 
				
			||||||
msgid "Allow Delete books"
 | 
					msgid "Allow Delete books"
 | 
				
			||||||
msgstr "Povolit mazání knih"
 | 
					msgstr "Povolit mazání knih"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:112
 | 
					#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:114
 | 
				
			||||||
msgid "Allow Changing Password"
 | 
					msgid "Allow Changing Password"
 | 
				
			||||||
msgstr "Povolit změnu hesla"
 | 
					msgstr "Povolit změnu hesla"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:116
 | 
					#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:118
 | 
				
			||||||
msgid "Allow Editing Public Shelfs"
 | 
					msgid "Allow Editing Public Shelfs"
 | 
				
			||||||
msgstr "Povolit úpravy veřejných polic"
 | 
					msgstr "Povolit úpravy veřejných polic"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1627,11 +1627,11 @@ msgstr "Povolit úpravy veřejných polic"
 | 
				
			||||||
msgid "Default visibilities for new users"
 | 
					msgid "Default visibilities for new users"
 | 
				
			||||||
msgstr "Výchozí viditelnosti pro nové uživatele"
 | 
					msgstr "Výchozí viditelnosti pro nové uživatele"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:74
 | 
					#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76
 | 
				
			||||||
msgid "Show random books in detail view"
 | 
					msgid "Show random books in detail view"
 | 
				
			||||||
msgstr "Zobrazit náhodné knihy v podrobném zobrazení"
 | 
					msgstr "Zobrazit náhodné knihy v podrobném zobrazení"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:87
 | 
					#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89
 | 
				
			||||||
msgid "Show mature content"
 | 
					msgid "Show mature content"
 | 
				
			||||||
msgstr "Zobrazit obsah pro dospělé"
 | 
					msgstr "Zobrazit obsah pro dospělé"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1665,7 +1665,7 @@ msgstr "Označit jako přečtené"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/detail.html:201
 | 
					#: cps/templates/detail.html:201
 | 
				
			||||||
msgid "Read"
 | 
					msgid "Read"
 | 
				
			||||||
msgstr "Číst"
 | 
					msgstr "Přečteno"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/detail.html:211
 | 
					#: cps/templates/detail.html:211
 | 
				
			||||||
msgid "Description:"
 | 
					msgid "Description:"
 | 
				
			||||||
| 
						 | 
					@ -1910,13 +1910,21 @@ msgstr "Zapomenuté heslo"
 | 
				
			||||||
msgid "Log in with magic link"
 | 
					msgid "Log in with magic link"
 | 
				
			||||||
msgstr "Přihlásit se pomocí magického odkazu"
 | 
					msgstr "Přihlásit se pomocí magického odkazu"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/logviewer.html:5
 | 
					#: cps/templates/logviewer.html:6
 | 
				
			||||||
msgid "Show Calibre-Web log"
 | 
					msgid "Show Calibre-Web log: "
 | 
				
			||||||
msgstr "Zobrazit Calibre-Web log"
 | 
					msgstr "Zobrazit Calibre-Web log: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/logviewer.html:8
 | 
					#: cps/templates/logviewer.html:8
 | 
				
			||||||
msgid "Show access log"
 | 
					msgid "Calibre-Web log: "
 | 
				
			||||||
msgstr "Zobrazit log přístupu"
 | 
					msgstr "Calibre-Web log: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: cps/templates/logviewer.html:8
 | 
				
			||||||
 | 
					msgid "Stream output, can't be displayed"
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: cps/templates/logviewer.html:12
 | 
				
			||||||
 | 
					msgid "Show access log: "
 | 
				
			||||||
 | 
					msgstr "Zobrazit log přístupu: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/osd.xml:5
 | 
					#: cps/templates/osd.xml:5
 | 
				
			||||||
msgid "Calibre-Web ebook catalog"
 | 
					msgid "Calibre-Web ebook catalog"
 | 
				
			||||||
| 
						 | 
					@ -1972,7 +1980,7 @@ msgstr "Světlý"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/readcbr.html:116
 | 
					#: cps/templates/readcbr.html:116
 | 
				
			||||||
msgid "Dark"
 | 
					msgid "Dark"
 | 
				
			||||||
msgstr "Tnavý"
 | 
					msgstr "Tmavý"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/readcbr.html:121
 | 
					#: cps/templates/readcbr.html:121
 | 
				
			||||||
msgid "Scale"
 | 
					msgid "Scale"
 | 
				
			||||||
| 
						 | 
					@ -2140,19 +2148,19 @@ msgstr "Statistika knihovny Calibre"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/stats.html:12
 | 
					#: cps/templates/stats.html:12
 | 
				
			||||||
msgid "Books in this Library"
 | 
					msgid "Books in this Library"
 | 
				
			||||||
msgstr "Knihy v této knihovně"
 | 
					msgstr "Knih v této knihovně"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/stats.html:16
 | 
					#: cps/templates/stats.html:16
 | 
				
			||||||
msgid "Authors in this Library"
 | 
					msgid "Authors in this Library"
 | 
				
			||||||
msgstr "Autoři v této knihovně"
 | 
					msgstr "Autorů v této knihovně"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/stats.html:20
 | 
					#: cps/templates/stats.html:20
 | 
				
			||||||
msgid "Categories in this Library"
 | 
					msgid "Categories in this Library"
 | 
				
			||||||
msgstr "Kategorie v této knihovně"
 | 
					msgstr "Kategorií v této knihovně"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/stats.html:24
 | 
					#: cps/templates/stats.html:24
 | 
				
			||||||
msgid "Series in this Library"
 | 
					msgid "Series in this Library"
 | 
				
			||||||
msgstr "Série v této knihovně"
 | 
					msgstr "Sérií v této knihovně"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/stats.html:28
 | 
					#: cps/templates/stats.html:28
 | 
				
			||||||
msgid "Linked libraries"
 | 
					msgid "Linked libraries"
 | 
				
			||||||
| 
						 | 
					@ -2208,33 +2216,33 @@ msgstr "Resetovat uživatelské heslo"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:26
 | 
					#: cps/templates/user_edit.html:26
 | 
				
			||||||
msgid "Kindle E-Mail"
 | 
					msgid "Kindle E-Mail"
 | 
				
			||||||
msgstr "Kindle E-Mail"
 | 
					msgstr "Kindle e-mail"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:39
 | 
					#: cps/templates/user_edit.html:41
 | 
				
			||||||
msgid "Show books with language"
 | 
					msgid "Show books with language"
 | 
				
			||||||
msgstr "Zobrazit knihy s jazykem"
 | 
					msgstr "Zobrazit knihy s jazykem"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:41
 | 
					#: cps/templates/user_edit.html:43
 | 
				
			||||||
msgid "Show all"
 | 
					msgid "Show all"
 | 
				
			||||||
msgstr "Zobrazit vše"
 | 
					msgstr "Zobrazit vše"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:51
 | 
					#: cps/templates/user_edit.html:53
 | 
				
			||||||
msgid "OAuth Settings"
 | 
					msgid "OAuth Settings"
 | 
				
			||||||
msgstr "Nastavení OAuth"
 | 
					msgstr "Nastavení OAuth"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:53
 | 
					#: cps/templates/user_edit.html:55
 | 
				
			||||||
msgid "Link"
 | 
					msgid "Link"
 | 
				
			||||||
msgstr "Připojit"
 | 
					msgstr "Připojit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:55
 | 
					#: cps/templates/user_edit.html:57
 | 
				
			||||||
msgid "Unlink"
 | 
					msgid "Unlink"
 | 
				
			||||||
msgstr "Odpojit"
 | 
					msgstr "Odpojit"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:123
 | 
					#: cps/templates/user_edit.html:125
 | 
				
			||||||
msgid "Delete this user"
 | 
					msgid "Delete this user"
 | 
				
			||||||
msgstr "Odstranit tohoto uživatele"
 | 
					msgstr "Odstranit tohoto uživatele"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:138
 | 
					#: cps/templates/user_edit.html:140
 | 
				
			||||||
msgid "Recent Downloads"
 | 
					msgid "Recent Downloads"
 | 
				
			||||||
msgstr "Nedávná stahování"
 | 
					msgstr "Nedávná stahování"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -3591,3 +3599,9 @@ msgstr "Nedávná stahování"
 | 
				
			||||||
#~ msgid "Zaza"
 | 
					#~ msgid "Zaza"
 | 
				
			||||||
#~ msgstr "Zaza"
 | 
					#~ msgstr "Zaza"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Show Calibre-Web log"
 | 
				
			||||||
 | 
					#~ msgstr "Zobrazit Calibre-Web log"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Show access log"
 | 
				
			||||||
 | 
					#~ msgstr "Zobrazit log přístupu"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -7,17 +7,16 @@ msgid ""
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Project-Id-Version:  Calibre-Web\n"
 | 
					"Project-Id-Version:  Calibre-Web\n"
 | 
				
			||||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
 | 
					"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
 | 
				
			||||||
"POT-Creation-Date: 2020-01-12 13:57+0100\n"
 | 
					"POT-Creation-Date: 2020-01-18 12:54+0100\n"
 | 
				
			||||||
"PO-Revision-Date: 2020-01-13 18:24+0100\n"
 | 
					"PO-Revision-Date: 2020-01-18 12:52+0100\n"
 | 
				
			||||||
"Last-Translator: Ozzie Isaacs\n"
 | 
					"Last-Translator: Ozzie Isaacs\n"
 | 
				
			||||||
"Language: de\n"
 | 
					"Language: de\n"
 | 
				
			||||||
"Language-Team: \n"
 | 
					"Language-Team: \n"
 | 
				
			||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 | 
					"Plural-Forms: nplurals=2; plural=(n != 1)\n"
 | 
				
			||||||
"MIME-Version: 1.0\n"
 | 
					"MIME-Version: 1.0\n"
 | 
				
			||||||
"Content-Type: text/plain; charset=utf-8\n"
 | 
					"Content-Type: text/plain; charset=utf-8\n"
 | 
				
			||||||
"Content-Transfer-Encoding: 8bit\n"
 | 
					"Content-Transfer-Encoding: 8bit\n"
 | 
				
			||||||
"Generated-By: Babel 2.7.0\n"
 | 
					"Generated-By: Babel 2.7.0\n"
 | 
				
			||||||
"X-Generator: Poedit 2.2.4\n"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/about.py:42
 | 
					#: cps/about.py:42
 | 
				
			||||||
msgid "installed"
 | 
					msgid "installed"
 | 
				
			||||||
| 
						 | 
					@ -61,7 +60,7 @@ msgstr "Konfiguration von Calibre-Web wurde aktualisiert"
 | 
				
			||||||
msgid "Basic Configuration"
 | 
					msgid "Basic Configuration"
 | 
				
			||||||
msgstr "Basiskonfiguration"
 | 
					msgstr "Basiskonfiguration"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:465 cps/web.py:1093
 | 
					#: cps/admin.py:465 cps/web.py:1090
 | 
				
			||||||
msgid "Please fill out all fields!"
 | 
					msgid "Please fill out all fields!"
 | 
				
			||||||
msgstr "Bitte alle Felder ausfüllen!"
 | 
					msgstr "Bitte alle Felder ausfüllen!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -70,7 +69,7 @@ msgstr "Bitte alle Felder ausfüllen!"
 | 
				
			||||||
msgid "Add new user"
 | 
					msgid "Add new user"
 | 
				
			||||||
msgstr "Neuen Benutzer hinzufügen"
 | 
					msgstr "Neuen Benutzer hinzufügen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:476 cps/web.py:1318
 | 
					#: cps/admin.py:476 cps/web.py:1315
 | 
				
			||||||
msgid "E-mail is not from valid domain"
 | 
					msgid "E-mail is not from valid domain"
 | 
				
			||||||
msgstr "E-Mail bezieht sich nicht auf eine gültige Domain"
 | 
					msgstr "E-Mail bezieht sich nicht auf eine gültige Domain"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -114,16 +113,16 @@ msgstr "Benutzer '%(nick)s' gelöscht"
 | 
				
			||||||
msgid "No admin user remaining, can't delete user"
 | 
					msgid "No admin user remaining, can't delete user"
 | 
				
			||||||
msgstr "Benutzer kann nicht gelöscht werden, es wäre kein Admin Benutzer übrig"
 | 
					msgstr "Benutzer kann nicht gelöscht werden, es wäre kein Admin Benutzer übrig"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:612 cps/web.py:1359
 | 
					#: cps/admin.py:612 cps/web.py:1356
 | 
				
			||||||
msgid "Found an existing account for this e-mail address."
 | 
					msgid "Found an existing account for this e-mail address."
 | 
				
			||||||
msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse."
 | 
					msgstr "Es existiert bereits ein Benutzer für diese E-Mailadresse."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1334
 | 
					#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1331
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Edit User %(nick)s"
 | 
					msgid "Edit User %(nick)s"
 | 
				
			||||||
msgstr "Benutzer %(nick)s bearbeiten"
 | 
					msgstr "Benutzer %(nick)s bearbeiten"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:622 cps/web.py:1327
 | 
					#: cps/admin.py:622 cps/web.py:1324
 | 
				
			||||||
msgid "This username is already taken"
 | 
					msgid "This username is already taken"
 | 
				
			||||||
msgstr "Benutzername ist schon vorhanden"
 | 
					msgstr "Benutzername ist schon vorhanden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -141,11 +140,11 @@ msgstr "Es ist ein unbekannter Fehler aufgetreten."
 | 
				
			||||||
msgid "Password for user %(user)s reset"
 | 
					msgid "Password for user %(user)s reset"
 | 
				
			||||||
msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt"
 | 
					msgstr "Passwort für Benutzer %(user)s wurde zurückgesetzt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:660 cps/web.py:1118 cps/web.py:1174
 | 
					#: cps/admin.py:660 cps/web.py:1115 cps/web.py:1171
 | 
				
			||||||
msgid "An unknown error occurred. Please try again later."
 | 
					msgid "An unknown error occurred. Please try again later."
 | 
				
			||||||
msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen."
 | 
					msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:663 cps/web.py:1062
 | 
					#: cps/admin.py:663 cps/web.py:1059
 | 
				
			||||||
msgid "Please configure the SMTP mail settings first..."
 | 
					msgid "Please configure the SMTP mail settings first..."
 | 
				
			||||||
msgstr "Bitte zuerst die SMTP-Einstellung konfigurieren ..."
 | 
					msgstr "Bitte zuerst die SMTP-Einstellung konfigurieren ..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -593,7 +592,7 @@ msgid "Show best rated books"
 | 
				
			||||||
msgstr "Zeige am besten bewertete Bücher"
 | 
					msgstr "Zeige am besten bewertete Bücher"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
 | 
					#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
 | 
				
			||||||
#: cps/web.py:1011
 | 
					#: cps/web.py:1009
 | 
				
			||||||
msgid "Read Books"
 | 
					msgid "Read Books"
 | 
				
			||||||
msgstr "Gelesene Bücher"
 | 
					msgstr "Gelesene Bücher"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -602,7 +601,7 @@ msgid "Show read and unread"
 | 
				
			||||||
msgstr "Zeige gelesene/ungelesene Bücher"
 | 
					msgstr "Zeige gelesene/ungelesene Bücher"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
 | 
					#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
 | 
				
			||||||
#: cps/web.py:1015
 | 
					#: cps/web.py:1013
 | 
				
			||||||
msgid "Unread Books"
 | 
					msgid "Unread Books"
 | 
				
			||||||
msgstr "Ungelesene Bücher"
 | 
					msgstr "Ungelesene Bücher"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -724,7 +723,7 @@ msgstr "Bücher"
 | 
				
			||||||
msgid "Hot Books (most downloaded)"
 | 
					msgid "Hot Books (most downloaded)"
 | 
				
			||||||
msgstr "Beliebte Bücher (am meisten Downloads)"
 | 
					msgstr "Beliebte Bücher (am meisten Downloads)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:586 cps/web.py:1382 cps/web.py:1478
 | 
					#: cps/web.py:586 cps/web.py:1379 cps/web.py:1475
 | 
				
			||||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
 | 
					msgid "Error opening eBook. File does not exist or file is not accessible:"
 | 
				
			||||||
msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich:"
 | 
					msgstr "Öffnen des Buchs fehlgeschlagen. Datei existiert nicht oder ist nicht zugänglich:"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -792,128 +791,128 @@ msgid "Tasks"
 | 
				
			||||||
msgstr "Aufgaben"
 | 
					msgstr "Aufgaben"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
 | 
					#: cps/templates/feed.xml:33 cps/templates/layout.html:44
 | 
				
			||||||
#: cps/templates/layout.html:45 cps/web.py:829 cps/web.py:831
 | 
					#: cps/templates/layout.html:45 cps/web.py:827 cps/web.py:829
 | 
				
			||||||
msgid "Search"
 | 
					msgid "Search"
 | 
				
			||||||
msgstr "Suche"
 | 
					msgstr "Suche"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:881
 | 
					#: cps/web.py:879
 | 
				
			||||||
msgid "Published after "
 | 
					msgid "Published after "
 | 
				
			||||||
msgstr "Herausgegeben nach dem "
 | 
					msgstr "Herausgegeben nach dem "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:888
 | 
					#: cps/web.py:886
 | 
				
			||||||
msgid "Published before "
 | 
					msgid "Published before "
 | 
				
			||||||
msgstr "Herausgegeben vor dem "
 | 
					msgstr "Herausgegeben vor dem "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:902
 | 
					#: cps/web.py:900
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Rating <= %(rating)s"
 | 
					msgid "Rating <= %(rating)s"
 | 
				
			||||||
msgstr "Bewertung <= %(rating)s"
 | 
					msgstr "Bewertung <= %(rating)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:904
 | 
					#: cps/web.py:902
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Rating >= %(rating)s"
 | 
					msgid "Rating >= %(rating)s"
 | 
				
			||||||
msgstr "Bewertung >= %(rating)s"
 | 
					msgstr "Bewertung >= %(rating)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:970 cps/web.py:982
 | 
					#: cps/web.py:968 cps/web.py:980
 | 
				
			||||||
msgid "search"
 | 
					msgid "search"
 | 
				
			||||||
msgstr "Suche"
 | 
					msgstr "Suche"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1067
 | 
					#: cps/web.py:1064
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Book successfully queued for sending to %(kindlemail)s"
 | 
					msgid "Book successfully queued for sending to %(kindlemail)s"
 | 
				
			||||||
msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht"
 | 
					msgstr "Buch erfolgreich zum Senden an %(kindlemail)s eingereiht"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1071
 | 
					#: cps/web.py:1068
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "There was an error sending this book: %(res)s"
 | 
					msgid "There was an error sending this book: %(res)s"
 | 
				
			||||||
msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s"
 | 
					msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1073
 | 
					#: cps/web.py:1070
 | 
				
			||||||
msgid "Please configure your kindle e-mail address first..."
 | 
					msgid "Please configure your kindle e-mail address first..."
 | 
				
			||||||
msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..."
 | 
					msgstr "Bitte zuerst die Kindle E-Mailadresse konfigurieren..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1087
 | 
					#: cps/web.py:1084
 | 
				
			||||||
msgid "E-Mail server is not configured, please contact your administrator!"
 | 
					msgid "E-Mail server is not configured, please contact your administrator!"
 | 
				
			||||||
msgstr "Der E-Mail Server ist nicht konfigurierte, bitte den Administrator kontaktieren!"
 | 
					msgstr "Der E-Mail Server ist nicht konfigurierte, bitte den Administrator kontaktieren!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1088 cps/web.py:1094 cps/web.py:1119 cps/web.py:1123
 | 
					#: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120
 | 
				
			||||||
#: cps/web.py:1128 cps/web.py:1132
 | 
					#: cps/web.py:1125 cps/web.py:1129
 | 
				
			||||||
msgid "register"
 | 
					msgid "register"
 | 
				
			||||||
msgstr "Registieren"
 | 
					msgstr "Registieren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1121
 | 
					#: cps/web.py:1118
 | 
				
			||||||
msgid "Your e-mail is not allowed to register"
 | 
					msgid "Your e-mail is not allowed to register"
 | 
				
			||||||
msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen"
 | 
					msgstr "Diese E-Mail ist nicht für die Registrierung zugelassen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1124
 | 
					#: cps/web.py:1121
 | 
				
			||||||
msgid "Confirmation e-mail was send to your e-mail account."
 | 
					msgid "Confirmation e-mail was send to your e-mail account."
 | 
				
			||||||
msgstr "Eine Bestätigungs-E-Mail wurde an deinen E-Mail Account versendet."
 | 
					msgstr "Eine Bestätigungs-E-Mail wurde an deinen E-Mail Account versendet."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1127
 | 
					#: cps/web.py:1124
 | 
				
			||||||
msgid "This username or e-mail address is already in use."
 | 
					msgid "This username or e-mail address is already in use."
 | 
				
			||||||
msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung."
 | 
					msgstr "Benutzername oder E-Mailadresse ist bereits in Verwendung."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1144
 | 
					#: cps/web.py:1141
 | 
				
			||||||
msgid "Cannot activate LDAP authentication"
 | 
					msgid "Cannot activate LDAP authentication"
 | 
				
			||||||
msgstr "LDAP-Authentifizierung kann nicht aktiviert werden"
 | 
					msgstr "LDAP-Authentifizierung kann nicht aktiviert werden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1154 cps/web.py:1281
 | 
					#: cps/web.py:1151 cps/web.py:1278
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "you are now logged in as: '%(nickname)s'"
 | 
					msgid "you are now logged in as: '%(nickname)s'"
 | 
				
			||||||
msgstr "Du bist nun eingeloggt als '%(nickname)s'"
 | 
					msgstr "Du bist nun eingeloggt als '%(nickname)s'"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1159
 | 
					#: cps/web.py:1156
 | 
				
			||||||
msgid "Could not login. LDAP server down, please contact your administrator"
 | 
					msgid "Could not login. LDAP server down, please contact your administrator"
 | 
				
			||||||
msgstr "Login nicht erfolgreich, LDAP Server nicht erreichbar, bitte Administrator kontaktieren"
 | 
					msgstr "Login nicht erfolgreich, LDAP Server nicht erreichbar, bitte Administrator kontaktieren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1163 cps/web.py:1186
 | 
					#: cps/web.py:1160 cps/web.py:1183
 | 
				
			||||||
msgid "Wrong Username or Password"
 | 
					msgid "Wrong Username or Password"
 | 
				
			||||||
msgstr "Falscher Benutzername oder Passwort"
 | 
					msgstr "Falscher Benutzername oder Passwort"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1170
 | 
					#: cps/web.py:1167
 | 
				
			||||||
msgid "New Password was send to your email address"
 | 
					msgid "New Password was send to your email address"
 | 
				
			||||||
msgstr "Das neue Passwort wurde an die E-Mail Adresse verschickt"
 | 
					msgstr "Das neue Passwort wurde an die E-Mail Adresse verschickt"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1176
 | 
					#: cps/web.py:1173
 | 
				
			||||||
msgid "Please enter valid username to reset password"
 | 
					msgid "Please enter valid username to reset password"
 | 
				
			||||||
msgstr "Bitte einen gültigen Benutzernamen zum Zurücksetzen des Passworts angeben"
 | 
					msgstr "Bitte einen gültigen Benutzernamen zum Zurücksetzen des Passworts angeben"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1182
 | 
					#: cps/web.py:1179
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "You are now logged in as: '%(nickname)s'"
 | 
					msgid "You are now logged in as: '%(nickname)s'"
 | 
				
			||||||
msgstr "Eingeloggt als: '%(nickname)s'"
 | 
					msgstr "Eingeloggt als: '%(nickname)s'"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1189 cps/web.py:1213
 | 
					#: cps/web.py:1186 cps/web.py:1210
 | 
				
			||||||
msgid "login"
 | 
					msgid "login"
 | 
				
			||||||
msgstr "Login"
 | 
					msgstr "Login"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1225 cps/web.py:1259
 | 
					#: cps/web.py:1222 cps/web.py:1256
 | 
				
			||||||
msgid "Token not found"
 | 
					msgid "Token not found"
 | 
				
			||||||
msgstr "Token wurde nicht gefunden"
 | 
					msgstr "Token wurde nicht gefunden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1234 cps/web.py:1267
 | 
					#: cps/web.py:1231 cps/web.py:1264
 | 
				
			||||||
msgid "Token has expired"
 | 
					msgid "Token has expired"
 | 
				
			||||||
msgstr "Das Token ist abgelaufen"
 | 
					msgstr "Das Token ist abgelaufen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1243
 | 
					#: cps/web.py:1240
 | 
				
			||||||
msgid "Success! Please return to your device"
 | 
					msgid "Success! Please return to your device"
 | 
				
			||||||
msgstr "Erfolg! Bitte zum Gerät zurückkehren"
 | 
					msgstr "Erfolg! Bitte zum Gerät zurückkehren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1320 cps/web.py:1363 cps/web.py:1369
 | 
					#: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "%(name)s's profile"
 | 
					msgid "%(name)s's profile"
 | 
				
			||||||
msgstr "%(name)s's Profil"
 | 
					msgstr "%(name)s's Profil"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1365
 | 
					#: cps/web.py:1362
 | 
				
			||||||
msgid "Profile updated"
 | 
					msgid "Profile updated"
 | 
				
			||||||
msgstr "Profil aktualisiert"
 | 
					msgstr "Profil aktualisiert"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1394 cps/web.py:1397 cps/web.py:1400 cps/web.py:1407
 | 
					#: cps/web.py:1391 cps/web.py:1394 cps/web.py:1397 cps/web.py:1404
 | 
				
			||||||
#: cps/web.py:1412
 | 
					#: cps/web.py:1409
 | 
				
			||||||
msgid "Read a Book"
 | 
					msgid "Read a Book"
 | 
				
			||||||
msgstr "Lese ein Buch"
 | 
					msgstr "Lese ein Buch"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1423
 | 
					#: cps/web.py:1420
 | 
				
			||||||
msgid "Error opening eBook. File does not exist or file is not accessible."
 | 
					msgid "Error opening eBook. File does not exist or file is not accessible."
 | 
				
			||||||
msgstr "Fehler beim Öffnen des eBooks. Datei existiert nicht oder ist nicht zugänglich."
 | 
					msgstr "Fehler beim Öffnen des eBooks. Datei existiert nicht oder ist nicht zugänglich."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1100,7 +1099,7 @@ msgstr "OK"
 | 
				
			||||||
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
 | 
					#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
 | 
				
			||||||
#: cps/templates/layout.html:28 cps/templates/shelf.html:73
 | 
					#: cps/templates/layout.html:28 cps/templates/shelf.html:73
 | 
				
			||||||
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
 | 
					#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
 | 
				
			||||||
#: cps/templates/user_edit.html:131
 | 
					#: cps/templates/user_edit.html:133
 | 
				
			||||||
msgid "Back"
 | 
					msgid "Back"
 | 
				
			||||||
msgstr "Zurück"
 | 
					msgstr "Zurück"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1213,7 +1212,7 @@ msgstr "Herausgabedatum"
 | 
				
			||||||
msgid "Publisher"
 | 
					msgid "Publisher"
 | 
				
			||||||
msgstr "Herausgeber"
 | 
					msgstr "Herausgeber"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:30
 | 
					#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:31
 | 
				
			||||||
msgid "Language"
 | 
					msgid "Language"
 | 
				
			||||||
msgstr "Sprache"
 | 
					msgstr "Sprache"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1240,7 +1239,7 @@ msgstr "Metadaten laden"
 | 
				
			||||||
#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
 | 
					#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
 | 
				
			||||||
#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
 | 
					#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
 | 
				
			||||||
#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
 | 
					#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
 | 
				
			||||||
#: cps/templates/user_edit.html:129
 | 
					#: cps/templates/user_edit.html:131
 | 
				
			||||||
msgid "Submit"
 | 
					msgid "Submit"
 | 
				
			||||||
msgstr "Abschicken"
 | 
					msgstr "Abschicken"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1593,35 +1592,35 @@ msgstr "Kategorien für Erwachseneninhalte"
 | 
				
			||||||
msgid "Default settings for new users"
 | 
					msgid "Default settings for new users"
 | 
				
			||||||
msgstr "Standard-Einstellungen für neue Benutzer"
 | 
					msgstr "Standard-Einstellungen für neue Benutzer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:82
 | 
					#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:84
 | 
				
			||||||
msgid "Admin user"
 | 
					msgid "Admin user"
 | 
				
			||||||
msgstr "Administrator"
 | 
					msgstr "Administrator"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:91
 | 
					#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:93
 | 
				
			||||||
msgid "Allow Downloads"
 | 
					msgid "Allow Downloads"
 | 
				
			||||||
msgstr "Downloads erlauben"
 | 
					msgstr "Downloads erlauben"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:95
 | 
					#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:97
 | 
				
			||||||
msgid "Allow book viewer"
 | 
					msgid "Allow book viewer"
 | 
				
			||||||
msgstr "Anzeige von Büchern erlauben"
 | 
					msgstr "Anzeige von Büchern erlauben"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:99
 | 
					#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:101
 | 
				
			||||||
msgid "Allow Uploads"
 | 
					msgid "Allow Uploads"
 | 
				
			||||||
msgstr "Hochladen erlauben"
 | 
					msgstr "Hochladen erlauben"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:103
 | 
					#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:105
 | 
				
			||||||
msgid "Allow Edit"
 | 
					msgid "Allow Edit"
 | 
				
			||||||
msgstr "Bearbeiten erlauben"
 | 
					msgstr "Bearbeiten erlauben"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:107
 | 
					#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:109
 | 
				
			||||||
msgid "Allow Delete books"
 | 
					msgid "Allow Delete books"
 | 
				
			||||||
msgstr "Löschen von Büchern erlauben"
 | 
					msgstr "Löschen von Büchern erlauben"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:112
 | 
					#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:114
 | 
				
			||||||
msgid "Allow Changing Password"
 | 
					msgid "Allow Changing Password"
 | 
				
			||||||
msgstr "Ändern des Passworts erlauben"
 | 
					msgstr "Ändern des Passworts erlauben"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:116
 | 
					#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:118
 | 
				
			||||||
msgid "Allow Editing Public Shelfs"
 | 
					msgid "Allow Editing Public Shelfs"
 | 
				
			||||||
msgstr "Editieren öffentlicher Bücherregale erlauben"
 | 
					msgstr "Editieren öffentlicher Bücherregale erlauben"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1629,11 +1628,11 @@ msgstr "Editieren öffentlicher Bücherregale erlauben"
 | 
				
			||||||
msgid "Default visibilities for new users"
 | 
					msgid "Default visibilities for new users"
 | 
				
			||||||
msgstr "Standard-Sichtbarkeiten für neue Benutzer"
 | 
					msgstr "Standard-Sichtbarkeiten für neue Benutzer"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:74
 | 
					#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76
 | 
				
			||||||
msgid "Show random books in detail view"
 | 
					msgid "Show random books in detail view"
 | 
				
			||||||
msgstr "Zeige zufällige Bücher in der Detailansicht"
 | 
					msgstr "Zeige zufällige Bücher in der Detailansicht"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:87
 | 
					#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89
 | 
				
			||||||
msgid "Show mature content"
 | 
					msgid "Show mature content"
 | 
				
			||||||
msgstr "Erwachseneninhalte anzeigen"
 | 
					msgstr "Erwachseneninhalte anzeigen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1912,13 +1911,21 @@ msgstr "Passwort vergessen"
 | 
				
			||||||
msgid "Log in with magic link"
 | 
					msgid "Log in with magic link"
 | 
				
			||||||
msgstr "Einloggen mit magischem Link"
 | 
					msgstr "Einloggen mit magischem Link"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/logviewer.html:5
 | 
					#: cps/templates/logviewer.html:6
 | 
				
			||||||
msgid "Show Calibre-Web log"
 | 
					msgid "Show Calibre-Web log: "
 | 
				
			||||||
msgstr "Zeige Calibre-Web Logdatei"
 | 
					msgstr "Calibre-Web Logdatei anzeigen:  "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/logviewer.html:8
 | 
					#: cps/templates/logviewer.html:8
 | 
				
			||||||
msgid "Show access log"
 | 
					msgid "Calibre-Web log: "
 | 
				
			||||||
msgstr "Zeige Zugriffslogdatei"
 | 
					msgstr "Calibre-Web Logdatei: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: cps/templates/logviewer.html:8
 | 
				
			||||||
 | 
					msgid "Stream output, can't be displayed"
 | 
				
			||||||
 | 
					msgstr "Stream Ausgabe, kann nicht angezeigt werden"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: cps/templates/logviewer.html:12
 | 
				
			||||||
 | 
					msgid "Show access log: "
 | 
				
			||||||
 | 
					msgstr "Zugriffslogbuch anzeigen: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/osd.xml:5
 | 
					#: cps/templates/osd.xml:5
 | 
				
			||||||
msgid "Calibre-Web ebook catalog"
 | 
					msgid "Calibre-Web ebook catalog"
 | 
				
			||||||
| 
						 | 
					@ -2212,31 +2219,31 @@ msgstr "Benutzerpasswort zurücksetzen"
 | 
				
			||||||
msgid "Kindle E-Mail"
 | 
					msgid "Kindle E-Mail"
 | 
				
			||||||
msgstr "Kindle E-Mail"
 | 
					msgstr "Kindle E-Mail"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:39
 | 
					#: cps/templates/user_edit.html:41
 | 
				
			||||||
msgid "Show books with language"
 | 
					msgid "Show books with language"
 | 
				
			||||||
msgstr "Zeige nur Bücher mit dieser Sprache"
 | 
					msgstr "Zeige nur Bücher mit dieser Sprache"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:41
 | 
					#: cps/templates/user_edit.html:43
 | 
				
			||||||
msgid "Show all"
 | 
					msgid "Show all"
 | 
				
			||||||
msgstr "Zeige alle"
 | 
					msgstr "Zeige alle"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:51
 | 
					#: cps/templates/user_edit.html:53
 | 
				
			||||||
msgid "OAuth Settings"
 | 
					msgid "OAuth Settings"
 | 
				
			||||||
msgstr "Oauth Einstellungen"
 | 
					msgstr "Oauth Einstellungen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:53
 | 
					#: cps/templates/user_edit.html:55
 | 
				
			||||||
msgid "Link"
 | 
					msgid "Link"
 | 
				
			||||||
msgstr "Verknüpfung herstellen"
 | 
					msgstr "Verknüpfung herstellen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:55
 | 
					#: cps/templates/user_edit.html:57
 | 
				
			||||||
msgid "Unlink"
 | 
					msgid "Unlink"
 | 
				
			||||||
msgstr "Verknüpfung entfernen"
 | 
					msgstr "Verknüpfung entfernen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:123
 | 
					#: cps/templates/user_edit.html:125
 | 
				
			||||||
msgid "Delete this user"
 | 
					msgid "Delete this user"
 | 
				
			||||||
msgstr "Benutzer löschen"
 | 
					msgstr "Benutzer löschen"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:138
 | 
					#: cps/templates/user_edit.html:140
 | 
				
			||||||
msgid "Recent Downloads"
 | 
					msgid "Recent Downloads"
 | 
				
			||||||
msgstr "Letzte Downloads"
 | 
					msgstr "Letzte Downloads"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2374,3 +2381,10 @@ msgstr "Letzte Downloads"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#~ msgid "New Books"
 | 
					#~ msgid "New Books"
 | 
				
			||||||
#~ msgstr "Neue Bücher"
 | 
					#~ msgstr "Neue Bücher"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Show Calibre-Web log"
 | 
				
			||||||
 | 
					#~ msgstr "Zeige Calibre-Web Logdatei"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Show access log"
 | 
				
			||||||
 | 
					#~ msgstr "Zeige Zugriffslogdatei"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
										
											Binary file not shown.
										
									
								
							| 
						 | 
					@ -7,8 +7,8 @@ msgid ""
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Project-Id-Version:  Calibre-Web\n"
 | 
					"Project-Id-Version:  Calibre-Web\n"
 | 
				
			||||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
 | 
					"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
 | 
				
			||||||
"POT-Creation-Date: 2020-01-12 13:57+0100\n"
 | 
					"POT-Creation-Date: 2020-01-18 12:28+0100\n"
 | 
				
			||||||
"PO-Revision-Date: 2019-11-14 18:50+0100\n"
 | 
					"PO-Revision-Date: 2020-01-18 11:22+0100\n"
 | 
				
			||||||
"Last-Translator: Jonatan Nyberg <jonatan.nyberg.karl@gmail.com>\n"
 | 
					"Last-Translator: Jonatan Nyberg <jonatan.nyberg.karl@gmail.com>\n"
 | 
				
			||||||
"Language: sv\n"
 | 
					"Language: sv\n"
 | 
				
			||||||
"Language-Team: \n"
 | 
					"Language-Team: \n"
 | 
				
			||||||
| 
						 | 
					@ -60,7 +60,7 @@ msgstr "Calibre-Web konfiguration uppdaterad"
 | 
				
			||||||
msgid "Basic Configuration"
 | 
					msgid "Basic Configuration"
 | 
				
			||||||
msgstr "Grundläggande konfiguration"
 | 
					msgstr "Grundläggande konfiguration"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:465 cps/web.py:1093
 | 
					#: cps/admin.py:465 cps/web.py:1090
 | 
				
			||||||
msgid "Please fill out all fields!"
 | 
					msgid "Please fill out all fields!"
 | 
				
			||||||
msgstr "Fyll i alla fält!"
 | 
					msgstr "Fyll i alla fält!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -69,7 +69,7 @@ msgstr "Fyll i alla fält!"
 | 
				
			||||||
msgid "Add new user"
 | 
					msgid "Add new user"
 | 
				
			||||||
msgstr "Lägg till ny användare"
 | 
					msgstr "Lägg till ny användare"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:476 cps/web.py:1318
 | 
					#: cps/admin.py:476 cps/web.py:1315
 | 
				
			||||||
msgid "E-mail is not from valid domain"
 | 
					msgid "E-mail is not from valid domain"
 | 
				
			||||||
msgstr "E-posten är inte från giltig domän"
 | 
					msgstr "E-posten är inte från giltig domän"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -98,7 +98,7 @@ msgstr "Det gick inte att skicka Testmeddelandet: %(res)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:540
 | 
					#: cps/admin.py:540
 | 
				
			||||||
msgid "Please configure your e-mail address first..."
 | 
					msgid "Please configure your e-mail address first..."
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Vänligen konfigurera din e-postadress först..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:542
 | 
					#: cps/admin.py:542
 | 
				
			||||||
msgid "E-mail server settings updated"
 | 
					msgid "E-mail server settings updated"
 | 
				
			||||||
| 
						 | 
					@ -113,18 +113,18 @@ msgstr "Användaren '%(nick)s' borttagen"
 | 
				
			||||||
msgid "No admin user remaining, can't delete user"
 | 
					msgid "No admin user remaining, can't delete user"
 | 
				
			||||||
msgstr "Ingen adminstratörsanvändare kvar, kan inte ta bort användaren"
 | 
					msgstr "Ingen adminstratörsanvändare kvar, kan inte ta bort användaren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:612 cps/web.py:1359
 | 
					#: cps/admin.py:612 cps/web.py:1356
 | 
				
			||||||
msgid "Found an existing account for this e-mail address."
 | 
					msgid "Found an existing account for this e-mail address."
 | 
				
			||||||
msgstr "Hittade ett befintligt konto för den här e-postadressen."
 | 
					msgstr "Hittade ett befintligt konto för den här e-postadressen."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1334
 | 
					#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1331
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Edit User %(nick)s"
 | 
					msgid "Edit User %(nick)s"
 | 
				
			||||||
msgstr "Redigera användaren %(nick)s"
 | 
					msgstr "Redigera användaren %(nick)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:622 cps/web.py:1327
 | 
					#: cps/admin.py:622 cps/web.py:1324
 | 
				
			||||||
msgid "This username is already taken"
 | 
					msgid "This username is already taken"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Detta användarnamn är redan taget"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:637
 | 
					#: cps/admin.py:637
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
| 
						 | 
					@ -140,11 +140,11 @@ msgstr "Ett okänt fel uppstod."
 | 
				
			||||||
msgid "Password for user %(user)s reset"
 | 
					msgid "Password for user %(user)s reset"
 | 
				
			||||||
msgstr "Lösenord för användaren %(user)s återställd"
 | 
					msgstr "Lösenord för användaren %(user)s återställd"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:660 cps/web.py:1118 cps/web.py:1174
 | 
					#: cps/admin.py:660 cps/web.py:1115 cps/web.py:1171
 | 
				
			||||||
msgid "An unknown error occurred. Please try again later."
 | 
					msgid "An unknown error occurred. Please try again later."
 | 
				
			||||||
msgstr "Ett okänt fel uppstod. Försök igen senare."
 | 
					msgstr "Ett okänt fel uppstod. Försök igen senare."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:663 cps/web.py:1062
 | 
					#: cps/admin.py:663 cps/web.py:1059
 | 
				
			||||||
msgid "Please configure the SMTP mail settings first..."
 | 
					msgid "Please configure the SMTP mail settings first..."
 | 
				
			||||||
msgstr "Konfigurera SMTP-postinställningarna först..."
 | 
					msgstr "Konfigurera SMTP-postinställningarna först..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -260,11 +260,11 @@ msgstr "Det gick inte att redigera boken, kontrollera loggfilen för mer informa
 | 
				
			||||||
#: cps/editbooks.py:581
 | 
					#: cps/editbooks.py:581
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "File %(filename)s could not saved to temp dir"
 | 
					msgid "File %(filename)s could not saved to temp dir"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Filen %(filename)s kunde inte sparas i temp dir"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/editbooks.py:598
 | 
					#: cps/editbooks.py:598
 | 
				
			||||||
msgid "Uploaded book probably exists in the library, consider to change before upload new: "
 | 
					msgid "Uploaded book probably exists in the library, consider to change before upload new: "
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Uppladdad bok finns förmodligen i biblioteket, överväg att ändra innan du laddar upp nya: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/editbooks.py:613
 | 
					#: cps/editbooks.py:613
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
| 
						 | 
					@ -592,7 +592,7 @@ msgid "Show best rated books"
 | 
				
			||||||
msgstr "Visa böcker med bästa betyg"
 | 
					msgstr "Visa böcker med bästa betyg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
 | 
					#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
 | 
				
			||||||
#: cps/web.py:1011
 | 
					#: cps/web.py:1009
 | 
				
			||||||
msgid "Read Books"
 | 
					msgid "Read Books"
 | 
				
			||||||
msgstr "Lästa böcker"
 | 
					msgstr "Lästa böcker"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -601,7 +601,7 @@ msgid "Show read and unread"
 | 
				
			||||||
msgstr "Visa lästa och olästa"
 | 
					msgstr "Visa lästa och olästa"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
 | 
					#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
 | 
				
			||||||
#: cps/web.py:1015
 | 
					#: cps/web.py:1013
 | 
				
			||||||
msgid "Unread Books"
 | 
					msgid "Unread Books"
 | 
				
			||||||
msgstr "Olästa böcker"
 | 
					msgstr "Olästa böcker"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -723,7 +723,7 @@ msgstr "Böcker"
 | 
				
			||||||
msgid "Hot Books (most downloaded)"
 | 
					msgid "Hot Books (most downloaded)"
 | 
				
			||||||
msgstr "Heta böcker (mest hämtade)"
 | 
					msgstr "Heta böcker (mest hämtade)"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:586 cps/web.py:1382 cps/web.py:1478
 | 
					#: cps/web.py:586 cps/web.py:1379 cps/web.py:1475
 | 
				
			||||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
 | 
					msgid "Error opening eBook. File does not exist or file is not accessible:"
 | 
				
			||||||
msgstr "Fel vid öppnande av e-bok. Filen finns inte eller filen är inte tillgänglig:"
 | 
					msgstr "Fel vid öppnande av e-bok. Filen finns inte eller filen är inte tillgänglig:"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -791,128 +791,128 @@ msgid "Tasks"
 | 
				
			||||||
msgstr "Uppgifter"
 | 
					msgstr "Uppgifter"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
 | 
					#: cps/templates/feed.xml:33 cps/templates/layout.html:44
 | 
				
			||||||
#: cps/templates/layout.html:45 cps/web.py:829 cps/web.py:831
 | 
					#: cps/templates/layout.html:45 cps/web.py:827 cps/web.py:829
 | 
				
			||||||
msgid "Search"
 | 
					msgid "Search"
 | 
				
			||||||
msgstr "Sök"
 | 
					msgstr "Sök"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:881
 | 
					#: cps/web.py:879
 | 
				
			||||||
msgid "Published after "
 | 
					msgid "Published after "
 | 
				
			||||||
msgstr "Publicerad efter "
 | 
					msgstr "Publicerad efter "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:888
 | 
					#: cps/web.py:886
 | 
				
			||||||
msgid "Published before "
 | 
					msgid "Published before "
 | 
				
			||||||
msgstr "Publicerad före "
 | 
					msgstr "Publicerad före "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:902
 | 
					#: cps/web.py:900
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Rating <= %(rating)s"
 | 
					msgid "Rating <= %(rating)s"
 | 
				
			||||||
msgstr "Betyg <= %(rating)s"
 | 
					msgstr "Betyg <= %(rating)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:904
 | 
					#: cps/web.py:902
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Rating >= %(rating)s"
 | 
					msgid "Rating >= %(rating)s"
 | 
				
			||||||
msgstr "Betyg >= %(rating)s"
 | 
					msgstr "Betyg >= %(rating)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:970 cps/web.py:982
 | 
					#: cps/web.py:968 cps/web.py:980
 | 
				
			||||||
msgid "search"
 | 
					msgid "search"
 | 
				
			||||||
msgstr "sök"
 | 
					msgstr "sök"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1067
 | 
					#: cps/web.py:1064
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Book successfully queued for sending to %(kindlemail)s"
 | 
					msgid "Book successfully queued for sending to %(kindlemail)s"
 | 
				
			||||||
msgstr "Boken är i kö för att skicka till %(kindlemail)s"
 | 
					msgstr "Boken är i kö för att skicka till %(kindlemail)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1071
 | 
					#: cps/web.py:1068
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "There was an error sending this book: %(res)s"
 | 
					msgid "There was an error sending this book: %(res)s"
 | 
				
			||||||
msgstr "Det gick inte att skicka den här boken: %(res)s"
 | 
					msgstr "Det gick inte att skicka den här boken: %(res)s"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1073
 | 
					#: cps/web.py:1070
 | 
				
			||||||
msgid "Please configure your kindle e-mail address first..."
 | 
					msgid "Please configure your kindle e-mail address first..."
 | 
				
			||||||
msgstr "Konfigurera din kindle-e-postadress först..."
 | 
					msgstr "Konfigurera din kindle-e-postadress först..."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1087
 | 
					#: cps/web.py:1084
 | 
				
			||||||
msgid "E-Mail server is not configured, please contact your administrator!"
 | 
					msgid "E-Mail server is not configured, please contact your administrator!"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "E-postservern är inte konfigurerad, kontakta din administratör!"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1088 cps/web.py:1094 cps/web.py:1119 cps/web.py:1123
 | 
					#: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120
 | 
				
			||||||
#: cps/web.py:1128 cps/web.py:1132
 | 
					#: cps/web.py:1125 cps/web.py:1129
 | 
				
			||||||
msgid "register"
 | 
					msgid "register"
 | 
				
			||||||
msgstr "registrera"
 | 
					msgstr "registrera"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1121
 | 
					#: cps/web.py:1118
 | 
				
			||||||
msgid "Your e-mail is not allowed to register"
 | 
					msgid "Your e-mail is not allowed to register"
 | 
				
			||||||
msgstr "Din e-post är inte tillåten att registrera"
 | 
					msgstr "Din e-post är inte tillåten att registrera"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1124
 | 
					#: cps/web.py:1121
 | 
				
			||||||
msgid "Confirmation e-mail was send to your e-mail account."
 | 
					msgid "Confirmation e-mail was send to your e-mail account."
 | 
				
			||||||
msgstr "Bekräftelsemail skickades till ditt e-postkonto."
 | 
					msgstr "Bekräftelsemail skickades till ditt e-postkonto."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1127
 | 
					#: cps/web.py:1124
 | 
				
			||||||
msgid "This username or e-mail address is already in use."
 | 
					msgid "This username or e-mail address is already in use."
 | 
				
			||||||
msgstr "Det här användarnamnet eller e-postadressen är redan i bruk."
 | 
					msgstr "Det här användarnamnet eller e-postadressen är redan i bruk."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1144
 | 
					#: cps/web.py:1141
 | 
				
			||||||
msgid "Cannot activate LDAP authentication"
 | 
					msgid "Cannot activate LDAP authentication"
 | 
				
			||||||
msgstr "Det går inte att aktivera LDAP-autentisering"
 | 
					msgstr "Det går inte att aktivera LDAP-autentisering"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1154 cps/web.py:1281
 | 
					#: cps/web.py:1151 cps/web.py:1278
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "you are now logged in as: '%(nickname)s'"
 | 
					msgid "you are now logged in as: '%(nickname)s'"
 | 
				
			||||||
msgstr "du är nu inloggad som: \"%(nickname)s\""
 | 
					msgstr "du är nu inloggad som: \"%(nickname)s\""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1159
 | 
					#: cps/web.py:1156
 | 
				
			||||||
msgid "Could not login. LDAP server down, please contact your administrator"
 | 
					msgid "Could not login. LDAP server down, please contact your administrator"
 | 
				
			||||||
msgstr "Det gick inte att logga in. LDAP-servern är nere, kontakta din administratör"
 | 
					msgstr "Det gick inte att logga in. LDAP-servern är nere, kontakta din administratör"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1163 cps/web.py:1186
 | 
					#: cps/web.py:1160 cps/web.py:1183
 | 
				
			||||||
msgid "Wrong Username or Password"
 | 
					msgid "Wrong Username or Password"
 | 
				
			||||||
msgstr "Fel användarnamn eller lösenord"
 | 
					msgstr "Fel användarnamn eller lösenord"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1170
 | 
					#: cps/web.py:1167
 | 
				
			||||||
msgid "New Password was send to your email address"
 | 
					msgid "New Password was send to your email address"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Nytt lösenord skickades till din e-postadress"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1176
 | 
					#: cps/web.py:1173
 | 
				
			||||||
msgid "Please enter valid username to reset password"
 | 
					msgid "Please enter valid username to reset password"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Ange giltigt användarnamn för att återställa lösenordet"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1182
 | 
					#: cps/web.py:1179
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "You are now logged in as: '%(nickname)s'"
 | 
					msgid "You are now logged in as: '%(nickname)s'"
 | 
				
			||||||
msgstr "Du är nu inloggad som: \"%(nickname)s\""
 | 
					msgstr "Du är nu inloggad som: \"%(nickname)s\""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1189 cps/web.py:1213
 | 
					#: cps/web.py:1186 cps/web.py:1210
 | 
				
			||||||
msgid "login"
 | 
					msgid "login"
 | 
				
			||||||
msgstr "logga in"
 | 
					msgstr "logga in"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1225 cps/web.py:1259
 | 
					#: cps/web.py:1222 cps/web.py:1256
 | 
				
			||||||
msgid "Token not found"
 | 
					msgid "Token not found"
 | 
				
			||||||
msgstr "Token hittades inte"
 | 
					msgstr "Token hittades inte"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1234 cps/web.py:1267
 | 
					#: cps/web.py:1231 cps/web.py:1264
 | 
				
			||||||
msgid "Token has expired"
 | 
					msgid "Token has expired"
 | 
				
			||||||
msgstr "Token har löpt ut"
 | 
					msgstr "Token har löpt ut"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1243
 | 
					#: cps/web.py:1240
 | 
				
			||||||
msgid "Success! Please return to your device"
 | 
					msgid "Success! Please return to your device"
 | 
				
			||||||
msgstr "Lyckades! Vänligen återvänd till din enhet"
 | 
					msgstr "Lyckades! Vänligen återvänd till din enhet"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1320 cps/web.py:1363 cps/web.py:1369
 | 
					#: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "%(name)s's profile"
 | 
					msgid "%(name)s's profile"
 | 
				
			||||||
msgstr "%(name)ss profil"
 | 
					msgstr "%(name)ss profil"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1365
 | 
					#: cps/web.py:1362
 | 
				
			||||||
msgid "Profile updated"
 | 
					msgid "Profile updated"
 | 
				
			||||||
msgstr "Profilen uppdaterad"
 | 
					msgstr "Profilen uppdaterad"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1394 cps/web.py:1397 cps/web.py:1400 cps/web.py:1407
 | 
					#: cps/web.py:1391 cps/web.py:1394 cps/web.py:1397 cps/web.py:1404
 | 
				
			||||||
#: cps/web.py:1412
 | 
					#: cps/web.py:1409
 | 
				
			||||||
msgid "Read a Book"
 | 
					msgid "Read a Book"
 | 
				
			||||||
msgstr "Läs en bok"
 | 
					msgstr "Läs en bok"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1423
 | 
					#: cps/web.py:1420
 | 
				
			||||||
msgid "Error opening eBook. File does not exist or file is not accessible."
 | 
					msgid "Error opening eBook. File does not exist or file is not accessible."
 | 
				
			||||||
msgstr "Fel vid öppningen av e-boken. Filen finns inte eller filen är inte tillgänglig."
 | 
					msgstr "Fel vid öppningen av e-boken. Filen finns inte eller filen är inte tillgänglig."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1034,11 +1034,11 @@ msgstr "Fjärrinloggning"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/admin.html:104
 | 
					#: cps/templates/admin.html:104
 | 
				
			||||||
msgid "Reverse proxy login"
 | 
					msgid "Reverse proxy login"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Omvänd proxy inloggning"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/admin.html:109
 | 
					#: cps/templates/admin.html:109
 | 
				
			||||||
msgid "Reverse proxy header name"
 | 
					msgid "Reverse proxy header name"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Omvänt proxy rubriknamn"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/admin.html:121
 | 
					#: cps/templates/admin.html:121
 | 
				
			||||||
msgid "Administration"
 | 
					msgid "Administration"
 | 
				
			||||||
| 
						 | 
					@ -1099,7 +1099,7 @@ msgstr "Ok"
 | 
				
			||||||
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
 | 
					#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
 | 
				
			||||||
#: cps/templates/layout.html:28 cps/templates/shelf.html:73
 | 
					#: cps/templates/layout.html:28 cps/templates/shelf.html:73
 | 
				
			||||||
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
 | 
					#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
 | 
				
			||||||
#: cps/templates/user_edit.html:131
 | 
					#: cps/templates/user_edit.html:133
 | 
				
			||||||
msgid "Back"
 | 
					msgid "Back"
 | 
				
			||||||
msgstr "Tillbaka"
 | 
					msgstr "Tillbaka"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1212,7 +1212,7 @@ msgstr "Publiceringsdatum"
 | 
				
			||||||
msgid "Publisher"
 | 
					msgid "Publisher"
 | 
				
			||||||
msgstr "Förlag"
 | 
					msgstr "Förlag"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:30
 | 
					#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:31
 | 
				
			||||||
msgid "Language"
 | 
					msgid "Language"
 | 
				
			||||||
msgstr "Språk"
 | 
					msgstr "Språk"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1239,7 +1239,7 @@ msgstr "Hämta metadata"
 | 
				
			||||||
#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
 | 
					#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
 | 
				
			||||||
#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
 | 
					#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
 | 
				
			||||||
#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
 | 
					#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
 | 
				
			||||||
#: cps/templates/user_edit.html:129
 | 
					#: cps/templates/user_edit.html:131
 | 
				
			||||||
msgid "Submit"
 | 
					msgid "Submit"
 | 
				
			||||||
msgstr "Skicka"
 | 
					msgstr "Skicka"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1505,11 +1505,11 @@ msgstr "%(provider)s OAuth-klient-hemlighet"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_edit.html:276
 | 
					#: cps/templates/config_edit.html:276
 | 
				
			||||||
msgid "Allow Reverse Proxy Authentication"
 | 
					msgid "Allow Reverse Proxy Authentication"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Tillåt omvänd proxyautentisering"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_edit.html:280
 | 
					#: cps/templates/config_edit.html:280
 | 
				
			||||||
msgid "Reverse Proxy Header Name"
 | 
					msgid "Reverse Proxy Header Name"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Omvänt proxy rubriknamn"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_edit.html:292
 | 
					#: cps/templates/config_edit.html:292
 | 
				
			||||||
msgid "External binaries"
 | 
					msgid "External binaries"
 | 
				
			||||||
| 
						 | 
					@ -1592,35 +1592,35 @@ msgstr "Taggar för vuxeninnehåll"
 | 
				
			||||||
msgid "Default settings for new users"
 | 
					msgid "Default settings for new users"
 | 
				
			||||||
msgstr "Standardinställningar för nya användare"
 | 
					msgstr "Standardinställningar för nya användare"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:82
 | 
					#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:84
 | 
				
			||||||
msgid "Admin user"
 | 
					msgid "Admin user"
 | 
				
			||||||
msgstr "Adminstratör användare"
 | 
					msgstr "Adminstratör användare"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:91
 | 
					#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:93
 | 
				
			||||||
msgid "Allow Downloads"
 | 
					msgid "Allow Downloads"
 | 
				
			||||||
msgstr "Tillåt Hämtningar"
 | 
					msgstr "Tillåt Hämtningar"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:95
 | 
					#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:97
 | 
				
			||||||
msgid "Allow book viewer"
 | 
					msgid "Allow book viewer"
 | 
				
			||||||
msgstr "Tillåt bokvisare"
 | 
					msgstr "Tillåt bokvisare"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:99
 | 
					#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:101
 | 
				
			||||||
msgid "Allow Uploads"
 | 
					msgid "Allow Uploads"
 | 
				
			||||||
msgstr "Tillåt Uppladdningar"
 | 
					msgstr "Tillåt Uppladdningar"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:103
 | 
					#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:105
 | 
				
			||||||
msgid "Allow Edit"
 | 
					msgid "Allow Edit"
 | 
				
			||||||
msgstr "Tillåt Redigera"
 | 
					msgstr "Tillåt Redigera"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:107
 | 
					#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:109
 | 
				
			||||||
msgid "Allow Delete books"
 | 
					msgid "Allow Delete books"
 | 
				
			||||||
msgstr "Tillåt Ta bort böcker"
 | 
					msgstr "Tillåt Ta bort böcker"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:112
 | 
					#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:114
 | 
				
			||||||
msgid "Allow Changing Password"
 | 
					msgid "Allow Changing Password"
 | 
				
			||||||
msgstr "Tillåt Ändra lösenord"
 | 
					msgstr "Tillåt Ändra lösenord"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:116
 | 
					#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:118
 | 
				
			||||||
msgid "Allow Editing Public Shelfs"
 | 
					msgid "Allow Editing Public Shelfs"
 | 
				
			||||||
msgstr "Tillåt Redigering av offentliga hyllor"
 | 
					msgstr "Tillåt Redigering av offentliga hyllor"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1628,11 +1628,11 @@ msgstr "Tillåt Redigering av offentliga hyllor"
 | 
				
			||||||
msgid "Default visibilities for new users"
 | 
					msgid "Default visibilities for new users"
 | 
				
			||||||
msgstr "Standardvisibiliteter för nya användare"
 | 
					msgstr "Standardvisibiliteter för nya användare"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:74
 | 
					#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76
 | 
				
			||||||
msgid "Show random books in detail view"
 | 
					msgid "Show random books in detail view"
 | 
				
			||||||
msgstr "Visa slumpmässiga böcker i detaljvyn"
 | 
					msgstr "Visa slumpmässiga böcker i detaljvyn"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:87
 | 
					#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89
 | 
				
			||||||
msgid "Show mature content"
 | 
					msgid "Show mature content"
 | 
				
			||||||
msgstr "Visa vuxeninnehåll"
 | 
					msgstr "Visa vuxeninnehåll"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1734,7 +1734,7 @@ msgstr "Ange domännamn"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/email_edit.html:60
 | 
					#: cps/templates/email_edit.html:60
 | 
				
			||||||
msgid "Denied domains for registering"
 | 
					msgid "Denied domains for registering"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Nekade domäner för registrering"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/email_edit.html:90
 | 
					#: cps/templates/email_edit.html:90
 | 
				
			||||||
msgid "Do you really want to delete this domain rule?"
 | 
					msgid "Do you really want to delete this domain rule?"
 | 
				
			||||||
| 
						 | 
					@ -1774,7 +1774,7 @@ msgstr "Populära publikationer från den här katalogen baserad på betyg."
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:31
 | 
					#: cps/templates/index.xml:31
 | 
				
			||||||
msgid "Recently added Books"
 | 
					msgid "Recently added Books"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Senaste tillagda böcker"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:35
 | 
					#: cps/templates/index.xml:35
 | 
				
			||||||
msgid "The latest Books"
 | 
					msgid "The latest Books"
 | 
				
			||||||
| 
						 | 
					@ -1802,11 +1802,11 @@ msgstr "Böcker ordnade efter serier"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:93
 | 
					#: cps/templates/index.xml:93
 | 
				
			||||||
msgid "Books ordered by Languages"
 | 
					msgid "Books ordered by Languages"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Böcker ordnade efter språk"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:100
 | 
					#: cps/templates/index.xml:100
 | 
				
			||||||
msgid "Books ordered by file formats"
 | 
					msgid "Books ordered by file formats"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Böcker ordnade av filformat"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:103 cps/templates/layout.html:137
 | 
					#: cps/templates/index.xml:103 cps/templates/layout.html:137
 | 
				
			||||||
msgid "Public Shelves"
 | 
					msgid "Public Shelves"
 | 
				
			||||||
| 
						 | 
					@ -1905,19 +1905,27 @@ msgstr "Kom ihåg mig"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/login.html:22
 | 
					#: cps/templates/login.html:22
 | 
				
			||||||
msgid "Forgot password"
 | 
					msgid "Forgot password"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Glömt lösenord"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/login.html:25
 | 
					#: cps/templates/login.html:25
 | 
				
			||||||
msgid "Log in with magic link"
 | 
					msgid "Log in with magic link"
 | 
				
			||||||
msgstr "Logga in med magisk länk"
 | 
					msgstr "Logga in med magisk länk"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/logviewer.html:5
 | 
					#: cps/templates/logviewer.html:6
 | 
				
			||||||
msgid "Show Calibre-Web log"
 | 
					msgid "Show Calibre-Web log: "
 | 
				
			||||||
msgstr "Visa Calibre-Web-logg"
 | 
					msgstr "Visa Calibre-Web-logg: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/logviewer.html:8
 | 
					#: cps/templates/logviewer.html:8
 | 
				
			||||||
msgid "Show access log"
 | 
					msgid "Calibre-Web log: "
 | 
				
			||||||
msgstr "Visa åtkomstlogg"
 | 
					msgstr "Visa åtkomstlogg: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: cps/templates/logviewer.html:8
 | 
				
			||||||
 | 
					msgid "Stream output, can't be displayed"
 | 
				
			||||||
 | 
					msgstr "Strömutmatning kan inte visas"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: cps/templates/logviewer.html:12
 | 
				
			||||||
 | 
					msgid "Show access log: "
 | 
				
			||||||
 | 
					msgstr "Visa åtkomstlogg: "
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/osd.xml:5
 | 
					#: cps/templates/osd.xml:5
 | 
				
			||||||
msgid "Calibre-Web ebook catalog"
 | 
					msgid "Calibre-Web ebook catalog"
 | 
				
			||||||
| 
						 | 
					@ -2093,11 +2101,11 @@ msgstr "Uteslut språk"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/search_form.html:95
 | 
					#: cps/templates/search_form.html:95
 | 
				
			||||||
msgid "Extensions"
 | 
					msgid "Extensions"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Tillägg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/search_form.html:105
 | 
					#: cps/templates/search_form.html:105
 | 
				
			||||||
msgid "Exclude Extensions"
 | 
					msgid "Exclude Extensions"
 | 
				
			||||||
msgstr ""
 | 
					msgstr "Uteslut tillägg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/search_form.html:117
 | 
					#: cps/templates/search_form.html:117
 | 
				
			||||||
msgid "Rating bigger than"
 | 
					msgid "Rating bigger than"
 | 
				
			||||||
| 
						 | 
					@ -2211,31 +2219,31 @@ msgstr "Återställ användarlösenordet"
 | 
				
			||||||
msgid "Kindle E-Mail"
 | 
					msgid "Kindle E-Mail"
 | 
				
			||||||
msgstr "Kindle e-post"
 | 
					msgstr "Kindle e-post"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:39
 | 
					#: cps/templates/user_edit.html:41
 | 
				
			||||||
msgid "Show books with language"
 | 
					msgid "Show books with language"
 | 
				
			||||||
msgstr "Visa böcker med språk"
 | 
					msgstr "Visa böcker med språk"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:41
 | 
					#: cps/templates/user_edit.html:43
 | 
				
			||||||
msgid "Show all"
 | 
					msgid "Show all"
 | 
				
			||||||
msgstr "Visa alla"
 | 
					msgstr "Visa alla"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:51
 | 
					#: cps/templates/user_edit.html:53
 | 
				
			||||||
msgid "OAuth Settings"
 | 
					msgid "OAuth Settings"
 | 
				
			||||||
msgstr "OAuth-inställningar"
 | 
					msgstr "OAuth-inställningar"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:53
 | 
					#: cps/templates/user_edit.html:55
 | 
				
			||||||
msgid "Link"
 | 
					msgid "Link"
 | 
				
			||||||
msgstr "Koppla"
 | 
					msgstr "Koppla"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:55
 | 
					#: cps/templates/user_edit.html:57
 | 
				
			||||||
msgid "Unlink"
 | 
					msgid "Unlink"
 | 
				
			||||||
msgstr "Koppla bort"
 | 
					msgstr "Koppla bort"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:123
 | 
					#: cps/templates/user_edit.html:125
 | 
				
			||||||
msgid "Delete this user"
 | 
					msgid "Delete this user"
 | 
				
			||||||
msgstr "Ta bort den här användaren"
 | 
					msgstr "Ta bort den här användaren"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:138
 | 
					#: cps/templates/user_edit.html:140
 | 
				
			||||||
msgid "Recent Downloads"
 | 
					msgid "Recent Downloads"
 | 
				
			||||||
msgstr "Senaste hämtningar"
 | 
					msgstr "Senaste hämtningar"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -2458,3 +2466,9 @@ msgstr "Senaste hämtningar"
 | 
				
			||||||
#~ msgid "New Books"
 | 
					#~ msgid "New Books"
 | 
				
			||||||
#~ msgstr "Nya böcker"
 | 
					#~ msgstr "Nya böcker"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Show Calibre-Web log"
 | 
				
			||||||
 | 
					#~ msgstr "Visa Calibre-Web-logg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#~ msgid "Show access log"
 | 
				
			||||||
 | 
					#~ msgstr "Visa åtkomstlogg"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -479,7 +479,8 @@ def migrate_Database(session):
 | 
				
			||||||
def clean_database(session):
 | 
					def clean_database(session):
 | 
				
			||||||
    # Remove expired remote login tokens
 | 
					    # Remove expired remote login tokens
 | 
				
			||||||
    now = datetime.datetime.now()
 | 
					    now = datetime.datetime.now()
 | 
				
			||||||
    session.query(RemoteAuthToken).filter(now > RemoteAuthToken.expiration).delete()
 | 
					    session.query(RemoteAuthToken).filter(now > RemoteAuthToken.expiration).\
 | 
				
			||||||
 | 
					        filter(RemoteAuthToken.token_type !=1 ).delete()
 | 
				
			||||||
    session.commit()
 | 
					    session.commit()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										138
									
								
								messages.pot
									
									
									
									
									
								
							
							
						
						
									
										138
									
								
								messages.pot
									
									
									
									
									
								
							| 
						 | 
					@ -8,7 +8,7 @@ msgid ""
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
"Project-Id-Version: PROJECT VERSION\n"
 | 
					"Project-Id-Version: PROJECT VERSION\n"
 | 
				
			||||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
					"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
 | 
				
			||||||
"POT-Creation-Date: 2020-01-12 13:57+0100\n"
 | 
					"POT-Creation-Date: 2020-01-18 12:04+0100\n"
 | 
				
			||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
					"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 | 
				
			||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
					"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 | 
				
			||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
					"Language-Team: LANGUAGE <LL@li.org>\n"
 | 
				
			||||||
| 
						 | 
					@ -59,7 +59,7 @@ msgstr ""
 | 
				
			||||||
msgid "Basic Configuration"
 | 
					msgid "Basic Configuration"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:465 cps/web.py:1093
 | 
					#: cps/admin.py:465 cps/web.py:1090
 | 
				
			||||||
msgid "Please fill out all fields!"
 | 
					msgid "Please fill out all fields!"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -68,7 +68,7 @@ msgstr ""
 | 
				
			||||||
msgid "Add new user"
 | 
					msgid "Add new user"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:476 cps/web.py:1318
 | 
					#: cps/admin.py:476 cps/web.py:1315
 | 
				
			||||||
msgid "E-mail is not from valid domain"
 | 
					msgid "E-mail is not from valid domain"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -112,16 +112,16 @@ msgstr ""
 | 
				
			||||||
msgid "No admin user remaining, can't delete user"
 | 
					msgid "No admin user remaining, can't delete user"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:612 cps/web.py:1359
 | 
					#: cps/admin.py:612 cps/web.py:1356
 | 
				
			||||||
msgid "Found an existing account for this e-mail address."
 | 
					msgid "Found an existing account for this e-mail address."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1334
 | 
					#: cps/admin.py:616 cps/admin.py:630 cps/admin.py:644 cps/web.py:1331
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Edit User %(nick)s"
 | 
					msgid "Edit User %(nick)s"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:622 cps/web.py:1327
 | 
					#: cps/admin.py:622 cps/web.py:1324
 | 
				
			||||||
msgid "This username is already taken"
 | 
					msgid "This username is already taken"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -139,11 +139,11 @@ msgstr ""
 | 
				
			||||||
msgid "Password for user %(user)s reset"
 | 
					msgid "Password for user %(user)s reset"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:660 cps/web.py:1118 cps/web.py:1174
 | 
					#: cps/admin.py:660 cps/web.py:1115 cps/web.py:1171
 | 
				
			||||||
msgid "An unknown error occurred. Please try again later."
 | 
					msgid "An unknown error occurred. Please try again later."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/admin.py:663 cps/web.py:1062
 | 
					#: cps/admin.py:663 cps/web.py:1059
 | 
				
			||||||
msgid "Please configure the SMTP mail settings first..."
 | 
					msgid "Please configure the SMTP mail settings first..."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -591,7 +591,7 @@ msgid "Show best rated books"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
 | 
					#: cps/templates/index.xml:46 cps/templates/index.xml:50 cps/ub.py:67
 | 
				
			||||||
#: cps/web.py:1011
 | 
					#: cps/web.py:1009
 | 
				
			||||||
msgid "Read Books"
 | 
					msgid "Read Books"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -600,7 +600,7 @@ msgid "Show read and unread"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
 | 
					#: cps/templates/index.xml:53 cps/templates/index.xml:57 cps/ub.py:71
 | 
				
			||||||
#: cps/web.py:1015
 | 
					#: cps/web.py:1013
 | 
				
			||||||
msgid "Unread Books"
 | 
					msgid "Unread Books"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -722,7 +722,7 @@ msgstr ""
 | 
				
			||||||
msgid "Hot Books (most downloaded)"
 | 
					msgid "Hot Books (most downloaded)"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:586 cps/web.py:1382 cps/web.py:1478
 | 
					#: cps/web.py:586 cps/web.py:1379 cps/web.py:1475
 | 
				
			||||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
 | 
					msgid "Error opening eBook. File does not exist or file is not accessible:"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -790,128 +790,128 @@ msgid "Tasks"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
 | 
					#: cps/templates/feed.xml:33 cps/templates/layout.html:44
 | 
				
			||||||
#: cps/templates/layout.html:45 cps/web.py:829 cps/web.py:831
 | 
					#: cps/templates/layout.html:45 cps/web.py:827 cps/web.py:829
 | 
				
			||||||
msgid "Search"
 | 
					msgid "Search"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:881
 | 
					#: cps/web.py:879
 | 
				
			||||||
msgid "Published after "
 | 
					msgid "Published after "
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:888
 | 
					#: cps/web.py:886
 | 
				
			||||||
msgid "Published before "
 | 
					msgid "Published before "
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:902
 | 
					#: cps/web.py:900
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Rating <= %(rating)s"
 | 
					msgid "Rating <= %(rating)s"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:904
 | 
					#: cps/web.py:902
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Rating >= %(rating)s"
 | 
					msgid "Rating >= %(rating)s"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:970 cps/web.py:982
 | 
					#: cps/web.py:968 cps/web.py:980
 | 
				
			||||||
msgid "search"
 | 
					msgid "search"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1067
 | 
					#: cps/web.py:1064
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "Book successfully queued for sending to %(kindlemail)s"
 | 
					msgid "Book successfully queued for sending to %(kindlemail)s"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1071
 | 
					#: cps/web.py:1068
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "There was an error sending this book: %(res)s"
 | 
					msgid "There was an error sending this book: %(res)s"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1073
 | 
					#: cps/web.py:1070
 | 
				
			||||||
msgid "Please configure your kindle e-mail address first..."
 | 
					msgid "Please configure your kindle e-mail address first..."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1087
 | 
					#: cps/web.py:1084
 | 
				
			||||||
msgid "E-Mail server is not configured, please contact your administrator!"
 | 
					msgid "E-Mail server is not configured, please contact your administrator!"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1088 cps/web.py:1094 cps/web.py:1119 cps/web.py:1123
 | 
					#: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120
 | 
				
			||||||
#: cps/web.py:1128 cps/web.py:1132
 | 
					#: cps/web.py:1125 cps/web.py:1129
 | 
				
			||||||
msgid "register"
 | 
					msgid "register"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1121
 | 
					#: cps/web.py:1118
 | 
				
			||||||
msgid "Your e-mail is not allowed to register"
 | 
					msgid "Your e-mail is not allowed to register"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1124
 | 
					#: cps/web.py:1121
 | 
				
			||||||
msgid "Confirmation e-mail was send to your e-mail account."
 | 
					msgid "Confirmation e-mail was send to your e-mail account."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1127
 | 
					#: cps/web.py:1124
 | 
				
			||||||
msgid "This username or e-mail address is already in use."
 | 
					msgid "This username or e-mail address is already in use."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1144
 | 
					#: cps/web.py:1141
 | 
				
			||||||
msgid "Cannot activate LDAP authentication"
 | 
					msgid "Cannot activate LDAP authentication"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1154 cps/web.py:1281
 | 
					#: cps/web.py:1151 cps/web.py:1278
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "you are now logged in as: '%(nickname)s'"
 | 
					msgid "you are now logged in as: '%(nickname)s'"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1159
 | 
					#: cps/web.py:1156
 | 
				
			||||||
msgid "Could not login. LDAP server down, please contact your administrator"
 | 
					msgid "Could not login. LDAP server down, please contact your administrator"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1163 cps/web.py:1186
 | 
					#: cps/web.py:1160 cps/web.py:1183
 | 
				
			||||||
msgid "Wrong Username or Password"
 | 
					msgid "Wrong Username or Password"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1170
 | 
					#: cps/web.py:1167
 | 
				
			||||||
msgid "New Password was send to your email address"
 | 
					msgid "New Password was send to your email address"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1176
 | 
					#: cps/web.py:1173
 | 
				
			||||||
msgid "Please enter valid username to reset password"
 | 
					msgid "Please enter valid username to reset password"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1182
 | 
					#: cps/web.py:1179
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "You are now logged in as: '%(nickname)s'"
 | 
					msgid "You are now logged in as: '%(nickname)s'"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1189 cps/web.py:1213
 | 
					#: cps/web.py:1186 cps/web.py:1210
 | 
				
			||||||
msgid "login"
 | 
					msgid "login"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1225 cps/web.py:1259
 | 
					#: cps/web.py:1222 cps/web.py:1256
 | 
				
			||||||
msgid "Token not found"
 | 
					msgid "Token not found"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1234 cps/web.py:1267
 | 
					#: cps/web.py:1231 cps/web.py:1264
 | 
				
			||||||
msgid "Token has expired"
 | 
					msgid "Token has expired"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1243
 | 
					#: cps/web.py:1240
 | 
				
			||||||
msgid "Success! Please return to your device"
 | 
					msgid "Success! Please return to your device"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1320 cps/web.py:1363 cps/web.py:1369
 | 
					#: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366
 | 
				
			||||||
#, python-format
 | 
					#, python-format
 | 
				
			||||||
msgid "%(name)s's profile"
 | 
					msgid "%(name)s's profile"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1365
 | 
					#: cps/web.py:1362
 | 
				
			||||||
msgid "Profile updated"
 | 
					msgid "Profile updated"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1394 cps/web.py:1397 cps/web.py:1400 cps/web.py:1407
 | 
					#: cps/web.py:1391 cps/web.py:1394 cps/web.py:1397 cps/web.py:1404
 | 
				
			||||||
#: cps/web.py:1412
 | 
					#: cps/web.py:1409
 | 
				
			||||||
msgid "Read a Book"
 | 
					msgid "Read a Book"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/web.py:1423
 | 
					#: cps/web.py:1420
 | 
				
			||||||
msgid "Error opening eBook. File does not exist or file is not accessible."
 | 
					msgid "Error opening eBook. File does not exist or file is not accessible."
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1098,7 +1098,7 @@ msgstr ""
 | 
				
			||||||
#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
 | 
					#: cps/templates/email_edit.html:40 cps/templates/email_edit.html:92
 | 
				
			||||||
#: cps/templates/layout.html:28 cps/templates/shelf.html:73
 | 
					#: cps/templates/layout.html:28 cps/templates/shelf.html:73
 | 
				
			||||||
#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
 | 
					#: cps/templates/shelf_edit.html:19 cps/templates/shelf_order.html:32
 | 
				
			||||||
#: cps/templates/user_edit.html:131
 | 
					#: cps/templates/user_edit.html:133
 | 
				
			||||||
msgid "Back"
 | 
					msgid "Back"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1211,7 +1211,7 @@ msgstr ""
 | 
				
			||||||
msgid "Publisher"
 | 
					msgid "Publisher"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:30
 | 
					#: cps/templates/book_edit.html:103 cps/templates/user_edit.html:31
 | 
				
			||||||
msgid "Language"
 | 
					msgid "Language"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1238,7 +1238,7 @@ msgstr ""
 | 
				
			||||||
#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
 | 
					#: cps/templates/book_edit.html:173 cps/templates/config_edit.html:329
 | 
				
			||||||
#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
 | 
					#: cps/templates/config_view_edit.html:146 cps/templates/login.html:20
 | 
				
			||||||
#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
 | 
					#: cps/templates/search_form.html:170 cps/templates/shelf_edit.html:17
 | 
				
			||||||
#: cps/templates/user_edit.html:129
 | 
					#: cps/templates/user_edit.html:131
 | 
				
			||||||
msgid "Submit"
 | 
					msgid "Submit"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1591,35 +1591,35 @@ msgstr ""
 | 
				
			||||||
msgid "Default settings for new users"
 | 
					msgid "Default settings for new users"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:82
 | 
					#: cps/templates/config_view_edit.html:81 cps/templates/user_edit.html:84
 | 
				
			||||||
msgid "Admin user"
 | 
					msgid "Admin user"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:91
 | 
					#: cps/templates/config_view_edit.html:85 cps/templates/user_edit.html:93
 | 
				
			||||||
msgid "Allow Downloads"
 | 
					msgid "Allow Downloads"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:95
 | 
					#: cps/templates/config_view_edit.html:89 cps/templates/user_edit.html:97
 | 
				
			||||||
msgid "Allow book viewer"
 | 
					msgid "Allow book viewer"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:99
 | 
					#: cps/templates/config_view_edit.html:93 cps/templates/user_edit.html:101
 | 
				
			||||||
msgid "Allow Uploads"
 | 
					msgid "Allow Uploads"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:103
 | 
					#: cps/templates/config_view_edit.html:97 cps/templates/user_edit.html:105
 | 
				
			||||||
msgid "Allow Edit"
 | 
					msgid "Allow Edit"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:107
 | 
					#: cps/templates/config_view_edit.html:101 cps/templates/user_edit.html:109
 | 
				
			||||||
msgid "Allow Delete books"
 | 
					msgid "Allow Delete books"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:112
 | 
					#: cps/templates/config_view_edit.html:105 cps/templates/user_edit.html:114
 | 
				
			||||||
msgid "Allow Changing Password"
 | 
					msgid "Allow Changing Password"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:116
 | 
					#: cps/templates/config_view_edit.html:109 cps/templates/user_edit.html:118
 | 
				
			||||||
msgid "Allow Editing Public Shelfs"
 | 
					msgid "Allow Editing Public Shelfs"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1627,11 +1627,11 @@ msgstr ""
 | 
				
			||||||
msgid "Default visibilities for new users"
 | 
					msgid "Default visibilities for new users"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:74
 | 
					#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76
 | 
				
			||||||
msgid "Show random books in detail view"
 | 
					msgid "Show random books in detail view"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:87
 | 
					#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89
 | 
				
			||||||
msgid "Show mature content"
 | 
					msgid "Show mature content"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1910,12 +1910,20 @@ msgstr ""
 | 
				
			||||||
msgid "Log in with magic link"
 | 
					msgid "Log in with magic link"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/logviewer.html:5
 | 
					#: cps/templates/logviewer.html:6
 | 
				
			||||||
msgid "Show Calibre-Web log"
 | 
					msgid "Show Calibre-Web log: "
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/logviewer.html:8
 | 
					#: cps/templates/logviewer.html:8
 | 
				
			||||||
msgid "Show access log"
 | 
					msgid "Calibre-Web log: "
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: cps/templates/logviewer.html:8
 | 
				
			||||||
 | 
					msgid "Stream output, can't be displayed"
 | 
				
			||||||
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#: cps/templates/logviewer.html:12
 | 
				
			||||||
 | 
					msgid "Show access log: "
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/osd.xml:5
 | 
					#: cps/templates/osd.xml:5
 | 
				
			||||||
| 
						 | 
					@ -2210,31 +2218,31 @@ msgstr ""
 | 
				
			||||||
msgid "Kindle E-Mail"
 | 
					msgid "Kindle E-Mail"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:39
 | 
					#: cps/templates/user_edit.html:41
 | 
				
			||||||
msgid "Show books with language"
 | 
					msgid "Show books with language"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:41
 | 
					#: cps/templates/user_edit.html:43
 | 
				
			||||||
msgid "Show all"
 | 
					msgid "Show all"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:51
 | 
					#: cps/templates/user_edit.html:53
 | 
				
			||||||
msgid "OAuth Settings"
 | 
					msgid "OAuth Settings"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:53
 | 
					#: cps/templates/user_edit.html:55
 | 
				
			||||||
msgid "Link"
 | 
					msgid "Link"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:55
 | 
					#: cps/templates/user_edit.html:57
 | 
				
			||||||
msgid "Unlink"
 | 
					msgid "Unlink"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:123
 | 
					#: cps/templates/user_edit.html:125
 | 
				
			||||||
msgid "Delete this user"
 | 
					msgid "Delete this user"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#: cps/templates/user_edit.html:138
 | 
					#: cps/templates/user_edit.html:140
 | 
				
			||||||
msgid "Recent Downloads"
 | 
					msgid "Recent Downloads"
 | 
				
			||||||
msgstr ""
 | 
					msgstr ""
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -31,7 +31,7 @@ rarfile>=2.7
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# other
 | 
					# other
 | 
				
			||||||
natsort>=2.2.0
 | 
					natsort>=2.2.0
 | 
				
			||||||
git+https://github.com/OzzieIsaacs/comicapi.git@5346716578b2843f54d522f44d01bc8d25001d24#egg=comicapi
 | 
					git+https://github.com/OzzieIsaacs/comicapi.git@ad8bfe5a1c31db882480433f86db2c5c57634a3f#egg=comicapi
 | 
				
			||||||
 | 
					 | 
				
			||||||
#kobo integration
 | 
					#kobo integration
 | 
				
			||||||
jsonschema>=3.2.0
 | 
					jsonschema>=3.2.0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in New Issue
	
	Block a user