1
0
mirror of https://github.com/janeczku/calibre-web synced 2024-12-03 15:00:01 +00:00

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

This commit is contained in:
Radosław Kierznowski 2017-02-26 17:52:32 +01:00
commit 1a2aa10c00
23 changed files with 1382 additions and 994 deletions

7
cps.py
View File

@ -3,7 +3,6 @@
import os import os
import sys import sys
import time
base_path = os.path.dirname(os.path.abspath(__file__)) base_path = os.path.dirname(os.path.abspath(__file__))
# Insert local directories into path # Insert local directories into path
@ -22,9 +21,9 @@ if __name__ == '__main__':
http_server.listen(web.ub.config.config_port) http_server.listen(web.ub.config.config_port)
IOLoop.instance().start() IOLoop.instance().start()
if web.global_task == 0: if web.helper.global_task == 0:
print("Performing restart of Calibre-web") web.app.logger.info("Performing restart of Calibre-web")
os.execl(sys.executable, sys.executable, *sys.argv) os.execl(sys.executable, sys.executable, *sys.argv)
else: else:
print("Performing shutdown of Calibre-web") web.app.logger.info("Performing shutdown of Calibre-web")
sys.exit(0) sys.exit(0)

View File

@ -6,7 +6,7 @@ import ub
from flask import current_app as app from flask import current_app as app
import logging import logging
import smtplib import smtplib
import tempfile from tempfile import gettempdir
import socket import socket
import sys import sys
import os import os
@ -21,13 +21,22 @@ from email.MIMEText import MIMEText
from email.generator import Generator from email.generator import Generator
from flask_babel import gettext as _ from flask_babel import gettext as _
import subprocess import subprocess
import threading
import shutil import shutil
import requests
import zipfile
from tornado.ioloop import IOLoop
try: try:
import unidecode import unidecode
use_unidecode=True use_unidecode=True
except: except:
use_unidecode=False use_unidecode=False
# Global variables
global_task = None
updater_thread = None
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 ==
book_id).first() book_id).first()
@ -222,14 +231,14 @@ def get_valid_filename(value, replace_whitespace=True):
if use_unidecode: if use_unidecode:
value=(unidecode.unidecode(value)).strip() value=(unidecode.unidecode(value)).strip()
else: else:
value=value.replace('§','SS') value=value.replace(u'§',u'SS')
value=value.replace('ß','ss') value=value.replace(u'ß',u'ss')
value = unicodedata.normalize('NFKD', value) value = unicodedata.normalize('NFKD', value)
re_slugify = re.compile('[\W\s-]', re.UNICODE) re_slugify = re.compile('[\W\s-]', re.UNICODE)
value = unicode(re_slugify.sub('', value).strip()) value = unicode(re_slugify.sub('', value).strip())
if replace_whitespace: if replace_whitespace:
#*+:\"/<>? werden durch _ ersetzt #*+:\"/<>? werden durch _ ersetzt
value = re.sub('[\*\+:\\\"/<>\?]+', '_', value, flags=re.U) value = re.sub('[\*\+:\\\"/<>\?]+', u'_', value, flags=re.U)
value = value[:128] value = value[:128]
return value return value
@ -263,121 +272,152 @@ def update_dir_stucture(book_id, calibrepath):
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.rename(path, new_author_path) os.renames(path, new_author_path)
book.path = new_authordir + '/' + book.path.split('/')[1] book.path = new_authordir + '/' + book.path.split('/')[1]
db.session.commit() db.session.commit()
class Updater(threading.Thread):
def file_to_list(file): def __init__(self):
return [x.strip() for x in open(file, 'r') if not x.startswith('#EXT')] threading.Thread.__init__(self)
self.status=0
def one_minus_two(one, two): def run(self):
return [x for x in one if x not in set(two)] global global_task
self.status=1
r = requests.get('https://api.github.com/repos/janeczku/calibre-web/zipball/master', stream=True)
fname = re.findall("filename=(.+)", r.headers['content-disposition'])[0]
self.status=2
z = zipfile.ZipFile(StringIO(r.content))
self.status=3
tmp_dir = gettempdir()
z.extractall(tmp_dir)
self.status=4
self.update_source(os.path.join(tmp_dir,os.path.splitext(fname)[0]),ub.config.get_main_dir)
self.status=5
global_task = 0
db.session.close()
db.engine.dispose()
ub.session.close()
ub.engine.dispose()
self.status=6
# stop tornado server
server = IOLoop.instance()
server.add_callback(server.stop)
self.status=7
def reduce_dirs(delete_files, new_list): def get_update_status(self):
new_delete = [] return self.status
for file in delete_files:
parts = file.split(os.sep) def file_to_list(self, file):
sub = '' return [x.strip() for x in open(file, 'r') if not x.startswith('#EXT')]
for i in range(len(parts)):
sub = os.path.join(sub, parts[i]) def one_minus_two(self, one, two):
if sub == '': return [x for x in one if x not in set(two)]
sub = os.sep
count = 0 def reduce_dirs(self, delete_files, new_list):
for song in new_list: new_delete = []
if song.startswith(sub): for file in delete_files:
count += 1 parts = file.split(os.sep)
sub = ''
for i in range(len(parts)):
sub = os.path.join(sub, parts[i])
if sub == '':
sub = os.sep
count = 0
for song in new_list:
if song.startswith(sub):
count += 1
break
if count == 0:
if sub != '\\':
new_delete.append(sub)
break break
if count == 0: return list(set(new_delete))
if sub != '\\':
new_delete.append(sub)
break
return list(set(new_delete))
def reduce_files(remove_items, exclude_items): def reduce_files(self, remove_items, exclude_items):
rf = [] rf = []
for item in remove_items: for item in remove_items:
if not item in exclude_items: if not item.startswith(exclude_items):
rf.append(item) rf.append(item)
return rf return rf
def moveallfiles(root_src_dir, root_dst_dir): def moveallfiles(self, root_src_dir, root_dst_dir):
change_permissions = True change_permissions = True
if sys.platform == "win32" or sys.platform == "darwin": if sys.platform == "win32" or sys.platform == "darwin":
change_permissions=False change_permissions = False
else:
app.logger.debug('Update on OS-System : '+sys.platform )
#print('OS-System: '+sys.platform )
new_permissions=os.stat(root_dst_dir)
#print new_permissions
for src_dir, dirs, files in os.walk(root_src_dir):
dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1)
if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
#print('Create-Dir: '+dst_dir)
if change_permissions:
#print('Permissions: User '+str(new_permissions.st_uid)+' Group '+str(new_permissions.st_uid))
os.chown(dst_dir,new_permissions.st_uid,new_permissions.st_gid)
for file_ in files:
src_file = os.path.join(src_dir, file_)
dst_file = os.path.join(dst_dir, file_)
if os.path.exists(dst_file):
if change_permissions:
permission=os.stat(dst_file)
#print('Remove file before copy: '+dst_file)
os.remove(dst_file)
else:
if change_permissions:
permission=new_permissions
shutil.move(src_file, dst_dir)
#print('Move File '+src_file+' to '+dst_dir)
if change_permissions:
try:
os.chown(dst_file, permission.st_uid, permission.st_uid)
#print('Permissions: User '+str(new_permissions.st_uid)+' Group '+str(new_permissions.st_uid))
except:
e = sys.exc_info()
#print('Fail '+str(dst_file)+' error: '+str(e))
return
def update_source(source,destination):
# destination files
old_list=list()
exclude = (['vendor' + os.sep + 'kindlegen.exe','vendor' + os.sep + 'kindlegen','/app.db','vendor','/update.py'])
for root, dirs, files in os.walk(destination, topdown=True):
for name in files:
old_list.append(os.path.join(root, name).replace(destination, ''))
for name in dirs:
old_list.append(os.path.join(root, name).replace(destination, ''))
# source files
new_list = list()
for root, dirs, files in os.walk(source, topdown=True):
for name in files:
new_list.append(os.path.join(root, name).replace(source, ''))
for name in dirs:
new_list.append(os.path.join(root, name).replace(source, ''))
delete_files = one_minus_two(old_list, new_list)
#print('raw delete list', delete_files)
rf= reduce_files(delete_files, exclude)
#print('reduced delete list', rf)
remove_items = reduce_dirs(rf, new_list)
#print('delete files', remove_items)
moveallfiles(source, destination)
for item in remove_items:
item_path = os.path.join(destination, item[1:])
if os.path.isdir(item_path):
print("Delete dir "+ item_path)
shutil.rmtree(item_path)
else: else:
try: logging.getLogger('cps.web').debug('Update on OS-System : ' + sys.platform)
print("Delete file "+ item_path) new_permissions = os.stat(root_dst_dir)
os.remove(item_path) # print new_permissions
except: for src_dir, dirs, files in os.walk(root_src_dir):
print("Could not remove:"+item_path) dst_dir = src_dir.replace(root_src_dir, root_dst_dir, 1)
shutil.rmtree(source, ignore_errors=True) if not os.path.exists(dst_dir):
os.makedirs(dst_dir)
logging.getLogger('cps.web').debug('Create-Dir: '+dst_dir)
if change_permissions:
# print('Permissions: User '+str(new_permissions.st_uid)+' Group '+str(new_permissions.st_uid))
os.chown(dst_dir, new_permissions.st_uid, new_permissions.st_gid)
for file_ in files:
src_file = os.path.join(src_dir, file_)
dst_file = os.path.join(dst_dir, file_)
if os.path.exists(dst_file):
if change_permissions:
permission = os.stat(dst_file)
logging.getLogger('cps.web').debug('Remove file before copy: '+dst_file)
os.remove(dst_file)
else:
if change_permissions:
permission = new_permissions
shutil.move(src_file, dst_dir)
logging.getLogger('cps.web').debug('Move File '+src_file+' to '+dst_dir)
if change_permissions:
try:
os.chown(dst_file, permission.st_uid, permission.st_uid)
# print('Permissions: User '+str(new_permissions.st_uid)+' Group '+str(new_permissions.st_uid))
except:
e = sys.exc_info()
logging.getLogger('cps.web').debug('Fail '+str(dst_file)+' error: '+str(e))
return
def update_source(self, source, destination):
# destination files
old_list = list()
exclude = (
'vendor' + os.sep + 'kindlegen.exe', 'vendor' + os.sep + 'kindlegen', os.sep + 'app.db',
os.sep + 'vendor',os.sep + 'calibre-web.log')
for root, dirs, files in os.walk(destination, topdown=True):
for name in files:
old_list.append(os.path.join(root, name).replace(destination, ''))
for name in dirs:
old_list.append(os.path.join(root, name).replace(destination, ''))
# source files
new_list = list()
for root, dirs, files in os.walk(source, topdown=True):
for name in files:
new_list.append(os.path.join(root, name).replace(source, ''))
for name in dirs:
new_list.append(os.path.join(root, name).replace(source, ''))
delete_files = self.one_minus_two(old_list, new_list)
rf = self.reduce_files(delete_files, exclude)
remove_items = self.reduce_dirs(rf, new_list)
self.moveallfiles(source, destination)
for item in remove_items:
item_path = os.path.join(destination, item[1:])
if os.path.isdir(item_path):
logging.getLogger('cps.web').debug("Delete dir " + item_path)
shutil.rmtree(item_path)
else:
try:
logging.getLogger('cps.web').debug("Delete file " + item_path)
log_from_thread("Delete file " + item_path)
os.remove(item_path)
except:
logging.getLogger('cps.web').debug("Could not remove:" + item_path)
shutil.rmtree(source, ignore_errors=True)

View File

@ -36,6 +36,8 @@ span.glyphicon.glyphicon-tags {padding-right: 5px;color: #999;vertical-align: te
-moz-box-shadow: 0 5px 8px -6px #777; -moz-box-shadow: 0 5px 8px -6px #777;
box-shadow: 0 5px 8px -6px #777; box-shadow: 0 5px 8px -6px #777;
} }
.navbar-default .navbar-toggle .icon-bar {background-color: #000;}
.navbar-default .navbar-toggle {border-color: #000;}
.btn-file {position: relative; overflow: hidden;} .btn-file {position: relative; overflow: hidden;}
.btn-file input[type=file] {position: absolute; top: 0; right: 0; min-width: 100%; min-height: 100%; font-size: 100px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; background: white; cursor: inherit; display: block;} .btn-file input[type=file] {position: absolute; top: 0; right: 0; min-width: 100%; min-height: 100%; font-size: 100px; text-align: right; filter: alpha(opacity=0); opacity: 0; outline: none; background: white; cursor: inherit; display: block;}
@ -45,3 +47,7 @@ span.glyphicon.glyphicon-tags {padding-right: 5px;color: #999;vertical-align: te
.btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary{ background-color: #1C5484; } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .open .dropdown-toggle.btn-primary{ background-color: #1C5484; }
.btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { background-color: #89B9E2; } .btn-primary.disabled, .btn-primary[disabled], fieldset[disabled] .btn-primary, .btn-primary.disabled:hover, .btn-primary[disabled]:hover, fieldset[disabled] .btn-primary:hover, .btn-primary.disabled:focus, .btn-primary[disabled]:focus, fieldset[disabled] .btn-primary:focus, .btn-primary.disabled:active, .btn-primary[disabled]:active, fieldset[disabled] .btn-primary:active, .btn-primary.disabled.active, .btn-primary[disabled].active, fieldset[disabled] .btn-primary.active { background-color: #89B9E2; }
.btn-toolbar>.btn+.btn, .btn-toolbar>.btn-group+.btn, .btn-toolbar>.btn+.btn-group, .btn-toolbar>.btn-group+.btn-group { margin-left:0px; } .btn-toolbar>.btn+.btn, .btn-toolbar>.btn-group+.btn, .btn-toolbar>.btn+.btn-group, .btn-toolbar>.btn-group+.btn-group { margin-left:0px; }
.spinner {margin:0 41%;}
.spinner2 {margin:0 41%;}

View File

@ -1,3 +1,6 @@
var displaytext;
var updateTimerID;
var updateText;
$(function() { $(function() {
$('.discover .row').isotope({ $('.discover .row').isotope({
@ -31,7 +34,9 @@ $(function() {
url: window.location.pathname+"/../../shutdown", url: window.location.pathname+"/../../shutdown",
data: {"parameter":0}, data: {"parameter":0},
success: function(data) { success: function(data) {
return alert(data.text);} $('#spinner').show();
displaytext=data.text;
window.setTimeout(restartTimer, 3000);}
}); });
}); });
$("#shutdown").click(function() { $("#shutdown").click(function() {
@ -50,17 +55,66 @@ $(function() {
dataType: 'json', dataType: 'json',
url: window.location.pathname+"/../../get_update_status", url: window.location.pathname+"/../../get_update_status",
success: function(data) { success: function(data) {
if (data.status == true) {
$("#check_for_update").addClass('hidden');
$("#perform_update").removeClass('hidden');
}else{
$("#check_for_update").html(button_text); $("#check_for_update").html(button_text);
};} if (data.status == true) {
$("#check_for_update").addClass('hidden');
$("#perform_update").removeClass('hidden');
$("#update_info").removeClass('hidden');
$("#update_info").find('span').html(data.commit);
}
}
});
});
$("#perform_update").click(function() {
$('#spinner2').show();
$.ajax({
type: "POST",
dataType: 'json',
data: { start: "True"},
url: window.location.pathname+"/../../get_updater_status",
success: function(data) {
updateText=data.text
$("#UpdateprogressDialog #Updatecontent").html(updateText[data.status]);
console.log(data.status);
updateTimerID=setInterval(updateTimer, 2000);}
}); });
}); });
}); });
function restartTimer() {
$('#spinner').hide();
$('#RestartDialog').modal('hide');
}
function updateTimer() {
$.ajax({
dataType: 'json',
url: window.location.pathname+"/../../get_updater_status",
success: function(data) {
console.log(data.status);
$("#UpdateprogressDialog #Updatecontent").html(updateText[data.status]);
if (data.status >6){
clearInterval(updateTimerID);
$('#spinner2').hide();
$('#UpdateprogressDialog #updateFinished').removeClass('hidden');
$("#check_for_update").removeClass('hidden');
$("#perform_update").addClass('hidden');
}
},
error: function() {
console.log('Done');
clearInterval(updateTimerID);
$('#spinner2').hide();
$("#UpdateprogressDialog #Updatecontent").html(updateText[7]);
$('#UpdateprogressDialog #updateFinished').removeClass('hidden');
$("#check_for_update").removeClass('hidden');
$("#perform_update").addClass('hidden');
}
});
}
$(window).resize(function(event) { $(window).resize(function(event) {
$('.discover .row').isotope('reLayout'); $('.discover .row').isotope('reLayout');
}); });

View File

@ -2,6 +2,7 @@
{% block body %} {% block body %}
<div class="discover"> <div class="discover">
<h2>{{_('User list')}}</h2> <h2>{{_('User list')}}</h2>
<div id="divLoading"></div>
<table class="table table-striped" id="table_user"> <table class="table table-striped" id="table_user">
<tr> <tr>
<th>{{_('Nickname')}}</th> <th>{{_('Nickname')}}</th>
@ -76,11 +77,13 @@
<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>{{_('Current commit timestamp')}}: <span>{{commit}} </span></div>
<div class="btn btn-default" data-toggle="modal" data-target="#RestartDialog">{{_('Restart Calibre-web')}}</a></div> <div class="hidden" id="update_info">{{_('Newest commit timestamp')}}: <span></span></div>
<div class="btn btn-default" data-toggle="modal" data-target="#ShutdownDialog">{{_('Stop Calibre-web')}}</a></div> <p></p>
<div class="btn btn-default" id="check_for_update">{{_('Check for update')}}</a></div> <div class="btn btn-default" data-toggle="modal" data-target="#RestartDialog">{{_('Restart Calibre-web')}}</div>
<a href="{{url_for('update')}}" class="btn btn-default hidden" id="perform_update">{{_('Perform Update')}}</a> <div class="btn btn-default" data-toggle="modal" data-target="#ShutdownDialog">{{_('Stop Calibre-web')}}</div>
<div class="btn btn-default" id="check_for_update">{{_('Check for update')}}</div>
<div class="btn btn-default hidden" id="perform_update" data-toggle="modal" data-target="#UpdateprogressDialog">{{_('Perform Update')}}</div>
{% endif %} {% endif %}
</div> </div>
<!-- Modal --> <!-- Modal -->
@ -88,15 +91,17 @@
<div class="modal-dialog modal-sm"> <div class="modal-dialog modal-sm">
<!-- Modal content--> <!-- Modal content-->
<div class="modal-content"> <div class="modal-content">
<div class="modal-header bg-info"> <div class="modal-header bg-info"></div>
</div>
<div class="modal-body text-center"> <div class="modal-body text-center">
<p>{{_('Do you really want to restart Calibre-web?')}}</p> <p>{{_('Do you really want to restart Calibre-web?')}}</p>
<button type="button" class="btn btn-default" id="restart" data-dismiss="modal">{{_('Ok')}}</button> <div id="spinner" class="spinner" style="display:none;">
<img id="img-spinner" src="/static/css/images/loading-icon.gif"/>
</div>
<p></p>
<button type="button" class="btn btn-default" id="restart" >{{_('Ok')}}</button>
<button type="button" class="btn btn-default" data-dismiss="modal">{{_('Back')}}</button> <button type="button" class="btn btn-default" data-dismiss="modal">{{_('Back')}}</button>
</div> </div>
</div> </div>
</div> </div>
</div> </div>
<div id="ShutdownDialog" class="modal fade" role="dialog"> <div id="ShutdownDialog" class="modal fade" role="dialog">
@ -114,5 +119,23 @@
</div> </div>
</div> </div>
<div id="UpdateprogressDialog" class="modal fade" role="dialog">
<div class="modal-dialog modal-sm">
<!-- Modal content-->
<div class="modal-content">
<div class="modal-header bg-info text-center">
<span>{{_('Updating, please do not reload page')}}</span>
</div>
<div class="modal-body text-center">
<div id="spinner2" class="spinner2" style="display:none;">
<img id="img-spinner" src="/static/css/images/loading-icon.gif"/>
</div>
<p></p>
<div id="Updatecontent"></div>
<p></p>
<button type="button" class="btn btn-default hidden" id="updateFinished" data-dismiss="modal">{{_('Ok')}}</button>
</div>
</div>
</div>
</div>
{% endblock %} {% endblock %}

View File

@ -52,18 +52,20 @@
</button> </button>
<a class="navbar-brand" href="{{url_for('index')}}">Calibre Web</a> <a class="navbar-brand" href="{{url_for('index')}}">Calibre Web</a>
</div> </div>
{% if g.user.is_authenticated or g.user.is_anonymous() %}
<form class="navbar-form navbar-left" role="search" action="{{url_for('search')}}" method="GET">
<div class="form-group input-group input-group-sm">
<input type="text" class="form-control" name="query" placeholder="{{_('Search')}}">
<span class="input-group-btn">
<button type="submit" class="btn btn-default">{{_('Go!')}}</button>
</span>
</div>
</form>
{% endif %}
<div class="navbar-collapse collapse"> <div class="navbar-collapse collapse">
{% if g.user.is_authenticated or g.user.is_anonymous() %} {% if g.user.is_authenticated or g.user.is_anonymous() %}
<ul class="nav navbar-nav "> <ul class="nav navbar-nav ">
<li> <li><a href="{{url_for('advanced_search')}}"><span class="glyphicon glyphicon-search"></span><span class="hidden-sm"> {{_('Advanced Search')}}</span></a></li>
<form class="navbar-form navbar-left" role="search" action="{{url_for('search')}}" method="GET">
<div class="form-group">
<input type="text" class="form-control" name="query" placeholder="{{_('Search')}}">
</div>
<button type="submit" class="btn btn-default">{{_('Go!')}}</button>
</form>
</li>
<li><a href="{{url_for('advanced_search')}}"><span class="glyphicon glyphicon-search"></span> {{_('Advanced Search')}}</a></li>
</ul> </ul>
{% endif %} {% endif %}
<ul class="nav navbar-nav navbar-right" id="main-nav"> <ul class="nav navbar-nav navbar-right" id="main-nav">
@ -80,11 +82,11 @@
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if g.user.role_admin() %} {% if g.user.role_admin() %}
<li><a id="top_admin" 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><span class="hidden-sm"> {{_('Admin')}}</span></a></li>
{% endif %} {% endif %}
<li><a id="top_user" 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><span class="hidden-sm"> {{g.user.nickname}}</span></a></li>
{% if not g.user.is_anonymous() %} {% if not g.user.is_anonymous() %}
<li><a id="logout" 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><span class="hidden-sm"> {{_('Logout')}}</span></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 %}

View File

