Merge remote-tracking branch 'refs/remotes/janeczku/master'

pull/125/head
Radosław Kierznowski 8 years ago
commit 0307ab6f1f

@ -99,7 +99,7 @@ def pdf_preview(tmp_file_path, tmp_dir):
return None
else:
cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.jpg"
with Image(filename=tmp_file_path +"[0]", resolution=150) as img:
with Image(filename=tmp_file_path + "[0]", resolution=150) as img:
img.compression_quality = 88
img.save(filename=os.path.join(tmp_dir, cover_file_name))
return cover_file_name

@ -227,7 +227,7 @@ class Books(Base):
identifiers = relationship('Identifiers', backref='books')
def __init__(self, title, sort, author_sort, timestamp, pubdate, series_index, last_modified, path, has_cover,
authors, tags): # ToDO check Authors and tags necessary
authors, tags):
self.title = title
self.sort = sort
self.author_sort = author_sort

@ -6,7 +6,7 @@ import os
import uploader
import StringIO
# ToDo: Check usage of original_file_name
def get_fb2_info(tmp_file_path, original_file_extension):
ns = {
@ -20,37 +20,35 @@ def get_fb2_info(tmp_file_path, original_file_extension):
authors = tree.xpath('/fb:FictionBook/fb:description/fb:title-info/fb:author', namespaces=ns)
def get_author(element):
last_name=element.xpath('fb:last-name/text()', namespaces=ns)
last_name = element.xpath('fb:last-name/text()', namespaces=ns)
if len(last_name):
last_name=last_name[0]
last_name = last_name[0]
else:
last_name=u''
middle_name=element.xpath('fb:middle-name/text()', namespaces=ns)
last_name = u''
middle_name = element.xpath('fb:middle-name/text()', namespaces=ns)
if len(middle_name):
middle_name=middle_name[0]
middle_name = middle_name[0]
else:
middle_name=u''
first_name=element.xpath('fb:first-name/text()', namespaces=ns)
middle_name = u''
first_name = element.xpath('fb:first-name/text()', namespaces=ns)
if len(first_name):
first_name=first_name[0]
first_name = first_name[0]
else:
first_name=u''
first_name = u''
return first_name + ' ' + middle_name + ' ' + last_name
author = unicode(", ".join(map(get_author, authors)))
title = tree.xpath('/fb:FictionBook/fb:description/fb:title-info/fb:book-title/text()', namespaces=ns)
if len(title):
title=unicode(title[0])
title = unicode(title[0])
else:
title=u''
title = u''
description = tree.xpath('/fb:FictionBook/fb:description/fb:publish-info/fb:book-name/text()', namespaces=ns)
if len(description):
description=unicode(description[0])
description = unicode(description[0])
else:
description=u''
description = u''
return uploader.BookMeta(
file_path=tmp_file_path,

@ -22,6 +22,11 @@ from email.generator import Generator
from flask_babel import gettext as _
import subprocess
import shutil
try:
import unidecode
use_unidecode=True
except:
use_unidecode=False
def update_download(book_id, user_id):
check = ub.session.query(ub.Downloads).filter(ub.Downloads.user_id == user_id).filter(ub.Downloads.book_id ==
@ -203,7 +208,7 @@ def get_attachment(file_path):
return attachment
except IOError:
traceback.print_exc()
message = (_('The requested file could not be read. Maybe wrong permissions?')) # ToDo: What is this?
app.logger.error = (u'The requested file could not be read. Maybe wrong permissions?')
return None
@ -212,47 +217,54 @@ def get_valid_filename(value, replace_whitespace=True):
Returns the given string converted to a string that can be used for a clean
filename. Limits num characters to 128 max.
"""
value = value[:128]
# re_slugify = re.compile('[^\w\s-]', re.UNICODE)
if value[-1:] ==u'.':
value = value[:-1]+u'_'
if use_unidecode:
value=(unidecode.unidecode(value)).strip()
else:
value=value.replace('§','SS')
value=value.replace('ß','ss')
value = unicodedata.normalize('NFKD', value)
re_slugify = re.compile('[^\w\s-]', re.UNICODE)
re_slugify = re.compile('[\W\s-]', re.UNICODE)
value = unicode(re_slugify.sub('', value).strip())
if replace_whitespace:
value = re.sub('[\s]+', '_', value, flags=re.U)
value = value.replace(u"\u00DF", "ss")
return value
#*+:\"/<>? werden durch _ ersetzt
value = re.sub('[\*\+:\\\"/<>\?]+', '_', value, flags=re.U)
def get_normalized_author(value):
"""
Normalizes sorted author name
"""
value = unicodedata.normalize('NFKD', value)
value = re.sub('[^\w,\s]', '', value, flags=re.U)
value = " ".join(value.split(", ")[::-1])
value = value[:128]
return value
def get_sorted_author(value):
regexes = ["^(JR|SR)\.?$","^I{1,3}\.?$","^IV\.?$"]
combined = "(" + ")|(".join(regexes) + ")"
value = value.split(" ")
if re.match(combined,value[-1].upper()):
value2 = value[-2] + ", " + " ".join(value[:-2]) + " " + value[-1]
else:
value2 = value[-1] + ", " + " ".join(value[:-1])
return value2
def update_dir_stucture(book_id, calibrepath):
db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort)
book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
path = os.path.join(calibrepath, book.path)
path = os.path.join(calibrepath, book.path)#.replace('/',os.path.sep)).replace('\\',os.path.sep)
authordir = book.path.split(os.sep)[0]
new_authordir = get_valid_filename(book.authors[0].name, False)
titledir = book.path.split(os.sep)[1]
new_titledir = get_valid_filename(book.title, False) + " (" + str(book_id) + ")"
authordir = book.path.split('/')[0]
new_authordir = get_valid_filename(book.authors[0].name)
titledir = book.path.split('/')[1]
new_titledir = get_valid_filename(book.title) + " (" + str(book_id) + ")"
if titledir != new_titledir:
new_title_path = os.path.join(os.path.dirname(path), new_titledir)
os.rename(path, new_title_path)
path = new_title_path
book.path = book.path.split(os.sep)[0] + os.sep + new_titledir
book.path = book.path.split('/')[0] + '/' + new_titledir
if authordir != new_authordir:
new_author_path = os.path.join(os.path.join(calibrepath, new_authordir), os.path.basename(path))
os.renames(path, new_author_path)
book.path = new_authordir + os.sep + book.path.split(os.sep)[1]
os.rename(path, new_author_path)
book.path = new_authordir + '/' + book.path.split('/')[1]
db.session.commit()

@ -2,7 +2,7 @@
{% block body %}
<div class="discover">
<h2>{{_('User list')}}</h2>
<table class="table table-striped">
<table class="table table-striped" id="table_user">
<tr>
<th>{{_('Nickname')}}</th>
<th>{{_('Email')}}</th>
@ -30,9 +30,9 @@
{% endif %}
{% endfor %}
</table>
<div class="btn btn-default"><a href="{{url_for('new_user')}}">{{_('Add new user')}}</a></div>
<div class="btn btn-default" id="admin_new_user"><a href="{{url_for('new_user')}}">{{_('Add new user')}}</a></div>
<h2>{{_('SMTP mail settings')}}</h2>
<table class="table table-striped">
<table class="table table-striped" id="table_email">
<tr>
<th>{{_('SMTP hostname')}}</th>
<th>{{_('SMTP port')}}</th>
@ -51,10 +51,10 @@
</table>
<div class="btn btn-default"><a href="{{url_for('edit_mailsettings')}}">{{_('Change SMTP settings')}}</a></div>
<div class="btn btn-default" id="admin_edit_email"><a href="{{url_for('edit_mailsettings')}}">{{_('Change SMTP settings')}}</a></div>
<h2>{{_('Configuration')}}</h2>
<table class="table table-striped">
<table class="table table-striped" id="table_configuration">
<tr>
<th>{{_('Calibre DB dir')}}</th>
<th>{{_('Log Level')}}</th>
@ -76,6 +76,7 @@
<div class="btn btn-default"><a href="{{url_for('configuration')}}">{{_('Configuration')}}</a></div>
<h2>{{_('Administration')}}</h2>
{% if not development %}
<p>{{_('Current commit timestamp')}}: {{commit}} </p>
<div class="btn btn-default" data-toggle="modal" data-target="#RestartDialog">{{_('Restart Calibre-web')}}</a></div>
<div class="btn btn-default" data-toggle="modal" data-target="#ShutdownDialog">{{_('Stop Calibre-web')}}</a></div>
<div class="btn btn-default" id="check_for_update">{{_('Check for update')}}</a></div>

@ -1,7 +1,7 @@
{% extends "layout.html" %}
{% block body %}
<div class="discover">
<h1>{{title}}</h1>
<h2>{{title}}</h2>
<form role="form" method="POST" autocomplete="off">
<div class="form-group required">
<label for="config_calibre_dir">{{_('Location of Calibre database')}}</label>
@ -49,6 +49,27 @@
<input type="checkbox" id="config_public_reg" name="config_public_reg" {% if content.config_public_reg %}checked{% endif %}>
<label for="config_public_reg">{{_('Enable public registration')}}</label>
</div>
<h2>{{_('Default Settings for new users')}}</h2>
<div class="form-group">
<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="download_role" id="download_role" {% if content.role_download() %}checked{% endif %}>
<label for="download_role">{{_('Allow Downloads')}}</label>
</div>
<div class="form-group">
<input type="checkbox" name="upload_role" id="upload_role" {% if content.role_upload() %}checked{% endif %}>
<label for="upload_role">{{_('Allow Uploads')}}</label>
</div>
<div class="form-group">
<input type="checkbox" name="edit_role" id="edit_role" {% if content.role_edit() %}checked{% endif %}>
<label for="edit_role">{{_('Allow Edit')}}</label>
</div>
<div class="form-group">
<input type="checkbox" name="passwd_role" id="passwd_role" {% if content.role_passwd() %}checked{% endif %}>
<label for="passwd_role">{{_('Allow Changing Password')}}</label>
</div>
<button type="submit" class="btn btn-default">{{_('Submit')}}</button>
{% if not origin %}
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>

@ -70,8 +70,8 @@
</div>
</p>
{% endif %}
{% if entry.pubdate != '0101-01-01 00:00:00' %}
<p>{{_('Publishing date')}}: {{entry.pubdate[:10]}} </p>
{% if entry.pubdate[:10] != '0101-01-01' %}
<p>{{_('Publishing date')}}: {{entry.pubdate|formatdate}} </p>
{% endif %}
{% if cc|length > 0 %}
<p>

@ -6,7 +6,7 @@
<div class="row">
{% for entry in random %}
<div class="col-sm-3 col-lg-2 col-xs-6 book">
<div id="books_rand" class="col-sm-3 col-lg-2 col-xs-6 book">
<div class="cover">
<a href="{{ url_for('show_book', id=entry.id) }}">
{% if entry.has_cover %}
@ -41,7 +41,7 @@
<h2>{{title}}</h2>
<div class="row">
{% for entry in entries %}
<div class="col-sm-3 col-lg-2 col-xs-6 book">
<div id="books" class="col-sm-3 col-lg-2 col-xs-6 book">
<div class="cover">
<a href="{{ url_for('show_book', id=entry.id) }}">
{% if entry.has_cover %}

@ -5,7 +5,7 @@
{% for lang in languages %}
<div class="row">
<div class="col-xs-1" align="left"><span class="badge">{{lang_counter[loop.index0].bookcount}}</span></div>
<div class="col-xs-6"><a href="{{url_for('language', name=lang.lang_code)}}">{{lang.name}}</a></div>
<div class="col-xs-6"><a id="list_{{loop.index0}}" href="{{url_for('language', name=lang.lang_code)}}">{{lang.name}}</a></div>
</div>
{% endfor %}
</div>

@ -80,16 +80,16 @@
{% endif %}
{% endif %}
{% if g.user.role_admin() %}
<li><a href="{{url_for('admin')}}"><span class="glyphicon glyphicon-dashboard"></span> {{_('Admin')}}</a></li>
<li><a id="top_admin" href="{{url_for('admin')}}"><span class="glyphicon glyphicon-dashboard"></span> {{_('Admin')}}</a></li>
{% endif %}
<li><a href="{{url_for('profile')}}"><span class="glyphicon glyphicon-user"></span> {{g.user.nickname}}</a></li>
<li><a id="top_user" href="{{url_for('profile')}}"><span class="glyphicon glyphicon-user"></span> {{g.user.nickname}}</a></li>
{% if not g.user.is_anonymous() %}
<li><a href="{{url_for('logout')}}"><span class="glyphicon glyphicon-log-out"></span> {{_('Logout')}}</a></li>
<li><a id="logout" href="{{url_for('logout')}}"><span class="glyphicon glyphicon-log-out"></span> {{_('Logout')}}</a></li>
{% endif %}
{% endif %}
{% if g.allow_registration and not g.user.is_authenticated %}
<li><a href="{{url_for('login')}}"><span class="glyphicon glyphicon-log-in"></span> {{_('Login')}}</a></li>
<li><a href="{{url_for('register')}}"><span class="glyphicon glyphicon-user"></span> {{_('Register')}}</a></li>
<li><a id="login" href="{{url_for('login')}}"><span class="glyphicon glyphicon-log-in"></span> {{_('Login')}}</a></li>
<li><a id="register" href="{{url_for('register')}}"><span class="glyphicon glyphicon-user"></span> {{_('Register')}}</a></li>
{% endif %}
</ul>
</div><!--/.nav-collapse -->
@ -98,17 +98,17 @@
{% for message in get_flashed_messages(with_categories=True) %}
{%if message[0] == "error" %}
<div class="row-fluid" style="margin-top: -20px; text-align: center;">
<div class="alert alert-danger">{{ message[1] }}</div>
<div id="flash_alert" class="alert alert-danger">{{ message[1] }}</div>
</div>
{%endif%}
{%if message[0] == "info" %}
<div class="row-fluid" style="margin-top: -20px; text-align: center;">
<div class="alert alert-info">{{ message[1] }}</div>
<div id="flash_info" class="alert alert-info">{{ message[1] }}</div>
</div>
{%endif%}
{%if message[0] == "success" %}
<div class="row-fluid" style="margin-top: -20px; text-align: center;">
<div class="alert alert-success">{{ message[1] }}</div>
<div id="flash_success" class="alert alert-success">{{ message[1] }}</div>
</div>
{%endif%}
{% endfor %}
@ -119,25 +119,25 @@
<nav class="navigation">
<ul class="list-unstyled" id="scnd-nav" intent in-standard-append="nav.navigation" in-mobile-after="#main-nav" in-mobile-class="nav navbar-nav">
<li class="nav-head hidden-xs">{{_('Browse')}}</li>
<li><a href="{{url_for('index')}}"><span class="glyphicon glyphicon-book"></span> {{_('New Books')}}</a></li>
<li id="nav_new"><a href="{{url_for('index')}}"><span class="glyphicon glyphicon-book"></span> {{_('New Books')}}</a></li>
{% if g.user.show_hot_books() %}
<li><a href="{{url_for('hot_books')}}"><span class="glyphicon glyphicon-fire"></span> {{_('Hot Books')}}</a></li>
<li id="nav_hot"><a href="{{url_for('hot_books')}}"><span class="glyphicon glyphicon-fire"></span> {{_('Hot Books')}}</a></li>
{%endif%}
{% if g.user.show_best_rated_books() %}
<li><a href="{{url_for('best_rated_books')}}"><span class="glyphicon glyphicon-star"></span> {{_('Best rated Books')}}</a></li>
{%endif%}
{% if g.user.show_random_books() %}
<li><a href="{{url_for('discover')}}"><span class="glyphicon glyphicon-random"></span> {{_('Discover')}}</a></li>
<li id="nav_rand"><a href="{{url_for('discover')}}"><span class="glyphicon glyphicon-random"></span> {{_('Discover')}}</a></li>
{%endif%}
{% if g.user.show_category() %}
<li><a href="{{url_for('category_list')}}"><span class="glyphicon glyphicon-inbox"></span> {{_('Categories')}}</a></li>
<li id="nav_cat"><a href="{{url_for('category_list')}}"><span class="glyphicon glyphicon-inbox"></span> {{_('Categories')}}</a></li>
{%endif%}
{% if g.user.show_series() %}
<li><a href="{{url_for('series_list')}}"><span class="glyphicon glyphicon-bookmark"></span> {{_('Series')}}</a></li>
<li id="nav_serie"><a href="{{url_for('series_list')}}"><span class="glyphicon glyphicon-bookmark"></span> {{_('Series')}}</a></li>
{%endif%}
<li><a href="{{url_for('author_list')}}"><span class="glyphicon glyphicon-user"></span> {{_('Authors')}}</a></li>
<li id="nav_author"><a href="{{url_for('author_list')}}"><span class="glyphicon glyphicon-user"></span> {{_('Authors')}}</a></li>
{% if g.user.filter_language() == 'all' and g.user.show_language() %}
<li><a href="{{url_for('language_overview')}}"><span class="glyphicon glyphicon-flag"></span> {{_('Languages')}} </a></li>
<li id="nav_lang"><a href="{{url_for('language_overview')}}"><span class="glyphicon glyphicon-flag"></span> {{_('Languages')}} </a></li>
{%endif%}
{% if g.user.is_authenticated or g.user.is_anonymous() %}
<li class="nav-head hidden-xs">{{_('Public Shelves')}}</li>
@ -160,9 +160,9 @@
{% endif %}
<div class="col-sm-10">
{% block body %}{% endblock %}
{% if pagination %}
{% if pagination and (pagination.has_next or pagination.has_prev) %}
<div class="pagination">
{%- for page in pagination.iter_pages() %}
{% for page in pagination.iter_pages() %}
{% if page %}
{% if page != pagination.page %}
<a href="{{ url_for_other_page(page) }}">{{ page }}</a>
@ -172,7 +172,7 @@
{% else %}
<span class="ellipsis"></span>
{% endif %}
{%- endfor %}
{% endfor %}
{% if pagination.has_next %}
<a class="next" href="{{ url_for_other_page(pagination.page + 1)
}}">Next &raquo;</a>

@ -5,7 +5,7 @@
{% for entry in entries %}
<div class="row">
<div class="col-xs-1" align="left"><span class="badge">{{entry.count}}</span></div>
<div class="col-xs-6"><a href="{{url_for(folder, id=entry[0].id )}}">{{entry[0].name}}</a></div>
<div class="col-xs-6"><a id="list_{{loop.index0}}" href="{{url_for(folder, id=entry[0].id )}}">{{entry[0].name}}</a></div>
</div>
{% endfor %}
</div>

@ -16,7 +16,7 @@
<input type="checkbox" name="remember_me" checked> {{_('Remember me')}}
</label>
</div>
<button type="submit" class="btn btn-default">{{_('Submit')}}</button>
<button type="submit" name="submit" class="btn btn-default">{{_('Submit')}}</button>
</form>
</div>
{% if error %}

@ -2,7 +2,7 @@
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/">
<LongName>{{instance}}</LongName>
<ShortName>{{instance}}</ShortName>
<Description>{{_('instanceCalibre Web ebook catalog')}}</Description>
<Description>{{_('Calibre Web ebook catalog')}}</Description>
<Developer>Janeczku</Developer>
<Contact>https://github.com/janeczku/calibre-web</Contact>
<Url type="text/html"

@ -2,7 +2,7 @@
{% block body %}
<h3>{{_('Linked libraries')}}</h3>
<table class="table">
<table id="libs" class="table">
<thead>
<tr>
<th>{{_('Program library')}}</th>
@ -30,7 +30,7 @@
</table>
<h3>{{_('Calibre library statistics')}}</h3>
<table class="table">
<table id="stats" class="table">
<tbody>
<tr>
<th>{{bookcounter}}</th>

@ -27,7 +27,7 @@
<label for="locale">{{_('Language')}}</label>
<select name="locale" id="locale" class="form-control">
{% for translation in translations %}
<option value="{{translation}}" {% if translation.language == content.locale %}selected{% endif %} {% if new_user == 1 and loop.first %}selected{% endif %}>{{ translation.display_name }}</option>
<option value="{{translation}}" {% if translation|string == content.locale %}selected{% endif %} {% if new_user == 1 and loop.first %}selected{% endif %}>{{ translation.display_name }}</option>
{% endfor %}
</select>
</div>
@ -108,7 +108,7 @@
{% endif %}
<button type="submit" id="submit" class="btn btn-default">{{_('Submit')}}</button>
{% if not profile %}
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>
<a href="{{ url_for('admin') }}" id="back" class="btn btn-default">{{_('Back')}}</a>
{% endif %}
</form>

@ -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-01-28 20:35+0100\n"
"POT-Creation-Date: 2017-02-10 20:17+0100\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.3.4\n"
#: cps/book_formats.py:109 cps/book_formats.py:113 cps/web.py:982
#: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:998
msgid "not installed"
msgstr "Nicht installiert"
@ -49,7 +49,7 @@ msgstr "Calibre-web Test E-Mail"
msgid "This email has been sent via calibre web."
msgstr "Die E-Mail wurde via calibre-web versendet"
#: cps/helper.py:153 cps/templates/detail.html:129
#: cps/helper.py:153 cps/templates/detail.html:130
msgid "Send to Kindle"
msgstr "An Kindle senden"
@ -67,279 +67,287 @@ msgstr "Konnte .epub nicht nach .mobi konvertieren"
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "Die angeforderte Datei konnte nicht gelesen werden. Falsche Dateirechte?"
#: cps/ub.py:380
#: cps/ub.py:443
msgid "Guest"
msgstr "Gast"
#: cps/web.py:774
#: cps/web.py:778
msgid "Latest Books"
msgstr "Letzte Bücher"
#: cps/web.py:799
#: cps/web.py:803
msgid "Hot Books (most downloaded)"
msgstr "Beliebte Bücher (die meisten Downloads)"
#: cps/templates/index.xml:29 cps/web.py:808
#: cps/web.py:813
msgid "Best rated books"
msgstr "Best bewertete Bücher"
#: cps/templates/index.xml:36 cps/web.py:822
msgid "Random Books"
msgstr "Zufällige Bücher"
#: cps/web.py:821
#: cps/web.py:835
msgid "Author list"
msgstr "Autorenliste"
#: cps/web.py:838
#: cps/web.py:846
#, python-format
msgid "Author: %(nam)s"
msgstr "Autor: %(nam)s"
msgid "Author: %(name)s"
msgstr "Autor: %(name)s"
#: cps/templates/index.xml:50 cps/web.py:851
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103
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:57 cps/web.py:862
msgid "Series list"
msgstr "Liste Serien"
#: cps/web.py:862
#: cps/web.py:874
#, python-format
msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s"
#: cps/web.py:864 cps/web.py:961 cps/web.py:1179 cps/web.py:2041
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:895
#: cps/web.py:907
msgid "Available languages"
msgstr "Verfügbare Sprachen"
#: cps/web.py:910
#: cps/web.py:922
#, python-format
msgid "Language: %(name)s"
msgstr "Sprache: %(name)s"
#: cps/templates/index.xml:43 cps/web.py:923
#: cps/templates/index.xml:50 cps/web.py:935
msgid "Category list"
msgstr "Kategorieliste"
#: cps/web.py:933
#: cps/web.py:947
#, python-format
msgid "Category: %(name)s"
msgstr "Kategorie: %(name)s"
#: cps/web.py:992
#: cps/web.py:1008
msgid "Statistics"
msgstr "Statistiken"
#: cps/web.py:1013
#: cps/web.py:1029
msgid "Performing Restart, please reload page"
msgstr "Führe Neustart durch, bitte Seite neu laden"
#: cps/web.py:1015
#: cps/web.py:1031
msgid "Performing shutdown of server, please close window"
msgstr "Server wird runtergefahren, bitte Fenster schließen"
#: cps/web.py:1091 cps/web.py:1104
#: cps/web.py:1055
msgid "Update done"
msgstr "Update durchgeführt"
#: cps/web.py:1128 cps/web.py:1141
msgid "search"
msgstr "Suche"
#: cps/web.py:1155 cps/web.py:1162 cps/web.py:1169 cps/web.py:1176
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213
msgid "Read a Book"
msgstr "Lese ein Buch"
#: cps/web.py:1227 cps/web.py:1649
#: cps/web.py:1264 cps/web.py:1701
msgid "Please fill out all fields!"
msgstr "Bitte alle Felder ausfüllen!"
#: cps/web.py:1228 cps/web.py:1244 cps/web.py:1249 cps/web.py:1251
#: cps/web.py:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288
msgid "register"
msgstr "Registieren"
#: cps/web.py:1243
#: cps/web.py:1280
msgid "An unknown error occured. Please try again later."
msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen."
#: cps/web.py:1248
#: cps/web.py:1285
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:1266
#: cps/web.py:1303
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Du bist nun eingeloggt als '%(nickname)s'"
#: cps/web.py:1270
#: cps/web.py:1308
msgid "Wrong Username or Password"
msgstr "Falscher Benutzername oder Passwort"
#: cps/web.py:1272
#: cps/web.py:1310
msgid "login"
msgstr "Login"
#: cps/web.py:1289
#: cps/web.py:1327
msgid "Please configure the SMTP mail settings first..."
msgstr "Bitte zuerst die SMTP Mail Einstellung konfigurieren ..."
#: cps/web.py:1293
#: cps/web.py:1331
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Buch erfolgreich versandt an %(kindlemail)s"
#: cps/web.py:1297
#: cps/web.py:1335
#, 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:1299
#: cps/web.py:1337
msgid "Please configure your kindle email address first..."
msgstr "Bitte die Kindle E-Mail Adresse zuuerst konfigurieren..."
#: cps/web.py:1319
#: cps/web.py:1357
#, 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:1340
#: cps/web.py:1378
#, 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:1359 cps/web.py:1383
#: cps/web.py:1397 cps/web.py:1421
#, 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:1364
#: cps/web.py:1402
#, python-format
msgid "Shelf %(title)s created"
msgstr "Bücherregal %(title)s erzeugt"
#: cps/web.py:1366 cps/web.py:1394
#: cps/web.py:1404 cps/web.py:1432
msgid "There was an error"
msgstr "Es trat ein Fehler auf"
#: cps/web.py:1367 cps/web.py:1369
#: cps/web.py:1405 cps/web.py:1407
msgid "create a shelf"
msgstr "Bücherregal erzeugen"
#: cps/web.py:1392
#: cps/web.py:1430
#, python-format
msgid "Shelf %(title)s changed"
msgstr "Bücherregal %(title)s verändert"
#: cps/web.py:1395 cps/web.py:1397
#: cps/web.py:1433 cps/web.py:1435
msgid "Edit a shelf"
msgstr "Bücherregal editieren"
#: cps/web.py:1415
#: cps/web.py:1453
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Bücherregal %(name)s erfolgreich gelöscht"
#: cps/web.py:1437
#: cps/web.py:1475
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Bücherregal: '%(name)s'"
#: cps/web.py:1468
#: cps/web.py:1506
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "Reihenfolge in Bücherregal '%(name)s' verändern"
#: cps/web.py:1528
#: cps/web.py:1568
msgid "Found an existing account for this email address."
msgstr "Es existiert ein Benutzerkonto für diese E-Mailadresse"
#: cps/web.py:1530 cps/web.py:1534
#: cps/web.py:1570 cps/web.py:1574
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s's Profil"
#: cps/web.py:1531
#: cps/web.py:1571
msgid "Profile updated"
msgstr "Profil aktualisiert"
#: cps/web.py:1544
#: cps/web.py:1584
msgid "Admin page"
msgstr "Admin Seite"
#: cps/web.py:1604
#: cps/web.py:1656
msgid "Calibre-web configuration updated"
msgstr "Calibre-web Konfiguration wurde aktualisiert"
#: cps/web.py:1611 cps/web.py:1617 cps/web.py:1630
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682
msgid "Basic Configuration"
msgstr "Basis Konfiguration"
#: cps/web.py:1615
#: cps/web.py:1667
msgid "DB location is not valid, please enter correct path"
msgstr "DB Speicherort ist ungültig, bitte Pfad korrigieren"
#: cps/templates/admin.html:33 cps/web.py:1651 cps/web.py:1693
#: cps/templates/admin.html:33 cps/web.py:1703 cps/web.py:1749
msgid "Add new user"
msgstr "Neuen Benutzer hinzufügen"
#: cps/web.py:1687
#: cps/web.py:1741
#, python-format
msgid "User '%(user)s' created"
msgstr "Benutzer '%(user)s' angelegt"
#: cps/web.py:1691
#: cps/web.py:1745
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:1711
#: cps/web.py:1767
msgid "Mail settings updated"
msgstr "E-Mail Einstellungen aktualisiert"
#: cps/web.py:1717
#: cps/web.py:1773
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Test E-Mail erfolgreich an %(kindlemail)s versendet"
#: cps/web.py:1720
#: cps/web.py:1776
#, 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:1721
#: cps/web.py:1777
msgid "Edit mail settings"
msgstr "E-Mail Einstellungen editieren"
#: cps/web.py:1749
#: cps/web.py:1805
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Benutzer '%(nick)s' gelöscht"
#: cps/web.py:1825
#: cps/web.py:1886
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Benutzer '%(nick)s' aktualisiert"
#: cps/web.py:1828
#: cps/web.py:1889
msgid "An unknown error occured."
msgstr "Es ist ein unbekanter Fehler aufgetreten"
#: cps/web.py:1831
#: cps/web.py:1892
#, python-format
msgid "Edit User %(nick)s"
msgstr "Benutzer %(nick)s bearbeiten"
#: cps/web.py:2036 cps/web.py:2039 cps/web.py:2113
#: cps/web.py:2098 cps/web.py:2101 cps/web.py:2175
msgid "edit metadata"
msgstr "Metadaten editieren"
#: cps/web.py:2071
#: cps/web.py:2133
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Fehler beim Erzeugen des Pfads %s (Zugriff verweigert)"
#: cps/web.py:2076
#: cps/web.py:2138
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Fehler beim speichern der Datei %s (Zugriff verweigert)"
#: cps/web.py:2081
#: cps/web.py:2143
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Fehler beim Löschen von Datei %s (Zugriff verweigert)"
@ -368,7 +376,7 @@ msgstr "DLS"
msgid "Admin"
msgstr "Admin"
#: cps/templates/admin.html:12 cps/templates/detail.html:116
#: cps/templates/admin.html:12 cps/templates/detail.html:117
msgid "Download"
msgstr "Download"
@ -460,22 +468,30 @@ msgstr "Calibre-web Neustarten"
msgid "Stop Calibre-web"
msgstr "Stoppe Calibre-web"
#: cps/templates/admin.html:91
#: cps/templates/admin.html:81
msgid "Check for update"
msgstr "Suche nach Update"
#: cps/templates/admin.html:82
msgid "Perform Update"
msgstr "Update durchführen"
#: cps/templates/admin.html:93
msgid "Do you really want to restart Calibre-web?"
msgstr "Calibre-web wirklich neustarten?"
#: cps/templates/admin.html:92 cps/templates/admin.html:107
#: cps/templates/admin.html:94 cps/templates/admin.html:109
msgid "Ok"
msgstr "Ok"
#: cps/templates/admin.html:93 cps/templates/admin.html:108
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:54
#: cps/templates/admin.html:95 cps/templates/admin.html:110
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75
#: cps/templates/email_edit.html:36 cps/templates/shelf_edit.html:17
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:107
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back"
msgstr "Zurück"
#: cps/templates/admin.html:106
#: cps/templates/admin.html:108
msgid "Do you really want to stop Calibre-web?"
msgstr "Calibre-web wirklich stoppen"
@ -495,7 +511,7 @@ msgstr "Beschreibung"
msgid "Tags"
msgstr "Tags"
#: cps/templates/book_edit.html:33 cps/templates/layout.html:133
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136
#: cps/templates/search_form.html:33
msgid "Series"
msgstr "Serien"
@ -528,9 +544,9 @@ msgstr "Nein"
msgid "view book after edit"
msgstr "Buch nach Bearbeitung ansehen"
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:52
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:73
#: cps/templates/login.html:19 cps/templates/search_form.html:75
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:105
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:109
msgid "Submit"
msgstr "Abschicken"
@ -566,7 +582,31 @@ msgstr "Anonymes Browsen aktivieren"
msgid "Enable public registration"
msgstr "Öffentliche Registrierung aktivieren"
#: cps/templates/config_edit.html:57 cps/templates/layout.html:91
#: cps/templates/config_edit.html:52
msgid "Default Settings for new users"
msgstr "Default Einstellungen für neue Benutzer"
#: cps/templates/config_edit.html:55 cps/templates/user_edit.html:80
msgid "Admin user"
msgstr "Admin Benutzer"
#: cps/templates/config_edit.html:59 cps/templates/user_edit.html:85
msgid "Allow Downloads"
msgstr "Downloads erlauben"
#: cps/templates/config_edit.html:63 cps/templates/user_edit.html:89
msgid "Allow Uploads"
msgstr "Uploads erlauben"
#: cps/templates/config_edit.html:67 cps/templates/user_edit.html:93
msgid "Allow Edit"
msgstr "Bearbeiten erlauben"
#: cps/templates/config_edit.html:71 cps/templates/user_edit.html:98
msgid "Allow Changing Password"
msgstr "Passwort ändern erlauben"
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91
#: cps/templates/login.html:4
msgid "Login"
msgstr "Login"
@ -583,19 +623,23 @@ msgstr "von"
msgid "language"
msgstr "Sprache"
#: cps/templates/detail.html:105
#: cps/templates/detail.html:74
msgid "Publishing date"
msgstr "Herausgabedatum"
#: cps/templates/detail.html:106
msgid "Description:"
msgstr "Beschreibung"
#: cps/templates/detail.html:133
#: cps/templates/detail.html:134
msgid "Read in browser"
msgstr "Im Browser lesen"
#: cps/templates/detail.html:153
#: cps/templates/detail.html:154
msgid "Add to shelf"
msgstr "Zu Bücherregal hinzufügen"
#: cps/templates/detail.html:193
#: cps/templates/detail.html:194
msgid "Edit metadata"
msgstr "Metadaten bearbeiten"
@ -654,34 +698,42 @@ msgid "Hot Books"
msgstr "Beliebte Bücher"
#: cps/templates/index.xml:19
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:127
msgid "Best rated Books"
msgstr "Best bewertete Bücher"
#: cps/templates/index.xml:26
msgid "Popular publications from this catalog based on Rating."
msgstr "Beliebte Veröffentlichungen dieses Katalogs basierend auf Bewertungen"
#: cps/templates/index.xml:22 cps/templates/layout.html:122
#: cps/templates/index.xml:29 cps/templates/layout.html:122
msgid "New Books"
msgstr "Neue Bücher"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:33
msgid "The latest Books"
msgstr "Die neuesten Bücher"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:40
msgid "Show Random Books"
msgstr "Zeige zufällige Bücher"
#: cps/templates/index.xml:36 cps/templates/layout.html:135
#: cps/templates/index.xml:43 cps/templates/layout.html:138
msgid "Authors"
msgstr "Autoren"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:47
msgid "Books ordered by Author"
msgstr "Bücher nach Autoren sortiert"
#: cps/templates/index.xml:47
#: cps/templates/index.xml:54
msgid "Books ordered by category"
msgstr "Bücher nach Kategorien sortiert"
#: cps/templates/index.xml:54
#: cps/templates/index.xml:61
msgid "Books ordered by series"
msgstr "Bücher nach Reihen geordnet"
@ -709,31 +761,31 @@ msgstr "Registrieren"
msgid "Browse"
msgstr "Browsen"
#: cps/templates/layout.html:127
#: cps/templates/layout.html:130
msgid "Discover"
msgstr "Entdecke"
#: cps/templates/layout.html:130
#: cps/templates/layout.html:133
msgid "Categories"
msgstr "Kategorien"
#: cps/templates/layout.html:137 cps/templates/search_form.html:54
#: cps/templates/layout.html:140 cps/templates/search_form.html:54
msgid "Languages"
msgstr "Sprachen"
#: cps/templates/layout.html:140
#: cps/templates/layout.html:143
msgid "Public Shelves"
msgstr "Öffentiche Bücherregale"
#: cps/templates/layout.html:144
#: cps/templates/layout.html:147
msgid "Your Shelves"
msgstr "Deine Bücherregale"
#: cps/templates/layout.html:149
#: cps/templates/layout.html:152
msgid "Create a Shelf"
msgstr "Bücherregal erzeugen"
#: cps/templates/layout.html:150
#: cps/templates/layout.html:153
msgid "About"
msgstr "Über"
@ -751,6 +803,10 @@ msgstr "Passwort"
msgid "Remember me"
msgstr "Merken"
#: cps/templates/osd.xml:5
msgid "Calibre Web ebook catalog"
msgstr "Calibre Web Ebook Katalog"
#: cps/templates/read.html:136
msgid "Reflow text when sidebars are open."
msgstr "Text umbrechen wenn Seitenleiste geöffnet ist"
@ -851,6 +907,14 @@ msgstr "Bücher in dieser Bibliothek"
msgid "Authors in this Library"
msgstr "Autoren in dieser Bibliothek"
#: cps/templates/stats.html:45
msgid "Categories in this Library"
msgstr "Kategorien in dieser Bibliothek"
#: cps/templates/stats.html:49
msgid "Series in this Library"
msgstr "Serien in dieser Bibliothek"
#: cps/templates/user_edit.html:23
msgid "Kindle E-Mail"
msgstr "Kindle E-Mail"
@ -872,50 +936,34 @@ msgid "Show hot books"
msgstr "Zeige Auswahl Beliebte Bücher"
#: cps/templates/user_edit.html:53
msgid "Show best rated books"
msgstr "Zeige am besten bewertete Bücher"
#: cps/templates/user_edit.html:57
msgid "Show language selection"
msgstr "Zeige Sprachauswahl"
#: cps/templates/user_edit.html:57
#: cps/templates/user_edit.html:61
msgid "Show series selection"
msgstr "Zeige Serienauswahl"
#: cps/templates/user_edit.html:61
#: cps/templates/user_edit.html:65
msgid "Show category selection"
msgstr "Zeige Kategorienauswahl"
#: cps/templates/user_edit.html:65
#: cps/templates/user_edit.html:69
msgid "Show author selection"
msgstr "Zeige Autorenauswahl"
#: cps/templates/user_edit.html:69
#: cps/templates/user_edit.html:73
msgid "Show random books in detail view"
msgstr "Zeige zufällige Bücher in der Detailansicht"
#: cps/templates/user_edit.html:76
msgid "Admin user"
msgstr "Admin Benutzer"
#: cps/templates/user_edit.html:81
msgid "Allow Downloads"
msgstr "Downloads erlauben"
#: cps/templates/user_edit.html:85
msgid "Allow Uploads"
msgstr "Uploads erlauben"
#: cps/templates/user_edit.html:89
msgid "Allow Edit"
msgstr "Bearbeiten erlauben"
#: cps/templates/user_edit.html:94
msgid "Allow Changing Password"
msgstr "Passwort ändern erlauben"
#: cps/templates/user_edit.html:101
#: cps/templates/user_edit.html:105
msgid "Delete this user"
msgstr "Benutzer löschen"
#: cps/templates/user_edit.html:112
#: cps/templates/user_edit.html:116
msgid "Recent Downloads"
msgstr "Letzte Downloads"

@ -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-01-28 20:35+0100\n"
"POT-Creation-Date: 2017-02-10 20:17+0100\n"
"PO-Revision-Date: 2016-11-13 18:35+0100\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.3.4\n"
#: cps/book_formats.py:109 cps/book_formats.py:113 cps/web.py:982
#: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:998
msgid "not installed"
msgstr "No instalado"
@ -42,7 +42,7 @@ msgstr "Prueba de Correo Calibre-web"
msgid "This email has been sent via calibre web."
msgstr "Este mensaje ha sido enviado via Calibre Web."
#: cps/helper.py:153 cps/templates/detail.html:129
#: cps/helper.py:153 cps/templates/detail.html:130
msgid "Send to Kindle"
msgstr "Enviar a Kindle"
@ -58,275 +58,283 @@ msgstr "No fue posible convertir de epub a mobi"
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "El fichero solicitado no puede ser leido. Problema de permisos?"
#: cps/ub.py:380
#: cps/ub.py:443
msgid "Guest"
msgstr ""
#: cps/web.py:774
#: cps/web.py:778
msgid "Latest Books"
msgstr "Libros recientes"
#: cps/web.py:799
#: cps/web.py:803
msgid "Hot Books (most downloaded)"
msgstr "Libros Populares (los mas descargados)"
#: cps/templates/index.xml:29 cps/web.py:808
#: cps/web.py:813
msgid "Best rated books"
msgstr ""
#: cps/templates/index.xml:36 cps/web.py:822
msgid "Random Books"
msgstr "Libros al Azar"
#: cps/web.py:821
#: cps/web.py:835
msgid "Author list"
msgstr "Lista de Autores"
#: cps/web.py:838
#: cps/web.py:846
#, python-format
msgid "Author: %(nam)s"
msgstr "Autor : %(nam)s"
msgid "Author: %(name)s"
msgstr ""
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Error en apertura del Objeto. El archivo no existe o no es accesible"
#: cps/templates/index.xml:50 cps/web.py:851
#: cps/templates/index.xml:57 cps/web.py:862
msgid "Series list"
msgstr "lista de Series"
#: cps/web.py:862
#: cps/web.py:874
#, python-format
msgid "Series: %(serie)s"
msgstr "Series : %(serie)s"
#: cps/web.py:864 cps/web.py:961 cps/web.py:1179 cps/web.py:2041
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Error en apertura del Objeto. El archivo no existe o no es accesible"
#: cps/web.py:895
#: cps/web.py:907
msgid "Available languages"
msgstr "Lenguajes disponibles"
#: cps/web.py:910
#: cps/web.py:922
#, python-format
msgid "Language: %(name)s"
msgstr "Lenguaje: %(name)s"
#: cps/templates/index.xml:43 cps/web.py:923
#: cps/templates/index.xml:50 cps/web.py:935
msgid "Category list"
msgstr "Lista de Categorias"
#: cps/web.py:933
#: cps/web.py:947
#, python-format
msgid "Category: %(name)s"
msgstr "Categoria : %(name)s"
#: cps/web.py:992
#: cps/web.py:1008
msgid "Statistics"
msgstr "Estadisticas"
#: cps/web.py:1013
#: cps/web.py:1029
msgid "Performing Restart, please reload page"
msgstr ""
#: cps/web.py:1015
#: cps/web.py:1031
msgid "Performing shutdown of server, please close window"
msgstr ""
#: cps/web.py:1091 cps/web.py:1104
#: cps/web.py:1055
msgid "Update done"
msgstr ""
#: cps/web.py:1128 cps/web.py:1141
msgid "search"
msgstr ""
#: cps/web.py:1155 cps/web.py:1162 cps/web.py:1169 cps/web.py:1176
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213
msgid "Read a Book"
msgstr "Leer un Libro"
#: cps/web.py:1227 cps/web.py:1649
#: cps/web.py:1264 cps/web.py:1701
msgid "Please fill out all fields!"
msgstr "Por favor llenar todos los campos!"
#: cps/web.py:1228 cps/web.py:1244 cps/web.py:1249 cps/web.py:1251
#: cps/web.py:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288
msgid "register"
msgstr "Registrarse"
#: cps/web.py:1243
#: cps/web.py:1280
msgid "An unknown error occured. Please try again later."
msgstr "Ocurrio un error. Intentar de nuevo mas tarde."
#: cps/web.py:1248
#: cps/web.py:1285
msgid "This username or email address is already in use."
msgstr "Usuario o direccion de correo en uso."
#: cps/web.py:1266
#: cps/web.py:1303
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Sesion iniciada como : '%(nickname)s'"
#: cps/web.py:1270
#: cps/web.py:1308
msgid "Wrong Username or Password"
msgstr "Usuario o contraseña invalido"
#: cps/web.py:1272
#: cps/web.py:1310
msgid "login"
msgstr "Iniciar Sesion"
#: cps/web.py:1289
#: cps/web.py:1327
msgid "Please configure the SMTP mail settings first..."
msgstr "Configurar primero los parametros SMTP por favor..."
#: cps/web.py:1293
#: cps/web.py:1331
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Envio de Libro a %(kindlemail)s correctamente"
#: cps/web.py:1297
#: cps/web.py:1335
#, 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:1299
#: cps/web.py:1337
msgid "Please configure your kindle email address first..."
msgstr "Configurar primero la dirección de correo Kindle por favor..."
#: cps/web.py:1319
#: cps/web.py:1357
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "El libro fue agregado a el estante: %(sname)s"
#: cps/web.py:1340
#: cps/web.py:1378
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "El libro fue removido del estante: %(sname)s"
#: cps/web.py:1359 cps/web.py:1383
#: cps/web.py:1397 cps/web.py:1421
#, 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:1364
#: cps/web.py:1402
#, python-format
msgid "Shelf %(title)s created"
msgstr "Estante %(title)s creado"
#: cps/web.py:1366 cps/web.py:1394
#: cps/web.py:1404 cps/web.py:1432
msgid "There was an error"
msgstr "Hemos tenido un error"
#: cps/web.py:1367 cps/web.py:1369
#: cps/web.py:1405 cps/web.py:1407
msgid "create a shelf"
msgstr "Crear un Estante"
#: cps/web.py:1392
#: cps/web.py:1430
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
#: cps/web.py:1395 cps/web.py:1397
#: cps/web.py:1433 cps/web.py:1435
msgid "Edit a shelf"
msgstr ""
#: cps/web.py:1415
#: cps/web.py:1453
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "Estante %(name)s fue borrado correctamente"
#: cps/web.py:1437
#: cps/web.py:1475
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Estante: '%(name)s'"
#: cps/web.py:1468
#: cps/web.py:1506
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
#: cps/web.py:1528
#: cps/web.py:1568
msgid "Found an existing account for this email address."
msgstr "Existe una cuenta vinculada a esta cuenta de correo."
#: cps/web.py:1530 cps/web.py:1534
#: cps/web.py:1570 cps/web.py:1574
#, python-format
msgid "%(name)s's profile"
msgstr "Perfil de %(name)s"
#: cps/web.py:1531
#: cps/web.py:1571
msgid "Profile updated"
msgstr "Perfil actualizado"
#: cps/web.py:1544
#: cps/web.py:1584
msgid "Admin page"
msgstr ""
#: cps/web.py:1604
#: cps/web.py:1656
msgid "Calibre-web configuration updated"
msgstr ""
#: cps/web.py:1611 cps/web.py:1617 cps/web.py:1630
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682
msgid "Basic Configuration"
msgstr ""
#: cps/web.py:1615
#: cps/web.py:1667
msgid "DB location is not valid, please enter correct path"
msgstr ""
#: cps/templates/admin.html:33 cps/web.py:1651 cps/web.py:1693
#: cps/templates/admin.html:33 cps/web.py:1703 cps/web.py:1749
msgid "Add new user"
msgstr "Agregar un nuevo usuario"
#: cps/web.py:1687
#: cps/web.py:1741
#, python-format
msgid "User '%(user)s' created"
msgstr "Usuario '%(user)s' creado"
#: cps/web.py:1691
#: cps/web.py:1745
msgid "Found an existing account for this email address or nickname."
msgstr "Se ha encontrado una cuenta vinculada a esta cuenta de correo o usuario."
#: cps/web.py:1711
#: cps/web.py:1767
msgid "Mail settings updated"
msgstr "Parametros de correo actualizados"
#: cps/web.py:1717
#: cps/web.py:1773
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Exito al realizar envio de prueba a %(kindlemail)s"
#: cps/web.py:1720
#: cps/web.py:1776
#, 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:1721
#: cps/web.py:1777
msgid "Edit mail settings"
msgstr "Editar parametros de correo"
#: cps/web.py:1749
#: cps/web.py:1805
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Usuario '%(nick)s' borrado"
#: cps/web.py:1825
#: cps/web.py:1886
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Usuario '%(nick)s' Actualizado"
#: cps/web.py:1828
#: cps/web.py:1889
msgid "An unknown error occured."
msgstr "Oups ! Error inesperado."
#: cps/web.py:1831
#: cps/web.py:1892
#, python-format
msgid "Edit User %(nick)s"
msgstr "Editar Usuario %(nick)s"
#: cps/web.py:2036 cps/web.py:2039 cps/web.py:2113
#: cps/web.py:2098 cps/web.py:2101 cps/web.py:2175
msgid "edit metadata"
msgstr ""
#: cps/web.py:2071
#: cps/web.py:2133
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Fallo al crear la ruta %s (permiso negado)"
#: cps/web.py:2076
#: cps/web.py:2138
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Fallo al almacenar el archivo %s (permiso negado)"
#: cps/web.py:2081
#: cps/web.py:2143
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Fallo al borrar el archivo %s (permiso negado)"
@ -355,7 +363,7 @@ msgstr "DLS"
msgid "Admin"
msgstr "Administracion"
#: cps/templates/admin.html:12 cps/templates/detail.html:116
#: cps/templates/admin.html:12 cps/templates/detail.html:117
msgid "Download"
msgstr "Descarga"
@ -447,22 +455,30 @@ msgstr ""
msgid "Stop Calibre-web"
msgstr ""
#: cps/templates/admin.html:91
#: cps/templates/admin.html:81
msgid "Check for update"
msgstr ""
#: cps/templates/admin.html:82
msgid "Perform Update"
msgstr ""
#: cps/templates/admin.html:93
msgid "Do you really want to restart Calibre-web?"
msgstr ""
#: cps/templates/admin.html:92 cps/templates/admin.html:107
#: cps/templates/admin.html:94 cps/templates/admin.html:109
msgid "Ok"
msgstr ""
#: cps/templates/admin.html:93 cps/templates/admin.html:108
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:54
#: cps/templates/admin.html:95 cps/templates/admin.html:110
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75
#: cps/templates/email_edit.html:36 cps/templates/shelf_edit.html:17
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:107
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back"
msgstr "Regresar"
#: cps/templates/admin.html:106
#: cps/templates/admin.html:108
msgid "Do you really want to stop Calibre-web?"
msgstr ""
@ -482,7 +498,7 @@ msgstr "Descripcion"
msgid "Tags"
msgstr "Etiqueta"
#: cps/templates/book_edit.html:33 cps/templates/layout.html:133
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136
#: cps/templates/search_form.html:33
msgid "Series"
msgstr "Series"
@ -515,9 +531,9 @@ msgstr "No"
msgid "view book after edit"
msgstr "Ver libro tras la edicion"
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:52
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:73
#: cps/templates/login.html:19 cps/templates/search_form.html:75
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:105
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:109
msgid "Submit"
msgstr "Enviar"
@ -553,7 +569,31 @@ msgstr ""
msgid "Enable public registration"
msgstr ""
#: cps/templates/config_edit.html:57 cps/templates/layout.html:91
#: cps/templates/config_edit.html:52
msgid "Default Settings for new users"
msgstr ""
#: cps/templates/config_edit.html:55 cps/templates/user_edit.html:80
msgid "Admin user"
msgstr "Usuario Administrador"
#: cps/templates/config_edit.html:59 cps/templates/user_edit.html:85
msgid "Allow Downloads"
msgstr "Permitir descargas"
#: cps/templates/config_edit.html:63 cps/templates/user_edit.html:89
msgid "Allow Uploads"
msgstr "Permitir subidas de archivos"
#: cps/templates/config_edit.html:67 cps/templates/user_edit.html:93
msgid "Allow Edit"
msgstr "Permitir editar"
#: cps/templates/config_edit.html:71 cps/templates/user_edit.html:98
msgid "Allow Changing Password"
msgstr "Permitir cambiar la clave"
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91
#: cps/templates/login.html:4
msgid "Login"
msgstr "Inicio de Sesion"
@ -570,19 +610,23 @@ msgstr "de"
msgid "language"
msgstr "Lenguaje"
#: cps/templates/detail.html:105
#: cps/templates/detail.html:74
msgid "Publishing date"
msgstr ""
#: cps/templates/detail.html:106
msgid "Description:"
msgstr "Descripcion :"
#: cps/templates/detail.html:133
#: cps/templates/detail.html:134
msgid "Read in browser"
msgstr "Ver en el navegador"
#: cps/templates/detail.html:153
#: cps/templates/detail.html:154
msgid "Add to shelf"
msgstr "Agregar al estante"
#: cps/templates/detail.html:193
#: cps/templates/detail.html:194
msgid "Edit metadata"
msgstr "Editar la metadata"
@ -639,34 +683,42 @@ msgid "Hot Books"
msgstr "Libros Populares"
#: cps/templates/index.xml:19
msgid "Popular publications from this catalog based on Downloads."
msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:127
msgid "Best rated Books"
msgstr ""
#: cps/templates/index.xml:26
msgid "Popular publications from this catalog based on Rating."
msgstr "Publicaciones populares del catalogo basados en el puntaje."
#: cps/templates/index.xml:22 cps/templates/layout.html:122
#: cps/templates/index.xml:29 cps/templates/layout.html:122
msgid "New Books"
msgstr "Nuevos Libros"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:33
msgid "The latest Books"
msgstr "Libros Recientes"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:40
msgid "Show Random Books"
msgstr "Mostrar libros al azar"
#: cps/templates/index.xml:36 cps/templates/layout.html:135
#: cps/templates/index.xml:43 cps/templates/layout.html:138
msgid "Authors"
msgstr "Autores"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:47
msgid "Books ordered by Author"
msgstr "Libros ordenados por Autor"
#: cps/templates/index.xml:47
#: cps/templates/index.xml:54
msgid "Books ordered by category"
msgstr "Libros ordenados por Categorias"
#: cps/templates/index.xml:54
#: cps/templates/index.xml:61
msgid "Books ordered by series"
msgstr "Libros ordenados por Series"
@ -694,31 +746,31 @@ msgstr "Registro"
msgid "Browse"
msgstr "Explorar"
#: cps/templates/layout.html:127
#: cps/templates/layout.html:130
msgid "Discover"
msgstr "Descubrir"
#: cps/templates/layout.html:130
#: cps/templates/layout.html:133
msgid "Categories"
msgstr "Categoria"
#: cps/templates/layout.html:137 cps/templates/search_form.html:54
#: cps/templates/layout.html:140 cps/templates/search_form.html:54
msgid "Languages"
msgstr "Lenguaje"
#: cps/templates/layout.html:140
#: cps/templates/layout.html:143
msgid "Public Shelves"
msgstr "Estantes Publicos"
#: cps/templates/layout.html:144
#: cps/templates/layout.html:147
msgid "Your Shelves"
msgstr "Sus Estantes"
#: cps/templates/layout.html:149
#: cps/templates/layout.html:152
msgid "Create a Shelf"
msgstr "Crear un estante"
#: cps/templates/layout.html:150
#: cps/templates/layout.html:153
msgid "About"
msgstr "Acerca de"
@ -736,6 +788,10 @@ msgstr "Clave"
msgid "Remember me"
msgstr "Recordarme"
#: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog"
msgstr ""
#: cps/templates/read.html:136
msgid "Reflow text when sidebars are open."
msgstr "Redimensionar el texto cuando las barras laterales estan abiertas"
@ -836,6 +892,14 @@ msgstr "Libros en esta Biblioteca"
msgid "Authors in this Library"
msgstr "Autores en esta Biblioteca"
#: cps/templates/stats.html:45
msgid "Categories in this Library"
msgstr ""
#: cps/templates/stats.html:49
msgid "Series in this Library"
msgstr ""
#: cps/templates/user_edit.html:23
msgid "Kindle E-Mail"
msgstr "Correo del Kindle"
@ -857,50 +921,34 @@ msgid "Show hot books"
msgstr "Mostrar libros populares"
#: cps/templates/user_edit.html:53
msgid "Show best rated books"
msgstr ""
#: cps/templates/user_edit.html:57
msgid "Show language selection"
msgstr "Mostrar lenguaje seleccionado"
#: cps/templates/user_edit.html:57
#: cps/templates/user_edit.html:61
msgid "Show series selection"
msgstr "Mostrar series seleccionadas"
#: cps/templates/user_edit.html:61
#: cps/templates/user_edit.html:65
msgid "Show category selection"
msgstr "Mostrar categorias elegidas"
#: cps/templates/user_edit.html:65
#: cps/templates/user_edit.html:69
msgid "Show author selection"
msgstr ""
#: cps/templates/user_edit.html:69
#: cps/templates/user_edit.html:73
msgid "Show random books in detail view"
msgstr ""
#: cps/templates/user_edit.html:76
msgid "Admin user"
msgstr "Usuario Administrador"
#: cps/templates/user_edit.html:81
msgid "Allow Downloads"
msgstr "Permitir descargas"
#: cps/templates/user_edit.html:85
msgid "Allow Uploads"
msgstr "Permitir subidas de archivos"
#: cps/templates/user_edit.html:89
msgid "Allow Edit"
msgstr "Permitir editar"
#: cps/templates/user_edit.html:94
msgid "Allow Changing Password"
msgstr "Permitir cambiar la clave"
#: cps/templates/user_edit.html:101
#: cps/templates/user_edit.html:105
msgid "Delete this user"
msgstr "Borrar este usuario"
#: cps/templates/user_edit.html:112
#: cps/templates/user_edit.html:116
msgid "Recent Downloads"
msgstr "Descargas Recientes"

@ -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-01-28 20:35+0100\n"
"POT-Creation-Date: 2017-02-10 20:17+0100\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.3.4\n"
#: cps/book_formats.py:109 cps/book_formats.py:113 cps/web.py:982
#: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:998
msgid "not installed"
msgstr ""
@ -48,7 +48,7 @@ msgstr ""
msgid "This email has been sent via calibre web."
msgstr "Ce message a été envoyé depuis calibre web."
#: cps/helper.py:153 cps/templates/detail.html:129
#: cps/helper.py:153 cps/templates/detail.html:130
msgid "Send to Kindle"
msgstr "Envoyer ver Kindle"
@ -66,277 +66,285 @@ msgstr ""
"Le fichier demandé ne peux pas être lu. Peut-être de mauvaises "
"permissions ?"
#: cps/ub.py:380
#: cps/ub.py:443
msgid "Guest"
msgstr ""
#: cps/web.py:774
#: cps/web.py:778
msgid "Latest Books"
msgstr "Derniers livres"
#: cps/web.py:799
#: cps/web.py:803
msgid "Hot Books (most downloaded)"
msgstr "Livres populaires (les plus téléchargés)"
#: cps/templates/index.xml:29 cps/web.py:808
#: cps/web.py:813
msgid "Best rated books"
msgstr ""
#: cps/templates/index.xml:36 cps/web.py:822
msgid "Random Books"
msgstr "Livres au hasard"
#: cps/web.py:821
#: cps/web.py:835
msgid "Author list"
msgstr "Liste des auteurs"
#: cps/web.py:838
#: cps/web.py:846
#, python-format
msgid "Author: %(nam)s"
msgstr "Auteur : %(nam)s"
msgid "Author: %(name)s"
msgstr ""
#: cps/templates/index.xml:50 cps/web.py:851
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103
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:57 cps/web.py:862
msgid "Series list"
msgstr "Liste des séries"
#: cps/web.py:862
#: cps/web.py:874
#, python-format
msgid "Series: %(serie)s"
msgstr "Séries : %(serie)s"
#: cps/web.py:864 cps/web.py:961 cps/web.py:1179 cps/web.py:2041
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/web.py:895
#: cps/web.py:907
msgid "Available languages"
msgstr "Langues disponibles"
#: cps/web.py:910
#: cps/web.py:922
#, python-format
msgid "Language: %(name)s"
msgstr "Langue : %(name)s"
#: cps/templates/index.xml:43 cps/web.py:923
#: cps/templates/index.xml:50 cps/web.py:935
msgid "Category list"
msgstr "Liste des catégories"
#: cps/web.py:933
#: cps/web.py:947
#, python-format
msgid "Category: %(name)s"
msgstr "Catégorie : %(name)s"
#: cps/web.py:992
#: cps/web.py:1008
msgid "Statistics"
msgstr "Statistiques"
#: cps/web.py:1013
#: cps/web.py:1029
msgid "Performing Restart, please reload page"
msgstr ""
#: cps/web.py:1015
#: cps/web.py:1031
msgid "Performing shutdown of server, please close window"
msgstr ""
#: cps/web.py:1091 cps/web.py:1104
#: cps/web.py:1055
msgid "Update done"
msgstr ""
#: cps/web.py:1128 cps/web.py:1141
msgid "search"
msgstr ""
#: cps/web.py:1155 cps/web.py:1162 cps/web.py:1169 cps/web.py:1176
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213
msgid "Read a Book"
msgstr "Lire un livre"
#: cps/web.py:1227 cps/web.py:1649
#: cps/web.py:1264 cps/web.py:1701
msgid "Please fill out all fields!"
msgstr "SVP, complétez tous les champs !"
#: cps/web.py:1228 cps/web.py:1244 cps/web.py:1249 cps/web.py:1251
#: cps/web.py:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288
msgid "register"
msgstr "S'enregistrer"
#: cps/web.py:1243
#: cps/web.py:1280
msgid "An unknown error occured. Please try again later."
msgstr "Une erreur a eu lieu. Merci de réessayez plus tard."
#: cps/web.py:1248
#: cps/web.py:1285
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:1266
#: cps/web.py:1303
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "Vous êtes maintenant connecté sous : '%(nickname)s'"
#: cps/web.py:1270
#: cps/web.py:1308
msgid "Wrong Username or Password"
msgstr "Mauvais nom d'utilisateur ou mot de passe"
#: cps/web.py:1272
#: cps/web.py:1310
msgid "login"
msgstr "Connexion"
#: cps/web.py:1289
#: cps/web.py:1327
msgid "Please configure the SMTP mail settings first..."
msgstr "Veillez configurer les paramètres smtp d'abord..."
#: cps/web.py:1293
#: cps/web.py:1331
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "Livres envoyés à %(kindlemail)s avec succès"
#: cps/web.py:1297
#: cps/web.py:1335
#, 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:1299
#: cps/web.py:1337
msgid "Please configure your kindle email address first..."
msgstr "Veuillez configurer votre adresse kindle d'abord..."
#: cps/web.py:1319
#: cps/web.py:1357
#, 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:1340
#: cps/web.py:1378
#, 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:1359 cps/web.py:1383
#: cps/web.py:1397 cps/web.py:1421
#, 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:1364
#: cps/web.py:1402
#, python-format
msgid "Shelf %(title)s created"
msgstr "Étagère %(title)s créée"
#: cps/web.py:1366 cps/web.py:1394
#: cps/web.py:1404 cps/web.py:1432
msgid "There was an error"
msgstr "Il y a eu une erreur"
#: cps/web.py:1367 cps/web.py:1369
#: cps/web.py:1405 cps/web.py:1407
msgid "create a shelf"
msgstr "Créer une étagère"
#: cps/web.py:1392
#: cps/web.py:1430
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
#: cps/web.py:1395 cps/web.py:1397
#: cps/web.py:1433 cps/web.py:1435
msgid "Edit a shelf"
msgstr ""
#: cps/web.py:1415
#: cps/web.py:1453
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "L'étagère %(name)s a été supprimé avec succès"
#: cps/web.py:1437
#: cps/web.py:1475
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "Étagère : '%(name)s'"
#: cps/web.py:1468
#: cps/web.py:1506
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
#: cps/web.py:1528
#: cps/web.py:1568
msgid "Found an existing account for this email address."
msgstr "Un compte avec cette adresse de courriel existe déjà."
#: cps/web.py:1530 cps/web.py:1534
#: cps/web.py:1570 cps/web.py:1574
#, python-format
msgid "%(name)s's profile"
msgstr "Profil de %(name)s"
#: cps/web.py:1531
#: cps/web.py:1571
msgid "Profile updated"
msgstr "Profil mis à jour"
#: cps/web.py:1544
#: cps/web.py:1584
msgid "Admin page"
msgstr ""
#: cps/web.py:1604
#: cps/web.py:1656
msgid "Calibre-web configuration updated"
msgstr ""
#: cps/web.py:1611 cps/web.py:1617 cps/web.py:1630
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682
msgid "Basic Configuration"
msgstr ""
#: cps/web.py:1615
#: cps/web.py:1667
msgid "DB location is not valid, please enter correct path"
msgstr ""
#: cps/templates/admin.html:33 cps/web.py:1651 cps/web.py:1693
#: cps/templates/admin.html:33 cps/web.py:1703 cps/web.py:1749
msgid "Add new user"
msgstr "Ajouter un nouvel utilisateur"
#: cps/web.py:1687
#: cps/web.py:1741
#, python-format
msgid "User '%(user)s' created"
msgstr "Utilisateur '%(user)s' créé"
#: cps/web.py:1691
#: cps/web.py:1745
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:1711
#: cps/web.py:1767
msgid "Mail settings updated"
msgstr "Paramètres de courriel mis à jour"
#: cps/web.py:1717
#: cps/web.py:1773
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr ""
#: cps/web.py:1720
#: cps/web.py:1776
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr ""
#: cps/web.py:1721
#: cps/web.py:1777
msgid "Edit mail settings"
msgstr "Éditer les paramètres de courriel"
#: cps/web.py:1749
#: cps/web.py:1805
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "Utilisateur '%(nick)s' supprimé"
#: cps/web.py:1825
#: cps/web.py:1886
#, python-format
msgid "User '%(nick)s' updated"
msgstr "Utilisateur '%(nick)s' mis à jour"
#: cps/web.py:1828
#: cps/web.py:1889
msgid "An unknown error occured."
msgstr "Oups ! Une erreur inconnue a eu lieu."
#: cps/web.py:1831
#: cps/web.py:1892
#, python-format
msgid "Edit User %(nick)s"
msgstr "Éditer l'utilisateur %(nick)s"
#: cps/web.py:2036 cps/web.py:2039 cps/web.py:2113
#: cps/web.py:2098 cps/web.py:2101 cps/web.py:2175
msgid "edit metadata"
msgstr ""
#: cps/web.py:2071
#: cps/web.py:2133
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "Impossible de créer le chemin %s (permission refusée)"
#: cps/web.py:2076
#: cps/web.py:2138
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "Impossible d'enregistrer le fichier %s (permission refusée)"
#: cps/web.py:2081
#: cps/web.py:2143
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "Impossible de supprimer le fichier %s (permission refusée)"
@ -365,7 +373,7 @@ msgstr "DLS"
msgid "Admin"
msgstr "Administration"
#: cps/templates/admin.html:12 cps/templates/detail.html:116
#: cps/templates/admin.html:12 cps/templates/detail.html:117
msgid "Download"
msgstr "Télécharger"
@ -457,22 +465,30 @@ msgstr ""
msgid "Stop Calibre-web"
msgstr ""
#: cps/templates/admin.html:91
#: cps/templates/admin.html:81
msgid "Check for update"
msgstr ""
#: cps/templates/admin.html:82
msgid "Perform Update"
msgstr ""
#: cps/templates/admin.html:93
msgid "Do you really want to restart Calibre-web?"
msgstr ""
#: cps/templates/admin.html:92 cps/templates/admin.html:107
#: cps/templates/admin.html:94 cps/templates/admin.html:109
msgid "Ok"
msgstr ""
#: cps/templates/admin.html:93 cps/templates/admin.html:108
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:54
#: cps/templates/admin.html:95 cps/templates/admin.html:110
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75
#: cps/templates/email_edit.html:36 cps/templates/shelf_edit.html:17
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:107
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back"
msgstr "Retour"
#: cps/templates/admin.html:106
#: cps/templates/admin.html:108
msgid "Do you really want to stop Calibre-web?"
msgstr ""
@ -492,7 +508,7 @@ msgstr "Description"
msgid "Tags"
msgstr "Étiquette"
#: cps/templates/book_edit.html:33 cps/templates/layout.html:133
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136
#: cps/templates/search_form.html:33
msgid "Series"
msgstr "Séries"
@ -525,9 +541,9 @@ msgstr "Non"
msgid "view book after edit"
msgstr "Voir le livre après l'édition"
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:52
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:73
#: cps/templates/login.html:19 cps/templates/search_form.html:75
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:105
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:109
msgid "Submit"
msgstr "Soumettre"
@ -563,7 +579,31 @@ msgstr ""
msgid "Enable public registration"
msgstr ""
#: cps/templates/config_edit.html:57 cps/templates/layout.html:91
#: cps/templates/config_edit.html:52
msgid "Default Settings for new users"
msgstr ""
#: cps/templates/config_edit.html:55 cps/templates/user_edit.html:80
msgid "Admin user"
msgstr "Utilisateur admin"
#: cps/templates/config_edit.html:59 cps/templates/user_edit.html:85
msgid "Allow Downloads"
msgstr "Permettre les téléchargements"
#: cps/templates/config_edit.html:63 cps/templates/user_edit.html:89
msgid "Allow Uploads"
msgstr "Permettre les téléversements"
#: cps/templates/config_edit.html:67 cps/templates/user_edit.html:93
msgid "Allow Edit"
msgstr "Permettre l'édition"
#: cps/templates/config_edit.html:71 cps/templates/user_edit.html:98
msgid "Allow Changing Password"
msgstr "Permettre le changement de mot de passe"
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91
#: cps/templates/login.html:4
msgid "Login"
msgstr "Connexion"
@ -580,19 +620,23 @@ msgstr ""
msgid "language"
msgstr "Langue"
#: cps/templates/detail.html:105
#: cps/templates/detail.html:74
msgid "Publishing date"
msgstr ""
#: cps/templates/detail.html:106
msgid "Description:"
msgstr "Description :"
#: cps/templates/detail.html:133
#: cps/templates/detail.html:134
msgid "Read in browser"
msgstr "Lire dans le navigateur"
#: cps/templates/detail.html:153
#: cps/templates/detail.html:154
msgid "Add to shelf"
msgstr "Ajouter à l'étagère"
#: cps/templates/detail.html:193
#: cps/templates/detail.html:194
msgid "Edit metadata"
msgstr "Éditer les métadonnées"
@ -649,34 +693,42 @@ msgid "Hot Books"
msgstr "Livres populaires"
#: cps/templates/index.xml:19
msgid "Popular publications from this catalog based on Downloads."
msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:127
msgid "Best rated Books"
msgstr ""
#: cps/templates/index.xml:26
msgid "Popular publications from this catalog based on Rating."
msgstr "Publications populaires de ce catalogue sur la base de notes."
#: cps/templates/index.xml:22 cps/templates/layout.html:122
#: cps/templates/index.xml:29 cps/templates/layout.html:122
msgid "New Books"
msgstr "Nouveaux livres"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:33
msgid "The latest Books"
msgstr "Les derniers livres"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:40
msgid "Show Random Books"
msgstr "Montrer des livres au hasard"
#: cps/templates/index.xml:36 cps/templates/layout.html:135
#: cps/templates/index.xml:43 cps/templates/layout.html:138
msgid "Authors"
msgstr "Auteurs"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:47
msgid "Books ordered by Author"
msgstr "Livres classés par auteur"
#: cps/templates/index.xml:47
#: cps/templates/index.xml:54
msgid "Books ordered by category"
msgstr "Livres classés par catégorie"
#: cps/templates/index.xml:54
#: cps/templates/index.xml:61
msgid "Books ordered by series"
msgstr "Livres classés par série"
@ -704,31 +756,31 @@ msgstr "S'enregistrer"
msgid "Browse"
msgstr "Explorer"
#: cps/templates/layout.html:127
#: cps/templates/layout.html:130
msgid "Discover"
msgstr "Découvrir"
#: cps/templates/layout.html:130
#: cps/templates/layout.html:133
msgid "Categories"
msgstr "Catégories"
#: cps/templates/layout.html:137 cps/templates/search_form.html:54
#: cps/templates/layout.html:140 cps/templates/search_form.html:54
msgid "Languages"
msgstr "Langues"
#: cps/templates/layout.html:140
#: cps/templates/layout.html:143
msgid "Public Shelves"
msgstr "Étagères publiques"
#: cps/templates/layout.html:144
#: cps/templates/layout.html:147
msgid "Your Shelves"
msgstr "Vos étagères"
#: cps/templates/layout.html:149
#: cps/templates/layout.html:152
msgid "Create a Shelf"
msgstr "Créer une étagère"
#: cps/templates/layout.html:150
#: cps/templates/layout.html:153
msgid "About"
msgstr "À popos"
@ -746,6 +798,10 @@ msgstr "Mot de passe"
msgid "Remember me"
msgstr "Se rappeler de moi"
#: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog"
msgstr ""
#: cps/templates/read.html:136
msgid "Reflow text when sidebars are open."
msgstr ""
@ -846,6 +902,14 @@ msgstr "Livres dans la bibiothèque"
msgid "Authors in this Library"
msgstr "Auteurs dans la bibliothèque"
#: cps/templates/stats.html:45
msgid "Categories in this Library"
msgstr ""
#: cps/templates/stats.html:49
msgid "Series in this Library"
msgstr ""
#: cps/templates/user_edit.html:23
msgid "Kindle E-Mail"
msgstr "Courriel Kindle"
@ -867,50 +931,34 @@ msgid "Show hot books"
msgstr "Montrer les livres populaires"
#: cps/templates/user_edit.html:53
msgid "Show best rated books"
msgstr ""
#: cps/templates/user_edit.html:57
msgid "Show language selection"
msgstr "Montrer la sélection de la langue"
#: cps/templates/user_edit.html:57
#: cps/templates/user_edit.html:61
msgid "Show series selection"
msgstr "Montrer la sélection des séries"
#: cps/templates/user_edit.html:61
#: cps/templates/user_edit.html:65
msgid "Show category selection"
msgstr "Montrer la sélection des catégories"
#: cps/templates/user_edit.html:65
#: cps/templates/user_edit.html:69
msgid "Show author selection"
msgstr ""
#: cps/templates/user_edit.html:69
#: cps/templates/user_edit.html:73
msgid "Show random books in detail view"
msgstr ""
#: cps/templates/user_edit.html:76
msgid "Admin user"
msgstr "Utilisateur admin"
#: cps/templates/user_edit.html:81
msgid "Allow Downloads"
msgstr "Permettre les téléchargements"
#: cps/templates/user_edit.html:85
msgid "Allow Uploads"
msgstr "Permettre les téléversements"
#: cps/templates/user_edit.html:89
msgid "Allow Edit"
msgstr "Permettre l'édition"
#: cps/templates/user_edit.html:94
msgid "Allow Changing Password"
msgstr "Permettre le changement de mot de passe"
#: cps/templates/user_edit.html:101
#: cps/templates/user_edit.html:105
msgid "Delete this user"
msgstr "Supprimer cet utilisateur"
#: cps/templates/user_edit.html:112
#: cps/templates/user_edit.html:116
msgid "Recent Downloads"
msgstr "Téléchargements récents"

File diff suppressed because it is too large Load Diff

@ -15,8 +15,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 2017-01-28 20:35+0100\n"
"PO-Revision-Date: 2017-01-06 17:00+0800\n"
"POT-Creation-Date: 2017-02-10 20:17+0100\n"
"PO-Revision-Date: 2017-01-06 17:00+0000\n"
"Last-Translator: dalin <dalin.lin@gmail.com>\n"
"Language: zh_Hans_CN\n"
"Language-Team: zh_Hans_CN <LL@li.org>\n"
@ -26,7 +26,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.3.4\n"
#: cps/book_formats.py:109 cps/book_formats.py:113 cps/web.py:982
#: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:998
msgid "not installed"
msgstr "未安装"
@ -43,7 +43,7 @@ msgstr "Calibre-web 测试邮件"
msgid "This email has been sent via calibre web."
msgstr "此邮件由calibre web发送"
#: cps/helper.py:153 cps/templates/detail.html:129
#: cps/helper.py:153 cps/templates/detail.html:130
msgid "Send to Kindle"
msgstr "发送到Kindle"
@ -59,275 +59,283 @@ msgstr "无法转换epub到mobi"
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "无法读取所请求的文件。可能是错误权限不对?"
#: cps/ub.py:380
#: cps/ub.py:443
msgid "Guest"
msgstr ""
msgstr "游客"
#: cps/web.py:774
#: cps/web.py:778
msgid "Latest Books"
msgstr "最新书籍"
#: cps/web.py:799
#: cps/web.py:803
msgid "Hot Books (most downloaded)"
msgstr "热门书籍(最多下载)"
#: cps/templates/index.xml:29 cps/web.py:808
#: cps/web.py:813
msgid "Best rated books"
msgstr ""
#: cps/templates/index.xml:36 cps/web.py:822
msgid "Random Books"
msgstr "随机书籍"
#: cps/web.py:821
#: cps/web.py:835
msgid "Author list"
msgstr "作者列表"
#: cps/web.py:838
#: cps/web.py:846
#, python-format
msgid "Author: %(nam)s"
msgstr "作者: %(nam)s"
msgid "Author: %(name)s"
msgstr ""
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
#: cps/templates/index.xml:50 cps/web.py:851
#: cps/templates/index.xml:57 cps/web.py:862
msgid "Series list"
msgstr "丛书列表"
#: cps/web.py:862
#: cps/web.py:874
#, python-format
msgid "Series: %(serie)s"
msgstr "丛书: %(serie)s"
#: cps/web.py:864 cps/web.py:961 cps/web.py:1179 cps/web.py:2041
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
#: cps/web.py:895
#: cps/web.py:907
msgid "Available languages"
msgstr "可用语言"
#: cps/web.py:910
#: cps/web.py:922
#, python-format
msgid "Language: %(name)s"
msgstr "语言: %(name)s"
#: cps/templates/index.xml:43 cps/web.py:923
#: cps/templates/index.xml:50 cps/web.py:935
msgid "Category list"
msgstr "分类列表"
#: cps/web.py:933
#: cps/web.py:947
#, python-format
msgid "Category: %(name)s"
msgstr "分类: %(name)s"
#: cps/web.py:992
#: cps/web.py:1008
msgid "Statistics"
msgstr "统计"
#: cps/web.py:1013
#: cps/web.py:1029
msgid "Performing Restart, please reload page"
msgstr ""
msgstr "正在重启,请刷新页面"
#: cps/web.py:1015
#: cps/web.py:1031
msgid "Performing shutdown of server, please close window"
msgstr "正在关闭服务器,请关闭窗口"
#: cps/web.py:1055
msgid "Update done"
msgstr ""
#: cps/web.py:1091 cps/web.py:1104
#: cps/web.py:1128 cps/web.py:1141
msgid "search"
msgstr ""
msgstr "搜索"
#: cps/web.py:1155 cps/web.py:1162 cps/web.py:1169 cps/web.py:1176
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213
msgid "Read a Book"
msgstr "阅读一本书"
#: cps/web.py:1227 cps/web.py:1649
#: cps/web.py:1264 cps/web.py:1701
msgid "Please fill out all fields!"
msgstr "请填写所有字段"
#: cps/web.py:1228 cps/web.py:1244 cps/web.py:1249 cps/web.py:1251
#: cps/web.py:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288
msgid "register"
msgstr "注册"
#: cps/web.py:1243
#: cps/web.py:1280
msgid "An unknown error occured. Please try again later."
msgstr "发生一个未知错误。请稍后再试。"
#: cps/web.py:1248
#: cps/web.py:1285
msgid "This username or email address is already in use."
msgstr "此用户名或邮箱已被使用。"
#: cps/web.py:1266
#: cps/web.py:1303
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr "您现在已以'%(nickname)s'身份登录"
#: cps/web.py:1270
#: cps/web.py:1308
msgid "Wrong Username or Password"
msgstr "用户名或密码错误"
#: cps/web.py:1272
#: cps/web.py:1310
msgid "login"
msgstr "登录"
#: cps/web.py:1289
#: cps/web.py:1327
msgid "Please configure the SMTP mail settings first..."
msgstr "请先配置SMTP邮箱..."
#: cps/web.py:1293
#: cps/web.py:1331
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr "此书已被成功发给 %(kindlemail)s"
#: cps/web.py:1297
#: cps/web.py:1335
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr "发送这本书的时候出现错误: %(res)s"
#: cps/web.py:1299
#: cps/web.py:1337
msgid "Please configure your kindle email address first..."
msgstr "请先配置您的kindle电子邮箱地址..."
#: cps/web.py:1319
#: cps/web.py:1357
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr "此书已被添加到书架: %(sname)s"
#: cps/web.py:1340
#: cps/web.py:1378
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr "此书已从书架 %(sname)s 中删除"
#: cps/web.py:1359 cps/web.py:1383
#: cps/web.py:1397 cps/web.py:1421
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr "已存在书架 '%(title)s'。"
#: cps/web.py:1364
#: cps/web.py:1402
#, python-format
msgid "Shelf %(title)s created"
msgstr "书架 %(title)s 已被创建"
#: cps/web.py:1366 cps/web.py:1394
#: cps/web.py:1404 cps/web.py:1432
msgid "There was an error"
msgstr "发生错误"
#: cps/web.py:1367 cps/web.py:1369
#: cps/web.py:1405 cps/web.py:1407
msgid "create a shelf"
msgstr "创建书架"
#: cps/web.py:1392
#: cps/web.py:1430
#, python-format
msgid "Shelf %(title)s changed"
msgstr "书架 %(title)s 已被修改"
#: cps/web.py:1395 cps/web.py:1397
#: cps/web.py:1433 cps/web.py:1435
msgid "Edit a shelf"
msgstr "编辑书架"
#: cps/web.py:1415
#: cps/web.py:1453
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr "成功删除书架 %(name)s"
#: cps/web.py:1437
#: cps/web.py:1475
#, python-format
msgid "Shelf: '%(name)s'"
msgstr "书架: '%(name)s'"
#: cps/web.py:1468
#: cps/web.py:1506
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr "修改书架 '%(name)s' 顺序"
#: cps/web.py:1528
#: cps/web.py:1568
msgid "Found an existing account for this email address."
msgstr "找到已使用此邮箱的账号。"
#: cps/web.py:1530 cps/web.py:1534
#: cps/web.py:1570 cps/web.py:1574
#, python-format
msgid "%(name)s's profile"
msgstr "%(name)s 的资料"
#: cps/web.py:1531
#: cps/web.py:1571
msgid "Profile updated"
msgstr "资料已更新"
#: cps/web.py:1544
#: cps/web.py:1584
msgid "Admin page"
msgstr "管理页"
#: cps/web.py:1604
#: cps/web.py:1656
msgid "Calibre-web configuration updated"
msgstr ""
msgstr "Calibre-web配置已更新"
#: cps/web.py:1611 cps/web.py:1617 cps/web.py:1630
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682
msgid "Basic Configuration"
msgstr ""
msgstr "基本配置"
#: cps/web.py:1615
#: cps/web.py:1667
msgid "DB location is not valid, please enter correct path"
msgstr ""
msgstr "DB位置无效请输入正确路径"
#: cps/templates/admin.html:33 cps/web.py:1651 cps/web.py:1693
#: cps/templates/admin.html:33 cps/web.py:1703 cps/web.py:1749
msgid "Add new user"
msgstr "添加新用户"
#: cps/web.py:1687
#: cps/web.py:1741
#, python-format
msgid "User '%(user)s' created"
msgstr "用户 '%(user)s' 已被创建"
#: cps/web.py:1691
#: cps/web.py:1745
msgid "Found an existing account for this email address or nickname."
msgstr "已找到使用此邮箱或昵称的账号。"
#: cps/web.py:1711
#: cps/web.py:1767
msgid "Mail settings updated"
msgstr "邮箱设置已更新"
#: cps/web.py:1717
#: cps/web.py:1773
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "测试邮件已成功发送到 %(kindlemail)s"
#: cps/web.py:1720
#: cps/web.py:1776
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "发送测试邮件时发生错误: %(res)s"
#: cps/web.py:1721
#: cps/web.py:1777
msgid "Edit mail settings"
msgstr "编辑邮箱设置"
#: cps/web.py:1749
#: cps/web.py:1805
#, python-format
msgid "User '%(nick)s' deleted"
msgstr "用户 '%(nick)s' 已被删除"
#: cps/web.py:1825
#: cps/web.py:1886
#, python-format
msgid "User '%(nick)s' updated"
msgstr "用户 '%(nick)s' 已被更新"
#: cps/web.py:1828
#: cps/web.py:1889
msgid "An unknown error occured."
msgstr "发生未知错误。"
#: cps/web.py:1831
#: cps/web.py:1892
#, python-format
msgid "Edit User %(nick)s"
msgstr "编辑用户 %(nick)s"
#: cps/web.py:2036 cps/web.py:2039 cps/web.py:2113
#: cps/web.py:2098 cps/web.py:2101 cps/web.py:2175
msgid "edit metadata"
msgstr ""
msgstr "编辑元数据"
#: cps/web.py:2071
#: cps/web.py:2133
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr "创建路径 %s 失败(权限拒绝)。"
#: cps/web.py:2076
#: cps/web.py:2138
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr "存储文件 %s 失败(权限拒绝)。"
#: cps/web.py:2081
#: cps/web.py:2143
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr "删除文件 %s 失败(权限拒绝)。"
@ -356,7 +364,7 @@ msgstr ""
msgid "Admin"
msgstr "管理"
#: cps/templates/admin.html:12 cps/templates/detail.html:116
#: cps/templates/admin.html:12 cps/templates/detail.html:117
msgid "Download"
msgstr "下载"
@ -410,7 +418,7 @@ msgstr "配置"
#: cps/templates/admin.html:59
msgid "Calibre DB dir"
msgstr ""
msgstr "Calibre DB目录"
#: cps/templates/admin.html:60 cps/templates/config_edit.html:32
msgid "Log Level"
@ -446,26 +454,34 @@ msgstr "重启 Calibre-web"
#: cps/templates/admin.html:80
msgid "Stop Calibre-web"
msgstr "停止 Calibre-web"
#: cps/templates/admin.html:81
msgid "Check for update"
msgstr ""
#: cps/templates/admin.html:91
msgid "Do you really want to restart Calibre-web?"
#: cps/templates/admin.html:82
msgid "Perform Update"
msgstr ""
#: cps/templates/admin.html:92 cps/templates/admin.html:107
#: cps/templates/admin.html:93
msgid "Do you really want to restart Calibre-web?"
msgstr "您确定要重启 Calibre-web 吗?"
#: cps/templates/admin.html:94 cps/templates/admin.html:109
msgid "Ok"
msgstr ""
msgstr "确定"
#: cps/templates/admin.html:93 cps/templates/admin.html:108
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:54
#: cps/templates/admin.html:95 cps/templates/admin.html:110
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75
#: cps/templates/email_edit.html:36 cps/templates/shelf_edit.html:17
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:107
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back"
msgstr "后退"
#: cps/templates/admin.html:106
#: cps/templates/admin.html:108
msgid "Do you really want to stop Calibre-web?"
msgstr ""
msgstr "您确定要关闭 Calibre-web 吗?"
#: cps/templates/book_edit.html:16 cps/templates/search_form.html:6
msgid "Book Title"
@ -483,7 +499,7 @@ msgstr "简介"
msgid "Tags"
msgstr "标签"
#: cps/templates/book_edit.html:33 cps/templates/layout.html:133
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136
#: cps/templates/search_form.html:33
msgid "Series"
msgstr "丛书"
@ -516,45 +532,69 @@ msgstr ""
msgid "view book after edit"
msgstr "编辑后查看书籍"
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:52
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:73
#: cps/templates/login.html:19 cps/templates/search_form.html:75
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:105
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:109
msgid "Submit"
msgstr "提交"
#: cps/templates/config_edit.html:7
msgid "Location of Calibre database"
msgstr ""
msgstr "Calibre 数据库位置"
#: cps/templates/config_edit.html:11
msgid "Server Port"
msgstr ""
msgstr "服务器端口"
#: cps/templates/config_edit.html:15 cps/templates/shelf_edit.html:7
msgid "Title"
msgstr ""
msgstr "标题"
#: cps/templates/config_edit.html:23
msgid "No. of random books to show"
msgstr ""
msgstr "随机书籍显示数量"
#: cps/templates/config_edit.html:28
msgid "Regular expression for title sorting"
msgstr ""
msgstr "标题排序的正则表达式"
#: cps/templates/config_edit.html:42
msgid "Enable uploading"
msgstr ""
msgstr "启用上传"
#: cps/templates/config_edit.html:46
msgid "Enable anonymous browsing"
msgstr ""
msgstr "启用匿名浏览"
#: cps/templates/config_edit.html:50
msgid "Enable public registration"
msgstr "启用注册"
#: cps/templates/config_edit.html:52
msgid "Default Settings for new users"
msgstr ""
#: cps/templates/config_edit.html:57 cps/templates/layout.html:91
#: cps/templates/config_edit.html:55 cps/templates/user_edit.html:80
msgid "Admin user"
msgstr "管理用户"
#: cps/templates/config_edit.html:59 cps/templates/user_edit.html:85
msgid "Allow Downloads"
msgstr "允许下载"
#: cps/templates/config_edit.html:63 cps/templates/user_edit.html:89
msgid "Allow Uploads"
msgstr "允许上传"
#: cps/templates/config_edit.html:67 cps/templates/user_edit.html:93
msgid "Allow Edit"
msgstr "允许编辑"
#: cps/templates/config_edit.html:71 cps/templates/user_edit.html:98
msgid "Allow Changing Password"
msgstr "允许修改密码"
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91
#: cps/templates/login.html:4
msgid "Login"
msgstr "登录"
@ -571,33 +611,37 @@ msgstr ""
msgid "language"
msgstr "语言"
#: cps/templates/detail.html:105
#: cps/templates/detail.html:74
msgid "Publishing date"
msgstr ""
#: cps/templates/detail.html:106
msgid "Description:"
msgstr "简介:"
#: cps/templates/detail.html:133
#: cps/templates/detail.html:134
msgid "Read in browser"
msgstr "在浏览器中阅读"
#: cps/templates/detail.html:153
#: cps/templates/detail.html:154
msgid "Add to shelf"
msgstr "添加到书架"
#: cps/templates/detail.html:193
#: cps/templates/detail.html:194
msgid "Edit metadata"
msgstr "编辑元数据"
#: cps/templates/email_edit.html:11
msgid "SMTP port (usually 25 for plain SMTP and 465 for SSL and 587 for STARTTLS)"
msgstr ""
msgstr "SMTP端口(无加密SMTP通常是25, SSL加密是465, STARTTLS加密是587)"
#: cps/templates/email_edit.html:15
msgid "Encryption"
msgstr ""
msgstr "加密方式"
#: cps/templates/email_edit.html:17
msgid "None"
msgstr ""
msgstr ""
#: cps/templates/email_edit.html:18
msgid "STARTTLS"
@ -640,40 +684,48 @@ msgid "Hot Books"
msgstr "热门书籍"
#: cps/templates/index.xml:19
msgid "Popular publications from this catalog based on Rating."
msgid "Popular publications from this catalog based on Downloads."
msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:127
msgid "Best rated Books"
msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:122
#: cps/templates/index.xml:26
msgid "Popular publications from this catalog based on Rating."
msgstr "基于评分的热门书籍"
#: cps/templates/index.xml:29 cps/templates/layout.html:122
msgid "New Books"
msgstr "新书"
#: cps/templates/index.xml:26
#: cps/templates/index.xml:33
msgid "The latest Books"
msgstr "最新书籍"
#: cps/templates/index.xml:33
#: cps/templates/index.xml:40
msgid "Show Random Books"
msgstr "显示随机书籍"
#: cps/templates/index.xml:36 cps/templates/layout.html:135
#: cps/templates/index.xml:43 cps/templates/layout.html:138
msgid "Authors"
msgstr "作者"
#: cps/templates/index.xml:40
#: cps/templates/index.xml:47
msgid "Books ordered by Author"
msgstr "书籍按作者排序"
#: cps/templates/index.xml:47
#: cps/templates/index.xml:54
msgid "Books ordered by category"
msgstr "书籍按分类排序"
#: cps/templates/index.xml:54
#: cps/templates/index.xml:61
msgid "Books ordered by series"
msgstr "书籍按丛书排序"
#: cps/templates/layout.html:48
msgid "Toggle navigation"
msgstr ""
msgstr "切换导航"
#: cps/templates/layout.html:63
msgid "Go!"
@ -695,31 +747,31 @@ msgstr "注册"
msgid "Browse"
msgstr "浏览"
#: cps/templates/layout.html:127
#: cps/templates/layout.html:130
msgid "Discover"
msgstr "发现"
#: cps/templates/layout.html:130
#: cps/templates/layout.html:133
msgid "Categories"
msgstr "分类"
#: cps/templates/layout.html:137 cps/templates/search_form.html:54
#: cps/templates/layout.html:140 cps/templates/search_form.html:54
msgid "Languages"
msgstr "语言"
#: cps/templates/layout.html:140
#: cps/templates/layout.html:143
msgid "Public Shelves"
msgstr "公开书架"
#: cps/templates/layout.html:144
#: cps/templates/layout.html:147
msgid "Your Shelves"
msgstr "您的书架"
#: cps/templates/layout.html:149
#: cps/templates/layout.html:152
msgid "Create a Shelf"
msgstr "创建书架"
#: cps/templates/layout.html:150
#: cps/templates/layout.html:153
msgid "About"
msgstr "关于"
@ -737,17 +789,21 @@ msgstr "密码"
msgid "Remember me"
msgstr "记住我"
#: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog"
msgstr ""
#: cps/templates/read.html:136
msgid "Reflow text when sidebars are open."
msgstr ""
#: cps/templates/readpdf.html:29
msgid "PDF.js viewer"
msgstr ""
msgstr "PDF.js 查看器"
#: cps/templates/readtxt.html:6
msgid "Basic txt Reader"
msgstr ""
msgstr "简单txt阅读器"
#: cps/templates/register.html:4
msgid "Register a new account"
@ -811,7 +867,7 @@ msgstr "要公开此书架吗?"
#: cps/templates/shelf_order.html:5
msgid "Drag 'n drop to rearrange order"
msgstr ""
msgstr "拖拽以重新排序"
#: cps/templates/stats.html:3
msgid "Linked libraries"
@ -837,6 +893,14 @@ msgstr "本书在此书库"
msgid "Authors in this Library"
msgstr "个作者在此书库"
#: cps/templates/stats.html:45
msgid "Categories in this Library"
msgstr ""
#: cps/templates/stats.html:49
msgid "Series in this Library"
msgstr ""
#: cps/templates/user_edit.html:23
msgid "Kindle E-Mail"
msgstr ""
@ -858,50 +922,34 @@ msgid "Show hot books"
msgstr "显示热门书籍"
#: cps/templates/user_edit.html:53
msgid "Show best rated books"
msgstr ""
#: cps/templates/user_edit.html:57
msgid "Show language selection"
msgstr "显示语言选择"
#: cps/templates/user_edit.html:57
#: cps/templates/user_edit.html:61
msgid "Show series selection"
msgstr "显示丛书选择"
#: cps/templates/user_edit.html:61
#: cps/templates/user_edit.html:65
msgid "Show category selection"
msgstr "显示分类选择"
#: cps/templates/user_edit.html:65
#: cps/templates/user_edit.html:69
msgid "Show author selection"
msgstr ""
msgstr "显示作者选择"
#: cps/templates/user_edit.html:69
#: cps/templates/user_edit.html:73
msgid "Show random books in detail view"
msgstr ""
#: cps/templates/user_edit.html:76
msgid "Admin user"
msgstr "管理用户"
#: cps/templates/user_edit.html:81
msgid "Allow Downloads"
msgstr "允许下载"
#: cps/templates/user_edit.html:85
msgid "Allow Uploads"
msgstr "允许上传"
#: cps/templates/user_edit.html:89
msgid "Allow Edit"
msgstr "允许编辑"
#: cps/templates/user_edit.html:94
msgid "Allow Changing Password"
msgstr "允许修改密码"
msgstr "在详情页显示随机书籍"
#: cps/templates/user_edit.html:101
#: cps/templates/user_edit.html:105
msgid "Delete this user"
msgstr "删除此用户"
#: cps/templates/user_edit.html:112
#: cps/templates/user_edit.html:116
msgid "Recent Downloads"
msgstr "最近下载"

@ -144,7 +144,6 @@ class UserBase:
else:
return False
def __repr__(self):
return '<User %r>' % self.nickname
@ -164,10 +163,6 @@ class User(UserBase, Base):
downloads = relationship('Downloads', backref='user', lazy='dynamic')
locale = Column(String(2), default="en")
sidebar_view = Column(Integer, default=1)
#language_books = Column(Integer, default=1)
#series_books = Column(Integer, default=1)
#category_books = Column(Integer, default=1)
#hot_books = Column(Integer, default=1)
default_language = Column(String(3), default="all")
@ -184,10 +179,6 @@ class Anonymous(AnonymousUserMixin, UserBase):
self.role = data.role
self.sidebar_view = data.sidebar_view
self.default_language = data.default_language
#self.language_books = data.language_books
#self.series_books = data.series_books
#self.category_books = data.category_books
#self.hot_books = data.hot_books
self.default_language = data.default_language
self.locale = data.locale
self.anon_browse = settings.config_anonbrowse
@ -262,6 +253,7 @@ class Settings(Base):
config_uploading = Column(SmallInteger, default=0)
config_anonbrowse = Column(SmallInteger, default=0)
config_public_reg = Column(SmallInteger, default=0)
config_default_role = Column(SmallInteger, default=0)
def __repr__(self):
pass
@ -287,7 +279,8 @@ class Config:
self.config_uploading = data.config_uploading
self.config_anonbrowse = data.config_anonbrowse
self.config_public_reg = data.config_public_reg
if self.config_calibre_dir is not None: # and (self.db_configured is None or self.db_configured is True):
self.config_default_role = data.config_default_role
if self.config_calibre_dir is not None:
self.db_configured = True
else:
self.db_configured = False
@ -296,6 +289,36 @@ class Config:
def get_main_dir(self):
return self.config_main_dir
def role_admin(self):
if self.config_default_role is not None:
return True if self.config_default_role & ROLE_ADMIN == ROLE_ADMIN else False
else:
return False
def role_download(self):
if self.config_default_role is not None:
return True if self.config_default_role & ROLE_DOWNLOAD == ROLE_DOWNLOAD else False
else:
return False
def role_upload(self):
if self.config_default_role is not None:
return True if self.config_default_role & ROLE_UPLOAD == ROLE_UPLOAD else False
else:
return False
def role_edit(self):
if self.config_default_role is not None:
return True if self.config_default_role & ROLE_EDIT == ROLE_EDIT else False
else:
return False
def role_passwd(self):
if self.config_default_role is not None:
return True if self.config_default_role & ROLE_PASSWD == ROLE_PASSWD else False
else:
return False
def get_Log_Level(self):
ret_value=""
if self.config_log_level == logging.INFO:
@ -338,6 +361,13 @@ def migrate_Database():
conn.execute("ALTER TABLE Settings ADD column `config_anonbrowse` SmallInteger DEFAULT 0")
conn.execute("ALTER TABLE Settings ADD column `config_public_reg` SmallInteger DEFAULT 0")
session.commit()
try:
session.query(exists().where(Settings.config_default_role)).scalar()
session.commit()
except exc.OperationalError: # Database is not compatible, some rows are missing
conn = engine.connect()
conn.execute("ALTER TABLE Settings ADD column `config_default_role` SmallInteger DEFAULT 0")
session.commit()
try:
session.query(exists().where(BookShelf.order)).scalar()
session.commit()

@ -25,6 +25,7 @@ import zipfile
from werkzeug.security import generate_password_hash, check_password_hash
from babel import Locale as LC
from babel import negotiate_locale
from babel.dates import format_date
from functools import wraps
import base64
from sqlalchemy.sql import *
@ -279,6 +280,12 @@ def mimetype_filter(val):
s = 'application/octet-stream'
return s
@app.template_filter('formatdate')
def formatdate(val):
conformed_timestamp = re.sub(r"[:]|([-](?!((\d{2}[:]\d{2})|(\d{4}))$))", '', val)
formatdate = datetime.datetime.strptime(conformed_timestamp[:-5], "%Y%m%d %H%M%S")
return format_date(formatdate, format='medium',locale=get_locale())
def admin_required(f):
"""
@ -658,10 +665,9 @@ def get_opds_download_link(book_id, format):
data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == format.upper()).first()
if current_user.is_authenticated:
helper.update_download(book_id, int(current_user.id))
author = helper.get_normalized_author(book.author_sort)
file_name = book.title
if len(author) > 0:
file_name = author + '-' + file_name
if len(book.authors) > 0:
file_name = book.authors[0].name + '-' + file_name
file_name = helper.get_valid_filename(file_name)
response = make_response(send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + format))
response.headers["Content-Disposition"] = "attachment; filename=\"%s.%s\"" % (data.name, format)
@ -1228,10 +1234,9 @@ def get_download_link(book_id, format):
# collect downloaded books only for registered user and not for anonymous user
if current_user.is_authenticated:
helper.update_download(book_id, int(current_user.id))
author = helper.get_normalized_author(book.author_sort)
file_name = book.title
if len(author) > 0:
file_name = author + '-' + file_name
if len(book.authors) > 0:
file_name = book.authors[0].name + '-' + file_name
file_name = helper.get_valid_filename(file_name)
response = make_response(
send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + format))
@ -1239,13 +1244,7 @@ def get_download_link(book_id, format):
response.headers["Content-Type"] = mimetypes.types_map['.' + format]
except:
pass
response.headers["Content-Disposition"] = \
"attachment; " \
"filename={utf_filename}.{suffix};" \
"filename*=UTF-8''{utf_filename}.{suffix}".format(
utf_filename=file_name.encode('utf-8'),
suffix=format
)
response.headers["Content-Disposition"] = "attachment; filename=\"%s.%s\"" % (file_name.encode('utf-8'), format)
return response
else:
abort(404)
@ -1271,7 +1270,7 @@ def register():
content.password = generate_password_hash(to_save["password"])
content.nickname = to_save["nickname"]
content.email = to_save["email"]
content.role = 0
content.role = config.config_default_role
try:
ub.session.add(content)
ub.session.commit()
@ -1578,9 +1577,10 @@ def profile():
@login_required
@admin_required
def admin():
commit = '$Format:%cI$'
content = ub.session.query(ub.User).all()
settings = ub.session.query(ub.Settings).first()
return render_title_template("admin.html", content=content, email=settings, config=config,
return render_title_template("admin.html", content=content, email=settings, config=config, commit=commit,
development=ub.DEVELOPMENT, title=_(u"Admin page"))
@ -1635,6 +1635,18 @@ def configuration_helper(origin):
content.config_anonbrowse = 1
if "config_public_reg" in to_save and to_save["config_public_reg"] == "on":
content.config_public_reg = 1
content.config_default_role = 0
if "admin_role" in to_save:
content.config_default_role = content.config_default_role + ub.ROLE_ADMIN
if "download_role" in to_save:
content.config_default_role = content.config_default_role + ub.ROLE_DOWNLOAD
if "upload_role" in to_save:
content.config_default_role = content.config_default_role + ub.ROLE_UPLOAD
if "edit_role" in to_save:
content.config_default_role = content.config_default_role + ub.ROLE_EDIT
if "passwd_role" in to_save:
content.config_default_role = content.config_default_role + ub.ROLE_PASSWD
try:
if db_change:
if config.db_configured:
@ -1731,6 +1743,8 @@ def new_user():
except IntegrityError:
ub.session.rollback()
flash(_(u"Found an existing account for this email address or nickname."), category="error")
else:
content.role=config.config_default_role
return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
languages=languages, title=_(u"Add new user"))
@ -1913,7 +1927,7 @@ def edit_book(book_id):
modify_database_object(input_authors, book.authors, db.Authors, db.session, 'author')
if author0_before_edit != book.authors[0].name:
edited_books_id.add(book.id)
book.author_sort=helper.get_normalized_author(input_authors[0]) # ToDo: wrong sorting
book.author_sort=helper.get_sorted_author(input_authors[0])
if to_save["cover_url"] and os.path.splitext(to_save["cover_url"])[1].lower() == ".jpg":
img = requests.get(to_save["cover_url"])
@ -2141,9 +2155,10 @@ def upload():
if is_author:
db_author = is_author
else:
db_author = db.Authors(author, helper.get_normalized_author(author), "") # TODO: WRONG Sorting Author function
db_author = db.Authors(author, helper.get_sorted_author(author), "")
db.session.add(db_author)
path = os.path.join(author_dir, title_dir)
# combine path and normalize path from windows systems
path = os.path.join(author_dir, title_dir).replace('\\','/')
db_book = db.Books(title, "", db_author.sort, datetime.datetime.now(), datetime.datetime(101, 01, 01), 1,
datetime.datetime.now(), path, has_cover, db_author, [])
db_book.authors.append(db_author)

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2017-01-28 20:35+0100\n"
"POT-Creation-Date: 2017-02-10 20:17+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -17,7 +17,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.3.4\n"
#: cps/book_formats.py:109 cps/book_formats.py:113 cps/web.py:982
#: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:998
msgid "not installed"
msgstr ""
@ -34,7 +34,7 @@ msgstr ""
msgid "This email has been sent via calibre web."
msgstr ""
#: cps/helper.py:153 cps/templates/detail.html:129
#: cps/helper.py:153 cps/templates/detail.html:130
msgid "Send to Kindle"
msgstr ""
@ -50,275 +50,283 @@ msgstr ""
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr ""
#: cps/ub.py:380
#: cps/ub.py:443
msgid "Guest"
msgstr ""
#: cps/web.py:774
#: cps/web.py:778
msgid "Latest Books"
msgstr ""
#: cps/web.py:799
#: cps/web.py:803
msgid "Hot Books (most downloaded)"
msgstr ""
#: cps/templates/index.xml:29 cps/web.py:808
#: cps/web.py:813
msgid "Best rated books"
msgstr ""
#: cps/templates/index.xml:36 cps/web.py:822
msgid "Random Books"
msgstr ""
#: cps/web.py:821
#: cps/web.py:835
msgid "Author list"
msgstr ""
#: cps/web.py:838
#: cps/web.py:846
#, python-format
msgid "Author: %(nam)s"
msgid "Author: %(name)s"
msgstr ""
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
#: cps/templates/index.xml:50 cps/web.py:851
#: cps/templates/index.xml:57 cps/web.py:862
msgid "Series list"
msgstr ""
#: cps/web.py:862
#: cps/web.py:874
#, python-format
msgid "Series: %(serie)s"
msgstr ""
#: cps/web.py:864 cps/web.py:961 cps/web.py:1179 cps/web.py:2041
msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr ""
#: cps/web.py:895
#: cps/web.py:907
msgid "Available languages"
msgstr ""
#: cps/web.py:910
#: cps/web.py:922
#, python-format
msgid "Language: %(name)s"
msgstr ""
#: cps/templates/index.xml:43 cps/web.py:923
#: cps/templates/index.xml:50 cps/web.py:935
msgid "Category list"
msgstr ""
#: cps/web.py:933
#: cps/web.py:947
#, python-format
msgid "Category: %(name)s"
msgstr ""
#: cps/web.py:992
#: cps/web.py:1008
msgid "Statistics"
msgstr ""
#: cps/web.py:1013
#: cps/web.py:1029
msgid "Performing Restart, please reload page"
msgstr ""
#: cps/web.py:1015
#: cps/web.py:1031
msgid "Performing shutdown of server, please close window"
msgstr ""
#: cps/web.py:1091 cps/web.py:1104
#: cps/web.py:1055
msgid "Update done"
msgstr ""
#: cps/web.py:1128 cps/web.py:1141
msgid "search"
msgstr ""
#: cps/web.py:1155 cps/web.py:1162 cps/web.py:1169 cps/web.py:1176
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213
msgid "Read a Book"
msgstr ""
#: cps/web.py:1227 cps/web.py:1649
#: cps/web.py:1264 cps/web.py:1701
msgid "Please fill out all fields!"
msgstr ""
#: cps/web.py:1228 cps/web.py:1244 cps/web.py:1249 cps/web.py:1251
#: cps/web.py:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288
msgid "register"
msgstr ""
#: cps/web.py:1243
#: cps/web.py:1280
msgid "An unknown error occured. Please try again later."
msgstr ""
#: cps/web.py:1248
#: cps/web.py:1285
msgid "This username or email address is already in use."
msgstr ""
#: cps/web.py:1266
#: cps/web.py:1303
#, python-format
msgid "you are now logged in as: '%(nickname)s'"
msgstr ""
#: cps/web.py:1270
#: cps/web.py:1308
msgid "Wrong Username or Password"
msgstr ""
#: cps/web.py:1272
#: cps/web.py:1310
msgid "login"
msgstr ""
#: cps/web.py:1289
#: cps/web.py:1327
msgid "Please configure the SMTP mail settings first..."
msgstr ""
#: cps/web.py:1293
#: cps/web.py:1331
#, python-format
msgid "Book successfully send to %(kindlemail)s"
msgstr ""
#: cps/web.py:1297
#: cps/web.py:1335
#, python-format
msgid "There was an error sending this book: %(res)s"
msgstr ""
#: cps/web.py:1299
#: cps/web.py:1337
msgid "Please configure your kindle email address first..."
msgstr ""
#: cps/web.py:1319
#: cps/web.py:1357
#, python-format
msgid "Book has been added to shelf: %(sname)s"
msgstr ""
#: cps/web.py:1340
#: cps/web.py:1378
#, python-format
msgid "Book has been removed from shelf: %(sname)s"
msgstr ""
#: cps/web.py:1359 cps/web.py:1383
#: cps/web.py:1397 cps/web.py:1421
#, python-format
msgid "A shelf with the name '%(title)s' already exists."
msgstr ""
#: cps/web.py:1364
#: cps/web.py:1402
#, python-format
msgid "Shelf %(title)s created"
msgstr ""
#: cps/web.py:1366 cps/web.py:1394
#: cps/web.py:1404 cps/web.py:1432
msgid "There was an error"
msgstr ""
#: cps/web.py:1367 cps/web.py:1369
#: cps/web.py:1405 cps/web.py:1407
msgid "create a shelf"
msgstr ""
#: cps/web.py:1392
#: cps/web.py:1430
#, python-format
msgid "Shelf %(title)s changed"
msgstr ""
#: cps/web.py:1395 cps/web.py:1397
#: cps/web.py:1433 cps/web.py:1435
msgid "Edit a shelf"
msgstr ""
#: cps/web.py:1415
#: cps/web.py:1453
#, python-format
msgid "successfully deleted shelf %(name)s"
msgstr ""
#: cps/web.py:1437
#: cps/web.py:1475
#, python-format
msgid "Shelf: '%(name)s'"
msgstr ""
#: cps/web.py:1468
#: cps/web.py:1506
#, python-format
msgid "Change order of Shelf: '%(name)s'"
msgstr ""
#: cps/web.py:1528
#: cps/web.py:1568
msgid "Found an existing account for this email address."
msgstr ""
#: cps/web.py:1530 cps/web.py:1534
#: cps/web.py:1570 cps/web.py:1574
#, python-format
msgid "%(name)s's profile"
msgstr ""
#: cps/web.py:1531
#: cps/web.py:1571
msgid "Profile updated"
msgstr ""
#: cps/web.py:1544
#: cps/web.py:1584
msgid "Admin page"
msgstr ""
#: cps/web.py:1604
#: cps/web.py:1656
msgid "Calibre-web configuration updated"
msgstr ""
#: cps/web.py:1611 cps/web.py:1617 cps/web.py:1630
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682
msgid "Basic Configuration"
msgstr ""
#: cps/web.py:1615
#: cps/web.py:1667
msgid "DB location is not valid, please enter correct path"
msgstr ""
#: cps/templates/admin.html:33 cps/web.py:1651 cps/web.py:1693
#: cps/templates/admin.html:33 cps/web.py:1703 cps/web.py:1749
msgid "Add new user"
msgstr ""
#: cps/web.py:1687
#: cps/web.py:1741
#, python-format
msgid "User '%(user)s' created"
msgstr ""
#: cps/web.py:1691
#: cps/web.py:1745
msgid "Found an existing account for this email address or nickname."
msgstr ""
#: cps/web.py:1711
#: cps/web.py:1767
msgid "Mail settings updated"
msgstr ""
#: cps/web.py:1717
#: cps/web.py:1773
#, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr ""
#: cps/web.py:1720
#: cps/web.py:1776
#, python-format
msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr ""
#: cps/web.py:1721
#: cps/web.py:1777
msgid "Edit mail settings"
msgstr ""
#: cps/web.py:1749
#: cps/web.py:1805
#, python-format
msgid "User '%(nick)s' deleted"
msgstr ""
#: cps/web.py:1825
#: cps/web.py:1886
#, python-format
msgid "User '%(nick)s' updated"
msgstr ""
#: cps/web.py:1828
#: cps/web.py:1889
msgid "An unknown error occured."
msgstr ""
#: cps/web.py:1831
#: cps/web.py:1892
#, python-format
msgid "Edit User %(nick)s"
msgstr ""
#: cps/web.py:2036 cps/web.py:2039 cps/web.py:2113
#: cps/web.py:2098 cps/web.py:2101 cps/web.py:2175
msgid "edit metadata"
msgstr ""
#: cps/web.py:2071
#: cps/web.py:2133
#, python-format
msgid "Failed to create path %s (Permission denied)."
msgstr ""
#: cps/web.py:2076
#: cps/web.py:2138
#, python-format
msgid "Failed to store file %s (Permission denied)."
msgstr ""
#: cps/web.py:2081
#: cps/web.py:2143
#, python-format
msgid "Failed to delete file %s (Permission denied)."
msgstr ""
@ -347,7 +355,7 @@ msgstr ""
msgid "Admin"
msgstr ""
#: cps/templates/admin.html:12 cps/templates/detail.html:116
#: cps/templates/admin.html:12 cps/templates/detail.html:117
msgid "Download"
msgstr ""
@ -439,22 +447,30 @@ msgstr ""
msgid "Stop Calibre-web"
msgstr ""
#: cps/templates/admin.html:91
#: cps/templates/admin.html:81
msgid "Check for update"
msgstr ""
#: cps/templates/admin.html:82
msgid "Perform Update"
msgstr ""
#: cps/templates/admin.html:93
msgid "Do you really want to restart Calibre-web?"
msgstr ""
#: cps/templates/admin.html:92 cps/templates/admin.html:107
#: cps/templates/admin.html:94 cps/templates/admin.html:109
msgid "Ok"
msgstr ""
#: cps/templates/admin.html:93 cps/templates/admin.html:108
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:54
#: cps/templates/admin.html:95 cps/templates/admin.html:110
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75
#: cps/templates/email_edit.html:36 cps/templates/shelf_edit.html:17
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:107
#: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back"
msgstr ""
#: cps/templates/admin.html:106
#: cps/templates/admin.html:108
msgid "Do you really want to stop Calibre-web?"
msgstr ""
@ -474,7 +490,7 @@ msgstr ""
msgid "Tags"
msgstr ""
#: cps/templates/book_edit.html:33 cps/templates/layout.html:133
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136
#: cps/templates/search_form.html:33
msgid "Series"
msgstr ""
@ -507,9 +523,9 @@ msgstr ""
msgid "view book after edit"
msgstr ""
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:52
#: cps/templates/book_edit.html:107 cps/templates/config_edit.html:73
#: cps/templates/login.html:19 cps/templates/search_form.html:75
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:105
#: cps/templates/shelf_edit.html:15 cps/templates/user_edit.html:109
msgid "Submit"
msgstr ""
@ -545,7 +561,31 @@ msgstr ""
msgid "Enable public registration"
msgstr ""
#: cps/templates/config_edit.html:57 cps/templates/layout.html:91
#: cps/templates/config_edit.html:52
msgid "Default Settings for new users"
msgstr ""
#: cps/templates/config_edit.html:55 cps/templates/user_edit.html:80
msgid "Admin user"
msgstr ""
#: cps/templates/config_edit.html:59 cps/templates/user_edit.html:85
msgid "Allow Downloads"
msgstr ""
#: cps/templates/config_edit.html:63 cps/templates/user_edit.html:89
msgid "Allow Uploads"
msgstr ""
#: cps/templates/config_edit.html:67 cps/templates/user_edit.html:93
msgid "Allow Edit"
msgstr ""
#: cps/templates/config_edit.html:71 cps/templates/user_edit.html:98
msgid "Allow Changing Password"
msgstr ""
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91
#: cps/templates/login.html:4
msgid "Login"
msgstr ""
@ -562,19 +602,23 @@ msgstr ""
msgid "language"
msgstr ""
#: cps/templates/detail.html:105
#: cps/templates/detail.html:74
msgid "Publishing date"
msgstr ""
#: cps/templates/detail.html:106
msgid "Description:"
msgstr ""
#: cps/templates/detail.html:133
#: cps/templates/detail.html:134
msgid "Read in browser"
msgstr ""
#: cps/templates/detail.html:153
#: cps/templates/detail.html:154
msgid "Add to shelf"
msgstr ""
#: cps/templates/detail.html:193
#: cps/templates/detail.html:194
msgid "Edit metadata"
msgstr ""
@ -631,34 +675,42 @@ msgid "Hot Books"
msgstr ""
#: cps/templates/index.xml:19
msgid "Popular publications from this catalog based on Downloads."
msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:127
msgid "Best rated Books"
msgstr ""
#: cps/templates/index.xml:26
msgid "Popular publications from this catalog based on Rating."
msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:122
#: cps/templates/index.xml:29 cps/templates/layout.html:122
msgid "New Books"
msgstr ""
#: cps/templates/index.xml:26
#: cps/templates/index.xml:33
msgid "The latest Books"
msgstr ""
#: cps/templates/index.xml:33
#: cps/templates/index.xml:40
msgid "Show Random Books"
msgstr ""
#: cps/templates/index.xml:36 cps/templates/layout.html:135
#: cps/templates/index.xml:43 cps/templates/layout.html:138
msgid "Authors"
msgstr ""
#: cps/templates/index.xml:40
#: cps/templates/index.xml:47
msgid "Books ordered by Author"
msgstr ""
#: cps/templates/index.xml:47
#: cps/templates/index.xml:54
msgid "Books ordered by category"
msgstr ""
#: cps/templates/index.xml:54
#: cps/templates/index.xml:61
msgid "Books ordered by series"
msgstr ""
@ -686,31 +738,31 @@ msgstr ""
msgid "Browse"
msgstr ""
#: cps/templates/layout.html:127
#: cps/templates/layout.html:130
msgid "Discover"
msgstr ""
#: cps/templates/layout.html:130
#: cps/templates/layout.html:133
msgid "Categories"
msgstr ""
#: cps/templates/layout.html:137 cps/templates/search_form.html:54
#: cps/templates/layout.html:140 cps/templates/search_form.html:54
msgid "Languages"
msgstr ""
#: cps/templates/layout.html:140
#: cps/templates/layout.html:143
msgid "Public Shelves"
msgstr ""
#: cps/templates/layout.html:144
#: cps/templates/layout.html:147
msgid "Your Shelves"
msgstr ""
#: cps/templates/layout.html:149
#: cps/templates/layout.html:152
msgid "Create a Shelf"
msgstr ""
#: cps/templates/layout.html:150
#: cps/templates/layout.html:153
msgid "About"
msgstr ""
@ -728,6 +780,10 @@ msgstr ""
msgid "Remember me"
msgstr ""
#: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog"
msgstr ""
#: cps/templates/read.html:136
msgid "Reflow text when sidebars are open."
msgstr ""
@ -828,6 +884,14 @@ msgstr ""
msgid "Authors in this Library"
msgstr ""
#: cps/templates/stats.html:45
msgid "Categories in this Library"
msgstr ""
#: cps/templates/stats.html:49
msgid "Series in this Library"
msgstr ""
#: cps/templates/user_edit.html:23
msgid "Kindle E-Mail"
msgstr ""
@ -849,50 +913,34 @@ msgid "Show hot books"
msgstr ""
#: cps/templates/user_edit.html:53
msgid "Show language selection"
msgid "Show best rated books"
msgstr ""
#: cps/templates/user_edit.html:57
msgid "Show series selection"
msgid "Show language selection"
msgstr ""
#: cps/templates/user_edit.html:61
msgid "Show category selection"
msgid "Show series selection"
msgstr ""
#: cps/templates/user_edit.html:65
msgid "Show author selection"
msgid "Show category selection"
msgstr ""
#: cps/templates/user_edit.html:69
msgid "Show random books in detail view"
msgstr ""
#: cps/templates/user_edit.html:76
msgid "Admin user"
msgstr ""
#: cps/templates/user_edit.html:81
msgid "Allow Downloads"
msgstr ""
#: cps/templates/user_edit.html:85
msgid "Allow Uploads"
msgstr ""
#: cps/templates/user_edit.html:89
msgid "Allow Edit"
msgid "Show author selection"
msgstr ""
#: cps/templates/user_edit.html:94
msgid "Allow Changing Password"
#: cps/templates/user_edit.html:73
msgid "Show random books in detail view"
msgstr ""
#: cps/templates/user_edit.html:101
#: cps/templates/user_edit.html:105
msgid "Delete this user"
msgstr ""
#: cps/templates/user_edit.html:112
#: cps/templates/user_edit.html:116
msgid "Recent Downloads"
msgstr ""

@ -11,7 +11,7 @@ Calibre Web is a web app providing a clean interface for browsing, reading and d
- full graphical setup
- User management
- Admin interface
- User Interface in english, french, german, simplified chinese, spanish
- User Interface in english, french, german, polish, simplified chinese, spanish
- OPDS feed for eBook reader apps
- Filter and search by titles, authors, tags, series and language
- Create custom book collection (shelves)

Loading…
Cancel
Save