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 return None
else: else:
cover_file_name = os.path.splitext(tmp_file_path)[0] + ".cover.jpg" 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.compression_quality = 88
img.save(filename=os.path.join(tmp_dir, cover_file_name)) img.save(filename=os.path.join(tmp_dir, cover_file_name))
return cover_file_name return cover_file_name

@ -32,29 +32,29 @@ def title_sort(title):
Base = declarative_base() Base = declarative_base()
books_authors_link = Table('books_authors_link', Base.metadata, books_authors_link = Table('books_authors_link', Base.metadata,
Column('book', Integer, ForeignKey('books.id'), primary_key=True), Column('book', Integer, ForeignKey('books.id'), primary_key=True),
Column('author', Integer, ForeignKey('authors.id'), primary_key=True) Column('author', Integer, ForeignKey('authors.id'), primary_key=True)
) )
books_tags_link = Table('books_tags_link', Base.metadata, books_tags_link = Table('books_tags_link', Base.metadata,
Column('book', Integer, ForeignKey('books.id'), primary_key=True), Column('book', Integer, ForeignKey('books.id'), primary_key=True),
Column('tag', Integer, ForeignKey('tags.id'), primary_key=True) Column('tag', Integer, ForeignKey('tags.id'), primary_key=True)
) )
books_series_link = Table('books_series_link', Base.metadata, books_series_link = Table('books_series_link', Base.metadata,
Column('book', Integer, ForeignKey('books.id'), primary_key=True), Column('book', Integer, ForeignKey('books.id'), primary_key=True),
Column('series', Integer, ForeignKey('series.id'), primary_key=True) Column('series', Integer, ForeignKey('series.id'), primary_key=True)
) )
books_ratings_link = Table('books_ratings_link', Base.metadata, books_ratings_link = Table('books_ratings_link', Base.metadata,
Column('book', Integer, ForeignKey('books.id'), primary_key=True), Column('book', Integer, ForeignKey('books.id'), primary_key=True),
Column('rating', Integer, ForeignKey('ratings.id'), primary_key=True) Column('rating', Integer, ForeignKey('ratings.id'), primary_key=True)
) )
books_languages_link = Table('books_languages_link', Base.metadata, books_languages_link = Table('books_languages_link', Base.metadata,
Column('book', Integer, ForeignKey('books.id'), primary_key=True), Column('book', Integer, ForeignKey('books.id'), primary_key=True),
Column('lang_code', Integer, ForeignKey('languages.id'), primary_key=True) Column('lang_code', Integer, ForeignKey('languages.id'), primary_key=True)
) )
class Identifiers(Base): class Identifiers(Base):
@ -227,7 +227,7 @@ class Books(Base):
identifiers = relationship('Identifiers', backref='books') identifiers = relationship('Identifiers', backref='books')
def __init__(self, title, sort, author_sort, timestamp, pubdate, series_index, last_modified, path, has_cover, 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.title = title
self.sort = sort self.sort = sort
self.author_sort = author_sort self.author_sort = author_sort

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

@ -22,6 +22,11 @@ from email.generator import Generator
from flask_babel import gettext as _ from flask_babel import gettext as _
import subprocess import subprocess
import shutil import shutil
try:
import unidecode
use_unidecode=True
except:
use_unidecode=False
def update_download(book_id, user_id): 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 == 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 return attachment
except IOError: except IOError:
traceback.print_exc() 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 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 Returns the given string converted to a string that can be used for a clean
filename. Limits num characters to 128 max. filename. Limits num characters to 128 max.
""" """
value = value[:128] if value[-1:] ==u'.':
# re_slugify = re.compile('[^\w\s-]', re.UNICODE) value = value[:-1]+u'_'
value = unicodedata.normalize('NFKD', value) if use_unidecode:
re_slugify = re.compile('[^\w\s-]', re.UNICODE) value=(unidecode.unidecode(value)).strip()
value = unicode(re_slugify.sub('', value).strip()) else:
value=value.replace('§','SS')
value=value.replace('ß','ss')
value = unicodedata.normalize('NFKD', value)
re_slugify = re.compile('[\W\s-]', re.UNICODE)
value = unicode(re_slugify.sub('', value).strip())
if replace_whitespace: if replace_whitespace:
value = re.sub('[\s]+', '_', value, flags=re.U) #*+:\"/<>? werden durch _ ersetzt
value = value.replace(u"\u00DF", "ss") value = re.sub('[\*\+:\\\"/<>\?]+', '_', value, flags=re.U)
return value
value = value[:128]
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])
return value 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): def update_dir_stucture(book_id, calibrepath):
db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort) 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() 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] authordir = book.path.split('/')[0]
new_authordir = get_valid_filename(book.authors[0].name, False) new_authordir = get_valid_filename(book.authors[0].name)
titledir = book.path.split(os.sep)[1] titledir = book.path.split('/')[1]
new_titledir = get_valid_filename(book.title, False) + " (" + str(book_id) + ")" new_titledir = get_valid_filename(book.title) + " (" + str(book_id) + ")"
if titledir != new_titledir: if titledir != new_titledir:
new_title_path = os.path.join(os.path.dirname(path), new_titledir) new_title_path = os.path.join(os.path.dirname(path), new_titledir)
os.rename(path, new_title_path) os.rename(path, new_title_path)
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: if authordir != new_authordir:
new_author_path = os.path.join(os.path.join(calibrepath, new_authordir), os.path.basename(path)) new_author_path = os.path.join(os.path.join(calibrepath, new_authordir), os.path.basename(path))
os.renames(path, new_author_path) os.rename(path, new_author_path)
book.path = new_authordir + os.sep + book.path.split(os.sep)[1] book.path = new_authordir + '/' + book.path.split('/')[1]
db.session.commit() db.session.commit()

@ -2,7 +2,7 @@
{% block body %} {% block body %}
<div class="discover"> <div class="discover">
<h2>{{_('User list')}}</h2> <h2>{{_('User list')}}</h2>
<table class="table table-striped"> <table class="table table-striped" id="table_user">
<tr> <tr>
<th>{{_('Nickname')}}</th> <th>{{_('Nickname')}}</th>
<th>{{_('Email')}}</th> <th>{{_('Email')}}</th>
@ -30,9 +30,9 @@
{% endif %} {% endif %}
{% endfor %} {% endfor %}
</table> </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> <h2>{{_('SMTP mail settings')}}</h2>
<table class="table table-striped"> <table class="table table-striped" id="table_email">
<tr> <tr>
<th>{{_('SMTP hostname')}}</th> <th>{{_('SMTP hostname')}}</th>
<th>{{_('SMTP port')}}</th> <th>{{_('SMTP port')}}</th>
@ -51,10 +51,10 @@
</table> </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> <h2>{{_('Configuration')}}</h2>
<table class="table table-striped"> <table class="table table-striped" id="table_configuration">
<tr> <tr>
<th>{{_('Calibre DB dir')}}</th> <th>{{_('Calibre DB dir')}}</th>
<th>{{_('Log Level')}}</th> <th>{{_('Log Level')}}</th>
@ -76,6 +76,7 @@
<div class="btn btn-default"><a href="{{url_for('configuration')}}">{{_('Configuration')}}</a></div> <div class="btn btn-default"><a href="{{url_for('configuration')}}">{{_('Configuration')}}</a></div>
<h2>{{_('Administration')}}</h2> <h2>{{_('Administration')}}</h2>
{% if not development %} {% 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="#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" 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> <div class="btn btn-default" id="check_for_update">{{_('Check for update')}}</a></div>

@ -1,7 +1,7 @@
{% extends "layout.html" %} {% extends "layout.html" %}
{% block body %} {% block body %}
<div class="discover"> <div class="discover">
<h1>{{title}}</h1> <h2>{{title}}</h2>
<form role="form" method="POST" autocomplete="off"> <form role="form" method="POST" autocomplete="off">
<div class="form-group required"> <div class="form-group required">
<label for="config_calibre_dir">{{_('Location of Calibre database')}}</label> <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 %}> <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> <label for="config_public_reg">{{_('Enable public registration')}}</label>
</div> </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> <button type="submit" class="btn btn-default">{{_('Submit')}}</button>
{% if not origin %} {% if not origin %}
<a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a> <a href="{{ url_for('admin') }}" class="btn btn-default">{{_('Back')}}</a>

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

