Merge branch 'master' into Develop

# Conflicts:
#	cps/shelf.py
pull/1179/head
Ozzieisaacs 5 years ago
commit 50ba2e329a

@ -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 `pip3 install --target vendor -r requirements.txt`. 1. Install dependencies by running `pip3 install --target vendor -r requirements.txt` (python3.x) or `pip install --target vendor -r requirements.txt` (python2.7).
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\

@ -50,7 +50,7 @@ def oauth_required(f):
def inner(*args, **kwargs): def inner(*args, **kwargs):
if config.config_login_type == constants.LOGIN_OAUTH: if config.config_login_type == constants.LOGIN_OAUTH:
return f(*args, **kwargs) return f(*args, **kwargs)
if request.is_xhr: if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
data = {'status': 'error', 'message': 'Not Found'} data = {'status': 'error', 'message': 'Not Found'}
response = make_response(json.dumps(data, ensure_ascii=False)) response = make_response(json.dumps(data, ensure_ascii=False))
response.headers["Content-Type"] = "application/json; charset=utf-8" response.headers["Content-Type"] = "application/json; charset=utf-8"

@ -146,7 +146,7 @@ class WebServer(object):
self.unix_socket_file = None self.unix_socket_file = None
def _start_tornado(self): def _start_tornado(self):
if os.name == 'nt': if os.name == 'nt' and sys.version_info > (3, 7):
import asyncio import asyncio
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy()) asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
log.info('Starting Tornado server on %s', _readable_listen_address(self.listen_address, self.listen_port)) log.info('Starting Tornado server on %s', _readable_listen_address(self.listen_address, self.listen_port))

@ -40,17 +40,18 @@ log = logger.create()
@shelf.route("/shelf/add/<int:shelf_id>/<int:book_id>") @shelf.route("/shelf/add/<int:shelf_id>/<int:book_id>")
@login_required @login_required
def add_to_shelf(shelf_id, book_id): def add_to_shelf(shelf_id, book_id):
xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
if shelf is None: if shelf is None:
log.error("Invalid shelf specified: %s", shelf_id) log.error("Invalid shelf specified: %s", shelf_id)
if not request.is_xhr: if not xhr:
flash(_(u"Invalid shelf specified"), category="error") flash(_(u"Invalid shelf specified"), category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "Invalid shelf specified", 400 return "Invalid shelf specified", 400
if not shelf.is_public and not shelf.user_id == int(current_user.id): if not shelf.is_public and not shelf.user_id == int(current_user.id):
log.error("User %s not allowed to add a book to %s", current_user, shelf) log.error("User %s not allowed to add a book to %s", current_user, shelf)
if not request.is_xhr: if not xhr:
flash(_(u"Sorry you are not allowed to add a book to the the shelf: %(shelfname)s", shelfname=shelf.name), flash(_(u"Sorry you are not allowed to add a book to the the shelf: %(shelfname)s", shelfname=shelf.name),
category="error") category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
@ -58,7 +59,7 @@ def add_to_shelf(shelf_id, book_id):
if shelf.is_public and not current_user.role_edit_shelfs(): if shelf.is_public and not current_user.role_edit_shelfs():
log.info("User %s not allowed to edit public shelves", current_user) log.info("User %s not allowed to edit public shelves", current_user)
if not request.is_xhr: if not xhr:
flash(_(u"You are not allowed to edit public shelves"), category="error") flash(_(u"You are not allowed to edit public shelves"), category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "User is not allowed to edit public shelves", 403 return "User is not allowed to edit public shelves", 403
@ -67,7 +68,7 @@ def add_to_shelf(shelf_id, book_id):
ub.BookShelf.book_id == book_id).first() ub.BookShelf.book_id == book_id).first()
if book_in_shelf: if book_in_shelf:
log.error("Book %s is already part of %s", book_id, shelf) log.error("Book %s is already part of %s", book_id, shelf)
if not request.is_xhr: if not xhr:
flash(_(u"Book is already part of the shelf: %(shelfname)s", shelfname=shelf.name), category="error") flash(_(u"Book is already part of the shelf: %(shelfname)s", shelfname=shelf.name), category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "Book is already part of the shelf: %s" % shelf.name, 400 return "Book is already part of the shelf: %s" % shelf.name, 400
@ -81,7 +82,7 @@ def add_to_shelf(shelf_id, book_id):
ins = ub.BookShelf(shelf=shelf.id, book_id=book_id, order=maxOrder + 1) ins = ub.BookShelf(shelf=shelf.id, book_id=book_id, order=maxOrder + 1)
ub.session.add(ins) ub.session.add(ins)
ub.session.commit() ub.session.commit()
if not request.is_xhr: if not xhr:
flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success") flash(_(u"Book has been added to shelf: %(sname)s", sname=shelf.name), category="success")
if "HTTP_REFERER" in request.environ: if "HTTP_REFERER" in request.environ:
return redirect(request.environ["HTTP_REFERER"]) return redirect(request.environ["HTTP_REFERER"])
@ -147,10 +148,11 @@ def search_to_shelf(shelf_id):
@shelf.route("/shelf/remove/<int:shelf_id>/<int:book_id>") @shelf.route("/shelf/remove/<int:shelf_id>/<int:book_id>")
@login_required @login_required
def remove_from_shelf(shelf_id, book_id): def remove_from_shelf(shelf_id, book_id):
xhr = request.headers.get('X-Requested-With') == 'XMLHttpRequest'
shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first() shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.id == shelf_id).first()
if shelf is None: if shelf is None:
log.error("Invalid shelf specified: %s", shelf_id) log.error("Invalid shelf specified: %s", shelf_id)
if not request.is_xhr: if not xhr:
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "Invalid shelf specified", 400 return "Invalid shelf specified", 400
@ -169,20 +171,20 @@ def remove_from_shelf(shelf_id, book_id):
if book_shelf is None: if book_shelf is None:
log.error("Book %s already removed from %s", book_id, shelf) log.error("Book %s already removed from %s", book_id, shelf)
if not request.is_xhr: if not xhr:
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
return "Book already removed from shelf", 410 return "Book already removed from shelf", 410
ub.session.delete(book_shelf) ub.session.delete(book_shelf)
ub.session.commit() ub.session.commit()
if not request.is_xhr: if not xhr:
flash(_(u"Book has been removed from shelf: %(sname)s", sname=shelf.name), category="success") flash(_(u"Book has been removed from shelf: %(sname)s", sname=shelf.name), category="success")
return redirect(request.environ["HTTP_REFERER"]) return redirect(request.environ["HTTP_REFERER"])
return "", 204 return "", 204
else: else:
log.error("User %s not allowed to remove a book from %s", current_user, shelf) log.error("User %s not allowed to remove a book from %s", current_user, shelf)
if not request.is_xhr: if not xhr:
flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name), flash(_(u"Sorry you are not allowed to remove a book from this shelf: %(sname)s", sname=shelf.name),
category="error") category="error")
return redirect(url_for('web.index')) return redirect(url_for('web.index'))
@ -284,8 +286,14 @@ def show_shelf(shelf_type, shelf_id):
books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id)\ books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id)\
.order_by(ub.BookShelf.order.asc()).all() .order_by(ub.BookShelf.order.asc()).all()
books_list = [ b.book_id for b in books_in_shelf] for book in books_in_shelf:
result = db.session.query(db.Books).filter(db.Books.id.in_(books_list)).filter(common_filters()).all() cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).filter(common_filters()).first()
if cur_book:
result.append(cur_book)
else:
log.info('Not existing book %s in %s deleted', book.book_id, shelf)
ub.session.query(ub.BookShelf).filter(ub.BookShelf.book_id == book.book_id).delete()
ub.session.commit()
return render_title_template(page, entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name), return render_title_template(page, entries=result, title=_(u"Shelf: '%(name)s'", name=shelf.name),
shelf=shelf, page="shelf") shelf=shelf, page="shelf")
else: else:
@ -315,11 +323,13 @@ def order_shelf(shelf_id):
ub.Shelf.id == shelf_id))).first() ub.Shelf.id == shelf_id))).first()
result = list() result = list()
if shelf: if shelf:
books_in_shelf = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id) \ books_in_shelf2 = ub.session.query(ub.BookShelf).filter(ub.BookShelf.shelf == shelf_id) \
.order_by(ub.BookShelf.order.asc()).all() .order_by(ub.BookShelf.order.asc()).all()
books_list = [ b.book_id for b in books_in_shelf] for book in books_in_shelf2:
# cover, title, series, name, all author names, cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).filter(common_filters()).first()
result = db.session.query(db.Books).filter(db.Books.id.in_(books_list)).filter(common_filters()).all() result.append(cur_book)
#books_list = [ b.book_id for b in books_in_shelf2]
#result = db.session.query(db.Books).filter(db.Books.id.in_(books_list)).filter(common_filters()).all()
return render_title_template('shelf_order.html', entries=result, return render_title_template('shelf_order.html', entries=result,
title=_(u"Change order of Shelf: '%(name)s'", name=shelf.name), title=_(u"Change order of Shelf: '%(name)s'", name=shelf.name),
shelf=shelf, page="shelforder") shelf=shelf, page="shelforder")

