Improved error handling for renaming authors and titles (changes related to filesystem and not only to database)
This commit is contained in:
parent
b4aede78bc
commit
f1fac28203
|
@ -49,8 +49,8 @@ def process(tmp_file_path, original_file_name, original_file_extension):
|
|||
meta = epub.get_epub_info(tmp_file_path, original_file_name, original_file_extension)
|
||||
if ".FB2" == original_file_extension.upper() and use_fb2_meta is True:
|
||||
meta = fb2.get_fb2_info(tmp_file_path, original_file_extension)
|
||||
except Exception as e:
|
||||
logger.warning('cannot parse metadata, using default: %s', e)
|
||||
except Exception as ex:
|
||||
logger.warning('cannot parse metadata, using default: %s', ex)
|
||||
|
||||
if meta and meta.title.strip() and meta.author.strip():
|
||||
return meta
|
||||
|
@ -111,6 +111,7 @@ def pdf_preview(tmp_file_path, tmp_dir):
|
|||
img.save(filename=os.path.join(tmp_dir, cover_file_name))
|
||||
return cover_file_name
|
||||
|
||||
|
||||
def get_versions():
|
||||
if not use_generic_pdf_cover:
|
||||
IVersion=ImageVersion.MAGICK_VERSION
|
||||
|
@ -120,4 +121,4 @@ def get_versions():
|
|||
PVersion=PyPdfVersion
|
||||
else:
|
||||
PVersion=_(u'not installed')
|
||||
return {'ImageVersion':IVersion,'PyPdfVersion':PVersion}
|
||||
return {'ImageVersion': IVersion, 'PyPdfVersion': PVersion}
|
||||
|
|
14
cps/db.py
14
cps/db.py
|
@ -26,12 +26,15 @@ def title_sort(title):
|
|||
title = title.replace(prep, '') + ', ' + prep
|
||||
return title.strip()
|
||||
|
||||
|
||||
def lcase(s):
|
||||
return s.lower()
|
||||
|
||||
|
||||
def ucase(s):
|
||||
return s.upper()
|
||||
|
||||
|
||||
Base = declarative_base()
|
||||
|
||||
books_authors_link = Table('books_authors_link', Base.metadata,
|
||||
|
@ -64,6 +67,7 @@ books_publishers_link = Table('books_publishers_link', Base.metadata,
|
|||
Column('publisher', Integer, ForeignKey('publishers.id'), primary_key=True)
|
||||
)
|
||||
|
||||
|
||||
class Identifiers(Base):
|
||||
__tablename__ = 'identifiers'
|
||||
|
||||
|
@ -197,6 +201,7 @@ class Languages(Base):
|
|||
def __repr__(self):
|
||||
return u"<Languages('{0}')>".format(self.lang_code)
|
||||
|
||||
|
||||
class Publishers(Base):
|
||||
__tablename__ = 'publishers'
|
||||
|
||||
|
@ -204,7 +209,7 @@ class Publishers(Base):
|
|||
name = Column(String)
|
||||
sort = Column(String)
|
||||
|
||||
def __init__(self, name,sort):
|
||||
def __init__(self, name, sort):
|
||||
self.name = name
|
||||
self.sort = sort
|
||||
|
||||
|
@ -212,7 +217,6 @@ class Publishers(Base):
|
|||
return u"<Publishers('{0},{1}')>".format(self.name, self.sort)
|
||||
|
||||
|
||||
|
||||
class Data(Base):
|
||||
__tablename__ = 'data'
|
||||
|
||||
|
@ -260,7 +264,7 @@ class Books(Base):
|
|||
identifiers = relationship('Identifiers', backref='books')
|
||||
|
||||
def __init__(self, title, sort, author_sort, timestamp, pubdate, series_index, last_modified, path, has_cover,
|
||||
authors, tags, languages = None):
|
||||
authors, tags, languages=None):
|
||||
self.title = title
|
||||
self.sort = sort
|
||||
self.author_sort = author_sort
|
||||
|
@ -300,7 +304,7 @@ def setup_db():
|
|||
global session
|
||||
global cc_classes
|
||||
|
||||
if config.config_calibre_dir is None or config.config_calibre_dir == u'':
|
||||
if config.config_calibre_dir is None or config.config_calibre_dir == u'':
|
||||
content = ub.session.query(ub.Settings).first()
|
||||
content.config_calibre_dir = None
|
||||
content.db_configured = False
|
||||
|
@ -309,7 +313,7 @@ def setup_db():
|
|||
return False
|
||||
|
||||
dbpath = os.path.join(config.config_calibre_dir, "metadata.db")
|
||||
engine = create_engine('sqlite:///'+ dbpath, echo=False, isolation_level="SERIALIZABLE")
|
||||
engine = create_engine('sqlite:///' + dbpath, echo=False, isolation_level="SERIALIZABLE")
|
||||
try:
|
||||
conn = engine.connect()
|
||||
except Exception:
|
||||
|
|
|
@ -12,7 +12,7 @@ def extractCover(zipFile, coverFile, coverpath, tmp_file_name):
|
|||
if coverFile is None:
|
||||
return None
|
||||
else:
|
||||
zipCoverPath = os.path.join(coverpath , coverFile).replace('\\','/')
|
||||
zipCoverPath = os.path.join(coverpath, coverFile).replace('\\', '/')
|
||||
cf = zipFile.read(zipCoverPath)
|
||||
prefix = os.path.splitext(tmp_file_name)[0]
|
||||
tmp_cover_name = prefix + '.' + os.path.basename(zipCoverPath)
|
||||
|
@ -93,7 +93,7 @@ def get_epub_info(tmp_file_path, original_file_name, original_file_extension):
|
|||
coversection = tree.xpath("/pkg:package/pkg:manifest/pkg:item[@id='"+meta_cover[0]+"']/@href", namespaces=ns)
|
||||
if len(coversection) > 0:
|
||||
filetype = coversection[0].rsplit('.', 1)[-1]
|
||||
if filetype == "xhtml" or filetype == "html": #if cover is (x)html format
|
||||
if filetype == "xhtml" or filetype == "html": # if cover is (x)html format
|
||||
markup = epubZip.read(os.path.join(coverpath, coversection[0]))
|
||||
markupTree = etree.fromstring(markup)
|
||||
# no matter xhtml or html with no namespace
|
||||
|
|
|
@ -3,10 +3,7 @@
|
|||
|
||||
from lxml import etree
|
||||
import uploader
|
||||
#try:
|
||||
# from io import StringIO
|
||||
#except ImportError:
|
||||
# import StringIO
|
||||
|
||||
|
||||
def get_fb2_info(tmp_file_path, original_file_extension):
|
||||
|
||||
|
|
120
cps/helper.py
120
cps/helper.py
|
@ -45,7 +45,7 @@ import web
|
|||
try:
|
||||
import unidecode
|
||||
use_unidecode = True
|
||||
except Exception as e:
|
||||
except ImportError:
|
||||
use_unidecode = False
|
||||
|
||||
# Global variables
|
||||
|
@ -55,6 +55,7 @@ updater_thread = None
|
|||
RET_SUCCESS = 1
|
||||
RET_FAIL = 0
|
||||
|
||||
|
||||
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 ==
|
||||
book_id).first()
|
||||
|
@ -101,7 +102,7 @@ def make_mobi(book_id, calibrepath):
|
|||
if nextline != "\r\n":
|
||||
# Format of error message (kindlegen translates its output texts):
|
||||
# Error(prcgen):E23006: Language not recognized in metadata.The dc:Language field is mandatory.Aborting.
|
||||
conv_error=re.search(".*\(.*\):(E\d+):\s(.*)",nextline)
|
||||
conv_error = re.search(".*\(.*\):(E\d+):\s(.*)", nextline)
|
||||
# If error occoures, log in every case
|
||||
if conv_error:
|
||||
error_message = _(u"Kindlegen failed with Error %(error)s. Message: %(message)s",
|
||||
|
@ -123,7 +124,7 @@ def make_mobi(book_id, calibrepath):
|
|||
else:
|
||||
app.logger.info("make_mobi: kindlegen failed with error while converting book")
|
||||
if not error_message:
|
||||
error_message='kindlegen failed, no excecution permissions'
|
||||
error_message = 'kindlegen failed, no excecution permissions'
|
||||
return error_message, RET_FAIL
|
||||
else:
|
||||
error_message = "make_mobi: epub not found: %s.epub" % file_path
|
||||
|
@ -182,9 +183,9 @@ def send_raw_email(kindle_mail, msg):
|
|||
|
||||
smtplib.stderr = org_stderr
|
||||
|
||||
except (socket.error, smtplib.SMTPRecipientsRefused, smtplib.SMTPException) as e:
|
||||
except (socket.error, smtplib.SMTPRecipientsRefused, smtplib.SMTPException) as ex:
|
||||
app.logger.error(traceback.print_exc())
|
||||
return _("Failed to send mail: %s" % str(e))
|
||||
return _("Failed to send mail: %s" % str(ex))
|
||||
|
||||
return None
|
||||
|
||||
|
@ -230,8 +231,8 @@ def send_mail(book_id, kindle_mail, calibrepath):
|
|||
if resultCode == RET_SUCCESS:
|
||||
msg.attach(get_attachment(data))
|
||||
else:
|
||||
app.logger.error = (data)
|
||||
return data #_("Could not convert epub to mobi")
|
||||
app.logger.error = data
|
||||
return data # _("Could not convert epub to mobi")
|
||||
elif 'pdf' in formats:
|
||||
msg.attach(get_attachment(formats['pdf']))
|
||||
else:
|
||||
|
@ -255,7 +256,7 @@ def get_attachment(file_path):
|
|||
return attachment
|
||||
except IOError:
|
||||
traceback.print_exc()
|
||||
app.logger.error = (u'The requested file could not be read. Maybe wrong permissions?')
|
||||
app.logger.error = u'The requested file could not be read. Maybe wrong permissions?'
|
||||
return None
|
||||
|
||||
|
||||
|
@ -268,18 +269,18 @@ def get_valid_filename(value, replace_whitespace=True):
|
|||
value = value[:-1]+u'_'
|
||||
value = value.replace("/", "_").replace(":", "_").strip('\0')
|
||||
if use_unidecode:
|
||||
value=(unidecode.unidecode(value)).strip()
|
||||
value = (unidecode.unidecode(value)).strip()
|
||||
else:
|
||||
value=value.replace(u'§',u'SS')
|
||||
value=value.replace(u'ß',u'ss')
|
||||
value = value.replace(u'§', u'SS')
|
||||
value = value.replace(u'ß', u'ss')
|
||||
value = unicodedata.normalize('NFKD', value)
|
||||
re_slugify = re.compile('[\W\s-]', re.UNICODE)
|
||||
if isinstance(value, str): #Python3 str, Python2 unicode
|
||||
if isinstance(value, str): # Python3 str, Python2 unicode
|
||||
value = re_slugify.sub('', value).strip()
|
||||
else:
|
||||
value = unicode(re_slugify.sub('', value).strip())
|
||||
if replace_whitespace:
|
||||
#*+:\"/<>? are replaced by _
|
||||
# *+:\"/<>? are replaced by _
|
||||
value = re.sub(r'[\*\+:\\\"/<>\?]+', u'_', value, flags=re.U)
|
||||
# pipe has to be replaced with comma
|
||||
value = re.sub(r'[\|]+', u',', value, flags=re.U)
|
||||
|
@ -289,48 +290,66 @@ def get_valid_filename(value, replace_whitespace=True):
|
|||
|
||||
return value
|
||||
|
||||
|
||||
def get_sorted_author(value):
|
||||
regexes = ["^(JR|SR)\.?$","^I{1,3}\.?$","^IV\.?$"]
|
||||
regexes = ["^(JR|SR)\.?$", "^I{1,3}\.?$", "^IV\.?$"]
|
||||
combined = "(" + ")|(".join(regexes) + ")"
|
||||
value = value.split(" ")
|
||||
if re.match(combined, value[-1].upper()):
|
||||
value2 = value[-2] + ", " + " ".join(value[:-2]) + " " + value[-1]
|
||||
else:
|
||||
value2 = value[-1] + ", " + " ".join(value[:-1])
|
||||
try:
|
||||
value = value.split(" ")
|
||||
if re.match(combined, value[-1].upper()):
|
||||
value2 = value[-2] + ", " + " ".join(value[:-2]) + " " + value[-1]
|
||||
else:
|
||||
value2 = value[-1] + ", " + " ".join(value[:-1])
|
||||
except Exception:
|
||||
logging.getLogger('cps.web').error("Sorting author " + str(value) + "failed")
|
||||
value2 = value
|
||||
return value2
|
||||
|
||||
|
||||
def delete_book(book, calibrepath):
|
||||
path = os.path.join(calibrepath, book.path)#.replace('/',os.path.sep)).replace('\\',os.path.sep)
|
||||
path = os.path.join(calibrepath, book.path) # .replace('/',os.path.sep)).replace('\\',os.path.sep)
|
||||
shutil.rmtree(path, ignore_errors=True)
|
||||
|
||||
|
||||
# ToDo: Implement delete book on gdrive
|
||||
def delete_book_gdrive(book):
|
||||
pass
|
||||
|
||||
def update_dir_stucture(book_id, calibrepath):
|
||||
db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort)
|
||||
book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
|
||||
path = os.path.join(calibrepath, book.path)
|
||||
|
||||
authordir = book.path.split('/')[0]
|
||||
new_authordir = get_valid_filename(book.authors[0].name)
|
||||
titledir = book.path.split('/')[1]
|
||||
new_titledir = get_valid_filename(book.title) + " (" + str(book_id) + ")"
|
||||
def update_dir_stucture(book_id, calibrepath):
|
||||
localbook = db.session.query(db.Books).filter(db.Books.id == book_id).first()
|
||||
path = os.path.join(calibrepath, localbook.path)
|
||||
|
||||
authordir = localbook.path.split('/')[0]
|
||||
new_authordir = get_valid_filename(localbook.authors[0].name)
|
||||
|
||||
titledir = localbook.path.split('/')[1]
|
||||
new_titledir = get_valid_filename(localbook.title) + " (" + str(book_id) + ")"
|
||||
|
||||
if titledir != new_titledir:
|
||||
new_title_path = os.path.join(os.path.dirname(path), new_titledir)
|
||||
os.rename(path, new_title_path)
|
||||
path = new_title_path
|
||||
book.path = book.path.split('/')[0] + '/' + new_titledir
|
||||
|
||||
try:
|
||||
new_title_path = os.path.join(os.path.dirname(path), new_titledir)
|
||||
os.renames(path, new_title_path)
|
||||
path = new_title_path
|
||||
localbook.path = localbook.path.split('/')[0] + '/' + new_titledir
|
||||
except OSError as ex:
|
||||
logging.getLogger('cps.web').error("Rename title from: " + path + " to " + new_title_path)
|
||||
logging.getLogger('cps.web').error(ex, exc_info=True)
|
||||
return _('Rename title from: "%s" to "%s" failed with error: %s' % (path, new_title_path, str(ex)))
|
||||
if authordir != new_authordir:
|
||||
new_author_path = os.path.join(os.path.join(calibrepath, new_authordir), os.path.basename(path))
|
||||
os.renames(path, new_author_path)
|
||||
book.path = new_authordir + '/' + book.path.split('/')[1]
|
||||
db.session.commit()
|
||||
try:
|
||||
new_author_path = os.path.join(os.path.join(calibrepath, new_authordir), os.path.basename(path))
|
||||
os.renames(path, new_author_path)
|
||||
localbook.path = new_authordir + '/' + localbook.path.split('/')[1]
|
||||
except OSError as ex:
|
||||
logging.getLogger('cps.web').error("Rename author from: " + path + " to " + new_author_path)
|
||||
logging.getLogger('cps.web').error(ex, exc_info=True)
|
||||
return _('Rename author from: "%s" to "%s" failed with error: %s' % (path, new_title_path, str(ex)))
|
||||
return False
|
||||
|
||||
|
||||
def update_dir_structure_gdrive(book_id):
|
||||
db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort)
|
||||
error = False
|
||||
book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
|
||||
|
||||
authordir = book.path.split('/')[0]
|
||||
|
@ -340,24 +359,24 @@ def update_dir_structure_gdrive(book_id):
|
|||
|
||||
if titledir != new_titledir:
|
||||
print (titledir)
|
||||
gFile=gd.getFileFromEbooksFolder(web.Gdrive.Instance().drive,os.path.dirname(book.path),titledir)
|
||||
gFile['title']= new_titledir
|
||||
gFile = gd.getFileFromEbooksFolder(web.Gdrive.Instance().drive, os.path.dirname(book.path), titledir)
|
||||
gFile['title'] = new_titledir
|
||||
gFile.Upload()
|
||||
book.path = book.path.split('/')[0] + '/' + new_titledir
|
||||
|
||||
if authordir != new_authordir:
|
||||
gFile=gd.getFileFromEbooksFolder(web.Gdrive.Instance().drive,None,authordir)
|
||||
gFile = gd.getFileFromEbooksFolder(web.Gdrive.Instance().drive, None, authordir)
|
||||
gFile['title'] = new_authordir
|
||||
gFile.Upload()
|
||||
book.path = new_authordir + '/' + book.path.split('/')[1]
|
||||
return error
|
||||
|
||||
db.session.commit()
|
||||
|
||||
class Updater(threading.Thread):
|
||||
|
||||
def __init__(self):
|
||||
threading.Thread.__init__(self)
|
||||
self.status=0
|
||||
self.status = 0
|
||||
|
||||
def run(self):
|
||||
global global_task
|
||||
|
@ -370,7 +389,7 @@ class Updater(threading.Thread):
|
|||
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.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()
|
||||
|
@ -391,8 +410,8 @@ class Updater(threading.Thread):
|
|||
return self.status
|
||||
|
||||
@classmethod
|
||||
def file_to_list(self, file):
|
||||
return [x.strip() for x in open(file, 'r') if not x.startswith('#EXT')]
|
||||
def file_to_list(self, filelist):
|
||||
return [x.strip() for x in open(filelist, 'r') if not x.startswith('#EXT')]
|
||||
|
||||
@classmethod
|
||||
def one_minus_two(self, one, two):
|
||||
|
@ -401,8 +420,8 @@ class Updater(threading.Thread):
|
|||
@classmethod
|
||||
def reduce_dirs(self, delete_files, new_list):
|
||||
new_delete = []
|
||||
for file in delete_files:
|
||||
parts = file.split(os.sep)
|
||||
for filename in delete_files:
|
||||
parts = filename.split(os.sep)
|
||||
sub = ''
|
||||
for part in parts:
|
||||
sub = os.path.join(sub, part)
|
||||
|
@ -460,8 +479,8 @@ class Updater(threading.Thread):
|
|||
if change_permissions:
|
||||
try:
|
||||
os.chown(dst_file, permission.st_uid, permission.st_gid)
|
||||
except Exception as e:
|
||||
e = sys.exc_info()
|
||||
except Exception:
|
||||
# ex = sys.exc_info()
|
||||
old_permissions = os.stat(dst_file)
|
||||
logging.getLogger('cps.web').debug('Fail change permissions of ' + str(dst_file) + '. Before: '
|
||||
+ str(old_permissions.st_uid) + ':' + str(old_permissions.st_gid) + ' After: '
|
||||
|
@ -508,4 +527,3 @@ class Updater(threading.Thread):
|
|||
except Exception:
|
||||
logging.getLogger('cps.web').debug("Could not remove:" + item_path)
|
||||
shutil.rmtree(source, ignore_errors=True)
|
||||
|
||||
|
|
Binary file not shown.
|
@ -21,7 +21,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Calibre-web\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
|
||||
"POT-Creation-Date: 2017-11-12 14:54+0100\n"
|
||||
"POT-Creation-Date: 2017-11-30 16:45+0100\n"
|
||||
"PO-Revision-Date: 2016-07-12 19:54+0200\n"
|
||||
"Last-Translator: Ozzie Isaacs\n"
|
||||
"Language: de\n"
|
||||
|
@ -32,184 +32,194 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.5.1\n"
|
||||
|
||||
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1398
|
||||
#: cps/book_formats.py:119 cps/book_formats.py:123 cps/web.py:1401
|
||||
msgid "not installed"
|
||||
msgstr "Nicht installiert"
|
||||
|
||||
#: cps/helper.py:77
|
||||
#: cps/helper.py:78
|
||||
#, python-format
|
||||
msgid "kindlegen binary %(kindlepath)s not found"
|
||||
msgstr "Kindlegen Programm %(kindlepath)s nicht gefunden"
|
||||
|
||||
#: cps/helper.py:83
|
||||
#: cps/helper.py:84
|
||||
#, python-format
|
||||
msgid "epub format not found for book id: %(book)d"
|
||||
msgstr "epub Format für Bücher-ID %(book)d nicht gefunden"
|
||||
|
||||
#: cps/helper.py:93
|
||||
#: cps/helper.py:94
|
||||
msgid "kindlegen failed, no execution permissions"
|
||||
msgstr "Kindlegen Aufruf fehlgeschlagen, keine Ausführungsberechtigung"
|
||||
|
||||
#: cps/helper.py:108
|
||||
#: cps/helper.py:109
|
||||
#, python-format
|
||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||
msgstr "Kindlegen Aufruf mit Fehler %(error)s. Text: %(message)s fehlgeschlagen "
|
||||
|
||||
#: cps/helper.py:187
|
||||
#: cps/helper.py:188
|
||||
#, python-format
|
||||
msgid "Failed to send mail: %s"
|
||||
msgstr "E-Mail: %s konnte nicht gesendet werden"
|
||||
|
||||
#: cps/helper.py:194
|
||||
#: cps/helper.py:195
|
||||
msgid "Calibre-web test email"
|
||||
msgstr "Calibre-web Test E-Mail"
|
||||
|
||||
#: cps/helper.py:195 cps/helper.py:207
|
||||
#: cps/helper.py:196 cps/helper.py:208
|
||||
msgid "This email has been sent via calibre web."
|
||||
msgstr "Die E-Mail wurde via calibre-web versendet"
|
||||
|
||||
#: cps/helper.py:204 cps/templates/detail.html:43
|
||||
#: cps/helper.py:205 cps/templates/detail.html:43
|
||||
msgid "Send to Kindle"
|
||||
msgstr "An Kindle senden"
|
||||
|
||||
#: cps/helper.py:224 cps/helper.py:238
|
||||
#: cps/helper.py:225 cps/helper.py:239
|
||||
msgid "Could not find any formats suitable for sending by email"
|
||||
msgstr ""
|
||||
"Konnte keine Formate finden welche für das versenden per E-Mail geeignet "
|
||||
"sind"
|
||||
|
||||
#: cps/helper.py:338
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr "Umbenennen des Titelpfades \"%s\" nach \"%s\" schlug fehl: %s"
|
||||
|
||||
#: cps/helper.py:347
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr "Umbenennen des Authorpfades \"%s\" nach \"%s\" schlug fehl: %s"
|
||||
|
||||
#: cps/ub.py:577
|
||||
msgid "Guest"
|
||||
msgstr "Gast"
|
||||
|
||||
#: cps/web.py:964
|
||||
#: cps/web.py:967
|
||||
msgid "Requesting update package"
|
||||
msgstr "Frage Update Paket an"
|
||||
|
||||
#: cps/web.py:965
|
||||
#: cps/web.py:968
|
||||
msgid "Downloading update package"
|
||||
msgstr "Lade Update Paket herunter"
|
||||
|
||||
#: cps/web.py:966
|
||||
#: cps/web.py:969
|
||||
msgid "Unzipping update package"
|
||||
msgstr "Entpacke Update Paket"
|
||||
|
||||
#: cps/web.py:967
|
||||
#: cps/web.py:970
|
||||
msgid "Files are replaced"
|
||||
msgstr "Ersetze Dateien"
|
||||
|
||||
#: cps/web.py:968
|
||||
#: cps/web.py:971
|
||||
msgid "Database connections are closed"
|
||||
msgstr "Schließe Datenbankverbindungen"
|
||||
|
||||
#: cps/web.py:969
|
||||
#: cps/web.py:972
|
||||
msgid "Server is stopped"
|
||||
msgstr "Stoppe Server"
|
||||
|
||||
#: cps/web.py:970
|
||||
#: cps/web.py:973
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr "Update abgeschlossen, bitte okay drücken und Seite neu laden"
|
||||
|
||||
#: cps/web.py:1044
|
||||
#: cps/web.py:1047
|
||||
msgid "Recently Added Books"
|
||||
msgstr "Kürzlich hinzugefügte Bücher"
|
||||
|
||||
#: cps/web.py:1054
|
||||
#: cps/web.py:1057
|
||||
msgid "Newest Books"
|
||||
msgstr "Neueste Bücher"
|
||||
|
||||
#: cps/web.py:1065
|
||||
#: cps/web.py:1069
|
||||
msgid "Oldest Books"
|
||||
msgstr "Älteste Bücher"
|
||||
|
||||
#: cps/web.py:1077
|
||||
#: cps/web.py:1081
|
||||
msgid "Books (A-Z)"
|
||||
msgstr "Bücher (A-Z)"
|
||||
|
||||
#: cps/web.py:1088
|
||||
#: cps/web.py:1092
|
||||
msgid "Books (Z-A)"
|
||||
msgstr "Bücher (Z-A)"
|
||||
|
||||
#: cps/web.py:1116
|
||||
#: cps/web.py:1120
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr "Beliebte Bücher (die meisten Downloads)"
|
||||
|
||||
#: cps/web.py:1129
|
||||
#: cps/web.py:1133
|
||||
msgid "Best rated books"
|
||||
msgstr "Best bewertete Bücher"
|
||||
|
||||
#: cps/templates/index.xml:32 cps/web.py:1140
|
||||
#: cps/templates/index.xml:32 cps/web.py:1144
|
||||
msgid "Random Books"
|
||||
msgstr "Zufällige Bücher"
|
||||
|
||||
#: cps/web.py:1154
|
||||
#: cps/web.py:1158
|
||||
msgid "Author list"
|
||||
msgstr "Autorenliste"
|
||||
|
||||
#: cps/web.py:1166 cps/web.py:1225 cps/web.py:1355 cps/web.py:1827
|
||||
#: cps/web.py:1170 cps/web.py:1228 cps/web.py:1358 cps/web.py:1827
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr ""
|
||||
"Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht "
|
||||
"zugänglich."
|
||||
|
||||
#: cps/templates/index.xml:64 cps/web.py:1209
|
||||
#: cps/templates/index.xml:64 cps/web.py:1212
|
||||
msgid "Series list"
|
||||
msgstr "Liste Serien"
|
||||
|
||||
#: cps/web.py:1223
|
||||
#: cps/web.py:1226
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr "Serie: %(serie)s"
|
||||
|
||||
#: cps/web.py:1256
|
||||
#: cps/web.py:1259
|
||||
msgid "Available languages"
|
||||
msgstr "Verfügbare Sprachen"
|
||||
|
||||
#: cps/web.py:1273
|
||||
#: cps/web.py:1276
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr "Sprache: %(name)s"
|
||||
|
||||
#: cps/templates/index.xml:58 cps/web.py:1283
|
||||
#: cps/templates/index.xml:58 cps/web.py:1286
|
||||
msgid "Category list"
|
||||
msgstr "Kategorieliste"
|
||||
|
||||
#: cps/web.py:1297
|
||||
#: cps/web.py:1300
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr "Kategorie: %(name)s"
|
||||
|
||||
#: cps/web.py:1409
|
||||
#: cps/web.py:1412
|
||||
msgid "Excecution permissions missing"
|
||||
msgstr "Ausführungsberechtigung nicht vorhanden"
|
||||
|
||||
#: cps/web.py:1423
|
||||
#: cps/web.py:1426
|
||||
msgid "Statistics"
|
||||
msgstr "Statistiken"
|
||||
|
||||
#: cps/web.py:1587
|
||||
#: cps/web.py:1591
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr "Server neu gestartet,bitte Seite neu laden"
|
||||
|
||||
#: cps/web.py:1589
|
||||
#: cps/web.py:1593
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr "Server wird runtergefahren, bitte Fenster schließen"
|
||||
|
||||
#: cps/web.py:1605
|
||||
#: cps/web.py:1609
|
||||
msgid "Update done"
|
||||
msgstr "Update durchgeführt"
|
||||
|
||||
#: cps/web.py:1687 cps/web.py:1700
|
||||
#: cps/web.py:1691 cps/web.py:1704
|
||||
msgid "search"
|
||||
msgstr "Suche"
|
||||
|
||||
#: cps/templates/index.xml:39 cps/templates/index.xml:42
|
||||
#: cps/templates/layout.html:131 cps/web.py:1782
|
||||
#: cps/templates/layout.html:132 cps/web.py:1782
|
||||
msgid "Read Books"
|
||||
msgstr "Gelesene Bücher"
|
||||
|
||||
#: cps/templates/index.xml:45 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:132 cps/web.py:1785
|
||||
#: cps/templates/index.xml:46 cps/templates/index.xml:49
|
||||
#: cps/templates/layout.html:134 cps/web.py:1785
|
||||
msgid "Unread Books"
|
||||
msgstr "Ungelesene Bücher"
|
||||
|
||||
|
@ -217,7 +227,7 @@ msgstr "Ungelesene Bücher"
|
|||
msgid "Read a Book"
|
||||
msgstr "Lese ein Buch"
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:2555
|
||||
#: cps/web.py:1925 cps/web.py:2556
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr "Bitte alle Felder ausfüllen!"
|
||||
|
||||
|
@ -272,7 +282,7 @@ msgstr "Buch erfolgreich versandt an %(kindlemail)s"
|
|||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr "Beim Senden des Buchs trat ein Fehler auf: %(res)s"
|
||||
|
||||
#: cps/web.py:2085 cps/web.py:2640
|
||||
#: cps/web.py:2085 cps/web.py:2641
|
||||
msgid "Please configure your kindle email address first..."
|
||||
msgstr "Bitte die Kindle E-Mail Adresse zuuerst konfigurieren..."
|
||||
|
||||
|
@ -281,181 +291,181 @@ msgstr "Bitte die Kindle E-Mail Adresse zuuerst konfigurieren..."
|
|||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr "Das Buch wurde dem Bücherregal: %(sname)s hinzugefügt"
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2166
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr "Das Buch wurde aus dem Bücherregal: %(sname)s entfernt"
|
||||
|
||||
#: cps/web.py:2183 cps/web.py:2207
|
||||
#: cps/web.py:2185 cps/web.py:2209
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr "Es existiert bereits ein Bücheregal mit dem Titel '%(title)s'"
|
||||
|
||||
#: cps/web.py:2188
|
||||
#: cps/web.py:2190
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr "Bücherregal %(title)s erzeugt"
|
||||
|
||||
#: cps/web.py:2190 cps/web.py:2218
|
||||
#: cps/web.py:2192 cps/web.py:2220
|
||||
msgid "There was an error"
|
||||
msgstr "Es trat ein Fehler auf"
|
||||
|
||||
#: cps/web.py:2191 cps/web.py:2193
|
||||
#: cps/web.py:2193 cps/web.py:2195
|
||||
msgid "create a shelf"
|
||||
msgstr "Bücherregal erzeugen"
|
||||
|
||||
#: cps/web.py:2216
|
||||
#: cps/web.py:2218
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr "Bücherregal %(title)s verändert"
|
||||
|
||||
#: cps/web.py:2219 cps/web.py:2221
|
||||
#: cps/web.py:2221 cps/web.py:2223
|
||||
msgid "Edit a shelf"
|
||||
msgstr "Bücherregal editieren"
|
||||
|
||||
#: cps/web.py:2242
|
||||
#: cps/web.py:2244
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr "Bücherregal %(name)s erfolgreich gelöscht"
|
||||
|
||||
#: cps/web.py:2264
|
||||
#: cps/web.py:2266
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr "Bücherregal: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2267
|
||||
#: cps/web.py:2269
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr "Fehler beim Öffnen. Bücherregel exisitert nicht oder ist nicht zugänglich"
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2300
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr "Reihenfolge in Bücherregal '%(name)s' verändern"
|
||||
|
||||
#: cps/web.py:2368
|
||||
#: cps/web.py:2369
|
||||
msgid "Found an existing account for this email address."
|
||||
msgstr "Es existiert ein Benutzerkonto für diese E-Mailadresse"
|
||||
|
||||
#: cps/web.py:2370 cps/web.py:2374
|
||||
#: cps/web.py:2371 cps/web.py:2375
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr "%(name)s's Profil"
|
||||
|
||||
#: cps/web.py:2371
|
||||
#: cps/web.py:2372
|
||||
msgid "Profile updated"
|
||||
msgstr "Profil aktualisiert"
|
||||
|
||||
#: cps/web.py:2385
|
||||
#: cps/web.py:2386
|
||||
msgid "Admin page"
|
||||
msgstr "Admin Seite"
|
||||
|
||||
#: cps/web.py:2509
|
||||
#: cps/web.py:2510
|
||||
msgid "Calibre-web configuration updated"
|
||||
msgstr "Calibre-web Konfiguration wurde aktualisiert"
|
||||
|
||||
#: cps/web.py:2516 cps/web.py:2522 cps/web.py:2536
|
||||
#: cps/web.py:2517 cps/web.py:2523 cps/web.py:2537
|
||||
msgid "Basic Configuration"
|
||||
msgstr "Basis Konfiguration"
|
||||
|
||||
#: cps/web.py:2520
|
||||
#: cps/web.py:2521
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr "DB Speicherort ist ungültig, bitte Pfad korrigieren"
|
||||
|
||||
#: cps/templates/admin.html:34 cps/web.py:2557 cps/web.py:2610
|
||||
#: cps/templates/admin.html:34 cps/web.py:2558 cps/web.py:2611
|
||||
msgid "Add new user"
|
||||
msgstr "Neuen Benutzer hinzufügen"
|
||||
|
||||
#: cps/web.py:2602
|
||||
#: cps/web.py:2603
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr "Benutzer '%(user)s' angelegt"
|
||||
|
||||
#: cps/web.py:2606
|
||||
#: cps/web.py:2607
|
||||
msgid "Found an existing account for this email address or nickname."
|
||||
msgstr ""
|
||||
"Es existiert ein Benutzerkonto für diese Emailadresse oder den "
|
||||
"Benutzernamen."
|
||||
|
||||
#: cps/web.py:2628
|
||||
#: cps/web.py:2629
|
||||
msgid "Mail settings updated"
|
||||
msgstr "E-Mail Einstellungen aktualisiert"
|
||||
|
||||
#: cps/web.py:2635
|
||||
#: cps/web.py:2636
|
||||
#, python-format
|
||||
msgid "Test E-Mail successfully send to %(kindlemail)s"
|
||||
msgstr "Test E-Mail erfolgreich an %(kindlemail)s versendet"
|
||||
|
||||
#: cps/web.py:2638
|
||||
#: cps/web.py:2639
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test E-Mail: %(res)s"
|
||||
msgstr "Fehler beim versenden der Test E-Mail: %(res)s"
|
||||
|
||||
#: cps/web.py:2642
|
||||
#: cps/web.py:2643
|
||||
msgid "E-Mail settings updated"
|
||||
msgstr "E-Mail Einstellungen wurde aktualisiert"
|
||||
|
||||
#: cps/web.py:2643
|
||||
#: cps/web.py:2644
|
||||
msgid "Edit mail settings"
|
||||
msgstr "E-Mail Einstellungen editieren"
|
||||
|
||||
#: cps/web.py:2672
|
||||
#: cps/web.py:2673
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr "Benutzer '%(nick)s' gelöscht"
|
||||
|
||||
#: cps/web.py:2780
|
||||
#: cps/web.py:2781
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr "Benutzer '%(nick)s' aktualisiert"
|
||||
|
||||
#: cps/web.py:2783
|
||||
#: cps/web.py:2784
|
||||
msgid "An unknown error occured."
|
||||
msgstr "Es ist ein unbekanter Fehler aufgetreten"
|
||||
|
||||
#: cps/web.py:2786
|
||||
#: cps/web.py:2787
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr "Benutzer %(nick)s bearbeiten"
|
||||
|
||||
#: cps/web.py:2802
|
||||
#: cps/web.py:2803
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr ""
|
||||
"Buch öffnen fehlgeschlagen. Datei existiert nicht, oder ist nicht "
|
||||
"zugänglich"
|
||||
|
||||
#: cps/web.py:2817 cps/web.py:3018 cps/web.py:3161
|
||||
#: cps/web.py:2818 cps/web.py:3026 cps/web.py:3031 cps/web.py:3174
|
||||
msgid "edit metadata"
|
||||
msgstr "Metadaten editieren"
|
||||
|
||||
#: cps/web.py:2827 cps/web.py:3055
|
||||
#: cps/web.py:2828 cps/web.py:3068
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr "Die Dateiendung \"%s\" kann nicht auf diesen Server hochgeladen werden"
|
||||
|
||||
#: cps/web.py:2838
|
||||
#: cps/web.py:2839
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgstr ""
|
||||
msgstr "Fehler beim speichern der Datei %s."
|
||||
|
||||
#: cps/web.py:2858 cps/web.py:2862
|
||||
#: cps/web.py:2861 cps/web.py:2865
|
||||
msgid "unknown"
|
||||
msgstr "Unbekannt"
|
||||
|
||||
#: cps/web.py:3061
|
||||
#: cps/web.py:3074
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr "Datei müssen eine Erweiterung haben, um hochgeladen zu werden"
|
||||
|
||||
#: cps/web.py:3080
|
||||
#: cps/web.py:3093
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgstr "Fehler beim Erzeugen des Pfads %s (Zugriff verweigert)"
|
||||
|
||||
#: cps/web.py:3085
|
||||
#: cps/web.py:3098
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgstr "Fehler beim speichern der Datei %s (Zugriff verweigert)"
|
||||
|
||||
#: cps/web.py:3090
|
||||
#: cps/web.py:3103
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgstr "Fehler beim Löschen von Datei %s (Zugriff verweigert)"
|
||||
|
@ -660,7 +670,7 @@ msgstr "Beschreibung"
|
|||
msgid "Tags"
|
||||
msgstr "Tags"
|
||||
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:141
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:143
|
||||
#: cps/templates/search_form.html:37
|
||||
msgid "Series"
|
||||
msgstr "Serien"
|
||||
|
@ -695,7 +705,7 @@ msgstr "Nein"
|
|||
|
||||
#: cps/templates/book_edit.html:121
|
||||
msgid "Upload format"
|
||||
msgstr ""
|
||||
msgstr "Format hochladen"
|
||||
|
||||
#: cps/templates/book_edit.html:130
|
||||
msgid "view book after edit"
|
||||
|
@ -747,7 +757,7 @@ msgstr "Klicke auf das Bild um die Metadaten zu übertragen"
|
|||
msgid "Loading..."
|
||||
msgstr "Lade..."
|
||||
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:205
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:207
|
||||
msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
|
@ -956,7 +966,7 @@ msgstr "Einstellungen speichern"
|
|||
msgid "Save settings and send Test E-Mail"
|
||||
msgstr "Einstellungen speichern und Test E-Mail versenden"
|
||||
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:189
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:191
|
||||
msgid "Next"
|
||||
msgstr "Nächste"
|
||||
|
||||
|
@ -1001,7 +1011,7 @@ msgstr "Die neuesten Bücher"
|
|||
msgid "Show Random Books"
|
||||
msgstr "Zeige zufällige Bücher"
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:144
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:146
|
||||
msgid "Authors"
|
||||
msgstr "Autoren"
|
||||
|
||||
|
@ -1066,39 +1076,39 @@ msgstr "Aufsteigend"
|
|||
msgid "Descending"
|
||||
msgstr "Absteigend"
|
||||
|
||||
#: cps/templates/layout.html:135
|
||||
#: cps/templates/layout.html:137
|
||||
msgid "Discover"
|
||||
msgstr "Entdecke"
|
||||
|
||||
#: cps/templates/layout.html:138
|
||||
#: cps/templates/layout.html:140
|
||||
msgid "Categories"
|
||||
msgstr "Kategorien"
|
||||
|
||||
#: cps/templates/layout.html:147 cps/templates/search_form.html:58
|
||||
#: cps/templates/layout.html:149 cps/templates/search_form.html:58
|
||||
msgid "Languages"
|
||||
msgstr "Sprachen"
|
||||
|
||||
#: cps/templates/layout.html:150
|
||||
#: cps/templates/layout.html:152
|
||||
msgid "Public Shelves"
|
||||
msgstr "Öffentiche Bücherregale"
|
||||
|
||||
#: cps/templates/layout.html:154
|
||||
#: cps/templates/layout.html:156
|
||||
msgid "Your Shelves"
|
||||
msgstr "Deine Bücherregale"
|
||||
|
||||
#: cps/templates/layout.html:159
|
||||
#: cps/templates/layout.html:161
|
||||
msgid "Create a Shelf"
|
||||
msgstr "Bücherregal erzeugen"
|
||||
|
||||
#: cps/templates/layout.html:160 cps/templates/stats.html:3
|
||||
#: cps/templates/layout.html:162 cps/templates/stats.html:3
|
||||
msgid "About"
|
||||
msgstr "Über"
|
||||
|
||||
#: cps/templates/layout.html:174
|
||||
#: cps/templates/layout.html:176
|
||||
msgid "Previous"
|
||||
msgstr "Voerheriger"
|
||||
|
||||
#: cps/templates/layout.html:201
|
||||
#: cps/templates/layout.html:203
|
||||
msgid "Book Details"
|
||||
msgstr "Buchdetails"
|
||||
|
||||
|
@ -1274,11 +1284,11 @@ msgstr "Zeige Zufällige Bücher"
|
|||
|
||||
#: cps/templates/user_edit.html:50
|
||||
msgid "Show recent books"
|
||||
msgstr ""
|
||||
msgstr " kürzlich hinzugefügte Bücher"
|
||||
|
||||
#: cps/templates/user_edit.html:54
|
||||
msgid "Show sorted books"
|
||||
msgstr ""
|
||||
msgstr "Zeige Bücher sortiert"
|
||||
|
||||
#: cps/templates/user_edit.html:58
|
||||
msgid "Show hot books"
|
||||
|
|
|
@ -14,7 +14,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Calibre-web\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
|
||||
"POT-Creation-Date: 2017-11-12 14:54+0100\n"
|
||||
"POT-Creation-Date: 2017-11-30 16:45+0100\n"
|
||||
"PO-Revision-Date: 2017-04-04 15:09+0200\n"
|
||||
"Last-Translator: Juan F. Villa <juan.villa@paisdelconocimiento.org>\n"
|
||||
"Language: es\n"
|
||||
|
@ -25,180 +25,190 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.5.1\n"
|
||||
|
||||
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1398
|
||||
#: cps/book_formats.py:119 cps/book_formats.py:123 cps/web.py:1401
|
||||
msgid "not installed"
|
||||
msgstr "No instalado"
|
||||
|
||||
#: cps/helper.py:77
|
||||
#: cps/helper.py:78
|
||||
#, python-format
|
||||
msgid "kindlegen binary %(kindlepath)s not found"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:83
|
||||
#: cps/helper.py:84
|
||||
#, python-format
|
||||
msgid "epub format not found for book id: %(book)d"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:93
|
||||
#: cps/helper.py:94
|
||||
msgid "kindlegen failed, no execution permissions"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:108
|
||||
#: cps/helper.py:109
|
||||
#, python-format
|
||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:187
|
||||
#: cps/helper.py:188
|
||||
#, python-format
|
||||
msgid "Failed to send mail: %s"
|
||||
msgstr "Fallo al enviar el correo : %s"
|
||||
|
||||
#: cps/helper.py:194
|
||||
#: cps/helper.py:195
|
||||
msgid "Calibre-web test email"
|
||||
msgstr "Prueba de Correo Calibre-web"
|
||||
|
||||
#: cps/helper.py:195 cps/helper.py:207
|
||||
#: cps/helper.py:196 cps/helper.py:208
|
||||
msgid "This email has been sent via calibre web."
|
||||
msgstr "Este mensaje ha sido enviado via Calibre Web."
|
||||
|
||||
#: cps/helper.py:204 cps/templates/detail.html:43
|
||||
#: cps/helper.py:205 cps/templates/detail.html:43
|
||||
msgid "Send to Kindle"
|
||||
msgstr "Enviar a Kindle"
|
||||
|
||||
#: cps/helper.py:224 cps/helper.py:238
|
||||
#: cps/helper.py:225 cps/helper.py:239
|
||||
msgid "Could not find any formats suitable for sending by email"
|
||||
msgstr "Formato no compatible para enviar por correo electronico"
|
||||
|
||||
#: cps/helper.py:338
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:347
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/ub.py:577
|
||||
msgid "Guest"
|
||||
msgstr "Invitado"
|
||||
|
||||
#: cps/web.py:964
|
||||
#: cps/web.py:967
|
||||
msgid "Requesting update package"
|
||||
msgstr "Solicitando paquete de actualización"
|
||||
|
||||
#: cps/web.py:965
|
||||
#: cps/web.py:968
|
||||
msgid "Downloading update package"
|
||||
msgstr "Descargando paquete de actualización"
|
||||
|
||||
#: cps/web.py:966
|
||||
#: cps/web.py:969
|
||||
msgid "Unzipping update package"
|
||||
msgstr "Descomprimiendo paquete de actualización"
|
||||
|
||||
#: cps/web.py:967
|
||||
#: cps/web.py:970
|
||||
msgid "Files are replaced"
|
||||
msgstr "Ficheros sustituidos"
|
||||
|
||||
#: cps/web.py:968
|
||||
#: cps/web.py:971
|
||||
msgid "Database connections are closed"
|
||||
msgstr "Los conexiones de base datos están cerradas"
|
||||
|
||||
#: cps/web.py:969
|
||||
#: cps/web.py:972
|
||||
msgid "Server is stopped"
|
||||
msgstr "El servidor está detenido"
|
||||
|
||||
#: cps/web.py:970
|
||||
#: cps/web.py:973
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr "Actualización finalizada. Por favor, pulse OK y recargue la página"
|
||||
|
||||
#: cps/web.py:1044
|
||||
#: cps/web.py:1047
|
||||
msgid "Recently Added Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1054
|
||||
#: cps/web.py:1057
|
||||
msgid "Newest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1065
|
||||
#: cps/web.py:1069
|
||||
msgid "Oldest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1077
|
||||
#: cps/web.py:1081
|
||||
msgid "Books (A-Z)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1088
|
||||
#: cps/web.py:1092
|
||||
msgid "Books (Z-A)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1116
|
||||
#: cps/web.py:1120
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr "Libros populares (los mas descargados)"
|
||||
|
||||
#: cps/web.py:1129
|
||||
#: cps/web.py:1133
|
||||
msgid "Best rated books"
|
||||
msgstr "Libros mejor valorados"
|
||||
|
||||
#: cps/templates/index.xml:32 cps/web.py:1140
|
||||
#: cps/templates/index.xml:32 cps/web.py:1144
|
||||
msgid "Random Books"
|
||||
msgstr "Libros al azar"
|
||||
|
||||
#: cps/web.py:1154
|
||||
#: cps/web.py:1158
|
||||
msgid "Author list"
|
||||
msgstr "Lista de autores"
|
||||
|
||||
#: cps/web.py:1166 cps/web.py:1225 cps/web.py:1355 cps/web.py:1827
|
||||
#: cps/web.py:1170 cps/web.py:1228 cps/web.py:1358 cps/web.py:1827
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr "Error en la apertura del eBook. El archivo no existe o no es accesible:"
|
||||
|
||||
#: cps/templates/index.xml:64 cps/web.py:1209
|
||||
#: cps/templates/index.xml:64 cps/web.py:1212
|
||||
msgid "Series list"
|
||||
msgstr "Lista de series"
|
||||
|
||||
#: cps/web.py:1223
|
||||
#: cps/web.py:1226
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr "Series : %(serie)s"
|
||||
|
||||
#: cps/web.py:1256
|
||||
#: cps/web.py:1259
|
||||
msgid "Available languages"
|
||||
msgstr "Lenguajes disponibles"
|
||||
|
||||
#: cps/web.py:1273
|
||||
#: cps/web.py:1276
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr "Lenguaje: %(name)s"
|
||||
|
||||
#: cps/templates/index.xml:58 cps/web.py:1283
|
||||
#: cps/templates/index.xml:58 cps/web.py:1286
|
||||
msgid "Category list"
|
||||
msgstr "Lista de categorias"
|
||||
|
||||
#: cps/web.py:1297
|
||||
#: cps/web.py:1300
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr "Categoría : %(name)s"
|
||||
|
||||
#: cps/web.py:1409
|
||||
#: cps/web.py:1412
|
||||
msgid "Excecution permissions missing"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1423
|
||||
#: cps/web.py:1426
|
||||
msgid "Statistics"
|
||||
msgstr "Estadisticas"
|
||||
|
||||
#: cps/web.py:1587
|
||||
#: cps/web.py:1591
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr "Servidor reiniciado. Por favor, recargue la página"
|
||||
|
||||
#: cps/web.py:1589
|
||||
#: cps/web.py:1593
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr "Servidor en proceso de apagado. Por favor, cierre la ventana."
|
||||
|
||||
#: cps/web.py:1605
|
||||
#: cps/web.py:1609
|
||||
msgid "Update done"
|
||||
msgstr "Actualización realizada"
|
||||
|
||||
#: cps/web.py:1687 cps/web.py:1700
|
||||
#: cps/web.py:1691 cps/web.py:1704
|
||||
msgid "search"
|
||||
msgstr "búsqueda"
|
||||
|
||||
#: cps/templates/index.xml:39 cps/templates/index.xml:42
|
||||
#: cps/templates/layout.html:131 cps/web.py:1782
|
||||
#: cps/templates/layout.html:132 cps/web.py:1782
|
||||
msgid "Read Books"
|
||||
msgstr "Libros leídos"
|
||||
|
||||
#: cps/templates/index.xml:45 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:132 cps/web.py:1785
|
||||
#: cps/templates/index.xml:46 cps/templates/index.xml:49
|
||||
#: cps/templates/layout.html:134 cps/web.py:1785
|
||||
msgid "Unread Books"
|
||||
msgstr "Libros no leídos"
|
||||
|
||||
|
@ -206,7 +216,7 @@ msgstr "Libros no leídos"
|
|||
msgid "Read a Book"
|
||||
msgstr "Leer un libro"
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:2555
|
||||
#: cps/web.py:1925 cps/web.py:2556
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr "¡Por favor completar todos los campos!"
|
||||
|
||||
|
@ -261,7 +271,7 @@ msgstr "Envio de Libro a %(kindlemail)s correctamente"
|
|||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr "Ha sucedido un error en el envio del Libro: %(res)s"
|
||||
|
||||
#: cps/web.py:2085 cps/web.py:2640
|
||||
#: cps/web.py:2085 cps/web.py:2641
|
||||
msgid "Please configure your kindle email address first..."
|
||||
msgstr "Configurar primero la dirección de correo Kindle por favor..."
|
||||
|
||||
|
@ -270,179 +280,179 @@ msgstr "Configurar primero la dirección de correo Kindle por favor..."
|
|||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr "El libro fue agregado a el estante: %(sname)s"
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2166
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr "El libro fue removido del estante: %(sname)s"
|
||||
|
||||
#: cps/web.py:2183 cps/web.py:2207
|
||||
#: cps/web.py:2185 cps/web.py:2209
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr "Une étagère de ce nom '%(title)s' existe déjà."
|
||||
|
||||
#: cps/web.py:2188
|
||||
#: cps/web.py:2190
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr "Estante %(title)s creado"
|
||||
|
||||
#: cps/web.py:2190 cps/web.py:2218
|
||||
#: cps/web.py:2192 cps/web.py:2220
|
||||
msgid "There was an error"
|
||||
msgstr "Ha sucedido un error"
|
||||
|
||||
#: cps/web.py:2191 cps/web.py:2193
|
||||
#: cps/web.py:2193 cps/web.py:2195
|
||||
msgid "create a shelf"
|
||||
msgstr "crear un estante"
|
||||
|
||||
#: cps/web.py:2216
|
||||
#: cps/web.py:2218
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr "Estante %(title)s cambiado"
|
||||
|
||||
#: cps/web.py:2219 cps/web.py:2221
|
||||
#: cps/web.py:2221 cps/web.py:2223
|
||||
msgid "Edit a shelf"
|
||||
msgstr "Editar un estante"
|
||||
|
||||
#: cps/web.py:2242
|
||||
#: cps/web.py:2244
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr "Estante %(name)s fue borrado correctamente"
|
||||
|
||||
#: cps/web.py:2264
|
||||
#: cps/web.py:2266
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr "Estante: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2267
|
||||
#: cps/web.py:2269
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2300
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr "Cambiar orden del estante: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2368
|
||||
#: cps/web.py:2369
|
||||
msgid "Found an existing account for this email address."
|
||||
msgstr "Existe una cuenta vinculada a esta dirección de correo."
|
||||
|
||||
#: cps/web.py:2370 cps/web.py:2374
|
||||
#: cps/web.py:2371 cps/web.py:2375
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr "Perfil de %(name)s"
|
||||
|
||||
#: cps/web.py:2371
|
||||
#: cps/web.py:2372
|
||||
msgid "Profile updated"
|
||||
msgstr "Perfil actualizado"
|
||||
|
||||
#: cps/web.py:2385
|
||||
#: cps/web.py:2386
|
||||
msgid "Admin page"
|
||||
msgstr "Página de administración"
|
||||
|
||||
#: cps/web.py:2509
|
||||
#: cps/web.py:2510
|
||||
msgid "Calibre-web configuration updated"
|
||||
msgstr "Configuración de Calibre-web actualizada"
|
||||
|
||||
#: cps/web.py:2516 cps/web.py:2522 cps/web.py:2536
|
||||
#: cps/web.py:2517 cps/web.py:2523 cps/web.py:2537
|
||||
msgid "Basic Configuration"
|
||||
msgstr "Configuración básica"
|
||||
|
||||
#: cps/web.py:2520
|
||||
#: cps/web.py:2521
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr "Localicación de la BD inválida. Por favor, introduzca la ruta correcta."
|
||||
|
||||
#: cps/templates/admin.html:34 cps/web.py:2557 cps/web.py:2610
|
||||
#: cps/templates/admin.html:34 cps/web.py:2558 cps/web.py:2611
|
||||
msgid "Add new user"
|
||||
msgstr "Agregar un nuevo usuario"
|
||||
|
||||
#: cps/web.py:2602
|
||||
#: cps/web.py:2603
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr "Usuario '%(user)s' creado"
|
||||
|
||||
#: cps/web.py:2606
|
||||
#: cps/web.py:2607
|
||||
msgid "Found an existing account for this email address or nickname."
|
||||
msgstr ""
|
||||
"Se ha encontrado una cuenta vinculada a esta dirección de correo o nombre"
|
||||
" de usuario."
|
||||
|
||||
#: cps/web.py:2628
|
||||
#: cps/web.py:2629
|
||||
msgid "Mail settings updated"
|
||||
msgstr "Parámetros de correo actualizados"
|
||||
|
||||
#: cps/web.py:2635
|
||||
#: cps/web.py:2636
|
||||
#, python-format
|
||||
msgid "Test E-Mail successfully send to %(kindlemail)s"
|
||||
msgstr "Exito al realizar envio de prueba a %(kindlemail)s"
|
||||
|
||||
#: cps/web.py:2638
|
||||
#: cps/web.py:2639
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test E-Mail: %(res)s"
|
||||
msgstr "Error al realizar envio de prueba a E-Mail: %(res)s"
|
||||
|
||||
#: cps/web.py:2642
|
||||
#: cps/web.py:2643
|
||||
msgid "E-Mail settings updated"
|
||||
msgstr "Ajustes de correo electrónico actualizados"
|
||||
|
||||
#: cps/web.py:2643
|
||||
#: cps/web.py:2644
|
||||
msgid "Edit mail settings"
|
||||
msgstr "Editar parametros de correo"
|
||||
|
||||
#: cps/web.py:2672
|
||||
#: cps/web.py:2673
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr "Usuario '%(nick)s' borrado"
|
||||
|
||||
#: cps/web.py:2780
|
||||
#: cps/web.py:2781
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr "Usuario '%(nick)s' actualizado"
|
||||
|
||||
#: cps/web.py:2783
|
||||
#: cps/web.py:2784
|
||||
msgid "An unknown error occured."
|
||||
msgstr "Error inesperado."
|
||||
|
||||
#: cps/web.py:2786
|
||||
#: cps/web.py:2787
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr "Editar Usuario %(nick)s"
|
||||
|
||||
#: cps/web.py:2802
|
||||
#: cps/web.py:2803
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2817 cps/web.py:3018 cps/web.py:3161
|
||||
#: cps/web.py:2818 cps/web.py:3026 cps/web.py:3031 cps/web.py:3174
|
||||
msgid "edit metadata"
|
||||
msgstr "editar metainformación"
|
||||
|
||||
#: cps/web.py:2827 cps/web.py:3055
|
||||
#: cps/web.py:2828 cps/web.py:3068
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr "No se permite subir archivos con la extensión \"%s\" a este servidor"
|
||||
|
||||
#: cps/web.py:2838
|
||||
#: cps/web.py:2839
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2858 cps/web.py:2862
|
||||
#: cps/web.py:2861 cps/web.py:2865
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3061
|
||||
#: cps/web.py:3074
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr "El archivo a subir debe tener una extensión"
|
||||
|
||||
#: cps/web.py:3080
|
||||
#: cps/web.py:3093
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgstr "Fallo al crear la ruta %s (permiso negado)"
|
||||
|
||||
#: cps/web.py:3085
|
||||
#: cps/web.py:3098
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgstr "Fallo al almacenar el archivo %s (permiso negado)"
|
||||
|
||||
#: cps/web.py:3090
|
||||
#: cps/web.py:3103
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgstr "Fallo al borrar el archivo %s (permiso negado)"
|
||||
|
@ -647,7 +657,7 @@ msgstr "Descripcion"
|
|||
msgid "Tags"
|
||||
msgstr "Etiqueta"
|
||||
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:141
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:143
|
||||
#: cps/templates/search_form.html:37
|
||||
msgid "Series"
|
||||
msgstr "Series"
|
||||
|
@ -734,7 +744,7 @@ msgstr "Haga clic en la portada para cargar la metainformación en el formulario
|
|||
msgid "Loading..."
|
||||
msgstr "Cargando..."
|
||||
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:205
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:207
|
||||
msgid "Close"
|
||||
msgstr "Cerrar"
|
||||
|
||||
|
@ -943,7 +953,7 @@ msgstr "Guardar cambios"
|
|||
msgid "Save settings and send Test E-Mail"
|
||||
msgstr "Guardar cambios y enviar un correo de prueba"
|
||||
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:189
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:191
|
||||
msgid "Next"
|
||||
msgstr "Siguiente"
|
||||
|
||||
|
@ -988,7 +998,7 @@ msgstr "Libros recientes"
|
|||
msgid "Show Random Books"
|
||||
msgstr "Mostrar libros al azar"
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:144
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:146
|
||||
msgid "Authors"
|
||||
msgstr "Autores"
|
||||
|
||||
|
@ -1053,39 +1063,39 @@ msgstr ""
|
|||
msgid "Descending"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:135
|
||||
#: cps/templates/layout.html:137
|
||||
msgid "Discover"
|
||||
msgstr "Descubrir"
|
||||
|
||||
#: cps/templates/layout.html:138
|
||||
#: cps/templates/layout.html:140
|
||||
msgid "Categories"
|
||||
msgstr "Categoria"
|
||||
|
||||
#: cps/templates/layout.html:147 cps/templates/search_form.html:58
|
||||
#: cps/templates/layout.html:149 cps/templates/search_form.html:58
|
||||
msgid "Languages"
|
||||
msgstr "Lenguaje"
|
||||
|
||||
#: cps/templates/layout.html:150
|
||||
#: cps/templates/layout.html:152
|
||||
msgid "Public Shelves"
|
||||
msgstr "Estantes públicos"
|
||||
|
||||
#: cps/templates/layout.html:154
|
||||
#: cps/templates/layout.html:156
|
||||
msgid "Your Shelves"
|
||||
msgstr "Sus estantes"
|
||||
|
||||
#: cps/templates/layout.html:159
|
||||
#: cps/templates/layout.html:161
|
||||
msgid "Create a Shelf"
|
||||
msgstr "Crear un estante"
|
||||
|
||||
#: cps/templates/layout.html:160 cps/templates/stats.html:3
|
||||
#: cps/templates/layout.html:162 cps/templates/stats.html:3
|
||||
msgid "About"
|
||||
msgstr "Acerca de"
|
||||
|
||||
#: cps/templates/layout.html:174
|
||||
#: cps/templates/layout.html:176
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:201
|
||||
#: cps/templates/layout.html:203
|
||||
msgid "Book Details"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -20,7 +20,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Calibre-web\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
|
||||
"POT-Creation-Date: 2017-11-12 14:54+0100\n"
|
||||
"POT-Creation-Date: 2017-11-30 16:45+0100\n"
|
||||
"PO-Revision-Date: 2017-10-26 22:42+0200\n"
|
||||
"Last-Translator: Nicolas Roudninski <nicoroud@gmail.com>\n"
|
||||
"Language: fr\n"
|
||||
|
@ -31,182 +31,192 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.5.1\n"
|
||||
|
||||
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1398
|
||||
#: cps/book_formats.py:119 cps/book_formats.py:123 cps/web.py:1401
|
||||
msgid "not installed"
|
||||
msgstr "non installé"
|
||||
|
||||
#: cps/helper.py:77
|
||||
#: cps/helper.py:78
|
||||
#, python-format
|
||||
msgid "kindlegen binary %(kindlepath)s not found"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:83
|
||||
#: cps/helper.py:84
|
||||
#, python-format
|
||||
msgid "epub format not found for book id: %(book)d"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:93
|
||||
#: cps/helper.py:94
|
||||
msgid "kindlegen failed, no execution permissions"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:108
|
||||
#: cps/helper.py:109
|
||||
#, python-format
|
||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:187
|
||||
#: cps/helper.py:188
|
||||
#, python-format
|
||||
msgid "Failed to send mail: %s"
|
||||
msgstr "Impossible d'envoyer le courriel : %s"
|
||||
|
||||
#: cps/helper.py:194
|
||||
#: cps/helper.py:195
|
||||
msgid "Calibre-web test email"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:195 cps/helper.py:207
|
||||
#: cps/helper.py:196 cps/helper.py:208
|
||||
msgid "This email has been sent via calibre web."
|
||||
msgstr "Ce message a été envoyé depuis calibre web."
|
||||
|
||||
#: cps/helper.py:204 cps/templates/detail.html:43
|
||||
#: cps/helper.py:205 cps/templates/detail.html:43
|
||||
msgid "Send to Kindle"
|
||||
msgstr "Envoyer vers Kindle"
|
||||
|
||||
#: cps/helper.py:224 cps/helper.py:238
|
||||
#: cps/helper.py:225 cps/helper.py:239
|
||||
msgid "Could not find any formats suitable for sending by email"
|
||||
msgstr "Impossible de trouver un format adapté à envoyer par courriel"
|
||||
|
||||
#: cps/helper.py:338
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:347
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/ub.py:577
|
||||
msgid "Guest"
|
||||
msgstr "Invité"
|
||||
|
||||
#: cps/web.py:964
|
||||
#: cps/web.py:967
|
||||
msgid "Requesting update package"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:965
|
||||
#: cps/web.py:968
|
||||
msgid "Downloading update package"
|
||||
msgstr "Téléchargement la mise à jour"
|
||||
|
||||
#: cps/web.py:966
|
||||
#: cps/web.py:969
|
||||
msgid "Unzipping update package"
|
||||
msgstr "Décompression de la mise à jour"
|
||||
|
||||
#: cps/web.py:967
|
||||
#: cps/web.py:970
|
||||
msgid "Files are replaced"
|
||||
msgstr "Fichiers remplacés"
|
||||
|
||||
#: cps/web.py:968
|
||||
#: cps/web.py:971
|
||||
msgid "Database connections are closed"
|
||||
msgstr "Connexion à la base de donnée fermée"
|
||||
|
||||
#: cps/web.py:969
|
||||
#: cps/web.py:972
|
||||
msgid "Server is stopped"
|
||||
msgstr "Serveur arrêté"
|
||||
|
||||
#: cps/web.py:970
|
||||
#: cps/web.py:973
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr "Mise à jour terminée, merci d’appuyer sur okay et de rafraîchir la page"
|
||||
|
||||
#: cps/web.py:1044
|
||||
#: cps/web.py:1047
|
||||
msgid "Recently Added Books"
|
||||
msgstr "Ajouts récents"
|
||||
|
||||
#: cps/web.py:1054
|
||||
#: cps/web.py:1057
|
||||
msgid "Newest Books"
|
||||
msgstr "Livres récents"
|
||||
|
||||
#: cps/web.py:1065
|
||||
#: cps/web.py:1069
|
||||
msgid "Oldest Books"
|
||||
msgstr "Anciens livres"
|
||||
|
||||
#: cps/web.py:1077
|
||||
#: cps/web.py:1081
|
||||
msgid "Books (A-Z)"
|
||||
msgstr "Livres (A-Z)"
|
||||
|
||||
#: cps/web.py:1088
|
||||
#: cps/web.py:1092
|
||||
msgid "Books (Z-A)"
|
||||
msgstr "Livres (Z-A)"
|
||||
|
||||
#: cps/web.py:1116
|
||||
#: cps/web.py:1120
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr "Livres populaires (les plus téléchargés)"
|
||||
|
||||
#: cps/web.py:1129
|
||||
#: cps/web.py:1133
|
||||
msgid "Best rated books"
|
||||
msgstr "Livres les mieux notés"
|
||||
|
||||
#: cps/templates/index.xml:32 cps/web.py:1140
|
||||
#: cps/templates/index.xml:32 cps/web.py:1144
|
||||
msgid "Random Books"
|
||||
msgstr "Livres au hasard"
|
||||
|
||||
#: cps/web.py:1154
|
||||
#: cps/web.py:1158
|
||||
msgid "Author list"
|
||||
msgstr "Liste des auteurs"
|
||||
|
||||
#: cps/web.py:1166 cps/web.py:1225 cps/web.py:1355 cps/web.py:1827
|
||||
#: cps/web.py:1170 cps/web.py:1228 cps/web.py:1358 cps/web.py:1827
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr ""
|
||||
"Erreur d'ouverture du livre numérique. Le fichier n'existe pas ou n'est "
|
||||
"pas accessible :"
|
||||
|
||||
#: cps/templates/index.xml:64 cps/web.py:1209
|
||||
#: cps/templates/index.xml:64 cps/web.py:1212
|
||||
msgid "Series list"
|
||||
msgstr "Liste des séries"
|
||||
|
||||
#: cps/web.py:1223
|
||||
#: cps/web.py:1226
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr "Séries : %(serie)s"
|
||||
|
||||
#: cps/web.py:1256
|
||||
#: cps/web.py:1259
|
||||
msgid "Available languages"
|
||||
msgstr "Langues disponibles"
|
||||
|
||||
#: cps/web.py:1273
|
||||
#: cps/web.py:1276
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr "Langue : %(name)s"
|
||||
|
||||
#: cps/templates/index.xml:58 cps/web.py:1283
|
||||
#: cps/templates/index.xml:58 cps/web.py:1286
|
||||
msgid "Category list"
|
||||
msgstr "Liste des catégories"
|
||||
|
||||
#: cps/web.py:1297
|
||||
#: cps/web.py:1300
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr "Catégorie : %(name)s"
|
||||
|
||||
#: cps/web.py:1409
|
||||
#: cps/web.py:1412
|
||||
msgid "Excecution permissions missing"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1423
|
||||
#: cps/web.py:1426
|
||||
msgid "Statistics"
|
||||
msgstr "Statistiques"
|
||||
|
||||
#: cps/web.py:1587
|
||||
#: cps/web.py:1591
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr "Serveur redémarré, merci de rafraîchir la page"
|
||||
|
||||
#: cps/web.py:1589
|
||||
#: cps/web.py:1593
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1605
|
||||
#: cps/web.py:1609
|
||||
msgid "Update done"
|
||||
msgstr "Mise à jour effectuée"
|
||||
|
||||
#: cps/web.py:1687 cps/web.py:1700
|
||||
#: cps/web.py:1691 cps/web.py:1704
|
||||
msgid "search"
|
||||
msgstr "recherche"
|
||||
|
||||
#: cps/templates/index.xml:39 cps/templates/index.xml:42
|
||||
#: cps/templates/layout.html:131 cps/web.py:1782
|
||||
#: cps/templates/layout.html:132 cps/web.py:1782
|
||||
msgid "Read Books"
|
||||
msgstr "Livres lus"
|
||||
|
||||
#: cps/templates/index.xml:45 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:132 cps/web.py:1785
|
||||
#: cps/templates/index.xml:46 cps/templates/index.xml:49
|
||||
#: cps/templates/layout.html:134 cps/web.py:1785
|
||||
msgid "Unread Books"
|
||||
msgstr "Livres non-lus"
|
||||
|
||||
|
@ -214,7 +224,7 @@ msgstr "Livres non-lus"
|
|||
msgid "Read a Book"
|
||||
msgstr "Lire un livre"
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:2555
|
||||
#: cps/web.py:1925 cps/web.py:2556
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr "SVP, complétez tous les champs !"
|
||||
|
||||
|
@ -269,7 +279,7 @@ msgstr "Livres envoyés à %(kindlemail)s avec succès"
|
|||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr "Il y a eu une erreur en envoyant ce livre : %(res)s"
|
||||
|
||||
#: cps/web.py:2085 cps/web.py:2640
|
||||
#: cps/web.py:2085 cps/web.py:2641
|
||||
msgid "Please configure your kindle email address first..."
|
||||
msgstr "Veuillez configurer votre adresse kindle d'abord..."
|
||||
|
||||
|
@ -278,179 +288,179 @@ msgstr "Veuillez configurer votre adresse kindle d'abord..."
|
|||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr "Le livre a bien été ajouté à l'étagère : %(sname)s"
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2166
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr "Le livre a été supprimé de l'étagère %(sname)s"
|
||||
|
||||
#: cps/web.py:2183 cps/web.py:2207
|
||||
#: cps/web.py:2185 cps/web.py:2209
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr "Une étagère de ce nom '%(title)s' existe déjà."
|
||||
|
||||
#: cps/web.py:2188
|
||||
#: cps/web.py:2190
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr "Étagère %(title)s créée"
|
||||
|
||||
#: cps/web.py:2190 cps/web.py:2218
|
||||
#: cps/web.py:2192 cps/web.py:2220
|
||||
msgid "There was an error"
|
||||
msgstr "Il y a eu une erreur"
|
||||
|
||||
#: cps/web.py:2191 cps/web.py:2193
|
||||
#: cps/web.py:2193 cps/web.py:2195
|
||||
msgid "create a shelf"
|
||||
msgstr "créer une étagère"
|
||||
|
||||
#: cps/web.py:2216
|
||||
#: cps/web.py:2218
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2219 cps/web.py:2221
|
||||
#: cps/web.py:2221 cps/web.py:2223
|
||||
msgid "Edit a shelf"
|
||||
msgstr "Modifier une étagère"
|
||||
|
||||
#: cps/web.py:2242
|
||||
#: cps/web.py:2244
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr "l’étagère %(name)s a été supprimé avec succès"
|
||||
|
||||
#: cps/web.py:2264
|
||||
#: cps/web.py:2266
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr "Étagère : '%(name)s'"
|
||||
|
||||
#: cps/web.py:2267
|
||||
#: cps/web.py:2269
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2300
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2368
|
||||
#: cps/web.py:2369
|
||||
msgid "Found an existing account for this email address."
|
||||
msgstr "Un compte avec cette adresse de courriel existe déjà."
|
||||
|
||||
#: cps/web.py:2370 cps/web.py:2374
|
||||
#: cps/web.py:2371 cps/web.py:2375
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr "Profil de %(name)s"
|
||||
|
||||
#: cps/web.py:2371
|
||||
#: cps/web.py:2372
|
||||
msgid "Profile updated"
|
||||
msgstr "Profil mis à jour"
|
||||
|
||||
#: cps/web.py:2385
|
||||
#: cps/web.py:2386
|
||||
msgid "Admin page"
|
||||
msgstr "Page administrateur"
|
||||
|
||||
#: cps/web.py:2509
|
||||
#: cps/web.py:2510
|
||||
msgid "Calibre-web configuration updated"
|
||||
msgstr "Configuration de Calibre-web mise à jour"
|
||||
|
||||
#: cps/web.py:2516 cps/web.py:2522 cps/web.py:2536
|
||||
#: cps/web.py:2517 cps/web.py:2523 cps/web.py:2537
|
||||
msgid "Basic Configuration"
|
||||
msgstr "Configuration basique"
|
||||
|
||||
#: cps/web.py:2520
|
||||
#: cps/web.py:2521
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/admin.html:34 cps/web.py:2557 cps/web.py:2610
|
||||
#: cps/templates/admin.html:34 cps/web.py:2558 cps/web.py:2611
|
||||
msgid "Add new user"
|
||||
msgstr "Ajouter un nouvel utilisateur"
|
||||
|
||||
#: cps/web.py:2602
|
||||
#: cps/web.py:2603
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr "Utilisateur '%(user)s' créé"
|
||||
|
||||
#: cps/web.py:2606
|
||||
#: cps/web.py:2607
|
||||
msgid "Found an existing account for this email address or nickname."
|
||||
msgstr "Un compte avec cette adresse de courriel ou ce surnom existe déjà."
|
||||
|
||||
#: cps/web.py:2628
|
||||
#: cps/web.py:2629
|
||||
msgid "Mail settings updated"
|
||||
msgstr "Paramètres de courriel mis à jour"
|
||||
|
||||
#: cps/web.py:2635
|
||||
#: cps/web.py:2636
|
||||
#, python-format
|
||||
msgid "Test E-Mail successfully send to %(kindlemail)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2638
|
||||
#: cps/web.py:2639
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test E-Mail: %(res)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2642
|
||||
#: cps/web.py:2643
|
||||
msgid "E-Mail settings updated"
|
||||
msgstr "Préférences e-mail mises à jour"
|
||||
|
||||
#: cps/web.py:2643
|
||||
#: cps/web.py:2644
|
||||
msgid "Edit mail settings"
|
||||
msgstr "Éditer les paramètres de courriel"
|
||||
|
||||
#: cps/web.py:2672
|
||||
#: cps/web.py:2673
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr "Utilisateur '%(nick)s' supprimé"
|
||||
|
||||
#: cps/web.py:2780
|
||||
#: cps/web.py:2781
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr "Utilisateur '%(nick)s' mis à jour"
|
||||
|
||||
#: cps/web.py:2783
|
||||
#: cps/web.py:2784
|
||||
msgid "An unknown error occured."
|
||||
msgstr "Oups ! Une erreur inconnue a eu lieu."
|
||||
|
||||
#: cps/web.py:2786
|
||||
#: cps/web.py:2787
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr "Éditer l'utilisateur %(nick)s"
|
||||
|
||||
#: cps/web.py:2802
|
||||
#: cps/web.py:2803
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr ""
|
||||
"Erreur à l’ouverture du livre. Le fichier n’existe pas ou n’est pas "
|
||||
"accessible"
|
||||
|
||||
#: cps/web.py:2817 cps/web.py:3018 cps/web.py:3161
|
||||
#: cps/web.py:2818 cps/web.py:3026 cps/web.py:3031 cps/web.py:3174
|
||||
msgid "edit metadata"
|
||||
msgstr "modifier les métadonnées"
|
||||
|
||||
#: cps/web.py:2827 cps/web.py:3055
|
||||
#: cps/web.py:2828 cps/web.py:3068
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2838
|
||||
#: cps/web.py:2839
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2858 cps/web.py:2862
|
||||
#: cps/web.py:2861 cps/web.py:2865
|
||||
msgid "unknown"
|
||||
msgstr "inconnu"
|
||||
|
||||
#: cps/web.py:3061
|
||||
#: cps/web.py:3074
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr "Pour être téléverser le fichier doit avoir une extension"
|
||||
|
||||
#: cps/web.py:3080
|
||||
#: cps/web.py:3093
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgstr "Impossible de créer le chemin %s (permission refusée)"
|
||||
|
||||
#: cps/web.py:3085
|
||||
#: cps/web.py:3098
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgstr "Impossible d'enregistrer le fichier %s (permission refusée)"
|
||||
|
||||
#: cps/web.py:3090
|
||||
#: cps/web.py:3103
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgstr "Impossible de supprimer le fichier %s (permission refusée)"
|
||||
|
@ -655,7 +665,7 @@ msgstr "Description"
|
|||
msgid "Tags"
|
||||
msgstr "Étiquette"
|
||||
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:141
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:143
|
||||
#: cps/templates/search_form.html:37
|
||||
msgid "Series"
|
||||
msgstr "Séries"
|
||||
|
@ -742,7 +752,7 @@ msgstr ""
|
|||
msgid "Loading..."
|
||||
msgstr "Chargement…"
|
||||
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:205
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:207
|
||||
msgid "Close"
|
||||
msgstr "Fermer"
|
||||
|
||||
|
@ -951,7 +961,7 @@ msgstr "Sauvegarder les réglages"
|
|||
msgid "Save settings and send Test E-Mail"
|
||||
msgstr "Sauvegarder les réglages et tester l’envoi d’e-mail"
|
||||
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:189
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:191
|
||||
msgid "Next"
|
||||
msgstr "Suivant"
|
||||
|
||||
|
@ -998,7 +1008,7 @@ msgstr "Les derniers livres"
|
|||
msgid "Show Random Books"
|
||||
msgstr "Montrer des livres au hasard"
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:144
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:146
|
||||
msgid "Authors"
|
||||
msgstr "Auteurs"
|
||||
|
||||
|
@ -1063,39 +1073,39 @@ msgstr "Ascendant"
|
|||
msgid "Descending"
|
||||
msgstr "Descendant"
|
||||
|
||||
#: cps/templates/layout.html:135
|
||||
#: cps/templates/layout.html:137
|
||||
msgid "Discover"
|
||||
msgstr "Découvrir"
|
||||
|
||||
#: cps/templates/layout.html:138
|
||||
#: cps/templates/layout.html:140
|
||||
msgid "Categories"
|
||||
msgstr "Catégories"
|
||||
|
||||
#: cps/templates/layout.html:147 cps/templates/search_form.html:58
|
||||
#: cps/templates/layout.html:149 cps/templates/search_form.html:58
|
||||
msgid "Languages"
|
||||
msgstr "Langues"
|
||||
|
||||
#: cps/templates/layout.html:150
|
||||
#: cps/templates/layout.html:152
|
||||
msgid "Public Shelves"
|
||||
msgstr "Étagères publiques"
|
||||
|
||||
#: cps/templates/layout.html:154
|
||||
#: cps/templates/layout.html:156
|
||||
msgid "Your Shelves"
|
||||
msgstr "Vos étagères"
|
||||
|
||||
#: cps/templates/layout.html:159
|
||||
#: cps/templates/layout.html:161
|
||||
msgid "Create a Shelf"
|
||||
msgstr "Créer une étagère"
|
||||
|
||||
#: cps/templates/layout.html:160 cps/templates/stats.html:3
|
||||
#: cps/templates/layout.html:162 cps/templates/stats.html:3
|
||||
msgid "About"
|
||||
msgstr "À propos"
|
||||
|
||||
#: cps/templates/layout.html:174
|
||||
#: cps/templates/layout.html:176
|
||||
msgid "Previous"
|
||||
msgstr "Précédent"
|
||||
|
||||
#: cps/templates/layout.html:201
|
||||
#: cps/templates/layout.html:203
|
||||
msgid "Book Details"
|
||||
msgstr "Détails du livre"
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Calibre-web\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
|
||||
"POT-Creation-Date: 2017-11-12 14:54+0100\n"
|
||||
"POT-Creation-Date: 2017-11-30 16:45+0100\n"
|
||||
"PO-Revision-Date: 2017-04-04 15:09+0200\n"
|
||||
"Last-Translator: Marco Picone <marcovendere@gmail.com>\n"
|
||||
"Language: it\n"
|
||||
|
@ -25,182 +25,192 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.5.1\n"
|
||||
|
||||
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1398
|
||||
#: cps/book_formats.py:119 cps/book_formats.py:123 cps/web.py:1401
|
||||
msgid "not installed"
|
||||
msgstr "non installato"
|
||||
|
||||
#: cps/helper.py:77
|
||||
#: cps/helper.py:78
|
||||
#, python-format
|
||||
msgid "kindlegen binary %(kindlepath)s not found"
|
||||
msgstr "Non trovato"
|
||||
|
||||
#: cps/helper.py:83
|
||||
#: cps/helper.py:84
|
||||
#, python-format
|
||||
msgid "epub format not found for book id: %(book)d"
|
||||
msgstr "formato epub non trovato"
|
||||
|
||||
#: cps/helper.py:93
|
||||
#: cps/helper.py:94
|
||||
msgid "kindlegen failed, no execution permissions"
|
||||
msgstr "non ci sono permessi"
|
||||
|
||||
#: cps/helper.py:108
|
||||
#: cps/helper.py:109
|
||||
#, python-format
|
||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||
msgstr "errore"
|
||||
|
||||
#: cps/helper.py:187
|
||||
#: cps/helper.py:188
|
||||
#, python-format
|
||||
msgid "Failed to send mail: %s"
|
||||
msgstr "Impossibile inviare email: %s"
|
||||
|
||||
#: cps/helper.py:194
|
||||
#: cps/helper.py:195
|
||||
msgid "Calibre-web test email"
|
||||
msgstr "test email Calibre-web"
|
||||
|
||||
#: cps/helper.py:195 cps/helper.py:207
|
||||
#: cps/helper.py:196 cps/helper.py:208
|
||||
msgid "This email has been sent via calibre web."
|
||||
msgstr "L'email è stata inviata tramite Calibre Web."
|
||||
|
||||
#: cps/helper.py:204 cps/templates/detail.html:43
|
||||
#: cps/helper.py:205 cps/templates/detail.html:43
|
||||
msgid "Send to Kindle"
|
||||
msgstr "Invia a Kindle"
|
||||
|
||||
#: cps/helper.py:224 cps/helper.py:238
|
||||
#: cps/helper.py:225 cps/helper.py:239
|
||||
msgid "Could not find any formats suitable for sending by email"
|
||||
msgstr "Impossibile trovare i formati adatti per l'invio tramite email"
|
||||
|
||||
#: cps/helper.py:338
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:347
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/ub.py:577
|
||||
msgid "Guest"
|
||||
msgstr "ospite"
|
||||
|
||||
#: cps/web.py:964
|
||||
#: cps/web.py:967
|
||||
msgid "Requesting update package"
|
||||
msgstr "Richiesta del pacchetto di aggiornamento"
|
||||
|
||||
#: cps/web.py:965
|
||||
#: cps/web.py:968
|
||||
msgid "Downloading update package"
|
||||
msgstr "Scaricare il pacchetto di aggiornamento"
|
||||
|
||||
#: cps/web.py:966
|
||||
#: cps/web.py:969
|
||||
msgid "Unzipping update package"
|
||||
msgstr "Decomprimere pacchetto di aggiornamento"
|
||||
|
||||
#: cps/web.py:967
|
||||
#: cps/web.py:970
|
||||
msgid "Files are replaced"
|
||||
msgstr "I file vengono sostituiti"
|
||||
|
||||
#: cps/web.py:968
|
||||
#: cps/web.py:971
|
||||
msgid "Database connections are closed"
|
||||
msgstr "Le connessioni di database sono chiuse"
|
||||
|
||||
#: cps/web.py:969
|
||||
#: cps/web.py:972
|
||||
msgid "Server is stopped"
|
||||
msgstr "Il server viene arrestato"
|
||||
|
||||
#: cps/web.py:970
|
||||
#: cps/web.py:973
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr "Aggiornamento completato, prego premere bene e ricaricare pagina"
|
||||
|
||||
#: cps/web.py:1044
|
||||
#: cps/web.py:1047
|
||||
msgid "Recently Added Books"
|
||||
msgstr "Libri aggiunti di recente"
|
||||
|
||||
#: cps/web.py:1054
|
||||
#: cps/web.py:1057
|
||||
msgid "Newest Books"
|
||||
msgstr "I più nuovi libri"
|
||||
|
||||
#: cps/web.py:1065
|
||||
#: cps/web.py:1069
|
||||
msgid "Oldest Books"
|
||||
msgstr "Libri più vecchi"
|
||||
|
||||
#: cps/web.py:1077
|
||||
#: cps/web.py:1081
|
||||
msgid "Books (A-Z)"
|
||||
msgstr "Ebook (A-Z)"
|
||||
|
||||
#: cps/web.py:1088
|
||||
#: cps/web.py:1092
|
||||
msgid "Books (Z-A)"
|
||||
msgstr "Ebook (Z-A)"
|
||||
|
||||
#: cps/web.py:1116
|
||||
#: cps/web.py:1120
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr "Hot Books (più scaricati)"
|
||||
|
||||
#: cps/web.py:1129
|
||||
#: cps/web.py:1133
|
||||
msgid "Best rated books"
|
||||
msgstr "I migliori libri valutati"
|
||||
|
||||
#: cps/templates/index.xml:32 cps/web.py:1140
|
||||
#: cps/templates/index.xml:32 cps/web.py:1144
|
||||
msgid "Random Books"
|
||||
msgstr "Libri casuali"
|
||||
|
||||
#: cps/web.py:1154
|
||||
#: cps/web.py:1158
|
||||
msgid "Author list"
|
||||
msgstr "Elenco degli autori"
|
||||
|
||||
#: cps/web.py:1166 cps/web.py:1225 cps/web.py:1355 cps/web.py:1827
|
||||
#: cps/web.py:1170 cps/web.py:1228 cps/web.py:1358 cps/web.py:1827
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr ""
|
||||
"Errore durante l'apertura di eBook. Il file non esiste o il file non è "
|
||||
"accessibile:"
|
||||
|
||||
#: cps/templates/index.xml:64 cps/web.py:1209
|
||||
#: cps/templates/index.xml:64 cps/web.py:1212
|
||||
msgid "Series list"
|
||||
msgstr "Lista delle serie"
|
||||
|
||||
#: cps/web.py:1223
|
||||
#: cps/web.py:1226
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr "Serie :"
|
||||
|
||||
#: cps/web.py:1256
|
||||
#: cps/web.py:1259
|
||||
msgid "Available languages"
|
||||
msgstr "Lingue disponibili"
|
||||
|
||||
#: cps/web.py:1273
|
||||
#: cps/web.py:1276
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr "Lingue: %(name)s"
|
||||
|
||||
#: cps/templates/index.xml:58 cps/web.py:1283
|
||||
#: cps/templates/index.xml:58 cps/web.py:1286
|
||||
msgid "Category list"
|
||||
msgstr "Elenco categorie"
|
||||
|
||||
#: cps/web.py:1297
|
||||
#: cps/web.py:1300
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr "Categoria : %(name)s"
|
||||
|
||||
#: cps/web.py:1409
|
||||
#: cps/web.py:1412
|
||||
msgid "Excecution permissions missing"
|
||||
msgstr "Mancano autorizzazioni di esecuzione"
|
||||
|
||||
#: cps/web.py:1423
|
||||
#: cps/web.py:1426
|
||||
msgid "Statistics"
|
||||
msgstr "Statistica"
|
||||
|
||||
#: cps/web.py:1587
|
||||
#: cps/web.py:1591
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr "Server riavviato, ricarica pagina"
|
||||
|
||||
#: cps/web.py:1589
|
||||
#: cps/web.py:1593
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr "Eseguire l'arresto del server, chiudi la finestra."
|
||||
|
||||
#: cps/web.py:1605
|
||||
#: cps/web.py:1609
|
||||
msgid "Update done"
|
||||
msgstr "Aggiornamento fatto"
|
||||
|
||||
#: cps/web.py:1687 cps/web.py:1700
|
||||
#: cps/web.py:1691 cps/web.py:1704
|
||||
msgid "search"
|
||||
msgstr "ricerca"
|
||||
|
||||
#: cps/templates/index.xml:39 cps/templates/index.xml:42
|
||||
#: cps/templates/layout.html:131 cps/web.py:1782
|
||||
#: cps/templates/layout.html:132 cps/web.py:1782
|
||||
msgid "Read Books"
|
||||
msgstr "Leggere libri"
|
||||
|
||||
#: cps/templates/index.xml:45 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:132 cps/web.py:1785
|
||||
#: cps/templates/index.xml:46 cps/templates/index.xml:49
|
||||
#: cps/templates/layout.html:134 cps/web.py:1785
|
||||
msgid "Unread Books"
|
||||
msgstr "Libri non letti"
|
||||
|
||||
|
@ -208,7 +218,7 @@ msgstr "Libri non letti"
|
|||
msgid "Read a Book"
|
||||
msgstr "Leggere un libro"
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:2555
|
||||
#: cps/web.py:1925 cps/web.py:2556
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr "Compila tutti i campi"
|
||||
|
||||
|
@ -263,7 +273,7 @@ msgstr "Libro inviare con successo %(kindlemail)s correttamente"
|
|||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr "Si è verificato un errore durante l'invio di questo libro: %(res)s"
|
||||
|
||||
#: cps/web.py:2085 cps/web.py:2640
|
||||
#: cps/web.py:2085 cps/web.py:2641
|
||||
msgid "Please configure your kindle email address first..."
|
||||
msgstr "Si prega di configurare innanzitutto il tuo indirizzo email..."
|
||||
|
||||
|
@ -272,183 +282,183 @@ msgstr "Si prega di configurare innanzitutto il tuo indirizzo email..."
|
|||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr "Il libro è stato aggiunto alla mensola: %(sname)s"
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2166
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr "Il libro è stato rimosso dalla mensola: %(sname)s"
|
||||
|
||||
#: cps/web.py:2183 cps/web.py:2207
|
||||
#: cps/web.py:2185 cps/web.py:2209
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr "Uno scaffale con il nome '%(title)s' esiste già."
|
||||
|
||||
#: cps/web.py:2188
|
||||
#: cps/web.py:2190
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr "Mensola %(title)s creato"
|
||||
|
||||
#: cps/web.py:2190 cps/web.py:2218
|
||||
#: cps/web.py:2192 cps/web.py:2220
|
||||
msgid "There was an error"
|
||||
msgstr "c'era un errore"
|
||||
|
||||
#: cps/web.py:2191 cps/web.py:2193
|
||||
#: cps/web.py:2193 cps/web.py:2195
|
||||
msgid "create a shelf"
|
||||
msgstr "creare uno scaffale"
|
||||
|
||||
#: cps/web.py:2216
|
||||
#: cps/web.py:2218
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr "Mensola %(title)s cambiato"
|
||||
|
||||
#: cps/web.py:2219 cps/web.py:2221
|
||||
#: cps/web.py:2221 cps/web.py:2223
|
||||
msgid "Edit a shelf"
|
||||
msgstr "Modifica un ripiano"
|
||||
|
||||
#: cps/web.py:2242
|
||||
#: cps/web.py:2244
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr "cancellato con successo il ripiano %(name)s"
|
||||
|
||||
#: cps/web.py:2264
|
||||
#: cps/web.py:2266
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr "Mensola: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2267
|
||||
#: cps/web.py:2269
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr ""
|
||||
"Errore durante l'apertura dello scaffale. La mensola non esiste o non è "
|
||||
"accessibile"
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2300
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr "Modificare l'ordine della mensola: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2368
|
||||
#: cps/web.py:2369
|
||||
msgid "Found an existing account for this email address."
|
||||
msgstr "Trovato un account esistente per questo indirizzo email."
|
||||
|
||||
#: cps/web.py:2370 cps/web.py:2374
|
||||
#: cps/web.py:2371 cps/web.py:2375
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr "Profilo di %(name)s"
|
||||
|
||||
#: cps/web.py:2371
|
||||
#: cps/web.py:2372
|
||||
msgid "Profile updated"
|
||||
msgstr "Profilo aggiornato"
|
||||
|
||||
#: cps/web.py:2385
|
||||
#: cps/web.py:2386
|
||||
msgid "Admin page"
|
||||
msgstr "Pagina di amministrazione"
|
||||
|
||||
#: cps/web.py:2509
|
||||
#: cps/web.py:2510
|
||||
msgid "Calibre-web configuration updated"
|
||||
msgstr "Aggiornamento della configurazione del calibro-web"
|
||||
|
||||
#: cps/web.py:2516 cps/web.py:2522 cps/web.py:2536
|
||||
#: cps/web.py:2517 cps/web.py:2523 cps/web.py:2537
|
||||
msgid "Basic Configuration"
|
||||
msgstr "Configurazione di base"
|
||||
|
||||
#: cps/web.py:2520
|
||||
#: cps/web.py:2521
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr "Posizione DB non valida. Inserisci il percorso corretto."
|
||||
|
||||
#: cps/templates/admin.html:34 cps/web.py:2557 cps/web.py:2610
|
||||
#: cps/templates/admin.html:34 cps/web.py:2558 cps/web.py:2611
|
||||
msgid "Add new user"
|
||||
msgstr "Aggiungi un nuovo utente"
|
||||
|
||||
#: cps/web.py:2602
|
||||
#: cps/web.py:2603
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr "utente '%(user)s' creato"
|
||||
|
||||
#: cps/web.py:2606
|
||||
#: cps/web.py:2607
|
||||
msgid "Found an existing account for this email address or nickname."
|
||||
msgstr ""
|
||||
"È stato trovato un account collegato a questo indirizzo e-mail o nome "
|
||||
"utente."
|
||||
|
||||
#: cps/web.py:2628
|
||||
#: cps/web.py:2629
|
||||
msgid "Mail settings updated"
|
||||
msgstr "Parametri di posta aggiornati"
|
||||
|
||||
#: cps/web.py:2635
|
||||
#: cps/web.py:2636
|
||||
#, python-format
|
||||
msgid "Test E-Mail successfully send to %(kindlemail)s"
|
||||
msgstr "Successo quando invii il test a %(kindlemail)s"
|
||||
|
||||
#: cps/web.py:2638
|
||||
#: cps/web.py:2639
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test E-Mail: %(res)s"
|
||||
msgstr "Impossibile inviare il test a E-Mail: %(res)s"
|
||||
|
||||
#: cps/web.py:2642
|
||||
#: cps/web.py:2643
|
||||
msgid "E-Mail settings updated"
|
||||
msgstr "Impostazioni email aggiornate"
|
||||
|
||||
#: cps/web.py:2643
|
||||
#: cps/web.py:2644
|
||||
msgid "Edit mail settings"
|
||||
msgstr "Modificare i parametri della posta"
|
||||
|
||||
#: cps/web.py:2672
|
||||
#: cps/web.py:2673
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr "utente '%(nick)s' cancellati"
|
||||
|
||||
#: cps/web.py:2780
|
||||
#: cps/web.py:2781
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr "utente '%(nick)s' aggiornato"
|
||||
|
||||
#: cps/web.py:2783
|
||||
#: cps/web.py:2784
|
||||
msgid "An unknown error occured."
|
||||
msgstr "Errore imprevisto."
|
||||
|
||||
#: cps/web.py:2786
|
||||
#: cps/web.py:2787
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr "Modifica utente %(nick)s"
|
||||
|
||||
#: cps/web.py:2802
|
||||
#: cps/web.py:2803
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr ""
|
||||
"Errore durante l'apertura di eBook. Il file non esiste o il file non è "
|
||||
"accessibile"
|
||||
|
||||
#: cps/web.py:2817 cps/web.py:3018 cps/web.py:3161
|
||||
#: cps/web.py:2818 cps/web.py:3026 cps/web.py:3031 cps/web.py:3174
|
||||
msgid "edit metadata"
|
||||
msgstr "modificare la metainformazione"
|
||||
|
||||
#: cps/web.py:2827 cps/web.py:3055
|
||||
#: cps/web.py:2828 cps/web.py:3068
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr "Non è consentito caricare i file con l'estensione \"%s\" a questo server"
|
||||
|
||||
#: cps/web.py:2838
|
||||
#: cps/web.py:2839
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2858 cps/web.py:2862
|
||||
#: cps/web.py:2861 cps/web.py:2865
|
||||
msgid "unknown"
|
||||
msgstr "Sconosciuto"
|
||||
|
||||
#: cps/web.py:3061
|
||||
#: cps/web.py:3074
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr "Il file da caricare deve avere un'estensione"
|
||||
|
||||
#: cps/web.py:3080
|
||||
#: cps/web.py:3093
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgstr "Impossibile creare il percorso %s (autorizzazione negata)"
|
||||
|
||||
#: cps/web.py:3085
|
||||
#: cps/web.py:3098
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgstr "Impossibile archiviare il file %s (autorizzazione negata)"
|
||||
|
||||
#: cps/web.py:3090
|
||||
#: cps/web.py:3103
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgstr "Impossibile eliminare il file %s (autorizzazione negata)"
|
||||
|
@ -653,7 +663,7 @@ msgstr "Descrizione"
|
|||
msgid "Tags"
|
||||
msgstr "Tags"
|
||||
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:141
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:143
|
||||
#: cps/templates/search_form.html:37
|
||||
msgid "Series"
|
||||
msgstr "Serie"
|
||||
|
@ -740,7 +750,7 @@ msgstr "Fai clic sul coperchio per caricare i metadati nel modulo"
|
|||
msgid "Loading..."
|
||||
msgstr "Caricamento in corso..."
|
||||
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:205
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:207
|
||||
msgid "Close"
|
||||
msgstr "Chiuso"
|
||||
|
||||
|
@ -949,7 +959,7 @@ msgstr "Salva le impostazioni"
|
|||
msgid "Save settings and send Test E-Mail"
|
||||
msgstr "Salvare le impostazioni e inviare Test e-mail"
|
||||
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:189
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:191
|
||||
msgid "Next"
|
||||
msgstr "Prossimo"
|
||||
|
||||
|
@ -994,7 +1004,7 @@ msgstr "Gli ultimi Libri"
|
|||
msgid "Show Random Books"
|
||||
msgstr "Mostra libri casuali"
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:144
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:146
|
||||
msgid "Authors"
|
||||
msgstr "Autori"
|
||||
|
||||
|
@ -1059,39 +1069,39 @@ msgstr "Ascendente"
|
|||
msgid "Descending"
|
||||
msgstr "Discendente"
|
||||
|
||||
#: cps/templates/layout.html:135
|
||||
#: cps/templates/layout.html:137
|
||||
msgid "Discover"
|
||||
msgstr "Per scoprire"
|
||||
|
||||
#: cps/templates/layout.html:138
|
||||
#: cps/templates/layout.html:140
|
||||
msgid "Categories"
|
||||
msgstr "Categoria"
|
||||
|
||||
#: cps/templates/layout.html:147 cps/templates/search_form.html:58
|
||||
#: cps/templates/layout.html:149 cps/templates/search_form.html:58
|
||||
msgid "Languages"
|
||||
msgstr "lingua"
|
||||
|
||||
#: cps/templates/layout.html:150
|
||||
#: cps/templates/layout.html:152
|
||||
msgid "Public Shelves"
|
||||
msgstr "Ripiani pubblici"
|
||||
|
||||
#: cps/templates/layout.html:154
|
||||
#: cps/templates/layout.html:156
|
||||
msgid "Your Shelves"
|
||||
msgstr "I tuoi scaffali"
|
||||
|
||||
#: cps/templates/layout.html:159
|
||||
#: cps/templates/layout.html:161
|
||||
msgid "Create a Shelf"
|
||||
msgstr "Crea una mensola"
|
||||
|
||||
#: cps/templates/layout.html:160 cps/templates/stats.html:3
|
||||
#: cps/templates/layout.html:162 cps/templates/stats.html:3
|
||||
msgid "About"
|
||||
msgstr "Di"
|
||||
|
||||
#: cps/templates/layout.html:174
|
||||
#: cps/templates/layout.html:176
|
||||
msgid "Previous"
|
||||
msgstr "Precedente"
|
||||
|
||||
#: cps/templates/layout.html:201
|
||||
#: cps/templates/layout.html:203
|
||||
msgid "Book Details"
|
||||
msgstr "Dettagli ebook"
|
||||
|
||||
|
|
|
@ -22,7 +22,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Calibre-web dutch translation by Ed Driesen (GPL V3)\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2017-11-12 14:54+0100\n"
|
||||
"POT-Creation-Date: 2017-11-30 16:45+0100\n"
|
||||
"PO-Revision-Date: 2017-06-21 20:15+0200\n"
|
||||
"Last-Translator: \n"
|
||||
"Language: nl\n"
|
||||
|
@ -33,182 +33,192 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.5.1\n"
|
||||
|
||||
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1398
|
||||
#: cps/book_formats.py:119 cps/book_formats.py:123 cps/web.py:1401
|
||||
msgid "not installed"
|
||||
msgstr "niet geïnstalleerd"
|
||||
|
||||
#: cps/helper.py:77
|
||||
#: cps/helper.py:78
|
||||
#, python-format
|
||||
msgid "kindlegen binary %(kindlepath)s not found"
|
||||
msgstr "kindlegen binary %(kindlepath)s niet gevonden"
|
||||
|
||||
#: cps/helper.py:83
|
||||
#: cps/helper.py:84
|
||||
#, python-format
|
||||
msgid "epub format not found for book id: %(book)d"
|
||||
msgstr "epub type niet gevonden voor boek met id: %(book)d"
|
||||
|
||||
#: cps/helper.py:93
|
||||
#: cps/helper.py:94
|
||||
msgid "kindlegen failed, no execution permissions"
|
||||
msgstr "kindlegen gefaald, geen rechten om uit te voeren"
|
||||
|
||||
#: cps/helper.py:108
|
||||
#: cps/helper.py:109
|
||||
#, python-format
|
||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||
msgstr "Kindlegen gefaald met Error %(error)s. Bericht: %(message)s"
|
||||
|
||||
#: cps/helper.py:187
|
||||
#: cps/helper.py:188
|
||||
#, python-format
|
||||
msgid "Failed to send mail: %s"
|
||||
msgstr "Mail sturen gefaald: %s"
|
||||
|
||||
#: cps/helper.py:194
|
||||
#: cps/helper.py:195
|
||||
msgid "Calibre-web test email"
|
||||
msgstr "Calibre-web test email"
|
||||
|
||||
#: cps/helper.py:195 cps/helper.py:207
|
||||
#: cps/helper.py:196 cps/helper.py:208
|
||||
msgid "This email has been sent via calibre web."
|
||||
msgstr "Deze mail werd verstuurd met calibre web."
|
||||
|
||||
#: cps/helper.py:204 cps/templates/detail.html:43
|
||||
#: cps/helper.py:205 cps/templates/detail.html:43
|
||||
msgid "Send to Kindle"
|
||||
msgstr "Stuur naar Kindle:"
|
||||
|
||||
#: cps/helper.py:224 cps/helper.py:238
|
||||
#: cps/helper.py:225 cps/helper.py:239
|
||||
msgid "Could not find any formats suitable for sending by email"
|
||||
msgstr "Kon geen geschikte formaten vinden om te verzenden per email"
|
||||
|
||||
#: cps/helper.py:338
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:347
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/ub.py:577
|
||||
msgid "Guest"
|
||||
msgstr "Gast"
|
||||
|
||||
#: cps/web.py:964
|
||||
#: cps/web.py:967
|
||||
msgid "Requesting update package"
|
||||
msgstr "Update pakket wordt aangevraagd"
|
||||
|
||||
#: cps/web.py:965
|
||||
#: cps/web.py:968
|
||||
msgid "Downloading update package"
|
||||
msgstr "Update pakket wordt gedownload"
|
||||
|
||||
#: cps/web.py:966
|
||||
#: cps/web.py:969
|
||||
msgid "Unzipping update package"
|
||||
msgstr "Update pakket wordt uitgepakt"
|
||||
|
||||
#: cps/web.py:967
|
||||
#: cps/web.py:970
|
||||
msgid "Files are replaced"
|
||||
msgstr "Bestanden zijn vervangen"
|
||||
|
||||
#: cps/web.py:968
|
||||
#: cps/web.py:971
|
||||
msgid "Database connections are closed"
|
||||
msgstr "Database verbindingen zijn gesloten"
|
||||
|
||||
#: cps/web.py:969
|
||||
#: cps/web.py:972
|
||||
msgid "Server is stopped"
|
||||
msgstr "Server is gestopt"
|
||||
|
||||
#: cps/web.py:970
|
||||
#: cps/web.py:973
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr "Update voltooid, klik op ok en herlaad de pagina"
|
||||
|
||||
#: cps/web.py:1044
|
||||
#: cps/web.py:1047
|
||||
msgid "Recently Added Books"
|
||||
msgstr "Recent toegevoegde boeken"
|
||||
|
||||
#: cps/web.py:1054
|
||||
#: cps/web.py:1057
|
||||
msgid "Newest Books"
|
||||
msgstr "Nieuwste boeken"
|
||||
|
||||
#: cps/web.py:1065
|
||||
#: cps/web.py:1069
|
||||
msgid "Oldest Books"
|
||||
msgstr "Oudste boeken"
|
||||
|
||||
#: cps/web.py:1077
|
||||
#: cps/web.py:1081
|
||||
msgid "Books (A-Z)"
|
||||
msgstr "Boeken (A-Z)"
|
||||
|
||||
#: cps/web.py:1088
|
||||
#: cps/web.py:1092
|
||||
msgid "Books (Z-A)"
|
||||
msgstr "Boeken (A-Z)"
|
||||
|
||||
#: cps/web.py:1116
|
||||
#: cps/web.py:1120
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr "Populaire boeken (meeste downloads)"
|
||||
|
||||
#: cps/web.py:1129
|
||||
#: cps/web.py:1133
|
||||
msgid "Best rated books"
|
||||
msgstr "Best beoordeelde boeken"
|
||||
|
||||
#: cps/templates/index.xml:32 cps/web.py:1140
|
||||
#: cps/templates/index.xml:32 cps/web.py:1144
|
||||
msgid "Random Books"
|
||||
msgstr "Willekeurige boeken"
|
||||
|
||||
#: cps/web.py:1154
|
||||
#: cps/web.py:1158
|
||||
msgid "Author list"
|
||||
msgstr "Auteur lijst"
|
||||
|
||||
#: cps/web.py:1166 cps/web.py:1225 cps/web.py:1355 cps/web.py:1827
|
||||
#: cps/web.py:1170 cps/web.py:1228 cps/web.py:1358 cps/web.py:1827
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr ""
|
||||
"Fout bij openen van het boek. Bestand bestaat niet of is niet "
|
||||
"toegankelijk:"
|
||||
|
||||
#: cps/templates/index.xml:64 cps/web.py:1209
|
||||
#: cps/templates/index.xml:64 cps/web.py:1212
|
||||
msgid "Series list"
|
||||
msgstr "Serie lijst"
|
||||
|
||||
#: cps/web.py:1223
|
||||
#: cps/web.py:1226
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr "Serie: %(serie)s"
|
||||
|
||||
#: cps/web.py:1256
|
||||
#: cps/web.py:1259
|
||||
msgid "Available languages"
|
||||
msgstr "Beschikbare talen"
|
||||
|
||||
#: cps/web.py:1273
|
||||
#: cps/web.py:1276
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr "Taal: %(name)s"
|
||||
|
||||
#: cps/templates/index.xml:58 cps/web.py:1283
|
||||
#: cps/templates/index.xml:58 cps/web.py:1286
|
||||
msgid "Category list"
|
||||
msgstr "Categorie lijst"
|
||||
|
||||
#: cps/web.py:1297
|
||||
#: cps/web.py:1300
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr "Categorie: %(name)s"
|
||||
|
||||
#: cps/web.py:1409
|
||||
#: cps/web.py:1412
|
||||
msgid "Excecution permissions missing"
|
||||
msgstr "Rechten om uit te voeren ontbreken"
|
||||
|
||||
#: cps/web.py:1423
|
||||
#: cps/web.py:1426
|
||||
msgid "Statistics"
|
||||
msgstr "Statistieken"
|
||||
|
||||
#: cps/web.py:1587
|
||||
#: cps/web.py:1591
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr "Server herstart, gelieve de pagina herladen"
|
||||
|
||||
#: cps/web.py:1589
|
||||
#: cps/web.py:1593
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr "Bezig met het stoppen van de server, gelieve venster te sluiten"
|
||||
|
||||
#: cps/web.py:1605
|
||||
#: cps/web.py:1609
|
||||
msgid "Update done"
|
||||
msgstr "Update voltooid"
|
||||
|
||||
#: cps/web.py:1687 cps/web.py:1700
|
||||
#: cps/web.py:1691 cps/web.py:1704
|
||||
msgid "search"
|
||||
msgstr "zoek"
|
||||
|
||||
#: cps/templates/index.xml:39 cps/templates/index.xml:42
|
||||
#: cps/templates/layout.html:131 cps/web.py:1782
|
||||
#: cps/templates/layout.html:132 cps/web.py:1782
|
||||
msgid "Read Books"
|
||||
msgstr "Gelezen Boeken"
|
||||
|
||||
#: cps/templates/index.xml:45 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:132 cps/web.py:1785
|
||||
#: cps/templates/index.xml:46 cps/templates/index.xml:49
|
||||
#: cps/templates/layout.html:134 cps/web.py:1785
|
||||
msgid "Unread Books"
|
||||
msgstr "Ongelezen Boeken"
|
||||
|
||||
|
@ -216,7 +226,7 @@ msgstr "Ongelezen Boeken"
|
|||
msgid "Read a Book"
|
||||
msgstr "Lees een boek"
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:2555
|
||||
#: cps/web.py:1925 cps/web.py:2556
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr "Gelieve alle velden in te vullen!"
|
||||
|
||||
|
@ -271,7 +281,7 @@ msgstr "Boek met succes verstuurd naar %(kindlemail)s"
|
|||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr "Er trad een fout op bij het versturen van dit boek: %(res)s"
|
||||
|
||||
#: cps/web.py:2085 cps/web.py:2640
|
||||
#: cps/web.py:2085 cps/web.py:2641
|
||||
msgid "Please configure your kindle email address first..."
|
||||
msgstr "Gelieve eerst je kindle email adres te configureren..."
|
||||
|
||||
|
@ -280,179 +290,179 @@ msgstr "Gelieve eerst je kindle email adres te configureren..."
|
|||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr "Boek werd toegevoegd aan boekenplank: %(sname)s"
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2166
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr "Boek werd verwijderd van boekenplank: %(sname)s"
|
||||
|
||||
#: cps/web.py:2183 cps/web.py:2207
|
||||
#: cps/web.py:2185 cps/web.py:2209
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr "Een boekenplank met de naam '%(title)s' bestaat reeds."
|
||||
|
||||
#: cps/web.py:2188
|
||||
#: cps/web.py:2190
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr "Boekenplank %(title)s aangemaakt"
|
||||
|
||||
#: cps/web.py:2190 cps/web.py:2218
|
||||
#: cps/web.py:2192 cps/web.py:2220
|
||||
msgid "There was an error"
|
||||
msgstr "Er deed zich een fout voor"
|
||||
|
||||
#: cps/web.py:2191 cps/web.py:2193
|
||||
#: cps/web.py:2193 cps/web.py:2195
|
||||
msgid "create a shelf"
|
||||
msgstr "maak een boekenplank"
|
||||
|
||||
#: cps/web.py:2216
|
||||
#: cps/web.py:2218
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr "Boekenplank %(title)s gewijzigd"
|
||||
|
||||
#: cps/web.py:2219 cps/web.py:2221
|
||||
#: cps/web.py:2221 cps/web.py:2223
|
||||
msgid "Edit a shelf"
|
||||
msgstr "Bewerk een boekenplank"
|
||||
|
||||
#: cps/web.py:2242
|
||||
#: cps/web.py:2244
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr "Boekenplank %(name)s succesvol gewist"
|
||||
|
||||
#: cps/web.py:2264
|
||||
#: cps/web.py:2266
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr "Boekenplank: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2267
|
||||
#: cps/web.py:2269
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr ""
|
||||
"Fout bij openen boekenplank. Boekenplank bestaat niet of is niet "
|
||||
"toegankelijk"
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2300
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr "Verander volgorde van Boekenplank: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2368
|
||||
#: cps/web.py:2369
|
||||
msgid "Found an existing account for this email address."
|
||||
msgstr "Een bestaand gebruiker gevonden voor dit email adres."
|
||||
|
||||
#: cps/web.py:2370 cps/web.py:2374
|
||||
#: cps/web.py:2371 cps/web.py:2375
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr "%(name)s's profiel"
|
||||
|
||||
#: cps/web.py:2371
|
||||
#: cps/web.py:2372
|
||||
msgid "Profile updated"
|
||||
msgstr "Profiel aangepast"
|
||||
|
||||
#: cps/web.py:2385
|
||||
#: cps/web.py:2386
|
||||
msgid "Admin page"
|
||||
msgstr "Administratie pagina"
|
||||
|
||||
#: cps/web.py:2509
|
||||
#: cps/web.py:2510
|
||||
msgid "Calibre-web configuration updated"
|
||||
msgstr "Calibre-web configuratie aangepast"
|
||||
|
||||
#: cps/web.py:2516 cps/web.py:2522 cps/web.py:2536
|
||||
#: cps/web.py:2517 cps/web.py:2523 cps/web.py:2537
|
||||
msgid "Basic Configuration"
|
||||
msgstr "Basis configuratie"
|
||||
|
||||
#: cps/web.py:2520
|
||||
#: cps/web.py:2521
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr "DB locatie is niet geldig, gelieve het correcte pad in te geven"
|
||||
|
||||
#: cps/templates/admin.html:34 cps/web.py:2557 cps/web.py:2610
|
||||
#: cps/templates/admin.html:34 cps/web.py:2558 cps/web.py:2611
|
||||
msgid "Add new user"
|
||||
msgstr "Voeg nieuwe gebruiker toe"
|
||||
|
||||
#: cps/web.py:2602
|
||||
#: cps/web.py:2603
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr "Gebruiker '%(user)s' aangemaakt"
|
||||
|
||||
#: cps/web.py:2606
|
||||
#: cps/web.py:2607
|
||||
msgid "Found an existing account for this email address or nickname."
|
||||
msgstr "Een bestaande gebruiker gevonden voor dit emailadres of gebruikersnaam."
|
||||
|
||||
#: cps/web.py:2628
|
||||
#: cps/web.py:2629
|
||||
msgid "Mail settings updated"
|
||||
msgstr "Mail instellingen aangepast"
|
||||
|
||||
#: cps/web.py:2635
|
||||
#: cps/web.py:2636
|
||||
#, python-format
|
||||
msgid "Test E-Mail successfully send to %(kindlemail)s"
|
||||
msgstr "Test email met succes verstuurd naar %(kindlemail)s"
|
||||
|
||||
#: cps/web.py:2638
|
||||
#: cps/web.py:2639
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test E-Mail: %(res)s"
|
||||
msgstr "Er trad een fout op met het versturen van de test email: %(res)s"
|
||||
|
||||
#: cps/web.py:2642
|
||||
#: cps/web.py:2643
|
||||
msgid "E-Mail settings updated"
|
||||
msgstr "Email instellingen aangepast"
|
||||
|
||||
#: cps/web.py:2643
|
||||
#: cps/web.py:2644
|
||||
msgid "Edit mail settings"
|
||||
msgstr "Bewerk mail instellingen"
|
||||
|
||||
#: cps/web.py:2672
|
||||
#: cps/web.py:2673
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr "Gebruiker '%(nick)s' verwijderd"
|
||||
|
||||
#: cps/web.py:2780
|
||||
#: cps/web.py:2781
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr "Gebruiker '%(nick)s' aangepast"
|
||||
|
||||
#: cps/web.py:2783
|
||||
#: cps/web.py:2784
|
||||
msgid "An unknown error occured."
|
||||
msgstr "Een onbekende fout deed zich voor."
|
||||
|
||||
#: cps/web.py:2786
|
||||
#: cps/web.py:2787
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr "Bewerk gebruiker '%(nick)s'"
|
||||
|
||||
#: cps/web.py:2802
|
||||
#: cps/web.py:2803
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr "Fout bij openen eBook. Het bestand bestaat niet of is niet toegankelijk"
|
||||
|
||||
#: cps/web.py:2817 cps/web.py:3018 cps/web.py:3161
|
||||
#: cps/web.py:2818 cps/web.py:3026 cps/web.py:3031 cps/web.py:3174
|
||||
msgid "edit metadata"
|
||||
msgstr "Bewerk metadata"
|
||||
|
||||
#: cps/web.py:2827 cps/web.py:3055
|
||||
#: cps/web.py:2828 cps/web.py:3068
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr "Het uploaden van bestandsextensie \"%s\" is niet toegestaan op deze server"
|
||||
|
||||
#: cps/web.py:2838
|
||||
#: cps/web.py:2839
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgstr "Bestand opslaan niet gelukt voor %s."
|
||||
|
||||
#: cps/web.py:2858 cps/web.py:2862
|
||||
#: cps/web.py:2861 cps/web.py:2865
|
||||
msgid "unknown"
|
||||
msgstr "onbekend"
|
||||
|
||||
#: cps/web.py:3061
|
||||
#: cps/web.py:3074
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr "Up te loaden bestanden dienen een extensie te hebben"
|
||||
|
||||
#: cps/web.py:3080
|
||||
#: cps/web.py:3093
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgstr "Het pad %s aanmaken mislukt (Geen toestemming)."
|
||||
|
||||
#: cps/web.py:3085
|
||||
#: cps/web.py:3098
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgstr "Bestand %s opslaan mislukt (Geen toestemming)."
|
||||
|
||||
#: cps/web.py:3090
|
||||
#: cps/web.py:3103
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgstr "Bestand %s wissen mislukt (Geen toestemming)."
|
||||
|
@ -657,7 +667,7 @@ msgstr "Omschrijving"
|
|||
msgid "Tags"
|
||||
msgstr "Tags"
|
||||
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:141
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:143
|
||||
#: cps/templates/search_form.html:37
|
||||
msgid "Series"
|
||||
msgstr "Series"
|
||||
|
@ -744,7 +754,7 @@ msgstr "Klik op de omslag om de metatadata in het formulier te laden"
|
|||
msgid "Loading..."
|
||||
msgstr "Aan het laden..."
|
||||
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:205
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:207
|
||||
msgid "Close"
|
||||
msgstr "Sluit"
|
||||
|
||||
|
@ -953,7 +963,7 @@ msgstr "Bewaar instelling"
|
|||
msgid "Save settings and send Test E-Mail"
|
||||
msgstr "Bewaar instellingen en stuur test email"
|
||||
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:189
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:191
|
||||
msgid "Next"
|
||||
msgstr "Volgende"
|
||||
|
||||
|
@ -998,7 +1008,7 @@ msgstr "Recentste boeken"
|
|||
msgid "Show Random Books"
|
||||
msgstr "Toon Willekeurige Boeken"
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:144
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:146
|
||||
msgid "Authors"
|
||||
msgstr "Auteurs"
|
||||
|
||||
|
@ -1063,39 +1073,39 @@ msgstr "Oplopend"
|
|||
msgid "Descending"
|
||||
msgstr "Aflopend"
|
||||
|
||||
#: cps/templates/layout.html:135
|
||||
#: cps/templates/layout.html:137
|
||||
msgid "Discover"
|
||||
msgstr "Ontdek"
|
||||
|
||||
#: cps/templates/layout.html:138
|
||||
#: cps/templates/layout.html:140
|
||||
msgid "Categories"
|
||||
msgstr "Categorieën"
|
||||
|
||||
#: cps/templates/layout.html:147 cps/templates/search_form.html:58
|
||||
#: cps/templates/layout.html:149 cps/templates/search_form.html:58
|
||||
msgid "Languages"
|
||||
msgstr "Talen"
|
||||
|
||||
#: cps/templates/layout.html:150
|
||||
#: cps/templates/layout.html:152
|
||||
msgid "Public Shelves"
|
||||
msgstr "Publieke Boekenplanken"
|
||||
|
||||
#: cps/templates/layout.html:154
|
||||
#: cps/templates/layout.html:156
|
||||
msgid "Your Shelves"
|
||||
msgstr "Jou Boekenplanken"
|
||||
|
||||
#: cps/templates/layout.html:159
|
||||
#: cps/templates/layout.html:161
|
||||
msgid "Create a Shelf"
|
||||
msgstr "Maak een boekenplank"
|
||||
|
||||
#: cps/templates/layout.html:160 cps/templates/stats.html:3
|
||||
#: cps/templates/layout.html:162 cps/templates/stats.html:3
|
||||
msgid "About"
|
||||
msgstr "Over"
|
||||
|
||||
#: cps/templates/layout.html:174
|
||||
#: cps/templates/layout.html:176
|
||||
msgid "Previous"
|
||||
msgstr "Vorige"
|
||||
|
||||
#: cps/templates/layout.html:201
|
||||
#: cps/templates/layout.html:203
|
||||
msgid "Book Details"
|
||||
msgstr "Boek Details"
|
||||
|
||||
|
|
|
@ -12,7 +12,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Calibre Web - polski (POT: 2017-04-11 22:51)\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2017-11-12 14:54+0100\n"
|
||||
"POT-Creation-Date: 2017-11-30 16:45+0100\n"
|
||||
"PO-Revision-Date: 2017-04-11 22:51+0200\n"
|
||||
"Last-Translator: Radosław Kierznowski <radek.kierznowski@outlook.com>\n"
|
||||
"Language: pl\n"
|
||||
|
@ -24,182 +24,192 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.5.1\n"
|
||||
|
||||
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1398
|
||||
#: cps/book_formats.py:119 cps/book_formats.py:123 cps/web.py:1401
|
||||
msgid "not installed"
|
||||
msgstr "nie zainstalowane"
|
||||
|
||||
#: cps/helper.py:77
|
||||
#: cps/helper.py:78
|
||||
#, python-format
|
||||
msgid "kindlegen binary %(kindlepath)s not found"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:83
|
||||
#: cps/helper.py:84
|
||||
#, python-format
|
||||
msgid "epub format not found for book id: %(book)d"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:93
|
||||
#: cps/helper.py:94
|
||||
msgid "kindlegen failed, no execution permissions"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:108
|
||||
#: cps/helper.py:109
|
||||
#, python-format
|
||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:187
|
||||
#: cps/helper.py:188
|
||||
#, python-format
|
||||
msgid "Failed to send mail: %s"
|
||||
msgstr "Nie można wysłać poczty: %s"
|
||||
|
||||
#: cps/helper.py:194
|
||||
#: cps/helper.py:195
|
||||
msgid "Calibre-web test email"
|
||||
msgstr "Calibre-web testowy email"
|
||||
|
||||
#: cps/helper.py:195 cps/helper.py:207
|
||||
#: cps/helper.py:196 cps/helper.py:208
|
||||
msgid "This email has been sent via calibre web."
|
||||
msgstr "Ten e-mail został wysłany przez Calibre Web."
|
||||
|
||||
#: cps/helper.py:204 cps/templates/detail.html:43
|
||||
#: cps/helper.py:205 cps/templates/detail.html:43
|
||||
msgid "Send to Kindle"
|
||||
msgstr "Wyślij do Kindle"
|
||||
|
||||
#: cps/helper.py:224 cps/helper.py:238
|
||||
#: cps/helper.py:225 cps/helper.py:239
|
||||
msgid "Could not find any formats suitable for sending by email"
|
||||
msgstr ""
|
||||
"Nie można znaleźć żadnych formatów przystosowane do wysyłania pocztą "
|
||||
"e-mail"
|
||||
|
||||
#: cps/helper.py:338
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:347
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/ub.py:577
|
||||
msgid "Guest"
|
||||
msgstr "Gość"
|
||||
|
||||
#: cps/web.py:964
|
||||
#: cps/web.py:967
|
||||
msgid "Requesting update package"
|
||||
msgstr "Żądanie o pakiet aktualizacji"
|
||||
|
||||
#: cps/web.py:965
|
||||
#: cps/web.py:968
|
||||
msgid "Downloading update package"
|
||||
msgstr "Pobieranie pakietu aktualizacji"
|
||||
|
||||
#: cps/web.py:966
|
||||
#: cps/web.py:969
|
||||
msgid "Unzipping update package"
|
||||
msgstr "Rozpakowywanie pakietu aktualizacji"
|
||||
|
||||
#: cps/web.py:967
|
||||
#: cps/web.py:970
|
||||
msgid "Files are replaced"
|
||||
msgstr "Pliki zostały zastąpione"
|
||||
|
||||
#: cps/web.py:968
|
||||
#: cps/web.py:971
|
||||
msgid "Database connections are closed"
|
||||
msgstr "Połączenia z bazą danych zostały zakończone"
|
||||
|
||||
#: cps/web.py:969
|
||||
#: cps/web.py:972
|
||||
msgid "Server is stopped"
|
||||
msgstr "Serwer jest zatrzymany"
|
||||
|
||||
#: cps/web.py:970
|
||||
#: cps/web.py:973
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr "Aktualizacja zakończona, proszę nacisnąć OK i odświeżyć stronę"
|
||||
|
||||
#: cps/web.py:1044
|
||||
#: cps/web.py:1047
|
||||
msgid "Recently Added Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1054
|
||||
#: cps/web.py:1057
|
||||
msgid "Newest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1065
|
||||
#: cps/web.py:1069
|
||||
msgid "Oldest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1077
|
||||
#: cps/web.py:1081
|
||||
msgid "Books (A-Z)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1088
|
||||
#: cps/web.py:1092
|
||||
msgid "Books (Z-A)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1116
|
||||
#: cps/web.py:1120
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr "Najpopularniejsze książki (najczęściej pobierane)"
|
||||
|
||||
#: cps/web.py:1129
|
||||
#: cps/web.py:1133
|
||||
msgid "Best rated books"
|
||||
msgstr "Najlepiej oceniane książki"
|
||||
|
||||
#: cps/templates/index.xml:32 cps/web.py:1140
|
||||
#: cps/templates/index.xml:32 cps/web.py:1144
|
||||
msgid "Random Books"
|
||||
msgstr "Losowe książki"
|
||||
|
||||
#: cps/web.py:1154
|
||||
#: cps/web.py:1158
|
||||
msgid "Author list"
|
||||
msgstr "Lista autorów"
|
||||
|
||||
#: cps/web.py:1166 cps/web.py:1225 cps/web.py:1355 cps/web.py:1827
|
||||
#: cps/web.py:1170 cps/web.py:1228 cps/web.py:1358 cps/web.py:1827
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr "Błąd otwierania e-booka. Plik nie istnieje lub plik nie jest dostępny:"
|
||||
|
||||
#: cps/templates/index.xml:64 cps/web.py:1209
|
||||
#: cps/templates/index.xml:64 cps/web.py:1212
|
||||
msgid "Series list"
|
||||
msgstr "Lista serii"
|
||||
|
||||
#: cps/web.py:1223
|
||||
#: cps/web.py:1226
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr "Seria: %(serie)s"
|
||||
|
||||
#: cps/web.py:1256
|
||||
#: cps/web.py:1259
|
||||
msgid "Available languages"
|
||||
msgstr "Dostępne języki"
|
||||
|
||||
#: cps/web.py:1273
|
||||
#: cps/web.py:1276
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr "Język: %(name)s"
|
||||
|
||||
#: cps/templates/index.xml:58 cps/web.py:1283
|
||||
#: cps/templates/index.xml:58 cps/web.py:1286
|
||||
msgid "Category list"
|
||||
msgstr "Lista kategorii"
|
||||
|
||||
#: cps/web.py:1297
|
||||
#: cps/web.py:1300
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr "Kategoria: %(name)s"
|
||||
|
||||
#: cps/web.py:1409
|
||||
#: cps/web.py:1412
|
||||
msgid "Excecution permissions missing"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1423
|
||||
#: cps/web.py:1426
|
||||
msgid "Statistics"
|
||||
msgstr "Statystyki"
|
||||
|
||||
#: cps/web.py:1587
|
||||
#: cps/web.py:1591
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr "Serwer uruchomiony ponownie, proszę odświeżyć stronę"
|
||||
|
||||
#: cps/web.py:1589
|
||||
#: cps/web.py:1593
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr "Wykonano wyłączenie serwera, proszę zamknąć okno"
|
||||
|
||||
#: cps/web.py:1605
|
||||
#: cps/web.py:1609
|
||||
msgid "Update done"
|
||||
msgstr "Aktualizacja zakończona"
|
||||
|
||||
#: cps/web.py:1687 cps/web.py:1700
|
||||
#: cps/web.py:1691 cps/web.py:1704
|
||||
msgid "search"
|
||||
msgstr "szukaj"
|
||||
|
||||
#: cps/templates/index.xml:39 cps/templates/index.xml:42
|
||||
#: cps/templates/layout.html:131 cps/web.py:1782
|
||||
#: cps/templates/layout.html:132 cps/web.py:1782
|
||||
msgid "Read Books"
|
||||
msgstr "Przeczytane książki"
|
||||
|
||||
#: cps/templates/index.xml:45 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:132 cps/web.py:1785
|
||||
#: cps/templates/index.xml:46 cps/templates/index.xml:49
|
||||
#: cps/templates/layout.html:134 cps/web.py:1785
|
||||
msgid "Unread Books"
|
||||
msgstr "Nieprzeczytane książki"
|
||||
|
||||
|
@ -207,7 +217,7 @@ msgstr "Nieprzeczytane książki"
|
|||
msgid "Read a Book"
|
||||
msgstr "Czytaj książkę"
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:2555
|
||||
#: cps/web.py:1925 cps/web.py:2556
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr "Proszę wypełnić wszystkie pola!"
|
||||
|
||||
|
@ -262,7 +272,7 @@ msgstr "Książka została pomyślnie wysłana do %(kindlemail)s"
|
|||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s"
|
||||
|
||||
#: cps/web.py:2085 cps/web.py:2640
|
||||
#: cps/web.py:2085 cps/web.py:2641
|
||||
msgid "Please configure your kindle email address first..."
|
||||
msgstr "Proszę najpierw skonfigurować adres e-mail swojego kindla..."
|
||||
|
||||
|
@ -271,177 +281,177 @@ msgstr "Proszę najpierw skonfigurować adres e-mail swojego kindla..."
|
|||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr "Książka została dodana do półki: %(sname)s"
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2166
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr "Książka została usunięta z półki: %(sname)s"
|
||||
|
||||
#: cps/web.py:2183 cps/web.py:2207
|
||||
#: cps/web.py:2185 cps/web.py:2209
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr "Półka o nazwie '%(title)s' już istnieje."
|
||||
|
||||
#: cps/web.py:2188
|
||||
#: cps/web.py:2190
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr "Półka %(title)s została utworzona"
|
||||
|
||||
#: cps/web.py:2190 cps/web.py:2218
|
||||
#: cps/web.py:2192 cps/web.py:2220
|
||||
msgid "There was an error"
|
||||
msgstr "Wystąpił błąd"
|
||||
|
||||
#: cps/web.py:2191 cps/web.py:2193
|
||||
#: cps/web.py:2193 cps/web.py:2195
|
||||
msgid "create a shelf"
|
||||
msgstr "utwórz półkę"
|
||||
|
||||
#: cps/web.py:2216
|
||||
#: cps/web.py:2218
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr "Półka %(title)s została zmieniona"
|
||||
|
||||
#: cps/web.py:2219 cps/web.py:2221
|
||||
#: cps/web.py:2221 cps/web.py:2223
|
||||
msgid "Edit a shelf"
|
||||
msgstr "Edytuj półkę"
|
||||
|
||||
#: cps/web.py:2242
|
||||
#: cps/web.py:2244
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr "pomyślnie usunięto półkę %(name)s"
|
||||
|
||||
#: cps/web.py:2264
|
||||
#: cps/web.py:2266
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr "Półka: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2267
|
||||
#: cps/web.py:2269
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2300
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr "Zmieniono kolejność półki: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2368
|
||||
#: cps/web.py:2369
|
||||
msgid "Found an existing account for this email address."
|
||||
msgstr "Znaleziono istniejące konto dla tego adresu e-mail."
|
||||
|
||||
#: cps/web.py:2370 cps/web.py:2374
|
||||
#: cps/web.py:2371 cps/web.py:2375
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr "Profil użytkownika %(name)s"
|
||||
|
||||
#: cps/web.py:2371
|
||||
#: cps/web.py:2372
|
||||
msgid "Profile updated"
|
||||
msgstr "Zaktualizowano profil"
|
||||
|
||||
#: cps/web.py:2385
|
||||
#: cps/web.py:2386
|
||||
msgid "Admin page"
|
||||
msgstr "Portal administracyjny"
|
||||
|
||||
#: cps/web.py:2509
|
||||
#: cps/web.py:2510
|
||||
msgid "Calibre-web configuration updated"
|
||||
msgstr "Konfiguracja Calibre-web została zaktualizowana"
|
||||
|
||||
#: cps/web.py:2516 cps/web.py:2522 cps/web.py:2536
|
||||
#: cps/web.py:2517 cps/web.py:2523 cps/web.py:2537
|
||||
msgid "Basic Configuration"
|
||||
msgstr "Podstawowa konfiguracja"
|
||||
|
||||
#: cps/web.py:2520
|
||||
#: cps/web.py:2521
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr "Lokalizacja bazy danych jest nieprawidłowa, wpisz poprawną ścieżkę"
|
||||
|
||||
#: cps/templates/admin.html:34 cps/web.py:2557 cps/web.py:2610
|
||||
#: cps/templates/admin.html:34 cps/web.py:2558 cps/web.py:2611
|
||||
msgid "Add new user"
|
||||
msgstr "Dodaj nowego użytkownika"
|
||||
|
||||
#: cps/web.py:2602
|
||||
#: cps/web.py:2603
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr "Użytkownik '%(user)s' został utworzony"
|
||||
|
||||
#: cps/web.py:2606
|
||||
#: cps/web.py:2607
|
||||
msgid "Found an existing account for this email address or nickname."
|
||||
msgstr "Znaleziono istniejące konto dla tego adresu e-mail lub nazwy użytkownika."
|
||||
|
||||
#: cps/web.py:2628
|
||||
#: cps/web.py:2629
|
||||
msgid "Mail settings updated"
|
||||
msgstr "Zaktualizowano ustawienia poczty e-mail"
|
||||
|
||||
#: cps/web.py:2635
|
||||
#: cps/web.py:2636
|
||||
#, python-format
|
||||
msgid "Test E-Mail successfully send to %(kindlemail)s"
|
||||
msgstr "Testowy e-mail został pomyślnie wysłany do %(kindlemail)s"
|
||||
|
||||
#: cps/web.py:2638
|
||||
#: cps/web.py:2639
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test E-Mail: %(res)s"
|
||||
msgstr "Wystąpił błąd podczas wysyłania testowej wiadomości e-mail: %(res)s"
|
||||
|
||||
#: cps/web.py:2642
|
||||
#: cps/web.py:2643
|
||||
msgid "E-Mail settings updated"
|
||||
msgstr "Zaktualizowano ustawienia e-mail"
|
||||
|
||||
#: cps/web.py:2643
|
||||
#: cps/web.py:2644
|
||||
msgid "Edit mail settings"
|
||||
msgstr "Edytuj ustawienia poczty e-mail"
|
||||
|
||||
#: cps/web.py:2672
|
||||
#: cps/web.py:2673
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr "Użytkownik '%(nick)s' został usunięty"
|
||||
|
||||
#: cps/web.py:2780
|
||||
#: cps/web.py:2781
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr "Użytkownik '%(nick)s' został zaktualizowany"
|
||||
|
||||
#: cps/web.py:2783
|
||||
#: cps/web.py:2784
|
||||
msgid "An unknown error occured."
|
||||
msgstr "Wystąpił nieznany błąd."
|
||||
|
||||
#: cps/web.py:2786
|
||||
#: cps/web.py:2787
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr "Edytuj użytkownika %(nick)s"
|
||||
|
||||
#: cps/web.py:2802
|
||||
#: cps/web.py:2803
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2817 cps/web.py:3018 cps/web.py:3161
|
||||
#: cps/web.py:2818 cps/web.py:3026 cps/web.py:3031 cps/web.py:3174
|
||||
msgid "edit metadata"
|
||||
msgstr "edytuj metadane"
|
||||
|
||||
#: cps/web.py:2827 cps/web.py:3055
|
||||
#: cps/web.py:2828 cps/web.py:3068
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr "Rozszerzenie pliku \"%s\" nie jest dozwolone do przesłania na ten serwer"
|
||||
|
||||
#: cps/web.py:2838
|
||||
#: cps/web.py:2839
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2858 cps/web.py:2862
|
||||
#: cps/web.py:2861 cps/web.py:2865
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3061
|
||||
#: cps/web.py:3074
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr "Plik do przesłania musi mieć rozszerzenie"
|
||||
|
||||
#: cps/web.py:3080
|
||||
#: cps/web.py:3093
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgstr "Nie udało się utworzyć łącza %s (Odmowa dostępu)."
|
||||
|
||||
#: cps/web.py:3085
|
||||
#: cps/web.py:3098
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgstr "Nie można przechowywać pliku %s (Odmowa dostępu)."
|
||||
|
||||
#: cps/web.py:3090
|
||||
#: cps/web.py:3103
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgstr "Nie udało się usunąć pliku %s (Odmowa dostępu)."
|
||||
|
@ -646,7 +656,7 @@ msgstr "Opis"
|
|||
msgid "Tags"
|
||||
msgstr "Tagi"
|
||||
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:141
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:143
|
||||
#: cps/templates/search_form.html:37
|
||||
msgid "Series"
|
||||
msgstr "Seria"
|
||||
|
@ -733,7 +743,7 @@ msgstr "Kliknij okładkę, aby załadować metadane do formularza"
|
|||
msgid "Loading..."
|
||||
msgstr "Ładowanie..."
|
||||
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:205
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:207
|
||||
msgid "Close"
|
||||
msgstr "Zamknij"
|
||||
|
||||
|
@ -943,7 +953,7 @@ msgstr "Zapisz ustawienia"
|
|||
msgid "Save settings and send Test E-Mail"
|
||||
msgstr "Zapisz ustawienia i wyślij testową wiadomość e-mail"
|
||||
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:189
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:191
|
||||
msgid "Next"
|
||||
msgstr "Następne"
|
||||
|
||||
|
@ -988,7 +998,7 @@ msgstr "Ostatnie książki"
|
|||
msgid "Show Random Books"
|
||||
msgstr "Pokazuj losowe książki"
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:144
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:146
|
||||
msgid "Authors"
|
||||
msgstr "Autorzy"
|
||||
|
||||
|
@ -1053,39 +1063,39 @@ msgstr ""
|
|||
msgid "Descending"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:135
|
||||
#: cps/templates/layout.html:137
|
||||
msgid "Discover"
|
||||
msgstr "Odkrywaj"
|
||||
|
||||
#: cps/templates/layout.html:138
|
||||
#: cps/templates/layout.html:140
|
||||
msgid "Categories"
|
||||
msgstr "Kategorie"
|
||||
|
||||
#: cps/templates/layout.html:147 cps/templates/search_form.html:58
|
||||
#: cps/templates/layout.html:149 cps/templates/search_form.html:58
|
||||
msgid "Languages"
|
||||
msgstr "Języki"
|
||||
|
||||
#: cps/templates/layout.html:150
|
||||
#: cps/templates/layout.html:152
|
||||
msgid "Public Shelves"
|
||||
msgstr "Publiczne półki"
|
||||
|
||||
#: cps/templates/layout.html:154
|
||||
#: cps/templates/layout.html:156
|
||||
msgid "Your Shelves"
|
||||
msgstr "Twoje półki"
|
||||
|
||||
#: cps/templates/layout.html:159
|
||||
#: cps/templates/layout.html:161
|
||||
msgid "Create a Shelf"
|
||||
msgstr "Utwórz półkę"
|
||||
|
||||
#: cps/templates/layout.html:160 cps/templates/stats.html:3
|
||||
#: cps/templates/layout.html:162 cps/templates/stats.html:3
|
||||
msgid "About"
|
||||
msgstr "O programie"
|
||||
|
||||
#: cps/templates/layout.html:174
|
||||
#: cps/templates/layout.html:176
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:201
|
||||
#: cps/templates/layout.html:203
|
||||
msgid "Book Details"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Calibre-web\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
|
||||
"POT-Creation-Date: 2017-11-12 14:54+0100\n"
|
||||
"POT-Creation-Date: 2017-11-30 16:45+0100\n"
|
||||
"PO-Revision-Date: 2017-04-30 00:47+0300\n"
|
||||
"Last-Translator: Pavel Korovin <p@tristero.se>\n"
|
||||
"Language: ru\n"
|
||||
|
@ -26,180 +26,190 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.5.1\n"
|
||||
|
||||
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1398
|
||||
#: cps/book_formats.py:119 cps/book_formats.py:123 cps/web.py:1401
|
||||
msgid "not installed"
|
||||
msgstr "Отсутствует"
|
||||
|
||||
#: cps/helper.py:77
|
||||
#: cps/helper.py:78
|
||||
#, python-format
|
||||
msgid "kindlegen binary %(kindlepath)s not found"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:83
|
||||
#: cps/helper.py:84
|
||||
#, python-format
|
||||
msgid "epub format not found for book id: %(book)d"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:93
|
||||
#: cps/helper.py:94
|
||||
msgid "kindlegen failed, no execution permissions"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:108
|
||||
#: cps/helper.py:109
|
||||
#, python-format
|
||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:187
|
||||
#: cps/helper.py:188
|
||||
#, python-format
|
||||
msgid "Failed to send mail: %s"
|
||||
msgstr "Ошибка отправки письма: %s"
|
||||
|
||||
#: cps/helper.py:194
|
||||
#: cps/helper.py:195
|
||||
msgid "Calibre-web test email"
|
||||
msgstr "Тестовое письмо от Calibre-web"
|
||||
|
||||
#: cps/helper.py:195 cps/helper.py:207
|
||||
#: cps/helper.py:196 cps/helper.py:208
|
||||
msgid "This email has been sent via calibre web."
|
||||
msgstr "Письмо было отправлено через calibre web"
|
||||
|
||||
#: cps/helper.py:204 cps/templates/detail.html:43
|
||||
#: cps/helper.py:205 cps/templates/detail.html:43
|
||||
msgid "Send to Kindle"
|
||||
msgstr "Отправить на Kindle"
|
||||
|
||||
#: cps/helper.py:224 cps/helper.py:238
|
||||
#: cps/helper.py:225 cps/helper.py:239
|
||||
msgid "Could not find any formats suitable for sending by email"
|
||||
msgstr "Невозоможно найти формат, подходящий для отправки по email"
|
||||
|
||||
#: cps/helper.py:338
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:347
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/ub.py:577
|
||||
msgid "Guest"
|
||||
msgstr "Гость"
|
||||
|
||||
#: cps/web.py:964
|
||||
#: cps/web.py:967
|
||||
msgid "Requesting update package"
|
||||
msgstr "Проверка обновлений"
|
||||
|
||||
#: cps/web.py:965
|
||||
#: cps/web.py:968
|
||||
msgid "Downloading update package"
|
||||
msgstr "Загрузка обновлений"
|
||||
|
||||
#: cps/web.py:966
|
||||
#: cps/web.py:969
|
||||
msgid "Unzipping update package"
|
||||
msgstr "Распаковка обновлений"
|
||||
|
||||
#: cps/web.py:967
|
||||
#: cps/web.py:970
|
||||
msgid "Files are replaced"
|
||||
msgstr "Файлы заменены"
|
||||
|
||||
#: cps/web.py:968
|
||||
#: cps/web.py:971
|
||||
msgid "Database connections are closed"
|
||||
msgstr "Соеднинения с базой данных закрыты"
|
||||
|
||||
#: cps/web.py:969
|
||||
#: cps/web.py:972
|
||||
msgid "Server is stopped"
|
||||
msgstr "Сервер остановлен"
|
||||
|
||||
#: cps/web.py:970
|
||||
#: cps/web.py:973
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr "Обновления установлены, нажмите okay и перезагрузите страницу"
|
||||
|
||||
#: cps/web.py:1044
|
||||
#: cps/web.py:1047
|
||||
msgid "Recently Added Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1054
|
||||
#: cps/web.py:1057
|
||||
msgid "Newest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1065
|
||||
#: cps/web.py:1069
|
||||
msgid "Oldest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1077
|
||||
#: cps/web.py:1081
|
||||
msgid "Books (A-Z)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1088
|
||||
#: cps/web.py:1092
|
||||
msgid "Books (Z-A)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1116
|
||||
#: cps/web.py:1120
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr "Популярные книги (часто загружаемые)"
|
||||
|
||||
#: cps/web.py:1129
|
||||
#: cps/web.py:1133
|
||||
msgid "Best rated books"
|
||||
msgstr "Книги с наивысшим рейтингом"
|
||||
|
||||
#: cps/templates/index.xml:32 cps/web.py:1140
|
||||
#: cps/templates/index.xml:32 cps/web.py:1144
|
||||
msgid "Random Books"
|
||||
msgstr "Случайный выбор"
|
||||
|
||||
#: cps/web.py:1154
|
||||
#: cps/web.py:1158
|
||||
msgid "Author list"
|
||||
msgstr "Авторы"
|
||||
|
||||
#: cps/web.py:1166 cps/web.py:1225 cps/web.py:1355 cps/web.py:1827
|
||||
#: cps/web.py:1170 cps/web.py:1228 cps/web.py:1358 cps/web.py:1827
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr "Невозможно открыть книгу. Файл не существует или недоступен."
|
||||
|
||||
#: cps/templates/index.xml:64 cps/web.py:1209
|
||||
#: cps/templates/index.xml:64 cps/web.py:1212
|
||||
msgid "Series list"
|
||||
msgstr "Серии"
|
||||
|
||||
#: cps/web.py:1223
|
||||
#: cps/web.py:1226
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr "Серии: %(serie)s"
|
||||
|
||||
#: cps/web.py:1256
|
||||
#: cps/web.py:1259
|
||||
msgid "Available languages"
|
||||
msgstr "Языки"
|
||||
|
||||
#: cps/web.py:1273
|
||||
#: cps/web.py:1276
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr "Язык: %(name)s"
|
||||
|
||||
#: cps/templates/index.xml:58 cps/web.py:1283
|
||||
#: cps/templates/index.xml:58 cps/web.py:1286
|
||||
msgid "Category list"
|
||||
msgstr "Категории"
|
||||
|
||||
#: cps/web.py:1297
|
||||
#: cps/web.py:1300
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr "Категория: %(name)s"
|
||||
|
||||
#: cps/web.py:1409
|
||||
#: cps/web.py:1412
|
||||
msgid "Excecution permissions missing"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1423
|
||||
#: cps/web.py:1426
|
||||
msgid "Statistics"
|
||||
msgstr "Статистика"
|
||||
|
||||
#: cps/web.py:1587
|
||||
#: cps/web.py:1591
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr "Сервер перезагружен, пожалуйста, перезагрузите страницу"
|
||||
|
||||
#: cps/web.py:1589
|
||||
#: cps/web.py:1593
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr "Производится остановка сервера, пожалуйста, закройте окно"
|
||||
|
||||
#: cps/web.py:1605
|
||||
#: cps/web.py:1609
|
||||
msgid "Update done"
|
||||
msgstr "Обновление закончено"
|
||||
|
||||
#: cps/web.py:1687 cps/web.py:1700
|
||||
#: cps/web.py:1691 cps/web.py:1704
|
||||
msgid "search"
|
||||
msgstr "поиск"
|
||||
|
||||
#: cps/templates/index.xml:39 cps/templates/index.xml:42
|
||||
#: cps/templates/layout.html:131 cps/web.py:1782
|
||||
#: cps/templates/layout.html:132 cps/web.py:1782
|
||||
msgid "Read Books"
|
||||
msgstr "Прочитанные"
|
||||
|
||||
#: cps/templates/index.xml:45 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:132 cps/web.py:1785
|
||||
#: cps/templates/index.xml:46 cps/templates/index.xml:49
|
||||
#: cps/templates/layout.html:134 cps/web.py:1785
|
||||
msgid "Unread Books"
|
||||
msgstr "Непрочитанные"
|
||||
|
||||
|
@ -207,7 +217,7 @@ msgstr "Непрочитанные"
|
|||
msgid "Read a Book"
|
||||
msgstr "Читать книгу"
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:2555
|
||||
#: cps/web.py:1925 cps/web.py:2556
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr "Пожалуйста, заполните все поля!"
|
||||
|
||||
|
@ -262,7 +272,7 @@ msgstr "Книга успешно отправлена на %(kindlemail)s"
|
|||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr "Ошибка при отправке книги: %(res)s"
|
||||
|
||||
#: cps/web.py:2085 cps/web.py:2640
|
||||
#: cps/web.py:2085 cps/web.py:2641
|
||||
msgid "Please configure your kindle email address first..."
|
||||
msgstr "Пожалуйста, сначала укажите ваш kindle email..."
|
||||
|
||||
|
@ -271,177 +281,177 @@ msgstr "Пожалуйста, сначала укажите ваш kindle email.
|
|||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr "Книга добавлена на книжную полку: %(sname)s"
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2166
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr "Книга удалена с книжной полки: %(sname)s"
|
||||
|
||||
#: cps/web.py:2183 cps/web.py:2207
|
||||
#: cps/web.py:2185 cps/web.py:2209
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr "Книжкная полка с названием '%(title)s' уже существует."
|
||||
|
||||
#: cps/web.py:2188
|
||||
#: cps/web.py:2190
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr "Создана книжная полка %(title)s"
|
||||
|
||||
#: cps/web.py:2190 cps/web.py:2218
|
||||
#: cps/web.py:2192 cps/web.py:2220
|
||||
msgid "There was an error"
|
||||
msgstr "Произошла ошибка"
|
||||
|
||||
#: cps/web.py:2191 cps/web.py:2193
|
||||
#: cps/web.py:2193 cps/web.py:2195
|
||||
msgid "create a shelf"
|
||||
msgstr "создать книжную полку"
|
||||
|
||||
#: cps/web.py:2216
|
||||
#: cps/web.py:2218
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr "Книжная полка %(title)s изменена"
|
||||
|
||||
#: cps/web.py:2219 cps/web.py:2221
|
||||
#: cps/web.py:2221 cps/web.py:2223
|
||||
msgid "Edit a shelf"
|
||||
msgstr "Изменить книжную полку"
|
||||
|
||||
#: cps/web.py:2242
|
||||
#: cps/web.py:2244
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr "Книжная полка %(name)s удалена"
|
||||
|
||||
#: cps/web.py:2264
|
||||
#: cps/web.py:2266
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr "Книжная полка: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2267
|
||||
#: cps/web.py:2269
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2300
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr "Изменить расположение книжной полки '%(name)s'"
|
||||
|
||||
#: cps/web.py:2368
|
||||
#: cps/web.py:2369
|
||||
msgid "Found an existing account for this email address."
|
||||
msgstr "Найдена учётная запись для для данного адреса email."
|
||||
|
||||
#: cps/web.py:2370 cps/web.py:2374
|
||||
#: cps/web.py:2371 cps/web.py:2375
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr "Профиль %(name)s"
|
||||
|
||||
#: cps/web.py:2371
|
||||
#: cps/web.py:2372
|
||||
msgid "Profile updated"
|
||||
msgstr "Профиль обновлён"
|
||||
|
||||
#: cps/web.py:2385
|
||||
#: cps/web.py:2386
|
||||
msgid "Admin page"
|
||||
msgstr "Администрирование"
|
||||
|
||||
#: cps/web.py:2509
|
||||
#: cps/web.py:2510
|
||||
msgid "Calibre-web configuration updated"
|
||||
msgstr "Конфигурация Calibre-web обновлена"
|
||||
|
||||
#: cps/web.py:2516 cps/web.py:2522 cps/web.py:2536
|
||||
#: cps/web.py:2517 cps/web.py:2523 cps/web.py:2537
|
||||
msgid "Basic Configuration"
|
||||
msgstr "Настройки сервера"
|
||||
|
||||
#: cps/web.py:2520
|
||||
#: cps/web.py:2521
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr "Неверный путь к фалу БД, пожалуйста, укажите правильное расположение БД"
|
||||
|
||||
#: cps/templates/admin.html:34 cps/web.py:2557 cps/web.py:2610
|
||||
#: cps/templates/admin.html:34 cps/web.py:2558 cps/web.py:2611
|
||||
msgid "Add new user"
|
||||
msgstr "Добавить пользователя"
|
||||
|
||||
#: cps/web.py:2602
|
||||
#: cps/web.py:2603
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr "Пользователь '%(user)s' добавлен"
|
||||
|
||||
#: cps/web.py:2606
|
||||
#: cps/web.py:2607
|
||||
msgid "Found an existing account for this email address or nickname."
|
||||
msgstr "Для указанного адреса или имени найдена существующая учётная запись."
|
||||
|
||||
#: cps/web.py:2628
|
||||
#: cps/web.py:2629
|
||||
msgid "Mail settings updated"
|
||||
msgstr "Настройки почты изменены"
|
||||
|
||||
#: cps/web.py:2635
|
||||
#: cps/web.py:2636
|
||||
#, python-format
|
||||
msgid "Test E-Mail successfully send to %(kindlemail)s"
|
||||
msgstr "Тестовое сообщение успешно отправлено на адрес %(kindlemail)s"
|
||||
|
||||
#: cps/web.py:2638
|
||||
#: cps/web.py:2639
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test E-Mail: %(res)s"
|
||||
msgstr "Ошибка отправки тестового сообщения: %(res)s"
|
||||
|
||||
#: cps/web.py:2642
|
||||
#: cps/web.py:2643
|
||||
msgid "E-Mail settings updated"
|
||||
msgstr "Обновлены настройки e-mail"
|
||||
|
||||
#: cps/web.py:2643
|
||||
#: cps/web.py:2644
|
||||
msgid "Edit mail settings"
|
||||
msgstr "Изменить почтовые настройки"
|
||||
|
||||
#: cps/web.py:2672
|
||||
#: cps/web.py:2673
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr "Пользователь '%(nick)s' удалён"
|
||||
|
||||
#: cps/web.py:2780
|
||||
#: cps/web.py:2781
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr "Пользователь '%(nick)s' обновлён"
|
||||
|
||||
#: cps/web.py:2783
|
||||
#: cps/web.py:2784
|
||||
msgid "An unknown error occured."
|
||||
msgstr "Произошла неизвестная ошибка."
|
||||
|
||||
#: cps/web.py:2786
|
||||
#: cps/web.py:2787
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr "Изменить пользователя %(nick)s"
|
||||
|
||||
#: cps/web.py:2802
|
||||
#: cps/web.py:2803
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2817 cps/web.py:3018 cps/web.py:3161
|
||||
#: cps/web.py:2818 cps/web.py:3026 cps/web.py:3031 cps/web.py:3174
|
||||
msgid "edit metadata"
|
||||
msgstr "изменить метаданные"
|
||||
|
||||
#: cps/web.py:2827 cps/web.py:3055
|
||||
#: cps/web.py:2828 cps/web.py:3068
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr "Запрещена загрузка файлов с расширением \"%s\""
|
||||
|
||||
#: cps/web.py:2838
|
||||
#: cps/web.py:2839
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2858 cps/web.py:2862
|
||||
#: cps/web.py:2861 cps/web.py:2865
|
||||
msgid "unknown"
|
||||
msgstr "неизвестно"
|
||||
|
||||
#: cps/web.py:3061
|
||||
#: cps/web.py:3074
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr "Загружаемый файл должен иметь расширение"
|
||||
|
||||
#: cps/web.py:3080
|
||||
#: cps/web.py:3093
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgstr "Ошибка при создании пути %s (доступ запрещён)"
|
||||
|
||||
#: cps/web.py:3085
|
||||
#: cps/web.py:3098
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgstr "Ошибка записи файоа %s (доступ запрещён)"
|
||||
|
||||
#: cps/web.py:3090
|
||||
#: cps/web.py:3103
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgstr "Ошибка удаления файла %s (доступ запрещён)"
|
||||
|
@ -646,7 +656,7 @@ msgstr "Описание"
|
|||
msgid "Tags"
|
||||
msgstr "Теги"
|
||||
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:141
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:143
|
||||
#: cps/templates/search_form.html:37
|
||||
msgid "Series"
|
||||
msgstr "Серии"
|
||||
|
@ -733,7 +743,7 @@ msgstr "Нажмите на обложку, чтобы получить мета
|
|||
msgid "Loading..."
|
||||
msgstr "Загрузка..."
|
||||
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:205
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:207
|
||||
msgid "Close"
|
||||
msgstr "Закрыть"
|
||||
|
||||
|
@ -940,7 +950,7 @@ msgstr "Сохранить настройки"
|
|||
msgid "Save settings and send Test E-Mail"
|
||||
msgstr "Сохранить настройки и отправить тестовое письмо"
|
||||
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:189
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:191
|
||||
msgid "Next"
|
||||
msgstr "Дальше"
|
||||
|
||||
|
@ -985,7 +995,7 @@ msgstr "Последние поступления"
|
|||
msgid "Show Random Books"
|
||||
msgstr "Показывать случайные книги"
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:144
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:146
|
||||
msgid "Authors"
|
||||
msgstr "Авторы"
|
||||
|
||||
|
@ -1050,39 +1060,39 @@ msgstr ""
|
|||
msgid "Descending"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:135
|
||||
#: cps/templates/layout.html:137
|
||||
msgid "Discover"
|
||||
msgstr "Обзор"
|
||||
|
||||
#: cps/templates/layout.html:138
|
||||
#: cps/templates/layout.html:140
|
||||
msgid "Categories"
|
||||
msgstr "Категории"
|
||||
|
||||
#: cps/templates/layout.html:147 cps/templates/search_form.html:58
|
||||
#: cps/templates/layout.html:149 cps/templates/search_form.html:58
|
||||
msgid "Languages"
|
||||
msgstr "Языки"
|
||||
|
||||
#: cps/templates/layout.html:150
|
||||
#: cps/templates/layout.html:152
|
||||
msgid "Public Shelves"
|
||||
msgstr "Общие книжные полки"
|
||||
|
||||
#: cps/templates/layout.html:154
|
||||
#: cps/templates/layout.html:156
|
||||
msgid "Your Shelves"
|
||||
msgstr "Ваши книжные полки"
|
||||
|
||||
#: cps/templates/layout.html:159
|
||||
#: cps/templates/layout.html:161
|
||||
msgid "Create a Shelf"
|
||||
msgstr "Создать книжную полку"
|
||||
|
||||
#: cps/templates/layout.html:160 cps/templates/stats.html:3
|
||||
#: cps/templates/layout.html:162 cps/templates/stats.html:3
|
||||
msgid "About"
|
||||
msgstr "О программе"
|
||||
|
||||
#: cps/templates/layout.html:174
|
||||
#: cps/templates/layout.html:176
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:201
|
||||
#: cps/templates/layout.html:203
|
||||
msgid "Book Details"
|
||||
msgstr ""
|
||||
|
||||
|
|
|
@ -15,7 +15,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: Calibre-web\n"
|
||||
"Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n"
|
||||
"POT-Creation-Date: 2017-11-12 14:54+0100\n"
|
||||
"POT-Creation-Date: 2017-11-30 16:45+0100\n"
|
||||
"PO-Revision-Date: 2017-01-06 17:00+0000\n"
|
||||
"Last-Translator: dalin <dalin.lin@gmail.com>\n"
|
||||
"Language: zh_Hans_CN\n"
|
||||
|
@ -26,180 +26,190 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.5.1\n"
|
||||
|
||||
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1398
|
||||
#: cps/book_formats.py:119 cps/book_formats.py:123 cps/web.py:1401
|
||||
msgid "not installed"
|
||||
msgstr "未安装"
|
||||
|
||||
#: cps/helper.py:77
|
||||
#: cps/helper.py:78
|
||||
#, python-format
|
||||
msgid "kindlegen binary %(kindlepath)s not found"
|
||||
msgstr "找不到kindlegen二进制 %(kindlepath)s"
|
||||
|
||||
#: cps/helper.py:83
|
||||
#: cps/helper.py:84
|
||||
#, python-format
|
||||
msgid "epub format not found for book id: %(book)d"
|
||||
msgstr "没有找到书籍ID %(book)d 的epub格式"
|
||||
|
||||
#: cps/helper.py:93
|
||||
#: cps/helper.py:94
|
||||
msgid "kindlegen failed, no execution permissions"
|
||||
msgstr "kindlegen失败,没有可执行权限"
|
||||
|
||||
#: cps/helper.py:108
|
||||
#: cps/helper.py:109
|
||||
#, python-format
|
||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||
msgstr "Kindlegen 因为错误 %(error)s 失败。消息: %(message)s"
|
||||
|
||||
#: cps/helper.py:187
|
||||
#: cps/helper.py:188
|
||||
#, python-format
|
||||
msgid "Failed to send mail: %s"
|
||||
msgstr "发送邮件失败: %s"
|
||||
|
||||
#: cps/helper.py:194
|
||||
#: cps/helper.py:195
|
||||
msgid "Calibre-web test email"
|
||||
msgstr "Calibre-web 测试邮件"
|
||||
|
||||
#: cps/helper.py:195 cps/helper.py:207
|
||||
#: cps/helper.py:196 cps/helper.py:208
|
||||
msgid "This email has been sent via calibre web."
|
||||
msgstr "此邮件由calibre web发送"
|
||||
|
||||
#: cps/helper.py:204 cps/templates/detail.html:43
|
||||
#: cps/helper.py:205 cps/templates/detail.html:43
|
||||
msgid "Send to Kindle"
|
||||
msgstr "发送到Kindle"
|
||||
|
||||
#: cps/helper.py:224 cps/helper.py:238
|
||||
#: cps/helper.py:225 cps/helper.py:239
|
||||
msgid "Could not find any formats suitable for sending by email"
|
||||
msgstr "无法找到适合邮件发送的格式"
|
||||
|
||||
#: cps/helper.py:338
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:347
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/ub.py:577
|
||||
msgid "Guest"
|
||||
msgstr "游客"
|
||||
|
||||
#: cps/web.py:964
|
||||
#: cps/web.py:967
|
||||
msgid "Requesting update package"
|
||||
msgstr "正在请求更新包"
|
||||
|
||||
#: cps/web.py:965
|
||||
#: cps/web.py:968
|
||||
msgid "Downloading update package"
|
||||
msgstr "正在下载更新包"
|
||||
|
||||
#: cps/web.py:966
|
||||
#: cps/web.py:969
|
||||
msgid "Unzipping update package"
|
||||
msgstr "正在解压更新包"
|
||||
|
||||
#: cps/web.py:967
|
||||
#: cps/web.py:970
|
||||
msgid "Files are replaced"
|
||||
msgstr "文件已替换"
|
||||
|
||||
#: cps/web.py:968
|
||||
#: cps/web.py:971
|
||||
msgid "Database connections are closed"
|
||||
msgstr "数据库连接已关闭"
|
||||
|
||||
#: cps/web.py:969
|
||||
#: cps/web.py:972
|
||||
msgid "Server is stopped"
|
||||
msgstr "服务器已停止"
|
||||
|
||||
#: cps/web.py:970
|
||||
#: cps/web.py:973
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr "更新完成,请按确定并刷新页面"
|
||||
|
||||
#: cps/web.py:1044
|
||||
#: cps/web.py:1047
|
||||
msgid "Recently Added Books"
|
||||
msgstr "最近添加的书籍"
|
||||
|
||||
#: cps/web.py:1054
|
||||
#: cps/web.py:1057
|
||||
msgid "Newest Books"
|
||||
msgstr "最新书籍"
|
||||
|
||||
#: cps/web.py:1065
|
||||
#: cps/web.py:1069
|
||||
msgid "Oldest Books"
|
||||
msgstr "最旧书籍"
|
||||
|
||||
#: cps/web.py:1077
|
||||
#: cps/web.py:1081
|
||||
msgid "Books (A-Z)"
|
||||
msgstr "书籍 (A-Z)"
|
||||
|
||||
#: cps/web.py:1088
|
||||
#: cps/web.py:1092
|
||||
msgid "Books (Z-A)"
|
||||
msgstr "书籍 (Z-A)"
|
||||
|
||||
#: cps/web.py:1116
|
||||
#: cps/web.py:1120
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr "热门书籍(最多下载)"
|
||||
|
||||
#: cps/web.py:1129
|
||||
#: cps/web.py:1133
|
||||
msgid "Best rated books"
|
||||
msgstr "最高评分书籍"
|
||||
|
||||
#: cps/templates/index.xml:32 cps/web.py:1140
|
||||
#: cps/templates/index.xml:32 cps/web.py:1144
|
||||
msgid "Random Books"
|
||||
msgstr "随机书籍"
|
||||
|
||||
#: cps/web.py:1154
|
||||
#: cps/web.py:1158
|
||||
msgid "Author list"
|
||||
msgstr "作者列表"
|
||||
|
||||
#: cps/web.py:1166 cps/web.py:1225 cps/web.py:1355 cps/web.py:1827
|
||||
#: cps/web.py:1170 cps/web.py:1228 cps/web.py:1358 cps/web.py:1827
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr "无法打开电子书。 文件不存在或者文件不可访问:"
|
||||
|
||||
#: cps/templates/index.xml:64 cps/web.py:1209
|
||||
#: cps/templates/index.xml:64 cps/web.py:1212
|
||||
msgid "Series list"
|
||||
msgstr "丛书列表"
|
||||
|
||||
#: cps/web.py:1223
|
||||
#: cps/web.py:1226
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr "丛书: %(serie)s"
|
||||
|
||||
#: cps/web.py:1256
|
||||
#: cps/web.py:1259
|
||||
msgid "Available languages"
|
||||
msgstr "可用语言"
|
||||
|
||||
#: cps/web.py:1273
|
||||
#: cps/web.py:1276
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr "语言: %(name)s"
|
||||
|
||||
#: cps/templates/index.xml:58 cps/web.py:1283
|
||||
#: cps/templates/index.xml:58 cps/web.py:1286
|
||||
msgid "Category list"
|
||||
msgstr "分类列表"
|
||||
|
||||
#: cps/web.py:1297
|
||||
#: cps/web.py:1300
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr "分类: %(name)s"
|
||||
|
||||
#: cps/web.py:1409
|
||||
#: cps/web.py:1412
|
||||
msgid "Excecution permissions missing"
|
||||
msgstr "可执行权限缺失"
|
||||
|
||||
#: cps/web.py:1423
|
||||
#: cps/web.py:1426
|
||||
msgid "Statistics"
|
||||
msgstr "统计"
|
||||
|
||||
#: cps/web.py:1587
|
||||
#: cps/web.py:1591
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr "服务器已重启,请刷新页面"
|
||||
|
||||
#: cps/web.py:1589
|
||||
#: cps/web.py:1593
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr "正在关闭服务器,请关闭窗口"
|
||||
|
||||
#: cps/web.py:1605
|
||||
#: cps/web.py:1609
|
||||
msgid "Update done"
|
||||
msgstr "更新完成"
|
||||
|
||||
#: cps/web.py:1687 cps/web.py:1700
|
||||
#: cps/web.py:1691 cps/web.py:1704
|
||||
msgid "search"
|
||||
msgstr "搜索"
|
||||
|
||||
#: cps/templates/index.xml:39 cps/templates/index.xml:42
|
||||
#: cps/templates/layout.html:131 cps/web.py:1782
|
||||
#: cps/templates/layout.html:132 cps/web.py:1782
|
||||
msgid "Read Books"
|
||||
msgstr "已读书籍"
|
||||
|
||||
#: cps/templates/index.xml:45 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:132 cps/web.py:1785
|
||||
#: cps/templates/index.xml:46 cps/templates/index.xml:49
|
||||
#: cps/templates/layout.html:134 cps/web.py:1785
|
||||
msgid "Unread Books"
|
||||
msgstr "未读书籍"
|
||||
|
||||
|
@ -207,7 +217,7 @@ msgstr "未读书籍"
|
|||
msgid "Read a Book"
|
||||
msgstr "阅读一本书"
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:2555
|
||||
#: cps/web.py:1925 cps/web.py:2556
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr "请填写所有字段"
|
||||
|
||||
|
@ -262,7 +272,7 @@ msgstr "此书已被成功发给 %(kindlemail)s"
|
|||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr "发送这本书的时候出现错误: %(res)s"
|
||||
|
||||
#: cps/web.py:2085 cps/web.py:2640
|
||||
#: cps/web.py:2085 cps/web.py:2641
|
||||
msgid "Please configure your kindle email address first..."
|
||||
msgstr "请先配置您的kindle电子邮箱地址..."
|
||||
|
||||
|
@ -271,177 +281,177 @@ msgstr "请先配置您的kindle电子邮箱地址..."
|
|||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr "此书已被添加到书架: %(sname)s"
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2166
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr "此书已从书架 %(sname)s 中删除"
|
||||
|
||||
#: cps/web.py:2183 cps/web.py:2207
|
||||
#: cps/web.py:2185 cps/web.py:2209
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr "已存在书架 '%(title)s'。"
|
||||
|
||||
#: cps/web.py:2188
|
||||
#: cps/web.py:2190
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr "书架 %(title)s 已被创建"
|
||||
|
||||
#: cps/web.py:2190 cps/web.py:2218
|
||||
#: cps/web.py:2192 cps/web.py:2220
|
||||
msgid "There was an error"
|
||||
msgstr "发生错误"
|
||||
|
||||
#: cps/web.py:2191 cps/web.py:2193
|
||||
#: cps/web.py:2193 cps/web.py:2195
|
||||
msgid "create a shelf"
|
||||
msgstr "创建书架"
|
||||
|
||||
#: cps/web.py:2216
|
||||
#: cps/web.py:2218
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr "书架 %(title)s 已被修改"
|
||||
|
||||
#: cps/web.py:2219 cps/web.py:2221
|
||||
#: cps/web.py:2221 cps/web.py:2223
|
||||
msgid "Edit a shelf"
|
||||
msgstr "编辑书架"
|
||||
|
||||
#: cps/web.py:2242
|
||||
#: cps/web.py:2244
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr "成功删除书架 %(name)s"
|
||||
|
||||
#: cps/web.py:2264
|
||||
#: cps/web.py:2266
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr "书架: '%(name)s'"
|
||||
|
||||
#: cps/web.py:2267
|
||||
#: cps/web.py:2269
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr "打开书架出错。书架不存在或不可访问"
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2300
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr "修改书架 '%(name)s' 顺序"
|
||||
|
||||
#: cps/web.py:2368
|
||||
#: cps/web.py:2369
|
||||
msgid "Found an existing account for this email address."
|
||||
msgstr "找到已使用此邮箱的账号。"
|
||||
|
||||
#: cps/web.py:2370 cps/web.py:2374
|
||||
#: cps/web.py:2371 cps/web.py:2375
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr "%(name)s 的资料"
|
||||
|
||||
#: cps/web.py:2371
|
||||
#: cps/web.py:2372
|
||||
msgid "Profile updated"
|
||||
msgstr "资料已更新"
|
||||
|
||||
#: cps/web.py:2385
|
||||
#: cps/web.py:2386
|
||||
msgid "Admin page"
|
||||
msgstr "管理页"
|
||||
|
||||
#: cps/web.py:2509
|
||||
#: cps/web.py:2510
|
||||
msgid "Calibre-web configuration updated"
|
||||
msgstr "Calibre-web配置已更新"
|
||||
|
||||
#: cps/web.py:2516 cps/web.py:2522 cps/web.py:2536
|
||||
#: cps/web.py:2517 cps/web.py:2523 cps/web.py:2537
|
||||
msgid "Basic Configuration"
|
||||
msgstr "基本配置"
|
||||
|
||||
#: cps/web.py:2520
|
||||
#: cps/web.py:2521
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr "DB位置无效,请输入正确路径"
|
||||
|
||||
#: cps/templates/admin.html:34 cps/web.py:2557 cps/web.py:2610
|
||||
#: cps/templates/admin.html:34 cps/web.py:2558 cps/web.py:2611
|
||||
msgid "Add new user"
|
||||
msgstr "添加新用户"
|
||||
|
||||
#: cps/web.py:2602
|
||||
#: cps/web.py:2603
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr "用户 '%(user)s' 已被创建"
|
||||
|
||||
#: cps/web.py:2606
|
||||
#: cps/web.py:2607
|
||||
msgid "Found an existing account for this email address or nickname."
|
||||
msgstr "已存在使用此邮箱或昵称的账号。"
|
||||
|
||||
#: cps/web.py:2628
|
||||
#: cps/web.py:2629
|
||||
msgid "Mail settings updated"
|
||||
msgstr "邮箱设置已更新"
|
||||
|
||||
#: cps/web.py:2635
|
||||
#: cps/web.py:2636
|
||||
#, python-format
|
||||
msgid "Test E-Mail successfully send to %(kindlemail)s"
|
||||
msgstr "测试邮件已成功发送到 %(kindlemail)s"
|
||||
|
||||
#: cps/web.py:2638
|
||||
#: cps/web.py:2639
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test E-Mail: %(res)s"
|
||||
msgstr "发送测试邮件时发生错误: %(res)s"
|
||||
|
||||
#: cps/web.py:2642
|
||||
#: cps/web.py:2643
|
||||
msgid "E-Mail settings updated"
|
||||
msgstr "E-Mail 设置已更新"
|
||||
|
||||
#: cps/web.py:2643
|
||||
#: cps/web.py:2644
|
||||
msgid "Edit mail settings"
|
||||
msgstr "编辑邮箱设置"
|
||||
|
||||
#: cps/web.py:2672
|
||||
#: cps/web.py:2673
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr "用户 '%(nick)s' 已被删除"
|
||||
|
||||
#: cps/web.py:2780
|
||||
#: cps/web.py:2781
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr "用户 '%(nick)s' 已被更新"
|
||||
|
||||
#: cps/web.py:2783
|
||||
#: cps/web.py:2784
|
||||
msgid "An unknown error occured."
|
||||
msgstr "发生未知错误。"
|
||||
|
||||
#: cps/web.py:2786
|
||||
#: cps/web.py:2787
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr "编辑用户 %(nick)s"
|
||||
|
||||
#: cps/web.py:2802
|
||||
#: cps/web.py:2803
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr "打开电子书出错。文件不存在或不可访问"
|
||||
|
||||
#: cps/web.py:2817 cps/web.py:3018 cps/web.py:3161
|
||||
#: cps/web.py:2818 cps/web.py:3026 cps/web.py:3031 cps/web.py:3174
|
||||
msgid "edit metadata"
|
||||
msgstr "编辑元数据"
|
||||
|
||||
#: cps/web.py:2827 cps/web.py:3055
|
||||
#: cps/web.py:2828 cps/web.py:3068
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr "不能上传后缀为 \"%s\" 的文件到此服务器"
|
||||
|
||||
#: cps/web.py:2838
|
||||
#: cps/web.py:2839
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2858 cps/web.py:2862
|
||||
#: cps/web.py:2861 cps/web.py:2865
|
||||
msgid "unknown"
|
||||
msgstr "未知"
|
||||
|
||||
#: cps/web.py:3061
|
||||
#: cps/web.py:3074
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr "要上传的文件必须有一个后缀"
|
||||
|
||||
#: cps/web.py:3080
|
||||
#: cps/web.py:3093
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgstr "创建路径 %s 失败(权限拒绝)。"
|
||||
|
||||
#: cps/web.py:3085
|
||||
#: cps/web.py:3098
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgstr "存储文件 %s 失败(权限拒绝)。"
|
||||
|
||||
#: cps/web.py:3090
|
||||
#: cps/web.py:3103
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgstr "删除文件 %s 失败(权限拒绝)。"
|
||||
|
@ -646,7 +656,7 @@ msgstr "简介"
|
|||
msgid "Tags"
|
||||
msgstr "标签"
|
||||
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:141
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:143
|
||||
#: cps/templates/search_form.html:37
|
||||
msgid "Series"
|
||||
msgstr "丛书"
|
||||
|
@ -733,7 +743,7 @@ msgstr "点击封面加载元数据到表单"
|
|||
msgid "Loading..."
|
||||
msgstr "加载中..."
|
||||
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:205
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:207
|
||||
msgid "Close"
|
||||
msgstr "关闭"
|
||||
|
||||
|
@ -940,7 +950,7 @@ msgstr "保存设置"
|
|||
msgid "Save settings and send Test E-Mail"
|
||||
msgstr "保存设置并发送测试邮件"
|
||||
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:189
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:191
|
||||
msgid "Next"
|
||||
msgstr "下一个"
|
||||
|
||||
|
@ -985,7 +995,7 @@ msgstr "最新书籍"
|
|||
msgid "Show Random Books"
|
||||
msgstr "显示随机书籍"
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:144
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:146
|
||||
msgid "Authors"
|
||||
msgstr "作者"
|
||||
|
||||
|
@ -1050,39 +1060,39 @@ msgstr "升序"
|
|||
msgid "Descending"
|
||||
msgstr "降序"
|
||||
|
||||
#: cps/templates/layout.html:135
|
||||
#: cps/templates/layout.html:137
|
||||
msgid "Discover"
|
||||
msgstr "发现"
|
||||
|
||||
#: cps/templates/layout.html:138
|
||||
#: cps/templates/layout.html:140
|
||||
msgid "Categories"
|
||||
msgstr "分类"
|
||||
|
||||
#: cps/templates/layout.html:147 cps/templates/search_form.html:58
|
||||
#: cps/templates/layout.html:149 cps/templates/search_form.html:58
|
||||
msgid "Languages"
|
||||
msgstr "语言"
|
||||
|
||||
#: cps/templates/layout.html:150
|
||||
#: cps/templates/layout.html:152
|
||||
msgid "Public Shelves"
|
||||
msgstr "公开书架"
|
||||
|
||||
#: cps/templates/layout.html:154
|
||||
#: cps/templates/layout.html:156
|
||||
msgid "Your Shelves"
|
||||
msgstr "您的书架"
|
||||
|
||||
#: cps/templates/layout.html:159
|
||||
#: cps/templates/layout.html:161
|
||||
msgid "Create a Shelf"
|
||||
msgstr "创建书架"
|
||||
|
||||
#: cps/templates/layout.html:160 cps/templates/stats.html:3
|
||||
#: cps/templates/layout.html:162 cps/templates/stats.html:3
|
||||
msgid "About"
|
||||
msgstr "关于"
|
||||
|
||||
#: cps/templates/layout.html:174
|
||||
#: cps/templates/layout.html:176
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:201
|
||||
#: cps/templates/layout.html:203
|
||||
msgid "Book Details"
|
||||
msgstr ""
|
||||
|
||||
|
|
22
cps/ub.py
22
cps/ub.py
|
@ -47,12 +47,9 @@ DEFAULT_PASS = "admin123"
|
|||
DEFAULT_PORT = int(os.environ.get("CALIBRE_PORT", 8083))
|
||||
|
||||
|
||||
|
||||
DEVELOPMENT = False
|
||||
|
||||
|
||||
|
||||
|
||||
class UserBase:
|
||||
@property
|
||||
def is_authenticated(self):
|
||||
|
@ -203,6 +200,7 @@ class Anonymous(AnonymousUserMixin, UserBase):
|
|||
def is_authenticated(self):
|
||||
return False
|
||||
|
||||
|
||||
# Baseclass representing Shelfs in calibre-web inapp.db
|
||||
class Shelf(Base):
|
||||
__tablename__ = 'shelf'
|
||||
|
@ -290,7 +288,7 @@ class Settings(Base):
|
|||
config_google_drive_folder = Column(String)
|
||||
config_google_drive_calibre_url_base = Column(String)
|
||||
config_google_drive_watch_changes_response = Column(String)
|
||||
config_columns_to_ignore = Column(String)
|
||||
#config_columns_to_ignore = Column(String)
|
||||
config_remote_login = Column(Boolean)
|
||||
config_use_goodreads = Column(Boolean)
|
||||
config_goodreads_api_key = Column(String)
|
||||
|
@ -403,22 +401,22 @@ class Config:
|
|||
(self.config_default_role & ROLE_DELETE_BOOKS == ROLE_DELETE_BOOKS))
|
||||
|
||||
def mature_content_tags(self):
|
||||
if (sys.version_info > (3, 0)): #Python3 str, Python2 unicode
|
||||
if sys.version_info > (3, 0): # Python3 str, Python2 unicode
|
||||
lstrip = str.lstrip
|
||||
else:
|
||||
lstrip = unicode.lstrip
|
||||
return list(map(lstrip, self.config_mature_content_tags.split(",")))
|
||||
|
||||
def get_Log_Level(self):
|
||||
ret_value=""
|
||||
ret_value = ""
|
||||
if self.config_log_level == logging.INFO:
|
||||
ret_value='INFO'
|
||||
ret_value = 'INFO'
|
||||
elif self.config_log_level == logging.DEBUG:
|
||||
ret_value='DEBUG'
|
||||
ret_value = 'DEBUG'
|
||||
elif self.config_log_level == logging.WARNING:
|
||||
ret_value='WARNING'
|
||||
ret_value = 'WARNING'
|
||||
elif self.config_log_level == logging.ERROR:
|
||||
ret_value='ERROR'
|
||||
ret_value = 'ERROR'
|
||||
return ret_value
|
||||
|
||||
|
||||
|
@ -495,7 +493,7 @@ def migrate_Database():
|
|||
conn = engine.connect()
|
||||
conn.execute("ALTER TABLE user ADD column `sidebar_view` Integer DEFAULT 1")
|
||||
session.commit()
|
||||
create=True
|
||||
create = True
|
||||
try:
|
||||
if create:
|
||||
conn = engine.connect()
|
||||
|
@ -535,11 +533,13 @@ def migrate_Database():
|
|||
conn = engine.connect()
|
||||
conn.execute("ALTER TABLE Settings ADD column `config_mature_content_tags` String DEFAULT ''")
|
||||
|
||||
|
||||
def clean_database():
|
||||
# Remove expired remote login tokens
|
||||
now = datetime.datetime.now()
|
||||
session.query(RemoteAuthToken).filter(now > RemoteAuthToken.expiration).delete()
|
||||
|
||||
|
||||
def create_default_config():
|
||||
settings = Settings()
|
||||
settings.mail_server = "mail.example.com"
|
||||
|
|
|
@ -14,17 +14,17 @@ BookMeta = namedtuple('BookMeta', 'file_path, extension, title, author, cover, d
|
|||
"""
|
||||
|
||||
|
||||
def upload(file):
|
||||
def upload(uploadfile):
|
||||
tmp_dir = os.path.join(gettempdir(), 'calibre_web')
|
||||
|
||||
if not os.path.isdir(tmp_dir):
|
||||
os.mkdir(tmp_dir)
|
||||
|
||||
filename = file.filename
|
||||
filename = uploadfile.filename
|
||||
filename_root, file_extension = os.path.splitext(filename)
|
||||
md5 = hashlib.md5()
|
||||
md5.update(filename.encode('utf-8'))
|
||||
tmp_file_path = os.path.join(tmp_dir, md5.hexdigest())
|
||||
file.save(tmp_file_path)
|
||||
uploadfile.save(tmp_file_path)
|
||||
meta = book_formats.process(tmp_file_path, filename_root, file_extension)
|
||||
return meta
|
||||
|
|
351
cps/web.py
351
cps/web.py
|
@ -103,6 +103,7 @@ global_task = None
|
|||
|
||||
ALLOWED_EXTENSIONS = set(['txt', 'pdf', 'epub', 'mobi', 'azw', 'azw3', 'cbr', 'cbz', 'cbt', 'djvu', 'prc', 'doc', 'docx', 'fb2'])
|
||||
|
||||
|
||||
def md5(fname):
|
||||
hash_md5 = hashlib.md5()
|
||||
with open(fname, "rb") as f:
|
||||
|
@ -110,6 +111,7 @@ def md5(fname):
|
|||
hash_md5.update(chunk)
|
||||
return hash_md5.hexdigest()
|
||||
|
||||
|
||||
class Singleton:
|
||||
"""
|
||||
A non-thread-safe helper class to ease implementing singletons.
|
||||
|
@ -437,7 +439,7 @@ def formatdate(val):
|
|||
def format_date_input(val):
|
||||
conformed_timestamp = re.sub(r"[:]|([-](?!((\d{2}[:]\d{2})|(\d{4}))$))", '', val)
|
||||
date_obj = datetime.datetime.strptime(conformed_timestamp[:15], "%Y%m%d %H%M%S")
|
||||
input_date = date_obj.isoformat().split('T', 1)[0] # Hack to support dates <1900
|
||||
input_date = date_obj.isoformat().split('T', 1)[0] # Hack to support dates <1900
|
||||
return '' if input_date == "0101-01-01" else input_date
|
||||
|
||||
|
||||
|
@ -600,7 +602,7 @@ def modify_database_object(input_elements, db_book_object, db_object, db_session
|
|||
# if no element is found add it
|
||||
if new_element is None:
|
||||
if db_type == 'author':
|
||||
new_element = db_object(add_element, add_element.replace('|',','), "")
|
||||
new_element = db_object(add_element, add_element.replace('|', ','), "")
|
||||
elif db_type == 'series':
|
||||
new_element = db_object(add_element, add_element)
|
||||
elif db_type == 'custom':
|
||||
|
@ -831,7 +833,7 @@ def feed_series(book_id):
|
|||
if not off:
|
||||
off = 0
|
||||
entries, random, pagination = fill_indexpage((int(off) / (int(config.config_books_per_page)) + 1),
|
||||
db.Books, db.Books.series.any(db.Series.id == book_id),db.Books.series_index)
|
||||
db.Books, db.Books.series.any(db.Series.id == book_id), db.Books.series_index)
|
||||
xml = render_title_template('feed.xml', entries=entries, pagination=pagination)
|
||||
response = make_response(xml)
|
||||
response.headers["Content-Type"] = "application/atom+xml; charset=utf-8"
|
||||
|
@ -850,6 +852,7 @@ def do_gdrive_download(df, headers):
|
|||
total_size = int(df.metadata.get('fileSize'))
|
||||
download_url = df.metadata.get('downloadUrl')
|
||||
s = partial(total_size, 1024 * 1024) # I'm downloading BIG files, so 100M chunk size is fine for me
|
||||
|
||||
def stream():
|
||||
for byte in s:
|
||||
headers = {"Range": 'bytes=%s-%s' % (byte[0], byte[1])}
|
||||
|
@ -969,13 +972,13 @@ def get_updater_status():
|
|||
"6": _(u'Server is stopped'),
|
||||
"7": _(u'Update finished, please press okay and reload page')
|
||||
}
|
||||
status['text']=text
|
||||
status['text'] = text
|
||||
helper.updater_thread = helper.Updater()
|
||||
helper.updater_thread.start()
|
||||
status['status']=helper.updater_thread.get_update_status()
|
||||
status['status'] = helper.updater_thread.get_update_status()
|
||||
elif request.method == "GET":
|
||||
try:
|
||||
status['status']=helper.updater_thread.get_update_status()
|
||||
status['status'] = helper.updater_thread.get_update_status()
|
||||
except Exception:
|
||||
status['status'] = 7
|
||||
return json.dumps(status)
|
||||
|
@ -1055,6 +1058,7 @@ def newest_books(page):
|
|||
else:
|
||||
abort(404)
|
||||
|
||||
|
||||
@app.route('/books/oldest', defaults={'page': 1})
|
||||
@app.route('/books/oldest/page/<int:page>')
|
||||
@login_required_if_no_ano
|
||||
|
@ -1136,7 +1140,7 @@ def best_rated_books(page):
|
|||
def discover(page):
|
||||
if current_user.show_random_books():
|
||||
entries, __, pagination = fill_indexpage(page, db.Books, True, func.randomblob(2))
|
||||
pagination = Pagination(1, config.config_books_per_page,config.config_books_per_page)
|
||||
pagination = Pagination(1, config.config_books_per_page, config.config_books_per_page)
|
||||
return render_title_template('discover.html', entries=entries, pagination=pagination, title=_(u"Random Books"))
|
||||
else:
|
||||
abort(404)
|
||||
|
@ -1150,7 +1154,7 @@ def author_list():
|
|||
.join(db.books_authors_link).join(db.Books).filter(common_filters())\
|
||||
.group_by('books_authors_link.author').order_by(db.Authors.sort).all()
|
||||
for entry in entries:
|
||||
entry.Authors.name=entry.Authors.name.replace('|',',')
|
||||
entry.Authors.name = entry.Authors.name.replace('|', ',')
|
||||
return render_title_template('list.html', entries=entries, folder='author', title=_(u"Author list"))
|
||||
else:
|
||||
abort(404)
|
||||
|
@ -1166,7 +1170,7 @@ def author(book_id, page):
|
|||
flash(_(u"Error opening eBook. File does not exist or file is not accessible:"), category="error")
|
||||
return redirect(url_for("index"))
|
||||
|
||||
name = (db.session.query(db.Authors).filter(db.Authors.id == book_id).first().name).replace('|',',')
|
||||
name = (db.session.query(db.Authors).filter(db.Authors.id == book_id).first().name).replace('|', ',')
|
||||
|
||||
author_info = None
|
||||
other_books = []
|
||||
|
@ -1198,7 +1202,6 @@ def get_unique_other_books(library_books, author_books):
|
|||
return other_books
|
||||
|
||||
|
||||
|
||||
@app.route("/series")
|
||||
@login_required_if_no_ano
|
||||
def series_list():
|
||||
|
@ -1436,9 +1439,9 @@ def delete_book(book_id):
|
|||
ub.session.commit()
|
||||
|
||||
if config.config_use_google_drive:
|
||||
helper.delete_book_gdrive(book) # ToDo really delete file
|
||||
helper.delete_book_gdrive(book) # ToDo really delete file
|
||||
else:
|
||||
helper.delete_book(book,config.config_calibre_dir)
|
||||
helper.delete_book(book, config.config_calibre_dir)
|
||||
# check if only this book links to:
|
||||
# author, language, series, tags, custom columns
|
||||
modify_database_object([u''], book.authors, db.Authors, db.session, 'author')
|
||||
|
@ -1466,7 +1469,7 @@ def delete_book(book_id):
|
|||
getattr(book, cc_string).remove(del_cc)
|
||||
db.session.delete(del_cc)
|
||||
else:
|
||||
modify_database_object([u''], getattr(book, cc_string),db.cc_classes[c.id], db.session, 'custom')
|
||||
modify_database_object([u''], getattr(book, cc_string), db.cc_classes[c.id], db.session, 'custom')
|
||||
db.session.query(db.Books).filter(db.Books.id == book_id).delete()
|
||||
db.session.commit()
|
||||
else:
|
||||
|
@ -1474,6 +1477,7 @@ def delete_book(book_id):
|
|||
app.logger.info('Book with id "'+str(book_id)+'" could not be deleted')
|
||||
return redirect(url_for('index'))
|
||||
|
||||
|
||||
@app.route("/gdrive/authenticate")
|
||||
@login_required
|
||||
@admin_required
|
||||
|
@ -1619,10 +1623,10 @@ def search():
|
|||
db.Books.publishers.any(db.Publishers.name.ilike("%" + term + "%")),
|
||||
db.Books.title.ilike("%" + term + "%")))\
|
||||
.filter(common_filters()).all()
|
||||
# entries = db.session.query(db.Books).with_entities(db.Books.title).filter(db.Books.title.ilike("%" + term + "%")).all()
|
||||
#result = db.session.execute("select name from authors where lower(name) like '%" + term.lower() + "%'")
|
||||
#entries = result.fetchall()
|
||||
#result.close()
|
||||
# entries = db.session.query(db.Books).with_entities(db.Books.title).filter(db.Books.title.ilike("%" + term + "%")).all()
|
||||
# result = db.session.execute("select name from authors where lower(name) like '%" + term.lower() + "%'")
|
||||
# entries = result.fetchall()
|
||||
# result.close()
|
||||
return render_title_template('search.html', searchterm=term, entries=entries)
|
||||
else:
|
||||
return render_title_template('search.html', searchterm="")
|
||||
|
@ -1724,9 +1728,10 @@ def get_cover(cover_path):
|
|||
else:
|
||||
return send_from_directory(os.path.join(config.config_calibre_dir, cover_path), "cover.jpg")
|
||||
|
||||
|
||||
@app.route("/show/<book_id>/<book_format>")
|
||||
@login_required_if_no_ano
|
||||
def serve_book(book_id,book_format):
|
||||
def serve_book(book_id, book_format):
|
||||
book_format = book_format.split(".")[0]
|
||||
book = db.session.query(db.Books).filter(db.Books.id == book_id).first()
|
||||
data = db.session.query(db.Data).filter(db.Data.book == book.id).filter(db.Data.format == book_format.upper()).first()
|
||||
|
@ -1858,7 +1863,7 @@ def read_book(book_id, book_format):
|
|||
elif book_format.lower() == "txt":
|
||||
return render_title_template('readtxt.html', txtfile=book_id, title=_(u"Read a Book"))
|
||||
else:
|
||||
for fileext in ["cbr","cbt","cbz"]:
|
||||
for fileext in ["cbr", "cbt", "cbz"]:
|
||||
if book_format.lower() == fileext:
|
||||
all_name = str(book_id) + "/" + book.data[0].name + "." + fileext
|
||||
tmp_file = os.path.join(book_dir, book.data[0].name) + "." + fileext
|
||||
|
@ -1960,7 +1965,7 @@ def login():
|
|||
flash(_(u"you are now logged in as: '%(nickname)s'", nickname=user.nickname), category="success")
|
||||
return redirect_back(url_for("index"))
|
||||
else:
|
||||
ipAdress=request.headers.get('X-Forwarded-For', request.remote_addr)
|
||||
ipAdress = request.headers.get('X-Forwarded-For', request.remote_addr)
|
||||
app.logger.info('Login failed for user "' + form['username'] + '" IP-adress: ' + ipAdress)
|
||||
flash(_(u"Wrong Username or Password"), category="error")
|
||||
|
||||
|
@ -2265,7 +2270,6 @@ def show_shelf(shelf_id):
|
|||
return redirect(url_for("index"))
|
||||
|
||||
|
||||
|
||||
@app.route("/shelf/order/<int:shelf_id>", methods=["GET", "POST"])
|
||||
@login_required
|
||||
def order_shelf(shelf_id):
|
||||
|
@ -2402,7 +2406,7 @@ def configuration_helper(origin):
|
|||
success = False
|
||||
if request.method == "POST":
|
||||
to_save = request.form.to_dict()
|
||||
content = ub.session.query(ub.Settings).first() # type: ub.Settings
|
||||
content = ub.session.query(ub.Settings).first() # type: ub.Settings
|
||||
if "config_calibre_dir" in to_save:
|
||||
if content.config_calibre_dir != to_save["config_calibre_dir"]:
|
||||
content.config_calibre_dir = to_save["config_calibre_dir"]
|
||||
|
@ -2806,7 +2810,7 @@ def edit_book(book_id):
|
|||
except Exception:
|
||||
book.languages[index].language_name = _(isoLanguages.get(part3=book.languages[index].lang_code).name)
|
||||
for author in book.authors:
|
||||
author_names.append(author.name.replace('|',','))
|
||||
author_names.append(author.name.replace('|', ','))
|
||||
|
||||
# Show form
|
||||
if request.method != 'POST':
|
||||
|
@ -2845,172 +2849,184 @@ def edit_book(book_id):
|
|||
db.session.add(db_format)
|
||||
|
||||
to_save = request.form.to_dict()
|
||||
|
||||
if book.title != to_save["book_title"]:
|
||||
book.title = to_save["book_title"]
|
||||
edited_books_id.add(book.id)
|
||||
|
||||
input_authors = to_save["author_name"].split('&')
|
||||
input_authors = map(lambda it: it.strip().replace(',','|'), input_authors)
|
||||
input_authors = map(lambda it: it.strip().replace(',', '|'), input_authors)
|
||||
# we have all author names now
|
||||
if input_authors == ['']:
|
||||
input_authors = [_(u'unknown')] # prevent empty Author
|
||||
if book.authors:
|
||||
author0_before_edit = book.authors[0].name
|
||||
else:
|
||||
author0_before_edit = db.Authors(_(u'unknown'),'',0)
|
||||
author0_before_edit = db.Authors(_(u'unknown'), '', 0)
|
||||
modify_database_object(input_authors, book.authors, db.Authors, db.session, 'author')
|
||||
if book.authors:
|
||||
if author0_before_edit != book.authors[0].name:
|
||||
edited_books_id.add(book.id)
|
||||
book.author_sort = helper.get_sorted_author(input_authors[0])
|
||||
|
||||
if to_save["cover_url"] and save_cover(to_save["cover_url"], book.path):
|
||||
book.has_cover = 1
|
||||
|
||||
if book.series_index != to_save["series_index"]:
|
||||
book.series_index = to_save["series_index"]
|
||||
|
||||
if len(book.comments):
|
||||
book.comments[0].text = to_save["description"]
|
||||
else:
|
||||
book.comments.append(db.Comments(text=to_save["description"], book=book.id))
|
||||
|
||||
input_tags = to_save["tags"].split(',')
|
||||
input_tags = map(lambda it: it.strip(), input_tags)
|
||||
modify_database_object(input_tags, book.tags, db.Tags, db.session, 'tags')
|
||||
|
||||
input_series = [to_save["series"].strip()]
|
||||
input_series = [x for x in input_series if x != '']
|
||||
modify_database_object(input_series, book.series, db.Series, db.session, 'series')
|
||||
|
||||
input_languages = to_save["languages"].split(',')
|
||||
input_languages = map(lambda it: it.strip().lower(), input_languages)
|
||||
|
||||
if to_save["pubdate"]:
|
||||
try:
|
||||
book.pubdate = datetime.datetime.strptime(to_save["pubdate"], "%Y-%m-%d")
|
||||
except ValueError:
|
||||
book.pubdate = db.Books.DEFAULT_PUBDATE
|
||||
else:
|
||||
book.pubdate = db.Books.DEFAULT_PUBDATE
|
||||
|
||||
# retranslate displayed text to language codes
|
||||
languages = db.session.query(db.Languages).all()
|
||||
input_l = []
|
||||
for lang in languages:
|
||||
try:
|
||||
lang.name = LC.parse(lang.lang_code).get_language_name(get_locale()).lower()
|
||||
except Exception:
|
||||
lang.name = _(isoLanguages.get(part3=lang.lang_code).name).lower()
|
||||
for inp_lang in input_languages:
|
||||
if inp_lang == lang.name:
|
||||
input_l.append(lang.lang_code)
|
||||
modify_database_object(input_l, book.languages, db.Languages, db.session, 'languages')
|
||||
|
||||
if to_save["rating"].strip():
|
||||
old_rating = False
|
||||
if len(book.ratings) > 0:
|
||||
old_rating = book.ratings[0].rating
|
||||
ratingx2 = int(float(to_save["rating"]) * 2)
|
||||
if ratingx2 != old_rating:
|
||||
is_rating = db.session.query(db.Ratings).filter(db.Ratings.rating == ratingx2).first()
|
||||
if is_rating:
|
||||
book.ratings.append(is_rating)
|
||||
else:
|
||||
new_rating = db.Ratings(rating=ratingx2)
|
||||
book.ratings.append(new_rating)
|
||||
if old_rating:
|
||||
book.ratings.remove(book.ratings[0])
|
||||
else:
|
||||
if len(book.ratings) > 0:
|
||||
book.ratings.remove(book.ratings[0])
|
||||
|
||||
for c in cc:
|
||||
cc_string = "custom_column_" + str(c.id)
|
||||
if not c.is_multiple:
|
||||
if len(getattr(book, cc_string)) > 0:
|
||||
cc_db_value = getattr(book, cc_string)[0].value
|
||||
else:
|
||||
cc_db_value = None
|
||||
if to_save[cc_string].strip():
|
||||
if c.datatype == 'bool':
|
||||
if to_save[cc_string] == 'None':
|
||||
to_save[cc_string] = None
|
||||
else:
|
||||
to_save[cc_string] = 1 if to_save[cc_string] == 'True' else 0
|
||||
if to_save[cc_string] != cc_db_value:
|
||||
if cc_db_value is not None:
|
||||
if to_save[cc_string] is not None:
|
||||
setattr(getattr(book, cc_string)[0], 'value', to_save[cc_string])
|
||||
else:
|
||||
del_cc = getattr(book, cc_string)[0]
|
||||
getattr(book, cc_string).remove(del_cc)
|
||||
db.session.delete(del_cc)
|
||||
else:
|
||||
cc_class = db.cc_classes[c.id]
|
||||
new_cc = cc_class(value=to_save[cc_string], book=book_id)
|
||||
db.session.add(new_cc)
|
||||
elif c.datatype == 'int':
|
||||
if to_save[cc_string] == 'None':
|
||||
to_save[cc_string] = None
|
||||
if to_save[cc_string] != cc_db_value:
|
||||
if cc_db_value is not None:
|
||||
if to_save[cc_string] is not None:
|
||||
setattr(getattr(book, cc_string)[0], 'value', to_save[cc_string])
|
||||
else:
|
||||
del_cc = getattr(book, cc_string)[0]
|
||||
getattr(book, cc_string).remove(del_cc)
|
||||
db.session.delete(del_cc)
|
||||
else:
|
||||
cc_class = db.cc_classes[c.id]
|
||||
new_cc = cc_class(value=to_save[cc_string], book=book_id)
|
||||
db.session.add(new_cc)
|
||||
|
||||
else:
|
||||
if c.datatype == 'rating':
|
||||
to_save[cc_string] = str(int(float(to_save[cc_string]) * 2))
|
||||
if to_save[cc_string].strip() != cc_db_value:
|
||||
if cc_db_value is not None:
|
||||
# remove old cc_val
|
||||
del_cc = getattr(book, cc_string)[0]
|
||||
getattr(book, cc_string).remove(del_cc)
|
||||
if len(del_cc.books) == 0:
|
||||
db.session.delete(del_cc)
|
||||
cc_class = db.cc_classes[c.id]
|
||||
new_cc = db.session.query(cc_class).filter(
|
||||
cc_class.value == to_save[cc_string].strip()).first()
|
||||
# if no cc val is found add it
|
||||
if new_cc is None:
|
||||
new_cc = cc_class(value=to_save[cc_string].strip())
|
||||
db.session.add(new_cc)
|
||||
new_cc = db.session.query(cc_class).filter(
|
||||
cc_class.value == to_save[cc_string].strip()).first()
|
||||
# add cc value to book
|
||||
getattr(book, cc_string).append(new_cc)
|
||||
else:
|
||||
if cc_db_value is not None:
|
||||
# remove old cc_val
|
||||
del_cc = getattr(book, cc_string)[0]
|
||||
getattr(book, cc_string).remove(del_cc)
|
||||
if len(del_cc.books) == 0:
|
||||
db.session.delete(del_cc)
|
||||
else:
|
||||
input_tags = to_save[cc_string].split(',')
|
||||
input_tags = map(lambda it: it.strip(), input_tags)
|
||||
modify_database_object(input_tags, getattr(book, cc_string),db.cc_classes[c.id], db.session, 'custom')
|
||||
db.session.commit()
|
||||
author_names = []
|
||||
for author in book.authors:
|
||||
author_names.append(author.name)
|
||||
error = False
|
||||
for b in edited_books_id:
|
||||
if config.config_use_google_drive:
|
||||
helper.update_dir_structure_gdrive(b)
|
||||
error = helper.update_dir_structure_gdrive(b)
|
||||
else:
|
||||
helper.update_dir_stucture(b, config.config_calibre_dir)
|
||||
error = helper.update_dir_stucture(b, config.config_calibre_dir)
|
||||
if error: # stop on error
|
||||
break
|
||||
if config.config_use_google_drive:
|
||||
updateGdriveCalibreFromLocal()
|
||||
if "detail_view" in to_save:
|
||||
return redirect(url_for('show_book', book_id=book.id))
|
||||
|
||||
if not error:
|
||||
if to_save["cover_url"] and save_cover(to_save["cover_url"], book.path):
|
||||
book.has_cover = 1
|
||||
|
||||
if book.series_index != to_save["series_index"]:
|
||||
book.series_index = to_save["series_index"]
|
||||
|
||||
if len(book.comments):
|
||||
book.comments[0].text = to_save["description"]
|
||||
else:
|
||||
book.comments.append(db.Comments(text=to_save["description"], book=book.id))
|
||||
|
||||
input_tags = to_save["tags"].split(',')
|
||||
input_tags = map(lambda it: it.strip(), input_tags)
|
||||
modify_database_object(input_tags, book.tags, db.Tags, db.session, 'tags')
|
||||
|
||||
input_series = [to_save["series"].strip()]
|
||||
input_series = [x for x in input_series if x != '']
|
||||
modify_database_object(input_series, book.series, db.Series, db.session, 'series')
|
||||
|
||||
input_languages = to_save["languages"].split(',')
|
||||
input_languages = map(lambda it: it.strip().lower(), input_languages)
|
||||
|
||||
if to_save["pubdate"]:
|
||||
try:
|
||||
book.pubdate = datetime.datetime.strptime(to_save["pubdate"], "%Y-%m-%d")
|
||||
except ValueError:
|
||||
book.pubdate = db.Books.DEFAULT_PUBDATE
|
||||
else:
|
||||
book.pubdate = db.Books.DEFAULT_PUBDATE
|
||||
|
||||
# retranslate displayed text to language codes
|
||||
languages = db.session.query(db.Languages).all()
|
||||
input_l = []
|
||||
for lang in languages:
|
||||
try:
|
||||
lang.name = LC.parse(lang.lang_code).get_language_name(get_locale()).lower()
|
||||
except Exception:
|
||||
lang.name = _(isoLanguages.get(part3=lang.lang_code).name).lower()
|
||||
for inp_lang in input_languages:
|
||||
if inp_lang == lang.name:
|
||||
input_l.append(lang.lang_code)
|
||||
modify_database_object(input_l, book.languages, db.Languages, db.session, 'languages')
|
||||
|
||||
if to_save["rating"].strip():
|
||||
old_rating = False
|
||||
if len(book.ratings) > 0:
|
||||
old_rating = book.ratings[0].rating
|
||||
ratingx2 = int(float(to_save["rating"]) * 2)
|
||||
if ratingx2 != old_rating:
|
||||
is_rating = db.session.query(db.Ratings).filter(db.Ratings.rating == ratingx2).first()
|
||||
if is_rating:
|
||||
book.ratings.append(is_rating)
|
||||
else:
|
||||
new_rating = db.Ratings(rating=ratingx2)
|
||||
book.ratings.append(new_rating)
|
||||
if old_rating:
|
||||
book.ratings.remove(book.ratings[0])
|
||||
else:
|
||||
if len(book.ratings) > 0:
|
||||
book.ratings.remove(book.ratings[0])
|
||||
|
||||
for c in cc:
|
||||
cc_string = "custom_column_" + str(c.id)
|
||||
if not c.is_multiple:
|
||||
if len(getattr(book, cc_string)) > 0:
|
||||
cc_db_value = getattr(book, cc_string)[0].value
|
||||
else:
|
||||
cc_db_value = None
|
||||
if to_save[cc_string].strip():
|
||||
if c.datatype == 'bool':
|
||||
if to_save[cc_string] == 'None':
|
||||
to_save[cc_string] = None
|
||||
else:
|
||||
to_save[cc_string] = 1 if to_save[cc_string] == 'True' else 0
|
||||
if to_save[cc_string] != cc_db_value:
|
||||
if cc_db_value is not None:
|
||||
if to_save[cc_string] is not None:
|
||||
setattr(getattr(book, cc_string)[0], 'value', to_save[cc_string])
|
||||
else:
|
||||
del_cc = getattr(book, cc_string)[0]
|
||||
getattr(book, cc_string).remove(del_cc)
|
||||
db.session.delete(del_cc)
|
||||
else:
|
||||
cc_class = db.cc_classes[c.id]
|
||||
new_cc = cc_class(value=to_save[cc_string], book=book_id)
|
||||
db.session.add(new_cc)
|
||||
elif c.datatype == 'int':
|
||||
if to_save[cc_string] == 'None':
|
||||
to_save[cc_string] = None
|
||||
if to_save[cc_string] != cc_db_value:
|
||||
if cc_db_value is not None:
|
||||
if to_save[cc_string] is not None:
|
||||
setattr(getattr(book, cc_string)[0], 'value', to_save[cc_string])
|
||||
else:
|
||||
del_cc = getattr(book, cc_string)[0]
|
||||
getattr(book, cc_string).remove(del_cc)
|
||||
db.session.delete(del_cc)
|
||||
else:
|
||||
cc_class = db.cc_classes[c.id]
|
||||
new_cc = cc_class(value=to_save[cc_string], book=book_id)
|
||||
db.session.add(new_cc)
|
||||
|
||||
else:
|
||||
if c.datatype == 'rating':
|
||||
to_save[cc_string] = str(int(float(to_save[cc_string]) * 2))
|
||||
if to_save[cc_string].strip() != cc_db_value:
|
||||
if cc_db_value is not None:
|
||||
# remove old cc_val
|
||||
del_cc = getattr(book, cc_string)[0]
|
||||
getattr(book, cc_string).remove(del_cc)
|
||||
if len(del_cc.books) == 0:
|
||||
db.session.delete(del_cc)
|
||||
cc_class = db.cc_classes[c.id]
|
||||
new_cc = db.session.query(cc_class).filter(
|
||||
cc_class.value == to_save[cc_string].strip()).first()
|
||||
# if no cc val is found add it
|
||||
if new_cc is None:
|
||||
new_cc = cc_class(value=to_save[cc_string].strip())
|
||||
db.session.add(new_cc)
|
||||
new_cc = db.session.query(cc_class).filter(
|
||||
cc_class.value == to_save[cc_string].strip()).first()
|
||||
# add cc value to book
|
||||
getattr(book, cc_string).append(new_cc)
|
||||
else:
|
||||
if cc_db_value is not None:
|
||||
# remove old cc_val
|
||||
del_cc = getattr(book, cc_string)[0]
|
||||
getattr(book, cc_string).remove(del_cc)
|
||||
if len(del_cc.books) == 0:
|
||||
db.session.delete(del_cc)
|
||||
else:
|
||||
input_tags = to_save[cc_string].split(',')
|
||||
input_tags = map(lambda it: it.strip(), input_tags)
|
||||
modify_database_object(input_tags, getattr(book, cc_string), db.cc_classes[c.id], db.session, 'custom')
|
||||
db.session.commit()
|
||||
author_names = []
|
||||
for author in book.authors:
|
||||
author_names.append(author.name)
|
||||
if "detail_view" in to_save:
|
||||
return redirect(url_for('show_book', book_id=book.id))
|
||||
else:
|
||||
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
||||
title=_(u"edit metadata"))
|
||||
else:
|
||||
db.session.rollback()
|
||||
flash( error, category="error")
|
||||
return render_title_template('book_edit.html', book=book, authors=author_names, cc=cc,
|
||||
title=_(u"edit metadata"))
|
||||
|
||||
|
@ -3173,4 +3189,3 @@ def start_gevent():
|
|||
app.logger.info('Unable to listen on \'\', trying on IPv4 only...')
|
||||
gevent_server = WSGIServer(('0.0.0.0', ub.config.config_port), app)
|
||||
gevent_server.serve_forever()
|
||||
|
||||
|
|
204
messages.pot
204
messages.pot
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2017-11-12 14:54+0100\n"
|
||||
"POT-Creation-Date: 2017-11-30 16:45+0100\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -17,180 +17,190 @@ msgstr ""
|
|||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Generated-By: Babel 2.5.1\n"
|
||||
|
||||
#: cps/book_formats.py:118 cps/book_formats.py:122 cps/web.py:1398
|
||||
#: cps/book_formats.py:119 cps/book_formats.py:123 cps/web.py:1401
|
||||
msgid "not installed"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:77
|
||||
#: cps/helper.py:78
|
||||
#, python-format
|
||||
msgid "kindlegen binary %(kindlepath)s not found"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:83
|
||||
#: cps/helper.py:84
|
||||
#, python-format
|
||||
msgid "epub format not found for book id: %(book)d"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:93
|
||||
#: cps/helper.py:94
|
||||
msgid "kindlegen failed, no execution permissions"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:108
|
||||
#: cps/helper.py:109
|
||||
#, python-format
|
||||
msgid "Kindlegen failed with Error %(error)s. Message: %(message)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:187
|
||||
#: cps/helper.py:188
|
||||
#, python-format
|
||||
msgid "Failed to send mail: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:194
|
||||
#: cps/helper.py:195
|
||||
msgid "Calibre-web test email"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:195 cps/helper.py:207
|
||||
#: cps/helper.py:196 cps/helper.py:208
|
||||
msgid "This email has been sent via calibre web."
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:204 cps/templates/detail.html:43
|
||||
#: cps/helper.py:205 cps/templates/detail.html:43
|
||||
msgid "Send to Kindle"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:224 cps/helper.py:238
|
||||
#: cps/helper.py:225 cps/helper.py:239
|
||||
msgid "Could not find any formats suitable for sending by email"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:338
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:347
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/ub.py:577
|
||||
msgid "Guest"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:964
|
||||
#: cps/web.py:967
|
||||
msgid "Requesting update package"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:965
|
||||
#: cps/web.py:968
|
||||
msgid "Downloading update package"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:966
|
||||
#: cps/web.py:969
|
||||
msgid "Unzipping update package"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:967
|
||||
#: cps/web.py:970
|
||||
msgid "Files are replaced"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:968
|
||||
#: cps/web.py:971
|
||||
msgid "Database connections are closed"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:969
|
||||
#: cps/web.py:972
|
||||
msgid "Server is stopped"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:970
|
||||
#: cps/web.py:973
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1044
|
||||
#: cps/web.py:1047
|
||||
msgid "Recently Added Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1054
|
||||
#: cps/web.py:1057
|
||||
msgid "Newest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1065
|
||||
#: cps/web.py:1069
|
||||
msgid "Oldest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1077
|
||||
#: cps/web.py:1081
|
||||
msgid "Books (A-Z)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1088
|
||||
#: cps/web.py:1092
|
||||
msgid "Books (Z-A)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1116
|
||||
#: cps/web.py:1120
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1129
|
||||
#: cps/web.py:1133
|
||||
msgid "Best rated books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:32 cps/web.py:1140
|
||||
#: cps/templates/index.xml:32 cps/web.py:1144
|
||||
msgid "Random Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1154
|
||||
#: cps/web.py:1158
|
||||
msgid "Author list"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1166 cps/web.py:1225 cps/web.py:1355 cps/web.py:1827
|
||||
#: cps/web.py:1170 cps/web.py:1228 cps/web.py:1358 cps/web.py:1827
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:64 cps/web.py:1209
|
||||
#: cps/templates/index.xml:64 cps/web.py:1212
|
||||
msgid "Series list"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1223
|
||||
#: cps/web.py:1226
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1256
|
||||
#: cps/web.py:1259
|
||||
msgid "Available languages"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1273
|
||||
#: cps/web.py:1276
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:58 cps/web.py:1283
|
||||
#: cps/templates/index.xml:58 cps/web.py:1286
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1297
|
||||
#: cps/web.py:1300
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1409
|
||||
#: cps/web.py:1412
|
||||
msgid "Excecution permissions missing"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1423
|
||||
#: cps/web.py:1426
|
||||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1587
|
||||
#: cps/web.py:1591
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1589
|
||||
#: cps/web.py:1593
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1605
|
||||
#: cps/web.py:1609
|
||||
msgid "Update done"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1687 cps/web.py:1700
|
||||
#: cps/web.py:1691 cps/web.py:1704
|
||||
msgid "search"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:39 cps/templates/index.xml:42
|
||||
#: cps/templates/layout.html:131 cps/web.py:1782
|
||||
#: cps/templates/layout.html:132 cps/web.py:1782
|
||||
msgid "Read Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:45 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:132 cps/web.py:1785
|
||||
#: cps/templates/index.xml:46 cps/templates/index.xml:49
|
||||
#: cps/templates/layout.html:134 cps/web.py:1785
|
||||
msgid "Unread Books"
|
||||
msgstr ""
|
||||
|
||||
|
@ -198,7 +208,7 @@ msgstr ""
|
|||
msgid "Read a Book"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:2555
|
||||
#: cps/web.py:1925 cps/web.py:2556
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr ""
|
||||
|
||||
|
@ -253,7 +263,7 @@ msgstr ""
|
|||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2085 cps/web.py:2640
|
||||
#: cps/web.py:2085 cps/web.py:2641
|
||||
msgid "Please configure your kindle email address first..."
|
||||
msgstr ""
|
||||
|
||||
|
@ -262,177 +272,177 @@ msgstr ""
|
|||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2166
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2183 cps/web.py:2207
|
||||
#: cps/web.py:2185 cps/web.py:2209
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2188
|
||||
#: cps/web.py:2190
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2190 cps/web.py:2218
|
||||
#: cps/web.py:2192 cps/web.py:2220
|
||||
msgid "There was an error"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2191 cps/web.py:2193
|
||||
#: cps/web.py:2193 cps/web.py:2195
|
||||
msgid "create a shelf"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2216
|
||||
#: cps/web.py:2218
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2219 cps/web.py:2221
|
||||
#: cps/web.py:2221 cps/web.py:2223
|
||||
msgid "Edit a shelf"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2242
|
||||
#: cps/web.py:2244
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2264
|
||||
#: cps/web.py:2266
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2267
|
||||
#: cps/web.py:2269
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2300
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2368
|
||||
#: cps/web.py:2369
|
||||
msgid "Found an existing account for this email address."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2370 cps/web.py:2374
|
||||
#: cps/web.py:2371 cps/web.py:2375
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2371
|
||||
#: cps/web.py:2372
|
||||
msgid "Profile updated"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2385
|
||||
#: cps/web.py:2386
|
||||
msgid "Admin page"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2509
|
||||
#: cps/web.py:2510
|
||||
msgid "Calibre-web configuration updated"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2516 cps/web.py:2522 cps/web.py:2536
|
||||
#: cps/web.py:2517 cps/web.py:2523 cps/web.py:2537
|
||||
msgid "Basic Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2520
|
||||
#: cps/web.py:2521
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/admin.html:34 cps/web.py:2557 cps/web.py:2610
|
||||
#: cps/templates/admin.html:34 cps/web.py:2558 cps/web.py:2611
|
||||
msgid "Add new user"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2602
|
||||
#: cps/web.py:2603
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2606
|
||||
#: cps/web.py:2607
|
||||
msgid "Found an existing account for this email address or nickname."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2628
|
||||
#: cps/web.py:2629
|
||||
msgid "Mail settings updated"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2635
|
||||
#: cps/web.py:2636
|
||||
#, python-format
|
||||
msgid "Test E-Mail successfully send to %(kindlemail)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2638
|
||||
#: cps/web.py:2639
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test E-Mail: %(res)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2642
|
||||
#: cps/web.py:2643
|
||||
msgid "E-Mail settings updated"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2643
|
||||
#: cps/web.py:2644
|
||||
msgid "Edit mail settings"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2672
|
||||
#: cps/web.py:2673
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2780
|
||||
#: cps/web.py:2781
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2783
|
||||
#: cps/web.py:2784
|
||||
msgid "An unknown error occured."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2786
|
||||
#: cps/web.py:2787
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2802
|
||||
#: cps/web.py:2803
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2817 cps/web.py:3018 cps/web.py:3161
|
||||
#: cps/web.py:2818 cps/web.py:3026 cps/web.py:3031 cps/web.py:3174
|
||||
msgid "edit metadata"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2827 cps/web.py:3055
|
||||
#: cps/web.py:2828 cps/web.py:3068
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2838
|
||||
#: cps/web.py:2839
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2858 cps/web.py:2862
|
||||
#: cps/web.py:2861 cps/web.py:2865
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3061
|
||||
#: cps/web.py:3074
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3080
|
||||
#: cps/web.py:3093
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3085
|
||||
#: cps/web.py:3098
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3090
|
||||
#: cps/web.py:3103
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgstr ""
|
||||
|
@ -637,7 +647,7 @@ msgstr ""
|
|||
msgid "Tags"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:141
|
||||
#: cps/templates/book_edit.html:39 cps/templates/layout.html:143
|
||||
#: cps/templates/search_form.html:37
|
||||
msgid "Series"
|
||||
msgstr ""
|
||||
|
@ -724,7 +734,7 @@ msgstr ""
|
|||
msgid "Loading..."
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:205
|
||||
#: cps/templates/book_edit.html:196 cps/templates/layout.html:207
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
|
@ -931,7 +941,7 @@ msgstr ""
|
|||
msgid "Save settings and send Test E-Mail"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:189
|
||||
#: cps/templates/feed.xml:20 cps/templates/layout.html:191
|
||||
msgid "Next"
|
||||
msgstr ""
|
||||
|
||||
|
@ -976,7 +986,7 @@ msgstr ""
|
|||
msgid "Show Random Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:144
|
||||
#: cps/templates/index.xml:52 cps/templates/layout.html:146
|
||||
msgid "Authors"
|
||||
msgstr ""
|
||||
|
||||
|
@ -1041,39 +1051,39 @@ msgstr ""
|
|||
msgid "Descending"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:135
|
||||
#: cps/templates/layout.html:137
|
||||
msgid "Discover"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:138
|
||||
#: cps/templates/layout.html:140
|
||||
msgid "Categories"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:147 cps/templates/search_form.html:58
|
||||
#: cps/templates/layout.html:149 cps/templates/search_form.html:58
|
||||
msgid "Languages"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:150
|
||||
#: cps/templates/layout.html:152
|
||||
msgid "Public Shelves"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:154
|
||||
#: cps/templates/layout.html:156
|
||||
msgid "Your Shelves"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:159
|
||||
#: cps/templates/layout.html:161
|
||||
msgid "Create a Shelf"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:160 cps/templates/stats.html:3
|
||||
#: cps/templates/layout.html:162 cps/templates/stats.html:3
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:174
|
||||
#: cps/templates/layout.html:176
|
||||
msgid "Previous"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:201
|
||||
#: cps/templates/layout.html:203
|
||||
msgid "Book Details"
|
||||
msgstr ""
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user