@ -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-02-10 20:17+0100\n" "POT-Creation-Date: 2017-02-20 19:47+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,322 +32,347 @@ 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:111 cps/book_formats.py:115 cps/web.py:998 #: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:1030
msgid "not installed" msgid "not installed"
msgstr "Nicht installiert" msgstr "Nicht installiert"
#: cps/helper.py:136 #: cps/helper.py:150
#, python-format #, python-format
msgid "Failed to send mail: %s" msgid "Failed to send mail: %s"
msgstr "E-Mail: %s konnte nicht gesendet werden" msgstr "E-Mail: %s konnte nicht gesendet werden"
#: cps/helper.py:143 #: cps/helper.py:157
msgid "Calibre-web test email" msgid "Calibre-web test email"
msgstr "Calibre-web Test E-Mail" msgstr "Calibre-web Test E-Mail"
#: cps/helper.py:144 cps/helper.py:154 #: cps/helper.py:158 cps/helper.py:168
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:130 #: cps/helper.py:167 cps/templates/detail.html:130
msgid "Send to Kindle" msgid "Send to Kindle"
msgstr "An Kindle senden" msgstr "An Kindle senden"
#: cps/helper.py:171 cps/helper.py:186 #: cps/helper.py:185 cps/helper.py:200
msgid "Could not find any formats suitable for sending by email" msgid "Could not find any formats suitable for sending by email"
msgstr "" msgstr ""
"Konnte keine Formate finden welche für das versenden per E-Mail geeignet " "Konnte keine Formate finden welche für das versenden per E-Mail geeignet "
"sind" "sind"
#: cps/helper.py:180 #: cps/helper.py:194
msgid "Could not convert epub to mobi" msgid "Could not convert epub to mobi"
msgstr "Konnte .epub nicht nach .mobi konvertieren" msgstr "Konnte .epub nicht nach .mobi konvertieren"
#: cps/helper.py:206 #: cps/ub.py:434
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "Die angeforderte Datei konnte nicht gelesen werden. Falsche Dateirechte?"
#: cps/ub.py:443
msgid "Guest" msgid "Guest"
msgstr "Gast" msgstr "Gast"
#: cps/web.py:778 #: cps/web.py:734
msgid "Requesting update package"
msgstr "Frage Update Paket an"
#: cps/web.py:735
msgid "Downloading update package"
msgstr "Lade Update Paket herunter"
#: cps/web.py:736
msgid "Unzipping update package"
msgstr "Entpacke Update Paket"
#: cps/web.py:737
msgid "Files are replaced"
msgstr "Ersetze Dateien"
#: cps/web.py:738
msgid "Database connections are closed"
msgstr "Schließe Datenbankverbindungen"
#: cps/web.py:739
msgid "Server is stopped"
msgstr "Stoppe Server"
#: cps/web.py:740
msgid "Update finished, please press okay and reload page"
msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden"
#: cps/web.py:810
msgid "Latest Books" msgid "Latest Books"
msgstr "Letzte Bücher" msgstr "Letzte Bücher"
#: cps/web.py:803 #: cps/web.py:835
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/web.py:813 #: cps/web.py:845
msgid "Best rated books" msgid "Best rated books"
msgstr "Best bewertete Bücher" msgstr "Best bewertete Bücher"
#: cps/templates/index.xml:36 cps/web.py:822 #: cps/templates/index.xml:36 cps/web.py:854
msgid "Random Books" msgid "Random Books"
msgstr "Zufällige Bücher" msgstr "Zufällige Bücher"
#: cps/web.py:835 #: cps/web.py:867
msgid "Author list" msgid "Author list"
msgstr "Autorenliste" msgstr "Autorenliste"
#: cps/web.py:846 #: cps/web.py:878
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "Autor: %(name)s" msgstr "Autor: %(name)s"
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103 #: cps/web.py:880 cps/web.py:908 cps/web.py:1007 cps/web.py:1235
#: cps/web.py:2115
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "" msgstr ""
"Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht " "Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht "
"zugänglich." "zugänglich."
#: cps/templates/index.xml:57 cps/web.py:862 #: cps/templates/index.xml:57 cps/web.py:894
msgid "Series list" msgid "Series list"
msgstr "Liste Serien" msgstr "Liste Serien"
#: cps/web.py:874 #: cps/web.py:906
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s" msgstr "Serie: %(serie)s"
#: cps/web.py:907 #: cps/web.py:939
msgid "Available languages" msgid "Available languages"
msgstr "Verfügbare Sprachen" msgstr "Verfügbare Sprachen"
#: cps/web.py:922 #: cps/web.py:954
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Sprache: %(name)s" msgstr "Sprache: %(name)s"
#: cps/templates/index.xml:50 cps/web.py:935 #: cps/templates/index.xml:50 cps/web.py:967
msgid "Category list" msgid "Category list"
msgstr "Kategorieliste" msgstr "Kategorieliste"
#: cps/web.py:947 #: cps/web.py:979
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Kategorie: %(name)s" msgstr "Kategorie: %(name)s"
#: cps/web.py:1008 #: cps/web.py:1040
msgid "Statistics" msgid "Statistics"
msgstr "Statistiken" msgstr "Statistiken"
#: cps/web.py:1029 #: cps/web.py:1061
msgid "Performing Restart, please reload page" msgid "Server restarted, please reload page"
msgstr "Führe Neustart durch, bitte Seite neu laden" msgstr "Server neu gestartet,bitte Seite neu laden"
#: cps/web.py:1031 #: cps/web.py:1063
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:1055 #: cps/web.py:1073
msgid "Update done" msgid "Update done"
msgstr "Update durchgeführt" msgstr "Update durchgeführt"
#: cps/web.py:1128 cps/web.py:1141 #: cps/web.py:1147 cps/web.py:1160
msgid "search" msgid "search"
msgstr "Suche" msgstr "Suche"
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213 #: cps/web.py:1211 cps/web.py:1218 cps/web.py:1225 cps/web.py:1232
msgid "Read a Book" msgid "Read a Book"
msgstr "Lese ein Buch" msgstr "Lese ein Buch"
#: cps/web.py:1264 cps/web.py:1701 #: cps/web.py:1276 cps/web.py:1713
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:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288 #: cps/web.py:1277 cps/web.py:1293 cps/web.py:1298 cps/web.py:1300
msgid "register" msgid "register"
msgstr "Registieren" msgstr "Registieren"
#: cps/web.py:1280 #: cps/web.py:1292
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:1285 #: cps/web.py:1297
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:1303 #: cps/web.py:1315
#, 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:1308 #: cps/web.py:1320
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Falscher Benutzername oder Passwort" msgstr "Falscher Benutzername oder Passwort"
#: cps/web.py:1310 #: cps/web.py:1322
msgid "login" msgid "login"
msgstr "Login" msgstr "Login"
#: cps/web.py:1327 #: cps/web.py:1339
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:1331 #: cps/web.py:1343
#, 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:1335 #: cps/web.py:1347
#, 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:1337 #: cps/web.py:1349
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:1357 #: cps/web.py:1369
#, 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:1378 #: cps/web.py:1390
#, 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:1397 cps/web.py:1421 #: cps/web.py:1409 cps/web.py:1433
#, 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:1402 #: cps/web.py:1414
#, 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:1404 cps/web.py:1432 #: cps/web.py:1416 cps/web.py:1444
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:1405 cps/web.py:1407 #: cps/web.py:1417 cps/web.py:1419
msgid "create a shelf" msgid "create a shelf"
msgstr "Bücherregal erzeugen" msgstr "Bücherregal erzeugen"
#: cps/web.py:1430 #: cps/web.py:1442
#, 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:1433 cps/web.py:1435 #: cps/web.py:1445 cps/web.py:1447
msgid "Edit a shelf" msgid "Edit a shelf"
msgstr "Bücherregal editieren" msgstr "Bücherregal editieren"
#: cps/web.py:1453 #: cps/web.py:1465
#, 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:1475 #: cps/web.py:1487
#, 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:1506 #: cps/web.py:1518
#, 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:1568 #: cps/web.py:1580
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:1570 cps/web.py:1574 #: cps/web.py:1582 cps/web.py:1586
#, 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:1571 #: cps/web.py:1583
msgid "Profile updated" msgid "Profile updated"
msgstr "Profil aktualisiert" msgstr "Profil aktualisiert"
#: cps/web.py:1584 #: cps/web.py:1597
msgid "Admin page" msgid "Admin page"
msgstr "Admin Seite" msgstr "Admin Seite"
#: cps/web.py:1656 #: cps/web.py:1668
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:1663 cps/web.py:1669 cps/web.py:1682 #: cps/web.py:1675 cps/web.py:1681 cps/web.py:1694
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Basis Konfiguration" msgstr "Basis Konfiguration"
#: cps/web.py:1667 #: cps/web.py:1679
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:1703 cps/web.py:1749 #: cps/templates/admin.html:34 cps/web.py:1715 cps/web.py:1761
msgid "Add new user" msgid "Add new user"
msgstr "Neuen Benutzer hinzufügen" msgstr "Neuen Benutzer hinzufügen"
#: cps/web.py:1741 #: cps/web.py:1753
#, 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:1745 #: cps/web.py:1757
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:1767 #: cps/web.py:1779
msgid "Mail settings updated" msgid "Mail settings updated"
msgstr "E-Mail Einstellungen aktualisiert" msgstr "E-Mail Einstellungen aktualisiert"
#: cps/web.py:1773 #: cps/web.py:1785
#, 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:1776 #: cps/web.py:1788
#, 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:1777 #: cps/web.py:1789
msgid "Edit mail settings" msgid "Edit mail settings"
msgstr "E-Mail Einstellungen editieren" msgstr "E-Mail Einstellungen editieren"
#: cps/web.py:1805 #: cps/web.py:1817
#, 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:1886 #: cps/web.py:1898
#, 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:1889 #: cps/web.py:1901
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:1892 #: cps/web.py:1904
#, 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:2098 cps/web.py:2101 cps/web.py:2175 #: cps/web.py:2110 cps/web.py:2113 cps/web.py:2188
msgid "edit metadata" msgid "edit metadata"
msgstr "Metadaten editieren" msgstr "Metadaten editieren"
#: cps/web.py:2133 #: cps/web.py:2145
#, 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:2138 #: cps/web.py:2150
#, 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:2143 #: cps/web.py:2155
#, 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)"
@ -356,145 +381,158 @@ msgstr "Fehler beim Löschen von Datei %s (Zugriff verweigert)"
msgid "User list" msgid "User list"
msgstr "Benutzerliste" msgstr "Benutzerliste"
#: cps/templates/admin.html:7 #: cps/templates/admin.html:8
msgid "Nickname" msgid "Nickname"
msgstr "Benutzername" msgstr "Benutzername"
#: cps/templates/admin.html:8 #: cps/templates/admin.html:9
msgid "Email" msgid "Email"
msgstr "E-Mail" msgstr "E-Mail"
#: cps/templates/admin.html:9 #: cps/templates/admin.html:10
msgid "Kindle" msgid "Kindle"
msgstr "Kindle" msgstr "Kindle"
#: cps/templates/admin.html:10 #: cps/templates/admin.html:11
msgid "DLS" msgid "DLS"
msgstr "DLS" msgstr "DLS"
#: cps/templates/admin.html:11 cps/templates/layout.html:83 #: cps/templates/admin.html:12 cps/templates/layout.html:85
msgid "Admin" msgid "Admin"
msgstr "Admin" msgstr "Admin"
#: cps/templates/admin.html:12 cps/templates/detail.html:117 #: cps/templates/admin.html:13 cps/templates/detail.html:117
msgid "Download" msgid "Download"
msgstr "Download" msgstr "Download"
#: cps/templates/admin.html:13 cps/templates/layout.html:76 #: cps/templates/admin.html:14 cps/templates/layout.html:78
msgid "Upload" msgid "Upload"
msgstr "Hochladen" msgstr "Hochladen"
#: cps/templates/admin.html:14 #: cps/templates/admin.html:15
msgid "Edit" msgid "Edit"
msgstr "Editieren" msgstr "Editieren"
#: cps/templates/admin.html:15 #: cps/templates/admin.html:16
msgid "Passwd" msgid "Passwd"
msgstr "Passwort" msgstr "Passwort"
#: cps/templates/admin.html:34 #: cps/templates/admin.html:35
msgid "SMTP mail settings" msgid "SMTP mail settings"
msgstr "SMTP Mail Einstellungen" msgstr "SMTP Mail Einstellungen"
#: cps/templates/admin.html:37 cps/templates/email_edit.html:7 #: cps/templates/admin.html:38 cps/templates/email_edit.html:7
msgid "SMTP hostname" msgid "SMTP hostname"
msgstr "SMTP Hostname" msgstr "SMTP Hostname"
#: cps/templates/admin.html:38 #: cps/templates/admin.html:39
msgid "SMTP port" msgid "SMTP port"
msgstr "SMTP Port" msgstr "SMTP Port"
#: cps/templates/admin.html:39 #: cps/templates/admin.html:40
msgid "SSL" msgid "SSL"
msgstr "SSL" msgstr "SSL"
#: cps/templates/admin.html:40 cps/templates/email_edit.html:23 #: cps/templates/admin.html:41 cps/templates/email_edit.html:23
msgid "SMTP login" msgid "SMTP login"
msgstr "SMTP Login" msgstr "SMTP Login"
#: cps/templates/admin.html:41 cps/templates/email_edit.html:27 #: cps/templates/admin.html:42 cps/templates/email_edit.html:27
msgid "SMTP password" msgid "SMTP password"
msgstr "SMTP Passwort" msgstr "SMTP Passwort"
#: cps/templates/admin.html:42 #: cps/templates/admin.html:43
msgid "From mail" msgid "From mail"
msgstr "Absenderadresse" msgstr "Absenderadresse"
#: cps/templates/admin.html:54 #: cps/templates/admin.html:55
msgid "Change SMTP settings" msgid "Change SMTP settings"
msgstr "SMTP Einstellungen ändern" msgstr "SMTP Einstellungen ändern"
#: cps/templates/admin.html:56 cps/templates/admin.html:76 #: cps/templates/admin.html:57 cps/templates/admin.html:77
msgid "Configuration" msgid "Configuration"
msgstr "Konfiguration" msgstr "Konfiguration"
#: cps/templates/admin.html:59 #: cps/templates/admin.html:60
msgid "Calibre DB dir" msgid "Calibre DB dir"
msgstr "Calibre DB Pfad" msgstr "Calibre DB Pfad"
#: cps/templates/admin.html:60 cps/templates/config_edit.html:32 #: cps/templates/admin.html:61 cps/templates/config_edit.html:32
msgid "Log Level" msgid "Log Level"
msgstr "Log Level" msgstr "Log Level"
#: cps/templates/admin.html:61 #: cps/templates/admin.html:62
msgid "Port" msgid "Port"
msgstr "Port" msgstr "Port"
#: cps/templates/admin.html:62 cps/templates/config_edit.html:19 #: cps/templates/admin.html:63 cps/templates/config_edit.html:19
msgid "Books per page" msgid "Books per page"
msgstr "Bücher pro Seite" msgstr "Bücher pro Seite"
#: cps/templates/admin.html:63 #: cps/templates/admin.html:64
msgid "Uploading" msgid "Uploading"
msgstr "Hochladen" msgstr "Hochladen"
#: cps/templates/admin.html:64 #: cps/templates/admin.html:65
msgid "Public registration" msgid "Public registration"
msgstr "Öffentliche Registrierung" msgstr "Öffentliche Registrierung"
#: cps/templates/admin.html:65 #: cps/templates/admin.html:66
msgid "Anonymous browsing" msgid "Anonymous browsing"
msgstr "Anonymer Zugriff" msgstr "Anonymer Zugriff"
#: cps/templates/admin.html:77 #: cps/templates/admin.html:78
msgid "Administration" msgid "Administration"
msgstr "Administration" msgstr "Administration"
#: cps/templates/admin.html:79 #: cps/templates/admin.html:80
msgid "Current commit timestamp"
msgstr "Aktuelles Commit Datum"
#: cps/templates/admin.html:81
msgid "Newest commit timestamp"
msgstr "Neuestes Commit Datum"
#: cps/templates/admin.html:83
msgid "Restart Calibre-web" msgid "Restart Calibre-web"
msgstr "Calibre-web Neustarten" msgstr "Calibre-web Neustarten"
#: cps/templates/admin.html:80 #: cps/templates/admin.html:84
msgid "Stop Calibre-web" msgid "Stop Calibre-web"
msgstr "Stoppe Calibre-web" msgstr "Stoppe Calibre-web"
#: cps/templates/admin.html:81 #: cps/templates/admin.html:85
msgid "Check for update" msgid "Check for update"
msgstr "Suche nach Update" msgstr "Suche nach Update"
#: cps/templates/admin.html:82 #: cps/templates/admin.html:86
msgid "Perform Update" msgid "Perform Update"
msgstr "Update durchführen" msgstr "Update durchführen"
#: cps/templates/admin.html:93 #: cps/templates/admin.html:96
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:94 cps/templates/admin.html:109 #: cps/templates/admin.html:101 cps/templates/admin.html:115
#: cps/templates/admin.html:136
msgid "Ok" msgid "Ok"
msgstr "Ok" msgstr "Ok"
#: cps/templates/admin.html:95 cps/templates/admin.html:110 #: cps/templates/admin.html:102 cps/templates/admin.html:116
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75 #: 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:111 #: 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:108 #: cps/templates/admin.html:114
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"
#: cps/templates/admin.html:127
msgid "Updating, please do not reload page"
msgstr "Updatevorgang, bitte Seite nicht neu laden"
#: 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"
msgstr "Buchtitel" msgstr "Buchtitel"
@ -511,7 +549,7 @@ msgstr "Beschreibung"
msgid "Tags" msgid "Tags"
msgstr "Tags" msgstr "Tags"
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136 #: cps/templates/book_edit.html:33 cps/templates/layout.html:138
#: cps/templates/search_form.html:33 #: cps/templates/search_form.html:33
msgid "Series" msgid "Series"
msgstr "Serien" msgstr "Serien"
@ -606,7 +644,7 @@ msgstr "Bearbeiten erlauben"
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "Passwort ändern erlauben" msgstr "Passwort ändern erlauben"
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91 #: cps/templates/config_edit.html:78 cps/templates/layout.html:93
#: cps/templates/login.html:4 #: cps/templates/login.html:4
msgid "Login" msgid "Login"
msgstr "Login" msgstr "Login"
@ -689,11 +727,11 @@ msgstr "Entdecke (Zufälliges Buch)"
msgid "Start" msgid "Start"
msgstr "Start" msgstr "Start"
#: cps/templates/index.xml:7 cps/templates/layout.html:61 #: cps/templates/index.xml:7 cps/templates/layout.html:58
msgid "Search" msgid "Search"
msgstr "Suche" msgstr "Suche"
#: cps/templates/index.xml:15 cps/templates/layout.html:124 #: cps/templates/index.xml:15 cps/templates/layout.html:126
msgid "Hot Books" msgid "Hot Books"
msgstr "Beliebte Bücher" msgstr "Beliebte Bücher"
@ -701,7 +739,7 @@ msgstr "Beliebte Bücher"
msgid "Popular publications from this catalog based on Downloads." msgid "Popular publications from this catalog based on Downloads."
msgstr "Beliebte Publikationen aus dieser Bibliothek basierend auf Downloadzahlen" msgstr "Beliebte Publikationen aus dieser Bibliothek basierend auf Downloadzahlen"
#: cps/templates/index.xml:22 cps/templates/layout.html:127 #: cps/templates/index.xml:22 cps/templates/layout.html:129
msgid "Best rated Books" msgid "Best rated Books"
msgstr "Best bewertete Bücher" msgstr "Best bewertete Bücher"
@ -709,7 +747,7 @@ msgstr "Best bewertete Bücher"
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:29 cps/templates/layout.html:122 #: cps/templates/index.xml:29 cps/templates/layout.html:124
msgid "New Books" msgid "New Books"
msgstr "Neue Bücher" msgstr "Neue Bücher"
@ -721,7 +759,7 @@ msgstr "Die neuesten Bücher"
msgid "Show Random Books" msgid "Show Random Books"
msgstr "Zeige zufällige Bücher" msgstr "Zeige zufällige Bücher"
#: cps/templates/index.xml:43 cps/templates/layout.html:138 #: cps/templates/index.xml:43 cps/templates/layout.html:140
msgid "Authors" msgid "Authors"
msgstr "Autoren" msgstr "Autoren"
@ -741,51 +779,51 @@ msgstr "Bücher nach Reihen geordnet"
msgid "Toggle navigation" msgid "Toggle navigation"
msgstr "Nagivation umschalten" msgstr "Nagivation umschalten"
#: cps/templates/layout.html:63 #: cps/templates/layout.html:60
msgid "Go!" msgid "Go!"
msgstr "Los!" msgstr "Los!"
#: cps/templates/layout.html:66 #: cps/templates/layout.html:68
msgid "Advanced Search" msgid "Advanced Search"
msgstr "Erweiterte Suche" msgstr "Erweiterte Suche"
#: cps/templates/layout.html:87 #: cps/templates/layout.html:89
msgid "Logout" msgid "Logout"
msgstr "Logout" msgstr "Logout"
#: cps/templates/layout.html:92 cps/templates/register.html:18 #: cps/templates/layout.html:94 cps/templates/register.html:18
msgid "Register" msgid "Register"
msgstr "Registrieren" msgstr "Registrieren"
#: cps/templates/layout.html:121 #: cps/templates/layout.html:123
msgid "Browse" msgid "Browse"
msgstr "Browsen" msgstr "Browsen"
#: cps/templates/layout.html:130 #: cps/templates/layout.html:132
msgid "Discover" msgid "Discover"
msgstr "Entdecke" msgstr "Entdecke"
#: cps/templates/layout.html:133 #: cps/templates/layout.html:135
msgid "Categories" msgid "Categories"
msgstr "Kategorien" msgstr "Kategorien"
#: cps/templates/layout.html:140 cps/templates/search_form.html:54 #: cps/templates/layout.html:142 cps/templates/search_form.html:54
msgid "Languages" msgid "Languages"
msgstr "Sprachen" msgstr "Sprachen"
#: cps/templates/layout.html:143 #: cps/templates/layout.html:145
msgid "Public Shelves" msgid "Public Shelves"
msgstr "Öffentiche Bücherregale" msgstr "Öffentiche Bücherregale"
#: cps/templates/layout.html:147 #: cps/templates/layout.html:149
msgid "Your Shelves" msgid "Your Shelves"
msgstr "Deine Bücherregale" msgstr "Deine Bücherregale"
#: cps/templates/layout.html:152 #: cps/templates/layout.html:154
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "Bücherregal erzeugen" msgstr "Bücherregal erzeugen"
#: cps/templates/layout.html:153 #: cps/templates/layout.html:155
msgid "About" msgid "About"
msgstr "Über" msgstr "Über"

View File