@ -6,7 +6,7 @@
<div class="row"> <div class="row">
{% for entry in random %} {% 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"> <div class="cover">
<a href="{{ url_for('show_book', id=entry.id) }}"> <a href="{{ url_for('show_book', id=entry.id) }}">
{% if entry.has_cover %} {% if entry.has_cover %}
@ -41,7 +41,7 @@
<h2>{{title}}</h2> <h2>{{title}}</h2>
<div class="row"> <div class="row">
{% for entry in entries %} {% 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"> <div class="cover">
<a href="{{ url_for('show_book', id=entry.id) }}"> <a href="{{ url_for('show_book', id=entry.id) }}">
{% if entry.has_cover %} {% if entry.has_cover %}

@ -5,7 +5,7 @@
{% for lang in languages %} {% for lang in languages %}
<div class="row"> <div class="row">
<div class="col-xs-1" align="left"><span class="badge">{{lang_counter[loop.index0].bookcount}}</span></div> <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> </div>
{% endfor %} {% endfor %}
</div> </div>

@ -80,16 +80,16 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if g.user.role_admin() %} {% 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 %} {% 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() %} {% 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 %}
{% endif %} {% endif %}
{% if g.allow_registration and not g.user.is_authenticated %} {% 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 id="login" 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="register" href="{{url_for('register')}}"><span class="glyphicon glyphicon-user"></span> {{_('Register')}}</a></li>
{% endif %} {% endif %}
</ul> </ul>
</div><!--/.nav-collapse --> </div><!--/.nav-collapse -->
@ -98,17 +98,17 @@
{% for message in get_flashed_messages(with_categories=True) %} {% for message in get_flashed_messages(with_categories=True) %}
{%if message[0] == "error" %} {%if message[0] == "error" %}
<div class="row-fluid" style="margin-top: -20px; text-align: center;"> <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> </div>
{%endif%} {%endif%}
{%if message[0] == "info" %} {%if message[0] == "info" %}
<div class="row-fluid" style="margin-top: -20px; text-align: center;"> <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> </div>
{%endif%} {%endif%}
{%if message[0] == "success" %} {%if message[0] == "success" %}
<div class="row-fluid" style="margin-top: -20px; text-align: center;"> <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> </div>
{%endif%} {%endif%}
{% endfor %} {% endfor %}
@ -119,25 +119,25 @@
<nav class="navigation"> <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"> <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 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() %} {% 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%} {%endif%}
{% if g.user.show_best_rated_books() %} {% 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> <li><a href="{{url_for('best_rated_books')}}"><span class="glyphicon glyphicon-star"></span> {{_('Best rated Books')}}</a></li>
{%endif%} {%endif%}
{% if g.user.show_random_books() %} {% 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%} {%endif%}
{% if g.user.show_category() %} {% 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%} {%endif%}
{% if g.user.show_series() %} {% 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%} {%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() %} {% 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%} {%endif%}
{% if g.user.is_authenticated or g.user.is_anonymous() %} {% if g.user.is_authenticated or g.user.is_anonymous() %}
<li class="nav-head hidden-xs">{{_('Public Shelves')}}</li> <li class="nav-head hidden-xs">{{_('Public Shelves')}}</li>
@ -160,9 +160,9 @@
{% endif %} {% endif %}
<div class="col-sm-10"> <div class="col-sm-10">
{% block body %}{% endblock %} {% block body %}{% endblock %}
{% if pagination %} {% if pagination and (pagination.has_next or pagination.has_prev) %}
<div class="pagination"> <div class="pagination">
{%- for page in pagination.iter_pages() %} {% for page in pagination.iter_pages() %}
{% if page %} {% if page %}
{% if page != pagination.page %} {% if page != pagination.page %}
<a href="{{ url_for_other_page(page) }}">{{ page }}</a> <a href="{{ url_for_other_page(page) }}">{{ page }}</a>
@ -172,7 +172,7 @@
{% else %} {% else %}
<span class="ellipsis"></span> <span class="ellipsis"></span>
{% endif %} {% endif %}
{%- endfor %} {% endfor %}
{% if pagination.has_next %} {% if pagination.has_next %}
<a class="next" href="{{ url_for_other_page(pagination.page + 1) <a class="next" href="{{ url_for_other_page(pagination.page + 1)
}}">Next &raquo;</a> }}">Next &raquo;</a>

@ -5,7 +5,7 @@
{% for entry in entries %} {% for entry in entries %}
<div class="row"> <div class="row">
<div class="col-xs-1" align="left"><span class="badge">{{entry.count}}</span></div> <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> </div>
{% endfor %} {% endfor %}
</div> </div>

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

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

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

@ -27,7 +27,7 @@
<label for="locale">{{_('Language')}}</label> <label for="locale">{{_('Language')}}</label>
<select name="locale" id="locale" class="form-control"> <select name="locale" id="locale" class="form-control">
{% for translation in translations %} {% 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 %} {% endfor %}
</select> </select>
</div> </div>
@ -108,7 +108,7 @@
{% endif %} {% endif %}
<button type="submit" id="submit" class="btn btn-default">{{_('Submit')}}</button> <button type="submit" id="submit" class="btn btn-default">{{_('Submit')}}</button>
{% if not profile %} {% 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 %} {% endif %}
</form> </form>

@ -21,7 +21,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-web\n" "Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 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" "PO-Revision-Date: 2016-07-12 19:54+0200\n"
"Last-Translator: Ozzie Isaacs\n" "Last-Translator: Ozzie Isaacs\n"
"Language: de\n" "Language: de\n"
@ -32,7 +32,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.3.4\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" msgid "not installed"
msgstr "Nicht installiert" msgstr "Nicht installiert"
@ -49,7 +49,7 @@ msgstr "Calibre-web Test E-Mail"
msgid "This email has been sent via calibre web." msgid "This email has been sent via calibre web."
msgstr "Die E-Mail wurde via calibre-web versendet" 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" msgid "Send to Kindle"
msgstr "An Kindle senden" 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?" msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "Die angeforderte Datei konnte nicht gelesen werden. Falsche Dateirechte?" msgstr "Die angeforderte Datei konnte nicht gelesen werden. Falsche Dateirechte?"
#: cps/ub.py:380 #: cps/ub.py:443
msgid "Guest" msgid "Guest"
msgstr "Gast" msgstr "Gast"
#: cps/web.py:774 #: cps/web.py:778
msgid "Latest Books" msgid "Latest Books"
msgstr "Letzte Bücher" msgstr "Letzte Bücher"
#: cps/web.py:799 #: cps/web.py:803
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Beliebte Bücher (die meisten Downloads)" 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" msgid "Random Books"
msgstr "Zufällige Bücher" msgstr "Zufällige Bücher"
#: cps/web.py:821 #: cps/web.py:835
msgid "Author list" msgid "Author list"
msgstr "Autorenliste" msgstr "Autorenliste"
#: cps/web.py:838 #: cps/web.py:846
#, python-format #, python-format
msgid "Author: %(nam)s" msgid "Author: %(name)s"
msgstr "Autor: %(nam)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" msgid "Series list"
msgstr "Liste Serien" msgstr "Liste Serien"
#: cps/web.py:862 #: cps/web.py:874
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s" msgstr "Serie: %(serie)s"
#: cps/web.py:864 cps/web.py:961 cps/web.py:1179 cps/web.py:2041 #: cps/web.py:907
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
msgid "Available languages" msgid "Available languages"
msgstr "Verfügbare Sprachen" msgstr "Verfügbare Sprachen"
#: cps/web.py:910 #: cps/web.py:922
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Sprache: %(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" msgid "Category list"
msgstr "Kategorieliste" msgstr "Kategorieliste"
#: cps/web.py:933 #: cps/web.py:947
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Kategorie: %(name)s" msgstr "Kategorie: %(name)s"
#: cps/web.py:992 #: cps/web.py:1008
msgid "Statistics" msgid "Statistics"
msgstr "Statistiken" msgstr "Statistiken"
#: cps/web.py:1013 #: cps/web.py:1029
msgid "Performing Restart, please reload page" msgid "Performing Restart, please reload page"
msgstr "Führe Neustart durch, bitte Seite neu laden" 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" msgid "Performing shutdown of server, please close window"
msgstr "Server wird runtergefahren, bitte Fenster schließen" 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" msgid "search"
msgstr "Suche" 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" msgid "Read a Book"
msgstr "Lese ein Buch" 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!" msgid "Please fill out all fields!"
msgstr "Bitte alle Felder ausfüllen!" 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" msgid "register"
msgstr "Registieren" msgstr "Registieren"
#: cps/web.py:1243 #: cps/web.py:1280
msgid "An unknown error occured. Please try again later." msgid "An unknown error occured. Please try again later."
msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen." msgstr "Es ist ein unbekannter Fehler aufgetreten. Bitte später erneut versuchen."
#: cps/web.py:1248 #: cps/web.py:1285
msgid "This username or email address is already in use." msgid "This username or email address is already in use."
msgstr "Der Benutzername oder die E-Mailadresse ist in bereits in Benutzung." msgstr "Der Benutzername oder die E-Mailadresse ist in bereits in Benutzung."
#: cps/web.py:1266 #: cps/web.py:1303
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Du bist nun eingeloggt als '%(nickname)s'" msgstr "Du bist nun eingeloggt als '%(nickname)s'"
#: cps/web.py:1270 #: cps/web.py:1308
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Falscher Benutzername oder Passwort" msgstr "Falscher Benutzername oder Passwort"
#: cps/web.py:1272 #: cps/web.py:1310
msgid "login" msgid "login"
msgstr "Login" msgstr "Login"
#: cps/web.py:1289 #: cps/web.py:1327
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Bitte zuerst die SMTP Mail Einstellung konfigurieren ..." msgstr "Bitte zuerst die SMTP Mail Einstellung konfigurieren ..."
#: cps/web.py:1293 #: cps/web.py:1331
#, python-format #, python-format
msgid "Book successfully send to %(kindlemail)s" msgid "Book successfully send to %(kindlemail)s"
msgstr "Buch erfolgreich versandt an %(kindlemail)s" msgstr "Buch erfolgreich versandt an %(kindlemail)s"
#: cps/web.py:1297 #: cps/web.py:1335
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s" msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s"
#: cps/web.py:1299 #: cps/web.py:1337
msgid "Please configure your kindle email address first..." msgid "Please configure your kindle email address first..."
msgstr "Bitte die Kindle E-Mail Adresse zuuerst konfigurieren..." msgstr "Bitte die Kindle E-Mail Adresse zuuerst konfigurieren..."
#: cps/web.py:1319 #: cps/web.py:1357
#, python-format #, python-format
msgid "Book has been added to shelf: %(sname)s" msgid "Book has been added to shelf: %(sname)s"
msgstr "Das Buch wurde dem Bücherregal: %(sname)s hinzugefügt" msgstr "Das Buch wurde dem Bücherregal: %(sname)s hinzugefügt"
#: cps/web.py:1340 #: cps/web.py:1378
#, python-format #, python-format
msgid "Book has been removed from shelf: %(sname)s" msgid "Book has been removed from shelf: %(sname)s"
msgstr "Das Buch wurde aus dem Bücherregal: %(sname)s entfernt" 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 #, python-format
msgid "A shelf with the name '%(title)s' already exists." msgid "A shelf with the name '%(title)s' already exists."
msgstr "Es existiert bereits ein Bücheregal mit dem Titel '%(title)s'" msgstr "Es existiert bereits ein Bücheregal mit dem Titel '%(title)s'"
#: cps/web.py:1364 #: cps/web.py:1402
#, python-format #, python-format
msgid "Shelf %(title)s created" msgid "Shelf %(title)s created"
msgstr "Bücherregal %(title)s erzeugt" 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" msgid "There was an error"
msgstr "Es trat ein Fehler auf" 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" msgid "create a shelf"
msgstr "Bücherregal erzeugen" msgstr "Bücherregal erzeugen"
#: cps/web.py:1392 #: cps/web.py:1430
#, python-format #, python-format
msgid "Shelf %(title)s changed" msgid "Shelf %(title)s changed"
msgstr "Bücherregal %(title)s verändert" 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" msgid "Edit a shelf"
msgstr "Bücherregal editieren" msgstr "Bücherregal editieren"
#: cps/web.py:1415 #: cps/web.py:1453
#, python-format #, python-format
msgid "successfully deleted shelf %(name)s" msgid "successfully deleted shelf %(name)s"
msgstr "Bücherregal %(name)s erfolgreich gelöscht" msgstr "Bücherregal %(name)s erfolgreich gelöscht"
#: cps/web.py:1437 #: cps/web.py:1475
#, python-format #, python-format
msgid "Shelf: '%(name)s'" msgid "Shelf: '%(name)s'"
msgstr "Bücherregal: '%(name)s'" msgstr "Bücherregal: '%(name)s'"
#: cps/web.py:1468 #: cps/web.py:1506
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "Reihenfolge in Bücherregal '%(name)s' verändern" 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." msgid "Found an existing account for this email address."
msgstr "Es existiert ein Benutzerkonto für diese E-Mailadresse" 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 #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "%(name)s's Profil" msgstr "%(name)s's Profil"
#: cps/web.py:1531 #: cps/web.py:1571
msgid "Profile updated" msgid "Profile updated"
msgstr "Profil aktualisiert" msgstr "Profil aktualisiert"
#: cps/web.py:1544 #: cps/web.py:1584
msgid "Admin page" msgid "Admin page"
msgstr "Admin Seite" msgstr "Admin Seite"
#: cps/web.py:1604 #: cps/web.py:1656
msgid "Calibre-web configuration updated" msgid "Calibre-web configuration updated"
msgstr "Calibre-web Konfiguration wurde aktualisiert" 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" msgid "Basic Configuration"
msgstr "Basis Konfiguration" msgstr "Basis Konfiguration"
#: cps/web.py:1615 #: cps/web.py:1667
msgid "DB location is not valid, please enter correct path" msgid "DB location is not valid, please enter correct path"
msgstr "DB Speicherort ist ungültig, bitte Pfad korrigieren" 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" msgid "Add new user"
msgstr "Neuen Benutzer hinzufügen" msgstr "Neuen Benutzer hinzufügen"
#: cps/web.py:1687 #: cps/web.py:1741
#, python-format #, python-format
msgid "User '%(user)s' created" msgid "User '%(user)s' created"
msgstr "Benutzer '%(user)s' angelegt" msgstr "Benutzer '%(user)s' angelegt"
#: cps/web.py:1691 #: cps/web.py:1745
msgid "Found an existing account for this email address or nickname." msgid "Found an existing account for this email address or nickname."
msgstr "" msgstr ""
"Es existiert ein Benutzerkonto für diese Emailadresse oder den " "Es existiert ein Benutzerkonto für diese Emailadresse oder den "
"Benutzernamen." "Benutzernamen."
#: cps/web.py:1711 #: cps/web.py:1767
msgid "Mail settings updated" msgid "Mail settings updated"
msgstr "E-Mail Einstellungen aktualisiert" msgstr "E-Mail Einstellungen aktualisiert"
#: cps/web.py:1717 #: cps/web.py:1773
#, python-format #, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s" msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Test E-Mail erfolgreich an %(kindlemail)s versendet" msgstr "Test E-Mail erfolgreich an %(kindlemail)s versendet"
#: cps/web.py:1720 #: cps/web.py:1776
#, python-format #, python-format
msgid "There was an error sending the Test E-Mail: %(res)s" msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Fehler beim versenden der 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" msgid "Edit mail settings"
msgstr "E-Mail Einstellungen editieren" msgstr "E-Mail Einstellungen editieren"
#: cps/web.py:1749 #: cps/web.py:1805
#, python-format #, python-format
msgid "User '%(nick)s' deleted" msgid "User '%(nick)s' deleted"
msgstr "Benutzer '%(nick)s' gelöscht" msgstr "Benutzer '%(nick)s' gelöscht"
#: cps/web.py:1825 #: cps/web.py:1886
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Benutzer '%(nick)s' aktualisiert" msgstr "Benutzer '%(nick)s' aktualisiert"
#: cps/web.py:1828 #: cps/web.py:1889
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Es ist ein unbekanter Fehler aufgetreten" msgstr "Es ist ein unbekanter Fehler aufgetreten"
#: cps/web.py:1831 #: cps/web.py:1892
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Benutzer %(nick)s bearbeiten" msgstr "Benutzer %(nick)s bearbeiten"
#: cps/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" msgid "edit metadata"
msgstr "Metadaten editieren" msgstr "Metadaten editieren"
#: cps/web.py:2071 #: cps/web.py:2133
#, python-format #, python-format
msgid "Failed to create path %s (Permission denied)." msgid "Failed to create path %s (Permission denied)."
msgstr "Fehler beim Erzeugen des Pfads %s (Zugriff verweigert)" msgstr "Fehler beim Erzeugen des Pfads %s (Zugriff verweigert)"
#: cps/web.py:2076 #: cps/web.py:2138
#, python-format #, python-format
msgid "Failed to store file %s (Permission denied)." msgid "Failed to store file %s (Permission denied)."
msgstr "Fehler beim speichern der Datei %s (Zugriff verweigert)" msgstr "Fehler beim speichern der Datei %s (Zugriff verweigert)"
#: cps/web.py:2081 #: cps/web.py:2143
#, python-format #, python-format
msgid "Failed to delete file %s (Permission denied)." msgid "Failed to delete file %s (Permission denied)."
msgstr "Fehler beim Löschen von Datei %s (Zugriff verweigert)" msgstr "Fehler beim Löschen von Datei %s (Zugriff verweigert)"
@ -368,7 +376,7 @@ msgstr "DLS"
msgid "Admin" msgid "Admin"
msgstr "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" msgid "Download"
msgstr "Download" msgstr "Download"
@ -460,22 +468,30 @@ msgstr "Calibre-web Neustarten"
msgid "Stop Calibre-web" msgid "Stop Calibre-web"
msgstr "Stoppe 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?" msgid "Do you really want to restart Calibre-web?"
msgstr "Calibre-web wirklich neustarten?" 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" msgid "Ok"
msgstr "Ok" msgstr "Ok"
#: cps/templates/admin.html:93 cps/templates/admin.html:108 #: cps/templates/admin.html:95 cps/templates/admin.html:110
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:54 #: 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/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" msgid "Back"
msgstr "Zurück" msgstr "Zurück"
#: cps/templates/admin.html:106 #: cps/templates/admin.html:108
msgid "Do you really want to stop Calibre-web?" msgid "Do you really want to stop Calibre-web?"
msgstr "Calibre-web wirklich stoppen" msgstr "Calibre-web wirklich stoppen"
@ -495,7 +511,7 @@ msgstr "Beschreibung"
msgid "Tags" msgid "Tags"
msgstr "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 #: cps/templates/search_form.html:33
msgid "Series" msgid "Series"
msgstr "Serien" msgstr "Serien"
@ -528,9 +544,9 @@ msgstr "Nein"
msgid "view book after edit" msgid "view book after edit"
msgstr "Buch nach Bearbeitung ansehen" 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/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" msgid "Submit"
msgstr "Abschicken" msgstr "Abschicken"
@ -566,7 +582,31 @@ msgstr "Anonymes Browsen aktivieren"
msgid "Enable public registration" msgid "Enable public registration"
msgstr "Öffentliche Registrierung aktivieren" 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 #: cps/templates/login.html:4
msgid "Login" msgid "Login"
msgstr "Login" msgstr "Login"
@ -583,19 +623,23 @@ msgstr "von"
msgid "language" msgid "language"
msgstr "Sprache" msgstr "Sprache"
#: cps/templates/detail.html:105 #: cps/templates/detail.html:74
msgid "Publishing date"
msgstr "Herausgabedatum"
#: cps/templates/detail.html:106
msgid "Description:" msgid "Description:"
msgstr "Beschreibung" msgstr "Beschreibung"
#: cps/templates/detail.html:133 #: cps/templates/detail.html:134
msgid "Read in browser" msgid "Read in browser"
msgstr "Im Browser lesen" msgstr "Im Browser lesen"
#: cps/templates/detail.html:153 #: cps/templates/detail.html:154
msgid "Add to shelf" msgid "Add to shelf"
msgstr "Zu Bücherregal hinzufügen" msgstr "Zu Bücherregal hinzufügen"
#: cps/templates/detail.html:193 #: cps/templates/detail.html:194
msgid "Edit metadata" msgid "Edit metadata"
msgstr "Metadaten bearbeiten" msgstr "Metadaten bearbeiten"
@ -654,34 +698,42 @@ msgid "Hot Books"
msgstr "Beliebte Bücher" msgstr "Beliebte Bücher"
#: cps/templates/index.xml:19 #: 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." msgid "Popular publications from this catalog based on Rating."
msgstr "Beliebte Veröffentlichungen dieses Katalogs basierend auf Bewertungen" 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" msgid "New Books"
msgstr "Neue Bücher" msgstr "Neue Bücher"
#: cps/templates/index.xml:26 #: cps/templates/index.xml:33
msgid "The latest Books" msgid "The latest Books"
msgstr "Die neuesten Bücher" msgstr "Die neuesten Bücher"
#: cps/templates/index.xml:33 #: cps/templates/index.xml:40
msgid "Show Random Books" msgid "Show Random Books"
msgstr "Zeige zufällige Bücher" 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" msgid "Authors"
msgstr "Autoren" msgstr "Autoren"
#: cps/templates/index.xml:40 #: cps/templates/index.xml:47
msgid "Books ordered by Author" msgid "Books ordered by Author"
msgstr "Bücher nach Autoren sortiert" msgstr "Bücher nach Autoren sortiert"
#: cps/templates/index.xml:47 #: cps/templates/index.xml:54
msgid "Books ordered by category" msgid "Books ordered by category"
msgstr "Bücher nach Kategorien sortiert" msgstr "Bücher nach Kategorien sortiert"
#: cps/templates/index.xml:54 #: cps/templates/index.xml:61
msgid "Books ordered by series" msgid "Books ordered by series"
msgstr "Bücher nach Reihen geordnet" msgstr "Bücher nach Reihen geordnet"
@ -709,31 +761,31 @@ msgstr "Registrieren"
msgid "Browse" msgid "Browse"
msgstr "Browsen" msgstr "Browsen"
#: cps/templates/layout.html:127 #: cps/templates/layout.html:130
msgid "Discover" msgid "Discover"
msgstr "Entdecke" msgstr "Entdecke"
#: cps/templates/layout.html:130 #: cps/templates/layout.html:133
msgid "Categories" msgid "Categories"
msgstr "Kategorien" 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" msgid "Languages"
msgstr "Sprachen" msgstr "Sprachen"
#: cps/templates/layout.html:140 #: cps/templates/layout.html:143
msgid "Public Shelves" msgid "Public Shelves"
msgstr "Öffentiche Bücherregale" msgstr "Öffentiche Bücherregale"
#: cps/templates/layout.html:144 #: cps/templates/layout.html:147
msgid "Your Shelves" msgid "Your Shelves"
msgstr "Deine Bücherregale" msgstr "Deine Bücherregale"
#: cps/templates/layout.html:149 #: cps/templates/layout.html:152
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "Bücherregal erzeugen" msgstr "Bücherregal erzeugen"
#: cps/templates/layout.html:150 #: cps/templates/layout.html:153
msgid "About" msgid "About"
msgstr "Über" msgstr "Über"
@ -751,6 +803,10 @@ msgstr "Passwort"
msgid "Remember me" msgid "Remember me"
msgstr "Merken" msgstr "Merken"
#: cps/templates/osd.xml:5
msgid "Calibre Web ebook catalog"
msgstr "Calibre Web Ebook Katalog"
#: cps/templates/read.html:136 #: cps/templates/read.html:136
msgid "Reflow text when sidebars are open." msgid "Reflow text when sidebars are open."
msgstr "Text umbrechen wenn Seitenleiste geöffnet ist" msgstr "Text umbrechen wenn Seitenleiste geöffnet ist"
@ -851,6 +907,14 @@ msgstr "Bücher in dieser Bibliothek"
msgid "Authors in this Library" msgid "Authors in this Library"
msgstr "Autoren in dieser Bibliothek" 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 #: cps/templates/user_edit.html:23
msgid "Kindle E-Mail" msgid "Kindle E-Mail"
msgstr "Kindle E-Mail" msgstr "Kindle E-Mail"
@ -872,50 +936,34 @@ msgid "Show hot books"
msgstr "Zeige Auswahl Beliebte Bücher" msgstr "Zeige Auswahl Beliebte Bücher"
#: cps/templates/user_edit.html:53 #: 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" msgid "Show language selection"
msgstr "Zeige Sprachauswahl" msgstr "Zeige Sprachauswahl"
#: cps/templates/user_edit.html:57 #: cps/templates/user_edit.html:61
msgid "Show series selection" msgid "Show series selection"
msgstr "Zeige Serienauswahl" msgstr "Zeige Serienauswahl"
#: cps/templates/user_edit.html:61 #: cps/templates/user_edit.html:65
msgid "Show category selection" msgid "Show category selection"
msgstr "Zeige Kategorienauswahl" msgstr "Zeige Kategorienauswahl"
#: cps/templates/user_edit.html:65 #: cps/templates/user_edit.html:69
msgid "Show author selection" msgid "Show author selection"
msgstr "Zeige Autorenauswahl" msgstr "Zeige Autorenauswahl"
#: cps/templates/user_edit.html:69 #: cps/templates/user_edit.html:73
msgid "Show random books in detail view" msgid "Show random books in detail view"
msgstr "Zeige zufällige Bücher in der Detailansicht" msgstr "Zeige zufällige Bücher in der Detailansicht"
#: cps/templates/user_edit.html:76 #: cps/templates/user_edit.html:105
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
msgid "Delete this user" msgid "Delete this user"
msgstr "Benutzer löschen" msgstr "Benutzer löschen"
#: cps/templates/user_edit.html:112 #: cps/templates/user_edit.html:116
msgid "Recent Downloads" msgid "Recent Downloads"
msgstr "Letzte Downloads" msgstr "Letzte Downloads"

@ -14,7 +14,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-web\n" "Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 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" "PO-Revision-Date: 2016-11-13 18:35+0100\n"
"Last-Translator: Juan F. Villa <juan.villa@paisdelconocimiento.org>\n" "Last-Translator: Juan F. Villa <juan.villa@paisdelconocimiento.org>\n"
"Language: es\n" "Language: es\n"
@ -25,7 +25,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.3.4\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" msgid "not installed"
msgstr "No instalado" msgstr "No instalado"
@ -42,7 +42,7 @@ msgstr "Prueba de Correo Calibre-web"
msgid "This email has been sent via calibre web." msgid "This email has been sent via calibre web."
msgstr "Este mensaje ha sido enviado 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" msgid "Send to Kindle"
msgstr "Enviar a 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?" msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "El fichero solicitado no puede ser leido. Problema de permisos?" msgstr "El fichero solicitado no puede ser leido. Problema de permisos?"
#: cps/ub.py:380 #: cps/ub.py:443
msgid "Guest" msgid "Guest"
msgstr "" msgstr ""
#: cps/web.py:774 #: cps/web.py:778
msgid "Latest Books" msgid "Latest Books"
msgstr "Libros recientes" msgstr "Libros recientes"
#: cps/web.py:799 #: cps/web.py:803
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Libros Populares (los mas descargados)" 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" msgid "Random Books"
msgstr "Libros al Azar" msgstr "Libros al Azar"
#: cps/web.py:821 #: cps/web.py:835
msgid "Author list" msgid "Author list"
msgstr "Lista de Autores" msgstr "Lista de Autores"
#: cps/web.py:838 #: cps/web.py:846
#, python-format #, python-format
msgid "Author: %(nam)s" msgid "Author: %(name)s"
msgstr "Autor : %(nam)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" msgid "Series list"
msgstr "lista de Series" msgstr "lista de Series"
#: cps/web.py:862 #: cps/web.py:874
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Series : %(serie)s" msgstr "Series : %(serie)s"
#: cps/web.py:864 cps/web.py:961 cps/web.py:1179 cps/web.py:2041 #: cps/web.py:907
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
msgid "Available languages" msgid "Available languages"
msgstr "Lenguajes disponibles" msgstr "Lenguajes disponibles"
#: cps/web.py:910 #: cps/web.py:922
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Lenguaje: %(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" msgid "Category list"
msgstr "Lista de Categorias" msgstr "Lista de Categorias"
#: cps/web.py:933 #: cps/web.py:947
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Categoria : %(name)s" msgstr "Categoria : %(name)s"
#: cps/web.py:992 #: cps/web.py:1008
msgid "Statistics" msgid "Statistics"
msgstr "Estadisticas" msgstr "Estadisticas"
#: cps/web.py:1013 #: cps/web.py:1029
msgid "Performing Restart, please reload page" msgid "Performing Restart, please reload page"
msgstr "" msgstr ""
#: cps/web.py:1015 #: cps/web.py:1031
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "" 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" 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" msgid "Read a Book"
msgstr "Leer un Libro" 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!" msgid "Please fill out all fields!"
msgstr "Por favor llenar todos los campos!" 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" msgid "register"
msgstr "Registrarse" msgstr "Registrarse"
#: cps/web.py:1243 #: cps/web.py:1280
msgid "An unknown error occured. Please try again later." msgid "An unknown error occured. Please try again later."
msgstr "Ocurrio un error. Intentar de nuevo mas tarde." 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." msgid "This username or email address is already in use."
msgstr "Usuario o direccion de correo en uso." msgstr "Usuario o direccion de correo en uso."
#: cps/web.py:1266 #: cps/web.py:1303
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Sesion iniciada como : '%(nickname)s'" msgstr "Sesion iniciada como : '%(nickname)s'"
#: cps/web.py:1270 #: cps/web.py:1308
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Usuario o contraseña invalido" msgstr "Usuario o contraseña invalido"
#: cps/web.py:1272 #: cps/web.py:1310
msgid "login" msgid "login"
msgstr "Iniciar Sesion" msgstr "Iniciar Sesion"
#: cps/web.py:1289 #: cps/web.py:1327
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Configurar primero los parametros SMTP por favor..." msgstr "Configurar primero los parametros SMTP por favor..."
#: cps/web.py:1293 #: cps/web.py:1331
#, python-format #, python-format
msgid "Book successfully send to %(kindlemail)s" msgid "Book successfully send to %(kindlemail)s"
msgstr "Envio de Libro a %(kindlemail)s correctamente" msgstr "Envio de Libro a %(kindlemail)s correctamente"
#: cps/web.py:1297 #: cps/web.py:1335
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Ha sucedido un error en el envio del Libro: %(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..." msgid "Please configure your kindle email address first..."
msgstr "Configurar primero la dirección de correo Kindle por favor..." msgstr "Configurar primero la dirección de correo Kindle por favor..."
#: cps/web.py:1319 #: cps/web.py:1357
#, python-format #, python-format
msgid "Book has been added to shelf: %(sname)s" msgid "Book has been added to shelf: %(sname)s"
msgstr "El libro fue agregado a el estante: %(sname)s" msgstr "El libro fue agregado a el estante: %(sname)s"
#: cps/web.py:1340 #: cps/web.py:1378
#, python-format #, python-format
msgid "Book has been removed from shelf: %(sname)s" msgid "Book has been removed from shelf: %(sname)s"
msgstr "El libro fue removido del estante: %(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 #, python-format
msgid "A shelf with the name '%(title)s' already exists." msgid "A shelf with the name '%(title)s' already exists."
msgstr "Une étagère de ce nom '%(title)s' existe déjà." msgstr "Une étagère de ce nom '%(title)s' existe déjà."
#: cps/web.py:1364 #: cps/web.py:1402
#, python-format #, python-format
msgid "Shelf %(title)s created" msgid "Shelf %(title)s created"
msgstr "Estante %(title)s creado" 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" msgid "There was an error"
msgstr "Hemos tenido un 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" msgid "create a shelf"
msgstr "Crear un Estante" msgstr "Crear un Estante"
#: cps/web.py:1392 #: cps/web.py:1430
#, python-format #, python-format
msgid "Shelf %(title)s changed" msgid "Shelf %(title)s changed"
msgstr "" msgstr ""
#: cps/web.py:1395 cps/web.py:1397 #: cps/web.py:1433 cps/web.py:1435
msgid "Edit a shelf" msgid "Edit a shelf"
msgstr "" msgstr ""
#: cps/web.py:1415 #: cps/web.py:1453
#, python-format #, python-format
msgid "successfully deleted shelf %(name)s" msgid "successfully deleted shelf %(name)s"
msgstr "Estante %(name)s fue borrado correctamente" msgstr "Estante %(name)s fue borrado correctamente"
#: cps/web.py:1437 #: cps/web.py:1475
#, python-format #, python-format
msgid "Shelf: '%(name)s'" msgid "Shelf: '%(name)s'"
msgstr "Estante: '%(name)s'" msgstr "Estante: '%(name)s'"
#: cps/web.py:1468 #: cps/web.py:1506
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "" msgstr ""
#: cps/web.py:1528 #: cps/web.py:1568
msgid "Found an existing account for this email address." msgid "Found an existing account for this email address."
msgstr "Existe una cuenta vinculada a esta cuenta de correo." 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 #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Perfil de %(name)s" msgstr "Perfil de %(name)s"
#: cps/web.py:1531 #: cps/web.py:1571
msgid "Profile updated" msgid "Profile updated"
msgstr "Perfil actualizado" msgstr "Perfil actualizado"
#: cps/web.py:1544 #: cps/web.py:1584
msgid "Admin page" msgid "Admin page"
msgstr "" msgstr ""
#: cps/web.py:1604 #: cps/web.py:1656
msgid "Calibre-web configuration updated" msgid "Calibre-web configuration updated"
msgstr "" 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" msgid "Basic Configuration"
msgstr "" msgstr ""
#: cps/web.py:1615 #: cps/web.py:1667
msgid "DB location is not valid, please enter correct path" msgid "DB location is not valid, please enter correct path"
msgstr "" 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" msgid "Add new user"
msgstr "Agregar un nuevo usuario" msgstr "Agregar un nuevo usuario"
#: cps/web.py:1687 #: cps/web.py:1741
#, python-format #, python-format
msgid "User '%(user)s' created" msgid "User '%(user)s' created"
msgstr "Usuario '%(user)s' creado" msgstr "Usuario '%(user)s' creado"
#: cps/web.py:1691 #: cps/web.py:1745
msgid "Found an existing account for this email address or nickname." 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." 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" msgid "Mail settings updated"
msgstr "Parametros de correo actualizados" msgstr "Parametros de correo actualizados"
#: cps/web.py:1717 #: cps/web.py:1773
#, python-format #, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s" msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Exito al realizar envio de prueba a %(kindlemail)s" msgstr "Exito al realizar envio de prueba a %(kindlemail)s"
#: cps/web.py:1720 #: cps/web.py:1776
#, python-format #, python-format
msgid "There was an error sending the Test E-Mail: %(res)s" msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "Error al realizar envio de prueba a 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" msgid "Edit mail settings"
msgstr "Editar parametros de correo" msgstr "Editar parametros de correo"
#: cps/web.py:1749 #: cps/web.py:1805
#, python-format #, python-format
msgid "User '%(nick)s' deleted" msgid "User '%(nick)s' deleted"
msgstr "Usuario '%(nick)s' borrado" msgstr "Usuario '%(nick)s' borrado"
#: cps/web.py:1825 #: cps/web.py:1886
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Usuario '%(nick)s' Actualizado" msgstr "Usuario '%(nick)s' Actualizado"
#: cps/web.py:1828 #: cps/web.py:1889
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Oups ! Error inesperado." msgstr "Oups ! Error inesperado."
#: cps/web.py:1831 #: cps/web.py:1892
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Editar Usuario %(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" msgid "edit metadata"
msgstr "" msgstr ""
#: cps/web.py:2071 #: cps/web.py:2133
#, python-format #, python-format
msgid "Failed to create path %s (Permission denied)." msgid "Failed to create path %s (Permission denied)."
msgstr "Fallo al crear la ruta %s (permiso negado)" msgstr "Fallo al crear la ruta %s (permiso negado)"
#: cps/web.py:2076 #: cps/web.py:2138
#, python-format #, python-format
msgid "Failed to store file %s (Permission denied)." msgid "Failed to store file %s (Permission denied)."
msgstr "Fallo al almacenar el archivo %s (permiso negado)" msgstr "Fallo al almacenar el archivo %s (permiso negado)"
#: cps/web.py:2081 #: cps/web.py:2143
#, python-format #, python-format
msgid "Failed to delete file %s (Permission denied)." msgid "Failed to delete file %s (Permission denied)."
msgstr "Fallo al borrar el archivo %s (permiso negado)" msgstr "Fallo al borrar el archivo %s (permiso negado)"
@ -355,7 +363,7 @@ msgstr "DLS"
msgid "Admin" msgid "Admin"
msgstr "Administracion" msgstr "Administracion"
#: cps/templates/admin.html:12 cps/templates/detail.html:116 #: cps/templates/admin.html:12 cps/templates/detail.html:117
msgid "Download" msgid "Download"
msgstr "Descarga" msgstr "Descarga"
@ -447,22 +455,30 @@ msgstr ""
msgid "Stop Calibre-web" msgid "Stop Calibre-web"
msgstr "" 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?" msgid "Do you really want to restart Calibre-web?"
msgstr "" msgstr ""
#: cps/templates/admin.html:92 cps/templates/admin.html:107 #: cps/templates/admin.html:94 cps/templates/admin.html:109
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
#: cps/templates/admin.html:93 cps/templates/admin.html:108 #: cps/templates/admin.html:95 cps/templates/admin.html:110
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:54 #: 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/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" msgid "Back"
msgstr "Regresar" msgstr "Regresar"
#: cps/templates/admin.html:106 #: cps/templates/admin.html:108
msgid "Do you really want to stop Calibre-web?" msgid "Do you really want to stop Calibre-web?"
msgstr "" msgstr ""
@ -482,7 +498,7 @@ msgstr "Descripcion"
msgid "Tags" msgid "Tags"
msgstr "Etiqueta" 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 #: cps/templates/search_form.html:33
msgid "Series" msgid "Series"
msgstr "Series" msgstr "Series"
@ -515,9 +531,9 @@ msgstr "No"
msgid "view book after edit" msgid "view book after edit"
msgstr "Ver libro tras la edicion" 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/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" msgid "Submit"
msgstr "Enviar" msgstr "Enviar"
@ -553,7 +569,31 @@ msgstr ""
msgid "Enable public registration" msgid "Enable public registration"
msgstr "" 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 #: cps/templates/login.html:4
msgid "Login" msgid "Login"
msgstr "Inicio de Sesion" msgstr "Inicio de Sesion"
@ -570,19 +610,23 @@ msgstr "de"
msgid "language" msgid "language"
msgstr "Lenguaje" msgstr "Lenguaje"
#: cps/templates/detail.html:105 #: cps/templates/detail.html:74
msgid "Publishing date"
msgstr ""
#: cps/templates/detail.html:106
msgid "Description:" msgid "Description:"
msgstr "Descripcion :" msgstr "Descripcion :"
#: cps/templates/detail.html:133 #: cps/templates/detail.html:134
msgid "Read in browser" msgid "Read in browser"
msgstr "Ver en el navegador" msgstr "Ver en el navegador"
#: cps/templates/detail.html:153 #: cps/templates/detail.html:154
msgid "Add to shelf" msgid "Add to shelf"
msgstr "Agregar al estante" msgstr "Agregar al estante"
#: cps/templates/detail.html:193 #: cps/templates/detail.html:194
msgid "Edit metadata" msgid "Edit metadata"
msgstr "Editar la metadata" msgstr "Editar la metadata"
@ -639,34 +683,42 @@ msgid "Hot Books"
msgstr "Libros Populares" msgstr "Libros Populares"
#: cps/templates/index.xml:19 #: 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." msgid "Popular publications from this catalog based on Rating."
msgstr "Publicaciones populares del catalogo basados en el puntaje." 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" msgid "New Books"
msgstr "Nuevos Libros" msgstr "Nuevos Libros"
#: cps/templates/index.xml:26 #: cps/templates/index.xml:33
msgid "The latest Books" msgid "The latest Books"
msgstr "Libros Recientes" msgstr "Libros Recientes"
#: cps/templates/index.xml:33 #: cps/templates/index.xml:40
msgid "Show Random Books" msgid "Show Random Books"
msgstr "Mostrar libros al azar" 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" msgid "Authors"
msgstr "Autores" msgstr "Autores"
#: cps/templates/index.xml:40 #: cps/templates/index.xml:47
msgid "Books ordered by Author" msgid "Books ordered by Author"
msgstr "Libros ordenados por Autor" msgstr "Libros ordenados por Autor"
#: cps/templates/index.xml:47 #: cps/templates/index.xml:54
msgid "Books ordered by category" msgid "Books ordered by category"
msgstr "Libros ordenados por Categorias" msgstr "Libros ordenados por Categorias"
#: cps/templates/index.xml:54 #: cps/templates/index.xml:61
msgid "Books ordered by series" msgid "Books ordered by series"
msgstr "Libros ordenados por Series" msgstr "Libros ordenados por Series"
@ -694,31 +746,31 @@ msgstr "Registro"
msgid "Browse" msgid "Browse"
msgstr "Explorar" msgstr "Explorar"
#: cps/templates/layout.html:127 #: cps/templates/layout.html:130
msgid "Discover" msgid "Discover"
msgstr "Descubrir" msgstr "Descubrir"
#: cps/templates/layout.html:130 #: cps/templates/layout.html:133
msgid "Categories" msgid "Categories"
msgstr "Categoria" 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" msgid "Languages"
msgstr "Lenguaje" msgstr "Lenguaje"
#: cps/templates/layout.html:140 #: cps/templates/layout.html:143
msgid "Public Shelves" msgid "Public Shelves"
msgstr "Estantes Publicos" msgstr "Estantes Publicos"
#: cps/templates/layout.html:144 #: cps/templates/layout.html:147
msgid "Your Shelves" msgid "Your Shelves"
msgstr "Sus Estantes" msgstr "Sus Estantes"
#: cps/templates/layout.html:149 #: cps/templates/layout.html:152
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "Crear un estante" msgstr "Crear un estante"
#: cps/templates/layout.html:150 #: cps/templates/layout.html:153
msgid "About" msgid "About"
msgstr "Acerca de" msgstr "Acerca de"
@ -736,6 +788,10 @@ msgstr "Clave"
msgid "Remember me" msgid "Remember me"
msgstr "Recordarme" msgstr "Recordarme"
#: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog"
msgstr ""
#: cps/templates/read.html:136 #: cps/templates/read.html:136
msgid "Reflow text when sidebars are open." msgid "Reflow text when sidebars are open."
msgstr "Redimensionar el texto cuando las barras laterales estan abiertas" msgstr "Redimensionar el texto cuando las barras laterales estan abiertas"
@ -836,6 +892,14 @@ msgstr "Libros en esta Biblioteca"
msgid "Authors in this Library" msgid "Authors in this Library"
msgstr "Autores en esta Biblioteca" 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 #: cps/templates/user_edit.html:23
msgid "Kindle E-Mail" msgid "Kindle E-Mail"
msgstr "Correo del Kindle" msgstr "Correo del Kindle"
@ -857,50 +921,34 @@ msgid "Show hot books"
msgstr "Mostrar libros populares" msgstr "Mostrar libros populares"
#: cps/templates/user_edit.html:53 #: cps/templates/user_edit.html:53
msgid "Show best rated books"
msgstr ""
#: cps/templates/user_edit.html:57
msgid "Show language selection" msgid "Show language selection"
msgstr "Mostrar lenguaje seleccionado" msgstr "Mostrar lenguaje seleccionado"
#: cps/templates/user_edit.html:57 #: cps/templates/user_edit.html:61
msgid "Show series selection" msgid "Show series selection"
msgstr "Mostrar series seleccionadas" msgstr "Mostrar series seleccionadas"
#: cps/templates/user_edit.html:61 #: cps/templates/user_edit.html:65
msgid "Show category selection" msgid "Show category selection"
msgstr "Mostrar categorias elegidas" msgstr "Mostrar categorias elegidas"
#: cps/templates/user_edit.html:65 #: cps/templates/user_edit.html:69
msgid "Show author selection" 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" msgid "Show random books in detail view"
msgstr "" msgstr ""
#: cps/templates/user_edit.html:76 #: cps/templates/user_edit.html:105
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
msgid "Delete this user" msgid "Delete this user"
msgstr "Borrar este usuario" msgstr "Borrar este usuario"
#: cps/templates/user_edit.html:112 #: cps/templates/user_edit.html:116
msgid "Recent Downloads" msgid "Recent Downloads"
msgstr "Descargas Recientes" msgstr "Descargas Recientes"

@ -20,7 +20,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre-web\n" "Project-Id-Version: Calibre-web\n"
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
"POT-Creation-Date: 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" "PO-Revision-Date: 2016-11-13 18:35+0100\n"
"Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n" "Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n"
"Language: fr\n" "Language: fr\n"
@ -31,7 +31,7 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Generated-By: Babel 2.3.4\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" msgid "not installed"
msgstr "" msgstr ""
@ -48,7 +48,7 @@ msgstr ""
msgid "This email has been sent via calibre web." msgid "This email has been sent via calibre web."
msgstr "Ce message a été envoyé depuis 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" msgid "Send to Kindle"
msgstr "Envoyer ver Kindle" msgstr "Envoyer ver Kindle"
@ -66,277 +66,285 @@ msgstr ""
"Le fichier demandé ne peux pas être lu. Peut-être de mauvaises " "Le fichier demandé ne peux pas être lu. Peut-être de mauvaises "
"permissions ?" "permissions ?"
#: cps/ub.py:380 #: cps/ub.py:443
msgid "Guest" msgid "Guest"
msgstr "" msgstr ""
#: cps/web.py:774 #: cps/web.py:778
msgid "Latest Books" msgid "Latest Books"
msgstr "Derniers livres" msgstr "Derniers livres"
#: cps/web.py:799 #: cps/web.py:803
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Livres populaires (les plus téléchargés)" 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" msgid "Random Books"
msgstr "Livres au hasard" msgstr "Livres au hasard"
#: cps/web.py:821 #: cps/web.py:835
msgid "Author list" msgid "Author list"
msgstr "Liste des auteurs" msgstr "Liste des auteurs"
#: cps/web.py:838 #: cps/web.py:846
#, python-format #, python-format
msgid "Author: %(nam)s" msgid "Author: %(name)s"
msgstr "Auteur : %(nam)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" msgid "Series list"
msgstr "Liste des séries" msgstr "Liste des séries"
#: cps/web.py:862 #: cps/web.py:874
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Séries : %(serie)s" msgstr "Séries : %(serie)s"
#: cps/web.py:864 cps/web.py:961 cps/web.py:1179 cps/web.py:2041 #: cps/web.py:907
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
msgid "Available languages" msgid "Available languages"
msgstr "Langues disponibles" msgstr "Langues disponibles"
#: cps/web.py:910 #: cps/web.py:922
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Langue : %(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" msgid "Category list"
msgstr "Liste des catégories" msgstr "Liste des catégories"
#: cps/web.py:933 #: cps/web.py:947
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Catégorie : %(name)s" msgstr "Catégorie : %(name)s"
#: cps/web.py:992 #: cps/web.py:1008
msgid "Statistics" msgid "Statistics"
msgstr "Statistiques" msgstr "Statistiques"
#: cps/web.py:1013 #: cps/web.py:1029
msgid "Performing Restart, please reload page" msgid "Performing Restart, please reload page"
msgstr "" msgstr ""
#: cps/web.py:1015 #: cps/web.py:1031
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "" 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" 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" msgid "Read a Book"
msgstr "Lire un livre" 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!" msgid "Please fill out all fields!"
msgstr "SVP, complétez tous les champs !" 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" msgid "register"
msgstr "S'enregistrer" msgstr "S'enregistrer"
#: cps/web.py:1243 #: cps/web.py:1280
msgid "An unknown error occured. Please try again later." msgid "An unknown error occured. Please try again later."
msgstr "Une erreur a eu lieu. Merci de réessayez plus tard." 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." 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." 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 #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Vous êtes maintenant connecté sous : '%(nickname)s'" msgstr "Vous êtes maintenant connecté sous : '%(nickname)s'"
#: cps/web.py:1270 #: cps/web.py:1308
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Mauvais nom d'utilisateur ou mot de passe" msgstr "Mauvais nom d'utilisateur ou mot de passe"
#: cps/web.py:1272 #: cps/web.py:1310
msgid "login" msgid "login"
msgstr "Connexion" msgstr "Connexion"
#: cps/web.py:1289 #: cps/web.py:1327
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Veillez configurer les paramètres smtp d'abord..." msgstr "Veillez configurer les paramètres smtp d'abord..."
#: cps/web.py:1293 #: cps/web.py:1331
#, python-format #, python-format
msgid "Book successfully send to %(kindlemail)s" msgid "Book successfully send to %(kindlemail)s"
msgstr "Livres envoyés à %(kindlemail)s avec succès" msgstr "Livres envoyés à %(kindlemail)s avec succès"
#: cps/web.py:1297 #: cps/web.py:1335
#, python-format #, python-format
msgid "There was an error sending this book: %(res)s" msgid "There was an error sending this book: %(res)s"
msgstr "Il y a eu une erreur en envoyant ce livre : %(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..." msgid "Please configure your kindle email address first..."
msgstr "Veuillez configurer votre adresse kindle d'abord..." msgstr "Veuillez configurer votre adresse kindle d'abord..."
#: cps/web.py:1319 #: cps/web.py:1357
#, python-format #, python-format
msgid "Book has been added to shelf: %(sname)s" msgid "Book has been added to shelf: %(sname)s"
msgstr "Le livre a bien été ajouté à l'étagère : %(sname)s" msgstr "Le livre a bien été ajouté à l'étagère : %(sname)s"
#: cps/web.py:1340 #: cps/web.py:1378
#, python-format #, python-format
msgid "Book has been removed from shelf: %(sname)s" msgid "Book has been removed from shelf: %(sname)s"
msgstr "Le livre a été supprimé de l'étagère %(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 #, python-format
msgid "A shelf with the name '%(title)s' already exists." msgid "A shelf with the name '%(title)s' already exists."
msgstr "Une étagère de ce nom '%(title)s' existe déjà." msgstr "Une étagère de ce nom '%(title)s' existe déjà."
#: cps/web.py:1364 #: cps/web.py:1402
#, python-format #, python-format
msgid "Shelf %(title)s created" msgid "Shelf %(title)s created"
msgstr "Étagère %(title)s créée" 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" msgid "There was an error"
msgstr "Il y a eu une erreur" 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" msgid "create a shelf"
msgstr "Créer une étagère" msgstr "Créer une étagère"
#: cps/web.py:1392 #: cps/web.py:1430
#, python-format #, python-format
msgid "Shelf %(title)s changed" msgid "Shelf %(title)s changed"
msgstr "" msgstr ""
#: cps/web.py:1395 cps/web.py:1397 #: cps/web.py:1433 cps/web.py:1435
msgid "Edit a shelf" msgid "Edit a shelf"
msgstr "" msgstr ""
#: cps/web.py:1415 #: cps/web.py:1453
#, python-format #, python-format
msgid "successfully deleted shelf %(name)s" msgid "successfully deleted shelf %(name)s"
msgstr "L'étagère %(name)s a été supprimé avec succès" msgstr "L'étagère %(name)s a été supprimé avec succès"
#: cps/web.py:1437 #: cps/web.py:1475
#, python-format #, python-format
msgid "Shelf: '%(name)s'" msgid "Shelf: '%(name)s'"
msgstr "Étagère : '%(name)s'" msgstr "Étagère : '%(name)s'"
#: cps/web.py:1468 #: cps/web.py:1506
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "" msgstr ""
#: cps/web.py:1528 #: cps/web.py:1568
msgid "Found an existing account for this email address." msgid "Found an existing account for this email address."
msgstr "Un compte avec cette adresse de courriel existe déjà." 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 #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Profil de %(name)s" msgstr "Profil de %(name)s"
#: cps/web.py:1531 #: cps/web.py:1571
msgid "Profile updated" msgid "Profile updated"
msgstr "Profil mis à jour" msgstr "Profil mis à jour"
#: cps/web.py:1544 #: cps/web.py:1584
msgid "Admin page" msgid "Admin page"
msgstr "" msgstr ""
#: cps/web.py:1604 #: cps/web.py:1656
msgid "Calibre-web configuration updated" msgid "Calibre-web configuration updated"
msgstr "" 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" msgid "Basic Configuration"
msgstr "" msgstr ""
#: cps/web.py:1615 #: cps/web.py:1667
msgid "DB location is not valid, please enter correct path" msgid "DB location is not valid, please enter correct path"
msgstr "" 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" msgid "Add new user"
msgstr "Ajouter un nouvel utilisateur" msgstr "Ajouter un nouvel utilisateur"
#: cps/web.py:1687 #: cps/web.py:1741
#, python-format #, python-format
msgid "User '%(user)s' created" msgid "User '%(user)s' created"
msgstr "Utilisateur '%(user)s' créé" msgstr "Utilisateur '%(user)s' créé"
#: cps/web.py:1691 #: cps/web.py:1745
msgid "Found an existing account for this email address or nickname." 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à." 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" msgid "Mail settings updated"
msgstr "Paramètres de courriel mis à jour" msgstr "Paramètres de courriel mis à jour"
#: cps/web.py:1717 #: cps/web.py:1773
#, python-format #, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s" msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "" msgstr ""
#: cps/web.py:1720 #: cps/web.py:1776
#, python-format #, python-format
msgid "There was an error sending the Test E-Mail: %(res)s" msgid "There was an error sending the Test E-Mail: %(res)s"
msgstr "" msgstr ""
#: cps/web.py:1721 #: cps/web.py:1777
msgid "Edit mail settings" msgid "Edit mail settings"
msgstr "Éditer les paramètres de courriel" msgstr "Éditer les paramètres de courriel"
#: cps/web.py:1749 #: cps/web.py:1805
#, python-format #, python-format
msgid "User '%(nick)s' deleted" msgid "User '%(nick)s' deleted"
msgstr "Utilisateur '%(nick)s' supprimé" msgstr "Utilisateur '%(nick)s' supprimé"
#: cps/web.py:1825 #: cps/web.py:1886
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Utilisateur '%(nick)s' mis à jour" msgstr "Utilisateur '%(nick)s' mis à jour"
#: cps/web.py:1828 #: cps/web.py:1889
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Oups ! Une erreur inconnue a eu lieu." msgstr "Oups ! Une erreur inconnue a eu lieu."
#: cps/web.py:1831 #: cps/web.py:1892
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Éditer l'utilisateur %(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" msgid "edit metadata"
msgstr "" msgstr ""
#: cps/web.py:2071 #: cps/web.py:2133
#, python-format #, python-format
msgid "Failed to create path %s (Permission denied)." msgid "Failed to create path %s (Permission denied)."
msgstr "Impossible de créer le chemin %s (permission refusée)" msgstr "Impossible de créer le chemin %s (permission refusée)"
#: cps/web.py:2076 #: cps/web.py:2138
#, python-format #, python-format
msgid "Failed to store file %s (Permission denied)." msgid "Failed to store file %s (Permission denied)."
msgstr "Impossible d'enregistrer le fichier %s (permission refusée)" msgstr "Impossible d'enregistrer le fichier %s (permission refusée)"
#: cps/web.py:2081 #: cps/web.py:2143
#, python-format #, python-format
msgid "Failed to delete file %s (Permission denied)." msgid "Failed to delete file %s (Permission denied)."
msgstr "Impossible de supprimer le fichier %s (permission refusée)" msgstr "Impossible de supprimer le fichier %s (permission refusée)"
@ -365,7 +373,7 @@ msgstr "DLS"
msgid "Admin" msgid "Admin"
msgstr "Administration" msgstr "Administration"
#: cps/templates/admin.html:12 cps/templates/detail.html:116 #: cps/templates/admin.html:12 cps/templates/detail.html:117
msgid "Download" msgid "Download"
msgstr "Télécharger" msgstr "Télécharger"
@ -457,22 +465,30 @@ msgstr ""
msgid "Stop Calibre-web" msgid "Stop Calibre-web"
msgstr "" 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?" msgid "Do you really want to restart Calibre-web?"
msgstr "" msgstr ""
#: cps/templates/admin.html:92 cps/templates/admin.html:107 #: cps/templates/admin.html:94 cps/templates/admin.html:109
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
#: cps/templates/admin.html:93 cps/templates/admin.html:108 #: cps/templates/admin.html:95 cps/templates/admin.html:110
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:54 #: 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/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" msgid "Back"
msgstr "Retour" msgstr "Retour"
#: cps/templates/admin.html:106 #: cps/templates/admin.html:108
msgid "Do you really want to stop Calibre-web?" msgid "Do you really want to stop Calibre-web?"
msgstr "" msgstr ""
@ -492,7 +508,7 @@ msgstr "Description"
msgid "Tags" msgid "Tags"
msgstr "Étiquette" 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 #: cps/templates/search_form.html:33
msgid "Series" msgid "Series"
msgstr "Séries" msgstr "Séries"
@ -525,9 +541,9 @@ msgstr "Non"
msgid "view book after edit" msgid "view book after edit"
msgstr "Voir le livre après l'édition" 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/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" msgid "Submit"
msgstr "Soumettre" msgstr "Soumettre"
@ -563,7 +579,31 @@ msgstr ""
msgid "Enable public registration" msgid "Enable public registration"
msgstr "" 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 #: cps/templates/login.html:4
msgid "Login" msgid "Login"
msgstr "Connexion" msgstr "Connexion"
@ -580,19 +620,23 @@ msgstr ""
msgid "language" msgid "language"
msgstr "Langue" msgstr "Langue"
#: cps/templates/detail.html:105 #: cps/templates/detail.html:74
msgid "Publishing date"
msgstr ""
#: cps/templates/detail.html:106
msgid "Description:" msgid "Description:"
msgstr "Description :" msgstr "Description :"
#: cps/templates/detail.html:133 #: cps/templates/detail.html:134
msgid "Read in browser" msgid "Read in browser"
msgstr "Lire dans le navigateur" msgstr "Lire dans le navigateur"
#: cps/templates/detail.html:153 #: cps/templates/detail.html:154
msgid "Add to shelf" msgid "Add to shelf"
msgstr "Ajouter à l'étagère" msgstr "Ajouter à l'étagère"
#: cps/templates/detail.html:193 #: cps/templates/detail.html:194
msgid "Edit metadata" msgid "Edit metadata"
msgstr "Éditer les métadonnées" msgstr "Éditer les métadonnées"
@ -649,34 +693,42 @@ msgid "Hot Books"
msgstr "Livres populaires" msgstr "Livres populaires"
#: cps/templates/index.xml:19 #: 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." msgid "Popular publications from this catalog based on Rating."
msgstr "Publications populaires de ce catalogue sur la base de notes." 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" msgid "New Books"
msgstr "Nouveaux livres" msgstr "Nouveaux livres"
#: cps/templates/index.xml:26 #: cps/templates/index.xml:33
msgid "The latest Books" msgid "The latest Books"
msgstr "Les derniers livres" msgstr "Les derniers livres"
#: cps/templates/index.xml:33 #: cps/templates/index.xml:40
msgid "Show Random Books" msgid "Show Random Books"
msgstr "Montrer des livres au hasard" 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" msgid "Authors"
msgstr "Auteurs" msgstr "Auteurs"
#: cps/templates/index.xml:40 #: cps/templates/index.xml:47
msgid "Books ordered by Author" msgid "Books ordered by Author"
msgstr "Livres classés par auteur" msgstr "Livres classés par auteur"
#: cps/templates/index.xml:47 #: cps/templates/index.xml:54
msgid "Books ordered by category" msgid "Books ordered by category"
msgstr "Livres classés par catégorie" msgstr "Livres classés par catégorie"
#: cps/templates/index.xml:54 #: cps/templates/index.xml:61
msgid "Books ordered by series" msgid "Books ordered by series"
msgstr "Livres classés par série" msgstr "Livres classés par série"
@ -704,31 +756,31 @@ msgstr "S'enregistrer"
msgid "Browse" msgid "Browse"
msgstr "Explorer" msgstr "Explorer"
#: cps/templates/layout.html:127 #: cps/templates/layout.html:130
msgid "Discover" msgid "Discover"
msgstr "Découvrir" msgstr "Découvrir"
#: cps/templates/layout.html:130 #: cps/templates/layout.html:133
msgid "Categories" msgid "Categories"
msgstr "Catégories" 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" msgid "Languages"
msgstr "Langues" msgstr "Langues"
#: cps/templates/layout.html:140 #: cps/templates/layout.html:143
msgid "Public Shelves" msgid "Public Shelves"
msgstr "Étagères publiques" msgstr "Étagères publiques"
#: cps/templates/layout.html:144 #: cps/templates/layout.html:147
msgid "Your Shelves" msgid "Your Shelves"
msgstr "Vos étagères" msgstr "Vos étagères"
#: cps/templates/layout.html:149 #: cps/templates/layout.html:152
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "Créer une étagère" msgstr "Créer une étagère"
#: cps/templates/layout.html:150 #: cps/templates/layout.html:153
msgid "About" msgid "About"
msgstr "À popos" msgstr "À popos"
@ -746,6 +798,10 @@ msgstr "Mot de passe"
msgid "Remember me" msgid "Remember me"
msgstr "Se rappeler de moi" msgstr "Se rappeler de moi"
#: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog"
msgstr ""
#: cps/templates/read.html:136 #: cps/templates/read.html:136
msgid "Reflow text when sidebars are open." msgid "Reflow text when sidebars are open."
msgstr "" msgstr ""
@ -846,6 +902,14 @@ msgstr "Livres dans la bibiothèque"
msgid "Authors in this Library" msgid "Authors in this Library"
msgstr "Auteurs dans la bibliothèque" 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 #: cps/templates/user_edit.html:23
msgid "Kindle E-Mail" msgid "Kindle E-Mail"
msgstr "Courriel Kindle" msgstr "Courriel Kindle"
@ -867,50 +931,34 @@ msgid "Show hot books"
msgstr "Montrer les livres populaires" msgstr "Montrer les livres populaires"
#: cps/templates/user_edit.html:53 #: cps/templates/user_edit.html:53
msgid "Show best rated books"
msgstr ""
#: cps/templates/user_edit.html:57
msgid "Show language selection" msgid "Show language selection"
msgstr "Montrer la sélection de la langue" msgstr "Montrer la sélection de la langue"
#: cps/templates/user_edit.html:57 #: cps/templates/user_edit.html:61
msgid "Show series selection" msgid "Show series selection"
msgstr "Montrer la sélection des séries" msgstr "Montrer la sélection des séries"
#: cps/templates/user_edit.html:61 #: cps/templates/user_edit.html:65
msgid "Show category selection" msgid "Show category selection"
msgstr "Montrer la sélection des catégories" msgstr "Montrer la sélection des catégories"
#: cps/templates/user_edit.html:65 #: cps/templates/user_edit.html:69
msgid "Show author selection" 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" msgid "Show random books in detail view"
msgstr "" msgstr ""
#: cps/templates/user_edit.html:76 #: cps/templates/user_edit.html:105
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
msgid "Delete this user" msgid "Delete this user"
msgstr "Supprimer cet utilisateur" msgstr "Supprimer cet utilisateur"
#: cps/templates/user_edit.html:112 #: cps/templates/user_edit.html:116
msgid "Recent Downloads" msgid "Recent Downloads"
msgstr "Téléchargements récents" msgstr "Téléchargements récents"

File diff suppressed because it is too large Load Diff

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

@ -144,7 +144,6 @@ class UserBase:
else: else:
return False return False
def __repr__(self): def __repr__(self):
return '<User %r>' % self.nickname return '<User %r>' % self.nickname
@ -164,10 +163,6 @@ class User(UserBase, Base):
downloads = relationship('Downloads', backref='user', lazy='dynamic') downloads = relationship('Downloads', backref='user', lazy='dynamic')
locale = Column(String(2), default="en") locale = Column(String(2), default="en")
sidebar_view = Column(Integer, default=1) 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") default_language = Column(String(3), default="all")
@ -184,10 +179,6 @@ class Anonymous(AnonymousUserMixin, UserBase):
self.role = data.role self.role = data.role
self.sidebar_view = data.sidebar_view self.sidebar_view = data.sidebar_view
self.default_language = data.default_language 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.default_language = data.default_language
self.locale = data.locale self.locale = data.locale
self.anon_browse = settings.config_anonbrowse self.anon_browse = settings.config_anonbrowse
@ -262,6 +253,7 @@ class Settings(Base):
config_uploading = Column(SmallInteger, default=0) config_uploading = Column(SmallInteger, default=0)
config_anonbrowse = Column(SmallInteger, default=0) config_anonbrowse = Column(SmallInteger, default=0)
config_public_reg = Column(SmallInteger, default=0) config_public_reg = Column(SmallInteger, default=0)
config_default_role = Column(SmallInteger, default=0)
def __repr__(self): def __repr__(self):
pass pass
@ -287,7 +279,8 @@ class Config:
self.config_uploading = data.config_uploading self.config_uploading = data.config_uploading
self.config_anonbrowse = data.config_anonbrowse self.config_anonbrowse = data.config_anonbrowse
self.config_public_reg = data.config_public_reg 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 self.db_configured = True
else: else:
self.db_configured = False self.db_configured = False
@ -296,6 +289,36 @@ class Config:
def get_main_dir(self): def get_main_dir(self):
return self.config_main_dir 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): def get_Log_Level(self):
ret_value="" ret_value=""
if self.config_log_level == logging.INFO: 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_anonbrowse` SmallInteger DEFAULT 0")
conn.execute("ALTER TABLE Settings ADD column `config_public_reg` SmallInteger DEFAULT 0") conn.execute("ALTER TABLE Settings ADD column `config_public_reg` SmallInteger DEFAULT 0")
session.commit() 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: try:
session.query(exists().where(BookShelf.order)).scalar() session.query(exists().where(BookShelf.order)).scalar()
session.commit() session.commit()

@ -25,6 +25,7 @@ import zipfile
from werkzeug.security import generate_password_hash, check_password_hash from werkzeug.security import generate_password_hash, check_password_hash
from babel import Locale as LC from babel import Locale as LC
from babel import negotiate_locale from babel import negotiate_locale
from babel.dates import format_date
from functools import wraps from functools import wraps
import base64 import base64
from sqlalchemy.sql import * from sqlalchemy.sql import *
@ -279,6 +280,12 @@ def mimetype_filter(val):
s = 'application/octet-stream' s = 'application/octet-stream'
return s 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): 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() data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == format.upper()).first()
if current_user.is_authenticated: if current_user.is_authenticated:
helper.update_download(book_id, int(current_user.id)) helper.update_download(book_id, int(current_user.id))
author = helper.get_normalized_author(book.author_sort)
file_name = book.title file_name = book.title
if len(author) > 0: if len(book.authors) > 0:
file_name = author + '-' + file_name file_name = book.authors[0].name + '-' + file_name
file_name = helper.get_valid_filename(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 = 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) 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 # collect downloaded books only for registered user and not for anonymous user
if current_user.is_authenticated: if current_user.is_authenticated:
helper.update_download(book_id, int(current_user.id)) helper.update_download(book_id, int(current_user.id))
author = helper.get_normalized_author(book.author_sort)
file_name = book.title file_name = book.title
if len(author) > 0: if len(book.authors) > 0:
file_name = author + '-' + file_name file_name = book.authors[0].name + '-' + file_name
file_name = helper.get_valid_filename(file_name) file_name = helper.get_valid_filename(file_name)
response = make_response( response = make_response(
send_from_directory(os.path.join(config.config_calibre_dir, book.path), data.name + "." + format)) 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] response.headers["Content-Type"] = mimetypes.types_map['.' + format]
except: except:
pass pass
response.headers["Content-Disposition"] = \ response.headers["Content-Disposition"] = "attachment; filename=\"%s.%s\"" % (file_name.encode('utf-8'), format)
"attachment; " \
"filename={utf_filename}.{suffix};" \
"filename*=UTF-8''{utf_filename}.{suffix}".format(
utf_filename=file_name.encode('utf-8'),
suffix=format
)
return response return response
else: else:
abort(404) abort(404)
@ -1271,7 +1270,7 @@ def register():
content.password = generate_password_hash(to_save["password"]) content.password = generate_password_hash(to_save["password"])
content.nickname = to_save["nickname"] content.nickname = to_save["nickname"]
content.email = to_save["email"] content.email = to_save["email"]
content.role = 0 content.role = config.config_default_role
try: try:
ub.session.add(content) ub.session.add(content)
ub.session.commit() ub.session.commit()
@ -1578,9 +1577,10 @@ def profile():
@login_required @login_required
@admin_required @admin_required
def admin(): def admin():
commit = '$Format:%cI$'
content = ub.session.query(ub.User).all() content = ub.session.query(ub.User).all()
settings = ub.session.query(ub.Settings).first() 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")) development=ub.DEVELOPMENT, title=_(u"Admin page"))
@ -1635,6 +1635,18 @@ def configuration_helper(origin):
content.config_anonbrowse = 1 content.config_anonbrowse = 1
if "config_public_reg" in to_save and to_save["config_public_reg"] == "on": if "config_public_reg" in to_save and to_save["config_public_reg"] == "on":
content.config_public_reg = 1 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: try:
if db_change: if db_change:
if config.db_configured: if config.db_configured:
@ -1656,7 +1668,7 @@ def configuration_helper(origin):
return render_title_template("config_edit.html", content=config, origin=origin, return render_title_template("config_edit.html", content=config, origin=origin,
title=_(u"Basic Configuration")) title=_(u"Basic Configuration"))
if reboot_required: if reboot_required:
# db.engine.dispose() # ToDo verify correct # db.engine.dispose() # ToDo verify correct
ub.session.close() ub.session.close()
ub.engine.dispose() ub.engine.dispose()
# stop tornado server # stop tornado server
@ -1731,6 +1743,8 @@ def new_user():
except IntegrityError: except IntegrityError:
ub.session.rollback() ub.session.rollback()
flash(_(u"Found an existing account for this email address or nickname."), category="error") 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, return render_title_template("user_edit.html", new_user=1, content=content, translations=translations,
languages=languages, title=_(u"Add new user")) 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') modify_database_object(input_authors, book.authors, db.Authors, db.session, 'author')
if author0_before_edit != book.authors[0].name: if author0_before_edit != book.authors[0].name:
edited_books_id.add(book.id) 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": if to_save["cover_url"] and os.path.splitext(to_save["cover_url"])[1].lower() == ".jpg":
img = requests.get(to_save["cover_url"]) img = requests.get(to_save["cover_url"])
@ -2141,9 +2155,10 @@ def upload():
if is_author: if is_author:
db_author = is_author db_author = is_author
else: 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) 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, 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, []) datetime.datetime.now(), path, has_cover, db_author, [])
db_book.authors.append(db_author) db_book.authors.append(db_author)

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

@ -11,7 +11,7 @@ Calibre Web is a web app providing a clean interface for browsing, reading and d
- full graphical setup - full graphical setup
- User management - User management
- Admin interface - 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 - OPDS feed for eBook reader apps
- Filter and search by titles, authors, tags, series and language - Filter and search by titles, authors, tags, series and language
- Create custom book collection (shelves) - Create custom book collection (shelves)

Loading…
Cancel
Save