mirror of
				https://github.com/janeczku/calibre-web
				synced 2025-10-31 07:13:02 +00:00 
			
		
		
		
	Improved error handling for renaming authors and titles (changes related to filesystem and not only to database)
This commit is contained in:
		| @@ -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} | ||||
|   | ||||
							
								
								
									
										12
									
								
								cps/db.py
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								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 | ||||
| @@ -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): | ||||
|  | ||||
|   | ||||
							
								
								
									
										102
									
								
								cps/helper.py
									
									
									
									
									
								
							
							
						
						
									
										102
									
								
								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) + ")" | ||||
|     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: | ||||
|         try: | ||||
|             new_title_path = os.path.join(os.path.dirname(path), new_titledir) | ||||
|         os.rename(path, new_title_path) | ||||
|             os.renames(path, new_title_path) | ||||
|             path = new_title_path | ||||
|         book.path = book.path.split('/')[0] + '/' + new_titledir | ||||
|  | ||||
|             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: | ||||
|         try: | ||||
|             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() | ||||
|             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 | ||||
|   | ||||
							
								
								
									
										77
									
								
								cps/web.py
									
									
									
									
									
								
							
							
						
						
									
										77
									
								
								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. | ||||
| @@ -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(): | ||||
| @@ -1438,7 +1441,7 @@ def delete_book(book_id): | ||||
|             if config.config_use_google_drive: | ||||
|                 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): | ||||
| @@ -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,24 +2849,38 @@ 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]) | ||||
|  | ||||
|     error = False | ||||
|     for b in edited_books_id: | ||||
|         if config.config_use_google_drive: | ||||
|             error = helper.update_dir_structure_gdrive(b) | ||||
|         else: | ||||
|             error = helper.update_dir_stucture(b, config.config_calibre_dir) | ||||
|         if error:   # stop on error | ||||
|             break | ||||
|     if config.config_use_google_drive: | ||||
|         updateGdriveCalibreFromLocal() | ||||
|  | ||||
|     if not error: | ||||
|         if to_save["cover_url"] and save_cover(to_save["cover_url"], book.path): | ||||
|             book.has_cover = 1 | ||||
|  | ||||
| @@ -2996,23 +3014,21 @@ def edit_book(book_id): | ||||
|             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') | ||||
|                 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) | ||||
|     for b in edited_books_id: | ||||
|         if config.config_use_google_drive: | ||||
|             helper.update_dir_structure_gdrive(b) | ||||
|         else: | ||||
|             helper.update_dir_stucture(b, config.config_calibre_dir) | ||||
|     if config.config_use_google_drive: | ||||
|         updateGdriveCalibreFromLocal() | ||||
|         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")) | ||||
|  | ||||
|  | ||||
| def save_cover(url, book_path): | ||||
| @@ -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 "" | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 OzzieIsaacs
					OzzieIsaacs