@ -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-02-10 20:17+0100\n" "POT-Creation-Date: 2017-02-20 19:47+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,316 +25,341 @@ 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:111 cps/book_formats.py:115 cps/web.py:998 #: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:1030
msgid "not installed" msgid "not installed"
msgstr "No instalado" msgstr "No instalado"
#: cps/helper.py:136 #: cps/helper.py:150
#, python-format #, python-format
msgid "Failed to send mail: %s" msgid "Failed to send mail: %s"
msgstr "Fallo al enviar el correo : %s" msgstr "Fallo al enviar el correo : %s"
#: cps/helper.py:143 #: cps/helper.py:157
msgid "Calibre-web test email" msgid "Calibre-web test email"
msgstr "Prueba de Correo Calibre-web" msgstr "Prueba de Correo Calibre-web"
#: cps/helper.py:144 cps/helper.py:154 #: cps/helper.py:158 cps/helper.py:168
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:130 #: cps/helper.py:167 cps/templates/detail.html:130
msgid "Send to Kindle" msgid "Send to Kindle"
msgstr "Enviar a Kindle" msgstr "Enviar a Kindle"
#: cps/helper.py:171 cps/helper.py:186 #: cps/helper.py:185 cps/helper.py:200
msgid "Could not find any formats suitable for sending by email" msgid "Could not find any formats suitable for sending by email"
msgstr "Formato no compatible para enviar por correo electronico" msgstr "Formato no compatible para enviar por correo electronico"
#: cps/helper.py:180 #: cps/helper.py:194
msgid "Could not convert epub to mobi" msgid "Could not convert epub to mobi"
msgstr "No fue posible convertir de epub a mobi" msgstr "No fue posible convertir de epub a mobi"
#: cps/helper.py:206 #: cps/ub.py:434
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "El fichero solicitado no puede ser leido. Problema de permisos?"
#: cps/ub.py:443
msgid "Guest" msgid "Guest"
msgstr "" msgstr ""
#: cps/web.py:778 #: cps/web.py:734
msgid "Requesting update package"
msgstr ""
#: cps/web.py:735
msgid "Downloading update package"
msgstr ""
#: cps/web.py:736
msgid "Unzipping update package"
msgstr ""
#: cps/web.py:737
msgid "Files are replaced"
msgstr ""
#: cps/web.py:738
msgid "Database connections are closed"
msgstr ""
#: cps/web.py:739
msgid "Server is stopped"
msgstr ""
#: cps/web.py:740
msgid "Update finished, please press okay and reload page"
msgstr ""
#: cps/web.py:810
msgid "Latest Books" msgid "Latest Books"
msgstr "Libros recientes" msgstr "Libros recientes"
#: cps/web.py:803 #: cps/web.py:835
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Libros Populares (los mas descargados)" msgstr "Libros Populares (los mas descargados)"
#: cps/web.py:813 #: cps/web.py:845
msgid "Best rated books" msgid "Best rated books"
msgstr "" msgstr ""
#: cps/templates/index.xml:36 cps/web.py:822 #: cps/templates/index.xml:36 cps/web.py:854
msgid "Random Books" msgid "Random Books"
msgstr "Libros al Azar" msgstr "Libros al Azar"
#: cps/web.py:835 #: cps/web.py:867
msgid "Author list" msgid "Author list"
msgstr "Lista de Autores" msgstr "Lista de Autores"
#: cps/web.py:846 #: cps/web.py:878
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103 #: cps/web.py:880 cps/web.py:908 cps/web.py:1007 cps/web.py:1235
#: cps/web.py:2115
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Error en apertura del Objeto. El archivo no existe o no es accesible" msgstr "Error en apertura del Objeto. El archivo no existe o no es accesible"
#: cps/templates/index.xml:57 cps/web.py:862 #: cps/templates/index.xml:57 cps/web.py:894
msgid "Series list" msgid "Series list"
msgstr "lista de Series" msgstr "lista de Series"
#: cps/web.py:874 #: cps/web.py:906
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Series : %(serie)s" msgstr "Series : %(serie)s"
#: cps/web.py:907 #: cps/web.py:939
msgid "Available languages" msgid "Available languages"
msgstr "Lenguajes disponibles" msgstr "Lenguajes disponibles"
#: cps/web.py:922 #: cps/web.py:954
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Lenguaje: %(name)s" msgstr "Lenguaje: %(name)s"
#: cps/templates/index.xml:50 cps/web.py:935 #: cps/templates/index.xml:50 cps/web.py:967
msgid "Category list" msgid "Category list"
msgstr "Lista de Categorias" msgstr "Lista de Categorias"
#: cps/web.py:947 #: cps/web.py:979
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Categoria : %(name)s" msgstr "Categoria : %(name)s"
#: cps/web.py:1008 #: cps/web.py:1040
msgid "Statistics" msgid "Statistics"
msgstr "Estadisticas" msgstr "Estadisticas"
#: cps/web.py:1029 #: cps/web.py:1061
msgid "Performing Restart, please reload page" msgid "Server restarted, please reload page"
msgstr "" msgstr ""
#: cps/web.py:1031 #: cps/web.py:1063
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "" msgstr ""
#: cps/web.py:1055 #: cps/web.py:1073
msgid "Update done" msgid "Update done"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1141 #: cps/web.py:1147 cps/web.py:1160
msgid "search" msgid "search"
msgstr "" msgstr ""
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213 #: cps/web.py:1211 cps/web.py:1218 cps/web.py:1225 cps/web.py:1232
msgid "Read a Book" msgid "Read a Book"
msgstr "Leer un Libro" msgstr "Leer un Libro"
#: cps/web.py:1264 cps/web.py:1701 #: cps/web.py:1276 cps/web.py:1713
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:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288 #: cps/web.py:1277 cps/web.py:1293 cps/web.py:1298 cps/web.py:1300
msgid "register" msgid "register"
msgstr "Registrarse" msgstr "Registrarse"
#: cps/web.py:1280 #: cps/web.py:1292
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:1285 #: cps/web.py:1297
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:1303 #: cps/web.py:1315
#, 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:1308 #: cps/web.py:1320
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:1310 #: cps/web.py:1322
msgid "login" msgid "login"
msgstr "Iniciar Sesion" msgstr "Iniciar Sesion"
#: cps/web.py:1327 #: cps/web.py:1339
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:1331 #: cps/web.py:1343
#, 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:1335 #: cps/web.py:1347
#, 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:1337 #: cps/web.py:1349
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:1357 #: cps/web.py:1369
#, 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:1378 #: cps/web.py:1390
#, 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:1397 cps/web.py:1421 #: cps/web.py:1409 cps/web.py:1433
#, 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:1402 #: cps/web.py:1414
#, 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:1404 cps/web.py:1432 #: cps/web.py:1416 cps/web.py:1444
msgid "There was an error" msgid "There was an error"
msgstr "Hemos tenido un error" msgstr "Hemos tenido un error"
#: cps/web.py:1405 cps/web.py:1407 #: cps/web.py:1417 cps/web.py:1419
msgid "create a shelf" msgid "create a shelf"
msgstr "Crear un Estante" msgstr "Crear un Estante"
#: cps/web.py:1430 #: cps/web.py:1442
#, python-format #, python-format
msgid "Shelf %(title)s changed" msgid "Shelf %(title)s changed"
msgstr "" msgstr ""
#: cps/web.py:1433 cps/web.py:1435 #: cps/web.py:1445 cps/web.py:1447
msgid "Edit a shelf" msgid "Edit a shelf"
msgstr "" msgstr ""
#: cps/web.py:1453 #: cps/web.py:1465
#, 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:1475 #: cps/web.py:1487
#, python-format #, python-format
msgid "Shelf: '%(name)s'" msgid "Shelf: '%(name)s'"
msgstr "Estante: '%(name)s'" msgstr "Estante: '%(name)s'"
#: cps/web.py:1506 #: cps/web.py:1518
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "" msgstr ""
#: cps/web.py:1568 #: cps/web.py:1580
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:1570 cps/web.py:1574 #: cps/web.py:1582 cps/web.py:1586
#, 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:1571 #: cps/web.py:1583
msgid "Profile updated" msgid "Profile updated"
msgstr "Perfil actualizado" msgstr "Perfil actualizado"
#: cps/web.py:1584 #: cps/web.py:1597
msgid "Admin page" msgid "Admin page"
msgstr "" msgstr ""
#: cps/web.py:1656 #: cps/web.py:1668
msgid "Calibre-web configuration updated" msgid "Calibre-web configuration updated"
msgstr "" msgstr ""
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682 #: cps/web.py:1675 cps/web.py:1681 cps/web.py:1694
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "" msgstr ""
#: cps/web.py:1667 #: cps/web.py:1679
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:1703 cps/web.py:1749 #: cps/templates/admin.html:34 cps/web.py:1715 cps/web.py:1761
msgid "Add new user" msgid "Add new user"
msgstr "Agregar un nuevo usuario" msgstr "Agregar un nuevo usuario"
#: cps/web.py:1741 #: cps/web.py:1753
#, 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:1745 #: cps/web.py:1757
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:1767 #: cps/web.py:1779
msgid "Mail settings updated" msgid "Mail settings updated"
msgstr "Parametros de correo actualizados" msgstr "Parametros de correo actualizados"
#: cps/web.py:1773 #: cps/web.py:1785
#, 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:1776 #: cps/web.py:1788
#, 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:1777 #: cps/web.py:1789
msgid "Edit mail settings" msgid "Edit mail settings"
msgstr "Editar parametros de correo" msgstr "Editar parametros de correo"
#: cps/web.py:1805 #: cps/web.py:1817
#, 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:1886 #: cps/web.py:1898
#, 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:1889 #: cps/web.py:1901
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Oups ! Error inesperado." msgstr "Oups ! Error inesperado."
#: cps/web.py:1892 #: cps/web.py:1904
#, 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:2098 cps/web.py:2101 cps/web.py:2175 #: cps/web.py:2110 cps/web.py:2113 cps/web.py:2188
msgid "edit metadata" msgid "edit metadata"
msgstr "" msgstr ""
#: cps/web.py:2133 #: cps/web.py:2145
#, 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:2138 #: cps/web.py:2150
#, 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:2143 #: cps/web.py:2155
#, 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)"
@ -343,145 +368,158 @@ msgstr "Fallo al borrar el archivo %s (permiso negado)"
msgid "User list" msgid "User list"
msgstr "lista de usuarios" msgstr "lista de usuarios"
#: cps/templates/admin.html:7 #: cps/templates/admin.html:8
msgid "Nickname" msgid "Nickname"
msgstr "Nickname" msgstr "Nickname"
#: cps/templates/admin.html:8 #: cps/templates/admin.html:9
msgid "Email" msgid "Email"
msgstr "Correo" msgstr "Correo"
#: cps/templates/admin.html:9 #: cps/templates/admin.html:10
msgid "Kindle" msgid "Kindle"
msgstr "Kindle" msgstr "Kindle"
#: cps/templates/admin.html:10 #: cps/templates/admin.html:11
msgid "DLS" msgid "DLS"
msgstr "DLS" msgstr "DLS"
#: cps/templates/admin.html:11 cps/templates/layout.html:83 #: cps/templates/admin.html:12 cps/templates/layout.html:85
msgid "Admin" msgid "Admin"
msgstr "Administracion" msgstr "Administracion"
#: cps/templates/admin.html:12 cps/templates/detail.html:117 #: cps/templates/admin.html:13 cps/templates/detail.html:117
msgid "Download" msgid "Download"
msgstr "Descarga" msgstr "Descarga"
#: cps/templates/admin.html:13 cps/templates/layout.html:76 #: cps/templates/admin.html:14 cps/templates/layout.html:78
msgid "Upload" msgid "Upload"
msgstr "Subir archivo" msgstr "Subir archivo"
#: cps/templates/admin.html:14 #: cps/templates/admin.html:15
msgid "Edit" msgid "Edit"
msgstr "Editar" msgstr "Editar"
#: cps/templates/admin.html:15 #: cps/templates/admin.html:16
msgid "Passwd" msgid "Passwd"
msgstr "Clave" msgstr "Clave"
#: cps/templates/admin.html:34 #: cps/templates/admin.html:35
msgid "SMTP mail settings" msgid "SMTP mail settings"
msgstr "Parametros smtp del correo" msgstr "Parametros smtp del correo"
#: cps/templates/admin.html:37 cps/templates/email_edit.html:7 #: cps/templates/admin.html:38 cps/templates/email_edit.html:7
msgid "SMTP hostname" msgid "SMTP hostname"
msgstr "Servidor smtp" msgstr "Servidor smtp"
#: cps/templates/admin.html:38 #: cps/templates/admin.html:39
msgid "SMTP port" msgid "SMTP port"
msgstr "Puerto smtp" msgstr "Puerto smtp"
#: cps/templates/admin.html:39 #: cps/templates/admin.html:40
msgid "SSL" msgid "SSL"
msgstr "SSL" msgstr "SSL"
#: cps/templates/admin.html:40 cps/templates/email_edit.html:23 #: cps/templates/admin.html:41 cps/templates/email_edit.html:23
msgid "SMTP login" msgid "SMTP login"
msgstr "Login SMTP" msgstr "Login SMTP"
#: cps/templates/admin.html:41 cps/templates/email_edit.html:27 #: cps/templates/admin.html:42 cps/templates/email_edit.html:27
msgid "SMTP password" msgid "SMTP password"
msgstr "Clave SMTP" msgstr "Clave SMTP"
#: cps/templates/admin.html:42 #: cps/templates/admin.html:43
msgid "From mail" msgid "From mail"
msgstr "Desde el correo" msgstr "Desde el correo"
#: cps/templates/admin.html:54 #: cps/templates/admin.html:55
msgid "Change SMTP settings" msgid "Change SMTP settings"
msgstr "Cambiar parametros smtp" msgstr "Cambiar parametros smtp"
#: cps/templates/admin.html:56 cps/templates/admin.html:76 #: cps/templates/admin.html:57 cps/templates/admin.html:77
msgid "Configuration" msgid "Configuration"
msgstr "" msgstr ""
#: cps/templates/admin.html:59 #: cps/templates/admin.html:60
msgid "Calibre DB dir" msgid "Calibre DB dir"
msgstr "" msgstr ""
#: cps/templates/admin.html:60 cps/templates/config_edit.html:32 #: cps/templates/admin.html:61 cps/templates/config_edit.html:32
msgid "Log Level" msgid "Log Level"
msgstr "" msgstr ""
#: cps/templates/admin.html:61 #: cps/templates/admin.html:62
msgid "Port" msgid "Port"
msgstr "" msgstr ""
#: cps/templates/admin.html:62 cps/templates/config_edit.html:19 #: cps/templates/admin.html:63 cps/templates/config_edit.html:19
msgid "Books per page" msgid "Books per page"
msgstr "" msgstr ""
#: cps/templates/admin.html:63 #: cps/templates/admin.html:64
msgid "Uploading" msgid "Uploading"
msgstr "" msgstr ""
#: cps/templates/admin.html:64 #: cps/templates/admin.html:65
msgid "Public registration" msgid "Public registration"
msgstr "" msgstr ""
#: cps/templates/admin.html:65 #: cps/templates/admin.html:66
msgid "Anonymous browsing" msgid "Anonymous browsing"
msgstr "" msgstr ""
#: cps/templates/admin.html:77 #: cps/templates/admin.html:78
msgid "Administration" msgid "Administration"
msgstr "" msgstr ""
#: cps/templates/admin.html:79
msgid "Restart Calibre-web"
msgstr ""
#: cps/templates/admin.html:80 #: cps/templates/admin.html:80
msgid "Stop Calibre-web" msgid "Current commit timestamp"
msgstr "" msgstr ""
#: cps/templates/admin.html:81 #: cps/templates/admin.html:81
msgid "Newest commit timestamp"
msgstr ""
#: cps/templates/admin.html:83
msgid "Restart Calibre-web"
msgstr ""
#: cps/templates/admin.html:84
msgid "Stop Calibre-web"
msgstr ""
#: cps/templates/admin.html:85
msgid "Check for update" msgid "Check for update"
msgstr "" msgstr ""
#: cps/templates/admin.html:82 #: cps/templates/admin.html:86
msgid "Perform Update" msgid "Perform Update"
msgstr "" msgstr ""
#: cps/templates/admin.html:93 #: cps/templates/admin.html:96
msgid "Do you really want to restart Calibre-web?" msgid "Do you really want to restart Calibre-web?"
msgstr "" msgstr ""
#: cps/templates/admin.html:94 cps/templates/admin.html:109 #: cps/templates/admin.html:101 cps/templates/admin.html:115
#: cps/templates/admin.html:136
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
#: cps/templates/admin.html:95 cps/templates/admin.html:110 #: cps/templates/admin.html:102 cps/templates/admin.html:116
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75 #: 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:111 #: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back" msgid "Back"
msgstr "Regresar" msgstr "Regresar"
#: cps/templates/admin.html:108 #: cps/templates/admin.html:114
msgid "Do you really want to stop Calibre-web?" msgid "Do you really want to stop Calibre-web?"
msgstr "" msgstr ""
#: cps/templates/admin.html:127
msgid "Updating, please do not reload page"
msgstr ""
#: 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"
msgstr "Titulo del Libro" msgstr "Titulo del Libro"
@ -498,7 +536,7 @@ msgstr "Descripcion"
msgid "Tags" msgid "Tags"
msgstr "Etiqueta" msgstr "Etiqueta"
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136 #: cps/templates/book_edit.html:33 cps/templates/layout.html:138
#: cps/templates/search_form.html:33 #: cps/templates/search_form.html:33
msgid "Series" msgid "Series"
msgstr "Series" msgstr "Series"
@ -593,7 +631,7 @@ msgstr "Permitir editar"
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "Permitir cambiar la clave" msgstr "Permitir cambiar la clave"
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91 #: cps/templates/config_edit.html:78 cps/templates/layout.html:93
#: cps/templates/login.html:4 #: cps/templates/login.html:4
msgid "Login" msgid "Login"
msgstr "Inicio de Sesion" msgstr "Inicio de Sesion"
@ -674,11 +712,11 @@ msgstr "Descubrir (Libros al azar)"
msgid "Start" msgid "Start"
msgstr "Iniciar" msgstr "Iniciar"
#: cps/templates/index.xml:7 cps/templates/layout.html:61 #: cps/templates/index.xml:7 cps/templates/layout.html:58
msgid "Search" msgid "Search"
msgstr "Buscar" msgstr "Buscar"
#: cps/templates/index.xml:15 cps/templates/layout.html:124 #: cps/templates/index.xml:15 cps/templates/layout.html:126
msgid "Hot Books" msgid "Hot Books"
msgstr "Libros Populares" msgstr "Libros Populares"
@ -686,7 +724,7 @@ msgstr "Libros Populares"
msgid "Popular publications from this catalog based on Downloads." msgid "Popular publications from this catalog based on Downloads."
msgstr "" msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:127 #: cps/templates/index.xml:22 cps/templates/layout.html:129
msgid "Best rated Books" msgid "Best rated Books"
msgstr "" msgstr ""
@ -694,7 +732,7 @@ msgstr ""
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:29 cps/templates/layout.html:122 #: cps/templates/index.xml:29 cps/templates/layout.html:124
msgid "New Books" msgid "New Books"
msgstr "Nuevos Libros" msgstr "Nuevos Libros"
@ -706,7 +744,7 @@ msgstr "Libros Recientes"
msgid "Show Random Books" msgid "Show Random Books"
msgstr "Mostrar libros al azar" msgstr "Mostrar libros al azar"
#: cps/templates/index.xml:43 cps/templates/layout.html:138 #: cps/templates/index.xml:43 cps/templates/layout.html:140
msgid "Authors" msgid "Authors"
msgstr "Autores" msgstr "Autores"
@ -726,51 +764,51 @@ msgstr "Libros ordenados por Series"
msgid "Toggle navigation" msgid "Toggle navigation"
msgstr "" msgstr ""
#: cps/templates/layout.html:63 #: cps/templates/layout.html:60
msgid "Go!" msgid "Go!"
msgstr "Vamos!" msgstr "Vamos!"
#: cps/templates/layout.html:66 #: cps/templates/layout.html:68
msgid "Advanced Search" msgid "Advanced Search"
msgstr "Busqueda avanzada" msgstr "Busqueda avanzada"
#: cps/templates/layout.html:87 #: cps/templates/layout.html:89
msgid "Logout" msgid "Logout"
msgstr "Cerrar Sesion" msgstr "Cerrar Sesion"
#: cps/templates/layout.html:92 cps/templates/register.html:18 #: cps/templates/layout.html:94 cps/templates/register.html:18
msgid "Register" msgid "Register"
msgstr "Registro" msgstr "Registro"
#: cps/templates/layout.html:121 #: cps/templates/layout.html:123
msgid "Browse" msgid "Browse"
msgstr "Explorar" msgstr "Explorar"
#: cps/templates/layout.html:130 #: cps/templates/layout.html:132
msgid "Discover" msgid "Discover"
msgstr "Descubrir" msgstr "Descubrir"
#: cps/templates/layout.html:133 #: cps/templates/layout.html:135
msgid "Categories" msgid "Categories"
msgstr "Categoria" msgstr "Categoria"
#: cps/templates/layout.html:140 cps/templates/search_form.html:54 #: cps/templates/layout.html:142 cps/templates/search_form.html:54
msgid "Languages" msgid "Languages"
msgstr "Lenguaje" msgstr "Lenguaje"
#: cps/templates/layout.html:143 #: cps/templates/layout.html:145
msgid "Public Shelves" msgid "Public Shelves"
msgstr "Estantes Publicos" msgstr "Estantes Publicos"
#: cps/templates/layout.html:147 #: cps/templates/layout.html:149
msgid "Your Shelves" msgid "Your Shelves"
msgstr "Sus Estantes" msgstr "Sus Estantes"
#: cps/templates/layout.html:152 #: cps/templates/layout.html:154
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "Crear un estante" msgstr "Crear un estante"
#: cps/templates/layout.html:153 #: cps/templates/layout.html:155
msgid "About" msgid "About"
msgstr "Acerca de" msgstr "Acerca de"
@ -789,7 +827,7 @@ msgid "Remember me"
msgstr "Recordarme" msgstr "Recordarme"
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog" msgid "Calibre Web ebook catalog"
msgstr "" msgstr ""
#: cps/templates/read.html:136 #: cps/templates/read.html:136

View File

