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