Merge remote-tracking branch 'upstream/master'

pull/321/head
Ainsley Pereira 7 years ago
commit a75c393922

3
.gitignore vendored

@ -27,5 +27,4 @@ tags
settings.yaml
gdrive_credentials
#kindlegen
vendor/kindlegen
vendor

@ -0,0 +1,60 @@
# Inspired by https://github.com/ChrisTM/Flask-CacheBust
# Uses query strings so CSS font files are found without having to resort to absolute URLs
import hashlib
import os
def init_cache_busting(app):
"""
Configure `app` to so that `url_for` adds a unique query string to URLs generated
for the `'static'` endpoint.
This allows setting long cache expiration values on static resources
because whenever the resource changes, so does its URL.
"""
static_folder = os.path.join(app.static_folder, '') # path to the static file folder, with trailing slash
hash_table = {} # map of file hashes
app.logger.debug('Computing cache-busting values...')
# compute file hashes
for dirpath, dirnames, filenames in os.walk(static_folder):
for filename in filenames:
# compute version component
rooted_filename = os.path.join(dirpath, filename)
with open(rooted_filename, 'r') as f:
file_hash = hashlib.md5(f.read()).hexdigest()[:7]
# save version to tables
file_path = rooted_filename.replace(static_folder, "")
file_path = file_path.replace("\\", "/") # Convert Windows path to web path
hash_table[file_path] = file_hash
app.logger.debug('Finished computing cache-busting values')
def bust_filename(filename):
return hash_table.get(filename, "")
def unbust_filename(filename):
return filename.split("?", 1)[0]
@app.url_defaults
def reverse_to_cache_busted_url(endpoint, values):
"""
Make `url_for` produce busted filenames when using the 'static' endpoint.
"""
if endpoint == "static":
file_hash = bust_filename(values["filename"])
if file_hash:
values["q"] = file_hash
def debusting_static_view(filename):
"""
Serve a request for a static file having a busted name.
"""
return original_static_view(filename=unbust_filename(filename))
# Replace the default static file view with our debusting view.
original_static_view = app.view_functions["static"]
app.view_functions["static"] = debusting_static_view

@ -278,7 +278,7 @@ def get_valid_filename(value, replace_whitespace=True):
else:
value = unicode(re_slugify.sub('', value).strip())
if replace_whitespace:
#*+:\"/<>? werden durch _ ersetzt
#*+:\"/<>? are replaced by _
value = re.sub('[\*\+:\\\"/<>\?]+', u'_', value, flags=re.U)
value = value[:128]

@ -77,7 +77,8 @@ input.pill:not(:checked) + label .glyphicon {
}
.author-bio img {margin: 0 1em 1em 0;}
.author-link img {display: inline-block;max-width: 100px;}
.author-link {display: inline-block; margin-top: 10px; width: 100px;}
.author-link img {display: block; height: 100%;}
#remove-from-shelves .btn,
#shelf-action-errors {

@ -1 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="673.826" height="144" viewBox="0 0 673.826 144"><g fill="#5A481C"><path d="M66.66 86.444h-.315c-3.34 14.507-18.19 22.964-32.213 22.964C11.33 109.408 0 91.212 0 70.163c0-22.008 12.146-40.18 35.245-40.18 15.643 0 27.917 10.368 31.1 23.76h.315v-21.85h3.194v79.26C69.854 133.474 57.09 144 35.71 144c-16.576 0-30.78-7.49-31.257-25.843h3.205c.642 16.273 13.08 22.65 27.896 22.65 19.787 0 31.106-9.402 31.106-29.656V86.445zM35.245 33.176c-21.215 0-32.062 17.06-32.062 36.987 0 20.25 10.846 36.062 30.768 36.062 21.065 0 32.558-16.295 32.558-36.062.152-18.825-10.678-36.987-31.263-36.987zM115.787 29.982c23.926 0 36.825 20.58 36.825 42.897 0 22.482-12.898 42.894-36.987 42.894-23.915 0-36.853-20.41-36.853-42.895 0-22.318 12.938-42.898 37.015-42.898zm0 82.598c21.828 0 33.642-18.972 33.642-39.7 0-20.418-11.815-39.704-33.643-39.704-22.176 0-33.81 19.287-33.81 39.703 0 20.728 11.634 39.7 33.81 39.7zM194.57 29.982c23.908 0 36.824 20.58 36.824 42.897 0 22.482-12.916 42.894-36.987 42.894-23.925 0-36.84-20.41-36.84-42.895-.002-22.318 12.914-42.898 37.003-42.898zm0 82.598c21.856 0 33.643-18.972 33.643-39.7 0-20.418-11.786-39.704-33.643-39.704-22.17 0-33.822 19.287-33.822 39.703 0 20.728 11.65 39.7 33.822 39.7zM304.436 0h3.194v113.86h-3.194V90.91h-.326c-4.14 14.337-16.082 24.863-32.837 24.863-21.7 0-34.942-18.027-34.942-42.73 0-22.97 12.3-43.06 34.943-43.06 17.386 0 29.02 10.053 32.837 24.87h.326V0zm-33.163 33.176c-22.493 0-31.736 20.883-31.736 39.866 0 21.04 10.526 39.538 31.736 39.538 21.052 0 33.163-18.32 33.163-39.538 0-25.36-13.236-39.866-33.163-39.866zM323.093 31.58h9.25v19.286h.327c5.103-13.248 16.253-21.052 31.098-20.4v10.042c-18.196-.967-30.62 12.427-30.62 29.492v43.86h-10.054V31.58zM372.38 75.426c.147 14.684 7.806 32.363 27.092 32.363 14.688 0 22.65-8.604 25.832-21.03h10.064c-4.308 18.656-15.16 29.486-35.896 29.486-26.124 0-37.146-20.097-37.146-43.52 0-21.693 11.02-43.543 37.146-43.543 26.483 0 37.032 23.132 36.21 46.243h-63.3zm53.25-8.446c-.462-15.148-9.886-29.363-26.158-29.363-16.42 0-25.495 14.372-27.09 29.363h53.248zM444.297 56.775c.945-19.293 14.508-27.592 33.333-27.592 14.54 0 30.342 4.47 30.342 26.46v43.71c0 3.836 1.923 6.063 5.915 6.063 1.113 0 2.36-.326 3.183-.64v8.445c-2.238.484-3.835.642-6.557.642-10.2 0-11.82-5.735-11.82-14.36h-.28c-7.04 10.683-14.226 16.745-30.05 16.745-15.124 0-27.573-7.467-27.573-24.078 0-23.12 22.48-23.913 44.185-26.46 8.31-.978 12.933-2.09 12.933-11.172 0-13.557-9.728-16.92-21.56-16.92-12.436 0-21.67 5.76-22.03 19.16H444.3zm53.61 12.106h-.314c-1.27 2.397-5.758 3.207-8.457 3.68-17.082 3.024-38.292 2.867-38.292 18.968 0 10.054 8.93 16.262 18.342 16.262 15.317 0 28.89-9.716 28.722-25.82V68.88zM596.488 113.86h-9.232V98.24h-.326c-4.308 10.685-17.386 18.006-29.34 18.006-25.068 0-37.01-20.23-37.01-43.52 0-23.29 11.94-43.543 37.01-43.543 12.27 0 24.223 6.22 28.52 18.016h.348V0h10.03v113.86zm-38.9-6.07c21.356 0 28.868-18.017 28.868-35.063 0-17.083-7.512-35.11-28.868-35.11-19.14 0-26.956 18.027-26.956 35.11 0 17.046 7.817 35.062 26.956 35.062zM660.926 55.645c-.494-12.438-10.043-18.027-21.535-18.027-8.94 0-19.443 3.52-19.443 14.215 0 8.918 10.188 12.112 17.06 13.877l13.395 3.014c11.47 1.76 23.425 8.457 23.425 22.804 0 17.88-17.667 24.72-33.007 24.72-19.14 0-32.208-8.93-33.805-29.016h10.03c.82 13.54 10.864 20.558 24.27 20.558 9.38 0 22.47-4.14 22.47-15.62 0-9.56-8.92-12.745-18.005-14.99l-12.933-2.855c-13.068-3.51-22.976-7.984-22.976-22.008 0-16.745 16.43-23.132 30.95-23.132 16.418 0 29.52 8.625 30.14 26.46h-10.034z"/></g></svg>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 673.826 144"><g fill="#5A481C"><path d="M66.66 86.444h-.315c-3.34 14.507-18.19 22.964-32.213 22.964C11.33 109.408 0 91.212 0 70.163c0-22.008 12.146-40.18 35.245-40.18 15.643 0 27.917 10.368 31.1 23.76h.315v-21.85h3.194v79.26C69.854 133.474 57.09 144 35.71 144c-16.576 0-30.78-7.49-31.257-25.843h3.205c.642 16.273 13.08 22.65 27.896 22.65 19.787 0 31.106-9.402 31.106-29.656V86.445zM35.245 33.176c-21.215 0-32.062 17.06-32.062 36.987 0 20.25 10.846 36.062 30.768 36.062 21.065 0 32.558-16.295 32.558-36.062.152-18.825-10.678-36.987-31.263-36.987zM115.787 29.982c23.926 0 36.825 20.58 36.825 42.897 0 22.482-12.898 42.894-36.987 42.894-23.915 0-36.853-20.41-36.853-42.895 0-22.318 12.938-42.898 37.015-42.898zm0 82.598c21.828 0 33.642-18.972 33.642-39.7 0-20.418-11.815-39.704-33.643-39.704-22.176 0-33.81 19.287-33.81 39.703 0 20.728 11.634 39.7 33.81 39.7zM194.57 29.982c23.908 0 36.824 20.58 36.824 42.897 0 22.482-12.916 42.894-36.987 42.894-23.925 0-36.84-20.41-36.84-42.895-.002-22.318 12.914-42.898 37.003-42.898zm0 82.598c21.856 0 33.643-18.972 33.643-39.7 0-20.418-11.786-39.704-33.643-39.704-22.17 0-33.822 19.287-33.822 39.703 0 20.728 11.65 39.7 33.822 39.7zM304.436 0h3.194v113.86h-3.194V90.91h-.326c-4.14 14.337-16.082 24.863-32.837 24.863-21.7 0-34.942-18.027-34.942-42.73 0-22.97 12.3-43.06 34.943-43.06 17.386 0 29.02 10.053 32.837 24.87h.326V0zm-33.163 33.176c-22.493 0-31.736 20.883-31.736 39.866 0 21.04 10.526 39.538 31.736 39.538 21.052 0 33.163-18.32 33.163-39.538 0-25.36-13.236-39.866-33.163-39.866zM323.093 31.58h9.25v19.286h.327c5.103-13.248 16.253-21.052 31.098-20.4v10.042c-18.196-.967-30.62 12.427-30.62 29.492v43.86h-10.054V31.58zM372.38 75.426c.147 14.684 7.806 32.363 27.092 32.363 14.688 0 22.65-8.604 25.832-21.03h10.064c-4.308 18.656-15.16 29.486-35.896 29.486-26.124 0-37.146-20.097-37.146-43.52 0-21.693 11.02-43.543 37.146-43.543 26.483 0 37.032 23.132 36.21 46.243h-63.3zm53.25-8.446c-.462-15.148-9.886-29.363-26.158-29.363-16.42 0-25.495 14.372-27.09 29.363h53.248zM444.297 56.775c.945-19.293 14.508-27.592 33.333-27.592 14.54 0 30.342 4.47 30.342 26.46v43.71c0 3.836 1.923 6.063 5.915 6.063 1.113 0 2.36-.326 3.183-.64v8.445c-2.238.484-3.835.642-6.557.642-10.2 0-11.82-5.735-11.82-14.36h-.28c-7.04 10.683-14.226 16.745-30.05 16.745-15.124 0-27.573-7.467-27.573-24.078 0-23.12 22.48-23.913 44.185-26.46 8.31-.978 12.933-2.09 12.933-11.172 0-13.557-9.728-16.92-21.56-16.92-12.436 0-21.67 5.76-22.03 19.16H444.3zm53.61 12.106h-.314c-1.27 2.397-5.758 3.207-8.457 3.68-17.082 3.024-38.292 2.867-38.292 18.968 0 10.054 8.93 16.262 18.342 16.262 15.317 0 28.89-9.716 28.722-25.82V68.88zM596.488 113.86h-9.232V98.24h-.326c-4.308 10.685-17.386 18.006-29.34 18.006-25.068 0-37.01-20.23-37.01-43.52 0-23.29 11.94-43.543 37.01-43.543 12.27 0 24.223 6.22 28.52 18.016h.348V0h10.03v113.86zm-38.9-6.07c21.356 0 28.868-18.017 28.868-35.063 0-17.083-7.512-35.11-28.868-35.11-19.14 0-26.956 18.027-26.956 35.11 0 17.046 7.817 35.062 26.956 35.062zM660.926 55.645c-.494-12.438-10.043-18.027-21.535-18.027-8.94 0-19.443 3.52-19.443 14.215 0 8.918 10.188 12.112 17.06 13.877l13.395 3.014c11.47 1.76 23.425 8.457 23.425 22.804 0 17.88-17.667 24.72-33.007 24.72-19.14 0-32.208-8.93-33.805-29.016h10.03c.82 13.54 10.864 20.558 24.27 20.558 9.38 0 22.47-4.14 22.47-15.62 0-9.56-8.92-12.745-18.005-14.99l-12.933-2.855c-13.068-3.51-22.976-7.984-22.976-22.008 0-16.745 16.43-23.132 30.95-23.132 16.418 0 29.52 8.625 30.14 26.46h-10.034z"/></g></svg>

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