@ -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-02-10 20:17+0100\n" "POT-Creation-Date: 2017-02-20 19:47+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,320 +31,343 @@ 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:111 cps/book_formats.py:115 cps/web.py:998 #: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:1030
msgid "not installed" msgid "not installed"
msgstr "" msgstr ""
#: cps/helper.py:136 #: cps/helper.py:150
#, python-format #, python-format
msgid "Failed to send mail: %s" msgid "Failed to send mail: %s"
msgstr "Impossible d'envoyer le courriel : %s" msgstr "Impossible d'envoyer le courriel : %s"
#: cps/helper.py:143 #: cps/helper.py:157
msgid "Calibre-web test email" msgid "Calibre-web test email"
msgstr "" msgstr ""
#: cps/helper.py:144 cps/helper.py:154 #: cps/helper.py:158 cps/helper.py:168
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:130 #: cps/helper.py:167 cps/templates/detail.html:130
msgid "Send to Kindle" msgid "Send to Kindle"
msgstr "Envoyer ver Kindle" msgstr "Envoyer ver Kindle"
#: cps/helper.py:171 cps/helper.py:186 #: cps/helper.py:185 cps/helper.py:200
msgid "Could not find any formats suitable for sending by email" msgid "Could not find any formats suitable for sending by email"
msgstr "Impossible de trouver un format adapté à envoyer par courriel" msgstr "Impossible de trouver un format adapté à envoyer par courriel"
#: cps/helper.py:180 #: cps/helper.py:194
msgid "Could not convert epub to mobi" msgid "Could not convert epub to mobi"
msgstr "Impossible de convertir epub vers mobi" msgstr "Impossible de convertir epub vers mobi"
#: cps/helper.py:206 #: cps/ub.py:434
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr ""
"Le fichier demandé ne peux pas être lu. Peut-être de mauvaises "
"permissions ?"
#: cps/ub.py:443
msgid "Guest" msgid "Guest"
msgstr "" msgstr ""
#: cps/web.py:778 #: cps/web.py:734
msgid "Requesting update package"
msgstr ""
#: cps/web.py:735
msgid "Downloading update package"
msgstr ""
#: cps/web.py:736
msgid "Unzipping update package"
msgstr ""
#: cps/web.py:737
msgid "Files are replaced"
msgstr ""
#: cps/web.py:738
msgid "Database connections are closed"
msgstr ""
#: cps/web.py:739
msgid "Server is stopped"
msgstr ""
#: cps/web.py:740
msgid "Update finished, please press okay and reload page"
msgstr ""
#: cps/web.py:810
msgid "Latest Books" msgid "Latest Books"
msgstr "Derniers livres" msgstr "Derniers livres"
#: cps/web.py:803 #: cps/web.py:835
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/web.py:813 #: cps/web.py:845
msgid "Best rated books" msgid "Best rated books"
msgstr "" msgstr ""
#: cps/templates/index.xml:36 cps/web.py:822 #: cps/templates/index.xml:36 cps/web.py:854
msgid "Random Books" msgid "Random Books"
msgstr "Livres au hasard" msgstr "Livres au hasard"
#: cps/web.py:835 #: cps/web.py:867
msgid "Author list" msgid "Author list"
msgstr "Liste des auteurs" msgstr "Liste des auteurs"
#: cps/web.py:846 #: cps/web.py:878
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103 #: cps/web.py:880 cps/web.py:908 cps/web.py:1007 cps/web.py:1235
#: cps/web.py:2115
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "" msgstr ""
"Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est " "Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est "
"pas accessible :" "pas accessible :"
#: cps/templates/index.xml:57 cps/web.py:862 #: cps/templates/index.xml:57 cps/web.py:894
msgid "Series list" msgid "Series list"
msgstr "Liste des séries" msgstr "Liste des séries"
#: cps/web.py:874 #: cps/web.py:906
#, 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:907 #: cps/web.py:939
msgid "Available languages" msgid "Available languages"
msgstr "Langues disponibles" msgstr "Langues disponibles"
#: cps/web.py:922 #: cps/web.py:954
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Langue : %(name)s" msgstr "Langue : %(name)s"
#: cps/templates/index.xml:50 cps/web.py:935 #: cps/templates/index.xml:50 cps/web.py:967
msgid "Category list" msgid "Category list"
msgstr "Liste des catégories" msgstr "Liste des catégories"
#: cps/web.py:947 #: cps/web.py:979
#, 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:1008 #: cps/web.py:1040
msgid "Statistics" msgid "Statistics"
msgstr "Statistiques" msgstr "Statistiques"
#: cps/web.py:1029 #: cps/web.py:1061
msgid "Performing Restart, please reload page" msgid "Server restarted, please reload page"
msgstr "" msgstr ""
#: cps/web.py:1031 #: cps/web.py:1063
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "" msgstr ""
#: cps/web.py:1055 #: cps/web.py:1073
msgid "Update done" msgid "Update done"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1141 #: cps/web.py:1147 cps/web.py:1160
msgid "search" msgid "search"
msgstr "" msgstr ""
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213 #: cps/web.py:1211 cps/web.py:1218 cps/web.py:1225 cps/web.py:1232
msgid "Read a Book" msgid "Read a Book"
msgstr "Lire un livre" msgstr "Lire un livre"
#: cps/web.py:1264 cps/web.py:1701 #: cps/web.py:1276 cps/web.py:1713
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:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288 #: cps/web.py:1277 cps/web.py:1293 cps/web.py:1298 cps/web.py:1300
msgid "register" msgid "register"
msgstr "S'enregistrer" msgstr "S'enregistrer"
#: cps/web.py:1280 #: cps/web.py:1292
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:1285 #: cps/web.py:1297
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:1303 #: cps/web.py:1315
#, 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:1308 #: cps/web.py:1320
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:1310 #: cps/web.py:1322
msgid "login" msgid "login"
msgstr "Connexion" msgstr "Connexion"
#: cps/web.py:1327 #: cps/web.py:1339
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:1331 #: cps/web.py:1343
#, 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:1335 #: cps/web.py:1347
#, 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:1337 #: cps/web.py:1349
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:1357 #: cps/web.py:1369
#, 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:1378 #: cps/web.py:1390
#, 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:1397 cps/web.py:1421 #: cps/web.py:1409 cps/web.py:1433
#, 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:1402 #: cps/web.py:1414
#, 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:1404 cps/web.py:1432 #: cps/web.py:1416 cps/web.py:1444
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:1405 cps/web.py:1407 #: cps/web.py:1417 cps/web.py:1419
msgid "create a shelf" msgid "create a shelf"
msgstr "Créer une étagère" msgstr "Créer une étagère"
#: cps/web.py:1430 #: cps/web.py:1442
#, python-format #, python-format
msgid "Shelf %(title)s changed" msgid "Shelf %(title)s changed"
msgstr "" msgstr ""
#: cps/web.py:1433 cps/web.py:1435 #: cps/web.py:1445 cps/web.py:1447
msgid "Edit a shelf" msgid "Edit a shelf"
msgstr "" msgstr ""
#: cps/web.py:1453 #: cps/web.py:1465
#, 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:1475 #: cps/web.py:1487
#, 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:1506 #: cps/web.py:1518
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "" msgstr ""
#: cps/web.py:1568 #: cps/web.py:1580
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:1570 cps/web.py:1574 #: cps/web.py:1582 cps/web.py:1586
#, 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:1571 #: cps/web.py:1583
msgid "Profile updated" msgid "Profile updated"
msgstr "Profil mis à jour" msgstr "Profil mis à jour"
#: cps/web.py:1584 #: cps/web.py:1597
msgid "Admin page" msgid "Admin page"
msgstr "" msgstr ""
#: cps/web.py:1656 #: cps/web.py:1668
msgid "Calibre-web configuration updated" msgid "Calibre-web configuration updated"
msgstr "" msgstr ""
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682 #: cps/web.py:1675 cps/web.py:1681 cps/web.py:1694
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "" msgstr ""
#: cps/web.py:1667 #: cps/web.py:1679
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:1703 cps/web.py:1749 #: cps/templates/admin.html:34 cps/web.py:1715 cps/web.py:1761
msgid "Add new user" msgid "Add new user"
msgstr "Ajouter un nouvel utilisateur" msgstr "Ajouter un nouvel utilisateur"
#: cps/web.py:1741 #: cps/web.py:1753
#, 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:1745 #: cps/web.py:1757
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:1767 #: cps/web.py:1779
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:1773 #: cps/web.py:1785
#, 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:1776 #: cps/web.py:1788
#, 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:1777 #: cps/web.py:1789
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:1805 #: cps/web.py:1817
#, 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:1886 #: cps/web.py:1898
#, 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:1889 #: cps/web.py:1901
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:1892 #: cps/web.py:1904
#, 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:2098 cps/web.py:2101 cps/web.py:2175 #: cps/web.py:2110 cps/web.py:2113 cps/web.py:2188
msgid "edit metadata" msgid "edit metadata"
msgstr "" msgstr ""
#: cps/web.py:2133 #: cps/web.py:2145
#, 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:2138 #: cps/web.py:2150
#, 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:2143 #: cps/web.py:2155
#, 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)"
@ -353,145 +376,158 @@ msgstr "Impossible de supprimer le fichier %s (permission refusée)"
msgid "User list" msgid "User list"
msgstr "Liste des ustilisateurs" msgstr "Liste des ustilisateurs"
#: cps/templates/admin.html:7 #: cps/templates/admin.html:8
msgid "Nickname" msgid "Nickname"
msgstr "Surnom" msgstr "Surnom"
#: cps/templates/admin.html:8 #: cps/templates/admin.html:9
msgid "Email" msgid "Email"
msgstr "Courriel" msgstr "Courriel"
#: cps/templates/admin.html:9 #: cps/templates/admin.html:10
msgid "Kindle" msgid "Kindle"
msgstr "Kindle" msgstr "Kindle"
#: cps/templates/admin.html:10 #: cps/templates/admin.html:11
msgid "DLS" msgid "DLS"
msgstr "DLS" msgstr "DLS"
#: cps/templates/admin.html:11 cps/templates/layout.html:83 #: cps/templates/admin.html:12 cps/templates/layout.html:85
msgid "Admin" msgid "Admin"
msgstr "Administration" msgstr "Administration"
#: cps/templates/admin.html:12 cps/templates/detail.html:117 #: cps/templates/admin.html:13 cps/templates/detail.html:117
msgid "Download" msgid "Download"
msgstr "Télécharger" msgstr "Télécharger"
#: cps/templates/admin.html:13 cps/templates/layout.html:76 #: cps/templates/admin.html:14 cps/templates/layout.html:78
msgid "Upload" msgid "Upload"
msgstr "Téléverser" msgstr "Téléverser"
#: cps/templates/admin.html:14 #: cps/templates/admin.html:15
msgid "Edit" msgid "Edit"
msgstr "Éditer" msgstr "Éditer"
#: cps/templates/admin.html:15 #: cps/templates/admin.html:16
msgid "Passwd" msgid "Passwd"
msgstr "Mot de passe" msgstr "Mot de passe"
#: cps/templates/admin.html:34 #: cps/templates/admin.html:35
msgid "SMTP mail settings" msgid "SMTP mail settings"
msgstr "Paramètres smtp" msgstr "Paramètres smtp"
#: cps/templates/admin.html:37 cps/templates/email_edit.html:7 #: cps/templates/admin.html:38 cps/templates/email_edit.html:7
msgid "SMTP hostname" msgid "SMTP hostname"
msgstr "Serveur smtp" msgstr "Serveur smtp"
#: cps/templates/admin.html:38 #: cps/templates/admin.html:39
msgid "SMTP port" msgid "SMTP port"
msgstr "Port smtp" msgstr "Port smtp"
#: cps/templates/admin.html:39 #: cps/templates/admin.html:40
msgid "SSL" msgid "SSL"
msgstr "SSL" msgstr "SSL"
#: cps/templates/admin.html:40 cps/templates/email_edit.html:23 #: cps/templates/admin.html:41 cps/templates/email_edit.html:23
msgid "SMTP login" msgid "SMTP login"
msgstr "Login smtp" msgstr "Login smtp"
#: cps/templates/admin.html:41 cps/templates/email_edit.html:27 #: cps/templates/admin.html:42 cps/templates/email_edit.html:27
msgid "SMTP password" msgid "SMTP password"
msgstr "Mot de passe smtp" msgstr "Mot de passe smtp"
#: cps/templates/admin.html:42 #: cps/templates/admin.html:43
msgid "From mail" msgid "From mail"
msgstr "Expéditeur des courriels" msgstr "Expéditeur des courriels"
#: cps/templates/admin.html:54 #: cps/templates/admin.html:55
msgid "Change SMTP settings" msgid "Change SMTP settings"
msgstr "Changer les paramètre smtp" msgstr "Changer les paramètre smtp"
#: cps/templates/admin.html:56 cps/templates/admin.html:76 #: cps/templates/admin.html:57 cps/templates/admin.html:77
msgid "Configuration" msgid "Configuration"
msgstr "" msgstr ""
#: cps/templates/admin.html:59 #: cps/templates/admin.html:60
msgid "Calibre DB dir" msgid "Calibre DB dir"
msgstr "" msgstr ""
#: cps/templates/admin.html:60 cps/templates/config_edit.html:32 #: cps/templates/admin.html:61 cps/templates/config_edit.html:32
msgid "Log Level" msgid "Log Level"
msgstr "" msgstr ""
#: cps/templates/admin.html:61 #: cps/templates/admin.html:62
msgid "Port" msgid "Port"
msgstr "" msgstr ""
#: cps/templates/admin.html:62 cps/templates/config_edit.html:19 #: cps/templates/admin.html:63 cps/templates/config_edit.html:19
msgid "Books per page" msgid "Books per page"
msgstr "" msgstr ""
#: cps/templates/admin.html:63 #: cps/templates/admin.html:64
msgid "Uploading" msgid "Uploading"
msgstr "" msgstr ""
#: cps/templates/admin.html:64 #: cps/templates/admin.html:65
msgid "Public registration" msgid "Public registration"
msgstr "" msgstr ""
#: cps/templates/admin.html:65 #: cps/templates/admin.html:66
msgid "Anonymous browsing" msgid "Anonymous browsing"
msgstr "" msgstr ""
#: cps/templates/admin.html:77 #: cps/templates/admin.html:78
msgid "Administration" msgid "Administration"
msgstr "" msgstr ""
#: cps/templates/admin.html:79
msgid "Restart Calibre-web"
msgstr ""
#: cps/templates/admin.html:80 #: cps/templates/admin.html:80
msgid "Stop Calibre-web" msgid "Current commit timestamp"
msgstr "" msgstr ""
#: cps/templates/admin.html:81 #: cps/templates/admin.html:81
msgid "Newest commit timestamp"
msgstr ""
#: cps/templates/admin.html:83
msgid "Restart Calibre-web"
msgstr ""
#: cps/templates/admin.html:84
msgid "Stop Calibre-web"
msgstr ""
#: cps/templates/admin.html:85
msgid "Check for update" msgid "Check for update"
msgstr "" msgstr ""
#: cps/templates/admin.html:82 #: cps/templates/admin.html:86
msgid "Perform Update" msgid "Perform Update"
msgstr "" msgstr ""
#: cps/templates/admin.html:93 #: cps/templates/admin.html:96
msgid "Do you really want to restart Calibre-web?" msgid "Do you really want to restart Calibre-web?"
msgstr "" msgstr ""
#: cps/templates/admin.html:94 cps/templates/admin.html:109 #: cps/templates/admin.html:101 cps/templates/admin.html:115
#: cps/templates/admin.html:136
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
#: cps/templates/admin.html:95 cps/templates/admin.html:110 #: cps/templates/admin.html:102 cps/templates/admin.html:116
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75 #: 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:111 #: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back" msgid "Back"
msgstr "Retour" msgstr "Retour"
#: cps/templates/admin.html:108 #: cps/templates/admin.html:114
msgid "Do you really want to stop Calibre-web?" msgid "Do you really want to stop Calibre-web?"
msgstr "" msgstr ""
#: cps/templates/admin.html:127
msgid "Updating, please do not reload page"
msgstr ""
#: 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"
msgstr "Titre du livre" msgstr "Titre du livre"
@ -508,7 +544,7 @@ msgstr "Description"
msgid "Tags" msgid "Tags"
msgstr "Étiquette" msgstr "Étiquette"
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136 #: cps/templates/book_edit.html:33 cps/templates/layout.html:138
#: cps/templates/search_form.html:33 #: cps/templates/search_form.html:33
msgid "Series" msgid "Series"
msgstr "Séries" msgstr "Séries"
@ -603,7 +639,7 @@ msgstr "Permettre l'édition"
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "Permettre le changement de mot de passe" msgstr "Permettre le changement de mot de passe"
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91 #: cps/templates/config_edit.html:78 cps/templates/layout.html:93
#: cps/templates/login.html:4 #: cps/templates/login.html:4
msgid "Login" msgid "Login"
msgstr "Connexion" msgstr "Connexion"
@ -684,11 +720,11 @@ msgstr "Découverte (livres au hasard)"
msgid "Start" msgid "Start"
msgstr "Démarrer" msgstr "Démarrer"
#: cps/templates/index.xml:7 cps/templates/layout.html:61 #: cps/templates/index.xml:7 cps/templates/layout.html:58
msgid "Search" msgid "Search"
msgstr "Chercher" msgstr "Chercher"
#: cps/templates/index.xml:15 cps/templates/layout.html:124 #: cps/templates/index.xml:15 cps/templates/layout.html:126
msgid "Hot Books" msgid "Hot Books"
msgstr "Livres populaires" msgstr "Livres populaires"
@ -696,7 +732,7 @@ msgstr "Livres populaires"
msgid "Popular publications from this catalog based on Downloads." msgid "Popular publications from this catalog based on Downloads."
msgstr "" msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:127 #: cps/templates/index.xml:22 cps/templates/layout.html:129
msgid "Best rated Books" msgid "Best rated Books"
msgstr "" msgstr ""
@ -704,7 +740,7 @@ msgstr ""
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:29 cps/templates/layout.html:122 #: cps/templates/index.xml:29 cps/templates/layout.html:124
msgid "New Books" msgid "New Books"
msgstr "Nouveaux livres" msgstr "Nouveaux livres"
@ -716,7 +752,7 @@ msgstr "Les derniers livres"
msgid "Show Random Books" msgid "Show Random Books"
msgstr "Montrer des livres au hasard" msgstr "Montrer des livres au hasard"
#: cps/templates/index.xml:43 cps/templates/layout.html:138 #: cps/templates/index.xml:43 cps/templates/layout.html:140
msgid "Authors" msgid "Authors"
msgstr "Auteurs" msgstr "Auteurs"
@ -736,51 +772,51 @@ msgstr "Livres classés par série"
msgid "Toggle navigation" msgid "Toggle navigation"
msgstr "Basculer la navigation" msgstr "Basculer la navigation"
#: cps/templates/layout.html:63 #: cps/templates/layout.html:60
msgid "Go!" msgid "Go!"
msgstr "Allez !" msgstr "Allez !"
#: cps/templates/layout.html:66 #: cps/templates/layout.html:68
msgid "Advanced Search" msgid "Advanced Search"
msgstr "Recherche avancée" msgstr "Recherche avancée"
#: cps/templates/layout.html:87 #: cps/templates/layout.html:89
msgid "Logout" msgid "Logout"
msgstr "Déconnexion" msgstr "Déconnexion"
#: cps/templates/layout.html:92 cps/templates/register.html:18 #: cps/templates/layout.html:94 cps/templates/register.html:18
msgid "Register" msgid "Register"
msgstr "S'enregistrer" msgstr "S'enregistrer"
#: cps/templates/layout.html:121 #: cps/templates/layout.html:123
msgid "Browse" msgid "Browse"
msgstr "Explorer" msgstr "Explorer"
#: cps/templates/layout.html:130 #: cps/templates/layout.html:132
msgid "Discover" msgid "Discover"
msgstr "Découvrir" msgstr "Découvrir"
#: cps/templates/layout.html:133 #: cps/templates/layout.html:135
msgid "Categories" msgid "Categories"
msgstr "Catégories" msgstr "Catégories"
#: cps/templates/layout.html:140 cps/templates/search_form.html:54 #: cps/templates/layout.html:142 cps/templates/search_form.html:54
msgid "Languages" msgid "Languages"
msgstr "Langues" msgstr "Langues"
#: cps/templates/layout.html:143 #: cps/templates/layout.html:145
msgid "Public Shelves" msgid "Public Shelves"
msgstr "Étagères publiques" msgstr "Étagères publiques"
#: cps/templates/layout.html:147 #: cps/templates/layout.html:149
msgid "Your Shelves" msgid "Your Shelves"
msgstr "Vos étagères" msgstr "Vos étagères"
#: cps/templates/layout.html:152 #: cps/templates/layout.html:154
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "Créer une étagère" msgstr "Créer une étagère"
#: cps/templates/layout.html:153 #: cps/templates/layout.html:155
msgid "About" msgid "About"
msgstr "À popos" msgstr "À popos"
@ -799,7 +835,7 @@ msgid "Remember me"
msgstr "Se rappeler de moi" msgstr "Se rappeler de moi"
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog" msgid "Calibre Web ebook catalog"
msgstr "" msgstr ""
#: cps/templates/read.html:136 #: cps/templates/read.html:136

View File

