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
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)
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\

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

@ -146,7 +146,7 @@ class WebServer(object):
self.unix_socket_file = None
def _start_tornado(self):
if os.name == 'nt':
if os.name == 'nt' and sys.version_info > (3, 7):
import asyncio
asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
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>")
@login_required
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()
if shelf is None:
log.error("Invalid shelf specified: %s", shelf_id)
if not request.is_xhr:
if not xhr:
flash(_(u"Invalid shelf specified"), category="error")
return redirect(url_for('web.index'))
return "Invalid shelf specified", 400
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)
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),
category="error")
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():
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")
return redirect(url_for('web.index'))
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()
if book_in_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")
return redirect(url_for('web.index'))
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)
ub.session.add(ins)
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")
if "HTTP_REFERER" in request.environ:
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>")
@login_required
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()
if shelf is None:
log.error("Invalid shelf specified: %s", shelf_id)
if not request.is_xhr:
if not xhr:
return redirect(url_for('web.index'))
return "Invalid shelf specified", 400
@ -169,20 +171,20 @@ def remove_from_shelf(shelf_id, book_id):
if book_shelf is None:
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 "Book already removed from shelf", 410
ub.session.delete(book_shelf)
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")
return redirect(request.environ["HTTP_REFERER"])
return "", 204
else:
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),
category="error")
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)\
.order_by(ub.BookShelf.order.asc()).all()
books_list = [ b.book_id for b in books_in_shelf]
result = db.session.query(db.Books).filter(db.Books.id.in_(books_list)).filter(common_filters()).all()
for book in books_in_shelf:
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),
shelf=shelf, page="shelf")
else:
@ -315,11 +323,13 @@ def order_shelf(shelf_id):
ub.Shelf.id == shelf_id))).first()
result = list()
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()
books_list = [ b.book_id for b in books_in_shelf]
# cover, title, series, name, all author names,
result = db.session.query(db.Books).filter(db.Books.id.in_(books_list)).filter(common_filters()).all()
for book in books_in_shelf2:
cur_book = db.session.query(db.Books).filter(db.Books.id == book.book_id).filter(common_filters()).first()
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,
title=_(u"Change order of Shelf: '%(name)s'", name=shelf.name),
shelf=shelf, page="shelforder")

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

File diff suppressed because one or more lines are too long

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

