Updated french and chinese language. Thanks to @idalin and Olivier
Fixed bug some translations are not shown
This commit is contained in:
parent
2f1fe60cd6
commit
9d0f583d4f
|
@ -73,7 +73,7 @@ def convert_book_format(book_id, calibrepath, old_book_format, new_book_format,
|
|||
# read settings and append converter task to queue
|
||||
if kindle_mail:
|
||||
settings = ub.get_mail_settings()
|
||||
text = _(u"Convert: %s" % book.title)
|
||||
text = _(u"Convert: %(book)s" , book=book.title)
|
||||
else:
|
||||
settings = dict()
|
||||
text = _(u"Convert to %(format)s: %(book)s", format=new_book_format, book=book.title)
|
||||
|
@ -105,7 +105,7 @@ def send_registration_mail(e_mail, user_name, default_password, resend=False):
|
|||
text += "Sincerely\r\n\r\n"
|
||||
text += "Your Calibre-Web team"
|
||||
global_WorkerThread.add_email(_(u'Get Started with Calibre-Web'),None, None, ub.get_mail_settings(),
|
||||
e_mail, user_name, _(u"Registration e-mail for user: %s" % user_name),text)
|
||||
e_mail, user_name, _(u"Registration e-mail for user: %(name)s", name=user_name),text)
|
||||
return
|
||||
|
||||
|
||||
|
@ -141,7 +141,7 @@ def send_mail(book_id, kindle_mail, calibrepath, user_id):
|
|||
return _(u"Could not find any formats suitable for sending by e-mail")
|
||||
if result:
|
||||
global_WorkerThread.add_email(_(u"Send to Kindle"), book.path, result, ub.get_mail_settings(),
|
||||
kindle_mail, user_id, _(u"E-Mail: %s" % book.title))
|
||||
kindle_mail, user_id, _(u"E-mail: %(book)s", book=book.title))
|
||||
else:
|
||||
return _(u"The requested file could not be read. Maybe wrong permissions?")
|
||||
|
||||
|
@ -238,7 +238,7 @@ def update_dir_structure_file(book_id, calibrepath):
|
|||
except OSError as ex:
|
||||
web.app.logger.error("Rename title from: " + path + " to " + new_title_path)
|
||||
web.app.logger.error(ex, exc_info=True)
|
||||
return _('Rename title from: "%s" to "%s" failed with error: %s' % (path, new_title_path, str(ex)))
|
||||
return _('Rename title from: "%(src)s" to "%(dest)s" failed with error: %(error)s', src=path, dest=new_title_path, error=str(ex))
|
||||
if authordir != new_authordir:
|
||||
try:
|
||||
new_author_path = os.path.join(os.path.join(calibrepath, new_authordir), os.path.basename(path))
|
||||
|
@ -247,7 +247,7 @@ def update_dir_structure_file(book_id, calibrepath):
|
|||
except OSError as ex:
|
||||
web.app.logger.error("Rename author from: " + path + " to " + new_author_path)
|
||||
web.app.logger.error(ex, exc_info=True)
|
||||
return _('Rename author from: "%s" to "%s" failed with error: %s' % (path, new_title_path, str(ex)))
|
||||
return _('Rename author from: "%(src)s" to "%(dest)s" failed with error: %(error)s', src=path, dest=new_title_path, error=str(ex))
|
||||
return False
|
||||
|
||||
|
||||
|
@ -261,7 +261,6 @@ def update_dir_structure_gdrive(book_id):
|
|||
new_titledir = get_valid_filename(book.title) + " (" + str(book_id) + ")"
|
||||
|
||||
if titledir != new_titledir:
|
||||
# print (titledir)
|
||||
gFile = gd.getFileFromEbooksFolder(os.path.dirname(book.path), titledir)
|
||||
if gFile:
|
||||
gFile['title'] = new_titledir
|
||||
|
@ -270,7 +269,7 @@ def update_dir_structure_gdrive(book_id):
|
|||
book.path = book.path.split('/')[0] + '/' + new_titledir
|
||||
gd.updateDatabaseOnEdit(gFile['id'], book.path) # only child folder affected
|
||||
else:
|
||||
error = _(u'File %s not found on Google Drive' % book.path) # file not found
|
||||
error = _(u'File %(file)s not found on Google Drive', file= book.path) # file not found
|
||||
|
||||
if authordir != new_authordir:
|
||||
gFile = gd.getFileFromEbooksFolder(os.path.dirname(book.path), titledir)
|
||||
|
@ -279,7 +278,7 @@ def update_dir_structure_gdrive(book_id):
|
|||
book.path = new_authordir + '/' + book.path.split('/')[1]
|
||||
gd.updateDatabaseOnEdit(gFile['id'], book.path)
|
||||
else:
|
||||
error = _(u'File %s not found on Google Drive' % authordir) # file not found
|
||||
error = _(u'File %(file)s not found on Google Drive', file=authordir) # file not found
|
||||
return error
|
||||
|
||||
|
||||
|
@ -297,7 +296,7 @@ def delete_book_gdrive(book, book_format):
|
|||
gd.deleteDatabaseEntry(gFile['id'])
|
||||
gFile.Trash()
|
||||
else:
|
||||
error =_(u'Book path %s not found on Google Drive' % book.path) # file not found
|
||||
error =_(u'Book path %(path)s not found on Google Drive', path=book.path) # file not found
|
||||
return error
|
||||
|
||||
def generate_random_password():
|
||||
|
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
40
cps/web.py
40
cps/web.py
|
@ -1824,7 +1824,7 @@ def advanced_search():
|
|||
cc_present = False
|
||||
for c in cc:
|
||||
if request.args.get('custom_column_' + str(c.id)):
|
||||
searchterm.extend([_(u"%s: %s" % (c.name, request.args.get('custom_column_' + str(c.id))))])
|
||||
searchterm.extend([(u"%s: %s" % (c.name, request.args.get('custom_column_' + str(c.id))))])
|
||||
cc_present = True
|
||||
|
||||
if include_tag_inputs or exclude_tag_inputs or include_series_inputs or exclude_series_inputs or \
|
||||
|
@ -1834,9 +1834,9 @@ def advanced_search():
|
|||
searchterm.extend((author_name.replace('|',','), book_title, publisher))
|
||||
if pub_start:
|
||||
try:
|
||||
searchterm.extend([_(u"Published after %s" %
|
||||
searchterm.extend([_(u"Published after ") +
|
||||
format_date(datetime.datetime.strptime(pub_start,"%Y-%m-%d"),
|
||||
format='medium', locale=get_locale()))])
|
||||
format='medium', locale=get_locale())])
|
||||
except ValueError:
|
||||
pub_start = u""
|
||||
if pub_end:
|
||||
|
@ -1855,13 +1855,13 @@ def advanced_search():
|
|||
language_names = speaking_language(language_names)
|
||||
searchterm.extend(language.name for language in language_names)
|
||||
if rating_high:
|
||||
searchterm.extend([_(u"Rating <= %s" % rating_high)])
|
||||
searchterm.extend([_(u"Rating <= %(rating)s", rating=rating_high)])
|
||||
if rating_low:
|
||||
searchterm.extend([_(u"Rating >= %s" % rating_low)])
|
||||
searchterm.extend([_(u"Rating >= %(rating)s", rating=rating_low)])
|
||||
# handle custom columns
|
||||
for c in cc:
|
||||
if request.args.get('custom_column_' + str(c.id)):
|
||||
searchterm.extend([_(u"%s: %s" % (c.name, request.args.get('custom_column_' + str(c.id))))])
|
||||
searchterm.extend([(u"%s: %s" % (c.name, request.args.get('custom_column_' + str(c.id))))])
|
||||
searchterm = " + ".join(filter(None, searchterm))
|
||||
q = q.filter()
|
||||
if author_name:
|
||||
|
@ -2352,7 +2352,7 @@ def search_to_shelf(shelf_id):
|
|||
|
||||
if not shelf.is_public and not shelf.user_id == int(current_user.id):
|
||||
app.logger.info("You are not allowed to add a book to the the shelf: %s" % shelf.name)
|
||||
flash(_(u"You are not allowed to add a book to the the shelf: %s" % shelf.name), category="error")
|
||||
flash(_(u"You are not allowed to add a book to the the shelf: %(name)s", name=shelf.name), category="error")
|
||||
return redirect(url_for('index'))
|
||||
|
||||
if shelf.is_public and not current_user.role_edit_shelfs():
|
||||
|
@ -2375,7 +2375,7 @@ def search_to_shelf(shelf_id):
|
|||
|
||||
if not books_for_shelf:
|
||||
app.logger.info("Books are already part of the shelf: %s" % shelf.name)
|
||||
flash(_(u"Books are already part of the shelf: %s" % shelf.name), category="error")
|
||||
flash(_(u"Books are already part of the shelf: %(name)s", name=shelf.name), category="error")
|
||||
return redirect(url_for('index'))
|
||||
|
||||
maxOrder = ub.session.query(func.max(ub.BookShelf.order)).filter(ub.BookShelf.shelf == shelf_id).first()
|
||||
|
@ -3216,7 +3216,7 @@ def reset_password(user_id):
|
|||
try:
|
||||
ub.session.commit()
|
||||
helper.send_registration_mail(existing_user.email, existing_user.nickname, password, True)
|
||||
flash(_(u"Password for user %s reset" % existing_user.nickname), category="success")
|
||||
flash(_(u"Password for user %(user)s reset", user=existing_user.nickname), category="success")
|
||||
except Exception:
|
||||
ub.session.rollback()
|
||||
flash(_(u"An unknown error occurred. Please try again later."), category="error")
|
||||
|
@ -3297,12 +3297,12 @@ def edit_book(book_id):
|
|||
try:
|
||||
os.makedirs(filepath)
|
||||
except OSError:
|
||||
flash(_(u"Failed to create path %s (Permission denied)." % filepath), category="error")
|
||||
flash(_(u"Failed to create path %(path)s (Permission denied).", path=filepath), category="error")
|
||||
return redirect(url_for('show_book', book_id=book.id))
|
||||
try:
|
||||
requested_file.save(saved_filename)
|
||||
except OSError:
|
||||
flash(_(u"Failed to store file %s." % saved_filename), category="error")
|
||||
flash(_(u"Failed to store file %(file)s.", file=saved_filename), category="error")
|
||||
return redirect(url_for('show_book', book_id=book.id))
|
||||
|
||||
file_size = os.path.getsize(saved_filename)
|
||||
|
@ -3318,7 +3318,7 @@ def edit_book(book_id):
|
|||
db.session.connection().connection.connection.create_function("title_sort", 1, db.title_sort)
|
||||
|
||||
# Queue uploader info
|
||||
uploadText=_(u"File format %s added to %s" % (file_ext.upper(), book.title))
|
||||
uploadText=_(u"File format %(ext)s added to %(book)s", ext=file_ext.upper(), book=book.title)
|
||||
helper.global_WorkerThread.add_upload(current_user.nickname,
|
||||
"<a href=\"" + url_for('show_book', book_id=book.id) + "\">" + uploadText + "</a>")
|
||||
|
||||
|
@ -3336,14 +3336,14 @@ def edit_book(book_id):
|
|||
try:
|
||||
os.makedirs(filepath)
|
||||
except OSError:
|
||||
flash(_(u"Failed to create path for cover %s (Permission denied)." % filepath), category="error")
|
||||
flash(_(u"Failed to create path for cover %(path)s (Permission denied).", cover=filepath), category="error")
|
||||
return redirect(url_for('show_book', book_id=book.id))
|
||||
try:
|
||||
requested_file.save(saved_filename)
|
||||
# im=Image.open(saved_filename)
|
||||
book.has_cover = 1
|
||||
except OSError:
|
||||
flash(_(u"Failed to store cover-file %s." % saved_filename), category="error")
|
||||
flash(_(u"Failed to store cover-file %(cover)s.", cover=saved_filename), category="error")
|
||||
return redirect(url_for('show_book', book_id=book.id))
|
||||
except IOError:
|
||||
flash(_(u"Cover-file is not a valid image file" % saved_filename), category="error")
|
||||
|
@ -3573,8 +3573,8 @@ def upload():
|
|||
file_ext = requested_file.filename.rsplit('.', 1)[-1].lower()
|
||||
if file_ext not in ALLOWED_EXTENSIONS:
|
||||
flash(
|
||||
_('File extension "%s" is not allowed to be uploaded to this server' %
|
||||
file_ext), category="error")
|
||||
_('File extension "%(ext)s" is not allowed to be uploaded to this server',
|
||||
ext=file_ext), category="error")
|
||||
return redirect(url_for('index'))
|
||||
else:
|
||||
flash(_('File to be uploaded must have an extension'), category="error")
|
||||
|
@ -3597,17 +3597,17 @@ def upload():
|
|||
try:
|
||||
os.makedirs(filepath)
|
||||
except OSError:
|
||||
flash(_(u"Failed to create path %s (Permission denied)." % filepath), category="error")
|
||||
flash(_(u"Failed to create path %(path)s (Permission denied).", path=filepath), category="error")
|
||||
return redirect(url_for('index'))
|
||||
try:
|
||||
copyfile(meta.file_path, saved_filename)
|
||||
except OSError:
|
||||
flash(_(u"Failed to store file %s (Permission denied)." % saved_filename), category="error")
|
||||
flash(_(u"Failed to store file %(file)s (Permission denied).", file=saved_filename), category="error")
|
||||
return redirect(url_for('index'))
|
||||
try:
|
||||
os.unlink(meta.file_path)
|
||||
except OSError:
|
||||
flash(_(u"Failed to delete file %s (Permission denied)." % meta.file_path), category="warning")
|
||||
flash(_(u"Failed to delete file %(file)s (Permission denied).", file= meta.file_path), category="warning")
|
||||
|
||||
if meta.cover is None:
|
||||
has_cover = 0
|
||||
|
@ -3689,7 +3689,7 @@ def upload():
|
|||
gdriveutils.updateGdriveCalibreFromLocal()
|
||||
if error:
|
||||
flash(error, category="error")
|
||||
uploadText=_(u"File %s uploaded" % book.title)
|
||||
uploadText=_(u"File %(file)s uploaded", file=book.title)
|
||||
helper.global_WorkerThread.add_upload(current_user.nickname,
|
||||
"<a href=\"" + url_for('show_book', book_id=book.id) + "\">" + uploadText + "</a>")
|
||||
|
||||
|
|
|
@ -223,7 +223,7 @@ class WorkerThread(threading.Thread):
|
|||
if curr_task == TASK_CONVERT:
|
||||
self.add_email(_(u'Send to Kindle'), self.queue[self.current]['path'], filename,
|
||||
self.queue[self.current]['settings'], self.queue[self.current]['kindle'],
|
||||
self.UIqueue[self.current]['user'], _(u"E-mail: %s" % self.queue[self.current]['title']))
|
||||
self.UIqueue[self.current]['user'], _(u"E-mail: %(book)s", book=self.queue[self.current]['title']))
|
||||
|
||||
|
||||
def convert_ebook_format(self):
|
||||
|
@ -269,7 +269,7 @@ class WorkerThread(threading.Thread):
|
|||
|
||||
p = subprocess.Popen(command, stdout=subprocess.PIPE, universal_newlines=True)
|
||||
except OSError as e:
|
||||
self._handleError(_(u"Ebook-converter failed: %s" % e))
|
||||
self._handleError(_(u"Ebook-converter failed: %(error)s", error=e))
|
||||
return
|
||||
|
||||
if web.ub.config.config_ebookconverter == 1:
|
||||
|
|
334
messages.pot
334
messages.pot
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PROJECT VERSION\n"
|
||||
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
|
||||
"POT-Creation-Date: 2018-09-03 19:09+0200\n"
|
||||
"POT-Creation-Date: 2018-09-08 12:22+0200\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"
|
||||
|
@ -38,71 +38,71 @@ msgstr ""
|
|||
|
||||
#: cps/helper.py:76
|
||||
#, python-format
|
||||
msgid "Convert: %s"
|
||||
msgid "Convert: %(book)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:78
|
||||
#: cps/helper.py:79
|
||||
#, python-format
|
||||
msgid "Convert to %(format)s: %(book)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:85
|
||||
#: cps/helper.py:86
|
||||
#, python-format
|
||||
msgid "%(format)s not found: %(fn)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:90
|
||||
#: cps/helper.py:91
|
||||
msgid "Calibre-Web test e-mail"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:91
|
||||
#: cps/helper.py:92
|
||||
msgid "Test e-mail"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:106
|
||||
#: cps/helper.py:107
|
||||
msgid "Get Started with Calibre-Web"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:107
|
||||
#: cps/helper.py:108
|
||||
#, python-format
|
||||
msgid "Registration e-mail for user: %s"
|
||||
msgid "Registration e-mail for user: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:130 cps/helper.py:140
|
||||
#: cps/helper.py:131 cps/helper.py:141
|
||||
msgid "Could not find any formats suitable for sending by e-mail"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:142 cps/templates/detail.html:44 cps/worker.py:224
|
||||
#: cps/helper.py:143 cps/templates/detail.html:44 cps/worker.py:224
|
||||
msgid "Send to Kindle"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:143
|
||||
#: cps/helper.py:144 cps/worker.py:226
|
||||
#, python-format
|
||||
msgid "E-Mail: %s"
|
||||
msgid "E-mail: %(book)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:145
|
||||
#: cps/helper.py:146
|
||||
msgid "The requested file could not be read. Maybe wrong permissions?"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:240
|
||||
#: cps/helper.py:241
|
||||
#, python-format
|
||||
msgid "Rename title from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgid "Rename title from: \"%(src)s\" to \"%(dest)s\" failed with error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:249
|
||||
#: cps/helper.py:250
|
||||
#, python-format
|
||||
msgid "Rename author from: \"%s\" to \"%s\" failed with error: %s"
|
||||
msgid "Rename author from: \"%(src)s\" to \"%(dest)s\" failed with error: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:272 cps/helper.py:281
|
||||
#, python-format
|
||||
msgid "File %s not found on Google Drive"
|
||||
msgid "File %(file)s not found on Google Drive"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:299
|
||||
#, python-format
|
||||
msgid "Book path %s not found on Google Drive"
|
||||
msgid "Book path %(path)s not found on Google Drive"
|
||||
msgstr ""
|
||||
|
||||
#: cps/helper.py:544
|
||||
|
@ -113,529 +113,528 @@ msgstr ""
|
|||
msgid "Unrar binary file not found"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1120
|
||||
#: cps/web.py:1114
|
||||
msgid "Requesting update package"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1121
|
||||
#: cps/web.py:1115
|
||||
msgid "Downloading update package"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1122
|
||||
#: cps/web.py:1116
|
||||
msgid "Unzipping update package"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1123
|
||||
#: cps/web.py:1117
|
||||
msgid "Files are replaced"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1124
|
||||
#: cps/web.py:1118
|
||||
msgid "Database connections are closed"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1125
|
||||
#: cps/web.py:1119
|
||||
msgid "Server is stopped"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1126
|
||||
#: cps/web.py:1120
|
||||
msgid "Update finished, please press okay and reload page"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1146
|
||||
#: cps/web.py:1140
|
||||
msgid "Recently Added Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1156
|
||||
#: cps/web.py:1150
|
||||
msgid "Newest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1168
|
||||
#: cps/web.py:1162
|
||||
msgid "Oldest Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1180
|
||||
#: cps/web.py:1174
|
||||
msgid "Books (A-Z)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1191
|
||||
#: cps/web.py:1185
|
||||
msgid "Books (Z-A)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1220
|
||||
#: cps/web.py:1214
|
||||
msgid "Hot Books (most downloaded)"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1233
|
||||
#: cps/web.py:1227
|
||||
msgid "Best rated books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:36 cps/web.py:1245
|
||||
#: cps/templates/index.xml:36 cps/web.py:1239
|
||||
msgid "Random Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1260
|
||||
#: cps/web.py:1254
|
||||
msgid "Author list"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1272 cps/web.py:1335 cps/web.py:1490 cps/web.py:2042
|
||||
#: cps/web.py:1266 cps/web.py:1329 cps/web.py:1484 cps/web.py:2036
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible:"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:73 cps/web.py:1319
|
||||
#: cps/templates/index.xml:73 cps/web.py:1313
|
||||
msgid "Series list"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1333
|
||||
#: cps/web.py:1327
|
||||
#, python-format
|
||||
msgid "Series: %(serie)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1360
|
||||
#: cps/web.py:1354
|
||||
msgid "Available languages"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1377
|
||||
#: cps/web.py:1371
|
||||
#, python-format
|
||||
msgid "Language: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:66 cps/web.py:1388
|
||||
#: cps/templates/index.xml:66 cps/web.py:1382
|
||||
msgid "Category list"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1402
|
||||
#: cps/web.py:1396
|
||||
#, python-format
|
||||
msgid "Category: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/layout.html:71 cps/web.py:1541
|
||||
#: cps/templates/layout.html:71 cps/web.py:1535
|
||||
msgid "Tasks"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1571
|
||||
#: cps/web.py:1565
|
||||
msgid "Statistics"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1676
|
||||
#: cps/web.py:1670
|
||||
msgid "Callback domain is not verified, please follow steps to verify domain in google developer console"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1752
|
||||
#: cps/web.py:1746
|
||||
msgid "Server restarted, please reload page"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1755
|
||||
#: cps/web.py:1749
|
||||
msgid "Performing shutdown of server, please close window"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1773
|
||||
#: cps/web.py:1767
|
||||
msgid "Update done"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1833 cps/web.py:1870
|
||||
#, python-format
|
||||
msgid "%s: %s"
|
||||
#: cps/web.py:1837
|
||||
msgid "Published after "
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1845
|
||||
#, python-format
|
||||
msgid "Published after %s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1850
|
||||
#: cps/web.py:1844
|
||||
msgid "Published before "
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1864
|
||||
#: cps/web.py:1858
|
||||
#, python-format
|
||||
msgid "Rating <= %s"
|
||||
msgid "Rating <= %(rating)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1866
|
||||
#: cps/web.py:1860
|
||||
#, python-format
|
||||
msgid "Rating >= %s"
|
||||
msgid "Rating >= %(rating)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:1925 cps/web.py:1934
|
||||
#: cps/web.py:1919 cps/web.py:1928
|
||||
msgid "search"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:44 cps/templates/index.xml:48
|
||||
#: cps/templates/layout.html:146 cps/web.py:2001
|
||||
#: cps/templates/layout.html:146 cps/web.py:1995
|
||||
msgid "Read Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/index.xml:52 cps/templates/index.xml:56
|
||||
#: cps/templates/layout.html:148 cps/web.py:2004
|
||||
#: cps/templates/layout.html:148 cps/web.py:1998
|
||||
msgid "Unread Books"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2052 cps/web.py:2054 cps/web.py:2056 cps/web.py:2068
|
||||
#: cps/web.py:2046 cps/web.py:2048 cps/web.py:2050 cps/web.py:2062
|
||||
msgid "Read a Book"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2134 cps/web.py:3011
|
||||
#: cps/web.py:2128 cps/web.py:3006
|
||||
msgid "Please fill out all fields!"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2135 cps/web.py:2156 cps/web.py:2160 cps/web.py:2165
|
||||
#: cps/web.py:2167
|
||||
#: cps/web.py:2129 cps/web.py:2150 cps/web.py:2154 cps/web.py:2159
|
||||
#: cps/web.py:2161
|
||||
msgid "register"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2155 cps/web.py:3227
|
||||
#: cps/web.py:2149 cps/web.py:3222
|
||||
msgid "An unknown error occurred. Please try again later."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2158
|
||||
#: cps/web.py:2152
|
||||
msgid "Your e-mail is not allowed to register"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2161
|
||||
#: cps/web.py:2155
|
||||
msgid "Confirmation e-mail was send to your e-mail account."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2164
|
||||
#: cps/web.py:2158
|
||||
msgid "This username or e-mail address is already in use."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2181 cps/web.py:2277
|
||||
#: cps/web.py:2175 cps/web.py:2271
|
||||
#, python-format
|
||||
msgid "you are now logged in as: '%(nickname)s'"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2186
|
||||
#: cps/web.py:2180
|
||||
msgid "Wrong Username or Password"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2192 cps/web.py:2213
|
||||
#: cps/web.py:2186 cps/web.py:2207
|
||||
msgid "login"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2225 cps/web.py:2256
|
||||
#: cps/web.py:2219 cps/web.py:2250
|
||||
msgid "Token not found"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2233 cps/web.py:2264
|
||||
#: cps/web.py:2227 cps/web.py:2258
|
||||
msgid "Token has expired"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2241
|
||||
#: cps/web.py:2235
|
||||
msgid "Success! Please return to your device"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2291
|
||||
#: cps/web.py:2285
|
||||
msgid "Please configure the SMTP mail settings first..."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2295
|
||||
#: cps/web.py:2289
|
||||
#, python-format
|
||||
msgid "Book successfully queued for sending to %(kindlemail)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2299
|
||||
#: cps/web.py:2293
|
||||
#, python-format
|
||||
msgid "There was an error sending this book: %(res)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2301 cps/web.py:3065
|
||||
#: cps/web.py:2295 cps/web.py:3060
|
||||
msgid "Please configure your kindle e-mail address first..."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2345
|
||||
#: cps/web.py:2339
|
||||
#, python-format
|
||||
msgid "Book has been added to shelf: %(sname)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2356
|
||||
#: cps/web.py:2350
|
||||
msgid "Invalid shelf specified"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2361
|
||||
#: cps/web.py:2355
|
||||
#, python-format
|
||||
msgid "You are not allowed to add a book to the the shelf: %s"
|
||||
msgid "You are not allowed to add a book to the the shelf: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2366
|
||||
#: cps/web.py:2360
|
||||
msgid "User is not allowed to edit public shelves"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2384
|
||||
#: cps/web.py:2378
|
||||
#, python-format
|
||||
msgid "Books are already part of the shelf: %s"
|
||||
msgid "Books are already part of the shelf: %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2398
|
||||
#: cps/web.py:2392
|
||||
#, python-format
|
||||
msgid "Books have been added to shelf: %(sname)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2400
|
||||
#: cps/web.py:2394
|
||||
#, python-format
|
||||
msgid "Could not add books to shelf: %(sname)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2437
|
||||
#: cps/web.py:2431
|
||||
#, python-format
|
||||
msgid "Book has been removed from shelf: %(sname)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2443
|
||||
#: cps/web.py:2437
|
||||
#, python-format
|
||||
msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2463 cps/web.py:2487
|
||||
#: cps/web.py:2457 cps/web.py:2481
|
||||
#, python-format
|
||||
msgid "A shelf with the name '%(title)s' already exists."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2468
|
||||
#: cps/web.py:2462
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s created"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2470 cps/web.py:2498
|
||||
#: cps/web.py:2464 cps/web.py:2492
|
||||
msgid "There was an error"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2471 cps/web.py:2473
|
||||
#: cps/web.py:2465 cps/web.py:2467
|
||||
msgid "create a shelf"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2496
|
||||
#: cps/web.py:2490
|
||||
#, python-format
|
||||
msgid "Shelf %(title)s changed"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2499 cps/web.py:2501
|
||||
#: cps/web.py:2493 cps/web.py:2495
|
||||
msgid "Edit a shelf"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2522
|
||||
#: cps/web.py:2516
|
||||
#, python-format
|
||||
msgid "successfully deleted shelf %(name)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2544
|
||||
#: cps/web.py:2538
|
||||
#, python-format
|
||||
msgid "Shelf: '%(name)s'"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2547
|
||||
#: cps/web.py:2541
|
||||
msgid "Error opening shelf. Shelf does not exist or is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2578
|
||||
#: cps/web.py:2572
|
||||
#, python-format
|
||||
msgid "Change order of Shelf: '%(name)s'"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2607 cps/web.py:3017
|
||||
#: cps/web.py:2601 cps/web.py:3012
|
||||
msgid "E-mail is not from valid domain"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2609 cps/web.py:2650 cps/web.py:2653
|
||||
#: cps/web.py:2603 cps/web.py:2644 cps/web.py:2647
|
||||
#, python-format
|
||||
msgid "%(name)s's profile"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2648
|
||||
#: cps/web.py:2642
|
||||
msgid "Found an existing account for this e-mail address."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2651
|
||||
#: cps/web.py:2645
|
||||
msgid "Profile updated"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2663
|
||||
#: cps/web.py:2657
|
||||
msgid "Unknown"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2677
|
||||
#: cps/web.py:2671
|
||||
msgid "Admin page"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2755 cps/web.py:2927
|
||||
#: cps/web.py:2749 cps/web.py:2922
|
||||
msgid "Calibre-Web configuration updated"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/admin.html:91 cps/web.py:2768
|
||||
#: cps/templates/admin.html:91 cps/web.py:2762
|
||||
msgid "UI Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2785
|
||||
#: cps/web.py:2780
|
||||
msgid "Import of optional Google Drive requirements missing"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2788
|
||||
#: cps/web.py:2783
|
||||
msgid "client_secrets.json is missing or not readable"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2793 cps/web.py:2820
|
||||
#: cps/web.py:2788 cps/web.py:2815
|
||||
msgid "client_secrets.json is not configured for web application"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/admin.html:90 cps/web.py:2823 cps/web.py:2849 cps/web.py:2861
|
||||
#: cps/web.py:2903 cps/web.py:2918 cps/web.py:2935 cps/web.py:2942
|
||||
#: cps/web.py:2959
|
||||
#: cps/templates/admin.html:90 cps/web.py:2818 cps/web.py:2844 cps/web.py:2856
|
||||
#: cps/web.py:2898 cps/web.py:2913 cps/web.py:2930 cps/web.py:2937
|
||||
#: cps/web.py:2954
|
||||
msgid "Basic Configuration"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2846
|
||||
#: cps/web.py:2841
|
||||
msgid "Keyfile location is not valid, please enter correct path"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2858
|
||||
#: cps/web.py:2853
|
||||
msgid "Certfile location is not valid, please enter correct path"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2900
|
||||
#: cps/web.py:2895
|
||||
msgid "Logfile location is not valid, please enter correct path"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:2939
|
||||
#: cps/web.py:2934
|
||||
msgid "DB location is not valid, please enter correct path"
|
||||
msgstr ""
|
||||
|
||||
#: cps/templates/admin.html:31 cps/web.py:3013 cps/web.py:3019 cps/web.py:3035
|
||||
#: cps/templates/admin.html:31 cps/web.py:3008 cps/web.py:3014 cps/web.py:3030
|
||||
msgid "Add new user"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3025
|
||||
#: cps/web.py:3020
|
||||
#, python-format
|
||||
msgid "User '%(user)s' created"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3029
|
||||
#: cps/web.py:3024
|
||||
msgid "Found an existing account for this e-mail address or nickname."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3053 cps/web.py:3067
|
||||
#: cps/web.py:3048 cps/web.py:3062
|
||||
msgid "E-mail server settings updated"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3060
|
||||
#: cps/web.py:3055
|
||||
#, python-format
|
||||
msgid "Test e-mail successfully send to %(kindlemail)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3063
|
||||
#: cps/web.py:3058
|
||||
#, python-format
|
||||
msgid "There was an error sending the Test e-mail: %(res)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3068
|
||||
#: cps/web.py:3063
|
||||
msgid "Edit e-mail server settings"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3093
|
||||
#: cps/web.py:3088
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' deleted"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3202
|
||||
#: cps/web.py:3197
|
||||
#, python-format
|
||||
msgid "User '%(nick)s' updated"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3205
|
||||
#: cps/web.py:3200
|
||||
msgid "An unknown error occured."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3207
|
||||
#: cps/web.py:3202
|
||||
#, python-format
|
||||
msgid "Edit User %(nick)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3224
|
||||
#: cps/web.py:3219
|
||||
#, python-format
|
||||
msgid "Password for user %s reset"
|
||||
msgid "Password for user %(user)s reset"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3244
|
||||
#: cps/web.py:3239
|
||||
msgid "Error opening eBook. File does not exist or file is not accessible"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3275 cps/web.py:3551 cps/web.py:3556 cps/web.py:3711
|
||||
#: cps/web.py:3270 cps/web.py:3546 cps/web.py:3551 cps/web.py:3706
|
||||
msgid "edit metadata"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3289 cps/web.py:3581
|
||||
#: cps/web.py:3284
|
||||
#, python-format
|
||||
msgid "File extension \"%s\" is not allowed to be uploaded to this server"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3293 cps/web.py:3585
|
||||
#: cps/web.py:3288 cps/web.py:3580
|
||||
msgid "File to be uploaded must have an extension"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3305 cps/web.py:3605
|
||||
#: cps/web.py:3300 cps/web.py:3600
|
||||
#, python-format
|
||||
msgid "Failed to create path %s (Permission denied)."
|
||||
msgid "Failed to create path %(path)s (Permission denied)."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3310
|
||||
#: cps/web.py:3305
|
||||
#, python-format
|
||||
msgid "Failed to store file %s."
|
||||
msgid "Failed to store file %(file)s."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3326
|
||||
#: cps/web.py:3321
|
||||
#, python-format
|
||||
msgid "File format %s added to %s"
|
||||
msgid "File format %(ext)s added to %(book)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3344
|
||||
#: cps/web.py:3339
|
||||
#, python-format
|
||||
msgid "Failed to create path for cover %s (Permission denied)."
|
||||
msgid "Failed to create path for cover %(path)s (Permission denied)."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3351
|
||||
#: cps/web.py:3346
|
||||
#, python-format
|
||||
msgid "Failed to store cover-file %s."
|
||||
msgid "Failed to store cover-file %(cover)s."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3354
|
||||
#: cps/web.py:3349
|
||||
msgid "Cover-file is not a valid image file"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3367 cps/web.py:3371
|
||||
#: cps/web.py:3362 cps/web.py:3366
|
||||
msgid "unknown"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3393
|
||||
#: cps/web.py:3388
|
||||
msgid "Cover is not a jpg file, can't save"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3560
|
||||
#: cps/web.py:3555
|
||||
msgid "Error editing book, please check logfile for details"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3576
|
||||
#, python-format
|
||||
msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3605
|
||||
#, python-format
|
||||
msgid "Failed to store file %(file)s (Permission denied)."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3610
|
||||
#, python-format
|
||||
msgid "Failed to store file %s (Permission denied)."
|
||||
msgid "Failed to delete file %(file)s (Permission denied)."
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3615
|
||||
#: cps/web.py:3692
|
||||
#, python-format
|
||||
msgid "Failed to delete file %s (Permission denied)."
|
||||
msgid "File %(file)s uploaded"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3697
|
||||
#, python-format
|
||||
msgid "File %s uploaded"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3727
|
||||
#: cps/web.py:3722
|
||||
msgid "Source or destination format for conversion missing"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3737
|
||||
#: cps/web.py:3732
|
||||
#, python-format
|
||||
msgid "Book successfully queued for converting to %(book_format)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/web.py:3741
|
||||
#: cps/web.py:3736
|
||||
#, python-format
|
||||
msgid "There was an error converting this book: %(res)s"
|
||||
msgstr ""
|
||||
|
@ -644,11 +643,6 @@ msgstr ""
|
|||
msgid "Started"
|
||||
msgstr ""
|
||||
|
||||
#: cps/worker.py:226
|
||||
#, python-format
|
||||
msgid "E-mail: %stitle"
|
||||
msgstr ""
|
||||
|
||||
#: cps/worker.py:237
|
||||
#, python-format
|
||||
msgid "Convertertool %(converter)s not found"
|
||||
|
@ -656,7 +650,7 @@ msgstr ""
|
|||
|
||||
#: cps/worker.py:272
|
||||
#, python-format
|
||||
msgid "Ebook-converter failed: %s"
|
||||
msgid "Ebook-converter failed: %(error)s"
|
||||
msgstr ""
|
||||
|
||||
#: cps/worker.py:283
|
||||
|
|
Loading…
Reference in New Issue
Block a user