@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: Calibre Web - polski (170210.2017)\n" "Project-Id-Version: Calibre Web - polski (170210.2017)\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
"POT-Creation-Date: 2017-02-12 08:13+0100\n" "POT-Creation-Date: 2017-02-20 19:47+0100\n"
"PO-Revision-Date: 2017-02-11 15:56+0100\n" "PO-Revision-Date: 2017-02-11 15:56+0100\n"
"Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n" "Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n"
"Language: pl\n" "Language: pl\n"
@ -20,318 +20,343 @@ 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:111 cps/book_formats.py:115 cps/web.py:998 #: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:1030
msgid "not installed" msgid "not installed"
msgstr "nie zainstalowane" msgstr "nie zainstalowane"
#: cps/helper.py:136 #: cps/helper.py:150
#, python-format #, python-format
msgid "Failed to send mail: %s" msgid "Failed to send mail: %s"
msgstr "Nie można wysłać poczty: %s" msgstr "Nie można wysłać poczty: %s"
#: cps/helper.py:143 #: cps/helper.py:157
msgid "Calibre-web test email" msgid "Calibre-web test email"
msgstr "Calibre-web testowy email" msgstr "Calibre-web testowy email"
#: cps/helper.py:144 cps/helper.py:154 #: cps/helper.py:158 cps/helper.py:168
msgid "This email has been sent via calibre web." msgid "This email has been sent via calibre web."
msgstr "Ten e-mail został wysłany za pośrednictwem calibre web." msgstr "Ten e-mail został wysłany za pośrednictwem calibre web."
#: cps/helper.py:153 cps/templates/detail.html:130 #: cps/helper.py:167 cps/templates/detail.html:130
msgid "Send to Kindle" msgid "Send to Kindle"
msgstr "Wyślij do Kindle" msgstr "Wyślij do Kindle"
#: cps/helper.py:171 cps/helper.py:186 #: cps/helper.py:185 cps/helper.py:200
msgid "Could not find any formats suitable for sending by email" msgid "Could not find any formats suitable for sending by email"
msgstr "" msgstr ""
"Nie można znaleźć żadnych formatów przystosowane do wysyłania pocztą " "Nie można znaleźć żadnych formatów przystosowane do wysyłania pocztą "
"e-mail" "e-mail"
#: cps/helper.py:180 #: cps/helper.py:194
msgid "Could not convert epub to mobi" msgid "Could not convert epub to mobi"
msgstr "Nie można konwertować epub do mobi" msgstr "Nie można konwertować epub do mobi"
#: cps/helper.py:206 #: cps/ub.py:434
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "Żądany plik nie może być odczytany. Może złe uprawnienia?"
#: cps/ub.py:443
msgid "Guest" msgid "Guest"
msgstr "Gość" msgstr "Gość"
#: cps/web.py:778 #: cps/web.py:734
msgid "Requesting update package"
msgstr ""
#: cps/web.py:735
msgid "Downloading update package"
msgstr ""
#: cps/web.py:736
msgid "Unzipping update package"
msgstr ""
#: cps/web.py:737
msgid "Files are replaced"
msgstr ""
#: cps/web.py:738
msgid "Database connections are closed"
msgstr ""
#: cps/web.py:739
msgid "Server is stopped"
msgstr ""
#: cps/web.py:740
msgid "Update finished, please press okay and reload page"
msgstr ""
#: cps/web.py:810
msgid "Latest Books" msgid "Latest Books"
msgstr "Najnowsze książki" msgstr "Najnowsze książki"
#: cps/web.py:803 #: cps/web.py:835
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "Najpopularniejsze książki (najczęściej pobierane)" msgstr "Najpopularniejsze książki (najczęściej pobierane)"
#: cps/web.py:813 #: cps/web.py:845
msgid "Best rated books" msgid "Best rated books"
msgstr "Najlepiej oceniane książki" msgstr "Najlepiej oceniane książki"
#: cps/templates/index.xml:36 cps/web.py:822 #: cps/templates/index.xml:36 cps/web.py:854
msgid "Random Books" msgid "Random Books"
msgstr "Losowe książki" msgstr "Losowe książki"
#: cps/web.py:835 #: cps/web.py:867
msgid "Author list" msgid "Author list"
msgstr "Lista autorów" msgstr "Lista autorów"
#: cps/web.py:846 #: cps/web.py:878
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "Autor: %(name)s" msgstr "Autor: %(name)s"
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103 #: cps/web.py:880 cps/web.py:908 cps/web.py:1007 cps/web.py:1235
#: cps/web.py:2115
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:" msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:"
#: cps/templates/index.xml:57 cps/web.py:862 #: cps/templates/index.xml:57 cps/web.py:894
msgid "Series list" msgid "Series list"
msgstr "Lista serii" msgstr "Lista serii"
#: cps/web.py:874 #: cps/web.py:906
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "Serie: %(serie)s" msgstr "Serie: %(serie)s"
#: cps/web.py:907 #: cps/web.py:939
msgid "Available languages" msgid "Available languages"
msgstr "Dostępne języki" msgstr "Dostępne języki"
#: cps/web.py:922 #: cps/web.py:954
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "Język: %(name)s" msgstr "Język: %(name)s"
#: cps/templates/index.xml:50 cps/web.py:935 #: cps/templates/index.xml:50 cps/web.py:967
msgid "Category list" msgid "Category list"
msgstr "Lista kategorii" msgstr "Lista kategorii"
#: cps/web.py:947 #: cps/web.py:979
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "Kategoria: %(name)s" msgstr "Kategoria: %(name)s"
#: cps/web.py:1008 #: cps/web.py:1040
msgid "Statistics" msgid "Statistics"
msgstr "Statystyki" msgstr "Statystyki"
#: cps/web.py:1029 #: cps/web.py:1061
msgid "Performing Restart, please reload page" msgid "Server restarted, please reload page"
msgstr "Wykonano ponowne uruchomienie, proszę odświeżyć stronę" msgstr ""
#: cps/web.py:1031 #: cps/web.py:1063
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno" msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno"
#: cps/web.py:1055 #: cps/web.py:1073
msgid "Update done" msgid "Update done"
msgstr "Aktualizacja zakończona" msgstr "Aktualizacja zakończona"
#: cps/web.py:1128 cps/web.py:1141 #: cps/web.py:1147 cps/web.py:1160
msgid "search" msgid "search"
msgstr "szukaj" msgstr "szukaj"
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213 #: cps/web.py:1211 cps/web.py:1218 cps/web.py:1225 cps/web.py:1232
msgid "Read a Book" msgid "Read a Book"
msgstr "Czytaj książkę" msgstr "Czytaj książkę"
#: cps/web.py:1264 cps/web.py:1701 #: cps/web.py:1276 cps/web.py:1713
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "Proszę wypełnić wszystkie pola!" msgstr "Proszę wypełnić wszystkie pola!"
#: cps/web.py:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288 #: cps/web.py:1277 cps/web.py:1293 cps/web.py:1298 cps/web.py:1300
msgid "register" msgid "register"
msgstr "rejestracja" msgstr "rejestracja"
#: cps/web.py:1280 #: cps/web.py:1292
msgid "An unknown error occured. Please try again later." msgid "An unknown error occured. Please try again later."
msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później." msgstr "Wystąpił nieznany błąd. Spróbuj ponownie później."
#: cps/web.py:1285 #: cps/web.py:1297
msgid "This username or email address is already in use." msgid "This username or email address is already in use."
msgstr "Nazwa użytkownika lub adres e-mail jest już w użyciu." msgstr "Nazwa użytkownika lub adres e-mail jest już w użyciu."
#: cps/web.py:1303 #: cps/web.py:1315
#, python-format #, python-format
msgid "you are now logged in as: '%(nickname)s'" msgid "you are now logged in as: '%(nickname)s'"
msgstr "Zalogowałeś się jako: '%(nickname)s'" msgstr "Zalogowałeś się jako: '%(nickname)s'"
#: cps/web.py:1308 #: cps/web.py:1320
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "Błędna nazwa użytkownika lub hasło" msgstr "Błędna nazwa użytkownika lub hasło"
#: cps/web.py:1310 #: cps/web.py:1322
msgid "login" msgid "login"
msgstr "logowanie" msgstr "logowanie"
#: cps/web.py:1327 #: cps/web.py:1339
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..." msgstr "Proszę najpierw skonfigurować ustawienia SMTP poczty e-mail..."
#: cps/web.py:1331 #: cps/web.py:1343
#, python-format #, python-format
msgid "Book successfully send to %(kindlemail)s" msgid "Book successfully send to %(kindlemail)s"
msgstr "Książka została pomyślnie wysłana do %(kindlemail)s" msgstr "Książka została pomyślnie wysłana do %(kindlemail)s"
#: cps/web.py:1335 #: cps/web.py:1347
#, 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 "Wystąpił błąd podczas wysyłania tej książki: %(res)s" msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s"
#: cps/web.py:1337 #: cps/web.py:1349
msgid "Please configure your kindle email address first..." msgid "Please configure your kindle email address first..."
msgstr "Proszę najpierw skonfigurować adres e-mail swojego kindla..." msgstr "Proszę najpierw skonfigurować adres e-mail swojego kindla..."
#: cps/web.py:1357 #: cps/web.py:1369
#, python-format #, python-format
msgid "Book has been added to shelf: %(sname)s" msgid "Book has been added to shelf: %(sname)s"
msgstr "Książka została dodana do półki: %(sname)s" msgstr "Książka została dodana do półki: %(sname)s"
#: cps/web.py:1378 #: cps/web.py:1390
#, python-format #, python-format
msgid "Book has been removed from shelf: %(sname)s" msgid "Book has been removed from shelf: %(sname)s"
msgstr "Książka została usunięta z półki: %(sname)s" msgstr "Książka została usunięta z półki: %(sname)s"
#: cps/web.py:1397 cps/web.py:1421 #: cps/web.py:1409 cps/web.py:1433
#, 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 "Półka o nazwie '%(title)s' już istnieje." msgstr "Półka o nazwie '%(title)s' już istnieje."
#: cps/web.py:1402 #: cps/web.py:1414
#, python-format #, python-format
msgid "Shelf %(title)s created" msgid "Shelf %(title)s created"
msgstr "Półka %(title)s została utworzona" msgstr "Półka %(title)s została utworzona"
#: cps/web.py:1404 cps/web.py:1432 #: cps/web.py:1416 cps/web.py:1444
msgid "There was an error" msgid "There was an error"
msgstr "Wystąpił błąd" msgstr "Wystąpił błąd"
#: cps/web.py:1405 cps/web.py:1407 #: cps/web.py:1417 cps/web.py:1419
msgid "create a shelf" msgid "create a shelf"
msgstr "utwórz półkę" msgstr "utwórz półkę"
#: cps/web.py:1430 #: cps/web.py:1442
#, python-format #, python-format
msgid "Shelf %(title)s changed" msgid "Shelf %(title)s changed"
msgstr "Półka %(title)s została zmieniona" msgstr "Półka %(title)s została zmieniona"
#: cps/web.py:1433 cps/web.py:1435 #: cps/web.py:1445 cps/web.py:1447
msgid "Edit a shelf" msgid "Edit a shelf"
msgstr "Edytuj półkę" msgstr "Edytuj półkę"
#: cps/web.py:1453 #: cps/web.py:1465
#, python-format #, python-format
msgid "successfully deleted shelf %(name)s" msgid "successfully deleted shelf %(name)s"
msgstr "pomyślnie usunięto półkę %(name)s" msgstr "pomyślnie usunięto półkę %(name)s"
#: cps/web.py:1475 #: cps/web.py:1487
#, python-format #, python-format
msgid "Shelf: '%(name)s'" msgid "Shelf: '%(name)s'"
msgstr "Półka: '%(name)s'" msgstr "Półka: '%(name)s'"
#: cps/web.py:1506 #: cps/web.py:1518
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "Zmieniono kolejność półki: '%(name)s'" msgstr "Zmieniono kolejność półki: '%(name)s'"
#: cps/web.py:1568 #: cps/web.py:1580
msgid "Found an existing account for this email address." msgid "Found an existing account for this email address."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail." msgstr "Znaleziono istniejące konto dla tego adresu e-mail."
#: cps/web.py:1570 cps/web.py:1574 #: cps/web.py:1582 cps/web.py:1586
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "Profil użytkownika %(name)s" msgstr "Profil użytkownika %(name)s"
#: cps/web.py:1571 #: cps/web.py:1583
msgid "Profile updated" msgid "Profile updated"
msgstr "Zaktualizowano profil" msgstr "Zaktualizowano profil"
#: cps/web.py:1584 #: cps/web.py:1597
msgid "Admin page" msgid "Admin page"
msgstr "Portal administracyjny" msgstr "Portal administracyjny"
#: cps/web.py:1656 #: cps/web.py:1668
msgid "Calibre-web configuration updated" msgid "Calibre-web configuration updated"
msgstr "Konfiguracja Calibre-web została zaktualizowana" msgstr "Konfiguracja Calibre-web została zaktualizowana"
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682 #: cps/web.py:1675 cps/web.py:1681 cps/web.py:1694
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "Podstawowa konfiguracja" msgstr "Podstawowa konfiguracja"
#: cps/web.py:1667 #: cps/web.py:1679
msgid "DB location is not valid, please enter correct path" msgid "DB location is not valid, please enter correct path"
msgstr "Lokalizacja bazy danych nie jest prawidłowa, wpisz poprawną ścieżkę" msgstr "Lokalizacja bazy danych nie jest prawidłowa, wpisz poprawną ścieżkę"
#: cps/templates/admin.html:33 cps/web.py:1703 cps/web.py:1749 #: cps/templates/admin.html:34 cps/web.py:1715 cps/web.py:1761
msgid "Add new user" msgid "Add new user"
msgstr "Dodaj nowego użytkownika" msgstr "Dodaj nowego użytkownika"
#: cps/web.py:1741 #: cps/web.py:1753
#, python-format #, python-format
msgid "User '%(user)s' created" msgid "User '%(user)s' created"
msgstr "Użytkownik '%(user)s' został utworzony" msgstr "Użytkownik '%(user)s' został utworzony"
#: cps/web.py:1745 #: cps/web.py:1757
msgid "Found an existing account for this email address or nickname." msgid "Found an existing account for this email address or nickname."
msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub nazwy użytkownika." msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub nazwy użytkownika."
#: cps/web.py:1767 #: cps/web.py:1779
msgid "Mail settings updated" msgid "Mail settings updated"
msgstr "Zaktualizowano ustawienia poczty e-mail" msgstr "Zaktualizowano ustawienia poczty e-mail"
#: cps/web.py:1773 #: cps/web.py:1785
#, python-format #, python-format
msgid "Test E-Mail successfully send to %(kindlemail)s" msgid "Test E-Mail successfully send to %(kindlemail)s"
msgstr "Testowy e-mail pomyślnie wysłany do %(kindlemail)s" msgstr "Testowy e-mail pomyślnie wysłany do %(kindlemail)s"
#: cps/web.py:1776 #: cps/web.py:1788
#, 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 "Wystąpił błąd podczas wysyłania testowej wiadomości e-mail: %(res)s" msgstr "Wystąpił błąd podczas wysyłania testowej wiadomości e-mail: %(res)s"
#: cps/web.py:1777 #: cps/web.py:1789
msgid "Edit mail settings" msgid "Edit mail settings"
msgstr "Edytuj ustawienia poczty e-mail" msgstr "Edytuj ustawienia poczty e-mail"
#: cps/web.py:1805 #: cps/web.py:1817
#, python-format #, python-format
msgid "User '%(nick)s' deleted" msgid "User '%(nick)s' deleted"
msgstr "Użytkownik '%(nick)s' został usunięty" msgstr "Użytkownik '%(nick)s' został usunięty"
#: cps/web.py:1886 #: cps/web.py:1898
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "Użytkownik '%(nick)s' został zaktualizowany" msgstr "Użytkownik '%(nick)s' został zaktualizowany"
#: cps/web.py:1889 #: cps/web.py:1901
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "Wystąpił nieznany błąd." msgstr "Wystąpił nieznany błąd."
#: cps/web.py:1892 #: cps/web.py:1904
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "Edytuj użytkownika %(nick)s" msgstr "Edytuj użytkownika %(nick)s"
#: cps/web.py:2098 cps/web.py:2101 cps/web.py:2175 #: cps/web.py:2110 cps/web.py:2113 cps/web.py:2188
msgid "edit metadata" msgid "edit metadata"
msgstr "edytuj metadane" msgstr "edytuj metadane"
#: cps/web.py:2133 #: cps/web.py:2145
#, python-format #, python-format
msgid "Failed to create path %s (Permission denied)." msgid "Failed to create path %s (Permission denied)."
msgstr "Nie udało się utworzyć łącza %s (Odmowa dostępu)." msgstr "Nie udało się utworzyć łącza %s (Odmowa dostępu)."
#: cps/web.py:2138 #: cps/web.py:2150
#, python-format #, python-format
msgid "Failed to store file %s (Permission denied)." msgid "Failed to store file %s (Permission denied)."
msgstr "Nie można przechowywać pliku %s (Odmowa dostępu)." msgstr "Nie można przechowywać pliku %s (Odmowa dostępu)."
#: cps/web.py:2143 #: cps/web.py:2155
#, python-format #, python-format
msgid "Failed to delete file %s (Permission denied)." msgid "Failed to delete file %s (Permission denied)."
msgstr "Nie udało się usunąć pliku %s (Odmowa dostępu)." msgstr "Nie udało się usunąć pliku %s (Odmowa dostępu)."
@ -340,145 +365,158 @@ msgstr "Nie udało się usunąć pliku %s (Odmowa dostępu)."
msgid "User list" msgid "User list"
msgstr "Lista użytkowników" msgstr "Lista użytkowników"
#: cps/templates/admin.html:7 #: cps/templates/admin.html:8
msgid "Nickname" msgid "Nickname"
msgstr "Nazwa użytkownika" msgstr "Nazwa użytkownika"
#: cps/templates/admin.html:8 #: cps/templates/admin.html:9
msgid "Email" msgid "Email"
msgstr "Email" msgstr "Email"
#: cps/templates/admin.html:9 #: cps/templates/admin.html:10
msgid "Kindle" msgid "Kindle"
msgstr "Kindle" msgstr "Kindle"
#: cps/templates/admin.html:10 #: cps/templates/admin.html:11
msgid "DLS" msgid "DLS"
msgstr "DLS" msgstr "DLS"
#: cps/templates/admin.html:11 cps/templates/layout.html:83 #: cps/templates/admin.html:12 cps/templates/layout.html:85
msgid "Admin" msgid "Admin"
msgstr "Portal administracyjny" msgstr "Portal administracyjny"
#: cps/templates/admin.html:12 cps/templates/detail.html:117 #: cps/templates/admin.html:13 cps/templates/detail.html:117
msgid "Download" msgid "Download"
msgstr "Pobierz" msgstr "Pobierz"
#: cps/templates/admin.html:13 cps/templates/layout.html:76 #: cps/templates/admin.html:14 cps/templates/layout.html:78
msgid "Upload" msgid "Upload"
msgstr "Wyślij" msgstr "Wyślij"
#: cps/templates/admin.html:14 #: cps/templates/admin.html:15
msgid "Edit" msgid "Edit"
msgstr "Edycja" msgstr "Edycja"
#: cps/templates/admin.html:15 #: cps/templates/admin.html:16
msgid "Passwd" msgid "Passwd"
msgstr "Zmiana hasła" msgstr "Zmiana hasła"
#: cps/templates/admin.html:34 #: cps/templates/admin.html:35
msgid "SMTP mail settings" msgid "SMTP mail settings"
msgstr "Ustawienia poczty SMTP" msgstr "Ustawienia poczty SMTP"
#: cps/templates/admin.html:37 cps/templates/email_edit.html:7 #: cps/templates/admin.html:38 cps/templates/email_edit.html:7
msgid "SMTP hostname" msgid "SMTP hostname"
msgstr "Adres serwera SMTP" msgstr "Adres serwera SMTP"
#: cps/templates/admin.html:38 #: cps/templates/admin.html:39
msgid "SMTP port" msgid "SMTP port"
msgstr "Port serwera SMTP" msgstr "Port serwera SMTP"
#: cps/templates/admin.html:39 #: cps/templates/admin.html:40
msgid "SSL" msgid "SSL"
msgstr "SSL" msgstr "SSL"
#: cps/templates/admin.html:40 cps/templates/email_edit.html:23 #: cps/templates/admin.html:41 cps/templates/email_edit.html:23
msgid "SMTP login" msgid "SMTP login"
msgstr "Nazwa użytkownika SMTP" msgstr "Nazwa użytkownika SMTP"
#: cps/templates/admin.html:41 cps/templates/email_edit.html:27 #: cps/templates/admin.html:42 cps/templates/email_edit.html:27
msgid "SMTP password" msgid "SMTP password"
msgstr "Hasło SMTP" msgstr "Hasło SMTP"
#: cps/templates/admin.html:42 #: cps/templates/admin.html:43
msgid "From mail" msgid "From mail"
msgstr "Wyślij z adresu e-mail" msgstr "Wyślij z adresu e-mail"
#: cps/templates/admin.html:54 #: cps/templates/admin.html:55
msgid "Change SMTP settings" msgid "Change SMTP settings"
msgstr "Zmień ustawienia SMTP" msgstr "Zmień ustawienia SMTP"
#: cps/templates/admin.html:56 cps/templates/admin.html:76 #: cps/templates/admin.html:57 cps/templates/admin.html:77
msgid "Configuration" msgid "Configuration"
msgstr "Konfiguracja" msgstr "Konfiguracja"
#: cps/templates/admin.html:59 #: cps/templates/admin.html:60
msgid "Calibre DB dir" msgid "Calibre DB dir"
msgstr "Folder bazy danych Calibre" msgstr "Folder bazy danych Calibre"
#: cps/templates/admin.html:60 cps/templates/config_edit.html:32 #: cps/templates/admin.html:61 cps/templates/config_edit.html:32
msgid "Log Level" msgid "Log Level"
msgstr "Poziom logów" msgstr "Poziom logów"
#: cps/templates/admin.html:61 #: cps/templates/admin.html:62
msgid "Port" msgid "Port"
msgstr "Port" msgstr "Port"
#: cps/templates/admin.html:62 cps/templates/config_edit.html:19 #: cps/templates/admin.html:63 cps/templates/config_edit.html:19
msgid "Books per page" msgid "Books per page"
msgstr "Ilość książek na stronie" msgstr "Ilość książek na stronie"
#: cps/templates/admin.html:63 #: cps/templates/admin.html:64
msgid "Uploading" msgid "Uploading"
msgstr "Wysyłanie" msgstr "Wysyłanie"
#: cps/templates/admin.html:64 #: cps/templates/admin.html:65
msgid "Public registration" msgid "Public registration"
msgstr "Publiczna rejestracja" msgstr "Publiczna rejestracja"
#: cps/templates/admin.html:65 #: cps/templates/admin.html:66
msgid "Anonymous browsing" msgid "Anonymous browsing"
msgstr "Anonimowe przeglądanie" msgstr "Anonimowe przeglądanie"
#: cps/templates/admin.html:77 #: cps/templates/admin.html:78
msgid "Administration" msgid "Administration"
msgstr "Zarządzanie" msgstr "Zarządzanie"
#: cps/templates/admin.html:79 #: cps/templates/admin.html:80
msgid "Current commit timestamp"
msgstr ""
#: cps/templates/admin.html:81
msgid "Newest commit timestamp"
msgstr ""
#: cps/templates/admin.html:83
msgid "Restart Calibre-web" msgid "Restart Calibre-web"
msgstr "Uruchom ponownie Calibre-web" msgstr "Uruchom ponownie Calibre-web"
#: cps/templates/admin.html:80 #: cps/templates/admin.html:84
msgid "Stop Calibre-web" msgid "Stop Calibre-web"
msgstr "Zatrzymaj Calibre-web" msgstr "Zatrzymaj Calibre-web"
#: cps/templates/admin.html:81 #: cps/templates/admin.html:85
msgid "Check for update" msgid "Check for update"
msgstr "Sprawdź aktualizacje" msgstr "Sprawdź aktualizacje"
#: cps/templates/admin.html:82 #: cps/templates/admin.html:86
msgid "Perform Update" msgid "Perform Update"
msgstr "Wykonaj aktualizację" msgstr "Wykonaj aktualizację"
#: cps/templates/admin.html:93 #: cps/templates/admin.html:96
msgid "Do you really want to restart Calibre-web?" msgid "Do you really want to restart Calibre-web?"
msgstr "Na pewno chcesz uruchomić ponownie Calibre-web?" msgstr "Na pewno chcesz uruchomić ponownie Calibre-web?"
#: cps/templates/admin.html:94 cps/templates/admin.html:109 #: cps/templates/admin.html:101 cps/templates/admin.html:115
#: cps/templates/admin.html:136
msgid "Ok" msgid "Ok"
msgstr "Ok" msgstr "Ok"
#: cps/templates/admin.html:95 cps/templates/admin.html:110 #: cps/templates/admin.html:102 cps/templates/admin.html:116
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75 #: 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:111 #: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back" msgid "Back"
msgstr "Wróć" msgstr "Wróć"
#: cps/templates/admin.html:108 #: cps/templates/admin.html:114
msgid "Do you really want to stop Calibre-web?" msgid "Do you really want to stop Calibre-web?"
msgstr "Na pewno chcesz zatrzymać Calibre-web?" msgstr "Na pewno chcesz zatrzymać Calibre-web?"
#: cps/templates/admin.html:127
msgid "Updating, please do not reload page"
msgstr ""
#: 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"
msgstr "Tytuł książki" msgstr "Tytuł książki"
@ -495,7 +533,7 @@ msgstr "Opis"
msgid "Tags" msgid "Tags"
msgstr "Tagi" msgstr "Tagi"
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136 #: cps/templates/book_edit.html:33 cps/templates/layout.html:138
#: cps/templates/search_form.html:33 #: cps/templates/search_form.html:33
msgid "Series" msgid "Series"
msgstr "Serie" msgstr "Serie"
@ -590,7 +628,7 @@ msgstr "Zezwalaj na edycję"
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "Zezwalaj na zmianę hasła" msgstr "Zezwalaj na zmianę hasła"
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91 #: cps/templates/config_edit.html:78 cps/templates/layout.html:93
#: cps/templates/login.html:4 #: cps/templates/login.html:4
msgid "Login" msgid "Login"
msgstr "Zaloguj się" msgstr "Zaloguj się"
@ -673,11 +711,11 @@ msgstr "Odkrywaj (losowe książki)"
msgid "Start" msgid "Start"
msgstr "Rozpocznij" msgstr "Rozpocznij"
#: cps/templates/index.xml:7 cps/templates/layout.html:61 #: cps/templates/index.xml:7 cps/templates/layout.html:58
msgid "Search" msgid "Search"
msgstr "Szukaj" msgstr "Szukaj"
#: cps/templates/index.xml:15 cps/templates/layout.html:124 #: cps/templates/index.xml:15 cps/templates/layout.html:126
msgid "Hot Books" msgid "Hot Books"
msgstr "Najpopularniejsze książki" msgstr "Najpopularniejsze książki"
@ -685,7 +723,7 @@ msgstr "Najpopularniejsze książki"
msgid "Popular publications from this catalog based on Downloads." msgid "Popular publications from this catalog based on Downloads."
msgstr "Popularne publikacje z tego katalogu bazujące na pobieraniach." msgstr "Popularne publikacje z tego katalogu bazujące na pobieraniach."
#: cps/templates/index.xml:22 cps/templates/layout.html:127 #: cps/templates/index.xml:22 cps/templates/layout.html:129
msgid "Best rated Books" msgid "Best rated Books"
msgstr "Najlepiej ocenione książki" msgstr "Najlepiej ocenione książki"
@ -693,7 +731,7 @@ msgstr "Najlepiej ocenione książki"
msgid "Popular publications from this catalog based on Rating." msgid "Popular publications from this catalog based on Rating."
msgstr "Popularne publikacje z tego katalogu bazujące na ocenach." msgstr "Popularne publikacje z tego katalogu bazujące na ocenach."
#: cps/templates/index.xml:29 cps/templates/layout.html:122 #: cps/templates/index.xml:29 cps/templates/layout.html:124
msgid "New Books" msgid "New Books"
msgstr "Nowe książki" msgstr "Nowe książki"
@ -705,7 +743,7 @@ msgstr "Ostatnie książki"
msgid "Show Random Books" msgid "Show Random Books"
msgstr "Pokazuj losowe książki" msgstr "Pokazuj losowe książki"
#: cps/templates/index.xml:43 cps/templates/layout.html:138 #: cps/templates/index.xml:43 cps/templates/layout.html:140
msgid "Authors" msgid "Authors"
msgstr "Autorzy" msgstr "Autorzy"
@ -725,51 +763,51 @@ msgstr "Książki sortowane według serii"
msgid "Toggle navigation" msgid "Toggle navigation"
msgstr "Przełącz nawigację" msgstr "Przełącz nawigację"
#: cps/templates/layout.html:63 #: cps/templates/layout.html:60
msgid "Go!" msgid "Go!"
msgstr "Idź!" msgstr "Idź!"
#: cps/templates/layout.html:66 #: cps/templates/layout.html:68
msgid "Advanced Search" msgid "Advanced Search"
msgstr "Zaawansowane wyszukiwanie" msgstr "Zaawansowane wyszukiwanie"
#: cps/templates/layout.html:87 #: cps/templates/layout.html:89
msgid "Logout" msgid "Logout"
msgstr "Wyloguj się" msgstr "Wyloguj się"
#: cps/templates/layout.html:92 cps/templates/register.html:18 #: cps/templates/layout.html:94 cps/templates/register.html:18
msgid "Register" msgid "Register"
msgstr "Zarejestruj się" msgstr "Zarejestruj się"
#: cps/templates/layout.html:121 #: cps/templates/layout.html:123
msgid "Browse" msgid "Browse"
msgstr "Przeglądaj" msgstr "Przeglądaj"
#: cps/templates/layout.html:130 #: cps/templates/layout.html:132
msgid "Discover" msgid "Discover"
msgstr "Odkrywaj" msgstr "Odkrywaj"
#: cps/templates/layout.html:133 #: cps/templates/layout.html:135
msgid "Categories" msgid "Categories"
msgstr "Kategorie" msgstr "Kategorie"
#: cps/templates/layout.html:140 cps/templates/search_form.html:54 #: cps/templates/layout.html:142 cps/templates/search_form.html:54
msgid "Languages" msgid "Languages"
msgstr "Języki" msgstr "Języki"
#: cps/templates/layout.html:143 #: cps/templates/layout.html:145
msgid "Public Shelves" msgid "Public Shelves"
msgstr "Publiczne półki" msgstr "Publiczne półki"
#: cps/templates/layout.html:147 #: cps/templates/layout.html:149
msgid "Your Shelves" msgid "Your Shelves"
msgstr "Twoje półki" msgstr "Twoje półki"
#: cps/templates/layout.html:152 #: cps/templates/layout.html:154
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "Utwórz półkę" msgstr "Utwórz półkę"
#: cps/templates/layout.html:153 #: cps/templates/layout.html:155
msgid "About" msgid "About"
msgstr "O programie" msgstr "O programie"
@ -788,7 +826,7 @@ msgid "Remember me"
msgstr "Zapamiętaj mnie" msgstr "Zapamiętaj mnie"
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog" msgid "Calibre Web ebook catalog"
msgstr "" msgstr ""
#: cps/templates/read.html:136 #: cps/templates/read.html:136