@ -29,7 +29,7 @@
{% endfor %}
</div>
<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>
{% endblock %}

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: Lukas Heroudek <lukas.heroudek@gmail.com>\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
#, python-format
msgid "User '%(user)s' created"
msgstr "Uživatel %(user)s vytvořen"
msgstr "Uživatel '%(user)s' vytvořen"
#: cps/admin.py:509
msgid "Edit e-mail server settings"
@ -205,7 +205,7 @@ msgstr "není nakonfigurováno"
#: cps/editbooks.py:214 cps/editbooks.py:396
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
msgid "edit metadata"
@ -214,11 +214,11 @@ msgstr "upravit metadata"
#: cps/editbooks.py:321 cps/editbooks.py:569
#, python-format
msgid "File extension '%(ext)s' is not allowed to be uploaded to this server"
msgstr "Soubor s příponou %(ext)s nelze odeslat na tento server"
msgstr "Soubor s příponou '%(ext)s' nelze odeslat na tento server"
#: cps/editbooks.py:325 cps/editbooks.py:573
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
#, python-format
@ -366,17 +366,17 @@ msgstr "Požadovaný soubor nelze přečíst. Možná nesprávná oprávnění?"
#: cps/helper.py:322
#, python-format
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
#, python-format
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
#, python-format
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
#, 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
#, python-format
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
#, python-format
@ -555,7 +555,7 @@ msgstr "Upravit polici"
#: cps/shelf.py:289
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Police: %(name)s"
msgstr "Police: '%(name)s'"
#: cps/shelf.py:292
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
#, python-format
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
msgid "Recently Added"
@ -858,7 +858,7 @@ msgstr "Nelze aktivovat ověření LDAP"
#: cps/web.py:1151 cps/web.py:1278
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "nyní jste přihlášeni jako: %(nickname)s"
msgstr "nyní jste přihlášeni jako: '%(nickname)s'"
#: cps/web.py:1156
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
msgid "Convert from:"
msgstr "Převest z:"
msgstr "Převést z:"
#: cps/templates/book_edit.html:32 cps/templates/book_edit.html:39
msgid "select an option"
@ -1165,7 +1165,7 @@ msgstr "Převést do:"
#: cps/templates/book_edit.html:46
msgid "Convert book"
msgstr "Převest knihu"
msgstr "Převést knihu"
#: cps/templates/book_edit.html:55 cps/templates/search_form.html:6
msgid "Book Title"
@ -1341,7 +1341,7 @@ msgstr "Server port"
#: cps/templates/config_edit.html:91
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
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
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
msgid "Use Goodreads"
@ -1495,12 +1495,12 @@ msgstr "Obtain %(provider)s OAuth Credential"
#: cps/templates/config_edit.html:263
#, python-format
msgid "%(provider)s OAuth Client Id"
msgstr "%(provider)s OAuth Client Id"
msgstr "%(provider)s OAuth Klient Id"
#: cps/templates/config_edit.html:267
#, python-format
msgid "%(provider)s OAuth Client Secret"
msgstr "%(provider)s OAuth Client Secret"
msgstr "%(provider)s OAuth Klient Tajemství"
#: cps/templates/config_edit.html:276
msgid "Allow Reverse Proxy Authentication"
@ -1532,7 +1532,7 @@ msgstr "Nastavení převaděče eknih"
#: cps/templates/config_edit.html:312
msgid "Path to convertertool"
msgstr "Cesta k převáděči"
msgstr "Cesta k převaděči"
#: cps/templates/config_edit.html:318
msgid "Location of Unrar binary"
@ -1625,7 +1625,7 @@ msgstr "Povolit úpravy veřejných polic"
#: cps/templates/config_view_edit.html:119
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
msgid "Show random books in detail view"
@ -2337,7 +2337,7 @@ msgstr "Nedávná stahování"
#~ msgstr "Prohlížeč PDF.js"
#~ msgid "Preparing document for printing..."
#~ msgstr "Příprava dokumentu pro tisk"
#~ msgstr "Příprava dokumentu pro tisk..."
#~ msgid "Using your another device, visit"
#~ msgstr "Pomocí jiného zařízení navštivte"
@ -3315,7 +3315,7 @@ msgstr "Nedávná stahování"
#~ msgstr "Selkup"
#~ msgid "Irish; Old (to 900)"
#~ msgstr "Irlandese antico (fino al 900)"
#~ msgstr "Irlandese antico (fino al 900)"
#~ msgid "Shan"
#~ msgstr "Shan"

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: Ozzie Isaacs\n"
"Language: de\n"

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: minakmostoles <xxx@xxx.com>\n"
"Language: es\n"

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: Samuli Valavuo <svalavuo@gmail.com>\n"
"Language: fi\n"

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\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"
"Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n"
"Language: fr\n"

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\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"
"Last-Translator: \n"
"Language: hu\n"

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: ElQuimm <quimm@webtaste.com>\n"
"Language: it\n"
@ -165,7 +165,7 @@ msgstr "Decomprimo il pacchetto di aggiornamento"
#: cps/admin.py:717
msgid "Replacing files"
msgstr "Sostituzione files"
msgstr "Sostituisco i file"
#: cps/admin.py:718
msgid "Database connections are closed"
@ -177,7 +177,7 @@ msgstr "Arresta il server"
#: cps/admin.py:720
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
msgid "Update failed:"
@ -268,7 +268,7 @@ msgstr "Probabilmnete il libro caricato esiste già nella libreria; considera di
#: cps/editbooks.py:613
#, python-format
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
#, python-format
@ -305,7 +305,7 @@ msgstr "Callback domain non è stato verificato. Per favore intraprendi il neces
#: cps/helper.py:80
#, python-format
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
#, python-format
@ -341,7 +341,7 @@ msgstr "Inizia con Calibre-Web"
#: cps/helper.py:135
#, python-format
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:163 cps/helper.py:165
@ -386,15 +386,15 @@ msgstr "File %(file)s non trovato su Google Drive"
#: cps/helper.py:411
#, python-format
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
msgid "Waiting"
msgstr "Attendere"
msgstr "Attendi"
#: cps/helper.py:645
msgid "Failed"
msgstr "Fallito"
msgstr "Non riuscito"
#: cps/helper.py:647
msgid "Started"
@ -431,19 +431,19 @@ msgstr "Registra con %(provider)s"
#: cps/oauth_bb.py:155
msgid "Failed to log in with GitHub."
msgstr "Fallito l'accesso con GitHub."
msgstr "Accesso con GitHub non riuscito."
#: cps/oauth_bb.py:160
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
msgid "Failed to log in with Google."
msgstr "Fallito l'accesso con Google."
msgstr "Accesso con Google non riuscito."
#: cps/oauth_bb.py:176
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
#, python-format
@ -453,7 +453,7 @@ msgstr "Scollegato da %(oauth)s con successo."
#: cps/oauth_bb.py:278
#, python-format
msgid "Unlink to %(oauth)s failed."
msgstr "Scollegamento da %(oauth)s fallito.\""
msgstr "Scollegamento da %(oauth)s fallito."
#: cps/oauth_bb.py:281
#, python-format
@ -462,11 +462,11 @@ msgstr "Non collegato a %(oauth)s."
#: cps/oauth_bb.py:309
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
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
msgid "Invalid shelf specified"
@ -572,7 +572,7 @@ msgstr "Aggiunto recentemente"
#: cps/ub.py:59
msgid "Show recent books"
msgstr "Mostra i libri recenti"
msgstr "Mostra i libri più recenti"
#: cps/templates/index.xml:17 cps/ub.py:60
msgid "Hot Books"
@ -614,7 +614,7 @@ msgstr "Per scoprire"
#: cps/ub.py:76
msgid "Show random books"
msgstr "Mostra libro a caso"
msgstr "Mostra libri a caso"
#: cps/templates/index.xml:75 cps/ub.py:77
msgid "Categories"
@ -667,11 +667,11 @@ msgstr "Mostra la selezione della valutazione"
#: cps/templates/index.xml:96 cps/ub.py:97
msgid "File formats"
msgstr "Formati dei file"
msgstr "Formato file"
#: cps/ub.py:99
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
msgid "Unexpected data while reading update information"
@ -708,11 +708,11 @@ msgstr "Libri aggiunti di recente"
#: cps/web.py:514
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
msgid "Random Books"
msgstr "Libri a caso"
msgstr "Libri casuali"
#: cps/web.py:548
msgid "Books"
@ -763,19 +763,19 @@ msgstr "Lingua: %(name)s"
#: cps/web.py:705
msgid "Publisher list"
msgstr "Lista degli editori"
msgstr "Elenco degli editori"
#: cps/web.py:721
msgid "Series list"
msgstr "Lista delle serie"
msgstr "Elenco delle serie"
#: cps/web.py:735
msgid "Ratings list"
msgstr "Lista delle valutazioni"
msgstr "Elenco delle valutazioni"
#: cps/web.py:748
msgid "File formats list"
msgstr "Lista dei formati di file"
msgstr "Elenco dei formati"
#: cps/web.py:776
msgid "Available languages"
@ -783,7 +783,7 @@ msgstr "Lingue disponibili"
#: cps/web.py:793
msgid "Category list"
msgstr "Elenco categorie"
msgstr "Elenco delle categorie"
#: cps/templates/layout.html:73 cps/web.py:807
msgid "Tasks"
@ -895,7 +895,7 @@ msgstr "Il token è scaduto"
#: cps/web.py:1240
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
#, python-format
@ -1045,7 +1045,7 @@ msgstr "Amministrazione"
#: cps/templates/admin.html:122
msgid "View Logfiles"
msgstr "Visualizza LogFiles"
msgstr "Visualizza LogFile"
#: cps/templates/admin.html:123
msgid "Reconnect to Calibre DB"
@ -1217,7 +1217,7 @@ msgstr "Lingua"
#: cps/templates/book_edit.html:113 cps/templates/search_form.html:137
msgid "Yes"
msgstr "Si"
msgstr "Sì"
#: cps/templates/book_edit.html:114 cps/templates/search_form.html:138
msgid "No"
@ -1377,7 +1377,7 @@ msgstr "Livello di Log"
#: cps/templates/config_edit.html:131
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
msgid "Enable Access Log"
@ -1385,11 +1385,11 @@ msgstr "Abilita l'Access Log"
#: cps/templates/config_edit.html:139
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
msgid "Feature Configuration"
msgstr "Configurazione della caratteristica"
msgstr "Ulteriori opzioni"
#: cps/templates/config_edit.html:158
msgid "Enable uploading"
@ -1528,7 +1528,7 @@ msgstr "Utilizza il convertitore di Calibre"
#: cps/templates/config_edit.html:308
msgid "E-Book converter settings"
msgstr "Configurazione del convertitore di e-book"
msgstr "Configurazione del convertitore di libri"
#: cps/templates/config_edit.html:312
msgid "Path to convertertool"
@ -1585,7 +1585,7 @@ msgstr "Espressione regolare per ordinare la visualizzazione del titolo"
#: cps/templates/config_view_edit.html:59
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
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
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
msgid "Show mature content"
@ -1705,7 +1705,7 @@ msgstr "password SMTP"
#: cps/templates/email_edit.html:35
msgid "From e-mail"
msgstr "Dall'email"
msgstr "E-mail mittente"
#: cps/templates/email_edit.html:38
msgid "Save settings"
@ -1717,7 +1717,7 @@ msgstr "Salva le impostazioni e invia e-mail di test"
#: cps/templates/email_edit.html:43
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
msgid "Add Domain"
@ -1749,7 +1749,7 @@ msgstr "Crea-segnala un problema"
#: cps/templates/http_error.html:44
msgid "Back to home"
msgstr "Ritorno alla pagina principale"
msgstr "Ritorna alla pagina principale"
#: cps/templates/index.html:5
msgid "Discover (Random Books)"
@ -1781,7 +1781,7 @@ msgstr "Gli ultimi libri"
#: cps/templates/index.xml:42
msgid "Show Random Books"
msgstr "Mostra libri casuali"
msgstr "Mostra libri casualmente"
#: cps/templates/index.xml:65
msgid "Books ordered by Author"
@ -1854,7 +1854,7 @@ msgstr "Registra"
#: cps/templates/layout.html:116 cps/templates/layout.html:223
msgid "Uploading..."
msgstr "Carica"
msgstr "Carico..."
#: cps/templates/layout.html:117
msgid "please don't refresh the page"
@ -1912,11 +1912,11 @@ msgstr "Accedi con magic link"
#: cps/templates/logviewer.html:6
msgid "Show Calibre-Web log: "
msgstr ""
msgstr "Mostra il log di Calibre-Web: "
#: cps/templates/logviewer.html:8
msgid "Calibre-Web log: "
msgstr "Mostra il log Calibre-Web"
msgstr "Calibre-Web\" log: "
#: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed"
@ -1924,7 +1924,7 @@ msgstr "Flusso attivo, non può essere visualizzato"
#: cps/templates/logviewer.html:12
msgid "Show access log: "
msgstr "Mostra il log di accesso"
msgstr "Mostra il log di accesso: "
#: cps/templates/osd.xml:5
msgid "Calibre-Web ebook catalog"
@ -2072,7 +2072,7 @@ msgstr "Nessun risultato per:"
#: cps/templates/search.html:6
msgid "Please try a different search"
msgstr "Prova una ricerca diversa"
msgstr "Prova una ricerca differente"
#: cps/templates/search.html:8
msgid "Results for:"
@ -2116,7 +2116,7 @@ msgstr "Valutazione inferiore a"
#: cps/templates/shelf.html:10
msgid "Delete this Shelf"
msgstr "Cancellare questo scaffale"
msgstr "Cancella questo scaffale"
#: cps/templates/shelf.html:11
msgid "Edit Shelf"
@ -2144,7 +2144,7 @@ msgstr "Riordina tramite drag and drop"
#: cps/templates/stats.html:7
msgid "Calibre library statistics"
msgstr "Statistiche libreria Calibre"
msgstr "Statistiche della libreria di Calibre"
#: cps/templates/stats.html:12
msgid "Books in this Library"
@ -2220,11 +2220,11 @@ msgstr "E-mail di Kindle"
#: cps/templates/user_edit.html:41
msgid "Show books with language"
msgstr "Mostra libri per lingua"
msgstr "Mostra libri in "
#: cps/templates/user_edit.html:43
msgid "Show all"
msgstr "Mostra tutto"
msgstr "Mostra libri in tutte le lingue presenti"
#: cps/templates/user_edit.html:53
msgid "OAuth Settings"
@ -3513,7 +3513,7 @@ msgstr "Download recenti"
#~ msgstr "La copertina non è un file in formato jpg: non posso salvare"
#~ msgid "Preparing document for printing..."
#~ msgstr "Preparo documento per la stampa..."
#~ msgstr "Preparo il documento per la stampa..."
#~ msgid "Using your another device, visit"
#~ msgstr "Utilizza il tuo altro dispositivo, visita"
@ -3522,10 +3522,10 @@ msgstr "Download recenti"
#~ msgstr "e accedi"
#~ 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"
#~ msgstr "I libri più nuovi"
#~ msgstr "I libri più recenti"
#~ msgid "Oldest Books"
#~ msgstr "I libri più vecchi"

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: white <space_white@yahoo.com>\n"
"Language: ja\n"

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: \n"
"Language: km_KH\n"

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web (GPLV3)\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"
"Last-Translator: Marcel Maas <marcel.maas@outlook.com>\n"
"Language: nl\n"