@ -4,31 +4,31 @@
/* global Bloodhound, language, Modernizr, tinymce */
if ($("#description").length) {
tinymce.init({
selector: "#description",
branding: false,
menubar: "edit view format",
language
});
tinymce.init({
selector: "#description",
branding: false,
menubar: "edit view format",
language: language
});
if (!Modernizr.inputtypes.date) {
$("#pubdate").datepicker({
format: "yyyy-mm-dd",
language
}).on("change", function () {
// Show localized date over top of the standard YYYY-MM-DD date
let pubDate;
const results = /(\d{4})[-\/\\](\d{1,2})[-\/\\](\d{1,2})/.exec(this.value); // YYYY-MM-DD
if (results) {
pubDate = new Date(results[1], parseInt(results[2], 10)-1, results[3]) || new Date(this.value);
}
$("#fake_pubdate")
.val(pubDate.toLocaleDateString(language))
.removeClass("hidden");
}).trigger("change");
}
if (!Modernizr.inputtypes.date) {
$("#pubdate").datepicker({
format: "yyyy-mm-dd",
language: language
}).on("change", function () {
// Show localized date over top of the standard YYYY-MM-DD date
var pubDate;
var results = /(\d{4})[-\/\\](\d{1,2})[-\/\\](\d{1,2})/.exec(this.value); // YYYY-MM-DD
if (results) {
pubDate = new Date(results[1], parseInt(results[2], 10) - 1, results[3]) || new Date(this.value);
}
$("#fake_pubdate")
.val(pubDate.toLocaleDateString(language))
.removeClass("hidden");
}).trigger("change");
}
}
/*
Takes a prefix, query typeahead callback, Bloodhound typeahead adapter
and returns the completions it gets from the bloodhound engine prefixed.
@ -43,6 +43,7 @@ function prefixedSource(prefix, query, cb, bhAdapter) {
cb(matches);
});
}
function getPath() {
var jsFileLocation = $("script[src*=edit_books]").attr("src"); // the js file path
jsFileLocation = jsFileLocation.replace("/static/js/edit_books.js", ""); // the js folder path
@ -56,7 +57,7 @@ var authors = new Bloodhound({
},
queryTokenizer: Bloodhound.tokenizers.whitespace,
remote: {
url: getPath()+"/get_authors_json?q=%QUERY"
url: getPath() + "/get_authors_json?q=%QUERY"
}
});
@ -69,9 +70,9 @@ var series = new Bloodhound({
return [query];
},
remote: {
url: getPath()+"/get_series_json?q=",
url: getPath() + "/get_series_json?q=",
replace: function replace(url, query) {
return url+encodeURIComponent(query);
return url + encodeURIComponent(query);
}
}
});
@ -84,11 +85,11 @@ var tags = new Bloodhound({
},
queryTokenizer: function queryTokenizer(query) {
var tokens = query.split(",");
tokens = [tokens[tokens.length-1].trim()];
tokens = [tokens[tokens.length - 1].trim()];
return tokens;
},
remote: {
url: getPath()+"/get_tags_json?q=%QUERY"
url: getPath() + "/get_tags_json?q=%QUERY"
}
});
@ -101,9 +102,9 @@ var languages = new Bloodhound({
return [query];
},
remote: {
url: getPath()+"/get_languages_json?q=",
url: getPath() + "/get_languages_json?q=",
replace: function replace(url, query) {
return url+encodeURIComponent(query);
return url + encodeURIComponent(query);
}
}
});
@ -112,9 +113,9 @@ function sourceSplit(query, cb, split, source) {
var bhAdapter = source.ttAdapter();
var tokens = query.split(split);
var currentSource = tokens[tokens.length-1].trim();
var currentSource = tokens[tokens.length - 1].trim();
tokens.splice(tokens.length-1, 1); // remove last element
tokens.splice(tokens.length - 1, 1); // remove last element
var prefix = "";
var newSplit;
if (split === "&") {
@ -192,7 +193,7 @@ promiseLanguages.done(function() {
$("#search").on("change input.typeahead:selected", function() {
var form = $("form").serialize();
$.getJSON( getPath()+"/get_matching_tags", form, function( data ) {
$.getJSON( getPath() + "/get_matching_tags", form, function( data ) {
$(".tags_click").each(function() {
if ($.inArray(parseInt($(this).children("input").first().val(), 10), data.tags) === -1 ) {
if (!($(this).hasClass("active"))) {

@ -11,16 +11,17 @@
{%if author.about is not none %}
<p>{{author.about|safe}}</p>
{% endif %}
</section>
<a href="{{author.link}}" class="author-link" target="_blank">
<img src="{{ url_for('static', filename='img/goodreads.svg') }}" alt="Goodreads">
</a>
- {{_("via")}} <a href="{{author.link}}" class="author-link" target="_blank" rel="noopener">Goodreads</a>
</section>
<div class="clearfix"></div>
{% endif %}
<div class="discover load-more">
{% if author is not none %}
<h3>{{_("In Library")}}</h3>
{% endif %}
<div class="row">
{% if entries[0] %}
{% for entry in entries %}
@ -62,4 +63,48 @@
{% endif %}
</div>
</div>
{% if other_books %}
<div class="discover">
<h3>{{_("More by")}} {{ author.name|safe }}</h3>
<div class="row">
{% for entry in other_books %}
<div class="col-sm-3 col-lg-2 col-xs-6 book">
<div class="cover">
<a href="https://www.goodreads.com/book/show/{{ entry.gid['#text'] }}" target="_blank" rel="noopener">
<img src="{{ entry.image_url }}" />
</a>
</div>
<div class="meta">
<p class="title">{{entry.title|shortentitle}}</p>
<p class="author">
{% for author in entry.authors %}
<a href="https://www.goodreads.com/author/show/{{ author.gid }}" target="_blank" rel="noopener">
{{author.name}}
</a>
{% if not loop.last %}
&amp;
{% endif %}
{% endfor %}
</p>
<div class="rating">
{% for number in range((entry.average_rating)|float|round|int(2)) %}
<span class="glyphicon glyphicon-star good"></span>
{% if loop.last and loop.index < 5 %}
{% for numer in range(5 - loop.index) %}
<span class="glyphicon glyphicon-star"></span>
{% endfor %}
{% endif %}
{% endfor %}
</div>
</div>
</div>
{% endfor %}
</div>
<a href="{{author.link}}" class="author-link" target="_blank" rel="noopener">
<img src="{{ url_for('static', filename='img/goodreads.svg') }}" alt="Goodreads">
</a>
</div>
{% endif %}
{% endblock %}

@ -26,9 +26,7 @@
href="{{request.script_root + request.path}}?offset={{ pagination.previous_offset }}"
type="application/atom+xml;profile=opds-catalog;type=feed;kind=navigation"/>
{% endif %}
<link rel="search"
href="{{url_for('feed_osd')}}"
type="application/opensearchdescription+xml"/>
<link title="{{_('Search')}}" type="application/atom+xml" href="{{url_for('feed_normal_search')}}?query={searchTerms}" rel="search"/>
<title>{{instance}}</title>
<author>
<name>{{instance}}</name>

@ -4,8 +4,7 @@
<link rel="self" href="{{url_for('feed_index')}}" type="application/atom+xml;profile=opds-catalog;kind=navigation"/>
<link rel="start" title="{{_('Start')}}" href="{{url_for('feed_index')}}"
type="application/atom+xml;profile=opds-catalog;kind=navigation"/>
<link rel="search" title="{{_('Search')}}" href="{{url_for('feed_osd')}}"
type="application/opensearchdescription+xml"/>
<link title="{{_('Search')}}" type="application/atom+xml" href="{{url_for('feed_normal_search')}}?query={searchTerms}" rel="search"/>
<title>{{instance}}</title>
<author>
<name>{{instance}}</name>

@ -4,7 +4,7 @@
{% if entries|length < 1 %}
<h2>{{_('No Results for:')}} {{searchterm}}</h2>
<p>{{_('Please try a diffrent Search')}}</p>
<p>{{_('Please try a different search')}}</p>
{% else %}
<h2>{{entries|length}} {{_('Results for:')}} {{searchterm}}</h2>
{%endif%}

@ -41,10 +41,6 @@
</select>
</div>
<div class="col-sm-6">
<div class="form-group">
<input type="checkbox" name="show_mature_content" id="show_mature_content" {% if content.mature_content %}checked{% endif %}>
<label for="show_mature_content">{{_('Show mature content')}}</label>
</div>
<div class="form-group">
<input type="checkbox" name="show_random" id="show_random" {% if content.show_random_books() %}checked{% endif %}>
<label for="show_random">{{_('Show random books')}}</label>
@ -89,6 +85,10 @@
<input type="checkbox" name="admin_role" id="admin_role" {% if content.role_admin() %}checked{% endif %}>
<label for="admin_role">{{_('Admin user')}}</label>
</div>
<div class="form-group">
<input type="checkbox" name="show_mature_content" id="show_mature_content" {% if content.mature_content %}checked{% endif %}>
<label for="show_mature_content">{{_('Show mature content')}}</label>
</div>
{% endif %}
<div class="form-group">
<input type="checkbox" name="download_role" id="download_role" {% if content.role_download() %}checked{% endif %}>

@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2017-08-12 18:19+0200\n"
"POT-Creation-Date: 2017-09-01 20:37+0200\n"
"PO-Revision-Date: 2016-07-12 19:54+0200\n"
"Last-Translator: Ozzie Isaacs\n"
"Language: de\n"
@ -32,7 +32,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.4.0\n"
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1374
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1341
msgid "not installed"
msgstr "Nicht installiert"
@ -78,379 +78,379 @@ msgstr ""
"Konnte keine Formate finden welche für das versenden per E-Mail geeignet "
"sind"
#: cps/ub.py:542
#: cps/ub.py:543
msgid "Guest"
msgstr "Gast"
#: cps/web.py:974
#: cps/web.py:953
msgid "Requesting update package"
msgstr "Frage Update Paket an"
#: cps/web.py:975
#: cps/web.py:954
msgid "Downloading update package"
msgstr "Lade Update Paket herunter"
#: cps/web.py:976
#: cps/web.py:955
msgid "Unzipping update package"
msgstr "Entpacke Update Paket"
#: cps/web.py:977
#: cps/web.py:956
msgid "Files are replaced"
msgstr "Ersetze Dateien"
#: cps/web.py:978
#: cps/web.py:957
msgid "Database connections are closed"
msgstr "Schließe Datenbankverbindungen"
#: cps/web.py:979
#: cps/web.py:958
msgid "Server is stopped"
msgstr "Stoppe Server"
#: cps/web.py:980
#: cps/web.py:959
msgid "Update finished, please press okay and reload page"
msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden"
#: cps/web.py:1054
#: cps/web.py:1033
msgid "Recently Added Books"
msgstr "Kürzlich hinzugefügte Bücher"
#: cps/web.py:1063
#: cps/web.py:1042
msgid "Newest Books"
msgstr "Neueste Bücher"
#: cps/web.py:1072
#: cps/web.py:1051
msgid "Oldest Books"
msgstr "Älteste Bücher"
#: cps/web.py:1081
#: cps/web.py:1060
msgid "Books (A-Z)"
msgstr "Bücher (A-Z)"
#: cps/web.py:1090
#: cps/web.py:1069
msgid "Books (Z-A)"
msgstr "Bücher (Z-A)"
#: cps/web.py:1126
#: cps/web.py:1099
msgid "Hot Books (most downloaded)"
msgstr "Beliebte Bücher (die meisten Downloads)"
#: cps/web.py:1136
#: cps/web.py:1109
msgid "Best rated books"
msgstr "Best bewertete Bücher"
#: cps/templates/index.xml:36 cps/web.py:1145
#: cps/templates/index.xml:35 cps/web.py:1118
msgid "Random Books"
msgstr "Zufällige Bücher"
#: cps/web.py:1161
#: cps/web.py:1127
msgid "Author list"
msgstr "Autorenliste"
#: cps/web.py:1181 cps/web.py:1212 cps/web.py:1351 cps/web.py:1835
#: cps/web.py:1137 cps/web.py:1193 cps/web.py:1318 cps/web.py:1796
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
"Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht "
"zugänglich."
#: cps/templates/index.xml:71 cps/web.py:1198
#: cps/templates/index.xml:70 cps/web.py:1179
msgid "Series list"
msgstr "Liste Serien"
#: cps/web.py:1210
#: cps/web.py:1191
#, python-format
msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s"
#: cps/web.py:1243
#: cps/web.py:1224
msgid "Available languages"
msgstr "Verfügbare Sprachen"
#: cps/web.py:1258
#: cps/web.py:1239
#, python-format
msgid "Language: %(name)s"
msgstr "Sprache: %(name)s"
#: cps/templates/index.xml:64 cps/web.py:1274
#: cps/templates/index.xml:63 cps/web.py:1248
msgid "Category list"
msgstr "Kategorieliste"
#: cps/web.py:1286
#: cps/web.py:1260
#, python-format
msgid "Category: %(name)s"
msgstr "Kategorie: %(name)s"
#: cps/web.py:1385
#: cps/web.py:1352
msgid "Excecution permissions missing"
msgstr "Ausführungsberechtigung nicht vorhanden"
#: cps/web.py:1399
#: cps/web.py:1366
msgid "Statistics"
msgstr "Statistiken"
#: cps/web.py:1563
#: cps/web.py:1530
msgid "Server restarted, please reload page"
msgstr "Server neu gestartet,bitte Seite neu laden"
#: cps/web.py:1565
#: cps/web.py:1532
msgid "Performing shutdown of server, please close window"
msgstr "Server wird runtergefahren, bitte Fenster schließen"
#: cps/web.py:1581
#: cps/web.py:1548
msgid "Update done"
msgstr "Update durchgeführt"
#: cps/web.py:1662 cps/web.py:1675
#: cps/web.py:1623 cps/web.py:1636
msgid "search"
msgstr "Suche"
#: cps/templates/index.xml:43 cps/templates/index.xml:47
#: cps/templates/layout.html:127 cps/web.py:1751
#: cps/templates/index.xml:42 cps/templates/index.xml:46
#: cps/templates/layout.html:127 cps/web.py:1712
msgid "Read Books"
msgstr "Gelesene Bücher"
#: cps/templates/index.xml:50 cps/templates/index.xml:54
#: cps/templates/layout.html:128 cps/web.py:1754
#: cps/templates/index.xml:49 cps/templates/index.xml:53
#: cps/templates/layout.html:128 cps/web.py:1715
msgid "Unread Books"
msgstr "Ungelesene Bücher"
#: cps/web.py:1821 cps/web.py:1823 cps/web.py:1825 cps/web.py:1832
#: cps/web.py:1782 cps/web.py:1784 cps/web.py:1786 cps/web.py:1793
msgid "Read a Book"
msgstr "Lese ein Buch"
#: cps/web.py:1888 cps/web.py:2512
#: cps/web.py:1849 cps/web.py:2474
msgid "Please fill out all fields!"
msgstr "Bitte alle Felder ausfüllen!"
#: cps/web.py:1889 cps/web.py:1905 cps/web.py:1910 cps/web.py:1912
#: cps/web.py:1850 cps/web.py:1866 cps/web.py:1871 cps/web.py:1873
msgid "register"
msgstr "Registieren"
#: cps/web.py:1904
#: cps/web.py:1865
msgid "An unknown error occured. Please try again later."
msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen."
#: cps/web.py:1909
#: cps/web.py:1870
msgid "This username or email address is already in use."
msgstr "Der Benutzername oder die E-Mailadresse ist in bereits in Benutzung."
#: cps/web.py:1928 cps/web.py:2024
#: cps/web.py:1889 cps/web.py:1985
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Du bist nun eingeloggt als '%(nickname)s'"
#: cps/web.py:1933
#: cps/web.py:1894
msgid "Wrong Username or Password"
msgstr "Falscher Benutzername oder Passwort"
#: cps/web.py:1939 cps/web.py:1960
#: cps/web.py:1900 cps/web.py:1921
msgid "login"
msgstr "Login"
#: cps/web.py:1972 cps/web.py:2003
#: cps/web.py:1933 cps/web.py:1964
msgid "Token not found"
msgstr "Token wurde nicht gefunden"
#: cps/web.py:1980 cps/web.py:2011
#: cps/web.py:1941 cps/web.py:1972
msgid "Token has expired"
msgstr "Das Token ist abgelaufen"
#: cps/web.py:1988
#: cps/web.py:1949
msgid "Success! Please return to your device"
msgstr "Erfolg! Bitte zum Gerät zurückkehren"
#: cps/web.py:2038
#: cps/web.py:1999
msgid "Please configure the SMTP mail settings first..."
msgstr "Bitte zuerst die SMTP Mail Einstellung konfigurieren ..."
#: cps/web.py:2042
#: cps/web.py:2003
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Buch erfolgreich versandt an %(kindlemail)s"
#: cps/web.py:2046
#: cps/web.py:2007
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s"
#: cps/web.py:2048 cps/web.py:2597
#: cps/web.py:2009 cps/web.py:2559
msgid "Please configure your kindle email address first..."
msgstr "Bitte die Kindle E-Mail Adresse zuuerst konfigurieren..."
#: cps/web.py:2092
#: cps/web.py:2053
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Das Buch wurde dem Bücherregal: %(sname)s hinzugefügt"
#: cps/web.py:2127
#: cps/web.py:2088
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Das Buch wurde aus dem Bücherregal: %(sname)s entfernt"
#: cps/web.py:2146 cps/web.py:2170
#: cps/web.py:2107 cps/web.py:2131
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Es existiert bereits ein Bücheregal mit dem Titel '%(title)s'"
#: cps/web.py:2151
#: cps/web.py:2112
#, python-format
msgid "Shelf %(title)s created"
msgstr "Bücherregal %(title)s erzeugt"
#: cps/web.py:2153 cps/web.py:2181
#: cps/web.py:2114 cps/web.py:2142
msgid "There was an error"
msgstr "Es trat ein Fehler auf"
#: cps/web.py:2154 cps/web.py:2156
#: cps/web.py:2115 cps/web.py:2117
msgid "create a shelf"
msgstr "Bücherregal erzeugen"
#: cps/web.py:2179
#: cps/web.py:2140
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Bücherregal %(title)s verändert"
#: cps/web.py:2182 cps/web.py:2184
#: cps/web.py:2143 cps/web.py:2145
msgid "Edit a shelf"
msgstr "Bücherregal editieren"
#: cps/web.py:2204
#: cps/web.py:2165
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Bücherregal %(name)s erfolgreich gelöscht"
#: cps/web.py:2226
#: cps/web.py:2187
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Bücherregal: '%(name)s'"
#: cps/web.py:2229
#: cps/web.py:2190
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "Fehler beim Öffnen. Bücherregel exisitert nicht oder ist nicht zugänglich"
#: cps/web.py:2261
#: cps/web.py:2222
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Reihenfolge in Bücherregal '%(name)s' verändern"
#: cps/web.py:2325
#: cps/web.py:2287
msgid "Found an existing account for this email address."
msgstr "Es existiert ein Benutzerkonto für diese E-Mailadresse"
#: cps/web.py:2327 cps/web.py:2331
#: cps/web.py:2289 cps/web.py:2293
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s's Profil"
#: cps/web.py:2328
#: cps/web.py:2290
msgid "Profile updated"
msgstr "Profil aktualisiert"
#: cps/web.py:2342
#: cps/web.py:2304
msgid "Admin page"
msgstr "Admin Seite"
#: cps/web.py:2466
#: cps/web.py:2428
msgid "Calibre-web configuration updated"
msgstr "Calibre-web Konfiguration wurde aktualisiert"
#: cps/web.py:2473 cps/web.py:2479 cps/web.py:2493
#: cps/web.py:2435 cps/web.py:2441 cps/web.py:2455
msgid "Basic Configuration"
msgstr "Basis Konfiguration"
#: cps/web.py:2477
#: cps/web.py:2439
msgid "DB location is not valid, please enter correct path"
msgstr "DB Speicherort ist ungültig, bitte Pfad korrigieren"
#: cps/templates/admin.html:34 cps/web.py:2514 cps/web.py:2567
#: cps/templates/admin.html:34 cps/web.py:2476 cps/web.py:2529
msgid "Add new user"
msgstr "Neuen Benutzer hinzufügen"
#: cps/web.py:2559
#: cps/web.py:2521
#, python-format
msgid "User '%(user)s' created"
msgstr "Benutzer '%(user)s' angelegt"
#: cps/web.py:2563
#: cps/web.py:2525
msgid "Found an existing account for this email address or nickname."
msgstr ""
"Es existiert ein Benutzerkonto für diese Emailadresse oder den "
"Benutzernamen."
#: cps/web.py:2585
#: cps/web.py:2547
msgid "Mail settings updated"
msgstr "E-Mail Einstellungen aktualisiert"
#: cps/web.py:2592
#: cps/web.py:2554
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Test E-Mail erfolgreich an %(kindlemail)s versendet"
#: cps/web.py:2595
#: cps/web.py:2557
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Fehler beim versenden der Test E-Mail: %(res)s"
#: cps/web.py:2599
#: cps/web.py:2561
msgid "E-Mail settings updated"
msgstr "E-Mail Einstellungen wurde aktualisiert"
#: cps/web.py:2600
#: cps/web.py:2562
msgid "Edit mail settings"
msgstr "E-Mail Einstellungen editieren"
#: cps/web.py:2629
#: cps/web.py:2591
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Benutzer '%(nick)s' gelöscht"
#: cps/web.py:2727
#: cps/web.py:2689
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Benutzer '%(nick)s' aktualisiert"
#: cps/web.py:2730
#: cps/web.py:2692
msgid "An unknown error occured."
msgstr "Es ist ein unbekanter Fehler aufgetreten"
#: cps/web.py:2733
#: cps/web.py:2695
#, python-format
msgid "Edit User %(nick)s"
msgstr "Benutzer %(nick)s bearbeiten"
#: cps/web.py:2755
#: cps/web.py:2711
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
"Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht "
"zugänglich"
#: cps/web.py:2770 cps/web.py:2953 cps/web.py:3077
#: cps/web.py:2726 cps/web.py:2898 cps/web.py:3041
msgid "edit metadata"
msgstr "Metadaten editieren"
#: cps/web.py:2782 cps/web.py:2786
#: cps/web.py:2738 cps/web.py:2742
msgid "unknown"
msgstr "Unbekannt"
#: cps/web.py:2971
#: cps/web.py:2935
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "Die Dateiendung \"%s\" kann nicht auf diesen Server hochgeladen werden"
#: cps/web.py:2977
#: cps/web.py:2941
msgid "File to be uploaded must have an extension"
msgstr "Datei müssen eine Erweiterung haben, um hochgeladen zu werden"
#: cps/web.py:2996
#: cps/web.py:2960
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Fehler beim Erzeugen des Pfads %s (Zugriff verweigert)"
#: cps/web.py:3001
#: cps/web.py:2965
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Fehler beim speichern der Datei %s (Zugriff verweigert)"
#: cps/web.py:3006
#: cps/web.py:2970
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Fehler beim Löschen von Datei %s (Zugriff verweigert)"
@ -621,6 +621,18 @@ msgstr "Calibre-web wirklich stoppen"
msgid "Updating, please do not reload page"
msgstr "Updatevorgang, bitte Seite nicht neu laden"
#: cps/templates/author.html:15
msgid "via"
msgstr "via"
#: cps/templates/author.html:23
msgid "In Library"
msgstr "In Bibliothek"
#: cps/templates/author.html:69
msgid "More by"
msgstr "Mehr von"
#: cps/templates/book_edit.html:16
msgid "Delete Book"
msgstr "Buch löschen"
@ -629,12 +641,13 @@ msgstr "Buch löschen"
msgid "Book Title"
msgstr "Buchtitel"
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:188
#: cps/templates/search_form.html:10
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:208
#: cps/templates/book_edit.html:226 cps/templates/search_form.html:10
msgid "Author"
msgstr "Autor"
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:190
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:213
#: cps/templates/book_edit.html:228
msgid "Description"
msgstr "Beschreibung"
@ -717,35 +730,35 @@ msgstr "Suchbegriff"
msgid "Go!"
msgstr "Los!"
#: cps/templates/book_edit.html:168
#: cps/templates/book_edit.html:171
msgid "Click the cover to load metadata to the form"
msgstr "Klicke auf das Bild um die Metadaten zu übertragen"
#: cps/templates/book_edit.html:172 cps/templates/book_edit.html:185
#: cps/templates/book_edit.html:183 cps/templates/book_edit.html:223
msgid "Loading..."
msgstr "Lade..."
#: cps/templates/book_edit.html:175 cps/templates/layout.html:199
#: cps/templates/book_edit.html:188 cps/templates/layout.html:199
msgid "Close"
msgstr "Schließen"
#: cps/templates/book_edit.html:186
msgid "Search error!"
msgstr "Fehler bei Suche!"
#: cps/templates/book_edit.html:187
msgid "No Result! Please try anonther keyword."
msgstr "Kein Ergebniss! Bitte anderen Begriff versuchen"
#: cps/templates/book_edit.html:189 cps/templates/detail.html:125
#: cps/templates/search_form.html:14
#: cps/templates/book_edit.html:210 cps/templates/book_edit.html:227
#: cps/templates/detail.html:125 cps/templates/search_form.html:14
msgid "Publisher"
msgstr "Herausgeber"
#: cps/templates/book_edit.html:191
#: cps/templates/book_edit.html:215 cps/templates/book_edit.html:229
msgid "Source"
msgstr "Quelle"
#: cps/templates/book_edit.html:224
msgid "Search error!"
msgstr "Fehler bei Suche!"
#: cps/templates/book_edit.html:225
msgid "No Result! Please try anonther keyword."
msgstr "Kein Ergebniss! Bitte anderen Begriff versuchen"
#: cps/templates/config_edit.html:7
msgid "Location of Calibre database"
msgstr "Speicherort der Calibre Datenbank"
@ -829,7 +842,7 @@ msgstr "Öffentlicher Goodreads API Schlüssel"
#: cps/templates/config_edit.html:119
msgid "Goodreads API Secret"
msgstr Geheimer Goodreads API Schlüssel"
msgstr "eheimer Goodreads API Schlüssel"
#: cps/templates/config_edit.html:125
msgid "Default Settings for new users"
@ -938,6 +951,11 @@ msgstr "Einstellungen speichern und Test E-Mail versenden"
msgid "Next"
msgstr "Nächste"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
#: cps/templates/layout.html:40 cps/templates/layout.html:41
msgid "Search"
msgstr "Suche"
#: cps/templates/index.html:5
msgid "Discover (Random Books)"
msgstr "Entdecke (Zufälliges Buch)"
@ -946,52 +964,47 @@ msgstr "Entdecke (Zufälliges Buch)"
msgid "Start"
msgstr "Start"
#: cps/templates/index.xml:7 cps/templates/layout.html:40
#: cps/templates/layout.html:41
msgid "Search"
msgstr "Suche"
#: cps/templates/index.xml:15 cps/templates/layout.html:121
#: cps/templates/index.xml:14 cps/templates/layout.html:121
msgid "Hot Books"
msgstr "Beliebte Bücher"
#: cps/templates/index.xml:19
#: cps/templates/index.xml:18
msgid "Popular publications from this catalog based on Downloads."
msgstr "Beliebte Publikationen aus dieser Bibliothek basierend auf Downloadzahlen"
#: cps/templates/index.xml:22 cps/templates/layout.html:124
#: cps/templates/index.xml:21 cps/templates/layout.html:124
msgid "Best rated Books"
msgstr "Best bewertete Bücher"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:25
msgid "Popular publications from this catalog based on Rating."
msgstr "Beliebte Veröffentlichungen dieses Katalogs basierend auf Bewertungen"
#: cps/templates/index.xml:29
#: cps/templates/index.xml:28
msgid "New Books"
msgstr "Neue Bücher"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:32
msgid "The latest Books"
msgstr "Die neuesten Bücher"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:39
msgid "Show Random Books"
msgstr "Zeige zufällige Bücher"
#: cps/templates/index.xml:57 cps/templates/layout.html:139
#: cps/templates/index.xml:56 cps/templates/layout.html:139
msgid "Authors"
msgstr "Autoren"
#: cps/templates/index.xml:61
#: cps/templates/index.xml:60
msgid "Books ordered by Author"
msgstr "Bücher nach Autoren sortiert"
#: cps/templates/index.xml:68
#: cps/templates/index.xml:67
msgid "Books ordered by category"
msgstr "Bücher nach Kategorien sortiert"
#: cps/templates/index.xml:75
#: cps/templates/index.xml:74
msgid "Books ordered by series"
msgstr "Bücher nach Reihen geordnet"
@ -1151,7 +1164,7 @@ msgid "No Results for:"
msgstr "Keine Ergebnisse für:"
#: cps/templates/search.html:7
msgid "Please try a diffrent Search"
msgid "Please try a different search"
msgstr "Versuche eine andere Suche"
#: cps/templates/search.html:9

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2017-08-12 18:55+0200\n"
"POT-Creation-Date: 2017-09-01 20:37+0200\n"
"PO-Revision-Date: 2017-04-04 15:09+0200\n"
"Last-Translator: Juan F. Villa <juan.villa@paisdelconocimiento.org>\n"
"Language: es\n"
@ -25,7 +25,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.4.0\n"
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1374
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1341
msgid "not installed"
msgstr "No instalado"
@ -69,375 +69,375 @@ msgstr "Enviar a Kindle"
msgid "Could not find any formats suitable for sending by email"
msgstr "Formato no compatible para enviar por correo electronico"
#: cps/ub.py:542
#: cps/ub.py:543
msgid "Guest"
msgstr "Invitado"
#: cps/web.py:974
#: cps/web.py:953
msgid "Requesting update package"
msgstr "Solicitando paquete de actualización"
#: cps/web.py:975
#: cps/web.py:954
msgid "Downloading update package"
msgstr "Descargando paquete de actualización"
#: cps/web.py:976
#: cps/web.py:955
msgid "Unzipping update package"
msgstr "Descomprimiendo paquete de actualización"
#: cps/web.py:977
#: cps/web.py:956
msgid "Files are replaced"
msgstr "Ficheros sustituidos"
#: cps/web.py:978
#: cps/web.py:957
msgid "Database connections are closed"
msgstr "Los conexiones de base datos están cerradas"
#: cps/web.py:979
#: cps/web.py:958
msgid "Server is stopped"
msgstr "El servidor está detenido"
#: cps/web.py:980
#: cps/web.py:959
msgid "Update finished, please press okay and reload page"
msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página"
#: cps/web.py:1054
#: cps/web.py:1033
msgid "Recently Added Books"
msgstr ""
#: cps/web.py:1063
#: cps/web.py:1042
msgid "Newest Books"
msgstr ""
#: cps/web.py:1072
#: cps/web.py:1051
msgid "Oldest Books"
msgstr ""
#: cps/web.py:1081
#: cps/web.py:1060
msgid "Books (A-Z)"
msgstr ""
#: cps/web.py:1090
#: cps/web.py:1069
msgid "Books (Z-A)"
msgstr ""
#: cps/web.py:1126
#: cps/web.py:1099
msgid "Hot Books (most downloaded)"
msgstr "Libros populares (los mas descargados)"
#: cps/web.py:1136
#: cps/web.py:1109
msgid "Best rated books"
msgstr "Libros mejor valorados"
#: cps/templates/index.xml:36 cps/web.py:1145
#: cps/templates/index.xml:35 cps/web.py:1118
msgid "Random Books"
msgstr "Libros al azar"
#: cps/web.py:1161
#: cps/web.py:1127
msgid "Author list"
msgstr "Lista de autores"
#: cps/web.py:1181 cps/web.py:1212 cps/web.py:1351 cps/web.py:1835
#: cps/web.py:1137 cps/web.py:1193 cps/web.py:1318 cps/web.py:1796
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Error en la apertura del eBook. El archivo no existe o no es accesible:"
#: cps/templates/index.xml:71 cps/web.py:1198
#: cps/templates/index.xml:70 cps/web.py:1179
msgid "Series list"
msgstr "Lista de series"
#: cps/web.py:1210
#: cps/web.py:1191
#, python-format
msgid "Series: %(serie)s"
msgstr "Series : %(serie)s"
#: cps/web.py:1243
#: cps/web.py:1224
msgid "Available languages"
msgstr "Lenguajes disponibles"
#: cps/web.py:1258
#: cps/web.py:1239
#, python-format
msgid "Language: %(name)s"
msgstr "Lenguaje: %(name)s"
#: cps/templates/index.xml:64 cps/web.py:1274
#: cps/templates/index.xml:63 cps/web.py:1248
msgid "Category list"
msgstr "Lista de categorias"
#: cps/web.py:1286
#: cps/web.py:1260
#, python-format
msgid "Category: %(name)s"
msgstr "Categoría : %(name)s"
#: cps/web.py:1385
#: cps/web.py:1352
msgid "Excecution permissions missing"
msgstr ""
#: cps/web.py:1399
#: cps/web.py:1366
msgid "Statistics"
msgstr "Estadisticas"
#: cps/web.py:1563
#: cps/web.py:1530
msgid "Server restarted, please reload page"
msgstr "Servidor reiniciado. Por favor, recargue la página"
#: cps/web.py:1565
#: cps/web.py:1532
msgid "Performing shutdown of server, please close window"
msgstr "Servidor en proceso de apagado. Por favor, cierre la ventana."
#: cps/web.py:1581
#: cps/web.py:1548
msgid "Update done"
msgstr "Actualización realizada"
#: cps/web.py:1662 cps/web.py:1675
#: cps/web.py:1623 cps/web.py:1636
msgid "search"
msgstr "búsqueda"
#: cps/templates/index.xml:43 cps/templates/index.xml:47
#: cps/templates/layout.html:127 cps/web.py:1751
#: cps/templates/index.xml:42 cps/templates/index.xml:46
#: cps/templates/layout.html:127 cps/web.py:1712
msgid "Read Books"
msgstr "Libros leídos"
#: cps/templates/index.xml:50 cps/templates/index.xml:54
#: cps/templates/layout.html:128 cps/web.py:1754
#: cps/templates/index.xml:49 cps/templates/index.xml:53
#: cps/templates/layout.html:128 cps/web.py:1715
msgid "Unread Books"
msgstr "Libros no leídos"
#: cps/web.py:1821 cps/web.py:1823 cps/web.py:1825 cps/web.py:1832
#: cps/web.py:1782 cps/web.py:1784 cps/web.py:1786 cps/web.py:1793
msgid "Read a Book"
msgstr "Leer un libro"
#: cps/web.py:1888 cps/web.py:2513
#: cps/web.py:1849 cps/web.py:2474
msgid "Please fill out all fields!"
msgstr "¡Por favor completar todos los campos!"
#: cps/web.py:1889 cps/web.py:1905 cps/web.py:1910 cps/web.py:1912
#: cps/web.py:1850 cps/web.py:1866 cps/web.py:1871 cps/web.py:1873
msgid "register"
msgstr "registrarse"
#: cps/web.py:1904
#: cps/web.py:1865
msgid "An unknown error occured. Please try again later."
msgstr "Error desconocido. Por favor, inténtelo de nuevo mas tarde."
#: cps/web.py:1909
#: cps/web.py:1870
msgid "This username or email address is already in use."
msgstr "Usuario o dirección de correo en uso."
#: cps/web.py:1928 cps/web.py:2024
#: cps/web.py:1889 cps/web.py:1985
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Sesion iniciada como : '%(nickname)s'"
#: cps/web.py:1933
#: cps/web.py:1894
msgid "Wrong Username or Password"
msgstr "Usuario o contraseña invalido"
#: cps/web.py:1939 cps/web.py:1960
#: cps/web.py:1900 cps/web.py:1921
msgid "login"
msgstr "Iniciar sesión"
#: cps/web.py:1972 cps/web.py:2003
#: cps/web.py:1933 cps/web.py:1964
msgid "Token not found"
msgstr ""
#: cps/web.py:1980 cps/web.py:2011
#: cps/web.py:1941 cps/web.py:1972
msgid "Token has expired"
msgstr ""
#: cps/web.py:1988
#: cps/web.py:1949
msgid "Success! Please return to your device"
msgstr ""
#: cps/web.py:2038
#: cps/web.py:1999
msgid "Please configure the SMTP mail settings first..."
msgstr "Configurar primero los parametros SMTP por favor..."
#: cps/web.py:2042
#: cps/web.py:2003
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Envio de Libro a %(kindlemail)s correctamente"
#: cps/web.py:2046
#: cps/web.py:2007
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Ha sucedido un error en el envio del Libro: %(res)s"
#: cps/web.py:2048 cps/web.py:2598
#: cps/web.py:2009 cps/web.py:2559
msgid "Please configure your kindle email address first..."
msgstr "Configurar primero la dirección de correo Kindle por favor..."
#: cps/web.py:2092
#: cps/web.py:2053
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "El libro fue agregado a el estante: %(sname)s"
#: cps/web.py:2127
#: cps/web.py:2088
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "El libro fue removido del estante: %(sname)s"
#: cps/web.py:2146 cps/web.py:2170
#: cps/web.py:2107 cps/web.py:2131
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Une étagère de ce nom '%(title)s' existe déjà."
#: cps/web.py:2151
#: cps/web.py:2112
#, python-format
msgid "Shelf %(title)s created"
msgstr "Estante %(title)s creado"
#: cps/web.py:2153 cps/web.py:2181
#: cps/web.py:2114 cps/web.py:2142
msgid "There was an error"
msgstr "Ha sucedido un error"
#: cps/web.py:2154 cps/web.py:2156
#: cps/web.py:2115 cps/web.py:2117
msgid "create a shelf"
msgstr "crear un estante"
#: cps/web.py:2179
#: cps/web.py:2140
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Estante %(title)s cambiado"
#: cps/web.py:2182 cps/web.py:2184
#: cps/web.py:2143 cps/web.py:2145
msgid "Edit a shelf"
msgstr "Editar un estante"
#: cps/web.py:2204
#: cps/web.py:2165
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Estante %(name)s fue borrado correctamente"
#: cps/web.py:2226
#: cps/web.py:2187
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Estante: '%(name)s'"
#: cps/web.py:2229
#: cps/web.py:2190
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
#: cps/web.py:2261
#: cps/web.py:2222
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Cambiar orden del estante: '%(name)s'"
#: cps/web.py:2326
#: cps/web.py:2287
msgid "Found an existing account for this email address."
msgstr "Existe una cuenta vinculada a esta dirección de correo."
#: cps/web.py:2328 cps/web.py:2332
#: cps/web.py:2289 cps/web.py:2293
#, python-format
msgid "%(name)s's profile"
msgstr "Perfil de %(name)s"
#: cps/web.py:2329
#: cps/web.py:2290
msgid "Profile updated"
msgstr "Perfil actualizado"
#: cps/web.py:2343
#: cps/web.py:2304
msgid "Admin page"
msgstr "Página de administración"
#: cps/web.py:2467
#: cps/web.py:2428
msgid "Calibre-web configuration updated"
msgstr "Configuración de Calibre-web actualizada"
#: cps/web.py:2474 cps/web.py:2480 cps/web.py:2494
#: cps/web.py:2435 cps/web.py:2441 cps/web.py:2455
msgid "Basic Configuration"
msgstr "Configuración básica"
#: cps/web.py:2478
#: cps/web.py:2439
msgid "DB location is not valid, please enter correct path"
msgstr "Localicación de la BD inválida. Por favor, introduzca la ruta correcta."
#: cps/templates/admin.html:34 cps/web.py:2515 cps/web.py:2568
#: cps/templates/admin.html:34 cps/web.py:2476 cps/web.py:2529
msgid "Add new user"
msgstr "Agregar un nuevo usuario"
#: cps/web.py:2560
#: cps/web.py:2521
#, python-format
msgid "User '%(user)s' created"
msgstr "Usuario '%(user)s' creado"
#: cps/web.py:2564
#: cps/web.py:2525
msgid "Found an existing account for this email address or nickname."
msgstr ""
"Se ha encontrado una cuenta vinculada a esta dirección de correo o nombre"
" de usuario."
#: cps/web.py:2586
#: cps/web.py:2547
msgid "Mail settings updated"
msgstr "Parámetros de correo actualizados"
#: cps/web.py:2593
#: cps/web.py:2554
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Exito al realizar envio de prueba a %(kindlemail)s"
#: cps/web.py:2596
#: cps/web.py:2557
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Error al realizar envio de prueba a E-Mail: %(res)s"
#: cps/web.py:2600
#: cps/web.py:2561
msgid "E-Mail settings updated"
msgstr "Ajustes de correo electrónico actualizados"
#: cps/web.py:2601
#: cps/web.py:2562
msgid "Edit mail settings"
msgstr "Editar parametros de correo"
#: cps/web.py:2630
#: cps/web.py:2591
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Usuario '%(nick)s' borrado"
#: cps/web.py:2728
#: cps/web.py:2689
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Usuario '%(nick)s' actualizado"
#: cps/web.py:2731
#: cps/web.py:2692
msgid "An unknown error occured."
msgstr "Error inesperado."
#: cps/web.py:2734
#: cps/web.py:2695
#, python-format
msgid "Edit User %(nick)s"
msgstr "Editar Usuario %(nick)s"
#: cps/web.py:2756
#: cps/web.py:2711
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
#: cps/web.py:2771 cps/web.py:2954 cps/web.py:3078
#: cps/web.py:2726 cps/web.py:2898 cps/web.py:3041
msgid "edit metadata"
msgstr "editar metainformación"
#: cps/web.py:2783 cps/web.py:2787
#: cps/web.py:2738 cps/web.py:2742
msgid "unknown"
msgstr ""
#: cps/web.py:2972
#: cps/web.py:2935
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "No se permite subir archivos con la extensión \"%s\" a este servidor"
#: cps/web.py:2978
#: cps/web.py:2941
msgid "File to be uploaded must have an extension"
msgstr "El archivo a subir debe tener una extensión"
#: cps/web.py:2997
#: cps/web.py:2960
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Fallo al crear la ruta %s (permiso negado)"
#: cps/web.py:3002
#: cps/web.py:2965
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Fallo al almacenar el archivo %s (permiso negado)"
#: cps/web.py:3007
#: cps/web.py:2970
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Fallo al borrar el archivo %s (permiso negado)"
@ -608,6 +608,18 @@ msgstr "¿Seguro que quiere detener Calibre-web?"
msgid "Updating, please do not reload page"
msgstr "Actualizando. Por favor, no recargue la página."
#: cps/templates/author.html:15
msgid "via"
msgstr ""
#: cps/templates/author.html:23
msgid "In Library"
msgstr ""
#: cps/templates/author.html:69
msgid "More by"
msgstr ""
#: cps/templates/book_edit.html:16
msgid "Delete Book"
msgstr ""
@ -616,12 +628,13 @@ msgstr ""
msgid "Book Title"
msgstr "Titulo del Libro"
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:188
#: cps/templates/search_form.html:10
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:208
#: cps/templates/book_edit.html:226 cps/templates/search_form.html:10
msgid "Author"
msgstr "Autor"
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:190
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:213
#: cps/templates/book_edit.html:228
msgid "Description"
msgstr "Descripcion"
@ -704,35 +717,35 @@ msgstr "Buscar palabras clave"
msgid "Go!"
msgstr "¡Vamos!"
#: cps/templates/book_edit.html:168
#: cps/templates/book_edit.html:171
msgid "Click the cover to load metadata to the form"
msgstr "Haga clic en la portada para cargar la metainformación en el formulario"
#: cps/templates/book_edit.html:172 cps/templates/book_edit.html:185
#: cps/templates/book_edit.html:183 cps/templates/book_edit.html:223
msgid "Loading..."
msgstr "Cargando..."
#: cps/templates/book_edit.html:175 cps/templates/layout.html:199
#: cps/templates/book_edit.html:188 cps/templates/layout.html:199
msgid "Close"
msgstr "Cerrar"
#: cps/templates/book_edit.html:186
msgid "Search error!"
msgstr "¡Error en la búsqueda!"
#: cps/templates/book_edit.html:187
msgid "No Result! Please try anonther keyword."
msgstr "¡Sin resultados! Por favor, pruebe otra palabra clave."
#: cps/templates/book_edit.html:189 cps/templates/detail.html:125
#: cps/templates/search_form.html:14
#: cps/templates/book_edit.html:210 cps/templates/book_edit.html:227
#: cps/templates/detail.html:125 cps/templates/search_form.html:14
msgid "Publisher"
msgstr "Editor"
#: cps/templates/book_edit.html:191
#: cps/templates/book_edit.html:215 cps/templates/book_edit.html:229
msgid "Source"
msgstr "Origen"
#: cps/templates/book_edit.html:224
msgid "Search error!"
msgstr "¡Error en la búsqueda!"
#: cps/templates/book_edit.html:225
msgid "No Result! Please try anonther keyword."
msgstr "¡Sin resultados! Por favor, pruebe otra palabra clave."
#: cps/templates/config_edit.html:7
msgid "Location of Calibre database"
msgstr "Ubicación de la base de datos Calibre"
@ -925,6 +938,11 @@ msgstr "Guardar cambios y enviar un correo de prueba"
msgid "Next"
msgstr "Siguiente"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
#: cps/templates/layout.html:40 cps/templates/layout.html:41
msgid "Search"
msgstr "Buscar"
#: cps/templates/index.html:5
msgid "Discover (Random Books)"
msgstr "Descubrir (Libros al azar)"
@ -933,52 +951,47 @@ msgstr "Descubrir (Libros al azar)"
msgid "Start"
msgstr "Iniciar"
#: cps/templates/index.xml:7 cps/templates/layout.html:40
#: cps/templates/layout.html:41
msgid "Search"
msgstr "Buscar"
#: cps/templates/index.xml:15 cps/templates/layout.html:121
#: cps/templates/index.xml:14 cps/templates/layout.html:121
msgid "Hot Books"
msgstr "Libros Populares"
#: cps/templates/index.xml:19
#: cps/templates/index.xml:18
msgid "Popular publications from this catalog based on Downloads."
msgstr "Publicaciones mas populares para este catálogo basadas en las descargas."
#: cps/templates/index.xml:22 cps/templates/layout.html:124
#: cps/templates/index.xml:21 cps/templates/layout.html:124
msgid "Best rated Books"
msgstr "Libros mejor valorados"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:25
msgid "Popular publications from this catalog based on Rating."
msgstr "Publicaciones populares del catalogo basados en el puntaje."
#: cps/templates/index.xml:29
#: cps/templates/index.xml:28
msgid "New Books"
msgstr "Nuevos libros"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:32
msgid "The latest Books"
msgstr "Libros recientes"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:39
msgid "Show Random Books"
msgstr "Mostrar libros al azar"
#: cps/templates/index.xml:57 cps/templates/layout.html:139
#: cps/templates/index.xml:56 cps/templates/layout.html:139
msgid "Authors"
msgstr "Autores"
#: cps/templates/index.xml:61
#: cps/templates/index.xml:60
msgid "Books ordered by Author"
msgstr "Libros ordenados por Autor"
#: cps/templates/index.xml:68
#: cps/templates/index.xml:67
msgid "Books ordered by category"
msgstr "Libros ordenados por Categorias"
#: cps/templates/index.xml:75
#: cps/templates/index.xml:74
msgid "Books ordered by series"
msgstr "Libros ordenados por Series"
@ -1138,7 +1151,7 @@ msgid "No Results for:"
msgstr "Sin resultados para:"
#: cps/templates/search.html:7
msgid "Please try a diffrent Search"
msgid "Please try a different search"
msgstr "Intente una busqueda diferente"
#: cps/templates/search.html:9

@ -20,7 +20,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2017-08-12 18:55+0200\n"
"POT-Creation-Date: 2017-09-01 20:37+0200\n"
"PO-Revision-Date: 2016-11-13 18:35+0100\n"
"Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n"
"Language: fr\n"
@ -31,7 +31,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.4.0\n"
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1374
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1341
msgid "not installed"
msgstr ""
@ -75,375 +75,375 @@ msgstr "Envoyer ver Kindle"
msgid "Could not find any formats suitable for sending by email"
msgstr "Impossible de trouver un format adapté à envoyer par courriel"
#: cps/ub.py:542
#: cps/ub.py:543
msgid "Guest"
msgstr ""
#: cps/web.py:974
#: cps/web.py:953
msgid "Requesting update package"
msgstr ""
#: cps/web.py:975
#: cps/web.py:954
msgid "Downloading update package"
msgstr ""
#: cps/web.py:976
#: cps/web.py:955
msgid "Unzipping update package"
msgstr ""
#: cps/web.py:977
#: cps/web.py:956
msgid "Files are replaced"
msgstr ""
#: cps/web.py:978
#: cps/web.py:957
msgid "Database connections are closed"
msgstr ""
#: cps/web.py:979
#: cps/web.py:958
msgid "Server is stopped"
msgstr ""
#: cps/web.py:980
#: cps/web.py:959
msgid "Update finished, please press okay and reload page"
msgstr ""
#: cps/web.py:1054
#: cps/web.py:1033
msgid "Recently Added Books"
msgstr ""
#: cps/web.py:1063
#: cps/web.py:1042
msgid "Newest Books"
msgstr ""
#: cps/web.py:1072
#: cps/web.py:1051
msgid "Oldest Books"
msgstr ""
#: cps/web.py:1081
#: cps/web.py:1060
msgid "Books (A-Z)"
msgstr ""
#: cps/web.py:1090
#: cps/web.py:1069
msgid "Books (Z-A)"
msgstr ""
#: cps/web.py:1126
#: cps/web.py:1099
msgid "Hot Books (most downloaded)"
msgstr "Livres populaires (les plus téléchargés)"
#: cps/web.py:1136
#: cps/web.py:1109
msgid "Best rated books"
msgstr ""
#: cps/templates/index.xml:36 cps/web.py:1145
#: cps/templates/index.xml:35 cps/web.py:1118
msgid "Random Books"
msgstr "Livres au hasard"
#: cps/web.py:1161
#: cps/web.py:1127
msgid "Author list"
msgstr "Liste des auteurs"
#: cps/web.py:1181 cps/web.py:1212 cps/web.py:1351 cps/web.py:1835
#: cps/web.py:1137 cps/web.py:1193 cps/web.py:1318 cps/web.py:1796
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
"Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est "
"pas accessible :"
#: cps/templates/index.xml:71 cps/web.py:1198
#: cps/templates/index.xml:70 cps/web.py:1179
msgid "Series list"
msgstr "Liste des séries"
#: cps/web.py:1210
#: cps/web.py:1191
#, python-format
msgid "Series: %(serie)s"
msgstr "Séries : %(serie)s"
#: cps/web.py:1243
#: cps/web.py:1224
msgid "Available languages"
msgstr "Langues disponibles"
#: cps/web.py:1258
#: cps/web.py:1239
#, python-format
msgid "Language: %(name)s"
msgstr "Langue : %(name)s"
#: cps/templates/index.xml:64 cps/web.py:1274
#: cps/templates/index.xml:63 cps/web.py:1248
msgid "Category list"
msgstr "Liste des catégories"
#: cps/web.py:1286
#: cps/web.py:1260
#, python-format
msgid "Category: %(name)s"
msgstr "Catégorie : %(name)s"
#: cps/web.py:1385
#: cps/web.py:1352
msgid "Excecution permissions missing"
msgstr ""
#: cps/web.py:1399
#: cps/web.py:1366
msgid "Statistics"
msgstr "Statistiques"
#: cps/web.py:1563
#: cps/web.py:1530
msgid "Server restarted, please reload page"
msgstr ""
#: cps/web.py:1565
#: cps/web.py:1532
msgid "Performing shutdown of server, please close window"
msgstr ""
#: cps/web.py:1581
#: cps/web.py:1548
msgid "Update done"
msgstr ""
#: cps/web.py:1662 cps/web.py:1675
#: cps/web.py:1623 cps/web.py:1636
msgid "search"
msgstr ""
#: cps/templates/index.xml:43 cps/templates/index.xml:47
#: cps/templates/layout.html:127 cps/web.py:1751
#: cps/templates/index.xml:42 cps/templates/index.xml:46
#: cps/templates/layout.html:127 cps/web.py:1712
msgid "Read Books"
msgstr ""
#: cps/templates/index.xml:50 cps/templates/index.xml:54
#: cps/templates/layout.html:128 cps/web.py:1754
#: cps/templates/index.xml:49 cps/templates/index.xml:53
#: cps/templates/layout.html:128 cps/web.py:1715
msgid "Unread Books"
msgstr ""
#: cps/web.py:1821 cps/web.py:1823 cps/web.py:1825 cps/web.py:1832
#: cps/web.py:1782 cps/web.py:1784 cps/web.py:1786 cps/web.py:1793
msgid "Read a Book"
msgstr "Lire un livre"
#: cps/web.py:1888 cps/web.py:2513
#: cps/web.py:1849 cps/web.py:2474
msgid "Please fill out all fields!"
msgstr "SVP, complétez tous les champs !"
#: cps/web.py:1889 cps/web.py:1905 cps/web.py:1910 cps/web.py:1912
#: cps/web.py:1850 cps/web.py:1866 cps/web.py:1871 cps/web.py:1873
msgid "register"
msgstr "S'enregistrer"
#: cps/web.py:1904
#: cps/web.py:1865
msgid "An unknown error occured. Please try again later."
msgstr "Une erreur a eu lieu. Merci de réessayez plus tard."
#: cps/web.py:1909
#: cps/web.py:1870
msgid "This username or email address is already in use."
msgstr "Ce nom d'utilisateur ou cette adresse de courriel est déjà utilisée."
#: cps/web.py:1928 cps/web.py:2024
#: cps/web.py:1889 cps/web.py:1985
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Vous êtes maintenant connecté sous : '%(nickname)s'"
#: cps/web.py:1933
#: cps/web.py:1894
msgid "Wrong Username or Password"
msgstr "Mauvais nom d'utilisateur ou mot de passe"
#: cps/web.py:1939 cps/web.py:1960
#: cps/web.py:1900 cps/web.py:1921
msgid "login"
msgstr "Connexion"
#: cps/web.py:1972 cps/web.py:2003
#: cps/web.py:1933 cps/web.py:1964
msgid "Token not found"
msgstr ""
#: cps/web.py:1980 cps/web.py:2011
#: cps/web.py:1941 cps/web.py:1972
msgid "Token has expired"
msgstr ""
#: cps/web.py:1988
#: cps/web.py:1949
msgid "Success! Please return to your device"
msgstr ""
#: cps/web.py:2038
#: cps/web.py:1999
msgid "Please configure the SMTP mail settings first..."
msgstr "Veillez configurer les paramètres smtp d'abord..."
#: cps/web.py:2042
#: cps/web.py:2003
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Livres envoyés à %(kindlemail)s avec succès"
#: cps/web.py:2046
#: cps/web.py:2007
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s"
#: cps/web.py:2048 cps/web.py:2598
#: cps/web.py:2009 cps/web.py:2559
msgid "Please configure your kindle email address first..."
msgstr "Veuillez configurer votre adresse kindle d'abord..."
#: cps/web.py:2092
#: cps/web.py:2053
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Le livre a bien été ajouté à l'étagère : %(sname)s"
#: cps/web.py:2127
#: cps/web.py:2088
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Le livre a été supprimé de l'étagère %(sname)s"
#: cps/web.py:2146 cps/web.py:2170
#: cps/web.py:2107 cps/web.py:2131
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Une étagère de ce nom '%(title)s' existe déjà."
#: cps/web.py:2151
#: cps/web.py:2112
#, python-format
msgid "Shelf %(title)s created"
msgstr "Étagère %(title)s créée"
#: cps/web.py:2153 cps/web.py:2181
#: cps/web.py:2114 cps/web.py:2142
msgid "There was an error"
msgstr "Il y a eu une erreur"
#: cps/web.py:2154 cps/web.py:2156
#: cps/web.py:2115 cps/web.py:2117
msgid "create a shelf"
msgstr "Créer une étagère"
#: cps/web.py:2179
#: cps/web.py:2140
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
#: cps/web.py:2182 cps/web.py:2184
#: cps/web.py:2143 cps/web.py:2145
msgid "Edit a shelf"
msgstr ""
#: cps/web.py:2204
#: cps/web.py:2165
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "L'étagère %(name)s a été supprimé avec succès"
#: cps/web.py:2226
#: cps/web.py:2187
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Étagère : '%(name)s'"
#: cps/web.py:2229
#: cps/web.py:2190
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
#: cps/web.py:2261
#: cps/web.py:2222
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
#: cps/web.py:2326
#: cps/web.py:2287
msgid "Found an existing account for this email address."
msgstr "Un compte avec cette adresse de courriel existe déjà."
#: cps/web.py:2328 cps/web.py:2332
#: cps/web.py:2289 cps/web.py:2293
#, python-format
msgid "%(name)s's profile"
msgstr "Profil de %(name)s"
#: cps/web.py:2329
#: cps/web.py:2290
msgid "Profile updated"
msgstr "Profil mis à jour"
#: cps/web.py:2343
#: cps/web.py:2304
msgid "Admin page"
msgstr ""
#: cps/web.py:2467
#: cps/web.py:2428
msgid "Calibre-web configuration updated"
msgstr ""
#: cps/web.py:2474 cps/web.py:2480 cps/web.py:2494
#: cps/web.py:2435 cps/web.py:2441 cps/web.py:2455
msgid "Basic Configuration"
msgstr ""
#: cps/web.py:2478
#: cps/web.py:2439
msgid "DB location is not valid, please enter correct path"
msgstr ""
#: cps/templates/admin.html:34 cps/web.py:2515 cps/web.py:2568
#: cps/templates/admin.html:34 cps/web.py:2476 cps/web.py:2529
msgid "Add new user"
msgstr "Ajouter un nouvel utilisateur"
#: cps/web.py:2560
#: cps/web.py:2521
#, python-format
msgid "User '%(user)s' created"
msgstr "Utilisateur '%(user)s' créé"
#: cps/web.py:2564
#: cps/web.py:2525
msgid "Found an existing account for this email address or nickname."
msgstr "Un compte avec cette adresse de courriel ou ce surnom existe déjà."
#: cps/web.py:2586
#: cps/web.py:2547
msgid "Mail settings updated"
msgstr "Paramètres de courriel mis à jour"
#: cps/web.py:2593
#: cps/web.py:2554
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr ""
#: cps/web.py:2596
#: cps/web.py:2557
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr ""
#: cps/web.py:2600
#: cps/web.py:2561
msgid "E-Mail settings updated"
msgstr ""
#: cps/web.py:2601
#: cps/web.py:2562
msgid "Edit mail settings"
msgstr "Éditer les paramètres de courriel"
#: cps/web.py:2630
#: cps/web.py:2591
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Utilisateur '%(nick)s' supprimé"
#: cps/web.py:2728
#: cps/web.py:2689
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Utilisateur '%(nick)s' mis à jour"
#: cps/web.py:2731
#: cps/web.py:2692
msgid "An unknown error occured."
msgstr "Oups ! Une erreur inconnue a eu lieu."
#: cps/web.py:2734
#: cps/web.py:2695
#, python-format
msgid "Edit User %(nick)s"
msgstr "Éditer l'utilisateur %(nick)s"
#: cps/web.py:2756
#: cps/web.py:2711
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
#: cps/web.py:2771 cps/web.py:2954 cps/web.py:3078
#: cps/web.py:2726 cps/web.py:2898 cps/web.py:3041
msgid "edit metadata"
msgstr ""
#: cps/web.py:2783 cps/web.py:2787
#: cps/web.py:2738 cps/web.py:2742
msgid "unknown"
msgstr ""
#: cps/web.py:2972
#: cps/web.py:2935
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr ""
#: cps/web.py:2978
#: cps/web.py:2941
msgid "File to be uploaded must have an extension"
msgstr ""
#: cps/web.py:2997
#: cps/web.py:2960
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Impossible de créer le chemin %s (permission refusée)"
#: cps/web.py:3002
#: cps/web.py:2965
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Impossible d'enregistrer le fichier %s (permission refusée)"
#: cps/web.py:3007
#: cps/web.py:2970
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Impossible de supprimer le fichier %s (permission refusée)"
@ -614,6 +614,18 @@ msgstr ""
msgid "Updating, please do not reload page"
msgstr ""
#: cps/templates/author.html:15
msgid "via"
msgstr ""
#: cps/templates/author.html:23
msgid "In Library"
msgstr ""
#: cps/templates/author.html:69
msgid "More by"
msgstr ""
#: cps/templates/book_edit.html:16
msgid "Delete Book"
msgstr ""
@ -622,12 +634,13 @@ msgstr ""
msgid "Book Title"
msgstr "Titre du livre"
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:188
#: cps/templates/search_form.html:10
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:208
#: cps/templates/book_edit.html:226 cps/templates/search_form.html:10
msgid "Author"
msgstr "Auteur"
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:190
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:213
#: cps/templates/book_edit.html:228
msgid "Description"
msgstr "Description"
@ -710,33 +723,33 @@ msgstr ""
msgid "Go!"
msgstr "Allez !"
#: cps/templates/book_edit.html:168
#: cps/templates/book_edit.html:171
msgid "Click the cover to load metadata to the form"
msgstr ""
#: cps/templates/book_edit.html:172 cps/templates/book_edit.html:185
#: cps/templates/book_edit.html:183 cps/templates/book_edit.html:223
msgid "Loading..."
msgstr ""
#: cps/templates/book_edit.html:175 cps/templates/layout.html:199
#: cps/templates/book_edit.html:188 cps/templates/layout.html:199
msgid "Close"
msgstr ""
#: cps/templates/book_edit.html:186
msgid "Search error!"
#: cps/templates/book_edit.html:210 cps/templates/book_edit.html:227
#: cps/templates/detail.html:125 cps/templates/search_form.html:14
msgid "Publisher"
msgstr ""
#: cps/templates/book_edit.html:187
msgid "No Result! Please try anonther keyword."
#: cps/templates/book_edit.html:215 cps/templates/book_edit.html:229
msgid "Source"
msgstr ""
#: cps/templates/book_edit.html:189 cps/templates/detail.html:125
#: cps/templates/search_form.html:14
msgid "Publisher"
#: cps/templates/book_edit.html:224
msgid "Search error!"
msgstr ""
#: cps/templates/book_edit.html:191
msgid "Source"
#: cps/templates/book_edit.html:225
msgid "No Result! Please try anonther keyword."
msgstr ""
#: cps/templates/config_edit.html:7
@ -929,6 +942,11 @@ msgstr ""
msgid "Next"
msgstr "Suivant"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
#: cps/templates/layout.html:40 cps/templates/layout.html:41
msgid "Search"
msgstr "Chercher"
#: cps/templates/index.html:5
msgid "Discover (Random Books)"
msgstr "Découverte (livres au hasard)"
@ -937,52 +955,47 @@ msgstr "Découverte (livres au hasard)"
msgid "Start"
msgstr "Démarrer"
#: cps/templates/index.xml:7 cps/templates/layout.html:40
#: cps/templates/layout.html:41
msgid "Search"
msgstr "Chercher"
#: cps/templates/index.xml:15 cps/templates/layout.html:121
#: cps/templates/index.xml:14 cps/templates/layout.html:121
msgid "Hot Books"
msgstr "Livres populaires"
#: cps/templates/index.xml:19
#: cps/templates/index.xml:18
msgid "Popular publications from this catalog based on Downloads."
msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:124
#: cps/templates/index.xml:21 cps/templates/layout.html:124
msgid "Best rated Books"
msgstr ""
#: cps/templates/index.xml:26
#: cps/templates/index.xml:25
msgid "Popular publications from this catalog based on Rating."
msgstr "Publications populaires de ce catalogue sur la base de notes."
#: cps/templates/index.xml:29
#: cps/templates/index.xml:28
msgid "New Books"
msgstr "Nouveaux livres"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:32
msgid "The latest Books"
msgstr "Les derniers livres"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:39
msgid "Show Random Books"
msgstr "Montrer des livres au hasard"
#: cps/templates/index.xml:57 cps/templates/layout.html:139
#: cps/templates/index.xml:56 cps/templates/layout.html:139
msgid "Authors"
msgstr "Auteurs"
#: cps/templates/index.xml:61
#: cps/templates/index.xml:60
msgid "Books ordered by Author"
msgstr "Livres classés par auteur"
#: cps/templates/index.xml:68
#: cps/templates/index.xml:67
msgid "Books ordered by category"
msgstr "Livres classés par catégorie"
#: cps/templates/index.xml:75
#: cps/templates/index.xml:74
msgid "Books ordered by series"
msgstr "Livres classés par série"
@ -1142,7 +1155,7 @@ msgid "No Results for:"
msgstr "Aucun résultat pour :"
#: cps/templates/search.html:7
msgid "Please try a diffrent Search"
msgid "Please try a different search"
msgstr "Essayer une recherche différente"
#: cps/templates/search.html:9

@ -22,7 +22,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web dutch translation by Ed Driesen (GPL V3)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2017-08-12 18:55+0200\n"
"POT-Creation-Date: 2017-09-01 20:37+0200\n"
"PO-Revision-Date: 2017-06-21 20:15+0200\n"
"Last-Translator: \n"
"Language: nl\n"
@ -33,7 +33,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.4.0\n"
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1374
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1341
msgid "not installed"
msgstr "niet geïnstalleerd"
@ -77,375 +77,375 @@ msgstr "Stuur naar Kindle:"
msgid "Could not find any formats suitable for sending by email"
msgstr "Kon geen geschikte formaten vinden om te verzenden per email"
#: cps/ub.py:542
#: cps/ub.py:543
msgid "Guest"
msgstr "Gast"
#: cps/web.py:974
#: cps/web.py:953
msgid "Requesting update package"
msgstr "Update pakket wordt aangevraagd"
#: cps/web.py:975
#: cps/web.py:954
msgid "Downloading update package"
msgstr "Update pakket wordt gedownload"
#: cps/web.py:976
#: cps/web.py:955
msgid "Unzipping update package"
msgstr "Update pakket wordt uitgepakt"
#: cps/web.py:977
#: cps/web.py:956
msgid "Files are replaced"
msgstr "Bestanden zijn vervangen"
#: cps/web.py:978
#: cps/web.py:957
msgid "Database connections are closed"
msgstr "Database verbindingen zijn gesloten"
#: cps/web.py:979
#: cps/web.py:958
msgid "Server is stopped"
msgstr "Server is gestopt"
#: cps/web.py:980
#: cps/web.py:959
msgid "Update finished, please press okay and reload page"
msgstr "Update voltooid, klik op ok en herlaad de pagina"
#: cps/web.py:1054
#: cps/web.py:1033
msgid "Recently Added Books"
msgstr ""
#: cps/web.py:1063
#: cps/web.py:1042
msgid "Newest Books"
msgstr ""
#: cps/web.py:1072
#: cps/web.py:1051
msgid "Oldest Books"
msgstr ""
#: cps/web.py:1081
#: cps/web.py:1060
msgid "Books (A-Z)"
msgstr ""
#: cps/web.py:1090
#: cps/web.py:1069
msgid "Books (Z-A)"
msgstr ""
#: cps/web.py:1126
#: cps/web.py:1099
msgid "Hot Books (most downloaded)"
msgstr "Populaire boeken (meeste downloads)"
#: cps/web.py:1136
#: cps/web.py:1109
msgid "Best rated books"
msgstr "Best beoordeelde boeken"
#: cps/templates/index.xml:36 cps/web.py:1145
#: cps/templates/index.xml:35 cps/web.py:1118
msgid "Random Books"
msgstr "Willekeurige boeken"
#: cps/web.py:1161
#: cps/web.py:1127
msgid "Author list"
msgstr "Auteur lijst"
#: cps/web.py:1181 cps/web.py:1212 cps/web.py:1351 cps/web.py:1835
#: cps/web.py:1137 cps/web.py:1193 cps/web.py:1318 cps/web.py:1796
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
"Fout bij openen van het boek. Bestand bestaat niet of is niet "
"toegankelijk:"
#: cps/templates/index.xml:71 cps/web.py:1198
#: cps/templates/index.xml:70 cps/web.py:1179
msgid "Series list"
msgstr "Series lijst"
#: cps/web.py:1210
#: cps/web.py:1191
#, python-format
msgid "Series: %(serie)s"
msgstr "Series: %(serie)s"
#: cps/web.py:1243
#: cps/web.py:1224
msgid "Available languages"
msgstr "Beschikbare talen"
#: cps/web.py:1258
#: cps/web.py:1239
#, python-format
msgid "Language: %(name)s"
msgstr "Taal: %(name)s"
#: cps/templates/index.xml:64 cps/web.py:1274
#: cps/templates/index.xml:63 cps/web.py:1248
msgid "Category list"
msgstr "Categorie lijst"
#: cps/web.py:1286
#: cps/web.py:1260
#, python-format
msgid "Category: %(name)s"
msgstr "Categorie: %(name)s"
#: cps/web.py:1385
#: cps/web.py:1352
msgid "Excecution permissions missing"
msgstr ""
#: cps/web.py:1399
#: cps/web.py:1366
msgid "Statistics"
msgstr "Statistieken"
#: cps/web.py:1563
#: cps/web.py:1530
msgid "Server restarted, please reload page"
msgstr "Server herstart, gelieve de pagina herladen"
#: cps/web.py:1565
#: cps/web.py:1532
msgid "Performing shutdown of server, please close window"
msgstr "Bezig met het stoppen vande server, gelieve venster afsluiten"
#: cps/web.py:1581
#: cps/web.py:1548
msgid "Update done"
msgstr "Update voltooid"
#: cps/web.py:1662 cps/web.py:1675
#: cps/web.py:1623 cps/web.py:1636
msgid "search"
msgstr "zoek"
#: cps/templates/index.xml:43 cps/templates/index.xml:47
#: cps/templates/layout.html:127 cps/web.py:1751
#: cps/templates/index.xml:42 cps/templates/index.xml:46
#: cps/templates/layout.html:127 cps/web.py:1712
msgid "Read Books"
msgstr "Lees Boeken"
#: cps/templates/index.xml:50 cps/templates/index.xml:54
#: cps/templates/layout.html:128 cps/web.py:1754
#: cps/templates/index.xml:49 cps/templates/index.xml:53
#: cps/templates/layout.html:128 cps/web.py:1715
msgid "Unread Books"
msgstr "Ongelezen Boeken"
#: cps/web.py:1821 cps/web.py:1823 cps/web.py:1825 cps/web.py:1832
#: cps/web.py:1782 cps/web.py:1784 cps/web.py:1786 cps/web.py:1793
msgid "Read a Book"
msgstr "Lees een boek"
#: cps/web.py:1888 cps/web.py:2513
#: cps/web.py:1849 cps/web.py:2474
msgid "Please fill out all fields!"
msgstr "Gelieve alle velden in te vullen!"
#: cps/web.py:1889 cps/web.py:1905 cps/web.py:1910 cps/web.py:1912
#: cps/web.py:1850 cps/web.py:1866 cps/web.py:1871 cps/web.py:1873
msgid "register"
msgstr "registreer"
#: cps/web.py:1904
#: cps/web.py:1865
msgid "An unknown error occured. Please try again later."
msgstr "Een onbekende fout deed zich voor. Gelieve later nog eens te proberen."
#: cps/web.py:1909
#: cps/web.py:1870
msgid "This username or email address is already in use."
msgstr "Deze gebruikersnaam of email adres is reeds in gebruik."
#: cps/web.py:1928 cps/web.py:2024
#: cps/web.py:1889 cps/web.py:1985
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "je bent nu ingelogd als: '%(nickname)s'"
#: cps/web.py:1933
#: cps/web.py:1894
msgid "Wrong Username or Password"
msgstr "Verkeerde gebruikersnaam of Wachtwoord"
#: cps/web.py:1939 cps/web.py:1960
#: cps/web.py:1900 cps/web.py:1921
msgid "login"
msgstr "login"
#: cps/web.py:1972 cps/web.py:2003
#: cps/web.py:1933 cps/web.py:1964
msgid "Token not found"
msgstr ""
#: cps/web.py:1980 cps/web.py:2011
#: cps/web.py:1941 cps/web.py:1972
msgid "Token has expired"
msgstr ""
#: cps/web.py:1988
#: cps/web.py:1949
msgid "Success! Please return to your device"
msgstr ""
#: cps/web.py:2038
#: cps/web.py:1999
msgid "Please configure the SMTP mail settings first..."
msgstr "Gelieve de SMTP mail instellingen eerstte configureren..."
#: cps/web.py:2042
#: cps/web.py:2003
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Boek met succes verstuurd naar %(kindlemail)s"
#: cps/web.py:2046
#: cps/web.py:2007
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Er trad een fout op bij het versturen van dit boek: %(res)s"
#: cps/web.py:2048 cps/web.py:2598
#: cps/web.py:2009 cps/web.py:2559
msgid "Please configure your kindle email address first..."
msgstr "Gelieve eerst je kindle email adres te configureren..."
#: cps/web.py:2092
#: cps/web.py:2053
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Boek werd toegevoegd aan boekenplank: %(sname)s"
#: cps/web.py:2127
#: cps/web.py:2088
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Boek werd verwijderd van boekenplank: %(sname)s"
#: cps/web.py:2146 cps/web.py:2170
#: cps/web.py:2107 cps/web.py:2131
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Een boekenplank met de naam '%(title)s' bestaat reeds."
#: cps/web.py:2151
#: cps/web.py:2112
#, python-format
msgid "Shelf %(title)s created"
msgstr "Boekenplank %(title)s aangemaakt"
#: cps/web.py:2153 cps/web.py:2181
#: cps/web.py:2114 cps/web.py:2142
msgid "There was an error"
msgstr "Er deed zich een fout voor"
#: cps/web.py:2154 cps/web.py:2156
#: cps/web.py:2115 cps/web.py:2117
msgid "create a shelf"
msgstr "maak een boekenplank"
#: cps/web.py:2179
#: cps/web.py:2140
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Boekenplank %(title)s gewijzigd"
#: cps/web.py:2182 cps/web.py:2184
#: cps/web.py:2143 cps/web.py:2145
msgid "Edit a shelf"
msgstr "Bewerk een boekenplank"
#: cps/web.py:2204
#: cps/web.py:2165
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Succesvol boekenplank %(name)s gewist"
#: cps/web.py:2226
#: cps/web.py:2187
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Boekenplank: '%(name)s'"
#: cps/web.py:2229
#: cps/web.py:2190
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
#: cps/web.py:2261
#: cps/web.py:2222
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Verander volgorde van Boekenplank: '%(name)s'"
#: cps/web.py:2326
#: cps/web.py:2287
msgid "Found an existing account for this email address."
msgstr "Een bestaand gebruiker gevonden voor dit email adres."
#: cps/web.py:2328 cps/web.py:2332
#: cps/web.py:2289 cps/web.py:2293
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s's profiel"
#: cps/web.py:2329
#: cps/web.py:2290
msgid "Profile updated"
msgstr "Profiel aangepast"
#: cps/web.py:2343
#: cps/web.py:2304
msgid "Admin page"
msgstr "Administratie pagina"
#: cps/web.py:2467
#: cps/web.py:2428
msgid "Calibre-web configuration updated"
msgstr "Calibre-web configuratie aangepast"
#: cps/web.py:2474 cps/web.py:2480 cps/web.py:2494
#: cps/web.py:2435 cps/web.py:2441 cps/web.py:2455
msgid "Basic Configuration"
msgstr "Basis configuratie"
#: cps/web.py:2478
#: cps/web.py:2439
msgid "DB location is not valid, please enter correct path"
msgstr "DB locatie is niet geldig, gelieve het correcte pad in te geven"
#: cps/templates/admin.html:34 cps/web.py:2515 cps/web.py:2568
#: cps/templates/admin.html:34 cps/web.py:2476 cps/web.py:2529
msgid "Add new user"
msgstr "Voeg nieuwe gebruiker toe"
#: cps/web.py:2560
#: cps/web.py:2521
#, python-format
msgid "User '%(user)s' created"
msgstr "Gebruiker '%(user)s' aangemaakt"
#: cps/web.py:2564
#: cps/web.py:2525
msgid "Found an existing account for this email address or nickname."
msgstr "Een bestaand gebruiker gevonden voor dit email adres of gebruikersnaam."
#: cps/web.py:2586
#: cps/web.py:2547
msgid "Mail settings updated"
msgstr "Mail instellingen aangepast"
#: cps/web.py:2593
#: cps/web.py:2554
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Test email met succes verstuurd naar %(kindlemail)s"
#: cps/web.py:2596
#: cps/web.py:2557
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Er trad een fout op met het versturen van de test email: %(res)s"
#: cps/web.py:2600
#: cps/web.py:2561
msgid "E-Mail settings updated"
msgstr "Email instellingen aangepast"
#: cps/web.py:2601
#: cps/web.py:2562
msgid "Edit mail settings"
msgstr "Bewerk mail instellingen"
#: cps/web.py:2630
#: cps/web.py:2591
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Gebruiker '%(nick)s' verwijderd"
#: cps/web.py:2728
#: cps/web.py:2689
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Gebruiker '%(nick)s' aangepast"
#: cps/web.py:2731
#: cps/web.py:2692
msgid "An unknown error occured."
msgstr "Een onbekende fout deed zich voor."
#: cps/web.py:2734
#: cps/web.py:2695
#, python-format
msgid "Edit User %(nick)s"
msgstr "Bewerk gebruiker '%(nick)s'"
#: cps/web.py:2756
#: cps/web.py:2711
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
#: cps/web.py:2771 cps/web.py:2954 cps/web.py:3078
#: cps/web.py:2726 cps/web.py:2898 cps/web.py:3041
msgid "edit metadata"
msgstr "Bewerk metadata"
#: cps/web.py:2783 cps/web.py:2787
#: cps/web.py:2738 cps/web.py:2742
msgid "unknown"
msgstr "onbekend"
#: cps/web.py:2972
#: cps/web.py:2935
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "Het uploaden van bestandsextensie \"%s\" is niet toegestaan op deze server"
#: cps/web.py:2978
#: cps/web.py:2941
msgid "File to be uploaded must have an extension"
msgstr "Up te loaden bestanden dienen een extentie te hebben"
#: cps/web.py:2997
#: cps/web.py:2960
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Het pad %s aanmaken gefaald (Geen toestemming)."
#: cps/web.py:3002
#: cps/web.py:2965
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Bestand %s opslaan gefaald (Geen toestemming)."
#: cps/web.py:3007
#: cps/web.py:2970
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Bestand %s wissen gefaald (Geen toestemming)."
@ -616,6 +616,18 @@ msgstr "Wil je Calibre-web echt stoppen?"
msgid "Updating, please do not reload page"
msgstr "Aan het updaten, gelieve de pagina niet te herladen"
#: cps/templates/author.html:15
msgid "via"
msgstr ""
#: cps/templates/author.html:23
msgid "In Library"
msgstr ""
#: cps/templates/author.html:69
msgid "More by"
msgstr ""
#: cps/templates/book_edit.html:16
msgid "Delete Book"
msgstr "Wis boek"
@ -624,12 +636,13 @@ msgstr "Wis boek"
msgid "Book Title"
msgstr "Boek titel"
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:188
#: cps/templates/search_form.html:10
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:208
#: cps/templates/book_edit.html:226 cps/templates/search_form.html:10
msgid "Author"
msgstr "Auteur"
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:190
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:213
#: cps/templates/book_edit.html:228
msgid "Description"
msgstr "Omschrijving"
@ -712,35 +725,35 @@ msgstr "Zoek voor zoekwoord"
msgid "Go!"
msgstr "Start!"
#: cps/templates/book_edit.html:168
#: cps/templates/book_edit.html:171
msgid "Click the cover to load metadata to the form"
msgstr "Klik op de omslag om de metatadata in het formulier te laden"
#: cps/templates/book_edit.html:172 cps/templates/book_edit.html:185
#: cps/templates/book_edit.html:183 cps/templates/book_edit.html:223
msgid "Loading..."
msgstr "Aan het laden..."
#: cps/templates/book_edit.html:175 cps/templates/layout.html:199
#: cps/templates/book_edit.html:188 cps/templates/layout.html:199
msgid "Close"
msgstr "Sluit"
#: cps/templates/book_edit.html:186
msgid "Search error!"
msgstr "Zoek fout!"
#: cps/templates/book_edit.html:187
msgid "No Result! Please try anonther keyword."
msgstr "Geen resultaat! Gelieve een ander zoekwoord proberen"
#: cps/templates/book_edit.html:189 cps/templates/detail.html:125
#: cps/templates/search_form.html:14
#: cps/templates/book_edit.html:210 cps/templates/book_edit.html:227
#: cps/templates/detail.html:125 cps/templates/search_form.html:14
msgid "Publisher"
msgstr "Uitgever"
#: cps/templates/book_edit.html:191
#: cps/templates/book_edit.html:215 cps/templates/book_edit.html:229
msgid "Source"
msgstr "Bron"
#: cps/templates/book_edit.html:224
msgid "Search error!"
msgstr "Zoek fout!"
#: cps/templates/book_edit.html:225
msgid "No Result! Please try anonther keyword."
msgstr "Geen resultaat! Gelieve een ander zoekwoord proberen"
#: cps/templates/config_edit.html:7
msgid "Location of Calibre database"
msgstr "Locatie van de Calibre database"
@ -933,6 +946,11 @@ msgstr "Bewaar instellingen en stuur test email"
msgid "Next"
msgstr "Volgende"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
#: cps/templates/layout.html:40 cps/templates/layout.html:41
msgid "Search"
msgstr "Zoek"
#: cps/templates/index.html:5
msgid "Discover (Random Books)"
msgstr "Ontdek (Willekeurige Boeken)"
@ -941,52 +959,47 @@ msgstr "Ontdek (Willekeurige Boeken)"
msgid "Start"
msgstr "Start"
#: cps/templates/index.xml:7 cps/templates/layout.html:40
#: cps/templates/layout.html:41
msgid "Search"
msgstr "Zoek"
#: cps/templates/index.xml:15 cps/templates/layout.html:121
#: cps/templates/index.xml:14 cps/templates/layout.html:121
msgid "Hot Books"
msgstr "Populaire Boeken"
#: cps/templates/index.xml:19
#: cps/templates/index.xml:18
msgid "Popular publications from this catalog based on Downloads."
msgstr "Populaire publicaties van deze cataloog gebaseerd op Downloads."
#: cps/templates/index.xml:22 cps/templates/layout.html:124
#: cps/templates/index.xml:21 cps/templates/layout.html:124
msgid "Best rated Books"
msgstr "Best beoordeeld"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:25
msgid "Popular publications from this catalog based on Rating."
msgstr "Populaire publicaties van deze cataloog gebaseerd op Beoordeling."
#: cps/templates/index.xml:29
#: cps/templates/index.xml:28
msgid "New Books"
msgstr "Nieuwe Boeken"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:32
msgid "The latest Books"
msgstr "Recentste boeken"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:39
msgid "Show Random Books"
msgstr "Toon Willekeurige Boeken"
#: cps/templates/index.xml:57 cps/templates/layout.html:139
#: cps/templates/index.xml:56 cps/templates/layout.html:139
msgid "Authors"
msgstr "Auteurs"
#: cps/templates/index.xml:61
#: cps/templates/index.xml:60
msgid "Books ordered by Author"
msgstr "Boeken gesorteerd op Auteur"
#: cps/templates/index.xml:68
#: cps/templates/index.xml:67
msgid "Books ordered by category"
msgstr "Boeken gesorteerd op Categorie"
#: cps/templates/index.xml:75
#: cps/templates/index.xml:74
msgid "Books ordered by series"
msgstr "Boeken gesorteerd op Serie"
@ -1146,7 +1159,7 @@ msgid "No Results for:"
msgstr "Geen resultaat voor:"
#: cps/templates/search.html:7
msgid "Please try a diffrent Search"
msgid "Please try a different search"
msgstr "Gelieve een ander zoekwoord proberen"
#: cps/templates/search.html:9

@ -12,7 +12,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre Web - polski (POT: 2017-04-11 22:51)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2017-08-12 18:55+0200\n"
"POT-Creation-Date: 2017-09-01 20:37+0200\n"
"PO-Revision-Date: 2017-04-11 22:51+0200\n"
"Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n"
"Language: pl\n"
@ -24,7 +24,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.4.0\n"
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1374
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1341
msgid "not installed"
msgstr "nie zainstalowane"
@ -70,373 +70,373 @@ msgstr ""
"Nie można znaleźć żadnych formatów przystosowane do wysyłania pocztą "
"e-mail"
#: cps/ub.py:542
#: cps/ub.py:543
msgid "Guest"
msgstr "Gość"
#: cps/web.py:974
#: cps/web.py:953
msgid "Requesting update package"
msgstr "Żądanie o pakiet aktualizacji"
#: cps/web.py:975
#: cps/web.py:954
msgid "Downloading update package"
msgstr "Pobieranie pakietu aktualizacji"
#: cps/web.py:976
#: cps/web.py:955
msgid "Unzipping update package"
msgstr "Rozpakowywanie pakietu aktualizacji"
#: cps/web.py:977
#: cps/web.py:956
msgid "Files are replaced"
msgstr "Pliki zostały zastąpione"
#: cps/web.py:978
#: cps/web.py:957
msgid "Database connections are closed"
msgstr "Połączenia z bazą danych zostały zakończone"
#: cps/web.py:979
#: cps/web.py:958
msgid "Server is stopped"
msgstr "Serwer jest zatrzymany"
#: cps/web.py:980
#: cps/web.py:959
msgid "Update finished, please press okay and reload page"
msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę"
#: cps/web.py:1054
#: cps/web.py:1033
msgid "Recently Added Books"
msgstr ""
#: cps/web.py:1063
#: cps/web.py:1042
msgid "Newest Books"
msgstr ""
#: cps/web.py:1072
#: cps/web.py:1051
msgid "Oldest Books"
msgstr ""
#: cps/web.py:1081
#: cps/web.py:1060
msgid "Books (A-Z)"
msgstr ""
#: cps/web.py:1090
#: cps/web.py:1069
msgid "Books (Z-A)"
msgstr ""
#: cps/web.py:1126
#: cps/web.py:1099
msgid "Hot Books (most downloaded)"
msgstr "Najpopularniejsze książki (najczęściej pobierane)"
#: cps/web.py:1136
#: cps/web.py:1109
msgid "Best rated books"
msgstr "Najlepiej oceniane książki"
#: cps/templates/index.xml:36 cps/web.py:1145
#: cps/templates/index.xml:35 cps/web.py:1118
msgid "Random Books"
msgstr "Losowe książki"
#: cps/web.py:1161
#: cps/web.py:1127
msgid "Author list"
msgstr "Lista autorów"
#: cps/web.py:1181 cps/web.py:1212 cps/web.py:1351 cps/web.py:1835
#: cps/web.py:1137 cps/web.py:1193 cps/web.py:1318 cps/web.py:1796
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:"
#: cps/templates/index.xml:71 cps/web.py:1198
#: cps/templates/index.xml:70 cps/web.py:1179
msgid "Series list"
msgstr "Lista serii"
#: cps/web.py:1210
#: cps/web.py:1191
#, python-format
msgid "Series: %(serie)s"
msgstr "Seria: %(serie)s"
#: cps/web.py:1243
#: cps/web.py:1224
msgid "Available languages"
msgstr "Dostępne języki"
#: cps/web.py:1258
#: cps/web.py:1239
#, python-format
msgid "Language: %(name)s"
msgstr "Język: %(name)s"
#: cps/templates/index.xml:64 cps/web.py:1274
#: cps/templates/index.xml:63 cps/web.py:1248
msgid "Category list"
msgstr "Lista kategorii"
#: cps/web.py:1286
#: cps/web.py:1260
#, python-format
msgid "Category: %(name)s"
msgstr "Kategoria: %(name)s"
#: cps/web.py:1385
#: cps/web.py:1352
msgid "Excecution permissions missing"
msgstr ""
#: cps/web.py:1399
#: cps/web.py:1366
msgid "Statistics"
msgstr "Statystyki"
#: cps/web.py:1563
#: cps/web.py:1530
msgid "Server restarted, please reload page"
msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę"
#: cps/web.py:1565
#: cps/web.py:1532
msgid "Performing shutdown of server, please close window"
msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno"
#: cps/web.py:1581
#: cps/web.py:1548
msgid "Update done"
msgstr "Aktualizacja zakończona"
#: cps/web.py:1662 cps/web.py:1675
#: cps/web.py:1623 cps/web.py:1636
msgid "search"
msgstr "szukaj"
#: cps/templates/index.xml:43 cps/templates/index.xml:47
#: cps/templates/layout.html:127 cps/web.py:1751
#: cps/templates/index.xml:42 cps/templates/index.xml:46
#: cps/templates/layout.html:127 cps/web.py:1712
msgid "Read Books"
msgstr "Przeczytane książki"
#: cps/templates/index.xml:50 cps/templates/index.xml:54
#: cps/templates/layout.html:128 cps/web.py:1754
#: cps/templates/index.xml:49 cps/templates/index.xml:53
#: cps/templates/layout.html:128 cps/web.py:1715
msgid "Unread Books"
msgstr "Nieprzeczytane książki"
#: cps/web.py:1821 cps/web.py:1823 cps/web.py:1825 cps/web.py:1832
#: cps/web.py:1782 cps/web.py:1784 cps/web.py:1786 cps/web.py:1793
msgid "Read a Book"
msgstr "Czytaj książkę"
#: cps/web.py:1888 cps/web.py:2513
#: cps/web.py:1849 cps/web.py:2474
msgid "Please fill out all fields!"
msgstr "Proszę wypełnić wszystkie pola!"
#: cps/web.py:1889 cps/web.py:1905 cps/web.py:1910 cps/web.py:1912
#: cps/web.py:1850 cps/web.py:1866 cps/web.py:1871 cps/web.py:1873
msgid "register"
msgstr "rejestracja"
#: cps/web.py:1904
#: cps/web.py:1865
msgid "An unknown error occured. Please try again later."
msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później."
#: cps/web.py:1909
#: cps/web.py:1870
msgid "This username or email address is already in use."
msgstr "Nazwa użytkownika lub adres e-mail jest już w użyciu."
#: cps/web.py:1928 cps/web.py:2024
#: cps/web.py:1889 cps/web.py:1985
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Zalogowałeś się jako: '%(nickname)s'"
#: cps/web.py:1933
#: cps/web.py:1894
msgid "Wrong Username or Password"
msgstr "Błędna nazwa użytkownika lub hasło"
#: cps/web.py:1939 cps/web.py:1960
#: cps/web.py:1900 cps/web.py:1921
msgid "login"
msgstr "logowanie"
#: cps/web.py:1972 cps/web.py:2003
#: cps/web.py:1933 cps/web.py:1964
msgid "Token not found"
msgstr ""
#: cps/web.py:1980 cps/web.py:2011
#: cps/web.py:1941 cps/web.py:1972
msgid "Token has expired"
msgstr ""
#: cps/web.py:1988
#: cps/web.py:1949
msgid "Success! Please return to your device"
msgstr ""
#: cps/web.py:2038
#: cps/web.py:1999
msgid "Please configure the SMTP mail settings first..."
msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..."
#: cps/web.py:2042
#: cps/web.py:2003
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Książka została pomyślnie wysłana do %(kindlemail)s"
#: cps/web.py:2046
#: cps/web.py:2007
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s"
#: cps/web.py:2048 cps/web.py:2598
#: cps/web.py:2009 cps/web.py:2559
msgid "Please configure your kindle email address first..."
msgstr "Proszę najpierw skonfigurować adres e-mail swojego kindla..."
#: cps/web.py:2092
#: cps/web.py:2053
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Książka została dodana do półki: %(sname)s"
#: cps/web.py:2127
#: cps/web.py:2088
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Książka została usunięta z półki: %(sname)s"
#: cps/web.py:2146 cps/web.py:2170
#: cps/web.py:2107 cps/web.py:2131
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Półka o nazwie '%(title)s' już istnieje."
#: cps/web.py:2151
#: cps/web.py:2112
#, python-format
msgid "Shelf %(title)s created"
msgstr "Półka %(title)s została utworzona"
#: cps/web.py:2153 cps/web.py:2181
#: cps/web.py:2114 cps/web.py:2142
msgid "There was an error"
msgstr "Wystąpił błąd"
#: cps/web.py:2154 cps/web.py:2156
#: cps/web.py:2115 cps/web.py:2117
msgid "create a shelf"
msgstr "utwórz półkę"
#: cps/web.py:2179
#: cps/web.py:2140
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Półka %(title)s została zmieniona"
#: cps/web.py:2182 cps/web.py:2184
#: cps/web.py:2143 cps/web.py:2145
msgid "Edit a shelf"
msgstr "Edytuj półkę"
#: cps/web.py:2204
#: cps/web.py:2165
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "pomyślnie usunięto półkę %(name)s"
#: cps/web.py:2226
#: cps/web.py:2187
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Półka: '%(name)s'"
#: cps/web.py:2229
#: cps/web.py:2190
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
#: cps/web.py:2261
#: cps/web.py:2222
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Zmieniono kolejność półki: '%(name)s'"
#: cps/web.py:2326
#: cps/web.py:2287
msgid "Found an existing account for this email address."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail."
#: cps/web.py:2328 cps/web.py:2332
#: cps/web.py:2289 cps/web.py:2293
#, python-format
msgid "%(name)s's profile"
msgstr "Profil użytkownika %(name)s"
#: cps/web.py:2329
#: cps/web.py:2290
msgid "Profile updated"
msgstr "Zaktualizowano profil"
#: cps/web.py:2343
#: cps/web.py:2304
msgid "Admin page"
msgstr "Portal administracyjny"
#: cps/web.py:2467
#: cps/web.py:2428
msgid "Calibre-web configuration updated"
msgstr "Konfiguracja Calibre-web została zaktualizowana"
#: cps/web.py:2474 cps/web.py:2480 cps/web.py:2494
#: cps/web.py:2435 cps/web.py:2441 cps/web.py:2455
msgid "Basic Configuration"
msgstr "Podstawowa konfiguracja"
#: cps/web.py:2478
#: cps/web.py:2439
msgid "DB location is not valid, please enter correct path"
msgstr "Lokalizacja bazy danych jest nieprawidłowa, wpisz poprawną ścieżkę"
#: cps/templates/admin.html:34 cps/web.py:2515 cps/web.py:2568
#: cps/templates/admin.html:34 cps/web.py:2476 cps/web.py:2529
msgid "Add new user"
msgstr "Dodaj nowego użytkownika"
#: cps/web.py:2560
#: cps/web.py:2521
#, python-format
msgid "User '%(user)s' created"
msgstr "Użytkownik '%(user)s' został utworzony"
#: cps/web.py:2564
#: cps/web.py:2525
msgid "Found an existing account for this email address or nickname."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub nazwy użytkownika."
#: cps/web.py:2586
#: cps/web.py:2547
msgid "Mail settings updated"
msgstr "Zaktualizowano ustawienia poczty e-mail"
#: cps/web.py:2593
#: cps/web.py:2554
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Testowy e-mail został pomyślnie wysłany do %(kindlemail)s"
#: cps/web.py:2596
#: cps/web.py:2557
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Wystąpił błąd podczas wysyłania testowej wiadomości e-mail: %(res)s"
#: cps/web.py:2600
#: cps/web.py:2561
msgid "E-Mail settings updated"
msgstr "Zaktualizowano ustawienia e-mail"
#: cps/web.py:2601
#: cps/web.py:2562
msgid "Edit mail settings"
msgstr "Edytuj ustawienia poczty e-mail"
#: cps/web.py:2630
#: cps/web.py:2591
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Użytkownik '%(nick)s' został usunięty"
#: cps/web.py:2728
#: cps/web.py:2689
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Użytkownik '%(nick)s' został zaktualizowany"
#: cps/web.py:2731
#: cps/web.py:2692
msgid "An unknown error occured."
msgstr "Wystąpił nieznany błąd."
#: cps/web.py:2734
#: cps/web.py:2695
#, python-format
msgid "Edit User %(nick)s"
msgstr "Edytuj użytkownika %(nick)s"
#: cps/web.py:2756
#: cps/web.py:2711
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
#: cps/web.py:2771 cps/web.py:2954 cps/web.py:3078
#: cps/web.py:2726 cps/web.py:2898 cps/web.py:3041
msgid "edit metadata"
msgstr "edytuj metadane"
#: cps/web.py:2783 cps/web.py:2787
#: cps/web.py:2738 cps/web.py:2742
msgid "unknown"
msgstr ""
#: cps/web.py:2972
#: cps/web.py:2935
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "Rozszerzenie pliku \"%s\" nie jest dozwolone do przesłania na ten serwer"
#: cps/web.py:2978
#: cps/web.py:2941
msgid "File to be uploaded must have an extension"
msgstr "Plik do przesłania musi mieć rozszerzenie"
#: cps/web.py:2997
#: cps/web.py:2960
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Nie udało się utworzyć łącza %s (Odmowa dostępu)."
#: cps/web.py:3002
#: cps/web.py:2965
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Nie można przechowywać pliku %s (Odmowa dostępu)."
#: cps/web.py:3007
#: cps/web.py:2970
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Nie udało się usunąć pliku %s (Odmowa dostępu)."
@ -607,6 +607,18 @@ msgstr "Na pewno chcesz zatrzymać Calibre Web?"
msgid "Updating, please do not reload page"
msgstr "Aktualizowanie, proszę nie odświeżać strony"
#: cps/templates/author.html:15
msgid "via"
msgstr ""
#: cps/templates/author.html:23
msgid "In Library"
msgstr ""
#: cps/templates/author.html:69
msgid "More by"
msgstr ""
#: cps/templates/book_edit.html:16
msgid "Delete Book"
msgstr ""
@ -615,12 +627,13 @@ msgstr ""
msgid "Book Title"
msgstr "Tytuł książki"
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:188
#: cps/templates/search_form.html:10
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:208
#: cps/templates/book_edit.html:226 cps/templates/search_form.html:10
msgid "Author"
msgstr "Autor"
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:190
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:213
#: cps/templates/book_edit.html:228
msgid "Description"
msgstr "Opis"
@ -703,35 +716,35 @@ msgstr " Szukaj słowa kluczowego "
msgid "Go!"
msgstr "Idź!"
#: cps/templates/book_edit.html:168
#: cps/templates/book_edit.html:171
msgid "Click the cover to load metadata to the form"
msgstr "Kliknij okładkę, aby załadować metadane do formularza"
#: cps/templates/book_edit.html:172 cps/templates/book_edit.html:185
#: cps/templates/book_edit.html:183 cps/templates/book_edit.html:223
msgid "Loading..."
msgstr "Ładowanie..."
#: cps/templates/book_edit.html:175 cps/templates/layout.html:199
#: cps/templates/book_edit.html:188 cps/templates/layout.html:199
msgid "Close"
msgstr "Zamknij"
#: cps/templates/book_edit.html:186
msgid "Search error!"
msgstr "Błąd wyszukiwania!"
#: cps/templates/book_edit.html:187
msgid "No Result! Please try anonther keyword."
msgstr "Brak wyników! Spróbuj innego słowa kluczowego."
#: cps/templates/book_edit.html:189 cps/templates/detail.html:125
#: cps/templates/search_form.html:14
#: cps/templates/book_edit.html:210 cps/templates/book_edit.html:227
#: cps/templates/detail.html:125 cps/templates/search_form.html:14
msgid "Publisher"
msgstr "Wydawca"
#: cps/templates/book_edit.html:191
#: cps/templates/book_edit.html:215 cps/templates/book_edit.html:229
msgid "Source"
msgstr "Źródło"
#: cps/templates/book_edit.html:224
msgid "Search error!"
msgstr "Błąd wyszukiwania!"
#: cps/templates/book_edit.html:225
msgid "No Result! Please try anonther keyword."
msgstr "Brak wyników! Spróbuj innego słowa kluczowego."
#: cps/templates/config_edit.html:7
msgid "Location of Calibre database"
msgstr "Lokalizacja bazy danych Calibre"
@ -925,6 +938,11 @@ msgstr "Zapisz ustawienia i wyślij testową wiadomość e-mail"
msgid "Next"
msgstr "Następne"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
#: cps/templates/layout.html:40 cps/templates/layout.html:41
msgid "Search"
msgstr "Szukaj"
#: cps/templates/index.html:5
msgid "Discover (Random Books)"
msgstr "Odkrywaj (losowe książki)"
@ -933,52 +951,47 @@ msgstr "Odkrywaj (losowe książki)"
msgid "Start"
msgstr "Rozpocznij"
#: cps/templates/index.xml:7 cps/templates/layout.html:40
#: cps/templates/layout.html:41
msgid "Search"
msgstr "Szukaj"
#: cps/templates/index.xml:15 cps/templates/layout.html:121
#: cps/templates/index.xml:14 cps/templates/layout.html:121
msgid "Hot Books"
msgstr "Najpopularniejsze książki"
#: cps/templates/index.xml:19
#: cps/templates/index.xml:18
msgid "Popular publications from this catalog based on Downloads."
msgstr "Popularne publikacje z tego katalogu bazujące na pobranych."
#: cps/templates/index.xml:22 cps/templates/layout.html:124
#: cps/templates/index.xml:21 cps/templates/layout.html:124
msgid "Best rated Books"
msgstr "Najlepiej ocenione książki"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:25
msgid "Popular publications from this catalog based on Rating."
msgstr "Popularne publikacje z tego katalogu bazujące na ocenach."
#: cps/templates/index.xml:29
#: cps/templates/index.xml:28
msgid "New Books"
msgstr "Nowe książki"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:32
msgid "The latest Books"
msgstr "Ostatnie książki"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:39
msgid "Show Random Books"
msgstr "Pokazuj losowe książki"
#: cps/templates/index.xml:57 cps/templates/layout.html:139
#: cps/templates/index.xml:56 cps/templates/layout.html:139
msgid "Authors"
msgstr "Autorzy"
#: cps/templates/index.xml:61
#: cps/templates/index.xml:60
msgid "Books ordered by Author"
msgstr "Książki sortowane według autorów"
#: cps/templates/index.xml:68
#: cps/templates/index.xml:67
msgid "Books ordered by category"
msgstr "Książki sortowane według kategorii"
#: cps/templates/index.xml:75
#: cps/templates/index.xml:74
msgid "Books ordered by series"
msgstr "Książki sortowane według serii"
@ -1139,7 +1152,7 @@ msgid "No Results for:"
msgstr "Brak wyników dla:"
#: cps/templates/search.html:7
msgid "Please try a diffrent Search"
msgid "Please try a different search"
msgstr "Proszę wypróbować podobne wyszukiwanie"
#: cps/templates/search.html:9

@ -14,7 +14,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2017-08-12 18:55+0200\n"
"POT-Creation-Date: 2017-09-01 20:37+0200\n"
"PO-Revision-Date: 2017-04-30 00:47+0300\n"
"Last-Translator: Pavel Korovin <p@tristero.se>\n"
"Language: ru\n"
@ -26,7 +26,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.4.0\n"
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1374
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1341
msgid "not installed"
msgstr "Отсутствует"
@ -70,373 +70,373 @@ msgstr "Отправить на Kindle"
msgid "Could not find any formats suitable for sending by email"
msgstr "Невозоможно найти формат, подходящий для отправки по email"
#: cps/ub.py:542
#: cps/ub.py:543
msgid "Guest"
msgstr "Гость"
#: cps/web.py:974
#: cps/web.py:953
msgid "Requesting update package"
msgstr "Проверка обновлений"
#: cps/web.py:975
#: cps/web.py:954
msgid "Downloading update package"
msgstr "Загрузка обновлений"
#: cps/web.py:976
#: cps/web.py:955
msgid "Unzipping update package"
msgstr "Распаковка обновлений"
#: cps/web.py:977
#: cps/web.py:956
msgid "Files are replaced"
msgstr "Файлы заменены"
#: cps/web.py:978
#: cps/web.py:957
msgid "Database connections are closed"
msgstr "Соеднинения с базой данных закрыты"
#: cps/web.py:979
#: cps/web.py:958
msgid "Server is stopped"
msgstr "Сервер остановлен"
#: cps/web.py:980
#: cps/web.py:959
msgid "Update finished, please press okay and reload page"
msgstr "Обновления установлены, нажмите okay и перезагрузите страницу"
#: cps/web.py:1054
#: cps/web.py:1033
msgid "Recently Added Books"
msgstr ""
#: cps/web.py:1063
#: cps/web.py:1042
msgid "Newest Books"
msgstr ""
#: cps/web.py:1072
#: cps/web.py:1051
msgid "Oldest Books"
msgstr ""
#: cps/web.py:1081
#: cps/web.py:1060
msgid "Books (A-Z)"
msgstr ""
#: cps/web.py:1090
#: cps/web.py:1069
msgid "Books (Z-A)"
msgstr ""
#: cps/web.py:1126
#: cps/web.py:1099
msgid "Hot Books (most downloaded)"
msgstr "Популярные книги (часто загружаемые)"
#: cps/web.py:1136
#: cps/web.py:1109
msgid "Best rated books"
msgstr "Книги с наивысшим рейтингом"
#: cps/templates/index.xml:36 cps/web.py:1145
#: cps/templates/index.xml:35 cps/web.py:1118
msgid "Random Books"
msgstr "Случайный выбор"
#: cps/web.py:1161
#: cps/web.py:1127
msgid "Author list"
msgstr "Авторы"
#: cps/web.py:1181 cps/web.py:1212 cps/web.py:1351 cps/web.py:1835
#: cps/web.py:1137 cps/web.py:1193 cps/web.py:1318 cps/web.py:1796
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Невозможно открыть книгу. Файл не существует или недоступен."
#: cps/templates/index.xml:71 cps/web.py:1198
#: cps/templates/index.xml:70 cps/web.py:1179
msgid "Series list"
msgstr "Серии"
#: cps/web.py:1210
#: cps/web.py:1191
#, python-format
msgid "Series: %(serie)s"
msgstr "Серии: %(serie)s"
#: cps/web.py:1243
#: cps/web.py:1224
msgid "Available languages"
msgstr "Языки"
#: cps/web.py:1258
#: cps/web.py:1239
#, python-format
msgid "Language: %(name)s"
msgstr "Язык: %(name)s"
#: cps/templates/index.xml:64 cps/web.py:1274
#: cps/templates/index.xml:63 cps/web.py:1248
msgid "Category list"
msgstr "Категории"
#: cps/web.py:1286
#: cps/web.py:1260
#, python-format
msgid "Category: %(name)s"
msgstr "Категория: %(name)s"
#: cps/web.py:1385
#: cps/web.py:1352
msgid "Excecution permissions missing"
msgstr ""
#: cps/web.py:1399
#: cps/web.py:1366
msgid "Statistics"
msgstr "Статистика"
#: cps/web.py:1563
#: cps/web.py:1530
msgid "Server restarted, please reload page"
msgstr "Сервер перезагружен, пожалуйста, перезагрузите страницу"
#: cps/web.py:1565
#: cps/web.py:1532
msgid "Performing shutdown of server, please close window"
msgstr "Производится остановка сервера, пожалуйста, закройте окно"
#: cps/web.py:1581
#: cps/web.py:1548
msgid "Update done"
msgstr "Обновление закончено"
#: cps/web.py:1662 cps/web.py:1675
#: cps/web.py:1623 cps/web.py:1636
msgid "search"
msgstr "поиск"
#: cps/templates/index.xml:43 cps/templates/index.xml:47
#: cps/templates/layout.html:127 cps/web.py:1751
#: cps/templates/index.xml:42 cps/templates/index.xml:46
#: cps/templates/layout.html:127 cps/web.py:1712
msgid "Read Books"
msgstr "Прочитанные"
#: cps/templates/index.xml:50 cps/templates/index.xml:54
#: cps/templates/layout.html:128 cps/web.py:1754
#: cps/templates/index.xml:49 cps/templates/index.xml:53
#: cps/templates/layout.html:128 cps/web.py:1715
msgid "Unread Books"
msgstr "Непрочитанные"
#: cps/web.py:1821 cps/web.py:1823 cps/web.py:1825 cps/web.py:1832
#: cps/web.py:1782 cps/web.py:1784 cps/web.py:1786 cps/web.py:1793
msgid "Read a Book"
msgstr "Читать книгу"
#: cps/web.py:1888 cps/web.py:2513
#: cps/web.py:1849 cps/web.py:2474
msgid "Please fill out all fields!"
msgstr "Пожалуйста, заполните все поля!"
#: cps/web.py:1889 cps/web.py:1905 cps/web.py:1910 cps/web.py:1912
#: cps/web.py:1850 cps/web.py:1866 cps/web.py:1871 cps/web.py:1873
msgid "register"
msgstr "зарегистрироваться"
#: cps/web.py:1904
#: cps/web.py:1865
msgid "An unknown error occured. Please try again later."
msgstr "Неизвестная ошибка. Пожалуйста, попробуйте позже."
#: cps/web.py:1909
#: cps/web.py:1870
msgid "This username or email address is already in use."
msgstr "Имя пользователя или адрес эл. почты уже используется"
#: cps/web.py:1928 cps/web.py:2024
#: cps/web.py:1889 cps/web.py:1985
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Вы вошли как пользователь '%(nickname)s'"
#: cps/web.py:1933
#: cps/web.py:1894
msgid "Wrong Username or Password"
msgstr "Ошибка в имени пользователя или пароле"
#: cps/web.py:1939 cps/web.py:1960
#: cps/web.py:1900 cps/web.py:1921
msgid "login"
msgstr "войти"
#: cps/web.py:1972 cps/web.py:2003
#: cps/web.py:1933 cps/web.py:1964
msgid "Token not found"
msgstr ""
#: cps/web.py:1980 cps/web.py:2011
#: cps/web.py:1941 cps/web.py:1972
msgid "Token has expired"
msgstr ""
#: cps/web.py:1988
#: cps/web.py:1949
msgid "Success! Please return to your device"
msgstr ""
#: cps/web.py:2038
#: cps/web.py:1999
msgid "Please configure the SMTP mail settings first..."
msgstr "Пожалуйста, сначала сконфигурируйте параметры SMTP"
#: cps/web.py:2042
#: cps/web.py:2003
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Книга успешно отправлена на %(kindlemail)s"
#: cps/web.py:2046
#: cps/web.py:2007
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "Ошибка при отправке книги: %(res)s"
#: cps/web.py:2048 cps/web.py:2598
#: cps/web.py:2009 cps/web.py:2559
msgid "Please configure your kindle email address first..."
msgstr "Пожалуйста, сначала укажите ваш kindle email..."
#: cps/web.py:2092
#: cps/web.py:2053
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "Книга добавлена на книжную полку: %(sname)s"
#: cps/web.py:2127
#: cps/web.py:2088
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "Книга удалена с книжной полки: %(sname)s"
#: cps/web.py:2146 cps/web.py:2170
#: cps/web.py:2107 cps/web.py:2131
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "Книжкная полка с названием '%(title)s' уже существует."
#: cps/web.py:2151
#: cps/web.py:2112
#, python-format
msgid "Shelf %(title)s created"
msgstr "Создана книжная полка %(title)s"
#: cps/web.py:2153 cps/web.py:2181
#: cps/web.py:2114 cps/web.py:2142
msgid "There was an error"
msgstr "Произошла ошибка"
#: cps/web.py:2154 cps/web.py:2156
#: cps/web.py:2115 cps/web.py:2117
msgid "create a shelf"
msgstr "создать книжную полку"
#: cps/web.py:2179
#: cps/web.py:2140
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Книжная полка %(title)s изменена"
#: cps/web.py:2182 cps/web.py:2184
#: cps/web.py:2143 cps/web.py:2145
msgid "Edit a shelf"
msgstr "Изменить книжную полку"
#: cps/web.py:2204
#: cps/web.py:2165
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Книжная полка %(name)s удалена"
#: cps/web.py:2226
#: cps/web.py:2187
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Книжная полка: '%(name)s'"
#: cps/web.py:2229
#: cps/web.py:2190
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
#: cps/web.py:2261
#: cps/web.py:2222
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Изменить расположение книжной полки '%(name)s'"
#: cps/web.py:2326
#: cps/web.py:2287
msgid "Found an existing account for this email address."
msgstr "Найдена учётная запись для для данного адреса email."
#: cps/web.py:2328 cps/web.py:2332
#: cps/web.py:2289 cps/web.py:2293
#, python-format
msgid "%(name)s's profile"
msgstr "Профиль %(name)s"
#: cps/web.py:2329
#: cps/web.py:2290
msgid "Profile updated"
msgstr "Профиль обновлён"
#: cps/web.py:2343
#: cps/web.py:2304
msgid "Admin page"
msgstr "Администрирование"
#: cps/web.py:2467
#: cps/web.py:2428
msgid "Calibre-web configuration updated"
msgstr "Конфигурация Calibre-web обновлена"
#: cps/web.py:2474 cps/web.py:2480 cps/web.py:2494
#: cps/web.py:2435 cps/web.py:2441 cps/web.py:2455
msgid "Basic Configuration"
msgstr "Настройки сервера"
#: cps/web.py:2478
#: cps/web.py:2439
msgid "DB location is not valid, please enter correct path"
msgstr "Неверный путь к фалу БД, пожалуйста, укажите правильное расположение БД"
#: cps/templates/admin.html:34 cps/web.py:2515 cps/web.py:2568
#: cps/templates/admin.html:34 cps/web.py:2476 cps/web.py:2529
msgid "Add new user"
msgstr "Добавить пользователя"
#: cps/web.py:2560
#: cps/web.py:2521
#, python-format
msgid "User '%(user)s' created"
msgstr "Пользователь '%(user)s' добавлен"
#: cps/web.py:2564
#: cps/web.py:2525
msgid "Found an existing account for this email address or nickname."
msgstr "Для указанного адреса или имени найдена существующая учётная запись."
#: cps/web.py:2586
#: cps/web.py:2547
msgid "Mail settings updated"
msgstr "Настройки почты изменены"
#: cps/web.py:2593
#: cps/web.py:2554
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Тестовое сообщение успешно отправлено на адрес %(kindlemail)s"
#: cps/web.py:2596
#: cps/web.py:2557
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Ошибка отправки тестового сообщения: %(res)s"
#: cps/web.py:2600
#: cps/web.py:2561
msgid "E-Mail settings updated"
msgstr "Обновлены настройки e-mail"
#: cps/web.py:2601
#: cps/web.py:2562
msgid "Edit mail settings"
msgstr "Изменить почтовые настройки"
#: cps/web.py:2630
#: cps/web.py:2591
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Пользователь '%(nick)s' удалён"
#: cps/web.py:2728
#: cps/web.py:2689
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Пользователь '%(nick)s' обновлён"
#: cps/web.py:2731
#: cps/web.py:2692
msgid "An unknown error occured."
msgstr "Произошла неизвестная ошибка."
#: cps/web.py:2734
#: cps/web.py:2695
#, python-format
msgid "Edit User %(nick)s"
msgstr "Изменить пользователя %(nick)s"
#: cps/web.py:2756
#: cps/web.py:2711
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
#: cps/web.py:2771 cps/web.py:2954 cps/web.py:3078
#: cps/web.py:2726 cps/web.py:2898 cps/web.py:3041
msgid "edit metadata"
msgstr "изменить метаданные"
#: cps/web.py:2783 cps/web.py:2787
#: cps/web.py:2738 cps/web.py:2742
msgid "unknown"
msgstr "неизвестно"
#: cps/web.py:2972
#: cps/web.py:2935
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "Запрещена загрузка файлов с расширением \"%s\""
#: cps/web.py:2978
#: cps/web.py:2941
msgid "File to be uploaded must have an extension"
msgstr "Загружаемый файл должен иметь расширение"
#: cps/web.py:2997
#: cps/web.py:2960
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Ошибка при создании пути %s (доступ запрещён)"
#: cps/web.py:3002
#: cps/web.py:2965
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Ошибка записи файоа %s (доступ запрещён)"
#: cps/web.py:3007
#: cps/web.py:2970
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Ошибка удаления файла %s (доступ запрещён)"
@ -607,6 +607,18 @@ msgstr "Вы действительно хотите остановить Calibr
msgid "Updating, please do not reload page"
msgstr "Установка обновлений, пожалуйста, не обновляйте страницу."
#: cps/templates/author.html:15
msgid "via"
msgstr ""
#: cps/templates/author.html:23
msgid "In Library"
msgstr ""
#: cps/templates/author.html:69
msgid "More by"
msgstr ""
#: cps/templates/book_edit.html:16
msgid "Delete Book"
msgstr "Удалить книгу"
@ -615,12 +627,13 @@ msgstr "Удалить книгу"
msgid "Book Title"
msgstr "Название"
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:188
#: cps/templates/search_form.html:10
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:208
#: cps/templates/book_edit.html:226 cps/templates/search_form.html:10
msgid "Author"
msgstr "Автор"
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:190
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:213
#: cps/templates/book_edit.html:228
msgid "Description"
msgstr "Описание"
@ -703,35 +716,35 @@ msgstr " Поиск по ключевому слову"
msgid "Go!"
msgstr "Искать"
#: cps/templates/book_edit.html:168
#: cps/templates/book_edit.html:171
msgid "Click the cover to load metadata to the form"
msgstr "Нажмите на обложку, чтобы получить метаданные"
#: cps/templates/book_edit.html:172 cps/templates/book_edit.html:185
#: cps/templates/book_edit.html:183 cps/templates/book_edit.html:223
msgid "Loading..."
msgstr "Загрузка..."
#: cps/templates/book_edit.html:175 cps/templates/layout.html:199
#: cps/templates/book_edit.html:188 cps/templates/layout.html:199
msgid "Close"
msgstr "Закрыть"
#: cps/templates/book_edit.html:186
msgid "Search error!"
msgstr "Ошибка поиска!"
#: cps/templates/book_edit.html:187
msgid "No Result! Please try anonther keyword."
msgstr "Нет результатов. Пожалуйста, попробуйте другое ключевое слово"
#: cps/templates/book_edit.html:189 cps/templates/detail.html:125
#: cps/templates/search_form.html:14
#: cps/templates/book_edit.html:210 cps/templates/book_edit.html:227
#: cps/templates/detail.html:125 cps/templates/search_form.html:14
msgid "Publisher"
msgstr "Издатель"
#: cps/templates/book_edit.html:191
#: cps/templates/book_edit.html:215 cps/templates/book_edit.html:229
msgid "Source"
msgstr "Источник"
#: cps/templates/book_edit.html:224
msgid "Search error!"
msgstr "Ошибка поиска!"
#: cps/templates/book_edit.html:225
msgid "No Result! Please try anonther keyword."
msgstr "Нет результатов. Пожалуйста, попробуйте другое ключевое слово"
#: cps/templates/config_edit.html:7
msgid "Location of Calibre database"
msgstr "Расположение БД Calibre"
@ -922,6 +935,11 @@ msgstr "Сохранить настройки и отправить тестов
msgid "Next"
msgstr "Дальше"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
#: cps/templates/layout.html:40 cps/templates/layout.html:41
msgid "Search"
msgstr "Поиск"
#: cps/templates/index.html:5
msgid "Discover (Random Books)"
msgstr "Обзор (случайные книги)"
@ -930,52 +948,47 @@ msgstr "Обзор (случайные книги)"
msgid "Start"
msgstr "Старт"
#: cps/templates/index.xml:7 cps/templates/layout.html:40
#: cps/templates/layout.html:41
msgid "Search"
msgstr "Поиск"
#: cps/templates/index.xml:15 cps/templates/layout.html:121
#: cps/templates/index.xml:14 cps/templates/layout.html:121
msgid "Hot Books"
msgstr "Популярные книги"
#: cps/templates/index.xml:19
#: cps/templates/index.xml:18
msgid "Popular publications from this catalog based on Downloads."
msgstr "Популярные книги в этом каталоге, на основе количества скачиваний"
#: cps/templates/index.xml:22 cps/templates/layout.html:124
#: cps/templates/index.xml:21 cps/templates/layout.html:124
msgid "Best rated Books"
msgstr "Книги с наилучшим рейтингом"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:25
msgid "Popular publications from this catalog based on Rating."
msgstr "Популярные книги из этого каталога на основании рейтинга"
#: cps/templates/index.xml:29
#: cps/templates/index.xml:28
msgid "New Books"
msgstr "Новые"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:32
msgid "The latest Books"
msgstr "Последние поступления"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:39
msgid "Show Random Books"
msgstr "Показывать случайные книги"
#: cps/templates/index.xml:57 cps/templates/layout.html:139
#: cps/templates/index.xml:56 cps/templates/layout.html:139
msgid "Authors"
msgstr "Авторы"
#: cps/templates/index.xml:61
#: cps/templates/index.xml:60
msgid "Books ordered by Author"
msgstr "Книги, отсортированные по автору"
#: cps/templates/index.xml:68
#: cps/templates/index.xml:67
msgid "Books ordered by category"
msgstr "Книги, отсортированные по категории"
#: cps/templates/index.xml:75
#: cps/templates/index.xml:74
msgid "Books ordered by series"
msgstr "Книги, отсортированные по серии"
@ -1135,8 +1148,8 @@ msgid "No Results for:"
msgstr "Ничего не найдено по запросу:"
#: cps/templates/search.html:7
msgid "Please try a diffrent Search"
msgstr "Попробуйте изменить критерии поиска"
msgid "Please try a different search"
msgstr "Попробуйте изменить критерии поиск"
#: cps/templates/search.html:9
msgid "Results for:"

@ -15,7 +15,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2017-08-12 18:55+0200\n"
"POT-Creation-Date: 2017-09-01 20:37+0200\n"
"PO-Revision-Date: 2017-01-06 17:00+0000\n"
"Last-Translator: dalin <dalin.lin@gmail.com>\n"
"Language: zh_Hans_CN\n"
@ -26,7 +26,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.4.0\n"
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1374
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1341
msgid "not installed"
msgstr "未安装"
@ -70,373 +70,373 @@ msgstr "发送到Kindle"
msgid "Could not find any formats suitable for sending by email"
msgstr "无法找到适合邮件发送的格式"
#: cps/ub.py:542
#: cps/ub.py:543
msgid "Guest"
msgstr "游客"
#: cps/web.py:974
#: cps/web.py:953
msgid "Requesting update package"
msgstr "正在请求更新包"
#: cps/web.py:975
#: cps/web.py:954
msgid "Downloading update package"
msgstr "正在下载更新包"
#: cps/web.py:976
#: cps/web.py:955
msgid "Unzipping update package"
msgstr "正在解压更新包"
#: cps/web.py:977
#: cps/web.py:956
msgid "Files are replaced"
msgstr "文件已替换"
#: cps/web.py:978
#: cps/web.py:957
msgid "Database connections are closed"
msgstr "数据库连接已关闭"
#: cps/web.py:979
#: cps/web.py:958
msgid "Server is stopped"
msgstr "服务器已停止"
#: cps/web.py:980
#: cps/web.py:959
msgid "Update finished, please press okay and reload page"
msgstr "更新完成,请按确定并刷新页面"
#: cps/web.py:1054
#: cps/web.py:1033
msgid "Recently Added Books"
msgstr "最近添加的书籍"
#: cps/web.py:1063
#: cps/web.py:1042
msgid "Newest Books"
msgstr "最新书籍"
#: cps/web.py:1072
#: cps/web.py:1051
msgid "Oldest Books"
msgstr "最旧书籍"
#: cps/web.py:1081
#: cps/web.py:1060
msgid "Books (A-Z)"
msgstr "书籍 (A-Z)"
#: cps/web.py:1090
#: cps/web.py:1069
msgid "Books (Z-A)"
msgstr "书籍 (Z-A)"
#: cps/web.py:1126
#: cps/web.py:1099
msgid "Hot Books (most downloaded)"
msgstr "热门书籍(最多下载)"
#: cps/web.py:1136
#: cps/web.py:1109
msgid "Best rated books"
msgstr "最高评分书籍"
#: cps/templates/index.xml:36 cps/web.py:1145
#: cps/templates/index.xml:35 cps/web.py:1118
msgid "Random Books"
msgstr "随机书籍"
#: cps/web.py:1161
#: cps/web.py:1127
msgid "Author list"
msgstr "作者列表"
#: cps/web.py:1181 cps/web.py:1212 cps/web.py:1351 cps/web.py:1835
#: cps/web.py:1137 cps/web.py:1193 cps/web.py:1318 cps/web.py:1796
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
#: cps/templates/index.xml:71 cps/web.py:1198
#: cps/templates/index.xml:70 cps/web.py:1179
msgid "Series list"
msgstr "丛书列表"
#: cps/web.py:1210
#: cps/web.py:1191
#, python-format
msgid "Series: %(serie)s"
msgstr "丛书: %(serie)s"
#: cps/web.py:1243
#: cps/web.py:1224
msgid "Available languages"
msgstr "可用语言"
#: cps/web.py:1258
#: cps/web.py:1239
#, python-format
msgid "Language: %(name)s"
msgstr "语言: %(name)s"
#: cps/templates/index.xml:64 cps/web.py:1274
#: cps/templates/index.xml:63 cps/web.py:1248
msgid "Category list"
msgstr "分类列表"
#: cps/web.py:1286
#: cps/web.py:1260
#, python-format
msgid "Category: %(name)s"
msgstr "分类: %(name)s"
#: cps/web.py:1385
#: cps/web.py:1352
msgid "Excecution permissions missing"
msgstr "可执行权限缺失"
#: cps/web.py:1399
#: cps/web.py:1366
msgid "Statistics"
msgstr "统计"
#: cps/web.py:1563
#: cps/web.py:1530
msgid "Server restarted, please reload page"
msgstr "服务器已重启,请刷新页面"
#: cps/web.py:1565
#: cps/web.py:1532
msgid "Performing shutdown of server, please close window"
msgstr "正在关闭服务器,请关闭窗口"
#: cps/web.py:1581
#: cps/web.py:1548
msgid "Update done"
msgstr "更新完成"
#: cps/web.py:1662 cps/web.py:1675
#: cps/web.py:1623 cps/web.py:1636
msgid "search"
msgstr "搜索"
#: cps/templates/index.xml:43 cps/templates/index.xml:47
#: cps/templates/layout.html:127 cps/web.py:1751
#: cps/templates/index.xml:42 cps/templates/index.xml:46
#: cps/templates/layout.html:127 cps/web.py:1712
msgid "Read Books"
msgstr "已读书籍"
#: cps/templates/index.xml:50 cps/templates/index.xml:54
#: cps/templates/layout.html:128 cps/web.py:1754
#: cps/templates/index.xml:49 cps/templates/index.xml:53
#: cps/templates/layout.html:128 cps/web.py:1715
msgid "Unread Books"
msgstr "未读书籍"
#: cps/web.py:1821 cps/web.py:1823 cps/web.py:1825 cps/web.py:1832
#: cps/web.py:1782 cps/web.py:1784 cps/web.py:1786 cps/web.py:1793
msgid "Read a Book"
msgstr "阅读一本书"
#: cps/web.py:1888 cps/web.py:2513
#: cps/web.py:1849 cps/web.py:2474
msgid "Please fill out all fields!"
msgstr "请填写所有字段"
#: cps/web.py:1889 cps/web.py:1905 cps/web.py:1910 cps/web.py:1912
#: cps/web.py:1850 cps/web.py:1866 cps/web.py:1871 cps/web.py:1873
msgid "register"
msgstr "注册"
#: cps/web.py:1904
#: cps/web.py:1865
msgid "An unknown error occured. Please try again later."
msgstr "发生一个未知错误。请稍后再试。"
#: cps/web.py:1909
#: cps/web.py:1870
msgid "This username or email address is already in use."
msgstr "此用户名或邮箱已被使用。"
#: cps/web.py:1928 cps/web.py:2024
#: cps/web.py:1889 cps/web.py:1985
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "您现在已以'%(nickname)s'身份登录"
#: cps/web.py:1933
#: cps/web.py:1894
msgid "Wrong Username or Password"
msgstr "用户名或密码错误"
#: cps/web.py:1939 cps/web.py:1960
#: cps/web.py:1900 cps/web.py:1921
msgid "login"
msgstr "登录"
#: cps/web.py:1972 cps/web.py:2003
#: cps/web.py:1933 cps/web.py:1964
msgid "Token not found"
msgstr "找不到Token"
#: cps/web.py:1980 cps/web.py:2011
#: cps/web.py:1941 cps/web.py:1972
msgid "Token has expired"
msgstr "Token已过期"
#: cps/web.py:1988
#: cps/web.py:1949
msgid "Success! Please return to your device"
msgstr "成功!请返回您的设备"
#: cps/web.py:2038
#: cps/web.py:1999
msgid "Please configure the SMTP mail settings first..."
msgstr "请先配置SMTP邮箱..."
#: cps/web.py:2042
#: cps/web.py:2003
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "此书已被成功发给 %(kindlemail)s"
#: cps/web.py:2046
#: cps/web.py:2007
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "发送这本书的时候出现错误: %(res)s"
#: cps/web.py:2048 cps/web.py:2598
#: cps/web.py:2009 cps/web.py:2559
msgid "Please configure your kindle email address first..."
msgstr "请先配置您的kindle电子邮箱地址..."
#: cps/web.py:2092
#: cps/web.py:2053
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "此书已被添加到书架: %(sname)s"
#: cps/web.py:2127
#: cps/web.py:2088
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "此书已从书架 %(sname)s 中删除"
#: cps/web.py:2146 cps/web.py:2170
#: cps/web.py:2107 cps/web.py:2131
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "已存在书架 '%(title)s'。"
#: cps/web.py:2151
#: cps/web.py:2112
#, python-format
msgid "Shelf %(title)s created"
msgstr "书架 %(title)s 已被创建"
#: cps/web.py:2153 cps/web.py:2181
#: cps/web.py:2114 cps/web.py:2142
msgid "There was an error"
msgstr "发生错误"
#: cps/web.py:2154 cps/web.py:2156
#: cps/web.py:2115 cps/web.py:2117
msgid "create a shelf"
msgstr "创建书架"
#: cps/web.py:2179
#: cps/web.py:2140
#, python-format
msgid "Shelf %(title)s changed"
msgstr "书架 %(title)s 已被修改"
#: cps/web.py:2182 cps/web.py:2184
#: cps/web.py:2143 cps/web.py:2145
msgid "Edit a shelf"
msgstr "编辑书架"
#: cps/web.py:2204
#: cps/web.py:2165
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "成功删除书架 %(name)s"
#: cps/web.py:2226
#: cps/web.py:2187
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "书架: '%(name)s'"
#: cps/web.py:2229
#: cps/web.py:2190
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr "打开书架出错。书架不存在或不可访问"
#: cps/web.py:2261
#: cps/web.py:2222
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "修改书架 '%(name)s' 顺序"
#: cps/web.py:2326
#: cps/web.py:2287
msgid "Found an existing account for this email address."
msgstr "找到已使用此邮箱的账号。"
#: cps/web.py:2328 cps/web.py:2332
#: cps/web.py:2289 cps/web.py:2293
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s 的资料"
#: cps/web.py:2329
#: cps/web.py:2290
msgid "Profile updated"
msgstr "资料已更新"
#: cps/web.py:2343
#: cps/web.py:2304
msgid "Admin page"
msgstr "管理页"
#: cps/web.py:2467
#: cps/web.py:2428
msgid "Calibre-web configuration updated"
msgstr "Calibre-web配置已更新"
#: cps/web.py:2474 cps/web.py:2480 cps/web.py:2494
#: cps/web.py:2435 cps/web.py:2441 cps/web.py:2455
msgid "Basic Configuration"
msgstr "基本配置"
#: cps/web.py:2478
#: cps/web.py:2439
msgid "DB location is not valid, please enter correct path"
msgstr "DB位置无效请输入正确路径"
#: cps/templates/admin.html:34 cps/web.py:2515 cps/web.py:2568
#: cps/templates/admin.html:34 cps/web.py:2476 cps/web.py:2529
msgid "Add new user"
msgstr "添加新用户"
#: cps/web.py:2560
#: cps/web.py:2521
#, python-format
msgid "User '%(user)s' created"
msgstr "用户 '%(user)s' 已被创建"
#: cps/web.py:2564
#: cps/web.py:2525
msgid "Found an existing account for this email address or nickname."
msgstr "已存在使用此邮箱或昵称的账号。"
#: cps/web.py:2586
#: cps/web.py:2547
msgid "Mail settings updated"
msgstr "邮箱设置已更新"
#: cps/web.py:2593
#: cps/web.py:2554
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "测试邮件已成功发送到 %(kindlemail)s"
#: cps/web.py:2596
#: cps/web.py:2557
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "发送测试邮件时发生错误: %(res)s"
#: cps/web.py:2600
#: cps/web.py:2561
msgid "E-Mail settings updated"
msgstr "E-Mail 设置已更新"
#: cps/web.py:2601
#: cps/web.py:2562
msgid "Edit mail settings"
msgstr "编辑邮箱设置"
#: cps/web.py:2630
#: cps/web.py:2591
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "用户 '%(nick)s' 已被删除"
#: cps/web.py:2728
#: cps/web.py:2689
#, python-format
msgid "User '%(nick)s' updated"
msgstr "用户 '%(nick)s' 已被更新"
#: cps/web.py:2731
#: cps/web.py:2692
msgid "An unknown error occured."
msgstr "发生未知错误。"
#: cps/web.py:2734
#: cps/web.py:2695
#, python-format
msgid "Edit User %(nick)s"
msgstr "编辑用户 %(nick)s"
#: cps/web.py:2756
#: cps/web.py:2711
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr "打开电子书出错。文件不存在或不可访问"
#: cps/web.py:2771 cps/web.py:2954 cps/web.py:3078
#: cps/web.py:2726 cps/web.py:2898 cps/web.py:3041
msgid "edit metadata"
msgstr "编辑元数据"
#: cps/web.py:2783 cps/web.py:2787
#: cps/web.py:2738 cps/web.py:2742
msgid "unknown"
msgstr "未知"
#: cps/web.py:2972
#: cps/web.py:2935
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr "不能上传后缀为 \"%s\" 的文件到此服务器"
#: cps/web.py:2978
#: cps/web.py:2941
msgid "File to be uploaded must have an extension"
msgstr "要上传的文件必须有一个后缀"
#: cps/web.py:2997
#: cps/web.py:2960
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "创建路径 %s 失败(权限拒绝)。"
#: cps/web.py:3002
#: cps/web.py:2965
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "存储文件 %s 失败(权限拒绝)。"
#: cps/web.py:3007
#: cps/web.py:2970
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "删除文件 %s 失败(权限拒绝)。"
@ -607,6 +607,18 @@ msgstr "您确定要关闭 Calibre-web 吗?"
msgid "Updating, please do not reload page"
msgstr "正在更新,请不要刷新页面"
#: cps/templates/author.html:15
msgid "via"
msgstr ""
#: cps/templates/author.html:23
msgid "In Library"
msgstr ""
#: cps/templates/author.html:69
msgid "More by"
msgstr ""
#: cps/templates/book_edit.html:16
msgid "Delete Book"
msgstr "删除书籍"
@ -615,12 +627,13 @@ msgstr "删除书籍"
msgid "Book Title"
msgstr "书名"
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:188
#: cps/templates/search_form.html:10
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:208
#: cps/templates/book_edit.html:226 cps/templates/search_form.html:10
msgid "Author"
msgstr "作者"
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:190
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:213
#: cps/templates/book_edit.html:228
msgid "Description"
msgstr "简介"
@ -703,35 +716,35 @@ msgstr "搜索关键字"
msgid "Go!"
msgstr "走起!"
#: cps/templates/book_edit.html:168
#: cps/templates/book_edit.html:171
msgid "Click the cover to load metadata to the form"
msgstr "点击封面加载元数据到表单"
#: cps/templates/book_edit.html:172 cps/templates/book_edit.html:185
#: cps/templates/book_edit.html:183 cps/templates/book_edit.html:223
msgid "Loading..."
msgstr "加载中..."
#: cps/templates/book_edit.html:175 cps/templates/layout.html:199
#: cps/templates/book_edit.html:188 cps/templates/layout.html:199
msgid "Close"
msgstr "关闭"
#: cps/templates/book_edit.html:186
msgid "Search error!"
msgstr "搜索错误"
#: cps/templates/book_edit.html:187
msgid "No Result! Please try anonther keyword."
msgstr "没有结果!请尝试别的关键字."
#: cps/templates/book_edit.html:189 cps/templates/detail.html:125
#: cps/templates/search_form.html:14
#: cps/templates/book_edit.html:210 cps/templates/book_edit.html:227
#: cps/templates/detail.html:125 cps/templates/search_form.html:14
msgid "Publisher"
msgstr "出版社"
#: cps/templates/book_edit.html:191
#: cps/templates/book_edit.html:215 cps/templates/book_edit.html:229
msgid "Source"
msgstr "来源"
#: cps/templates/book_edit.html:224
msgid "Search error!"
msgstr "搜索错误"
#: cps/templates/book_edit.html:225
msgid "No Result! Please try anonther keyword."
msgstr "没有结果!请尝试别的关键字."
#: cps/templates/config_edit.html:7
msgid "Location of Calibre database"
msgstr "Calibre 数据库位置"
@ -922,6 +935,11 @@ msgstr "保存设置并发送测试邮件"
msgid "Next"
msgstr "下一个"
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
#: cps/templates/layout.html:40 cps/templates/layout.html:41
msgid "Search"
msgstr "搜索"
#: cps/templates/index.html:5
msgid "Discover (Random Books)"
msgstr "发现(随机书籍)"
@ -930,52 +948,47 @@ msgstr "发现(随机书籍)"
msgid "Start"
msgstr "开始"
#: cps/templates/index.xml:7 cps/templates/layout.html:40
#: cps/templates/layout.html:41
msgid "Search"
msgstr "搜索"
#: cps/templates/index.xml:15 cps/templates/layout.html:121
#: cps/templates/index.xml:14 cps/templates/layout.html:121
msgid "Hot Books"
msgstr "热门书籍"
#: cps/templates/index.xml:19
#: cps/templates/index.xml:18
msgid "Popular publications from this catalog based on Downloads."
msgstr "基于下载数的热门书籍"
#: cps/templates/index.xml:22 cps/templates/layout.html:124
#: cps/templates/index.xml:21 cps/templates/layout.html:124
msgid "Best rated Books"
msgstr "最高评分书籍"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:25
msgid "Popular publications from this catalog based on Rating."
msgstr "基于评分的热门书籍"
#: cps/templates/index.xml:29
#: cps/templates/index.xml:28
msgid "New Books"
msgstr "新书"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:32
msgid "The latest Books"
msgstr "最新书籍"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:39
msgid "Show Random Books"
msgstr "显示随机书籍"
#: cps/templates/index.xml:57 cps/templates/layout.html:139
#: cps/templates/index.xml:56 cps/templates/layout.html:139
msgid "Authors"
msgstr "作者"
#: cps/templates/index.xml:61
#: cps/templates/index.xml:60
msgid "Books ordered by Author"
msgstr "书籍按作者排序"
#: cps/templates/index.xml:68
#: cps/templates/index.xml:67
msgid "Books ordered by category"
msgstr "书籍按分类排序"
#: cps/templates/index.xml:75
#: cps/templates/index.xml:74
msgid "Books ordered by series"
msgstr "书籍按丛书排序"
@ -1135,7 +1148,7 @@ msgid "No Results for:"
msgstr "找不到结果:"
#: cps/templates/search.html:7
msgid "Please try a diffrent Search"
msgid "Please try a different search"
msgstr "请尝试别的关键字"
#: cps/templates/search.html:9

@ -8,11 +8,22 @@ except ImportError:
gdrive_support = False
try:
from goodreads import client as gr_client
from goodreads.client import GoodreadsClient
goodreads_support = True
except ImportError:
goodreads_support = False
try:
import Levenshtein
levenshtein_support = True
except ImportError:
levenshtein_support = False
try:
from functools import reduce
except ImportError:
pass # We're not using Python 3
import mimetypes
import logging
from logging.handlers import RotatingFileHandler
@ -21,6 +32,7 @@ from flask import (Flask, render_template, request, Response, redirect,
url_for, send_from_directory, make_response, g, flash,
abort, Markup, stream_with_context)
from flask import __version__ as flaskVersion
import cache_buster
import ub
from ub import config
import helper
@ -200,6 +212,7 @@ mimetypes.add_type('image/vnd.djvu', '.djvu')
app = (Flask(__name__))
app.wsgi_app = ReverseProxied(app.wsgi_app)
cache_buster.init_cache_busting(app)
gevent_server = None
@ -499,24 +512,29 @@ def edit_required(f):
return inner
# Fill indexpage with all requested data from database
def fill_indexpage(page, database, db_filter, order):
# Language and content filters
def common_filters():
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
lang_filter = true()
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
return and_(lang_filter, ~content_rating_filter)
# Fill indexpage with all requested data from database
def fill_indexpage(page, database, db_filter, order):
if current_user.show_detail_random():
random = db.session.query(db.Books).filter(lang_filter).filter(~content_rating_filter)\
random = db.session.query(db.Books).filter(common_filters())\
.order_by(func.random()).limit(config.config_random_books)
else:
random = false
off = int(int(config.config_books_per_page) * (page - 1))
pagination = Pagination(page, config.config_books_per_page,
len(db.session.query(database)
.filter(db_filter).filter(lang_filter).filter(~content_rating_filter).all()))
entries = db.session.query(database).filter(db_filter).filter(lang_filter).filter(~content_rating_filter)\
.filter(db_filter).filter(common_filters()).all()))
entries = db.session.query(database).filter(db_filter).filter(common_filters())\
.order_by(order).offset(off).limit(config.config_books_per_page)
return entries, random, pagination
@ -638,19 +656,13 @@ def feed_normal_search():
def feed_search(term):
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
if term:
entries = db.session.query(db.Books).filter(db.or_(db.Books.tags.any(db.Tags.name.like("%" + term + "%")),
db.Books.series.any(db.Series.name.like("%" + term + "%")),
db.Books.authors.any(db.Authors.name.like("%" + term + "%")),
db.Books.publishers.any(db.Publishers.name.like("%" + term + "%")),
db.Books.title.like("%" + term + "%")))\
.filter(lang_filter).filter(~content_rating_filter).all()
.filter(common_filters()).all()
entriescount = len(entries) if len(entries) > 0 else 1
pagination = Pagination(1, entriescount, entriescount)
xml = render_title_template('feed.xml', searchterm=term, entries=entries, pagination=pagination)
@ -678,13 +690,7 @@ def feed_new():
@app.route("/opds/discover")
@requires_basic_auth_if_no_ano
def feed_discover():
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
entries = db.session.query(db.Books).filter(lang_filter).filter(~content_rating_filter).order_by(func.random())\
entries = db.session.query(db.Books).filter(common_filters()).order_by(func.random())\
.limit(config.config_books_per_page)
pagination = Pagination(1, config.config_books_per_page, int(config.config_books_per_page))
xml = render_title_template('feed.xml', entries=entries, pagination=pagination)
@ -713,12 +719,6 @@ def feed_hot():
off = request.args.get("offset")
if not off:
off = 0
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
all_books = ub.session.query(ub.Downloads, ub.func.count(ub.Downloads.book_id)).order_by(
ub.func.count(ub.Downloads.book_id).desc()).group_by(ub.Downloads.book_id)
hot_books = all_books.offset(off).limit(config.config_books_per_page)
@ -727,8 +727,8 @@ def feed_hot():
downloadBook = db.session.query(db.Books).filter(db.Books.id == book.Downloads.book_id).first()
if downloadBook:
entries.append(
db.session.query(db.Books).filter(lang_filter).filter(~content_rating_filter)
.filter(db.Books.id == book.Downloads.book_id).first()
db.session.query(db.Books).filter(common_filters())
.filter(db.Books.id == book.Downloads.book_id).first()
)
else:
ub.session.query(ub.Downloads).filter(book.Downloads.book_id == ub.Downloads.book_id).delete()
@ -747,14 +747,7 @@ def feed_authorindex():
off = request.args.get("offset")
if not off:
off = 0
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
entries = db.session.query(db.Authors).join(db.books_authors_link).join(db.Books)\
.filter(lang_filter).filter(~content_rating_filter)\
entries = db.session.query(db.Authors).join(db.books_authors_link).join(db.Books).filter(common_filters())\
.group_by('books_authors_link.author').order_by(db.Authors.sort).limit(config.config_books_per_page).offset(off)
pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
len(db.session.query(db.Authors).all()))
@ -784,14 +777,7 @@ def feed_categoryindex():
off = request.args.get("offset")
if not off:
off = 0
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
entries = db.session.query(db.Tags).join(db.books_tags_link).join(db.Books)\
.filter(lang_filter).filter(~content_rating_filter)\
entries = db.session.query(db.Tags).join(db.books_tags_link).join(db.Books).filter(common_filters())\
.group_by('books_tags_link.tag').order_by(db.Tags.name).offset(off).limit(config.config_books_per_page)
pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
len(db.session.query(db.Tags).all()))
@ -821,14 +807,7 @@ def feed_seriesindex():
off = request.args.get("offset")
if not off:
off = 0
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
entries = db.session.query(db.Series).join(db.books_series_link).join(db.Books)\
.filter(lang_filter).filter(~content_rating_filter)\
entries = db.session.query(db.Series).join(db.books_series_link).join(db.Books).filter(common_filters())\
.group_by('books_series_link.series').order_by(db.Series.sort).offset(off).all()
pagination = Pagination((int(off) / (int(config.config_books_per_page)) + 1), config.config_books_per_page,
len(db.session.query(db.Series).all()))
@ -1094,14 +1073,8 @@ def titles_descending(page):
@app.route('/hot/page/<int:page>')
@login_required_if_no_ano
def hot_books(page):
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
if current_user.show_detail_random():
random = db.session.query(db.Books).filter(lang_filter).filter(~content_rating_filter)\
random = db.session.query(db.Books).filter(common_filters())\
.order_by(func.random()).limit(config.config_random_books)
else:
random = false
@ -1111,12 +1084,9 @@ def hot_books(page):
hot_books = all_books.offset(off).limit(config.config_books_per_page)
entries = list()
for book in hot_books:
downloadBook = db.session.query(db.Books).filter(db.Books.id == book.Downloads.book_id).first()
downloadBook = db.session.query(db.Books).filter(common_filters()).filter(db.Books.id == book.Downloads.book_id).first()
if downloadBook:
entries.append(
db.session.query(db.Books).filter(lang_filter).filter(~content_rating_filter)
.filter(db.Books.id == book.Downloads.book_id).first()
)
entries.append(downloadBook)
else:
ub.session.query(ub.Downloads).filter(book.Downloads.book_id == ub.Downloads.book_id).delete()
ub.session.commit()
@ -1148,15 +1118,8 @@ def discover(page):
@app.route("/author")
@login_required_if_no_ano
def author_list():
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
entries = db.session.query(db.Authors, func.count('books_authors_link.book').label('count'))\
.join(db.books_authors_link).join(db.Books)\
.filter(lang_filter).filter(~content_rating_filter)\
.join(db.books_authors_link).join(db.Books).filter(common_filters())\
.group_by('books_authors_link.author').order_by(db.Authors.sort).all()
return render_title_template('list.html', entries=entries, folder='author', title=_(u"Author list"))
@ -1167,33 +1130,48 @@ def author_list():
def author(book_id, page):
entries, random, pagination = fill_indexpage(page, db.Books, db.Books.authors.any(db.Authors.id == book_id),
db.Books.timestamp.desc())
if entries:
name = db.session.query(db.Authors).filter(db.Authors.id == book_id).first().name
author_info = None
if goodreads_support and config.config_use_goodreads:
gc = gr_client.GoodreadsClient(config.config_goodreads_api_key, config.config_goodreads_api_secret)
author_info = gc.find_author(author_name=name)
return render_title_template('author.html', entries=entries, pagination=pagination,
title=name, author=author_info)
else:
if entries is None:
flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error")
return redirect(url_for("index"))
name = db.session.query(db.Authors).filter(db.Authors.id == book_id).first().name
author_info = None
other_books = []
if goodreads_support and config.config_use_goodreads:
gc = GoodreadsClient(config.config_goodreads_api_key, config.config_goodreads_api_secret)
author_info = gc.find_author(author_name=name)
other_books = get_unique_other_books(entries.all(), author_info.books)
return render_title_template('author.html', entries=entries, pagination=pagination,
title=name, author=author_info, other_books=other_books)
def get_unique_other_books(library_books, author_books):
# Get all identifiers (ISBN, Goodreads, etc) and filter author's books by that list so we show fewer duplicates
# Note: Not all images will be shown, even though they're available on Goodreads.com.
# See https://www.goodreads.com/topic/show/18213769-goodreads-book-images
identifiers = reduce(lambda acc, book: acc + map(lambda identifier: identifier.val, book.identifiers), library_books, [])
other_books = filter(lambda book: book.isbn not in identifiers and book.gid["#text"] not in identifiers, author_books)
# Fuzzy match book titles
if levenshtein_support:
library_titles = reduce(lambda acc, book: acc + [book.title], library_books, [])
other_books = filter(lambda author_book: not filter(
lambda library_book:
Levenshtein.ratio(re.sub(r"\(.*\)", "", author_book.title), library_book) > 0.7, # Remove items in parentheses before comparing
library_titles
), other_books)
return other_books
@app.route("/series")
@login_required_if_no_ano
def series_list():
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
entries = db.session.query(db.Series, func.count('books_series_link.book').label('count'))\
.join(db.books_series_link).join(db.Books)\
.filter(lang_filter).filter(~content_rating_filter)\
.join(db.books_series_link).join(db.Books).filter(common_filters())\
.group_by('books_series_link.series').order_by(db.Series.sort).all()
return render_title_template('list.html', entries=entries, folder='series', title=_(u"Series list"))
@ -1261,15 +1239,8 @@ def language(name, page):
@app.route("/category")
@login_required_if_no_ano
def category_list():
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
entries = db.session.query(db.Tags, func.count('books_tags_link.book').label('count'))\
.join(db.books_tags_link).join(db.Books)\
.filter(lang_filter).filter(~content_rating_filter)\
.join(db.books_tags_link).join(db.Books).filter(common_filters())\
.group_by('books_tags_link.tag').all()
return render_title_template('list.html', entries=entries, folder='category', title=_(u"Category list"))
@ -1307,14 +1278,7 @@ def toggle_read(book_id):
@app.route("/book/<int:book_id>")
@login_required_if_no_ano
def show_book(book_id):
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
entries = db.session.query(db.Books)\
.filter(db.Books.id == book_id).filter(lang_filter).filter(~content_rating_filter).first()
entries = db.session.query(db.Books).filter(db.Books.id == book_id).filter(common_filters()).first()
if entries:
for index in range(0, len(entries.languages)):
try:
@ -1587,18 +1551,12 @@ def update():
def search():
term = request.args.get("query").strip()
if term:
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
entries = db.session.query(db.Books).filter(db.or_(db.Books.tags.any(db.Tags.name.like("%" + term + "%")),
db.Books.series.any(db.Series.name.like("%" + term + "%")),
db.Books.authors.any(db.Authors.name.like("%" + term + "%")),
db.Books.publishers.any(db.Publishers.name.like("%" + term + "%")),
db.Books.title.like("%" + term + "%")))\
.filter(lang_filter).filter(~content_rating_filter).all()
.filter(common_filters()).all()
return render_title_template('search.html', searchterm=term, entries=entries)
else:
return render_title_template('search.html', searchterm="")
@ -2741,14 +2699,8 @@ def edit_book(book_id):
# create the function for sorting...
db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort)
cc = db.session.query(db.Custom_Columns).filter(db.Custom_Columns.datatype.notin_(db.cc_exceptions)).all()
if current_user.filter_language() != "all":
lang_filter = db.Books.languages.any(db.Languages.lang_code == current_user.filter_language())
else:
lang_filter = True
content_rating_filter = false() if current_user.mature_content else \
db.Books.tags.any(db.Tags.name.in_(config.mature_content_tags()))
book = db.session.query(db.Books)\
.filter(db.Books.id == book_id).filter(lang_filter).filter(~content_rating_filter).first()
.filter(db.Books.id == book_id).filter(common_filters()).first()
author_names = []
# Book not found
@ -2992,8 +2944,8 @@ def upload():
tags = meta.tags
series = meta.series
series_index = meta.series_id
title_dir = helper.get_valid_filename(title, False)
author_dir = helper.get_valid_filename(author, False)
title_dir = helper.get_valid_filename(title)
author_dir = helper.get_valid_filename(author)
data_name = title_dir
filepath = config.config_calibre_dir + os.sep + author_dir + os.sep + title_dir
saved_filename = filepath + os.sep + data_name + meta.extension.lower()

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2017-08-12 18:55+0200\n"
"POT-Creation-Date: 2017-09-01 20:37+0200\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"
@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.4.0\n"
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1374
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1341
msgid "not installed"
msgstr ""
@ -61,373 +61,373 @@ msgstr ""
msgid "Could not find any formats suitable for sending by email"
msgstr ""
#: cps/ub.py:542
#: cps/ub.py:543
msgid "Guest"
msgstr ""
#: cps/web.py:974
#: cps/web.py:953
msgid "Requesting update package"
msgstr ""
#: cps/web.py:975
#: cps/web.py:954
msgid "Downloading update package"
msgstr ""
#: cps/web.py:976
#: cps/web.py:955
msgid "Unzipping update package"
msgstr ""
#: cps/web.py:977
#: cps/web.py:956
msgid "Files are replaced"
msgstr ""
#: cps/web.py:978
#: cps/web.py:957
msgid "Database connections are closed"
msgstr ""
#: cps/web.py:979
#: cps/web.py:958
msgid "Server is stopped"
msgstr ""
#: cps/web.py:980
#: cps/web.py:959
msgid "Update finished, please press okay and reload page"
msgstr ""
#: cps/web.py:1054
#: cps/web.py:1033
msgid "Recently Added Books"
msgstr ""
#: cps/web.py:1063
#: cps/web.py:1042
msgid "Newest Books"
msgstr ""
#: cps/web.py:1072
#: cps/web.py:1051
msgid "Oldest Books"
msgstr ""
#: cps/web.py:1081
#: cps/web.py:1060
msgid "Books (A-Z)"
msgstr ""
#: cps/web.py:1090
#: cps/web.py:1069
msgid "Books (Z-A)"
msgstr ""
#: cps/web.py:1126
#: cps/web.py:1099
msgid "Hot Books (most downloaded)"
msgstr ""
#: cps/web.py:1136
#: cps/web.py:1109
msgid "Best rated books"
msgstr ""
#: cps/templates/index.xml:36 cps/web.py:1145
#: cps/templates/index.xml:35 cps/web.py:1118
msgid "Random Books"
msgstr ""
#: cps/web.py:1161
#: cps/web.py:1127
msgid "Author list"
msgstr ""
#: cps/web.py:1181 cps/web.py:1212 cps/web.py:1351 cps/web.py:1835
#: cps/web.py:1137 cps/web.py:1193 cps/web.py:1318 cps/web.py:1796
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
#: cps/templates/index.xml:71 cps/web.py:1198
#: cps/templates/index.xml:70 cps/web.py:1179
msgid "Series list"
msgstr ""
#: cps/web.py:1210
#: cps/web.py:1191
#, python-format
msgid "Series: %(serie)s"
msgstr ""
#: cps/web.py:1243
#: cps/web.py:1224
msgid "Available languages"
msgstr ""
#: cps/web.py:1258
#: cps/web.py:1239
#, python-format
msgid "Language: %(name)s"
msgstr ""
#: cps/templates/index.xml:64 cps/web.py:1274
#: cps/templates/index.xml:63 cps/web.py:1248
msgid "Category list"
msgstr ""
#: cps/web.py:1286
#: cps/web.py:1260
#, python-format
msgid "Category: %(name)s"
msgstr ""
#: cps/web.py:1385
#: cps/web.py:1352
msgid "Excecution permissions missing"
msgstr ""
#: cps/web.py:1399
#: cps/web.py:1366
msgid "Statistics"
msgstr ""
#: cps/web.py:1563
#: cps/web.py:1530
msgid "Server restarted, please reload page"
msgstr ""
#: cps/web.py:1565
#: cps/web.py:1532
msgid "Performing shutdown of server, please close window"
msgstr ""
#: cps/web.py:1581
#: cps/web.py:1548
msgid "Update done"
msgstr ""
#: cps/web.py:1662 cps/web.py:1675
#: cps/web.py:1623 cps/web.py:1636
msgid "search"
msgstr ""
#: cps/templates/index.xml:43 cps/templates/index.xml:47
#: cps/templates/layout.html:127 cps/web.py:1751
#: cps/templates/index.xml:42 cps/templates/index.xml:46
#: cps/templates/layout.html:127 cps/web.py:1712
msgid "Read Books"
msgstr ""
#: cps/templates/index.xml:50 cps/templates/index.xml:54
#: cps/templates/layout.html:128 cps/web.py:1754
#: cps/templates/index.xml:49 cps/templates/index.xml:53
#: cps/templates/layout.html:128 cps/web.py:1715
msgid "Unread Books"
msgstr ""
#: cps/web.py:1821 cps/web.py:1823 cps/web.py:1825 cps/web.py:1832
#: cps/web.py:1782 cps/web.py:1784 cps/web.py:1786 cps/web.py:1793
msgid "Read a Book"
msgstr ""
#: cps/web.py:1888 cps/web.py:2513
#: cps/web.py:1849 cps/web.py:2474
msgid "Please fill out all fields!"
msgstr ""
#: cps/web.py:1889 cps/web.py:1905 cps/web.py:1910 cps/web.py:1912
#: cps/web.py:1850 cps/web.py:1866 cps/web.py:1871 cps/web.py:1873
msgid "register"
msgstr ""
#: cps/web.py:1904
#: cps/web.py:1865
msgid "An unknown error occured. Please try again later."
msgstr ""
#: cps/web.py:1909
#: cps/web.py:1870
msgid "This username or email address is already in use."
msgstr ""
#: cps/web.py:1928 cps/web.py:2024
#: cps/web.py:1889 cps/web.py:1985
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr ""
#: cps/web.py:1933
#: cps/web.py:1894
msgid "Wrong Username or Password"
msgstr ""
#: cps/web.py:1939 cps/web.py:1960
#: cps/web.py:1900 cps/web.py:1921
msgid "login"
msgstr ""
#: cps/web.py:1972 cps/web.py:2003
#: cps/web.py:1933 cps/web.py:1964
msgid "Token not found"
msgstr ""
#: cps/web.py:1980 cps/web.py:2011
#: cps/web.py:1941 cps/web.py:1972
msgid "Token has expired"
msgstr ""
#: cps/web.py:1988
#: cps/web.py:1949
msgid "Success! Please return to your device"
msgstr ""
#: cps/web.py:2038
#: cps/web.py:1999
msgid "Please configure the SMTP mail settings first..."
msgstr ""
#: cps/web.py:2042
#: cps/web.py:2003
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr ""
#: cps/web.py:2046
#: cps/web.py:2007
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr ""
#: cps/web.py:2048 cps/web.py:2598
#: cps/web.py:2009 cps/web.py:2559
msgid "Please configure your kindle email address first..."
msgstr ""
#: cps/web.py:2092
#: cps/web.py:2053
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr ""
#: cps/web.py:2127
#: cps/web.py:2088
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr ""
#: cps/web.py:2146 cps/web.py:2170
#: cps/web.py:2107 cps/web.py:2131
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr ""
#: cps/web.py:2151
#: cps/web.py:2112
#, python-format
msgid "Shelf %(title)s created"
msgstr ""
#: cps/web.py:2153 cps/web.py:2181
#: cps/web.py:2114 cps/web.py:2142
msgid "There was an error"
msgstr ""
#: cps/web.py:2154 cps/web.py:2156
#: cps/web.py:2115 cps/web.py:2117
msgid "create a shelf"
msgstr ""
#: cps/web.py:2179
#: cps/web.py:2140
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
#: cps/web.py:2182 cps/web.py:2184
#: cps/web.py:2143 cps/web.py:2145
msgid "Edit a shelf"
msgstr ""
#: cps/web.py:2204
#: cps/web.py:2165
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr ""
#: cps/web.py:2226
#: cps/web.py:2187
#, python-format
msgid "Shelf: '%(name)s'"
msgstr ""
#: cps/web.py:2229
#: cps/web.py:2190
msgid "Error opening shelf. Shelf does not exist or is not accessible"
msgstr ""
#: cps/web.py:2261
#: cps/web.py:2222
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
#: cps/web.py:2326
#: cps/web.py:2287
msgid "Found an existing account for this email address."
msgstr ""
#: cps/web.py:2328 cps/web.py:2332
#: cps/web.py:2289 cps/web.py:2293
#, python-format
msgid "%(name)s's profile"
msgstr ""
#: cps/web.py:2329
#: cps/web.py:2290
msgid "Profile updated"
msgstr ""
#: cps/web.py:2343
#: cps/web.py:2304
msgid "Admin page"
msgstr ""
#: cps/web.py:2467
#: cps/web.py:2428
msgid "Calibre-web configuration updated"
msgstr ""
#: cps/web.py:2474 cps/web.py:2480 cps/web.py:2494
#: cps/web.py:2435 cps/web.py:2441 cps/web.py:2455
msgid "Basic Configuration"
msgstr ""
#: cps/web.py:2478
#: cps/web.py:2439
msgid "DB location is not valid, please enter correct path"
msgstr ""
#: cps/templates/admin.html:34 cps/web.py:2515 cps/web.py:2568
#: cps/templates/admin.html:34 cps/web.py:2476 cps/web.py:2529
msgid "Add new user"
msgstr ""
#: cps/web.py:2560
#: cps/web.py:2521
#, python-format
msgid "User '%(user)s' created"
msgstr ""
#: cps/web.py:2564
#: cps/web.py:2525
msgid "Found an existing account for this email address or nickname."
msgstr ""
#: cps/web.py:2586
#: cps/web.py:2547
msgid "Mail settings updated"
msgstr ""
#: cps/web.py:2593
#: cps/web.py:2554
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr ""
#: cps/web.py:2596
#: cps/web.py:2557
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr ""
#: cps/web.py:2600
#: cps/web.py:2561
msgid "E-Mail settings updated"
msgstr ""
#: cps/web.py:2601
#: cps/web.py:2562
msgid "Edit mail settings"
msgstr ""
#: cps/web.py:2630
#: cps/web.py:2591
#, python-format
msgid "User '%(nick)s' deleted"
msgstr ""
#: cps/web.py:2728
#: cps/web.py:2689
#, python-format
msgid "User '%(nick)s' updated"
msgstr ""
#: cps/web.py:2731
#: cps/web.py:2692
msgid "An unknown error occured."
msgstr ""
#: cps/web.py:2734
#: cps/web.py:2695
#, python-format
msgid "Edit User %(nick)s"
msgstr ""
#: cps/web.py:2756
#: cps/web.py:2711
msgid "Error opening eBook. File does not exist or file is not accessible"
msgstr ""
#: cps/web.py:2771 cps/web.py:2954 cps/web.py:3078
#: cps/web.py:2726 cps/web.py:2898 cps/web.py:3041
msgid "edit metadata"
msgstr ""
#: cps/web.py:2783 cps/web.py:2787
#: cps/web.py:2738 cps/web.py:2742
msgid "unknown"
msgstr ""
#: cps/web.py:2972
#: cps/web.py:2935
#, python-format
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
msgstr ""
#: cps/web.py:2978
#: cps/web.py:2941
msgid "File to be uploaded must have an extension"
msgstr ""
#: cps/web.py:2997
#: cps/web.py:2960
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr ""
#: cps/web.py:3002
#: cps/web.py:2965
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr ""
#: cps/web.py:3007
#: cps/web.py:2970
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr ""
@ -598,6 +598,18 @@ msgstr ""
msgid "Updating, please do not reload page"
msgstr ""
#: cps/templates/author.html:15
msgid "via"
msgstr ""
#: cps/templates/author.html:23
msgid "In Library"
msgstr ""
#: cps/templates/author.html:69
msgid "More by"
msgstr ""
#: cps/templates/book_edit.html:16
msgid "Delete Book"
msgstr ""
@ -606,12 +618,13 @@ msgstr ""
msgid "Book Title"
msgstr ""
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:188
#: cps/templates/search_form.html:10
#: cps/templates/book_edit.html:26 cps/templates/book_edit.html:208
#: cps/templates/book_edit.html:226 cps/templates/search_form.html:10
msgid "Author"
msgstr ""
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:190
#: cps/templates/book_edit.html:30 cps/templates/book_edit.html:213
#: cps/templates/book_edit.html:228
msgid "Description"
msgstr ""
@ -694,33 +707,33 @@ msgstr ""
msgid "Go!"
msgstr ""
#: cps/templates/book_edit.html:168
#: cps/templates/book_edit.html:171
msgid "Click the cover to load metadata to the form"
msgstr ""
#: cps/templates/book_edit.html:172 cps/templates/book_edit.html:185
#: cps/templates/book_edit.html:183 cps/templates/book_edit.html:223
msgid "Loading..."
msgstr ""
#: cps/templates/book_edit.html:175 cps/templates/layout.html:199
#: cps/templates/book_edit.html:188 cps/templates/layout.html:199
msgid "Close"
msgstr ""
#: cps/templates/book_edit.html:186
msgid "Search error!"
#: cps/templates/book_edit.html:210 cps/templates/book_edit.html:227
#: cps/templates/detail.html:125 cps/templates/search_form.html:14
msgid "Publisher"
msgstr ""
#: cps/templates/book_edit.html:187
msgid "No Result! Please try anonther keyword."
#: cps/templates/book_edit.html:215 cps/templates/book_edit.html:229
msgid "Source"
msgstr ""
#: cps/templates/book_edit.html:189 cps/templates/detail.html:125
#: cps/templates/search_form.html:14
msgid "Publisher"
#: cps/templates/book_edit.html:224
msgid "Search error!"
msgstr ""
#: cps/templates/book_edit.html:191
msgid "Source"
#: cps/templates/book_edit.html:225
msgid "No Result! Please try anonther keyword."
msgstr ""
#: cps/templates/config_edit.html:7
@ -913,6 +926,11 @@ msgstr ""
msgid "Next"
msgstr ""
#: cps/templates/feed.xml:29 cps/templates/index.xml:7
#: cps/templates/layout.html:40 cps/templates/layout.html:41
msgid "Search"
msgstr ""
#: cps/templates/index.html:5
msgid "Discover (Random Books)"
msgstr ""
@ -921,52 +939,47 @@ msgstr ""
msgid "Start"
msgstr ""
#: cps/templates/index.xml:7 cps/templates/layout.html:40
#: cps/templates/layout.html:41
msgid "Search"
msgstr ""
#: cps/templates/index.xml:15 cps/templates/layout.html:121
#: cps/templates/index.xml:14 cps/templates/layout.html:121
msgid "Hot Books"
msgstr ""
#: cps/templates/index.xml:19
#: cps/templates/index.xml:18
msgid "Popular publications from this catalog based on Downloads."
msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:124
#: cps/templates/index.xml:21 cps/templates/layout.html:124
msgid "Best rated Books"
msgstr ""
#: cps/templates/index.xml:26
#: cps/templates/index.xml:25
msgid "Popular publications from this catalog based on Rating."
msgstr ""
#: cps/templates/index.xml:29
#: cps/templates/index.xml:28
msgid "New Books"
msgstr ""
#: cps/templates/index.xml:33
#: cps/templates/index.xml:32
msgid "The latest Books"
msgstr ""
#: cps/templates/index.xml:40
#: cps/templates/index.xml:39
msgid "Show Random Books"
msgstr ""
#: cps/templates/index.xml:57 cps/templates/layout.html:139
#: cps/templates/index.xml:56 cps/templates/layout.html:139
msgid "Authors"
msgstr ""
#: cps/templates/index.xml:61
#: cps/templates/index.xml:60
msgid "Books ordered by Author"
msgstr ""
#: cps/templates/index.xml:68
#: cps/templates/index.xml:67
msgid "Books ordered by category"
msgstr ""
#: cps/templates/index.xml:75
#: cps/templates/index.xml:74
msgid "Books ordered by series"
msgstr ""
@ -1126,7 +1139,7 @@ msgid "No Results for:"
msgstr ""
#: cps/templates/search.html:7
msgid "Please try a diffrent Search"
msgid "Please try a different search"
msgstr ""
#: cps/templates/search.html:9

@ -11,4 +11,5 @@ PyYAML==3.12
rsa==3.4.2
six==1.10.0
uritemplate==3.0.0
goodreads==0.3.2
goodreads>=0.3.2
python-Levenshtein>=0.12.0

@ -30,7 +30,7 @@ Calibre Web is a web app providing a clean interface for browsing, reading and d
## Quick start
1. Install required dependencies by executing `pip install -r requirements.txt`
1. Install dependencies by running `pip install --target vendor -r requirements.txt`.
2. Execute the command: `python cps.py` (or `nohup python cps.py` - recommended if you want to exit the terminal window)
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
@ -70,7 +70,7 @@ Optionally, to enable on-the-fly conversion from EPUB to MOBI when using the sen
## Using Google Drive integration
Additional optional dependencys are necessary to get this work. Please install all optional requirements by executing `pip install -r optional-requirements.txt`
Additional optional dependencys are necessary to get this work. Please install all optional requirements by executing `pip install --target vendor -r optional-requirements.txt`
To use google drive integration, you have to use the google developer console to create a new app. https://console.developers.google.com

Loading…
Cancel
Save