View File

@ -15,7 +15,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-02-10 20:17+0100\n" "POT-Creation-Date: 2017-02-20 19:47+0100\n"
"PO-Revision-Date: 2017-01-06 17:00+0000\n" "PO-Revision-Date: 2017-01-06 17:00+0000\n"
"Last-Translator: dalin <dalin.lin@gmail.com>\n" "Last-Translator: dalin <dalin.lin@gmail.com>\n"
"Language: zh_Hans_CN\n" "Language: zh_Hans_CN\n"
@ -26,316 +26,341 @@ 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:111 cps/book_formats.py:115 cps/web.py:998 #: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:1030
msgid "not installed" msgid "not installed"
msgstr "未安装" msgstr "未安装"
#: cps/helper.py:136 #: cps/helper.py:150
#, python-format #, python-format
msgid "Failed to send mail: %s" msgid "Failed to send mail: %s"
msgstr "发送邮件失败: %s" msgstr "发送邮件失败: %s"
#: cps/helper.py:143 #: cps/helper.py:157
msgid "Calibre-web test email" msgid "Calibre-web test email"
msgstr "Calibre-web 测试邮件" msgstr "Calibre-web 测试邮件"
#: cps/helper.py:144 cps/helper.py:154 #: cps/helper.py:158 cps/helper.py:168
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:130 #: cps/helper.py:167 cps/templates/detail.html:130
msgid "Send to Kindle" msgid "Send to Kindle"
msgstr "发送到Kindle" msgstr "发送到Kindle"
#: cps/helper.py:171 cps/helper.py:186 #: cps/helper.py:185 cps/helper.py:200
msgid "Could not find any formats suitable for sending by email" msgid "Could not find any formats suitable for sending by email"
msgstr "无法找到适合邮件发送的格式" msgstr "无法找到适合邮件发送的格式"
#: cps/helper.py:180 #: cps/helper.py:194
msgid "Could not convert epub to mobi" msgid "Could not convert epub to mobi"
msgstr "无法转换epub到mobi" msgstr "无法转换epub到mobi"
#: cps/helper.py:206 #: cps/ub.py:434
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr "无法读取所请求的文件。可能是错误权限不对?"
#: cps/ub.py:443
msgid "Guest" msgid "Guest"
msgstr "游客" msgstr "游客"
#: cps/web.py:778 #: cps/web.py:734
msgid "Requesting update package"
msgstr ""
#: cps/web.py:735
msgid "Downloading update package"
msgstr ""
#: cps/web.py:736
msgid "Unzipping update package"
msgstr ""
#: cps/web.py:737
msgid "Files are replaced"
msgstr ""
#: cps/web.py:738
msgid "Database connections are closed"
msgstr ""
#: cps/web.py:739
msgid "Server is stopped"
msgstr ""
#: cps/web.py:740
msgid "Update finished, please press okay and reload page"
msgstr ""
#: cps/web.py:810
msgid "Latest Books" msgid "Latest Books"
msgstr "最新书籍" msgstr "最新书籍"
#: cps/web.py:803 #: cps/web.py:835
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "热门书籍(最多下载)" msgstr "热门书籍(最多下载)"
#: cps/web.py:813 #: cps/web.py:845
msgid "Best rated books" msgid "Best rated books"
msgstr "" msgstr ""
#: cps/templates/index.xml:36 cps/web.py:822 #: cps/templates/index.xml:36 cps/web.py:854
msgid "Random Books" msgid "Random Books"
msgstr "随机书籍" msgstr "随机书籍"
#: cps/web.py:835 #: cps/web.py:867
msgid "Author list" msgid "Author list"
msgstr "作者列表" msgstr "作者列表"
#: cps/web.py:846 #: cps/web.py:878
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103 #: cps/web.py:880 cps/web.py:908 cps/web.py:1007 cps/web.py:1235
#: cps/web.py:2115
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "无法打开电子书。 文件不存在或者文件不可访问:" msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
#: cps/templates/index.xml:57 cps/web.py:862 #: cps/templates/index.xml:57 cps/web.py:894
msgid "Series list" msgid "Series list"
msgstr "丛书列表" msgstr "丛书列表"
#: cps/web.py:874 #: cps/web.py:906
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "丛书: %(serie)s" msgstr "丛书: %(serie)s"
#: cps/web.py:907 #: cps/web.py:939
msgid "Available languages" msgid "Available languages"
msgstr "可用语言" msgstr "可用语言"
#: cps/web.py:922 #: cps/web.py:954
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "语言: %(name)s" msgstr "语言: %(name)s"
#: cps/templates/index.xml:50 cps/web.py:935 #: cps/templates/index.xml:50 cps/web.py:967
msgid "Category list" msgid "Category list"
msgstr "分类列表" msgstr "分类列表"
#: cps/web.py:947 #: cps/web.py:979
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "分类: %(name)s" msgstr "分类: %(name)s"
#: cps/web.py:1008 #: cps/web.py:1040
msgid "Statistics" msgid "Statistics"
msgstr "统计" msgstr "统计"
#: cps/web.py:1029 #: cps/web.py:1061
msgid "Performing Restart, please reload page" msgid "Server restarted, please reload page"
msgstr "正在重启,请刷新页面" msgstr ""
#: cps/web.py:1031 #: cps/web.py:1063
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "正在关闭服务器,请关闭窗口" msgstr "正在关闭服务器,请关闭窗口"
#: cps/web.py:1055 #: cps/web.py:1073
msgid "Update done" msgid "Update done"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1141 #: cps/web.py:1147 cps/web.py:1160
msgid "search" msgid "search"
msgstr "搜索" msgstr "搜索"
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213 #: cps/web.py:1211 cps/web.py:1218 cps/web.py:1225 cps/web.py:1232
msgid "Read a Book" msgid "Read a Book"
msgstr "阅读一本书" msgstr "阅读一本书"
#: cps/web.py:1264 cps/web.py:1701 #: cps/web.py:1276 cps/web.py:1713
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "请填写所有字段" msgstr "请填写所有字段"
#: cps/web.py:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288 #: cps/web.py:1277 cps/web.py:1293 cps/web.py:1298 cps/web.py:1300
msgid "register" msgid "register"
msgstr "注册" msgstr "注册"
#: cps/web.py:1280 #: cps/web.py:1292
msgid "An unknown error occured. Please try again later." msgid "An unknown error occured. Please try again later."
msgstr "发生一个未知错误。请稍后再试。" msgstr "发生一个未知错误。请稍后再试。"
#: cps/web.py:1285 #: cps/web.py:1297
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:1303 #: cps/web.py:1315
#, 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:1308 #: cps/web.py:1320
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "用户名或密码错误" msgstr "用户名或密码错误"
#: cps/web.py:1310 #: cps/web.py:1322
msgid "login" msgid "login"
msgstr "登录" msgstr "登录"
#: cps/web.py:1327 #: cps/web.py:1339
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "请先配置SMTP邮箱..." msgstr "请先配置SMTP邮箱..."
#: cps/web.py:1331 #: cps/web.py:1343
#, 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:1335 #: cps/web.py:1347
#, 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:1337 #: cps/web.py:1349
msgid "Please configure your kindle email address first..." msgid "Please configure your kindle email address first..."
msgstr "请先配置您的kindle电子邮箱地址..." msgstr "请先配置您的kindle电子邮箱地址..."
#: cps/web.py:1357 #: cps/web.py:1369
#, 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:1378 #: cps/web.py:1390
#, 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:1397 cps/web.py:1421 #: cps/web.py:1409 cps/web.py:1433
#, 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:1402 #: cps/web.py:1414
#, python-format #, python-format
msgid "Shelf %(title)s created" msgid "Shelf %(title)s created"
msgstr "书架 %(title)s 已被创建" msgstr "书架 %(title)s 已被创建"
#: cps/web.py:1404 cps/web.py:1432 #: cps/web.py:1416 cps/web.py:1444
msgid "There was an error" msgid "There was an error"
msgstr "发生错误" msgstr "发生错误"
#: cps/web.py:1405 cps/web.py:1407 #: cps/web.py:1417 cps/web.py:1419
msgid "create a shelf" msgid "create a shelf"
msgstr "创建书架" msgstr "创建书架"
#: cps/web.py:1430 #: cps/web.py:1442
#, python-format #, python-format
msgid "Shelf %(title)s changed" msgid "Shelf %(title)s changed"
msgstr "书架 %(title)s 已被修改" msgstr "书架 %(title)s 已被修改"
#: cps/web.py:1433 cps/web.py:1435 #: cps/web.py:1445 cps/web.py:1447
msgid "Edit a shelf" msgid "Edit a shelf"
msgstr "编辑书架" msgstr "编辑书架"
#: cps/web.py:1453 #: cps/web.py:1465
#, 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:1475 #: cps/web.py:1487
#, python-format #, python-format
msgid "Shelf: '%(name)s'" msgid "Shelf: '%(name)s'"
msgstr "书架: '%(name)s'" msgstr "书架: '%(name)s'"
#: cps/web.py:1506 #: cps/web.py:1518
#, 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:1568 #: cps/web.py:1580
msgid "Found an existing account for this email address." msgid "Found an existing account for this email address."
msgstr "找到已使用此邮箱的账号。" msgstr "找到已使用此邮箱的账号。"
#: cps/web.py:1570 cps/web.py:1574 #: cps/web.py:1582 cps/web.py:1586
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "%(name)s 的资料" msgstr "%(name)s 的资料"
#: cps/web.py:1571 #: cps/web.py:1583
msgid "Profile updated" msgid "Profile updated"
msgstr "资料已更新" msgstr "资料已更新"
#: cps/web.py:1584 #: cps/web.py:1597
msgid "Admin page" msgid "Admin page"
msgstr "管理页" msgstr "管理页"
#: cps/web.py:1656 #: cps/web.py:1668
msgid "Calibre-web configuration updated" msgid "Calibre-web configuration updated"
msgstr "Calibre-web配置已更新" msgstr "Calibre-web配置已更新"
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682 #: cps/web.py:1675 cps/web.py:1681 cps/web.py:1694
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "基本配置" msgstr "基本配置"
#: cps/web.py:1667 #: cps/web.py:1679
msgid "DB location is not valid, please enter correct path" msgid "DB location is not valid, please enter correct path"
msgstr "DB位置无效请输入正确路径" msgstr "DB位置无效请输入正确路径"
#: cps/templates/admin.html:33 cps/web.py:1703 cps/web.py:1749 #: cps/templates/admin.html:34 cps/web.py:1715 cps/web.py:1761
msgid "Add new user" msgid "Add new user"
msgstr "添加新用户" msgstr "添加新用户"
#: cps/web.py:1741 #: cps/web.py:1753
#, python-format #, python-format
msgid "User '%(user)s' created" msgid "User '%(user)s' created"
msgstr "用户 '%(user)s' 已被创建" msgstr "用户 '%(user)s' 已被创建"
#: cps/web.py:1745 #: cps/web.py:1757
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:1767 #: cps/web.py:1779
msgid "Mail settings updated" msgid "Mail settings updated"
msgstr "邮箱设置已更新" msgstr "邮箱设置已更新"
#: cps/web.py:1773 #: cps/web.py:1785
#, 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:1776 #: cps/web.py:1788
#, 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:1777 #: cps/web.py:1789
msgid "Edit mail settings" msgid "Edit mail settings"
msgstr "编辑邮箱设置" msgstr "编辑邮箱设置"
#: cps/web.py:1805 #: cps/web.py:1817
#, python-format #, python-format
msgid "User '%(nick)s' deleted" msgid "User '%(nick)s' deleted"
msgstr "用户 '%(nick)s' 已被删除" msgstr "用户 '%(nick)s' 已被删除"
#: cps/web.py:1886 #: cps/web.py:1898
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "用户 '%(nick)s' 已被更新" msgstr "用户 '%(nick)s' 已被更新"
#: cps/web.py:1889 #: cps/web.py:1901
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "发生未知错误。" msgstr "发生未知错误。"
#: cps/web.py:1892 #: cps/web.py:1904
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "编辑用户 %(nick)s" msgstr "编辑用户 %(nick)s"
#: cps/web.py:2098 cps/web.py:2101 cps/web.py:2175 #: cps/web.py:2110 cps/web.py:2113 cps/web.py:2188
msgid "edit metadata" msgid "edit metadata"
msgstr "编辑元数据" msgstr "编辑元数据"
#: cps/web.py:2133 #: cps/web.py:2145
#, 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:2138 #: cps/web.py:2150
#, 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:2143 #: cps/web.py:2155
#, python-format #, python-format
msgid "Failed to delete file %s (Permission denied)." msgid "Failed to delete file %s (Permission denied)."
msgstr "删除文件 %s 失败(权限拒绝)。" msgstr "删除文件 %s 失败(权限拒绝)。"
@ -344,145 +369,158 @@ msgstr "删除文件 %s 失败(权限拒绝)。"
msgid "User list" msgid "User list"
msgstr "用户列表" msgstr "用户列表"
#: cps/templates/admin.html:7 #: cps/templates/admin.html:8
msgid "Nickname" msgid "Nickname"
msgstr "昵称" msgstr "昵称"
#: cps/templates/admin.html:8 #: cps/templates/admin.html:9
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: cps/templates/admin.html:9 #: cps/templates/admin.html:10
msgid "Kindle" msgid "Kindle"
msgstr "" msgstr ""
#: cps/templates/admin.html:10 #: cps/templates/admin.html:11
msgid "DLS" msgid "DLS"
msgstr "" msgstr ""
#: cps/templates/admin.html:11 cps/templates/layout.html:83 #: cps/templates/admin.html:12 cps/templates/layout.html:85
msgid "Admin" msgid "Admin"
msgstr "管理" msgstr "管理"
#: cps/templates/admin.html:12 cps/templates/detail.html:117 #: cps/templates/admin.html:13 cps/templates/detail.html:117
msgid "Download" msgid "Download"
msgstr "下载" msgstr "下载"
#: cps/templates/admin.html:13 cps/templates/layout.html:76 #: cps/templates/admin.html:14 cps/templates/layout.html:78
msgid "Upload" msgid "Upload"
msgstr "上传" msgstr "上传"
#: cps/templates/admin.html:14 #: cps/templates/admin.html:15
msgid "Edit" msgid "Edit"
msgstr "编辑" msgstr "编辑"
#: cps/templates/admin.html:15 #: cps/templates/admin.html:16
msgid "Passwd" msgid "Passwd"
msgstr "修改密码" msgstr "修改密码"
#: cps/templates/admin.html:34 #: cps/templates/admin.html:35
msgid "SMTP mail settings" msgid "SMTP mail settings"
msgstr "SMTP设置" msgstr "SMTP设置"
#: cps/templates/admin.html:37 cps/templates/email_edit.html:7 #: cps/templates/admin.html:38 cps/templates/email_edit.html:7
msgid "SMTP hostname" msgid "SMTP hostname"
msgstr "SMTP地址" msgstr "SMTP地址"
#: cps/templates/admin.html:38 #: cps/templates/admin.html:39
msgid "SMTP port" msgid "SMTP port"
msgstr "SMTP端口" msgstr "SMTP端口"
#: cps/templates/admin.html:39 #: cps/templates/admin.html:40
msgid "SSL" msgid "SSL"
msgstr "" msgstr ""
#: cps/templates/admin.html:40 cps/templates/email_edit.html:23 #: cps/templates/admin.html:41 cps/templates/email_edit.html:23
msgid "SMTP login" msgid "SMTP login"
msgstr "SMTP用户名" msgstr "SMTP用户名"
#: cps/templates/admin.html:41 cps/templates/email_edit.html:27 #: cps/templates/admin.html:42 cps/templates/email_edit.html:27
msgid "SMTP password" msgid "SMTP password"
msgstr "SMTP密码" msgstr "SMTP密码"
#: cps/templates/admin.html:42 #: cps/templates/admin.html:43
msgid "From mail" msgid "From mail"
msgstr "来自邮箱" msgstr "来自邮箱"
#: cps/templates/admin.html:54 #: cps/templates/admin.html:55
msgid "Change SMTP settings" msgid "Change SMTP settings"
msgstr "修改SMTP设置" msgstr "修改SMTP设置"
#: cps/templates/admin.html:56 cps/templates/admin.html:76 #: cps/templates/admin.html:57 cps/templates/admin.html:77
msgid "Configuration" msgid "Configuration"
msgstr "配置" msgstr "配置"
#: cps/templates/admin.html:59 #: cps/templates/admin.html:60
msgid "Calibre DB dir" msgid "Calibre DB dir"
msgstr "Calibre DB目录" msgstr "Calibre DB目录"
#: cps/templates/admin.html:60 cps/templates/config_edit.html:32 #: cps/templates/admin.html:61 cps/templates/config_edit.html:32
msgid "Log Level" msgid "Log Level"
msgstr "日志级别" msgstr "日志级别"
#: cps/templates/admin.html:61 #: cps/templates/admin.html:62
msgid "Port" msgid "Port"
msgstr "端口" msgstr "端口"
#: cps/templates/admin.html:62 cps/templates/config_edit.html:19 #: cps/templates/admin.html:63 cps/templates/config_edit.html:19
msgid "Books per page" msgid "Books per page"
msgstr "每页书籍数" msgstr "每页书籍数"
#: cps/templates/admin.html:63 #: cps/templates/admin.html:64
msgid "Uploading" msgid "Uploading"
msgstr "上传" msgstr "上传"
#: cps/templates/admin.html:64 #: cps/templates/admin.html:65
msgid "Public registration" msgid "Public registration"
msgstr "开放注册" msgstr "开放注册"
#: cps/templates/admin.html:65 #: cps/templates/admin.html:66
msgid "Anonymous browsing" msgid "Anonymous browsing"
msgstr "匿名浏览" msgstr "匿名浏览"
#: cps/templates/admin.html:77 #: cps/templates/admin.html:78
msgid "Administration" msgid "Administration"
msgstr "管理" msgstr "管理"
#: cps/templates/admin.html:79 #: cps/templates/admin.html:80
msgid "Current commit timestamp"
msgstr ""
#: cps/templates/admin.html:81
msgid "Newest commit timestamp"
msgstr ""
#: cps/templates/admin.html:83
msgid "Restart Calibre-web" msgid "Restart Calibre-web"
msgstr "重启 Calibre-web" msgstr "重启 Calibre-web"
#: cps/templates/admin.html:80 #: cps/templates/admin.html:84
msgid "Stop Calibre-web" msgid "Stop Calibre-web"
msgstr "停止 Calibre-web" msgstr "停止 Calibre-web"
#: cps/templates/admin.html:81 #: cps/templates/admin.html:85
msgid "Check for update" msgid "Check for update"
msgstr "" msgstr ""
#: cps/templates/admin.html:82 #: cps/templates/admin.html:86
msgid "Perform Update" msgid "Perform Update"
msgstr "" msgstr ""
#: cps/templates/admin.html:93 #: cps/templates/admin.html:96
msgid "Do you really want to restart Calibre-web?" msgid "Do you really want to restart Calibre-web?"
msgstr "您确定要重启 Calibre-web 吗?" msgstr "您确定要重启 Calibre-web 吗?"
#: cps/templates/admin.html:94 cps/templates/admin.html:109 #: cps/templates/admin.html:101 cps/templates/admin.html:115
#: cps/templates/admin.html:136
msgid "Ok" msgid "Ok"
msgstr "确定" msgstr "确定"
#: cps/templates/admin.html:95 cps/templates/admin.html:110 #: cps/templates/admin.html:102 cps/templates/admin.html:116
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75 #: 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:111 #: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back" msgid "Back"
msgstr "后退" msgstr "后退"
#: cps/templates/admin.html:108 #: cps/templates/admin.html:114
msgid "Do you really want to stop Calibre-web?" msgid "Do you really want to stop Calibre-web?"
msgstr "您确定要关闭 Calibre-web 吗?" msgstr "您确定要关闭 Calibre-web 吗?"
#: cps/templates/admin.html:127
msgid "Updating, please do not reload page"
msgstr ""
#: 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"
msgstr "书名" msgstr "书名"
@ -499,7 +537,7 @@ msgstr "简介"
msgid "Tags" msgid "Tags"
msgstr "标签" msgstr "标签"
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136 #: cps/templates/book_edit.html:33 cps/templates/layout.html:138
#: cps/templates/search_form.html:33 #: cps/templates/search_form.html:33
msgid "Series" msgid "Series"
msgstr "丛书" msgstr "丛书"
@ -594,7 +632,7 @@ msgstr "允许编辑"
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "允许修改密码" msgstr "允许修改密码"
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91 #: cps/templates/config_edit.html:78 cps/templates/layout.html:93
#: cps/templates/login.html:4 #: cps/templates/login.html:4
msgid "Login" msgid "Login"
msgstr "登录" msgstr "登录"
@ -675,11 +713,11 @@ msgstr "发现(随机书籍)"
msgid "Start" msgid "Start"
msgstr "开始" msgstr "开始"
#: cps/templates/index.xml:7 cps/templates/layout.html:61 #: cps/templates/index.xml:7 cps/templates/layout.html:58
msgid "Search" msgid "Search"
msgstr "搜索" msgstr "搜索"
#: cps/templates/index.xml:15 cps/templates/layout.html:124 #: cps/templates/index.xml:15 cps/templates/layout.html:126
msgid "Hot Books" msgid "Hot Books"
msgstr "热门书籍" msgstr "热门书籍"
@ -687,7 +725,7 @@ msgstr "热门书籍"
msgid "Popular publications from this catalog based on Downloads." msgid "Popular publications from this catalog based on Downloads."
msgstr "" msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:127 #: cps/templates/index.xml:22 cps/templates/layout.html:129
msgid "Best rated Books" msgid "Best rated Books"
msgstr "" msgstr ""
@ -695,7 +733,7 @@ msgstr ""
msgid "Popular publications from this catalog based on Rating." msgid "Popular publications from this catalog based on Rating."
msgstr "基于评分的热门书籍" msgstr "基于评分的热门书籍"
#: cps/templates/index.xml:29 cps/templates/layout.html:122 #: cps/templates/index.xml:29 cps/templates/layout.html:124
msgid "New Books" msgid "New Books"
msgstr "新书" msgstr "新书"
@ -707,7 +745,7 @@ msgstr "最新书籍"
msgid "Show Random Books" msgid "Show Random Books"
msgstr "显示随机书籍" msgstr "显示随机书籍"
#: cps/templates/index.xml:43 cps/templates/layout.html:138 #: cps/templates/index.xml:43 cps/templates/layout.html:140
msgid "Authors" msgid "Authors"
msgstr "作者" msgstr "作者"
@ -727,51 +765,51 @@ msgstr "书籍按丛书排序"
msgid "Toggle navigation" msgid "Toggle navigation"
msgstr "切换导航" msgstr "切换导航"
#: cps/templates/layout.html:63 #: cps/templates/layout.html:60
msgid "Go!" msgid "Go!"
msgstr "走起!" msgstr "走起!"
#: cps/templates/layout.html:66 #: cps/templates/layout.html:68
msgid "Advanced Search" msgid "Advanced Search"
msgstr "高级搜索" msgstr "高级搜索"
#: cps/templates/layout.html:87 #: cps/templates/layout.html:89
msgid "Logout" msgid "Logout"
msgstr "注销" msgstr "注销"
#: cps/templates/layout.html:92 cps/templates/register.html:18 #: cps/templates/layout.html:94 cps/templates/register.html:18
msgid "Register" msgid "Register"
msgstr "注册" msgstr "注册"
#: cps/templates/layout.html:121 #: cps/templates/layout.html:123
msgid "Browse" msgid "Browse"
msgstr "浏览" msgstr "浏览"
#: cps/templates/layout.html:130 #: cps/templates/layout.html:132
msgid "Discover" msgid "Discover"
msgstr "发现" msgstr "发现"
#: cps/templates/layout.html:133 #: cps/templates/layout.html:135
msgid "Categories" msgid "Categories"
msgstr "分类" msgstr "分类"
#: cps/templates/layout.html:140 cps/templates/search_form.html:54 #: cps/templates/layout.html:142 cps/templates/search_form.html:54
msgid "Languages" msgid "Languages"
msgstr "语言" msgstr "语言"
#: cps/templates/layout.html:143 #: cps/templates/layout.html:145
msgid "Public Shelves" msgid "Public Shelves"
msgstr "公开书架" msgstr "公开书架"
#: cps/templates/layout.html:147 #: cps/templates/layout.html:149
msgid "Your Shelves" msgid "Your Shelves"
msgstr "您的书架" msgstr "您的书架"
#: cps/templates/layout.html:152 #: cps/templates/layout.html:154
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "创建书架" msgstr "创建书架"
#: cps/templates/layout.html:153 #: cps/templates/layout.html:155
msgid "About" msgid "About"
msgstr "关于" msgstr "关于"
@ -790,7 +828,7 @@ msgid "Remember me"
msgstr "记住我" msgstr "记住我"
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog" msgid "Calibre Web ebook catalog"
msgstr "" msgstr ""
#: cps/templates/read.html:136 #: cps/templates/read.html:136