@ -55,9 +55,9 @@ $(function () {
$(".cover img").attr("src", book.cover); $(".cover img").attr("src", book.cover);
$("#cover_url").val(book.cover); $("#cover_url").val(book.cover);
$("#pubdate").val(book.publishedDate); $("#pubdate").val(book.publishedDate);
$("#publisher").val(book.publisher) $("#publisher").val(book.publisher);
if (book.series != undefined) { if (typeof book.series !== "undefined") {
$("#series").val(book.series) $("#series").val(book.series);
} }
} }
@ -72,16 +72,18 @@ $(function () {
} }
function formatDate (date) { function formatDate (date) {
var d = new Date(date), var d = new Date(date),
month = '' + (d.getMonth() + 1), month = "" + (d.getMonth() + 1),
day = '' + d.getDate(), day = "" + d.getDate(),
year = d.getFullYear(); year = d.getFullYear();
if (month.length < 2) if (month.length < 2) {
month = '0' + month; month = "0" + month;
if (day.length < 2) }
day = '0' + day; if (day.length < 2) {
day = "0" + day;
}
return [year, month, day].join('-'); return [year, month, day].join("-");
} }
if (ggDone && ggResults.length > 0) { if (ggDone && ggResults.length > 0) {
@ -116,15 +118,16 @@ $(function () {
} }
if (dbDone && dbResults.length > 0) { if (dbDone && dbResults.length > 0) {
dbResults.forEach(function(result) { dbResults.forEach(function(result) {
if (result.series){ var seriesTitle = "";
var series_title = result.series.title if (result.series) {
seriesTitle = result.series.title;
} }
var date_fomers = result.pubdate.split("-") var dateFomers = result.pubdate.split("-");
var publishedYear = parseInt(date_fomers[0]) var publishedYear = parseInt(dateFomers[0]);
var publishedMonth = parseInt(date_fomers[1]) var publishedMonth = parseInt(dateFomers[1]);
var publishedDate = new Date(publishedYear, publishedMonth-1, 1) var publishedDate = new Date(publishedYear, publishedMonth - 1, 1);
publishedDate = formatDate(publishedDate) publishedDate = formatDate(publishedDate);
var book = { var book = {
id: result.id, id: result.id,
@ -137,7 +140,7 @@ $(function () {
return tag.title.toLowerCase().replace(/,/g, "_"); return tag.title.toLowerCase().replace(/,/g, "_");
}), }),
rating: result.rating.average || 0, rating: result.rating.average || 0,
series: series_title || "", series: seriesTitle || "",
cover: result.image, cover: result.image,
url: "https://book.douban.com/subject/" + result.id, url: "https://book.douban.com/subject/" + result.id,
source: { source: {
@ -183,7 +186,7 @@ $(function () {
} }
function dbSearchBook (title) { function dbSearchBook (title) {
apikey="0df993c66c0c636e29ecbb5344252a4a" var apikey = "0df993c66c0c636e29ecbb5344252a4a";
$.ajax({ $.ajax({
url: douban + dbSearch + "?apikey=" + apikey + "&q=" + title + "&fields=all&count=10", url: douban + dbSearch + "?apikey=" + apikey + "&q=" + title + "&fields=all&count=10",
type: "GET", type: "GET",
@ -193,7 +196,7 @@ $(function () {
dbResults = data.books; dbResults = data.books;
}, },
error: function error() { error: function error() {
$("#meta-info").html("<p class=\"text-danger\">" + msg.search_error + "!</p>"+ $("#meta-info")[0].innerHTML) $("#meta-info").html("<p class=\"text-danger\">" + msg.search_error + "!</p>" + $("#meta-info")[0].innerHTML);
}, },
complete: function complete() { complete: function complete() {
dbDone = true; dbDone = true;

File diff suppressed because one or more lines are too long

@ -29,7 +29,7 @@ function sendData(path) {
var maxElements; var maxElements;
var tmp = []; var tmp = [];
elements = Sortable.utils.find(sortTrue, "div"); elements = $(".list-group-item");
maxElements = elements.length; maxElements = elements.length;
var form = document.createElement("form"); var form = document.createElement("form");

@ -29,7 +29,7 @@
{% endfor %} {% endfor %}
</div> </div>
<button onclick="sendData('{{ url_for('shelf.order_shelf', shelf_id=shelf.id) }}')" class="btn btn-default" id="ChangeOrder">{{_('Change order')}}</button> <button onclick="sendData('{{ url_for('shelf.order_shelf', shelf_id=shelf.id) }}')" class="btn btn-default" id="ChangeOrder">{{_('Change order')}}</button>
<a href="{{ url_for('shelf.show_shelf', shelf_id=shelf.id) }}" class="btn btn-default">{{_('Back')}}</a> <a href="{{ url_for('shelf.show_shelf', shelf_id=shelf.id) }}" id="shelf_back" class="btn btn-default">{{_('Back')}}</a>
</div> </div>
{% endblock %} {% endblock %}

@ -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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+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"
@ -79,7 +79,7 @@ msgstr "Byl nalezen existující účet pro tuto e-mailovou adresu nebo přezdí
#: cps/admin.py:489 #: cps/admin.py:489
#, python-format #, python-format
msgid "User '%(user)s' created" msgid "User '%(user)s' created"
msgstr "Uživatel %(user)s vytvořen" msgstr "Uživatel '%(user)s' vytvořen"
#: cps/admin.py:509 #: cps/admin.py:509
msgid "Edit e-mail server settings" msgid "Edit e-mail server settings"
@ -205,7 +205,7 @@ msgstr "není nakonfigurováno"
#: cps/editbooks.py:214 cps/editbooks.py:396 #: cps/editbooks.py:214 cps/editbooks.py:396
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 otevírání eKnihy. Soubor neexistuje nebo není přístupný" msgstr "Chyba otevírání eknihy. Soubor neexistuje nebo není přístupný"
#: cps/editbooks.py:242 #: cps/editbooks.py:242
msgid "edit metadata" msgid "edit metadata"
@ -214,11 +214,11 @@ msgstr "upravit metadata"
#: cps/editbooks.py:321 cps/editbooks.py:569 #: cps/editbooks.py:321 cps/editbooks.py:569
#, python-format #, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Soubor s příponou %(ext)s nelze odeslat na tento server" msgstr "Soubor s příponou '%(ext)s' nelze odeslat na tento server"
#: cps/editbooks.py:325 cps/editbooks.py:573 #: cps/editbooks.py:325 cps/editbooks.py:573
msgid "File to be uploaded must have an extension" msgid "File to be uploaded must have an extension"
msgstr "Soubor, který má být odeslán, musí mít příponu" msgstr "Soubor, který má být odeslán musí mít příponu"
#: cps/editbooks.py:337 cps/editbooks.py:607 #: cps/editbooks.py:337 cps/editbooks.py:607
#, python-format #, python-format
@ -296,7 +296,7 @@ msgstr "Při převodu této knihy došlo k chybě: %(res)s"
#: cps/gdrive.py:62 #: cps/gdrive.py:62
msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again"
msgstr "Google Drive nastavení nebylo dokončeno, zkuste znovu deaktivovat a aktivovat Google Drive" msgstr "Google Drive nastavení nebylo dokončeno, zkuste znovu deaktivovat a aktivovat Google Drive"
#: cps/gdrive.py:104 #: cps/gdrive.py:104
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
@ -366,17 +366,17 @@ msgstr "Požadovaný soubor nelze přečíst. Možná nesprávná oprávnění?"
#: cps/helper.py:322 #: cps/helper.py:322
#, python-format #, python-format
msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "Přejmenování názvu z: %(src)s na %(dest)s' selhalo chybou: %(error)s" msgstr "Přejmenování názvu z: '%(src)s' na '%(dest)s' selhalo chybou: %(error)s"
#: cps/helper.py:332 #: cps/helper.py:332
#, python-format #, python-format
msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "Přejmenovat autora z: %(src)s na %(dest)s selhalo chybou: %(error)s" msgstr "Přejmenovat autora z: '%(src)s' na '%(dest)s' selhalo chybou: %(error)s"
#: cps/helper.py:346 #: cps/helper.py:346
#, python-format #, python-format
msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s" msgid "Rename file in path '%(src)s' to '%(dest)s' failed with error: %(error)s"
msgstr "Přejmenování souboru v cestě %(src)s na %(dest)s selhalo chybou: %(error)s" msgstr "Přejmenování souboru v cestě '%(src)s' na '%(dest)s' selhalo chybou: %(error)s"
#: cps/helper.py:372 cps/helper.py:382 cps/helper.py:390 #: cps/helper.py:372 cps/helper.py:382 cps/helper.py:390
#, python-format #, python-format
@ -528,7 +528,7 @@ msgstr "Lituji, nejste oprávněni odebrat knihu z této police: %(sname)s"
#: cps/shelf.py:207 cps/shelf.py:231 #: cps/shelf.py:207 cps/shelf.py:231
#, python-format #, python-format
msgid "A shelf with the name '%(title)s' already exists." msgid "A shelf with the name '%(title)s' already exists."
msgstr "Police s názvem %(title)s již existuje." msgstr "Police s názvem '%(title)s' již existuje."
#: cps/shelf.py:212 #: cps/shelf.py:212
#, python-format #, python-format
@ -555,7 +555,7 @@ msgstr "Upravit polici"
#: cps/shelf.py:289 #: cps/shelf.py:289
#, python-format #, python-format
msgid "Shelf: '%(name)s'" msgid "Shelf: '%(name)s'"
msgstr "Police: %(name)s" msgstr "Police: '%(name)s'"
#: cps/shelf.py:292 #: cps/shelf.py:292
msgid "Error opening shelf. Shelf does not exist or is not accessible" msgid "Error opening shelf. Shelf does not exist or is not accessible"
@ -564,7 +564,7 @@ msgstr "Chyba otevírání police. Police neexistuje nebo není přístupná"
#: cps/shelf.py:323 #: cps/shelf.py:323
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "Změnit pořadí Police: %(name)s" msgstr "Změnit pořadí Police: '%(name)s'"
#: cps/ub.py:57 #: cps/ub.py:57
msgid "Recently Added" msgid "Recently Added"
@ -858,7 +858,7 @@ msgstr "Nelze aktivovat ověření LDAP"
#: cps/web.py:1151 cps/web.py:1278 #: 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:1156 #: 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"
@ -1153,7 +1153,7 @@ msgstr "Převést formát knihy:"
#: cps/templates/book_edit.html:30 #: cps/templates/book_edit.html:30
msgid "Convert from:" msgid "Convert from:"
msgstr "Převest z:" msgstr "Převést z:"
#: cps/templates/book_edit.html:32 cps/templates/book_edit.html:39 #: cps/templates/book_edit.html:32 cps/templates/book_edit.html:39
msgid "select an option" msgid "select an option"
@ -1165,7 +1165,7 @@ msgstr "Převést do:"
#: cps/templates/book_edit.html:46 #: cps/templates/book_edit.html:46
msgid "Convert book" msgid "Convert book"
msgstr "Převest knihu" msgstr "Převést knihu"
#: cps/templates/book_edit.html:55 cps/templates/search_form.html:6 #: cps/templates/book_edit.html:55 cps/templates/search_form.html:6
msgid "Book Title" msgid "Book Title"
@ -1341,7 +1341,7 @@ msgstr "Server port"
#: cps/templates/config_edit.html:91 #: cps/templates/config_edit.html:91
msgid "SSL certfile location (leave it empty for non-SSL Servers)" msgid "SSL certfile location (leave it empty for non-SSL Servers)"
msgstr "Umístění certifikátu SSL (ponechejte prázdné u serverů jiných než SSL)" msgstr "Umístění certifikátu SSL (ponechte prázdné pro servery jiné než SSL)"
#: cps/templates/config_edit.html:95 #: cps/templates/config_edit.html:95
msgid "SSL Keyfile location (leave it empty for non-SSL Servers)" msgid "SSL Keyfile location (leave it empty for non-SSL Servers)"
@ -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"
@ -1495,12 +1495,12 @@ msgstr "Obtain %(provider)s OAuth Credential"
#: cps/templates/config_edit.html:263 #: cps/templates/config_edit.html:263
#, python-format #, python-format
msgid "%(provider)s OAuth Client Id" msgid "%(provider)s OAuth Client Id"
msgstr "%(provider)s OAuth Client Id" msgstr "%(provider)s OAuth Klient Id"
#: cps/templates/config_edit.html:267 #: cps/templates/config_edit.html:267
#, python-format #, python-format
msgid "%(provider)s OAuth Client Secret" msgid "%(provider)s OAuth Client Secret"
msgstr "%(provider)s OAuth Client Secret" msgstr "%(provider)s OAuth Klient Tajemství"
#: cps/templates/config_edit.html:276 #: cps/templates/config_edit.html:276
msgid "Allow Reverse Proxy Authentication" msgid "Allow Reverse Proxy Authentication"
@ -1532,7 +1532,7 @@ msgstr "Nastavení převaděče eknih"
#: cps/templates/config_edit.html:312 #: cps/templates/config_edit.html:312
msgid "Path to convertertool" msgid "Path to convertertool"
msgstr "Cesta k převáděči" msgstr "Cesta k převaděči"
#: cps/templates/config_edit.html:318 #: cps/templates/config_edit.html:318
msgid "Location of Unrar binary" msgid "Location of Unrar binary"
@ -1577,7 +1577,7 @@ msgstr "Regulární výraz pro ignorování sloupců"
#: cps/templates/config_view_edit.html:46 #: cps/templates/config_view_edit.html:46
msgid "Link read/unread status to Calibre column" msgid "Link read/unread status to Calibre column"
msgstr "Propojit stav čtení/nepřečtení do sloupce Calibre" msgstr "Propojit stav čtení/nepřečtení do sloupce Calibre"
#: cps/templates/config_view_edit.html:55 #: cps/templates/config_view_edit.html:55
msgid "Regular expression for title sorting" msgid "Regular expression for title sorting"
@ -1625,7 +1625,7 @@ msgstr "Povolit úpravy veřejných polic"
#: cps/templates/config_view_edit.html:119 #: cps/templates/config_view_edit.html:119
msgid "Default visibilities for new users" msgid "Default visibilities for new users"
msgstr "Výchozí viditelnosti pro nové uživatele" msgstr "Výchozí zobrazení pro nové uživatele"
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76 #: 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"
@ -2337,7 +2337,7 @@ msgstr "Nedávná stahování"
#~ msgstr "Prohlížeč PDF.js" #~ msgstr "Prohlížeč PDF.js"
#~ msgid "Preparing document for printing..." #~ msgid "Preparing document for printing..."
#~ msgstr "Příprava dokumentu pro tisk" #~ msgstr "Příprava dokumentu pro tisk..."
#~ msgid "Using your another device, visit" #~ msgid "Using your another device, visit"
#~ msgstr "Pomocí jiného zařízení navštivte" #~ msgstr "Pomocí jiného zařízení navštivte"
@ -3315,7 +3315,7 @@ msgstr "Nedávná stahování"
#~ msgstr "Selkup" #~ msgstr "Selkup"
#~ msgid "Irish; Old (to 900)" #~ msgid "Irish; Old (to 900)"
#~ msgstr "Irlandese antico (fino al 900)" #~ msgstr "Irlandese antico (fino al 900)"
#~ msgid "Shan" #~ msgid "Shan"
#~ msgstr "Shan" #~ msgstr "Shan"

@ -7,7 +7,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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2020-01-18 12:52+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"

@ -8,7 +8,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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2019-07-26 11:44+0100\n" "PO-Revision-Date: 2019-07-26 11:44+0100\n"
"Last-Translator: minakmostoles <xxx@xxx.com>\n" "Last-Translator: minakmostoles <xxx@xxx.com>\n"
"Language: es\n" "Language: es\n"

@ -7,7 +7,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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2020-01-12 13:56+0100\n" "PO-Revision-Date: 2020-01-12 13:56+0100\n"
"Last-Translator: Samuli Valavuo <svalavuo@gmail.com>\n" "Last-Translator: Samuli Valavuo <svalavuo@gmail.com>\n"
"Language: fi\n" "Language: fi\n"

@ -20,7 +20,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web\n" "Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-01-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2019-08-21 15:20+0100\n" "PO-Revision-Date: 2019-08-21 15:20+0100\n"
"Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n" "Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n"
"Language: fr\n" "Language: fr\n"

@ -7,7 +7,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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2019-04-06 23:36+0200\n" "PO-Revision-Date: 2019-04-06 23:36+0200\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language: hu\n" "Language: hu\n"

@ -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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2017-04-04 15:09+0200\n" "PO-Revision-Date: 2017-04-04 15:09+0200\n"
"Last-Translator: ElQuimm <quimm@webtaste.com>\n" "Last-Translator: ElQuimm <quimm@webtaste.com>\n"
"Language: it\n" "Language: it\n"
@ -165,7 +165,7 @@ msgstr "Decomprimo il pacchetto di aggiornamento"
#: cps/admin.py:717 #: cps/admin.py:717
msgid "Replacing files" msgid "Replacing files"
msgstr "Sostituzione files" msgstr "Sostituisco i file"
#: cps/admin.py:718 #: cps/admin.py:718
msgid "Database connections are closed" msgid "Database connections are closed"
@ -177,7 +177,7 @@ msgstr "Arresta il server"
#: cps/admin.py:720 #: cps/admin.py:720
msgid "Update finished, please press okay and reload page" msgid "Update finished, please press okay and reload page"
msgstr "Aggiornamento completato, prego premere ok e ricaricare la pagina" msgstr "Aggiornamento completato, prego premi ok e ricarica la pagina"
#: cps/admin.py:721 cps/admin.py:722 cps/admin.py:723 cps/admin.py:724 #: cps/admin.py:721 cps/admin.py:722 cps/admin.py:723 cps/admin.py:724
msgid "Update failed:" msgid "Update failed:"
@ -268,7 +268,7 @@ msgstr "Probabilmnete il libro caricato esiste già nella libreria; considera di
#: cps/editbooks.py:613 #: cps/editbooks.py:613
#, python-format #, python-format
msgid "Failed to store file %(file)s (Permission denied)." msgid "Failed to store file %(file)s (Permission denied)."
msgstr "Impossibile salvare il file %(file)s (autorizzazione negata)" msgstr "Impossibile salvare il file %(file)s (autorizzazione negata)."
#: cps/editbooks.py:619 #: cps/editbooks.py:619
#, python-format #, python-format
@ -305,7 +305,7 @@ msgstr "Callback domain non è stato verificato. Per favore intraprendi il neces
#: cps/helper.py:80 #: cps/helper.py:80
#, python-format #, python-format
msgid "%(format)s format not found for book id: %(book)d" msgid "%(format)s format not found for book id: %(book)d"
msgstr "%(format)s formato non trovato per il libro: %(book)d" msgstr "Formato %(format)s non trovato per il libro: %(book)d"
#: cps/helper.py:92 #: cps/helper.py:92
#, python-format #, python-format
@ -341,7 +341,7 @@ msgstr "Inizia con Calibre-Web"
#: cps/helper.py:135 #: cps/helper.py:135
#, python-format #, python-format
msgid "Registration e-mail for user: %(name)s" msgid "Registration e-mail for user: %(name)s"
msgstr "E-mail di registrazione per l'utente: %(name)s" msgstr "E-mail di registrazione dell'utente: %(name)s"
#: cps/helper.py:149 cps/helper.py:151 cps/helper.py:153 cps/helper.py:161 #: cps/helper.py:149 cps/helper.py:151 cps/helper.py:153 cps/helper.py:161
#: cps/helper.py:163 cps/helper.py:165 #: cps/helper.py:163 cps/helper.py:165
@ -386,15 +386,15 @@ msgstr "File %(file)s non trovato su Google Drive"
#: cps/helper.py:411 #: cps/helper.py:411
#, python-format #, python-format
msgid "Book path %(path)s not found on Google Drive" msgid "Book path %(path)s not found on Google Drive"
msgstr "Non ho trovato la cartella %(path)s su Google Drive" msgstr "Non ho trovato la cartella %(path)s del libro su Google Drive"
#: cps/helper.py:643 #: cps/helper.py:643
msgid "Waiting" msgid "Waiting"
msgstr "Attendere" msgstr "Attendi"
#: cps/helper.py:645 #: cps/helper.py:645
msgid "Failed" msgid "Failed"
msgstr "Fallito" msgstr "Non riuscito"
#: cps/helper.py:647 #: cps/helper.py:647
msgid "Started" msgid "Started"
@ -431,19 +431,19 @@ msgstr "Registra con %(provider)s"
#: cps/oauth_bb.py:155 #: cps/oauth_bb.py:155
msgid "Failed to log in with GitHub." msgid "Failed to log in with GitHub."
msgstr "Fallito l'accesso con GitHub." msgstr "Accesso con GitHub non riuscito."
#: cps/oauth_bb.py:160 #: cps/oauth_bb.py:160
msgid "Failed to fetch user info from GitHub." msgid "Failed to fetch user info from GitHub."
msgstr "Fallito il recupero delle informazioni dell'utente da GitHub." msgstr "Il recupero delle informazioni dell'utente da GitHub non è riuscito."
#: cps/oauth_bb.py:171 #: cps/oauth_bb.py:171
msgid "Failed to log in with Google." msgid "Failed to log in with Google."
msgstr "Fallito l'accesso con Google." msgstr "Accesso con Google non riuscito."
#: cps/oauth_bb.py:176 #: cps/oauth_bb.py:176
msgid "Failed to fetch user info from Google." msgid "Failed to fetch user info from Google."
msgstr "Fallito il recupero delle informazioni da Google." msgstr "Il recupero delle informazioni dell'utente da Google non è riuscito."
#: cps/oauth_bb.py:274 #: cps/oauth_bb.py:274
#, python-format #, python-format
@ -453,7 +453,7 @@ msgstr "Scollegato da %(oauth)s con successo."
#: cps/oauth_bb.py:278 #: cps/oauth_bb.py:278
#, python-format #, python-format
msgid "Unlink to %(oauth)s failed." msgid "Unlink to %(oauth)s failed."
msgstr "Scollegamento da %(oauth)s fallito.\"" msgstr "Scollegamento da %(oauth)s fallito."
#: cps/oauth_bb.py:281 #: cps/oauth_bb.py:281
#, python-format #, python-format
@ -462,11 +462,11 @@ msgstr "Non collegato a %(oauth)s."
#: cps/oauth_bb.py:309 #: cps/oauth_bb.py:309
msgid "GitHub Oauth error, please retry later." msgid "GitHub Oauth error, please retry later."
msgstr "GitHub Oauth error, per favore riprova più tardi." msgstr "GitHub errore Oauth, per favore riprova più tardi."
#: cps/oauth_bb.py:328 #: cps/oauth_bb.py:328
msgid "Google Oauth error, please retry later." msgid "Google Oauth error, please retry later."
msgstr "Google Oauth error, per favore riprova più tardi." msgstr "Google errore Oauth, per favore riprova più tardi."
#: cps/shelf.py:47 cps/shelf.py:99 #: cps/shelf.py:47 cps/shelf.py:99
msgid "Invalid shelf specified" msgid "Invalid shelf specified"
@ -572,7 +572,7 @@ msgstr "Aggiunto recentemente"
#: cps/ub.py:59 #: cps/ub.py:59
msgid "Show recent books" msgid "Show recent books"
msgstr "Mostra i libri recenti" msgstr "Mostra i libri più recenti"
#: cps/templates/index.xml:17 cps/ub.py:60 #: cps/templates/index.xml:17 cps/ub.py:60
msgid "Hot Books" msgid "Hot Books"
@ -614,7 +614,7 @@ msgstr "Per scoprire"
#: cps/ub.py:76 #: cps/ub.py:76
msgid "Show random books" msgid "Show random books"
msgstr "Mostra libro a caso" msgstr "Mostra libri a caso"
#: cps/templates/index.xml:75 cps/ub.py:77 #: cps/templates/index.xml:75 cps/ub.py:77
msgid "Categories" msgid "Categories"
@ -667,11 +667,11 @@ msgstr "Mostra la selezione della valutazione"
#: cps/templates/index.xml:96 cps/ub.py:97 #: cps/templates/index.xml:96 cps/ub.py:97
msgid "File formats" msgid "File formats"
msgstr "Formati dei file" msgstr "Formato file"
#: cps/ub.py:99 #: cps/ub.py:99
msgid "Show file formats selection" msgid "Show file formats selection"
msgstr "Mostra la selezione dei formati dei file" msgstr "Mostra la selezione del formato dei file"
#: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372 #: cps/updater.py:252 cps/updater.py:359 cps/updater.py:372
msgid "Unexpected data while reading update information" msgid "Unexpected data while reading update information"
@ -708,11 +708,11 @@ msgstr "Libri aggiunti di recente"
#: cps/web.py:514 #: cps/web.py:514
msgid "Best rated books" msgid "Best rated books"
msgstr "I libri con le migliori valutazioni" msgstr "Libri con le migliori valutazioni"
#: cps/templates/index.xml:38 cps/web.py:522 #: cps/templates/index.xml:38 cps/web.py:522
msgid "Random Books" msgid "Random Books"
msgstr "Libri a caso" msgstr "Libri casuali"
#: cps/web.py:548 #: cps/web.py:548
msgid "Books" msgid "Books"
@ -763,19 +763,19 @@ msgstr "Lingua: %(name)s"
#: cps/web.py:705 #: cps/web.py:705
msgid "Publisher list" msgid "Publisher list"
msgstr "Lista degli editori" msgstr "Elenco degli editori"
#: cps/web.py:721 #: cps/web.py:721
msgid "Series list" msgid "Series list"
msgstr "Lista delle serie" msgstr "Elenco delle serie"
#: cps/web.py:735 #: cps/web.py:735
msgid "Ratings list" msgid "Ratings list"
msgstr "Lista delle valutazioni" msgstr "Elenco delle valutazioni"
#: cps/web.py:748 #: cps/web.py:748
msgid "File formats list" msgid "File formats list"
msgstr "Lista dei formati di file" msgstr "Elenco dei formati"
#: cps/web.py:776 #: cps/web.py:776
msgid "Available languages" msgid "Available languages"
@ -783,7 +783,7 @@ msgstr "Lingue disponibili"
#: cps/web.py:793 #: cps/web.py:793
msgid "Category list" msgid "Category list"
msgstr "Elenco categorie" msgstr "Elenco delle categorie"
#: cps/templates/layout.html:73 cps/web.py:807 #: cps/templates/layout.html:73 cps/web.py:807
msgid "Tasks" msgid "Tasks"
@ -895,7 +895,7 @@ msgstr "Il token è scaduto"
#: cps/web.py:1240 #: cps/web.py:1240
msgid "Success! Please return to your device" msgid "Success! Please return to your device"
msgstr "Successo! Torna al tuo dispositivo" msgstr "Riuscito! Torna al tuo dispositivo"
#: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366 #: cps/web.py:1317 cps/web.py:1360 cps/web.py:1366
#, python-format #, python-format
@ -1045,7 +1045,7 @@ msgstr "Amministrazione"
#: cps/templates/admin.html:122 #: cps/templates/admin.html:122
msgid "View Logfiles" msgid "View Logfiles"
msgstr "Visualizza LogFiles" msgstr "Visualizza LogFile"
#: cps/templates/admin.html:123 #: cps/templates/admin.html:123
msgid "Reconnect to Calibre DB" msgid "Reconnect to Calibre DB"
@ -1217,7 +1217,7 @@ msgstr "Lingua"
#: cps/templates/book_edit.html:113 cps/templates/search_form.html:137 #: cps/templates/book_edit.html:113 cps/templates/search_form.html:137
msgid "Yes" msgid "Yes"
msgstr "Si" msgstr "Sì"
#: cps/templates/book_edit.html:114 cps/templates/search_form.html:138 #: cps/templates/book_edit.html:114 cps/templates/search_form.html:138
msgid "No" msgid "No"
@ -1377,7 +1377,7 @@ msgstr "Livello di Log"
#: cps/templates/config_edit.html:131 #: cps/templates/config_edit.html:131
msgid "Location and name of logfile (calibre-web.log for no entry)" msgid "Location and name of logfile (calibre-web.log for no entry)"
msgstr "Percorso e nome del logfile (senza indicazioni sarà calibre-web.log)" msgstr "Percorso e nome del Logfile (senza indicazioni sarà calibre-web.log)"
#: cps/templates/config_edit.html:136 #: cps/templates/config_edit.html:136
msgid "Enable Access Log" msgid "Enable Access Log"
@ -1385,11 +1385,11 @@ msgstr "Abilita l'Access Log"
#: cps/templates/config_edit.html:139 #: cps/templates/config_edit.html:139
msgid "Location and name of access logfile (access.log for no entry)" msgid "Location and name of access logfile (access.log for no entry)"
msgstr "Percorso e nome del logfile di accesso (senza indicazioni sarà access.log)" msgstr "Percorso e nome del Logfile di accesso (senza indicazioni sarà access.log)"
#: cps/templates/config_edit.html:150 #: cps/templates/config_edit.html:150
msgid "Feature Configuration" msgid "Feature Configuration"
msgstr "Configurazione della caratteristica" msgstr "Ulteriori opzioni"
#: cps/templates/config_edit.html:158 #: cps/templates/config_edit.html:158
msgid "Enable uploading" msgid "Enable uploading"
@ -1528,7 +1528,7 @@ msgstr "Utilizza il convertitore di Calibre"
#: cps/templates/config_edit.html:308 #: cps/templates/config_edit.html:308
msgid "E-Book converter settings" msgid "E-Book converter settings"
msgstr "Configurazione del convertitore di e-book" msgstr "Configurazione del convertitore di libri"
#: cps/templates/config_edit.html:312 #: cps/templates/config_edit.html:312
msgid "Path to convertertool" msgid "Path to convertertool"
@ -1585,7 +1585,7 @@ msgstr "Espressione regolare per ordinare la visualizzazione del titolo"
#: cps/templates/config_view_edit.html:59 #: cps/templates/config_view_edit.html:59
msgid "Tags for Mature Content" msgid "Tags for Mature Content"
msgstr "Tags per i libri per adulti" msgstr "Tags dei libri per adulti"
#: cps/templates/config_view_edit.html:73 #: cps/templates/config_view_edit.html:73
msgid "Default settings for new users" msgid "Default settings for new users"
@ -1629,7 +1629,7 @@ msgstr "Visibilità di base per i nuovi utenti"
#: cps/templates/config_view_edit.html:135 cps/templates/user_edit.html:76 #: 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 "Mostra libri a caso nella vista dettagliata" msgstr "Mostra libri scelti alleatoriamente nella vista dettagliata"
#: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89 #: cps/templates/config_view_edit.html:139 cps/templates/user_edit.html:89
msgid "Show mature content" msgid "Show mature content"
@ -1705,7 +1705,7 @@ msgstr "password SMTP"
#: cps/templates/email_edit.html:35 #: cps/templates/email_edit.html:35
msgid "From e-mail" msgid "From e-mail"
msgstr "Dall'email" msgstr "E-mail mittente"
#: cps/templates/email_edit.html:38 #: cps/templates/email_edit.html:38
msgid "Save settings" msgid "Save settings"
@ -1717,7 +1717,7 @@ msgstr "Salva le impostazioni e invia e-mail di test"
#: cps/templates/email_edit.html:43 #: cps/templates/email_edit.html:43
msgid "Allowed domains for registering" msgid "Allowed domains for registering"
msgstr "Dominii autorizzti alla registrazione" msgstr "Dominii autorizzati alla registrazione"
#: cps/templates/email_edit.html:46 cps/templates/email_edit.html:72 #: cps/templates/email_edit.html:46 cps/templates/email_edit.html:72
msgid "Add Domain" msgid "Add Domain"
@ -1749,7 +1749,7 @@ msgstr "Crea-segnala un problema"
#: cps/templates/http_error.html:44 #: cps/templates/http_error.html:44
msgid "Back to home" msgid "Back to home"
msgstr "Ritorno alla pagina principale" msgstr "Ritorna alla pagina principale"
#: cps/templates/index.html:5 #: cps/templates/index.html:5
msgid "Discover (Random Books)" msgid "Discover (Random Books)"
@ -1781,7 +1781,7 @@ msgstr "Gli ultimi libri"
#: cps/templates/index.xml:42 #: cps/templates/index.xml:42
msgid "Show Random Books" msgid "Show Random Books"
msgstr "Mostra libri casuali" msgstr "Mostra libri casualmente"
#: cps/templates/index.xml:65 #: cps/templates/index.xml:65
msgid "Books ordered by Author" msgid "Books ordered by Author"
@ -1854,7 +1854,7 @@ msgstr "Registra"
#: cps/templates/layout.html:116 cps/templates/layout.html:223 #: cps/templates/layout.html:116 cps/templates/layout.html:223
msgid "Uploading..." msgid "Uploading..."
msgstr "Carica" msgstr "Carico..."
#: cps/templates/layout.html:117 #: cps/templates/layout.html:117
msgid "please don't refresh the page" msgid "please don't refresh the page"
@ -1912,11 +1912,11 @@ msgstr "Accedi con magic link"
#: cps/templates/logviewer.html:6 #: cps/templates/logviewer.html:6
msgid "Show Calibre-Web log: " msgid "Show Calibre-Web log: "
msgstr "" msgstr "Mostra il log di Calibre-Web: "
#: cps/templates/logviewer.html:8 #: cps/templates/logviewer.html:8
msgid "Calibre-Web log: " msgid "Calibre-Web log: "
msgstr "Mostra il log Calibre-Web" msgstr "Calibre-Web\" log: "
#: cps/templates/logviewer.html:8 #: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed" msgid "Stream output, can't be displayed"
@ -1924,7 +1924,7 @@ msgstr "Flusso attivo, non può essere visualizzato"
#: cps/templates/logviewer.html:12 #: cps/templates/logviewer.html:12
msgid "Show access log: " msgid "Show access log: "
msgstr "Mostra il log di accesso" msgstr "Mostra il log di accesso: "
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "Calibre-Web ebook catalog" msgid "Calibre-Web ebook catalog"
@ -2072,7 +2072,7 @@ msgstr "Nessun risultato per:"
#: cps/templates/search.html:6 #: cps/templates/search.html:6
msgid "Please try a different search" msgid "Please try a different search"
msgstr "Prova una ricerca diversa" msgstr "Prova una ricerca differente"
#: cps/templates/search.html:8 #: cps/templates/search.html:8
msgid "Results for:" msgid "Results for:"
@ -2116,7 +2116,7 @@ msgstr "Valutazione inferiore a"
#: cps/templates/shelf.html:10 #: cps/templates/shelf.html:10
msgid "Delete this Shelf" msgid "Delete this Shelf"
msgstr "Cancellare questo scaffale" msgstr "Cancella questo scaffale"
#: cps/templates/shelf.html:11 #: cps/templates/shelf.html:11
msgid "Edit Shelf" msgid "Edit Shelf"
@ -2144,7 +2144,7 @@ msgstr "Riordina tramite drag and drop"
#: cps/templates/stats.html:7 #: cps/templates/stats.html:7
msgid "Calibre library statistics" msgid "Calibre library statistics"
msgstr "Statistiche libreria Calibre" msgstr "Statistiche della libreria di Calibre"
#: cps/templates/stats.html:12 #: cps/templates/stats.html:12
msgid "Books in this Library" msgid "Books in this Library"
@ -2220,11 +2220,11 @@ msgstr "E-mail di Kindle"
#: cps/templates/user_edit.html:41 #: cps/templates/user_edit.html:41
msgid "Show books with language" msgid "Show books with language"
msgstr "Mostra libri per lingua" msgstr "Mostra libri in "
#: cps/templates/user_edit.html:43 #: cps/templates/user_edit.html:43
msgid "Show all" msgid "Show all"
msgstr "Mostra tutto" msgstr "Mostra libri in tutte le lingue presenti"
#: cps/templates/user_edit.html:53 #: cps/templates/user_edit.html:53
msgid "OAuth Settings" msgid "OAuth Settings"
@ -3513,7 +3513,7 @@ msgstr "Download recenti"
#~ msgstr "La copertina non è un file in formato jpg: non posso salvare" #~ msgstr "La copertina non è un file in formato jpg: non posso salvare"
#~ msgid "Preparing document for printing..." #~ msgid "Preparing document for printing..."
#~ msgstr "Preparo documento per la stampa..." #~ msgstr "Preparo il documento per la stampa..."
#~ msgid "Using your another device, visit" #~ msgid "Using your another device, visit"
#~ msgstr "Utilizza il tuo altro dispositivo, visita" #~ msgstr "Utilizza il tuo altro dispositivo, visita"
@ -3522,10 +3522,10 @@ msgstr "Download recenti"
#~ msgstr "e accedi" #~ msgstr "e accedi"
#~ msgid "Using your another device, login and visit " #~ msgid "Using your another device, login and visit "
#~ msgstr "Utilizza il tuo altro apparecchio, collegati e visita" #~ msgstr "Utilizza il tuo altro apparecchio, collegati e visita "
#~ msgid "Newest Books" #~ msgid "Newest Books"
#~ msgstr "I libri più nuovi" #~ msgstr "I libri più recenti"
#~ msgid "Oldest Books" #~ msgid "Oldest Books"
#~ msgstr "I libri più vecchi" #~ msgstr "I libri più vecchi"

@ -7,7 +7,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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2018-02-07 02:20-0500\n" "PO-Revision-Date: 2018-02-07 02:20-0500\n"
"Last-Translator: white <space_white@yahoo.com>\n" "Last-Translator: white <space_white@yahoo.com>\n"
"Language: ja\n" "Language: ja\n"

@ -8,7 +8,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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2018-08-27 17:06+0700\n" "PO-Revision-Date: 2018-08-27 17:06+0700\n"
"Last-Translator: \n" "Last-Translator: \n"
"Language: km_KH\n" "Language: km_KH\n"

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-Web (GPLV3)\n" "Project-Id-Version: Calibre-Web (GPLV3)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-01-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2019-06-17 22:37+0200\n" "PO-Revision-Date: 2019-06-17 22:37+0200\n"
"Last-Translator: Marcel Maas <marcel.maas@outlook.com>\n" "Last-Translator: Marcel Maas <marcel.maas@outlook.com>\n"
"Language: nl\n" "Language: nl\n"

@ -8,9 +8,9 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre Web - polski (POT: 2019-08-06 18:35)\n" "Project-Id-Version: Calibre Web - polski (POT: 2019-08-06 18:35)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-01-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2019-08-18 22:06+0200\n" "PO-Revision-Date: 2019-08-18 22:06+0200\n"
"Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n" "Last-Translator: Jerzy Piątek <jerzy.piatek@gmail.com>\n"
"Language: pl\n" "Language: pl\n"
"Language-Team: \n" "Language-Team: \n"
"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n" "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
@ -48,7 +48,7 @@ msgstr "Nieznany"
#: cps/admin.py:129 #: cps/admin.py:129
msgid "Admin page" msgid "Admin page"
msgstr " Panel administratora" msgstr "Panel administratora"
#: cps/admin.py:148 cps/templates/admin.html:115 #: cps/admin.py:148 cps/templates/admin.html:115
msgid "UI Configuration" msgid "UI Configuration"
@ -100,7 +100,7 @@ msgstr "Wystąpił błąd podczas wysyłania e-maila testowego: %(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 "Najpierw skonfiguruj swój adres e-mail..."
#: cps/admin.py:542 #: cps/admin.py:542
msgid "E-mail server settings updated" msgid "E-mail server settings updated"
@ -126,7 +126,7 @@ msgstr "Edytuj użytkownika %(nick)s"
#: cps/admin.py:622 cps/web.py:1324 #: cps/admin.py:622 cps/web.py:1324
msgid "This username is already taken" msgid "This username is already taken"
msgstr "" msgstr "Nazwa użytkownika jest już zajęta"
#: cps/admin.py:637 #: cps/admin.py:637
#, python-format #, python-format
@ -194,7 +194,7 @@ msgstr ""
#: cps/admin.py:722 cps/updater.py:274 cps/updater.py:461 #: cps/admin.py:722 cps/updater.py:274 cps/updater.py:461
msgid "Connection error" msgid "Connection error"
msgstr "" msgstr "Błąd połączenia"
#: cps/admin.py:723 cps/updater.py:276 cps/updater.py:463 #: cps/admin.py:723 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection" msgid "Timeout while establishing connection"
@ -206,7 +206,7 @@ msgstr ""
#: cps/converter.py:31 #: cps/converter.py:31
msgid "not configured" msgid "not configured"
msgstr "" msgstr "nie skonfigurowane"
#: cps/editbooks.py:214 cps/editbooks.py:396 #: cps/editbooks.py:214 cps/editbooks.py:396
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"
@ -265,11 +265,11 @@ msgstr "Błąd podczas edycji książki, sprawdź plik logu, aby uzyskać szczeg
#: 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 "Nie można zapisać pliku %(filename)s w katalogu tymczasowym"
#: 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 "Przesłana książka prawdopodobnie istnieje w bibliotece, rozważ zmianę przed przesłaniem nowej: "
#: cps/editbooks.py:613 #: cps/editbooks.py:613
#, python-format #, python-format
@ -479,7 +479,7 @@ msgstr ""
#: cps/shelf.py:47 cps/shelf.py:99 #: cps/shelf.py:47 cps/shelf.py:99
msgid "Invalid shelf specified" msgid "Invalid shelf specified"
msgstr "" msgstr "Podano niewłaściwą półkę"
#: cps/shelf.py:54 #: cps/shelf.py:54
#, python-format #, python-format
@ -488,12 +488,12 @@ msgstr ""
#: cps/shelf.py:62 #: cps/shelf.py:62
msgid "You are not allowed to edit public shelves" msgid "You are not allowed to edit public shelves"
msgstr "" msgstr "Nie masz uprawnień do edytowania publicznej półki"
#: cps/shelf.py:71 #: cps/shelf.py:71
#, python-format #, python-format
msgid "Book is already part of the shelf: %(shelfname)s" msgid "Book is already part of the shelf: %(shelfname)s"
msgstr "" msgstr "Książka jest już dodana do półki"
#: cps/shelf.py:85 #: cps/shelf.py:85
#, python-format #, python-format
@ -503,26 +503,26 @@ msgstr "Książka została dodana do półki: %(sname)s"
#: cps/shelf.py:104 #: cps/shelf.py:104
#, python-format #, python-format
msgid "You are not allowed to add a book to the the shelf: %(name)s" msgid "You are not allowed to add a book to the the shelf: %(name)s"
msgstr "" msgstr "Nie masz uprawnień do dodania ksiażki do półki: %(name)s"
#: cps/shelf.py:109 #: cps/shelf.py:109
msgid "User is not allowed to edit public shelves" msgid "User is not allowed to edit public shelves"
msgstr "" msgstr "Użytkownik nie ma uprawnień do edytowania publicznych półek"
#: cps/shelf.py:127 #: cps/shelf.py:127
#, python-format #, python-format
msgid "Books are already part of the shelf: %(name)s" msgid "Books are already part of the shelf: %(name)s"
msgstr "" msgstr "Książki są już dodane do półki: %(name)s"
#: cps/shelf.py:141 #: cps/shelf.py:141
#, python-format #, python-format
msgid "Books have been added to shelf: %(sname)s" msgid "Books have been added to shelf: %(sname)s"
msgstr "" msgstr "Książki zostały dodane do półki %(sname)s"
#: cps/shelf.py:143 #: cps/shelf.py:143
#, python-format #, python-format
msgid "Could not add books to shelf: %(sname)s" msgid "Could not add books to shelf: %(sname)s"
msgstr "" msgstr "Nie można dodać książek do półki: %(sname)s"
#: cps/shelf.py:180 #: cps/shelf.py:180
#, python-format #, python-format
@ -532,7 +532,7 @@ msgstr "Książka została usunięta z półki: %(sname)s"
#: cps/shelf.py:186 #: cps/shelf.py:186
#, python-format #, python-format
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
msgstr "" msgstr "Niestety nie możesz usunąć książki z tej półki %(sname)s"
#: cps/shelf.py:207 cps/shelf.py:231 #: cps/shelf.py:207 cps/shelf.py:231
#, python-format #, python-format
@ -568,7 +568,7 @@ msgstr "Półka: '%(name)s'"
#: cps/shelf.py:292 #: cps/shelf.py:292
msgid "Error opening shelf. Shelf does not exist or is not accessible" msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "" msgstr "Błąd otwierania półki. Półka nie istnieje lub jest niedostępna"
#: cps/shelf.py:323 #: cps/shelf.py:323
#, python-format #, python-format
@ -615,7 +615,7 @@ msgstr "Nieprzeczytane książki"
#: cps/ub.py:73 #: cps/ub.py:73
msgid "Show unread" msgid "Show unread"
msgstr "" msgstr "Pokaż nieprzeczytane"
#: cps/ub.py:74 #: cps/ub.py:74
msgid "Discover" msgid "Discover"
@ -688,28 +688,28 @@ msgstr ""
#: cps/updater.py:259 cps/updater.py:365 #: cps/updater.py:259 cps/updater.py:365
msgid "No update available. You already have the latest version installed" msgid "No update available. You already have the latest version installed"
msgstr "" msgstr "Brak dostępnej aktualizacji. Masz już zainstalowaną najnowszą wersję"
#: cps/updater.py:285 #: cps/updater.py:285
msgid "A new update is available. Click on the button below to update to the latest version." msgid "A new update is available. Click on the button below to update to the latest version."
msgstr "" msgstr "Dostępna jest nowa aktualizacja. Kliknij przycisk poniżej, aby zaktualizować do najnowszej wersji."
#: cps/updater.py:338 #: cps/updater.py:338
msgid "Could not fetch update information" msgid "Could not fetch update information"
msgstr "" msgstr "Nie można pobrać informacji o aktualizacji"
#: cps/updater.py:352 #: cps/updater.py:352
msgid "No release information available" msgid "No release information available"
msgstr "" msgstr "Brak dostępnych informacji o wersji"
#: cps/updater.py:405 cps/updater.py:414 #: cps/updater.py:405 cps/updater.py:414
#, python-format #, python-format
msgid "A new update is available. Click on the button below to update to version: %(version)s" msgid "A new update is available. Click on the button below to update to version: %(version)s"
msgstr "" msgstr "Dostępna jest nowa aktualizacja. Kliknij przycisk poniżej, aby zaktualizować do wersji: %(version)s"
#: cps/updater.py:424 #: cps/updater.py:424
msgid "Click on the button below to update to the latest stable version." msgid "Click on the button below to update to the latest stable version."
msgstr "" msgstr "Kliknij przycisk poniżej, aby zaktualizować do najnowszej stabilnej wersji."
#: cps/web.py:486 #: cps/web.py:486
msgid "Recently Added Books" msgid "Recently Added Books"
@ -796,7 +796,7 @@ msgstr "Lista kategorii"
#: cps/templates/layout.html:73 cps/web.py:807 #: cps/templates/layout.html:73 cps/web.py:807
msgid "Tasks" msgid "Tasks"
msgstr " Zadania" msgstr "Zadania"
#: 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:827 cps/web.py:829 #: cps/templates/layout.html:45 cps/web.py:827 cps/web.py:829
@ -841,7 +841,7 @@ msgstr "Najpierw skonfiguruj adres e-mail Kindla..."
#: cps/web.py:1084 #: 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 "Serwer e-mail nie jest skonfigurowany, skontaktuj się z administratorem!"
#: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120 #: cps/web.py:1085 cps/web.py:1091 cps/web.py:1116 cps/web.py:1120
#: cps/web.py:1125 cps/web.py:1129 #: cps/web.py:1125 cps/web.py:1129
@ -879,11 +879,11 @@ msgstr "Błędna nazwa użytkownika lub hasło"
#: cps/web.py:1167 #: cps/web.py:1167
msgid "New Password was send to your email address" msgid "New Password was send to your email address"
msgstr "" msgstr "Nowe hasło zostało wysłane na Twój adres e-mail"
#: cps/web.py:1173 #: cps/web.py:1173
msgid "Please enter valid username to reset password" msgid "Please enter valid username to reset password"
msgstr "" msgstr "Wprowadź prawidłową nazwę użytkownika, aby zresetować hasło"
#: cps/web.py:1179 #: cps/web.py:1179
#, python-format #, python-format
@ -957,7 +957,7 @@ msgstr "DLS"
# ??? # ???
#: cps/templates/admin.html:16 cps/templates/layout.html:76 #: cps/templates/admin.html:16 cps/templates/layout.html:76
msgid "Admin" msgid "Admin"
msgstr " Panel administratora" msgstr "Panel administratora"
# ??? # ???
#: cps/templates/admin.html:17 cps/templates/detail.html:18 #: cps/templates/admin.html:17 cps/templates/detail.html:18
@ -1040,7 +1040,7 @@ msgstr "Publiczna rejestracja"
#: cps/templates/admin.html:100 cps/templates/remote_login.html:4 #: cps/templates/admin.html:100 cps/templates/remote_login.html:4
msgid "Remote login" msgid "Remote login"
msgstr "" msgstr "Zdalne logowanie"
#: cps/templates/admin.html:104 #: cps/templates/admin.html:104
msgid "Reverse proxy login" msgid "Reverse proxy login"
@ -1048,7 +1048,7 @@ msgstr ""
#: cps/templates/admin.html:109 #: cps/templates/admin.html:109
msgid "Reverse proxy header name" msgid "Reverse proxy header name"
msgstr "" msgstr "Nazwa nagłówka reverse proxy"
#: cps/templates/admin.html:121 #: cps/templates/admin.html:121
msgid "Administration" msgid "Administration"
@ -1127,7 +1127,7 @@ msgstr ""
#: cps/templates/author.html:23 #: cps/templates/author.html:23
msgid "In Library" msgid "In Library"
msgstr "" msgstr "W Bibliotece"
# ??? # ???
#: cps/templates/author.html:34 cps/templates/list.html:14 #: cps/templates/author.html:34 cps/templates/list.html:14
@ -1144,7 +1144,7 @@ msgstr ""
#: cps/templates/author.html:94 #: cps/templates/author.html:94
msgid "More by" msgid "More by"
msgstr "" msgstr "Więcej według"
#: cps/templates/book_edit.html:12 #: cps/templates/book_edit.html:12
msgid "Delete Book" msgid "Delete Book"
@ -1213,7 +1213,7 @@ msgstr ""
#: cps/templates/book_edit.html:87 #: cps/templates/book_edit.html:87
msgid "Upload Cover from local drive" msgid "Upload Cover from local drive"
msgstr "" msgstr "Prześlij okładkę z dysku lokalnego"
#: cps/templates/book_edit.html:92 cps/templates/detail.html:165 #: cps/templates/book_edit.html:92 cps/templates/detail.html:165
msgid "Publishing date" msgid "Publishing date"
@ -1320,15 +1320,15 @@ msgstr "Użyć dysku Google?"
#: cps/templates/config_edit.html:31 #: cps/templates/config_edit.html:31
msgid "Google Drive config problem" msgid "Google Drive config problem"
msgstr "" msgstr "Problem z konfiguracją Dysku Google"
#: cps/templates/config_edit.html:37 #: cps/templates/config_edit.html:37
msgid "Authenticate Google Drive" msgid "Authenticate Google Drive"
msgstr "" msgstr "Uwierzytelnij Dysk Google"
#: cps/templates/config_edit.html:41 #: cps/templates/config_edit.html:41
msgid "Please hit submit to continue with setup" msgid "Please hit submit to continue with setup"
msgstr "" msgstr "Kliknij przycisk, aby kontynuować instalację"
#: cps/templates/config_edit.html:44 #: cps/templates/config_edit.html:44
msgid "Please finish Google Drive setup after login" msgid "Please finish Google Drive setup after login"
@ -1369,11 +1369,11 @@ msgstr "Kanał aktualizacji"
#: cps/templates/config_edit.html:101 #: cps/templates/config_edit.html:101
msgid "Stable" msgid "Stable"
msgstr "" msgstr "Stabilna"
#: cps/templates/config_edit.html:102 #: cps/templates/config_edit.html:102
msgid "Stable (Automatic)" msgid "Stable (Automatic)"
msgstr "" msgstr "Stablina (Automatycznie)"
#: cps/templates/config_edit.html:103 #: cps/templates/config_edit.html:103
msgid "Nightly" msgid "Nightly"
@ -1425,15 +1425,15 @@ msgstr "Włącz zdalne logowanie (\"magic link\")"
#: cps/templates/config_edit.html:175 #: cps/templates/config_edit.html:175
msgid "Use Goodreads" msgid "Use Goodreads"
msgstr "" msgstr "Użyj Goodreads"
#: cps/templates/config_edit.html:176 #: cps/templates/config_edit.html:176
msgid "Obtain an API Key" msgid "Obtain an API Key"
msgstr "" msgstr "Uzyskaj klucz API"
#: cps/templates/config_edit.html:180 #: cps/templates/config_edit.html:180
msgid "Goodreads API Key" msgid "Goodreads API Key"
msgstr "" msgstr "Klucz API Goodreads "
#: cps/templates/config_edit.html:184 #: cps/templates/config_edit.html:184
msgid "Goodreads API Secret" msgid "Goodreads API Secret"
@ -1441,55 +1441,55 @@ msgstr ""
#: cps/templates/config_edit.html:191 #: cps/templates/config_edit.html:191
msgid "Login type" msgid "Login type"
msgstr "" msgstr "Rodzaj logowania"
#: cps/templates/config_edit.html:193 #: cps/templates/config_edit.html:193
msgid "Use standard Authentication" msgid "Use standard Authentication"
msgstr "" msgstr "Użyj standardowego uwierzytelnienia"
#: cps/templates/config_edit.html:195 #: cps/templates/config_edit.html:195
msgid "Use LDAP Authentication" msgid "Use LDAP Authentication"
msgstr "" msgstr "Użyj uwierzytelniania LDAP"
#: cps/templates/config_edit.html:198 #: cps/templates/config_edit.html:198
msgid "Use OAuth" msgid "Use OAuth"
msgstr "" msgstr "Uzyj OAuth"
#: cps/templates/config_edit.html:205 #: cps/templates/config_edit.html:205
msgid "LDAP Server Host Name or IP Address" msgid "LDAP Server Host Name or IP Address"
msgstr "" msgstr "Nazwa hosta lub adres IP serwera LDAP"
#: cps/templates/config_edit.html:209 #: cps/templates/config_edit.html:209
msgid "LDAP Server Port" msgid "LDAP Server Port"
msgstr "" msgstr "Port serwera LDAP"
#: cps/templates/config_edit.html:213 #: cps/templates/config_edit.html:213
msgid "LDAP schema (ldap or ldaps)" msgid "LDAP schema (ldap or ldaps)"
msgstr "" msgstr "Schemat LDAP (ldap lub ldaps)"
#: cps/templates/config_edit.html:217 #: cps/templates/config_edit.html:217
msgid "LDAP Admin username" msgid "LDAP Admin username"
msgstr "" msgstr "Nazwa administratora LDAP"
#: cps/templates/config_edit.html:221 #: cps/templates/config_edit.html:221
msgid "LDAP Admin password" msgid "LDAP Admin password"
msgstr "" msgstr "Hasło administratora LDAP"
#: cps/templates/config_edit.html:226 #: cps/templates/config_edit.html:226
msgid "LDAP Server use SSL" msgid "LDAP Server use SSL"
msgstr "" msgstr "Serwer LDAP korzysta z protokołu SSL"
#: cps/templates/config_edit.html:230 #: cps/templates/config_edit.html:230
msgid "LDAP Server use TLS" msgid "LDAP Server use TLS"
msgstr "" msgstr "Serwer LDAP korzysta z TLS"
#: cps/templates/config_edit.html:234 #: cps/templates/config_edit.html:234
msgid "LDAP Server Certificate" msgid "LDAP Server Certificate"
msgstr "" msgstr "Certyfikat serwera LDAP"
#: cps/templates/config_edit.html:238 #: cps/templates/config_edit.html:238
msgid "LDAP SSL Certificate Path" msgid "LDAP SSL Certificate Path"
msgstr "" msgstr "Ścieżka certyfikatu SSL LDAP"
#: cps/templates/config_edit.html:243 #: cps/templates/config_edit.html:243
msgid "LDAP Distinguished Name (DN)" msgid "LDAP Distinguished Name (DN)"
@ -1501,7 +1501,7 @@ msgstr ""
#: cps/templates/config_edit.html:252 #: cps/templates/config_edit.html:252
msgid "LDAP Server is OpenLDAP?" msgid "LDAP Server is OpenLDAP?"
msgstr "" msgstr "Serwer LDAP to OpenLDAP?"
#: cps/templates/config_edit.html:260 #: cps/templates/config_edit.html:260
#, python-format #, python-format
@ -1524,7 +1524,7 @@ msgstr ""
#: cps/templates/config_edit.html:280 #: cps/templates/config_edit.html:280
msgid "Reverse Proxy Header Name" msgid "Reverse Proxy Header Name"
msgstr "" msgstr "Nazwa nagłowka reverse proxy"
#: cps/templates/config_edit.html:292 #: cps/templates/config_edit.html:292
msgid "External binaries" msgid "External binaries"
@ -1552,7 +1552,7 @@ msgstr "Lokalizacja do pliku konwertera"
#: cps/templates/config_edit.html:318 #: cps/templates/config_edit.html:318
msgid "Location of Unrar binary" msgid "Location of Unrar binary"
msgstr "" msgstr "Lokalizacja pliku binarnego Unrar"
#: cps/templates/config_edit.html:334 cps/templates/layout.html:84 #: cps/templates/config_edit.html:334 cps/templates/layout.html:84
#: cps/templates/login.html:4 #: cps/templates/login.html:4
@ -1565,7 +1565,7 @@ msgstr "Konfiguracja Widoku"
#: cps/templates/config_view_edit.html:19 cps/templates/shelf_edit.html:7 #: cps/templates/config_view_edit.html:19 cps/templates/shelf_edit.html:7
msgid "Title" msgid "Title"
msgstr "Nazwa serwera" msgstr "Nazwa"
#: cps/templates/config_view_edit.html:27 #: cps/templates/config_view_edit.html:27
msgid "No. of random books to show" msgid "No. of random books to show"
@ -1573,7 +1573,7 @@ msgstr "Liczba losowych książek do pokazania"
#: cps/templates/config_view_edit.html:31 #: cps/templates/config_view_edit.html:31
msgid "No. of authors to show before hiding (0=disable hiding)" msgid "No. of authors to show before hiding (0=disable hiding)"
msgstr "" msgstr "Liczba autorów do pokazania przed ukryciem (0=wyłącza ukrywanie)"
#: cps/templates/config_view_edit.html:35 cps/templates/readcbr.html:112 #: cps/templates/config_view_edit.html:35 cps/templates/readcbr.html:112
msgid "Theme" msgid "Theme"
@ -1657,7 +1657,7 @@ msgstr "Czytaj w przeglądarce"
#: cps/templates/detail.html:72 #: cps/templates/detail.html:72
msgid "Listen in browser" msgid "Listen in browser"
msgstr "" msgstr "Słuchaj w przeglądarce"
#: cps/templates/detail.html:117 #: cps/templates/detail.html:117
msgid "Book" msgid "Book"
@ -1733,27 +1733,27 @@ msgstr "Zapisz ustawienia i wyślij testową wiadomość e-mail"
#: cps/templates/email_edit.html:43 #: cps/templates/email_edit.html:43
msgid "Allowed domains for registering" msgid "Allowed domains for registering"
msgstr "" msgstr "Domeny dozwolone do rejestracji"
#: cps/templates/email_edit.html:46 cps/templates/email_edit.html:72 #: cps/templates/email_edit.html:46 cps/templates/email_edit.html:72
msgid "Add Domain" msgid "Add Domain"
msgstr "" msgstr "Dodaj domenę"
#: cps/templates/email_edit.html:49 cps/templates/email_edit.html:75 #: cps/templates/email_edit.html:49 cps/templates/email_edit.html:75
msgid "Add" msgid "Add"
msgstr "" msgstr "Dodaj"
#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:64 #: cps/templates/email_edit.html:54 cps/templates/email_edit.html:64
msgid "Enter domainname" msgid "Enter domainname"
msgstr "" msgstr "Podaj nazwę domeny"
#: cps/templates/email_edit.html:60 #: cps/templates/email_edit.html:60
msgid "Denied domains for registering" msgid "Denied domains for registering"
msgstr "" msgstr "Nie można zarejestrowac domen"
#: 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?"
msgstr "" msgstr "Czy naprawdę chcesz usunąć tę regułę domeny?"
#: cps/templates/feed.xml:21 cps/templates/layout.html:176 #: cps/templates/feed.xml:21 cps/templates/layout.html:176
msgid "Next" msgid "Next"
@ -1792,7 +1792,7 @@ msgstr "Popularne publikacje z tego katalogu bazujące na ocenach."
#: cps/templates/index.xml:31 #: cps/templates/index.xml:31
msgid "Recently added Books" msgid "Recently added Books"
msgstr "" msgstr "Ostatnio dodane książki"
#: cps/templates/index.xml:35 #: cps/templates/index.xml:35
msgid "The latest Books" msgid "The latest Books"
@ -1820,11 +1820,11 @@ msgstr "Książki sortowane według serii"
#: cps/templates/index.xml:93 #: cps/templates/index.xml:93
msgid "Books ordered by Languages" msgid "Books ordered by Languages"
msgstr "" msgstr "Ksiązki posortowane według języka"
#: cps/templates/index.xml:100 #: cps/templates/index.xml:100
msgid "Books ordered by file formats" msgid "Books ordered by file formats"
msgstr "" msgstr "Ksiązki posortowane według formatu"
#: 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"
@ -1925,7 +1925,7 @@ msgstr "Zapamiętaj mnie"
#: cps/templates/login.html:22 #: cps/templates/login.html:22
msgid "Forgot password" msgid "Forgot password"
msgstr "" msgstr "Zapomniałem hasła"
#: cps/templates/login.html:25 #: cps/templates/login.html:25
msgid "Log in with magic link" msgid "Log in with magic link"
@ -1933,19 +1933,19 @@ msgstr "Zaloguj się za pomocą \"magic link\""
#: cps/templates/logviewer.html:6 #: cps/templates/logviewer.html:6
msgid "Show Calibre-Web log: " msgid "Show Calibre-Web log: "
msgstr "" msgstr "Pokaż log Calibre-Web"
#: cps/templates/logviewer.html:8 #: cps/templates/logviewer.html:8
msgid "Calibre-Web log: " msgid "Calibre-Web log: "
msgstr "" msgstr "Log Calibre-Web"
#: cps/templates/logviewer.html:8 #: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed" msgid "Stream output, can't be displayed"
msgstr "" msgstr "Nie można wyświetlić wyjścia"
#: cps/templates/logviewer.html:12 #: cps/templates/logviewer.html:12
msgid "Show access log: " msgid "Show access log: "
msgstr "" msgstr "Pokaż log dostępu"
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "Calibre-Web ebook catalog" msgid "Calibre-Web ebook catalog"
@ -1958,27 +1958,27 @@ msgstr "Tekst pływający, gdy paski boczne są otwarte."
#: cps/templates/readcbr.html:88 #: cps/templates/readcbr.html:88
msgid "Keyboard Shortcuts" msgid "Keyboard Shortcuts"
msgstr "" msgstr "Skróty klawiaturowe"
#: cps/templates/readcbr.html:91 #: cps/templates/readcbr.html:91
msgid "Previous Page" msgid "Previous Page"
msgstr "" msgstr "Poprzednia strona"
#: cps/templates/readcbr.html:92 #: cps/templates/readcbr.html:92
msgid "Next Page" msgid "Next Page"
msgstr "" msgstr "Następna strona"
#: cps/templates/readcbr.html:93 #: cps/templates/readcbr.html:93
msgid "Scale to Best" msgid "Scale to Best"
msgstr "" msgstr "Skaluj do najlepszego"
#: cps/templates/readcbr.html:94 #: cps/templates/readcbr.html:94
msgid "Scale to Width" msgid "Scale to Width"
msgstr "" msgstr "Skaluj do szerokości"
#: cps/templates/readcbr.html:95 #: cps/templates/readcbr.html:95
msgid "Scale to Height" msgid "Scale to Height"
msgstr "" msgstr "Skaluj do wysokości"
#: cps/templates/readcbr.html:96 #: cps/templates/readcbr.html:96
msgid "Scale to Native" msgid "Scale to Native"
@ -1986,11 +1986,11 @@ msgstr ""
#: cps/templates/readcbr.html:97 #: cps/templates/readcbr.html:97
msgid "Rotate Right" msgid "Rotate Right"
msgstr "" msgstr "Obróć w prawo"
#: cps/templates/readcbr.html:98 #: cps/templates/readcbr.html:98
msgid "Rotate Left" msgid "Rotate Left"
msgstr "" msgstr "Obróć w lewo"
#: cps/templates/readcbr.html:99 #: cps/templates/readcbr.html:99
msgid "Flip Image" msgid "Flip Image"
@ -1998,27 +1998,27 @@ msgstr ""
#: cps/templates/readcbr.html:115 #: cps/templates/readcbr.html:115
msgid "Light" msgid "Light"
msgstr "" msgstr "Jasny"
#: cps/templates/readcbr.html:116 #: cps/templates/readcbr.html:116
msgid "Dark" msgid "Dark"
msgstr "" msgstr "Ciemny"
#: cps/templates/readcbr.html:121 #: cps/templates/readcbr.html:121
msgid "Scale" msgid "Scale"
msgstr "" msgstr "Skaluj"
#: cps/templates/readcbr.html:124 #: cps/templates/readcbr.html:124
msgid "Best" msgid "Best"
msgstr "" msgstr "Najlepszy"
#: cps/templates/readcbr.html:125 #: cps/templates/readcbr.html:125
msgid "Width" msgid "Width"
msgstr "" msgstr "Szerokość"
#: cps/templates/readcbr.html:126 #: cps/templates/readcbr.html:126
msgid "Height" msgid "Height"
msgstr "" msgstr "Wysokość"
#: cps/templates/readcbr.html:127 #: cps/templates/readcbr.html:127
msgid "Native" msgid "Native"
@ -2026,7 +2026,7 @@ msgstr ""
#: cps/templates/readcbr.html:132 #: cps/templates/readcbr.html:132
msgid "Rotate" msgid "Rotate"
msgstr "" msgstr "Obrót"
#: cps/templates/readcbr.html:143 #: cps/templates/readcbr.html:143
msgid "Flip" msgid "Flip"
@ -2042,7 +2042,7 @@ msgstr "Pionowo"
#: cps/templates/readcbr.html:152 #: cps/templates/readcbr.html:152
msgid "Direction" msgid "Direction"
msgstr "" msgstr "Kierunek"
#: cps/templates/readcbr.html:155 #: cps/templates/readcbr.html:155
msgid "Left to Right" msgid "Left to Right"
@ -2050,11 +2050,11 @@ msgstr "od lewej do prawej"
#: cps/templates/readcbr.html:156 #: cps/templates/readcbr.html:156
msgid "Right to Left" msgid "Right to Left"
msgstr "od prawej do lewej" msgstr "Od prawej do lewej"
#: cps/templates/readpdf.html:29 #: cps/templates/readpdf.html:29
msgid "PDF reader" msgid "PDF reader"
msgstr "czytnik PDF" msgstr "Czytnik PDF"
#: cps/templates/readtxt.html:6 #: cps/templates/readtxt.html:6
msgid "Basic txt Reader" msgid "Basic txt Reader"
@ -2078,11 +2078,11 @@ msgstr "Twój adres e-mail"
#: cps/templates/remote_login.html:6 #: cps/templates/remote_login.html:6
msgid "Use your other device, login and visit " msgid "Use your other device, login and visit "
msgstr "" msgstr "Użyj innego urządzenia, zaloguj się i odwiedź"
#: cps/templates/remote_login.html:9 #: cps/templates/remote_login.html:9
msgid "Once you do so, you will automatically get logged in on this device." msgid "Once you do so, you will automatically get logged in on this device."
msgstr "" msgstr "Gdy to zrobisz, automatycznie zalogujesz się na tym urządzeniu."
#: cps/templates/remote_login.html:12 #: cps/templates/remote_login.html:12
msgid "The link will expire after 10 minutes." msgid "The link will expire after 10 minutes."
@ -2122,11 +2122,11 @@ msgstr "Wyklucz języki"
#: cps/templates/search_form.html:95 #: cps/templates/search_form.html:95
msgid "Extensions" msgid "Extensions"
msgstr "" msgstr "Rozszerzenia"
#: cps/templates/search_form.html:105 #: cps/templates/search_form.html:105
msgid "Exclude Extensions" msgid "Exclude Extensions"
msgstr "" msgstr "Wyklucz rozszerzenia"
#: cps/templates/search_form.html:117 #: cps/templates/search_form.html:117
msgid "Rating bigger than" msgid "Rating bigger than"

@ -8,7 +8,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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2020-01-21 23:03+0400\n" "PO-Revision-Date: 2020-01-21 23:03+0400\n"
"Last-Translator: ZIZA\n" "Last-Translator: ZIZA\n"
"Language: ru\n" "Language: ru\n"

@ -7,7 +7,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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2020-01-18 11:22+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"

@ -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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2017-04-30 00:47+0300\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n"
"Last-Translator: ABIS Team <biblio.if.abis@gmail.com>\n" "Last-Translator: ABIS Team <biblio.if.abis@gmail.com>\n"
"Language: uk\n" "Language: uk\n"

@ -7,7 +7,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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+0100\n"
"PO-Revision-Date: 2017-01-06 17:00+0000\n" "PO-Revision-Date: 2017-01-06 17:00+0000\n"
"Last-Translator: dalin <dalin.lin@gmail.com>\n" "Last-Translator: dalin <dalin.lin@gmail.com>\n"
"Language: zh_Hans_CN\n" "Language: zh_Hans_CN\n"

@ -151,7 +151,7 @@ def load_user_from_auth_header(header_val):
header_val = base64.b64decode(header_val).decode('utf-8') header_val = base64.b64decode(header_val).decode('utf-8')
basic_username = header_val.split(':')[0] basic_username = header_val.split(':')[0]
basic_password = header_val.split(':')[1] basic_password = header_val.split(':')[1]
except TypeError: except (TypeError, UnicodeDecodeError):
pass pass
user = _fetch_user_by_name(basic_username) user = _fetch_user_by_name(basic_username)
if user and check_password_hash(str(user.password), basic_password): if user and check_password_hash(str(user.password), basic_password):
@ -173,7 +173,7 @@ def remote_login_required(f):
def inner(*args, **kwargs): def inner(*args, **kwargs):
if config.config_remote_login: if config.config_remote_login:
return f(*args, **kwargs) return f(*args, **kwargs)
if request.is_xhr: if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
data = {'status': 'error', 'message': 'Forbidden'} data = {'status': 'error', 'message': 'Forbidden'}
response = make_response(json.dumps(data, ensure_ascii=False)) response = make_response(json.dumps(data, ensure_ascii=False))
response.headers["Content-Type"] = "application/json; charset=utf-8" response.headers["Content-Type"] = "application/json; charset=utf-8"
@ -1469,7 +1469,7 @@ def show_book(book_id):
audioentries.append(media_format.format.lower()) audioentries.append(media_format.format.lower())
return render_title_template('detail.html', entry=entries, audioentries=audioentries, cc=cc, return render_title_template('detail.html', entry=entries, audioentries=audioentries, cc=cc,
is_xhr=request.is_xhr, title=entries.title, books_shelfs=book_in_shelfs, is_xhr=request.headers.get('X-Requested-With')=='XMLHttpRequest', title=entries.title, books_shelfs=book_in_shelfs,
have_read=have_read, kindle_list=kindle_list, reader_list=reader_list, page="book") have_read=have_read, kindle_list=kindle_list, reader_list=reader_list, page="book")
else: else:
log.debug(u"Error opening eBook. File does not exist or file is not accessible:") log.debug(u"Error opening eBook. File does not exist or file is not accessible:")

@ -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-27 18:16+0100\n" "POT-Creation-Date: 2020-02-01 15:02+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"

Loading…
Cancel
Save