@ -8,9 +8,9 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre Web - polski (POT: 2019-08-06 18:35)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n"
"Last-Translator: Jerzy Piątek <jerzy.piatek@gmail.com>\n"
"Language: pl\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"
@ -48,7 +48,7 @@ msgstr "Nieznany"
#: cps/admin.py:129
msgid "Admin page"
msgstr " Panel administratora"
msgstr "Panel administratora"
#: cps/admin.py:148 cps/templates/admin.html:115
msgid "UI Configuration"
@ -100,7 +100,7 @@ msgstr "Wystąpił błąd podczas wysyłania e-maila testowego: %(res)s"
#: cps/admin.py:540
msgid "Please configure your e-mail address first..."
msgstr ""
msgstr "Najpierw skonfiguruj swój adres e-mail..."
#: cps/admin.py:542
msgid "E-mail server settings updated"
@ -126,7 +126,7 @@ msgstr "Edytuj użytkownika %(nick)s"
#: cps/admin.py:622 cps/web.py:1324
msgid "This username is already taken"
msgstr ""
msgstr "Nazwa użytkownika jest już zajęta"
#: cps/admin.py:637
#, python-format
@ -194,7 +194,7 @@ msgstr ""
#: cps/admin.py:722 cps/updater.py:274 cps/updater.py:461
msgid "Connection error"
msgstr ""
msgstr "Błąd połączenia"
#: cps/admin.py:723 cps/updater.py:276 cps/updater.py:463
msgid "Timeout while establishing connection"
@ -206,7 +206,7 @@ msgstr ""
#: cps/converter.py:31
msgid "not configured"
msgstr ""
msgstr "nie skonfigurowane"
#: cps/editbooks.py:214 cps/editbooks.py:396
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
#, python-format
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
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
#, python-format
@ -479,7 +479,7 @@ msgstr ""
#: cps/shelf.py:47 cps/shelf.py:99
msgid "Invalid shelf specified"
msgstr ""
msgstr "Podano niewłaściwą półkę"
#: cps/shelf.py:54
#, python-format
@ -488,12 +488,12 @@ msgstr ""
#: cps/shelf.py:62
msgid "You are not allowed to edit public shelves"
msgstr ""
msgstr "Nie masz uprawnień do edytowania publicznej półki"
#: cps/shelf.py:71
#, python-format
msgid "Book is already part of the shelf: %(shelfname)s"
msgstr ""
msgstr "Książka jest już dodana do półki"
#: cps/shelf.py:85
#, python-format
@ -503,26 +503,26 @@ msgstr "Książka została dodana do półki: %(sname)s"
#: cps/shelf.py:104
#, python-format
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
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
#, python-format
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
#, python-format
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
#, python-format
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
#, python-format
@ -532,7 +532,7 @@ msgstr "Książka została usunięta z półki: %(sname)s"
#: cps/shelf.py:186
#, python-format
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
#, python-format
@ -568,7 +568,7 @@ msgstr "Półka: '%(name)s'"
#: cps/shelf.py:292
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
#, python-format
@ -615,7 +615,7 @@ msgstr "Nieprzeczytane książki"
#: cps/ub.py:73
msgid "Show unread"
msgstr ""
msgstr "Pokaż nieprzeczytane"
#: cps/ub.py:74
msgid "Discover"
@ -688,28 +688,28 @@ msgstr ""
#: cps/updater.py:259 cps/updater.py:365
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
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
msgid "Could not fetch update information"
msgstr ""
msgstr "Nie można pobrać informacji o aktualizacji"
#: cps/updater.py:352
msgid "No release information available"
msgstr ""
msgstr "Brak dostępnych informacji o wersji"
#: cps/updater.py:405 cps/updater.py:414
#, python-format
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
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
msgid "Recently Added Books"
@ -796,7 +796,7 @@ msgstr "Lista kategorii"
#: cps/templates/layout.html:73 cps/web.py:807
msgid "Tasks"
msgstr " Zadania"
msgstr "Zadania"
#: cps/templates/feed.xml:33 cps/templates/layout.html:44
#: 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
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:1125 cps/web.py:1129
@ -879,11 +879,11 @@ msgstr "Błędna nazwa użytkownika lub hasło"
#: cps/web.py:1167
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
msgid "Please enter valid username to reset password"
msgstr ""
msgstr "Wprowadź prawidłową nazwę użytkownika, aby zresetować hasło"
#: cps/web.py:1179
#, python-format
@ -957,7 +957,7 @@ msgstr "DLS"
# ???
#: cps/templates/admin.html:16 cps/templates/layout.html:76
msgid "Admin"
msgstr " Panel administratora"
msgstr "Panel administratora"
# ???
#: 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
msgid "Remote login"
msgstr ""
msgstr "Zdalne logowanie"
#: cps/templates/admin.html:104
msgid "Reverse proxy login"
@ -1048,7 +1048,7 @@ msgstr ""
#: cps/templates/admin.html:109
msgid "Reverse proxy header name"
msgstr ""
msgstr "Nazwa nagłówka reverse proxy"
#: cps/templates/admin.html:121
msgid "Administration"
@ -1127,7 +1127,7 @@ msgstr ""
#: cps/templates/author.html:23
msgid "In Library"
msgstr ""
msgstr "W Bibliotece"
# ???
#: cps/templates/author.html:34 cps/templates/list.html:14
@ -1144,7 +1144,7 @@ msgstr ""
#: cps/templates/author.html:94
msgid "More by"
msgstr ""
msgstr "Więcej według"
#: cps/templates/book_edit.html:12
msgid "Delete Book"
@ -1213,7 +1213,7 @@ msgstr ""
#: cps/templates/book_edit.html:87
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
msgid "Publishing date"
@ -1320,15 +1320,15 @@ msgstr "Użyć dysku Google?"
#: cps/templates/config_edit.html:31
msgid "Google Drive config problem"
msgstr ""
msgstr "Problem z konfiguracją Dysku Google"
#: cps/templates/config_edit.html:37
msgid "Authenticate Google Drive"
msgstr ""
msgstr "Uwierzytelnij Dysk Google"
#: cps/templates/config_edit.html:41
msgid "Please hit submit to continue with setup"
msgstr ""
msgstr "Kliknij przycisk, aby kontynuować instalację"
#: cps/templates/config_edit.html:44
msgid "Please finish Google Drive setup after login"
@ -1369,11 +1369,11 @@ msgstr "Kanał aktualizacji"
#: cps/templates/config_edit.html:101
msgid "Stable"
msgstr ""
msgstr "Stabilna"
#: cps/templates/config_edit.html:102
msgid "Stable (Automatic)"
msgstr ""
msgstr "Stablina (Automatycznie)"
#: cps/templates/config_edit.html:103
msgid "Nightly"
@ -1425,15 +1425,15 @@ msgstr "Włącz zdalne logowanie (\"magic link\")"
#: cps/templates/config_edit.html:175
msgid "Use Goodreads"
msgstr ""
msgstr "Użyj Goodreads"
#: cps/templates/config_edit.html:176
msgid "Obtain an API Key"
msgstr ""
msgstr "Uzyskaj klucz API"
#: cps/templates/config_edit.html:180
msgid "Goodreads API Key"
msgstr ""
msgstr "Klucz API Goodreads "
#: cps/templates/config_edit.html:184
msgid "Goodreads API Secret"
@ -1441,55 +1441,55 @@ msgstr ""
#: cps/templates/config_edit.html:191
msgid "Login type"
msgstr ""
msgstr "Rodzaj logowania"
#: cps/templates/config_edit.html:193
msgid "Use standard Authentication"
msgstr ""
msgstr "Użyj standardowego uwierzytelnienia"
#: cps/templates/config_edit.html:195
msgid "Use LDAP Authentication"
msgstr ""
msgstr "Użyj uwierzytelniania LDAP"
#: cps/templates/config_edit.html:198
msgid "Use OAuth"
msgstr ""
msgstr "Uzyj OAuth"
#: cps/templates/config_edit.html:205
msgid "LDAP Server Host Name or IP Address"
msgstr ""
msgstr "Nazwa hosta lub adres IP serwera LDAP"
#: cps/templates/config_edit.html:209
msgid "LDAP Server Port"
msgstr ""
msgstr "Port serwera LDAP"
#: cps/templates/config_edit.html:213
msgid "LDAP schema (ldap or ldaps)"
msgstr ""
msgstr "Schemat LDAP (ldap lub ldaps)"
#: cps/templates/config_edit.html:217
msgid "LDAP Admin username"
msgstr ""
msgstr "Nazwa administratora LDAP"
#: cps/templates/config_edit.html:221
msgid "LDAP Admin password"
msgstr ""
msgstr "Hasło administratora LDAP"
#: cps/templates/config_edit.html:226
msgid "LDAP Server use SSL"
msgstr ""
msgstr "Serwer LDAP korzysta z protokołu SSL"
#: cps/templates/config_edit.html:230
msgid "LDAP Server use TLS"
msgstr ""
msgstr "Serwer LDAP korzysta z TLS"
#: cps/templates/config_edit.html:234
msgid "LDAP Server Certificate"
msgstr ""
msgstr "Certyfikat serwera LDAP"
#: cps/templates/config_edit.html:238
msgid "LDAP SSL Certificate Path"
msgstr ""
msgstr "Ścieżka certyfikatu SSL LDAP"
#: cps/templates/config_edit.html:243
msgid "LDAP Distinguished Name (DN)"
@ -1501,7 +1501,7 @@ msgstr ""
#: cps/templates/config_edit.html:252
msgid "LDAP Server is OpenLDAP?"
msgstr ""
msgstr "Serwer LDAP to OpenLDAP?"
#: cps/templates/config_edit.html:260
#, python-format
@ -1524,7 +1524,7 @@ msgstr ""
#: cps/templates/config_edit.html:280
msgid "Reverse Proxy Header Name"
msgstr ""
msgstr "Nazwa nagłowka reverse proxy"
#: cps/templates/config_edit.html:292
msgid "External binaries"
@ -1552,7 +1552,7 @@ msgstr "Lokalizacja do pliku konwertera"
#: cps/templates/config_edit.html:318
msgid "Location of Unrar binary"
msgstr ""
msgstr "Lokalizacja pliku binarnego Unrar"
#: cps/templates/config_edit.html:334 cps/templates/layout.html:84
#: 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
msgid "Title"
msgstr "Nazwa serwera"
msgstr "Nazwa"
#: cps/templates/config_view_edit.html:27
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
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
msgid "Theme"
@ -1657,7 +1657,7 @@ msgstr "Czytaj w przeglądarce"
#: cps/templates/detail.html:72
msgid "Listen in browser"
msgstr ""
msgstr "Słuchaj w przeglądarce"
#: cps/templates/detail.html:117
msgid "Book"
@ -1733,27 +1733,27 @@ msgstr "Zapisz ustawienia i wyślij testową wiadomość e-mail"
#: cps/templates/email_edit.html:43
msgid "Allowed domains for registering"
msgstr ""
msgstr "Domeny dozwolone do rejestracji"
#: cps/templates/email_edit.html:46 cps/templates/email_edit.html:72
msgid "Add Domain"
msgstr ""
msgstr "Dodaj domenę"
#: cps/templates/email_edit.html:49 cps/templates/email_edit.html:75
msgid "Add"
msgstr ""
msgstr "Dodaj"
#: cps/templates/email_edit.html:54 cps/templates/email_edit.html:64
msgid "Enter domainname"
msgstr ""
msgstr "Podaj nazwę domeny"
#: cps/templates/email_edit.html:60
msgid "Denied domains for registering"
msgstr ""
msgstr "Nie można zarejestrowac domen"
#: cps/templates/email_edit.html:90
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
msgid "Next"
@ -1792,7 +1792,7 @@ msgstr "Popularne publikacje z tego katalogu bazujące na ocenach."
#: cps/templates/index.xml:31
msgid "Recently added Books"
msgstr ""
msgstr "Ostatnio dodane książki"
#: cps/templates/index.xml:35
msgid "The latest Books"
@ -1820,11 +1820,11 @@ msgstr "Książki sortowane według serii"
#: cps/templates/index.xml:93
msgid "Books ordered by Languages"
msgstr ""
msgstr "Ksiązki posortowane według języka"
#: cps/templates/index.xml:100
msgid "Books ordered by file formats"
msgstr ""
msgstr "Ksiązki posortowane według formatu"
#: cps/templates/index.xml:103 cps/templates/layout.html:137
msgid "Public Shelves"
@ -1925,7 +1925,7 @@ msgstr "Zapamiętaj mnie"
#: cps/templates/login.html:22
msgid "Forgot password"
msgstr ""
msgstr "Zapomniałem hasła"
#: cps/templates/login.html:25
msgid "Log in with magic link"
@ -1933,19 +1933,19 @@ msgstr "Zaloguj się za pomocą \"magic link\""
#: cps/templates/logviewer.html:6
msgid "Show Calibre-Web log: "
msgstr ""
msgstr "Pokaż log Calibre-Web"
#: cps/templates/logviewer.html:8
msgid "Calibre-Web log: "
msgstr ""
msgstr "Log Calibre-Web"
#: cps/templates/logviewer.html:8
msgid "Stream output, can't be displayed"
msgstr ""
msgstr "Nie można wyświetlić wyjścia"
#: cps/templates/logviewer.html:12
msgid "Show access log: "
msgstr ""
msgstr "Pokaż log dostępu"
#: cps/templates/osd.xml:5
msgid "Calibre-Web ebook catalog"
@ -1958,27 +1958,27 @@ msgstr "Tekst pływający, gdy paski boczne są otwarte."
#: cps/templates/readcbr.html:88
msgid "Keyboard Shortcuts"
msgstr ""
msgstr "Skróty klawiaturowe"
#: cps/templates/readcbr.html:91
msgid "Previous Page"
msgstr ""
msgstr "Poprzednia strona"
#: cps/templates/readcbr.html:92
msgid "Next Page"
msgstr ""
msgstr "Następna strona"
#: cps/templates/readcbr.html:93
msgid "Scale to Best"
msgstr ""
msgstr "Skaluj do najlepszego"
#: cps/templates/readcbr.html:94
msgid "Scale to Width"
msgstr ""
msgstr "Skaluj do szerokości"
#: cps/templates/readcbr.html:95
msgid "Scale to Height"
msgstr ""
msgstr "Skaluj do wysokości"
#: cps/templates/readcbr.html:96
msgid "Scale to Native"
@ -1986,11 +1986,11 @@ msgstr ""
#: cps/templates/readcbr.html:97
msgid "Rotate Right"
msgstr ""
msgstr "Obróć w prawo"
#: cps/templates/readcbr.html:98
msgid "Rotate Left"
msgstr ""
msgstr "Obróć w lewo"
#: cps/templates/readcbr.html:99
msgid "Flip Image"
@ -1998,27 +1998,27 @@ msgstr ""
#: cps/templates/readcbr.html:115
msgid "Light"
msgstr ""
msgstr "Jasny"
#: cps/templates/readcbr.html:116
msgid "Dark"
msgstr ""
msgstr "Ciemny"
#: cps/templates/readcbr.html:121
msgid "Scale"
msgstr ""
msgstr "Skaluj"
#: cps/templates/readcbr.html:124
msgid "Best"
msgstr ""
msgstr "Najlepszy"
#: cps/templates/readcbr.html:125
msgid "Width"
msgstr ""
msgstr "Szerokość"
#: cps/templates/readcbr.html:126
msgid "Height"
msgstr ""
msgstr "Wysokość"
#: cps/templates/readcbr.html:127
msgid "Native"
@ -2026,7 +2026,7 @@ msgstr ""
#: cps/templates/readcbr.html:132
msgid "Rotate"
msgstr ""
msgstr "Obrót"
#: cps/templates/readcbr.html:143
msgid "Flip"
@ -2042,7 +2042,7 @@ msgstr "Pionowo"
#: cps/templates/readcbr.html:152
msgid "Direction"
msgstr ""
msgstr "Kierunek"
#: cps/templates/readcbr.html:155
msgid "Left to Right"
@ -2050,11 +2050,11 @@ msgstr "od lewej do prawej"
#: cps/templates/readcbr.html:156
msgid "Right to Left"
msgstr "od prawej do lewej"
msgstr "Od prawej do lewej"
#: cps/templates/readpdf.html:29
msgid "PDF reader"
msgstr "czytnik PDF"
msgstr "Czytnik PDF"
#: cps/templates/readtxt.html:6
msgid "Basic txt Reader"
@ -2078,11 +2078,11 @@ msgstr "Twój adres e-mail"
#: cps/templates/remote_login.html:6
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
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
msgid "The link will expire after 10 minutes."
@ -2122,11 +2122,11 @@ msgstr "Wyklucz języki"
#: cps/templates/search_form.html:95
msgid "Extensions"
msgstr ""
msgstr "Rozszerzenia"
#: cps/templates/search_form.html:105
msgid "Exclude Extensions"
msgstr ""
msgstr "Wyklucz rozszerzenia"
#: cps/templates/search_form.html:117
msgid "Rating bigger than"

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: ZIZA\n"
"Language: ru\n"

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: Jonatan Nyberg <jonatan.nyberg.karl@gmail.com>\n"
"Language: sv\n"

@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: ABIS Team <biblio.if.abis@gmail.com>\n"
"Language: uk\n"

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-Web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n"
"POT-Creation-Date: 2020-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"
"Last-Translator: dalin <dalin.lin@gmail.com>\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')
basic_username = header_val.split(':')[0]
basic_password = header_val.split(':')[1]
except TypeError:
except (TypeError, UnicodeDecodeError):
pass
user = _fetch_user_by_name(basic_username)
if user and check_password_hash(str(user.password), basic_password):
@ -173,7 +173,7 @@ def remote_login_required(f):
def inner(*args, **kwargs):
if config.config_remote_login:
return f(*args, **kwargs)
if request.is_xhr:
if request.headers.get('X-Requested-With') == 'XMLHttpRequest':
data = {'status': 'error', 'message': 'Forbidden'}
response = make_response(json.dumps(data, ensure_ascii=False))
response.headers["Content-Type"] = "application/json; charset=utf-8"
@ -1469,7 +1469,7 @@ def show_book(book_id):
audioentries.append(media_format.format.lower())
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")
else:
log.debug(u"Error opening eBook. File does not exist or file is not accessible:")

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\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"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"

Loading…
Cancel
Save