View File

@ -3,7 +3,6 @@
import mimetypes import mimetypes
import logging import logging
from logging.handlers import RotatingFileHandler from logging.handlers import RotatingFileHandler
from tempfile import gettempdir
import textwrap import textwrap
from flask import Flask, render_template, session, request, Response, redirect, url_for, send_from_directory, \ from flask import Flask, render_template, session, request, Response, redirect, url_for, send_from_directory, \
make_response, g, flash, abort make_response, g, flash, abort
@ -39,9 +38,10 @@ import sys
import subprocess import subprocess
import re import re
import db import db
import thread
from shutil import move, copyfile from shutil import move, copyfile
from tornado.ioloop import IOLoop from tornado.ioloop import IOLoop
import StringIO
try: try:
from wand.image import Image from wand.image import Image
@ -51,9 +51,6 @@ except ImportError, e:
use_generic_pdf_cover = True use_generic_pdf_cover = True
from cgi import escape from cgi import escape
# Global variables
global_task = None
# Proxy Helper class # Proxy Helper class
class ReverseProxied(object): class ReverseProxied(object):
@ -283,7 +280,7 @@ def mimetype_filter(val):
@app.template_filter('formatdate') @app.template_filter('formatdate')
def formatdate(val): def formatdate(val):
conformed_timestamp = re.sub(r"[:]|([-](?!((\d{2}[:]\d{2})|(\d{4}))$))", '', 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") formatdate = datetime.datetime.strptime(conformed_timestamp[:15], "%Y%m%d %H%M%S")
return format_date(formatdate, format='medium',locale=get_locale()) return format_date(formatdate, format='medium',locale=get_locale())
@ -668,7 +665,7 @@ def get_opds_download_link(book_id, format):
file_name = book.title file_name = book.title
if len(book.authors) > 0: if len(book.authors) > 0:
file_name = book.authors[0].name + '-' + 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)
return response return response
@ -716,10 +713,42 @@ def get_update_status():
commit = requests.get('https://api.github.com/repos/janeczku/calibre-web/git/refs/heads/master').json() commit = requests.get('https://api.github.com/repos/janeczku/calibre-web/git/refs/heads/master').json()
if "object" in commit and commit['object']['sha'] != commit_id: if "object" in commit and commit['object']['sha'] != commit_id:
status['status'] = True status['status'] = True
commitdate = requests.get('https://api.github.com/repos/janeczku/calibre-web/git/commits/'+commit['object']['sha']).json()
if "committer" in commitdate:
status['commit'] = commitdate['committer']['date']
else:
status['commit'] = u'Unknown'
else: else:
status['status'] = False status['status'] = False
return json.dumps(status) return json.dumps(status)
@app.route("/get_updater_status", methods=['GET','POST'])
@login_required
@admin_required
def get_updater_status():
status = {}
if request.method == "POST":
commit = request.form.to_dict()
if "start" in commit and commit['start'] == 'True':
text={
"1": _(u'Requesting update package'),
"2": _(u'Downloading update package'),
"3": _(u'Unzipping update package'),
"4": _(u'Files are replaced'),
"5": _(u'Database connections are closed'),
"6": _(u'Server is stopped'),
"7": _(u'Update finished, please press okay and reload page')
}
status['text']=text
helper.updater_thread = helper.Updater()
helper.updater_thread.start()
status['status']=helper.updater_thread.get_update_status()
elif request.method == "GET":
try:
status['status']=helper.updater_thread.get_update_status()
except:
status['status'] = 7
return json.dumps(status)
@app.route("/get_languages_json", methods=['GET', 'POST']) @app.route("/get_languages_json", methods=['GET', 'POST'])
@ -1018,9 +1047,9 @@ def stats():
@login_required @login_required
@admin_required @admin_required
def shutdown(): def shutdown():
global global_task # global global_task
task = int(request.args.get("parameter").strip()) task = int(request.args.get("parameter").strip())
global_task = task helper.global_task = task
if task == 1 or task == 0: # valid commandos received if task == 1 or task == 0: # valid commandos received
# close all database connections # close all database connections
db.session.close() db.session.close()
@ -1032,7 +1061,7 @@ def shutdown():
server.add_callback(server.stop) server.add_callback(server.stop)
showtext = {} showtext = {}
if task == 0: if task == 0:
showtext['text'] = _(u'Performing Restart, please reload page') showtext['text'] = _(u'Server restarted, please reload page')
else: else:
showtext['text'] = _(u'Performing shutdown of server, please close window') showtext['text'] = _(u'Performing shutdown of server, please close window')
return json.dumps(showtext) return json.dumps(showtext)
@ -1043,23 +1072,10 @@ def shutdown():
@login_required @login_required
@admin_required @admin_required
def update(): def update():
global global_task helper.updater_thread = helper.Updater()
r = requests.get('https://api.github.com/repos/janeczku/calibre-web/zipball/master', stream=True)
fname = re.findall("filename=(.+)", r.headers['content-disposition'])[0]
z = zipfile.ZipFile(StringIO.StringIO(r.content))
tmp_dir = gettempdir()
z.extractall(tmp_dir)
helper.update_source(os.path.join(tmp_dir,os.path.splitext(fname)[0]),config.get_main_dir)
global_task = 0
db.session.close()
db.engine.dispose()
ub.session.close()
ub.engine.dispose()
# stop tornado server
server = IOLoop.instance()
server.add_callback(server.stop)
flash(_(u"Update done"), category="info") flash(_(u"Update done"), category="info")
return logout() return ""
@app.route("/search", methods=["GET"]) @app.route("/search", methods=["GET"])
@login_required_if_no_ano @login_required_if_no_ano
@ -1598,14 +1614,13 @@ def basic_configuration():
def configuration_helper(origin): def configuration_helper(origin):
global global_task # global global_task
reboot_required = False reboot_required = False
db_change = False db_change = False
success = False success = False
if request.method == "POST": if request.method == "POST":
to_save = request.form.to_dict() to_save = request.form.to_dict()
content = ub.session.query(ub.Settings).first() content = ub.session.query(ub.Settings).first()
# ToDo: check lib vaild, and change without restart
if "config_calibre_dir" in to_save: if "config_calibre_dir" in to_save:
if content.config_calibre_dir != to_save["config_calibre_dir"]: if content.config_calibre_dir != to_save["config_calibre_dir"]:
content.config_calibre_dir = to_save["config_calibre_dir"] content.config_calibre_dir = to_save["config_calibre_dir"]
@ -1674,7 +1689,7 @@ def configuration_helper(origin):
# stop tornado server # stop tornado server
server = IOLoop.instance() server = IOLoop.instance()
server.add_callback(server.stop) server.add_callback(server.stop)
global_task = 0 helper.global_task = 0
app.logger.info('Reboot required, restarting') app.logger.info('Reboot required, restarting')
if origin: if origin:
success = True success = True

View File

@ -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-02-10 20:17+0100\n" "POT-Creation-Date: 2017-02-20 19:47+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,316 +17,341 @@ 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:111 cps/book_formats.py:115 cps/web.py:998 #: cps/book_formats.py:111 cps/book_formats.py:115 cps/web.py:1030
msgid "not installed" msgid "not installed"
msgstr "" msgstr ""
#: cps/helper.py:136 #: cps/helper.py:150
#, python-format #, python-format
msgid "Failed to send mail: %s" msgid "Failed to send mail: %s"
msgstr "" msgstr ""
#: cps/helper.py:143 #: cps/helper.py:157
msgid "Calibre-web test email" msgid "Calibre-web test email"
msgstr "" msgstr ""
#: cps/helper.py:144 cps/helper.py:154 #: cps/helper.py:158 cps/helper.py:168
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:130 #: cps/helper.py:167 cps/templates/detail.html:130
msgid "Send to Kindle" msgid "Send to Kindle"
msgstr "" msgstr ""
#: cps/helper.py:171 cps/helper.py:186 #: cps/helper.py:185 cps/helper.py:200
msgid "Could not find any formats suitable for sending by email" msgid "Could not find any formats suitable for sending by email"
msgstr "" msgstr ""
#: cps/helper.py:180 #: cps/helper.py:194
msgid "Could not convert epub to mobi" msgid "Could not convert epub to mobi"
msgstr "" msgstr ""
#: cps/helper.py:206 #: cps/ub.py:434
msgid "The requested file could not be read. Maybe wrong permissions?"
msgstr ""
#: cps/ub.py:443
msgid "Guest" msgid "Guest"
msgstr "" msgstr ""
#: cps/web.py:778 #: cps/web.py:734
msgid "Requesting update package"
msgstr ""
#: cps/web.py:735
msgid "Downloading update package"
msgstr ""
#: cps/web.py:736
msgid "Unzipping update package"
msgstr ""
#: cps/web.py:737
msgid "Files are replaced"
msgstr ""
#: cps/web.py:738
msgid "Database connections are closed"
msgstr ""
#: cps/web.py:739
msgid "Server is stopped"
msgstr ""
#: cps/web.py:740
msgid "Update finished, please press okay and reload page"
msgstr ""
#: cps/web.py:810
msgid "Latest Books" msgid "Latest Books"
msgstr "" msgstr ""
#: cps/web.py:803 #: cps/web.py:835
msgid "Hot Books (most downloaded)" msgid "Hot Books (most downloaded)"
msgstr "" msgstr ""
#: cps/web.py:813 #: cps/web.py:845
msgid "Best rated books" msgid "Best rated books"
msgstr "" msgstr ""
#: cps/templates/index.xml:36 cps/web.py:822 #: cps/templates/index.xml:36 cps/web.py:854
msgid "Random Books" msgid "Random Books"
msgstr "" msgstr ""
#: cps/web.py:835 #: cps/web.py:867
msgid "Author list" msgid "Author list"
msgstr "" msgstr ""
#: cps/web.py:846 #: cps/web.py:878
#, python-format #, python-format
msgid "Author: %(name)s" msgid "Author: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:848 cps/web.py:876 cps/web.py:975 cps/web.py:1216 cps/web.py:2103 #: cps/web.py:880 cps/web.py:908 cps/web.py:1007 cps/web.py:1235
#: cps/web.py:2115
msgid "Error opening eBook. File does not exist or file is not accessible:" msgid "Error opening eBook. File does not exist or file is not accessible:"
msgstr "" msgstr ""
#: cps/templates/index.xml:57 cps/web.py:862 #: cps/templates/index.xml:57 cps/web.py:894
msgid "Series list" msgid "Series list"
msgstr "" msgstr ""
#: cps/web.py:874 #: cps/web.py:906
#, python-format #, python-format
msgid "Series: %(serie)s" msgid "Series: %(serie)s"
msgstr "" msgstr ""
#: cps/web.py:907 #: cps/web.py:939
msgid "Available languages" msgid "Available languages"
msgstr "" msgstr ""
#: cps/web.py:922 #: cps/web.py:954
#, python-format #, python-format
msgid "Language: %(name)s" msgid "Language: %(name)s"
msgstr "" msgstr ""
#: cps/templates/index.xml:50 cps/web.py:935 #: cps/templates/index.xml:50 cps/web.py:967
msgid "Category list" msgid "Category list"
msgstr "" msgstr ""
#: cps/web.py:947 #: cps/web.py:979
#, python-format #, python-format
msgid "Category: %(name)s" msgid "Category: %(name)s"
msgstr "" msgstr ""
#: cps/web.py:1008 #: cps/web.py:1040
msgid "Statistics" msgid "Statistics"
msgstr "" msgstr ""
#: cps/web.py:1029 #: cps/web.py:1061
msgid "Performing Restart, please reload page" msgid "Server restarted, please reload page"
msgstr "" msgstr ""
#: cps/web.py:1031 #: cps/web.py:1063
msgid "Performing shutdown of server, please close window" msgid "Performing shutdown of server, please close window"
msgstr "" msgstr ""
#: cps/web.py:1055 #: cps/web.py:1073
msgid "Update done" msgid "Update done"
msgstr "" msgstr ""
#: cps/web.py:1128 cps/web.py:1141 #: cps/web.py:1147 cps/web.py:1160
msgid "search" msgid "search"
msgstr "" msgstr ""
#: cps/web.py:1192 cps/web.py:1199 cps/web.py:1206 cps/web.py:1213 #: cps/web.py:1211 cps/web.py:1218 cps/web.py:1225 cps/web.py:1232
msgid "Read a Book" msgid "Read a Book"
msgstr "" msgstr ""
#: cps/web.py:1264 cps/web.py:1701 #: cps/web.py:1276 cps/web.py:1713
msgid "Please fill out all fields!" msgid "Please fill out all fields!"
msgstr "" msgstr ""
#: cps/web.py:1265 cps/web.py:1281 cps/web.py:1286 cps/web.py:1288 #: cps/web.py:1277 cps/web.py:1293 cps/web.py:1298 cps/web.py:1300
msgid "register" msgid "register"
msgstr "" msgstr ""
#: cps/web.py:1280 #: cps/web.py:1292
msgid "An unknown error occured. Please try again later." msgid "An unknown error occured. Please try again later."
msgstr "" msgstr ""
#: cps/web.py:1285 #: cps/web.py:1297
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:1303 #: cps/web.py:1315
#, 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:1308 #: cps/web.py:1320
msgid "Wrong Username or Password" msgid "Wrong Username or Password"
msgstr "" msgstr ""
#: cps/web.py:1310 #: cps/web.py:1322
msgid "login" msgid "login"
msgstr "" msgstr ""
#: cps/web.py:1327 #: cps/web.py:1339
msgid "Please configure the SMTP mail settings first..." msgid "Please configure the SMTP mail settings first..."
msgstr "" msgstr ""
#: cps/web.py:1331 #: cps/web.py:1343
#, python-format #, python-format
msgid "Book successfully send to %(kindlemail)s" msgid "Book successfully send to %(kindlemail)s"
msgstr "" msgstr ""
#: cps/web.py:1335 #: cps/web.py:1347
#, 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:1337 #: cps/web.py:1349
msgid "Please configure your kindle email address first..." msgid "Please configure your kindle email address first..."
msgstr "" msgstr ""
#: cps/web.py:1357 #: cps/web.py:1369
#, 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:1378 #: cps/web.py:1390
#, 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:1397 cps/web.py:1421 #: cps/web.py:1409 cps/web.py:1433
#, 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:1402 #: cps/web.py:1414
#, python-format #, python-format
msgid "Shelf %(title)s created" msgid "Shelf %(title)s created"
msgstr "" msgstr ""
#: cps/web.py:1404 cps/web.py:1432 #: cps/web.py:1416 cps/web.py:1444
msgid "There was an error" msgid "There was an error"
msgstr "" msgstr ""
#: cps/web.py:1405 cps/web.py:1407 #: cps/web.py:1417 cps/web.py:1419
msgid "create a shelf" msgid "create a shelf"
msgstr "" msgstr ""
#: cps/web.py:1430 #: cps/web.py:1442
#, python-format #, python-format
msgid "Shelf %(title)s changed" msgid "Shelf %(title)s changed"
msgstr "" msgstr ""
#: cps/web.py:1433 cps/web.py:1435 #: cps/web.py:1445 cps/web.py:1447
msgid "Edit a shelf" msgid "Edit a shelf"
msgstr "" msgstr ""
#: cps/web.py:1453 #: cps/web.py:1465
#, python-format #, python-format
msgid "successfully deleted shelf %(name)s" msgid "successfully deleted shelf %(name)s"
msgstr "" msgstr ""
#: cps/web.py:1475 #: cps/web.py:1487
#, python-format #, python-format
msgid "Shelf: '%(name)s'" msgid "Shelf: '%(name)s'"
msgstr "" msgstr ""
#: cps/web.py:1506 #: cps/web.py:1518
#, python-format #, python-format
msgid "Change order of Shelf: '%(name)s'" msgid "Change order of Shelf: '%(name)s'"
msgstr "" msgstr ""
#: cps/web.py:1568 #: cps/web.py:1580
msgid "Found an existing account for this email address." msgid "Found an existing account for this email address."
msgstr "" msgstr ""
#: cps/web.py:1570 cps/web.py:1574 #: cps/web.py:1582 cps/web.py:1586
#, python-format #, python-format
msgid "%(name)s's profile" msgid "%(name)s's profile"
msgstr "" msgstr ""
#: cps/web.py:1571 #: cps/web.py:1583
msgid "Profile updated" msgid "Profile updated"
msgstr "" msgstr ""
#: cps/web.py:1584 #: cps/web.py:1597
msgid "Admin page" msgid "Admin page"
msgstr "" msgstr ""
#: cps/web.py:1656 #: cps/web.py:1668
msgid "Calibre-web configuration updated" msgid "Calibre-web configuration updated"
msgstr "" msgstr ""
#: cps/web.py:1663 cps/web.py:1669 cps/web.py:1682 #: cps/web.py:1675 cps/web.py:1681 cps/web.py:1694
msgid "Basic Configuration" msgid "Basic Configuration"
msgstr "" msgstr ""
#: cps/web.py:1667 #: cps/web.py:1679
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:1703 cps/web.py:1749 #: cps/templates/admin.html:34 cps/web.py:1715 cps/web.py:1761
msgid "Add new user" msgid "Add new user"
msgstr "" msgstr ""
#: cps/web.py:1741 #: cps/web.py:1753
#, python-format #, python-format
msgid "User '%(user)s' created" msgid "User '%(user)s' created"
msgstr "" msgstr ""
#: cps/web.py:1745 #: cps/web.py:1757
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:1767 #: cps/web.py:1779
msgid "Mail settings updated" msgid "Mail settings updated"
msgstr "" msgstr ""
#: cps/web.py:1773 #: cps/web.py:1785
#, 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:1776 #: cps/web.py:1788
#, 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:1777 #: cps/web.py:1789
msgid "Edit mail settings" msgid "Edit mail settings"
msgstr "" msgstr ""
#: cps/web.py:1805 #: cps/web.py:1817
#, python-format #, python-format
msgid "User '%(nick)s' deleted" msgid "User '%(nick)s' deleted"
msgstr "" msgstr ""
#: cps/web.py:1886 #: cps/web.py:1898
#, python-format #, python-format
msgid "User '%(nick)s' updated" msgid "User '%(nick)s' updated"
msgstr "" msgstr ""
#: cps/web.py:1889 #: cps/web.py:1901
msgid "An unknown error occured." msgid "An unknown error occured."
msgstr "" msgstr ""
#: cps/web.py:1892 #: cps/web.py:1904
#, python-format #, python-format
msgid "Edit User %(nick)s" msgid "Edit User %(nick)s"
msgstr "" msgstr ""
#: cps/web.py:2098 cps/web.py:2101 cps/web.py:2175 #: cps/web.py:2110 cps/web.py:2113 cps/web.py:2188
msgid "edit metadata" msgid "edit metadata"
msgstr "" msgstr ""
#: cps/web.py:2133 #: cps/web.py:2145
#, 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:2138 #: cps/web.py:2150
#, 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:2143 #: cps/web.py:2155
#, python-format #, python-format
msgid "Failed to delete file %s (Permission denied)." msgid "Failed to delete file %s (Permission denied)."
msgstr "" msgstr ""
@ -335,145 +360,158 @@ msgstr ""
msgid "User list" msgid "User list"
msgstr "" msgstr ""
#: cps/templates/admin.html:7 #: cps/templates/admin.html:8
msgid "Nickname" msgid "Nickname"
msgstr "" msgstr ""
#: cps/templates/admin.html:8 #: cps/templates/admin.html:9
msgid "Email" msgid "Email"
msgstr "" msgstr ""
#: cps/templates/admin.html:9 #: cps/templates/admin.html:10
msgid "Kindle" msgid "Kindle"
msgstr "" msgstr ""
#: cps/templates/admin.html:10 #: cps/templates/admin.html:11
msgid "DLS" msgid "DLS"
msgstr "" msgstr ""
#: cps/templates/admin.html:11 cps/templates/layout.html:83 #: cps/templates/admin.html:12 cps/templates/layout.html:85
msgid "Admin" msgid "Admin"
msgstr "" msgstr ""
#: cps/templates/admin.html:12 cps/templates/detail.html:117 #: cps/templates/admin.html:13 cps/templates/detail.html:117
msgid "Download" msgid "Download"
msgstr "" msgstr ""
#: cps/templates/admin.html:13 cps/templates/layout.html:76 #: cps/templates/admin.html:14 cps/templates/layout.html:78
msgid "Upload" msgid "Upload"
msgstr "" msgstr ""
#: cps/templates/admin.html:14 #: cps/templates/admin.html:15
msgid "Edit" msgid "Edit"
msgstr "" msgstr ""
#: cps/templates/admin.html:15 #: cps/templates/admin.html:16
msgid "Passwd" msgid "Passwd"
msgstr "" msgstr ""
#: cps/templates/admin.html:34 #: cps/templates/admin.html:35
msgid "SMTP mail settings" msgid "SMTP mail settings"
msgstr "" msgstr ""
#: cps/templates/admin.html:37 cps/templates/email_edit.html:7 #: cps/templates/admin.html:38 cps/templates/email_edit.html:7
msgid "SMTP hostname" msgid "SMTP hostname"
msgstr "" msgstr ""
#: cps/templates/admin.html:38 #: cps/templates/admin.html:39
msgid "SMTP port" msgid "SMTP port"
msgstr "" msgstr ""
#: cps/templates/admin.html:39 #: cps/templates/admin.html:40
msgid "SSL" msgid "SSL"
msgstr "" msgstr ""
#: cps/templates/admin.html:40 cps/templates/email_edit.html:23 #: cps/templates/admin.html:41 cps/templates/email_edit.html:23
msgid "SMTP login" msgid "SMTP login"
msgstr "" msgstr ""
#: cps/templates/admin.html:41 cps/templates/email_edit.html:27 #: cps/templates/admin.html:42 cps/templates/email_edit.html:27
msgid "SMTP password" msgid "SMTP password"
msgstr "" msgstr ""
#: cps/templates/admin.html:42 #: cps/templates/admin.html:43
msgid "From mail" msgid "From mail"
msgstr "" msgstr ""
#: cps/templates/admin.html:54 #: cps/templates/admin.html:55
msgid "Change SMTP settings" msgid "Change SMTP settings"
msgstr "" msgstr ""
#: cps/templates/admin.html:56 cps/templates/admin.html:76 #: cps/templates/admin.html:57 cps/templates/admin.html:77
msgid "Configuration" msgid "Configuration"
msgstr "" msgstr ""
#: cps/templates/admin.html:59 #: cps/templates/admin.html:60
msgid "Calibre DB dir" msgid "Calibre DB dir"
msgstr "" msgstr ""
#: cps/templates/admin.html:60 cps/templates/config_edit.html:32 #: cps/templates/admin.html:61 cps/templates/config_edit.html:32
msgid "Log Level" msgid "Log Level"
msgstr "" msgstr ""
#: cps/templates/admin.html:61 #: cps/templates/admin.html:62
msgid "Port" msgid "Port"
msgstr "" msgstr ""
#: cps/templates/admin.html:62 cps/templates/config_edit.html:19 #: cps/templates/admin.html:63 cps/templates/config_edit.html:19
msgid "Books per page" msgid "Books per page"
msgstr "" msgstr ""
#: cps/templates/admin.html:63 #: cps/templates/admin.html:64
msgid "Uploading" msgid "Uploading"
msgstr "" msgstr ""
#: cps/templates/admin.html:64 #: cps/templates/admin.html:65
msgid "Public registration" msgid "Public registration"
msgstr "" msgstr ""
#: cps/templates/admin.html:65 #: cps/templates/admin.html:66
msgid "Anonymous browsing" msgid "Anonymous browsing"
msgstr "" msgstr ""
#: cps/templates/admin.html:77 #: cps/templates/admin.html:78
msgid "Administration" msgid "Administration"
msgstr "" msgstr ""
#: cps/templates/admin.html:79
msgid "Restart Calibre-web"
msgstr ""
#: cps/templates/admin.html:80 #: cps/templates/admin.html:80
msgid "Stop Calibre-web" msgid "Current commit timestamp"
msgstr "" msgstr ""
#: cps/templates/admin.html:81 #: cps/templates/admin.html:81
msgid "Newest commit timestamp"
msgstr ""
#: cps/templates/admin.html:83
msgid "Restart Calibre-web"
msgstr ""
#: cps/templates/admin.html:84
msgid "Stop Calibre-web"
msgstr ""
#: cps/templates/admin.html:85
msgid "Check for update" msgid "Check for update"
msgstr "" msgstr ""
#: cps/templates/admin.html:82 #: cps/templates/admin.html:86
msgid "Perform Update" msgid "Perform Update"
msgstr "" msgstr ""
#: cps/templates/admin.html:93 #: cps/templates/admin.html:96
msgid "Do you really want to restart Calibre-web?" msgid "Do you really want to restart Calibre-web?"
msgstr "" msgstr ""
#: cps/templates/admin.html:94 cps/templates/admin.html:109 #: cps/templates/admin.html:101 cps/templates/admin.html:115
#: cps/templates/admin.html:136
msgid "Ok" msgid "Ok"
msgstr "" msgstr ""
#: cps/templates/admin.html:95 cps/templates/admin.html:110 #: cps/templates/admin.html:102 cps/templates/admin.html:116
#: cps/templates/book_edit.html:108 cps/templates/config_edit.html:75 #: 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:111 #: cps/templates/shelf_order.html:12 cps/templates/user_edit.html:111
msgid "Back" msgid "Back"
msgstr "" msgstr ""
#: cps/templates/admin.html:108 #: cps/templates/admin.html:114
msgid "Do you really want to stop Calibre-web?" msgid "Do you really want to stop Calibre-web?"
msgstr "" msgstr ""
#: cps/templates/admin.html:127
msgid "Updating, please do not reload page"
msgstr ""
#: 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"
msgstr "" msgstr ""
@ -490,7 +528,7 @@ msgstr ""
msgid "Tags" msgid "Tags"
msgstr "" msgstr ""
#: cps/templates/book_edit.html:33 cps/templates/layout.html:136 #: cps/templates/book_edit.html:33 cps/templates/layout.html:138
#: cps/templates/search_form.html:33 #: cps/templates/search_form.html:33
msgid "Series" msgid "Series"
msgstr "" msgstr ""
@ -585,7 +623,7 @@ msgstr ""
msgid "Allow Changing Password" msgid "Allow Changing Password"
msgstr "" msgstr ""
#: cps/templates/config_edit.html:78 cps/templates/layout.html:91 #: cps/templates/config_edit.html:78 cps/templates/layout.html:93
#: cps/templates/login.html:4 #: cps/templates/login.html:4
msgid "Login" msgid "Login"
msgstr "" msgstr ""
@ -666,11 +704,11 @@ msgstr ""
msgid "Start" msgid "Start"
msgstr "" msgstr ""
#: cps/templates/index.xml:7 cps/templates/layout.html:61 #: cps/templates/index.xml:7 cps/templates/layout.html:58
msgid "Search" msgid "Search"
msgstr "" msgstr ""
#: cps/templates/index.xml:15 cps/templates/layout.html:124 #: cps/templates/index.xml:15 cps/templates/layout.html:126
msgid "Hot Books" msgid "Hot Books"
msgstr "" msgstr ""
@ -678,7 +716,7 @@ msgstr ""
msgid "Popular publications from this catalog based on Downloads." msgid "Popular publications from this catalog based on Downloads."
msgstr "" msgstr ""
#: cps/templates/index.xml:22 cps/templates/layout.html:127 #: cps/templates/index.xml:22 cps/templates/layout.html:129
msgid "Best rated Books" msgid "Best rated Books"
msgstr "" msgstr ""
@ -686,7 +724,7 @@ msgstr ""
msgid "Popular publications from this catalog based on Rating." msgid "Popular publications from this catalog based on Rating."
msgstr "" msgstr ""
#: cps/templates/index.xml:29 cps/templates/layout.html:122 #: cps/templates/index.xml:29 cps/templates/layout.html:124
msgid "New Books" msgid "New Books"
msgstr "" msgstr ""
@ -698,7 +736,7 @@ msgstr ""
msgid "Show Random Books" msgid "Show Random Books"
msgstr "" msgstr ""
#: cps/templates/index.xml:43 cps/templates/layout.html:138 #: cps/templates/index.xml:43 cps/templates/layout.html:140
msgid "Authors" msgid "Authors"
msgstr "" msgstr ""
@ -718,51 +756,51 @@ msgstr ""
msgid "Toggle navigation" msgid "Toggle navigation"
msgstr "" msgstr ""
#: cps/templates/layout.html:63 #: cps/templates/layout.html:60
msgid "Go!" msgid "Go!"
msgstr "" msgstr ""
#: cps/templates/layout.html:66 #: cps/templates/layout.html:68
msgid "Advanced Search" msgid "Advanced Search"
msgstr "" msgstr ""
#: cps/templates/layout.html:87 #: cps/templates/layout.html:89
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
#: cps/templates/layout.html:92 cps/templates/register.html:18 #: cps/templates/layout.html:94 cps/templates/register.html:18
msgid "Register" msgid "Register"
msgstr "" msgstr ""
#: cps/templates/layout.html:121 #: cps/templates/layout.html:123
msgid "Browse" msgid "Browse"
msgstr "" msgstr ""
#: cps/templates/layout.html:130 #: cps/templates/layout.html:132
msgid "Discover" msgid "Discover"
msgstr "" msgstr ""
#: cps/templates/layout.html:133 #: cps/templates/layout.html:135
msgid "Categories" msgid "Categories"
msgstr "" msgstr ""
#: cps/templates/layout.html:140 cps/templates/search_form.html:54 #: cps/templates/layout.html:142 cps/templates/search_form.html:54
msgid "Languages" msgid "Languages"
msgstr "" msgstr ""
#: cps/templates/layout.html:143 #: cps/templates/layout.html:145
msgid "Public Shelves" msgid "Public Shelves"
msgstr "" msgstr ""
#: cps/templates/layout.html:147 #: cps/templates/layout.html:149
msgid "Your Shelves" msgid "Your Shelves"
msgstr "" msgstr ""
#: cps/templates/layout.html:152 #: cps/templates/layout.html:154
msgid "Create a Shelf" msgid "Create a Shelf"
msgstr "" msgstr ""
#: cps/templates/layout.html:153 #: cps/templates/layout.html:155
msgid "About" msgid "About"
msgstr "" msgstr ""
@ -781,7 +819,7 @@ msgid "Remember me"
msgstr "" msgstr ""
#: cps/templates/osd.xml:5 #: cps/templates/osd.xml:5
msgid "instanceCalibre Web ebook catalog" msgid "Calibre Web ebook catalog"
msgstr "" msgstr ""
#: cps/templates/read.html:136 #: cps/templates/read.html:136

8
vendor/wand/api.py vendored
View File

@ -180,8 +180,8 @@ try:
libraries = load_library() libraries = load_library()
except (OSError, IOError): except (OSError, IOError):
msg = 'http://docs.wand-py.org/en/latest/guide/install.html' msg = 'http://docs.wand-py.org/en/latest/guide/install.html'
if sys.platform.startswith('freebsd'): if sys.platform.startswith(('dragonfly', 'freebsd')):
msg = 'pkg_add -r' msg = 'pkg install'
elif sys.platform == 'win32': elif sys.platform == 'win32':
msg += '#install-imagemagick-on-windows' msg += '#install-imagemagick-on-windows'
elif sys.platform == 'darwin': elif sys.platform == 'darwin':
@ -1397,7 +1397,7 @@ try:
library.MagickAutoOrientImage.argtypes = [ctypes.c_void_p] library.MagickAutoOrientImage.argtypes = [ctypes.c_void_p]
except AttributeError: except AttributeError:
# MagickAutoOrientImage was added in 6.8.9+, we have a fallback function # MagickAutoOrientImage was added in 6.8.9+, we have a fallback function
# so we pass silently if we cant import it # so we pass silently if we cannot import it
pass pass
@ -1418,7 +1418,7 @@ else:
except OSError: except OSError:
# In case of El Capitan SIP # In case of El Capitan SIP
libc = ctypes.cdll.LoadLibrary('/usr/lib/libc.dylib') libc = ctypes.cdll.LoadLibrary('/usr/lib/libc.dylib')
elif platform.system() == 'FreeBSD': elif sys.platform.startswith(('dragonfly', 'freebsd')):
libc = ctypes.cdll.LoadLibrary(ctypes.util.find_library('c')) libc = ctypes.cdll.LoadLibrary(ctypes.util.find_library('c'))
else: else:
libc = ctypes.cdll.LoadLibrary('libc.so.6') libc = ctypes.cdll.LoadLibrary('libc.so.6')

View File

@ -1573,7 +1573,7 @@ class Drawing(Resource):
def rectangle(self, left=None, top=None, right=None, bottom=None, def rectangle(self, left=None, top=None, right=None, bottom=None,
width=None, height=None, radius=None, xradius=None, width=None, height=None, radius=None, xradius=None,
yradius=None): yradius=None):
"""Draws a rectangle using the current :attr:`stoke_color`, """Draws a rectangle using the current :attr:`stroke_color`,
:attr:`stroke_width`, and :attr:`fill_color`. :attr:`stroke_width`, and :attr:`fill_color`.
.. sourcecode:: text .. sourcecode:: text

View File

@ -18,16 +18,28 @@ class WandException(Exception):
"""All Wand-related exceptions are derived from this class.""" """All Wand-related exceptions are derived from this class."""
class WandWarning(WandException, Warning): class BaseWarning(WandException, Warning):
"""Base class for Wand-related warnings.""" """Base class for Wand-related warnings.
.. versionadded:: 0.4.4
"""
class WandError(WandException): class BaseError(WandException):
"""Base class for Wand-related errors.""" """Base class for Wand-related errors.
.. versionadded:: 0.4.4
"""
class WandFatalError(WandException): class BaseFatalError(WandException):
"""Base class for Wand-related fatal errors.""" """Base class for Wand-related fatal errors.
.. versionadded:: 0.4.4
"""
class WandLibraryVersionError(WandException): class WandLibraryVersionError(WandException):
@ -91,9 +103,9 @@ DOMAIN_MAP = [
#: (:class:`list`) The list of (base_class, suffix) pairs (for each code). #: (:class:`list`) The list of (base_class, suffix) pairs (for each code).
#: It would be zipped with :const:`DOMAIN_MAP` pairs' last element. #: It would be zipped with :const:`DOMAIN_MAP` pairs' last element.
CODE_MAP = [ CODE_MAP = [
(WandWarning, 'Warning'), (BaseWarning, 'Warning'),
(WandError, 'Error'), (BaseError, 'Error'),
(WandFatalError, 'FatalError') (BaseFatalError, 'FatalError')
] ]

11
vendor/wand/image.py vendored
View File

@ -2757,6 +2757,17 @@ class Image(BaseImage):
self.sequence = Sequence(self) self.sequence = Sequence(self)
self.raise_exception() self.raise_exception()
def destroy(self):
"""Manually remove :class:`~.sequence.SingleImage`'s in
the :class:`~.sequence.Sequence`, allowing it to
be properly garbage collected after using a ``with Image()`` context
manager.
"""
for i in range(0, len(self.sequence)):
self.sequence.pop()
super(Image, self).destroy()
def read(self, file=None, filename=None, blob=None, resolution=None): def read(self, file=None, filename=None, blob=None, resolution=None):
"""Read new image into Image() object. """Read new image into Image() object.

View File

@ -57,7 +57,7 @@ __all__ = ('VERSION', 'VERSION_INFO', 'MAGICK_VERSION',
#: #:
#: .. versionchanged:: 0.1.9 #: .. versionchanged:: 0.1.9
#: Becomes :class:`tuple`. (It was string before.) #: Becomes :class:`tuple`. (It was string before.)
VERSION_INFO = (0, 4, 3) VERSION_INFO = (0, 4, 4)
#: (:class:`basestring`) The version string e.g. ``'0.1.2'``. #: (:class:`basestring`) The version string e.g. ``'0.1.2'``.
#: #:
@ -94,20 +94,20 @@ if libmagick:
#: .. versionadded:: 0.2.1 #: .. versionadded:: 0.2.1
MAGICK_VERSION_INFO = tuple(int(v or 0) for v in _match.groups()) MAGICK_VERSION_INFO = tuple(int(v or 0) for v in _match.groups())
#: (:class:`datetime.date`) The release date of the linked ImageMagick
#: library. The same to the result of :c:func:`GetMagickReleaseDate`
#: function.
#:
#: .. versionadded:: 0.2.1
MAGICK_RELEASE_DATE_STRING = text(libmagick.GetMagickReleaseDate())
#: (:class:`basestring`) The date string e.g. ``'2012-06-03'`` of #: (:class:`basestring`) The date string e.g. ``'2012-06-03'`` of
#: :const:`MAGICK_RELEASE_DATE_STRING`. This value is the exactly same #: :const:`MAGICK_RELEASE_DATE_STRING`. This value is the exactly same
#: string to the result of :c:func:`GetMagickReleaseDate` function. #: string to the result of :c:func:`GetMagickReleaseDate` function.
#: #:
#: .. versionadded:: 0.2.1 #: .. versionadded:: 0.2.1
MAGICK_RELEASE_DATE = datetime.date( MAGICK_RELEASE_DATE_STRING = text(libmagick.GetMagickReleaseDate())
*map(int, MAGICK_RELEASE_DATE_STRING.split('-')))
_match = re.match(r'^(\d{4})-?(\d\d)-?(\d\d)$', MAGICK_RELEASE_DATE_STRING)
#: (:class:`datetime.date`) The release date of the linked ImageMagick
#: library. Equivalent to the result of :c:func:`GetMagickReleaseDate`
#: function.
#:
#: .. versionadded:: 0.2.1
MAGICK_RELEASE_DATE = datetime.date(*map(int, _match.groups()))
c_quantum_depth = ctypes.c_size_t() c_quantum_depth = ctypes.c_size_t()
libmagick.GetMagickQuantumDepth(ctypes.byref(c_quantum_depth)) libmagick.GetMagickQuantumDepth(ctypes.byref(c_quantum_depth))