diff --git a/cps/translations/ru/LC_MESSAGES/messages.mo b/cps/translations/ru/LC_MESSAGES/messages.mo index e755d5f8..741ca782 100644 Binary files a/cps/translations/ru/LC_MESSAGES/messages.mo and b/cps/translations/ru/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/ru/LC_MESSAGES/messages.po b/cps/translations/ru/LC_MESSAGES/messages.po index 35a9dbbb..7935838f 100644 --- a/cps/translations/ru/LC_MESSAGES/messages.po +++ b/cps/translations/ru/LC_MESSAGES/messages.po @@ -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: 2018-09-09 17:57+0200\n" +"POT-Creation-Date: 2018-09-14 20:34+0200\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n" "Last-Translator: Pavel Korovin \n" "Language: ru\n" @@ -276,7 +276,7 @@ msgstr "Непрочитанные" msgid "Read a Book" msgstr "Читать книгу" -#: cps/web.py:2141 cps/web.py:3019 +#: cps/web.py:2141 cps/web.py:3024 msgid "Please fill out all fields!" msgstr "Пожалуйста, заполните все поля!" @@ -285,7 +285,7 @@ msgstr "Пожалуйста, заполните все поля!" msgid "register" msgstr "зарегистрироваться" -#: cps/web.py:2162 cps/web.py:3235 +#: cps/web.py:2162 cps/web.py:3240 msgid "An unknown error occurred. Please try again later." msgstr "Неизвестная ошибка. Попробуйте позже." @@ -340,7 +340,7 @@ msgstr "" msgid "There was an error sending this book: %(res)s" msgstr "Ошибка при отправке книги: %(res)s" -#: cps/web.py:2308 cps/web.py:3073 +#: cps/web.py:2308 cps/web.py:3078 msgid "Please configure your kindle e-mail address first..." msgstr "Пожалуйста, сначала настройте e-mail на вашем kindle" @@ -419,266 +419,266 @@ msgstr "Изменить книжную полку" msgid "successfully deleted shelf %(name)s" msgstr "Книжная полка %(name)s удалена" -#: cps/web.py:2551 +#: cps/web.py:2556 #, python-format msgid "Shelf: '%(name)s'" msgstr "Книжная полка: '%(name)s'" -#: cps/web.py:2554 +#: cps/web.py:2559 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "Ошибка открытия книжной полки. Полка не существует или недоступна" -#: cps/web.py:2585 +#: cps/web.py:2590 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "Изменить расположение книжной полки '%(name)s'" -#: cps/web.py:2614 cps/web.py:3025 +#: cps/web.py:2619 cps/web.py:3030 msgid "E-mail is not from valid domain" msgstr "E-mail не из существующей доменной зоны" -#: cps/web.py:2616 cps/web.py:2657 cps/web.py:2660 +#: cps/web.py:2621 cps/web.py:2662 cps/web.py:2665 #, python-format msgid "%(name)s's profile" msgstr "Профиль %(name)s" -#: cps/web.py:2655 +#: cps/web.py:2660 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:2658 +#: cps/web.py:2663 msgid "Profile updated" msgstr "Профиль обновлён" -#: cps/web.py:2670 +#: cps/web.py:2675 msgid "Unknown" msgstr "Неизвестно" -#: cps/web.py:2684 +#: cps/web.py:2689 msgid "Admin page" msgstr "Администрирование" -#: cps/web.py:2762 cps/web.py:2935 +#: cps/web.py:2767 cps/web.py:2940 msgid "Calibre-Web configuration updated" msgstr "Конфигурация Calibre-Web обновлена" -#: cps/templates/admin.html:91 cps/web.py:2775 +#: cps/templates/admin.html:91 cps/web.py:2780 msgid "UI Configuration" msgstr "Настройка интерфейса" -#: cps/web.py:2793 +#: cps/web.py:2798 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2796 +#: cps/web.py:2801 msgid "client_secrets.json is missing or not readable" msgstr "client_secrets.json отсутствует или его невозможно прочесть" -#: cps/web.py:2801 cps/web.py:2828 +#: cps/web.py:2806 cps/web.py:2833 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:90 cps/web.py:2831 cps/web.py:2857 cps/web.py:2869 -#: cps/web.py:2911 cps/web.py:2926 cps/web.py:2943 cps/web.py:2950 -#: cps/web.py:2967 +#: cps/templates/admin.html:90 cps/web.py:2836 cps/web.py:2862 cps/web.py:2874 +#: cps/web.py:2916 cps/web.py:2931 cps/web.py:2948 cps/web.py:2955 +#: cps/web.py:2972 msgid "Basic Configuration" msgstr "Настройки сервера" -#: cps/web.py:2854 +#: cps/web.py:2859 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2866 +#: cps/web.py:2871 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2908 +#: cps/web.py:2913 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2947 +#: cps/web.py:2952 msgid "DB location is not valid, please enter correct path" msgstr "Неверный путь к фалу БД, пожалуйста, укажите правильное расположение БД" -#: cps/templates/admin.html:31 cps/web.py:3021 cps/web.py:3027 cps/web.py:3043 +#: cps/templates/admin.html:31 cps/web.py:3026 cps/web.py:3032 cps/web.py:3048 msgid "Add new user" msgstr "Добавить пользователя" -#: cps/web.py:3033 +#: cps/web.py:3038 #, python-format msgid "User '%(user)s' created" msgstr "Пользователь '%(user)s' добавлен" -#: cps/web.py:3037 +#: cps/web.py:3042 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/web.py:3061 cps/web.py:3075 +#: cps/web.py:3066 cps/web.py:3080 msgid "E-mail server settings updated" msgstr "Настройки E-mail сервера обновлены" -#: cps/web.py:3068 +#: cps/web.py:3073 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:3071 +#: cps/web.py:3076 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/web.py:3076 +#: cps/web.py:3081 msgid "Edit e-mail server settings" msgstr "Изменить настройки e-mail сервера" -#: cps/web.py:3101 +#: cps/web.py:3106 #, python-format msgid "User '%(nick)s' deleted" msgstr "Пользователь '%(nick)s' удалён" -#: cps/web.py:3210 +#: cps/web.py:3215 #, python-format msgid "User '%(nick)s' updated" msgstr "Пользователь '%(nick)s' обновлён" -#: cps/web.py:3213 +#: cps/web.py:3218 msgid "An unknown error occured." msgstr "Произошла неизвестная ошибка." -#: cps/web.py:3215 +#: cps/web.py:3220 #, python-format msgid "Edit User %(nick)s" msgstr "Изменить пользователя %(nick)s" -#: cps/web.py:3232 +#: cps/web.py:3237 #, python-format msgid "Password for user %(user)s reset" msgstr "Пароль для пользователя %(user)s сброшен" -#: cps/web.py:3252 +#: cps/web.py:3257 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3279 cps/web.py:3555 cps/web.py:3560 cps/web.py:3715 +#: cps/web.py:3285 cps/web.py:3562 cps/web.py:3567 cps/web.py:3722 msgid "edit metadata" msgstr "изменить метаданные" -#: cps/web.py:3289 cps/web.py:3585 +#: cps/web.py:3296 cps/web.py:3592 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "Запрещена загрузка файлов с расширением '%(ext)s'" -#: cps/web.py:3293 cps/web.py:3589 +#: cps/web.py:3300 cps/web.py:3596 msgid "File to be uploaded must have an extension" msgstr "Загружаемый файл должен иметь расширение" -#: cps/web.py:3305 cps/web.py:3609 +#: cps/web.py:3312 cps/web.py:3616 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "Ошибка при создании пути %(path)s (доступ запрещён)" -#: cps/web.py:3310 +#: cps/web.py:3317 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/web.py:3326 +#: cps/web.py:3333 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/web.py:3343 +#: cps/web.py:3350 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3350 +#: cps/web.py:3357 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "" -#: cps/web.py:3353 +#: cps/web.py:3360 msgid "Cover-file is not a valid image file" msgstr "Файл обложки не соответствует изображению" -#: cps/web.py:3370 cps/web.py:3374 +#: cps/web.py:3377 cps/web.py:3381 msgid "unknown" msgstr "неизвестно" -#: cps/web.py:3396 +#: cps/web.py:3403 msgid "Cover is not a jpg file, can't save" msgstr "Обложка не jpg файл, невозможно сохранить" -#: cps/web.py:3442 +#: cps/web.py:3449 #, python-format msgid "%(langname)s is not a valid language" msgstr "" -#: cps/web.py:3564 +#: cps/web.py:3571 msgid "Error editing book, please check logfile for details" msgstr "Ошибка редактирования книги. Пожалуйста, проверьте лог-файл для дополнительной информации" -#: cps/web.py:3614 +#: cps/web.py:3621 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "Ошибка записи файоа %(file)s (доступ запрещён)" -#: cps/web.py:3619 +#: cps/web.py:3626 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "Ошибка удаления файла %(file)s (доступ запрещён)" -#: cps/web.py:3701 +#: cps/web.py:3708 #, python-format msgid "File %(file)s uploaded" msgstr "Файл %(file)s загружен" -#: cps/web.py:3731 +#: cps/web.py:3738 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/web.py:3741 +#: cps/web.py:3748 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/web.py:3745 +#: cps/web.py:3752 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/worker.py:215 cps/worker.py:387 +#: cps/worker.py:215 cps/worker.py:398 msgid "Started" msgstr "Начало" -#: cps/worker.py:237 +#: cps/worker.py:251 #, python-format msgid "Convertertool %(converter)s not found" msgstr "" -#: cps/worker.py:272 +#: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "" -#: cps/worker.py:283 +#: cps/worker.py:298 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "" -#: cps/worker.py:317 cps/worker.py:377 cps/worker.py:438 -msgid "Finished" -msgstr "Закончено" - -#: cps/worker.py:344 cps/worker.py:363 +#: cps/worker.py:355 cps/worker.py:374 msgid "Waiting" msgstr "Ожидание" -#: cps/worker.py:351 +#: cps/worker.py:362 msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/worker.py:472 +#: cps/worker.py:388 cps/worker.py:484 +msgid "Finished" +msgstr "Закончено" + +#: cps/worker.py:476 msgid "Failed" msgstr "Неудачно" @@ -692,7 +692,7 @@ msgstr "Имя пользователя" #: cps/templates/admin.html:8 msgid "E-mail" -msgstr "" +msgstr "Почта" #: cps/templates/admin.html:9 msgid "Kindle" @@ -1837,35 +1837,6 @@ msgstr "Удалить этого пользователя" msgid "Recent Downloads" msgstr "Недавние скачивания" -#~ msgid "%s: %s" -#~ msgstr "%s: %s" - -#~ msgid "E-Mail: %s" +#~ msgid "E-mail: %s" #~ msgstr "Почта: %s" -#~ msgid "Rename title from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -#~ msgstr "" - -#~ msgid "Rename author from: '%(src)s' to '%(dest)s' failed with error: %(error)s" -#~ msgstr "" - -#~ msgid "Password for user %(user)s reset" -#~ msgstr "Пароль для пользователя %(user)s сброшен" - -#~ msgid "Password for user %s reset" -#~ msgstr "Пароль для пользователя %s сброшен" - -#~ msgid "Rename title from: '%(src)s' to '%(src)s' failed with error: %(error)s" -#~ msgstr "" - -#~ msgid "Rename author from: '%(src)s' to '%(src)s' failed with error: %(error)s" -#~ msgstr "" - -#~ msgid "Failed to create path for cover %(cover)s (Permission denied)." -#~ msgstr "" - -#~ msgid "File extension '%s' is not allowed to be uploaded to this server" -#~ msgstr "" - -#~ msgid "File extension \"%(ext)s\" is not allowed to be uploaded to this server" -#~ msgstr "Запрещена загрузка файлов с расширением \"%(ext)s\"" diff --git a/cps/worker.py b/cps/worker.py index a842c1de..0eca51c1 100644 --- a/cps/worker.py +++ b/cps/worker.py @@ -232,10 +232,25 @@ class WorkerThread(threading.Thread): bookid = self.queue[self.current]['bookid'] format_old_ext = u'.' + self.queue[self.current]['settings']['old_book_format'].lower() format_new_ext = u'.' + self.queue[self.current]['settings']['new_book_format'].lower() + + # check to see if destination format already exists - + # if it does - mark the conversion task as complete and return a success + # this will allow send to kindle workflow to continue to work + if os.path.isfile(file_path + format_new_ext): + web.app.logger.info("Book id %d already converted to %s", bookid, format_new_ext) + cur_book = web.db.session.query(web.db.Books).filter(web.db.Books.id == bookid).first() + self.queue[self.current]['path'] = file_path + self.queue[self.current]['title'] = cur_book.title + self._handleSuccess() + return file_path + format_new_ext + else: + web.app.logger.info("Book id %d - target format of %s does not existing. Moving forward with convert.", bookid, format_new_ext) + # check if converter-executable is existing if not os.path.exists(web.ub.config.config_converterpath): self._handleError(_(u"Convertertool %(converter)s not found", converter=web.ub.config.config_converterpath)) return + try: # check which converter to use kindlegen is "1" if format_old_ext == '.epub' and format_new_ext == '.mobi': @@ -313,11 +328,7 @@ class WorkerThread(threading.Thread): self.queue[self.current]['title'] = cur_book.title if web.ub.config.config_use_google_drive: os.remove(file_path + format_old_ext) - self.queue[self.current]['status'] = STAT_FINISH_SUCCESS - self.UIqueue[self.current]['status'] = _('Finished') - self.UIqueue[self.current]['progress'] = "100 %" - self.UIqueue[self.current]['runtime'] = self._formatRuntime( - datetime.now() - self.queue[self.current]['starttime']) + self._handleSuccess() return file_path + format_new_ext else: error_message = format_new_ext.upper() + ' format not found on disk' @@ -434,12 +445,7 @@ class WorkerThread(threading.Thread): self.asyncSMTP.login(str(obj['settings']["mail_login"]), str(obj['settings']["mail_password"])) self.asyncSMTP.sendmail(obj['settings']["mail_from"], obj['recipent'], msg) self.asyncSMTP.quit() - self.queue[self.current]['status'] = STAT_FINISH_SUCCESS - self.UIqueue[self.current]['status'] = _('Finished') - self.UIqueue[self.current]['progress'] = "100 %" - self.UIqueue[self.current]['runtime'] = self._formatRuntime( - datetime.now() - self.queue[self.current]['starttime']) - + self._handleSuccess() sys.stderr = org_stderr except (MemoryError) as e: @@ -452,8 +458,6 @@ class WorkerThread(threading.Thread): self._handleError(u'Error sending email: ' + e.strerror) return None - - def _formatRuntime(self, runtime): self.UIqueue[self.current]['rt'] = runtime.total_seconds() val = re.split('\:|\.', str(runtime))[0:3] @@ -475,6 +479,12 @@ class WorkerThread(threading.Thread): datetime.now() - self.queue[self.current]['starttime']) self.UIqueue[self.current]['message'] = error_message + def _handleSuccess(self): + self.queue[self.current]['status'] = STAT_FINISH_SUCCESS + self.UIqueue[self.current]['status'] = _('Finished') + self.UIqueue[self.current]['progress'] = "100 %" + self.UIqueue[self.current]['runtime'] = self._formatRuntime( + datetime.now() - self.queue[self.current]['starttime']) class StderrLogger(object): diff --git a/messages.pot b/messages.pot index da8c5cc9..f4b802fb 100644 --- a/messages.pot +++ b/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-08 20:58+0200\n" +"POT-Creation-Date: 2018-09-14 20:34+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -113,559 +113,564 @@ msgstr "" msgid "Unrar binary file not found" msgstr "" -#: cps/web.py:1117 +#: cps/web.py:1127 msgid "Requesting update package" msgstr "" -#: cps/web.py:1118 +#: cps/web.py:1128 msgid "Downloading update package" msgstr "" -#: cps/web.py:1119 +#: cps/web.py:1129 msgid "Unzipping update package" msgstr "" -#: cps/web.py:1120 +#: cps/web.py:1130 msgid "Files are replaced" msgstr "" -#: cps/web.py:1121 +#: cps/web.py:1131 msgid "Database connections are closed" msgstr "" -#: cps/web.py:1122 +#: cps/web.py:1132 msgid "Server is stopped" msgstr "" -#: cps/web.py:1123 +#: cps/web.py:1133 msgid "Update finished, please press okay and reload page" msgstr "" -#: cps/web.py:1143 +#: cps/web.py:1153 msgid "Recently Added Books" msgstr "" -#: cps/web.py:1153 +#: cps/web.py:1163 msgid "Newest Books" msgstr "" -#: cps/web.py:1165 +#: cps/web.py:1175 msgid "Oldest Books" msgstr "" -#: cps/web.py:1177 +#: cps/web.py:1187 msgid "Books (A-Z)" msgstr "" -#: cps/web.py:1188 +#: cps/web.py:1198 msgid "Books (Z-A)" msgstr "" -#: cps/web.py:1217 +#: cps/web.py:1227 msgid "Hot Books (most downloaded)" msgstr "" -#: cps/web.py:1230 +#: cps/web.py:1240 msgid "Best rated books" msgstr "" -#: cps/templates/index.xml:36 cps/web.py:1242 +#: cps/templates/index.xml:36 cps/web.py:1252 msgid "Random Books" msgstr "" -#: cps/web.py:1257 +#: cps/web.py:1267 msgid "Author list" msgstr "" -#: cps/web.py:1269 cps/web.py:1332 cps/web.py:1487 cps/web.py:2039 +#: cps/web.py:1279 cps/web.py:1342 cps/web.py:1497 cps/web.py:2049 msgid "Error opening eBook. File does not exist or file is not accessible:" msgstr "" -#: cps/templates/index.xml:73 cps/web.py:1316 +#: cps/templates/index.xml:73 cps/web.py:1326 msgid "Series list" msgstr "" -#: cps/web.py:1330 +#: cps/web.py:1340 #, python-format msgid "Series: %(serie)s" msgstr "" -#: cps/web.py:1357 +#: cps/web.py:1367 msgid "Available languages" msgstr "" -#: cps/web.py:1374 +#: cps/web.py:1384 #, python-format msgid "Language: %(name)s" msgstr "" -#: cps/templates/index.xml:66 cps/web.py:1385 +#: cps/templates/index.xml:66 cps/web.py:1395 msgid "Category list" msgstr "" -#: cps/web.py:1399 +#: cps/web.py:1409 #, python-format msgid "Category: %(name)s" msgstr "" -#: cps/templates/layout.html:71 cps/web.py:1538 +#: cps/templates/layout.html:71 cps/web.py:1548 msgid "Tasks" msgstr "" -#: cps/web.py:1568 +#: cps/web.py:1578 msgid "Statistics" msgstr "" -#: cps/web.py:1673 +#: cps/web.py:1683 msgid "Callback domain is not verified, please follow steps to verify domain in google developer console" msgstr "" -#: cps/web.py:1748 +#: cps/web.py:1758 msgid "Server restarted, please reload page" msgstr "" -#: cps/web.py:1751 +#: cps/web.py:1761 msgid "Performing shutdown of server, please close window" msgstr "" -#: cps/web.py:1770 +#: cps/web.py:1780 msgid "Update done" msgstr "" -#: cps/web.py:1840 +#: cps/web.py:1850 msgid "Published after " msgstr "" -#: cps/web.py:1847 +#: cps/web.py:1857 msgid "Published before " msgstr "" -#: cps/web.py:1861 +#: cps/web.py:1871 #, python-format msgid "Rating <= %(rating)s" msgstr "" -#: cps/web.py:1863 +#: cps/web.py:1873 #, python-format msgid "Rating >= %(rating)s" msgstr "" -#: cps/web.py:1922 cps/web.py:1931 +#: cps/web.py:1932 cps/web.py:1941 msgid "search" msgstr "" #: cps/templates/index.xml:44 cps/templates/index.xml:48 -#: cps/templates/layout.html:146 cps/web.py:1998 +#: cps/templates/layout.html:146 cps/web.py:2008 msgid "Read Books" msgstr "" #: cps/templates/index.xml:52 cps/templates/index.xml:56 -#: cps/templates/layout.html:148 cps/web.py:2001 +#: cps/templates/layout.html:148 cps/web.py:2011 msgid "Unread Books" msgstr "" -#: cps/web.py:2049 cps/web.py:2051 cps/web.py:2053 cps/web.py:2065 +#: cps/web.py:2059 cps/web.py:2061 cps/web.py:2063 cps/web.py:2075 msgid "Read a Book" msgstr "" -#: cps/web.py:2131 cps/web.py:3009 +#: cps/web.py:2141 cps/web.py:3024 msgid "Please fill out all fields!" msgstr "" -#: cps/web.py:2132 cps/web.py:2153 cps/web.py:2157 cps/web.py:2162 -#: cps/web.py:2164 +#: cps/web.py:2142 cps/web.py:2163 cps/web.py:2167 cps/web.py:2172 +#: cps/web.py:2174 msgid "register" msgstr "" -#: cps/web.py:2152 cps/web.py:3225 +#: cps/web.py:2162 cps/web.py:3240 msgid "An unknown error occurred. Please try again later." msgstr "" -#: cps/web.py:2155 +#: cps/web.py:2165 msgid "Your e-mail is not allowed to register" msgstr "" -#: cps/web.py:2158 +#: cps/web.py:2168 msgid "Confirmation e-mail was send to your e-mail account." msgstr "" -#: cps/web.py:2161 +#: cps/web.py:2171 msgid "This username or e-mail address is already in use." msgstr "" -#: cps/web.py:2178 cps/web.py:2274 +#: cps/web.py:2188 cps/web.py:2284 #, python-format msgid "you are now logged in as: '%(nickname)s'" msgstr "" -#: cps/web.py:2183 +#: cps/web.py:2193 msgid "Wrong Username or Password" msgstr "" -#: cps/web.py:2189 cps/web.py:2210 +#: cps/web.py:2199 cps/web.py:2220 msgid "login" msgstr "" -#: cps/web.py:2222 cps/web.py:2253 +#: cps/web.py:2232 cps/web.py:2263 msgid "Token not found" msgstr "" -#: cps/web.py:2230 cps/web.py:2261 +#: cps/web.py:2240 cps/web.py:2271 msgid "Token has expired" msgstr "" -#: cps/web.py:2238 +#: cps/web.py:2248 msgid "Success! Please return to your device" msgstr "" -#: cps/web.py:2288 +#: cps/web.py:2298 msgid "Please configure the SMTP mail settings first..." msgstr "" -#: cps/web.py:2292 +#: cps/web.py:2302 #, python-format msgid "Book successfully queued for sending to %(kindlemail)s" msgstr "" -#: cps/web.py:2296 +#: cps/web.py:2306 #, python-format msgid "There was an error sending this book: %(res)s" msgstr "" -#: cps/web.py:2298 cps/web.py:3063 +#: cps/web.py:2308 cps/web.py:3078 msgid "Please configure your kindle e-mail address first..." msgstr "" -#: cps/web.py:2342 +#: cps/web.py:2352 #, python-format msgid "Book has been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2353 +#: cps/web.py:2363 msgid "Invalid shelf specified" msgstr "" -#: cps/web.py:2358 +#: cps/web.py:2368 #, python-format msgid "You are not allowed to add a book to the the shelf: %(name)s" msgstr "" -#: cps/web.py:2363 +#: cps/web.py:2373 msgid "User is not allowed to edit public shelves" msgstr "" -#: cps/web.py:2381 +#: cps/web.py:2391 #, python-format msgid "Books are already part of the shelf: %(name)s" msgstr "" -#: cps/web.py:2395 +#: cps/web.py:2405 #, python-format msgid "Books have been added to shelf: %(sname)s" msgstr "" -#: cps/web.py:2397 +#: cps/web.py:2407 #, python-format msgid "Could not add books to shelf: %(sname)s" msgstr "" -#: cps/web.py:2434 +#: cps/web.py:2444 #, python-format msgid "Book has been removed from shelf: %(sname)s" msgstr "" -#: cps/web.py:2440 +#: cps/web.py:2450 #, python-format msgid "Sorry you are not allowed to remove a book from this shelf: %(sname)s" msgstr "" -#: cps/web.py:2460 cps/web.py:2484 +#: cps/web.py:2470 cps/web.py:2494 #, python-format msgid "A shelf with the name '%(title)s' already exists." msgstr "" -#: cps/web.py:2465 +#: cps/web.py:2475 #, python-format msgid "Shelf %(title)s created" msgstr "" -#: cps/web.py:2467 cps/web.py:2495 +#: cps/web.py:2477 cps/web.py:2505 msgid "There was an error" msgstr "" -#: cps/web.py:2468 cps/web.py:2470 +#: cps/web.py:2478 cps/web.py:2480 msgid "create a shelf" msgstr "" -#: cps/web.py:2493 +#: cps/web.py:2503 #, python-format msgid "Shelf %(title)s changed" msgstr "" -#: cps/web.py:2496 cps/web.py:2498 +#: cps/web.py:2506 cps/web.py:2508 msgid "Edit a shelf" msgstr "" -#: cps/web.py:2519 +#: cps/web.py:2529 #, python-format msgid "successfully deleted shelf %(name)s" msgstr "" -#: cps/web.py:2541 +#: cps/web.py:2556 #, python-format msgid "Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2544 +#: cps/web.py:2559 msgid "Error opening shelf. Shelf does not exist or is not accessible" msgstr "" -#: cps/web.py:2575 +#: cps/web.py:2590 #, python-format msgid "Change order of Shelf: '%(name)s'" msgstr "" -#: cps/web.py:2604 cps/web.py:3015 +#: cps/web.py:2619 cps/web.py:3030 msgid "E-mail is not from valid domain" msgstr "" -#: cps/web.py:2606 cps/web.py:2647 cps/web.py:2650 +#: cps/web.py:2621 cps/web.py:2662 cps/web.py:2665 #, python-format msgid "%(name)s's profile" msgstr "" -#: cps/web.py:2645 +#: cps/web.py:2660 msgid "Found an existing account for this e-mail address." msgstr "" -#: cps/web.py:2648 +#: cps/web.py:2663 msgid "Profile updated" msgstr "" -#: cps/web.py:2660 +#: cps/web.py:2675 msgid "Unknown" msgstr "" -#: cps/web.py:2674 +#: cps/web.py:2689 msgid "Admin page" msgstr "" -#: cps/web.py:2752 cps/web.py:2925 +#: cps/web.py:2767 cps/web.py:2940 msgid "Calibre-Web configuration updated" msgstr "" -#: cps/templates/admin.html:91 cps/web.py:2765 +#: cps/templates/admin.html:91 cps/web.py:2780 msgid "UI Configuration" msgstr "" -#: cps/web.py:2783 +#: cps/web.py:2798 msgid "Import of optional Google Drive requirements missing" msgstr "" -#: cps/web.py:2786 +#: cps/web.py:2801 msgid "client_secrets.json is missing or not readable" msgstr "" -#: cps/web.py:2791 cps/web.py:2818 +#: cps/web.py:2806 cps/web.py:2833 msgid "client_secrets.json is not configured for web application" msgstr "" -#: cps/templates/admin.html:90 cps/web.py:2821 cps/web.py:2847 cps/web.py:2859 -#: cps/web.py:2901 cps/web.py:2916 cps/web.py:2933 cps/web.py:2940 -#: cps/web.py:2957 +#: cps/templates/admin.html:90 cps/web.py:2836 cps/web.py:2862 cps/web.py:2874 +#: cps/web.py:2916 cps/web.py:2931 cps/web.py:2948 cps/web.py:2955 +#: cps/web.py:2972 msgid "Basic Configuration" msgstr "" -#: cps/web.py:2844 +#: cps/web.py:2859 msgid "Keyfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2856 +#: cps/web.py:2871 msgid "Certfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2898 +#: cps/web.py:2913 msgid "Logfile location is not valid, please enter correct path" msgstr "" -#: cps/web.py:2937 +#: cps/web.py:2952 msgid "DB location is not valid, please enter correct path" msgstr "" -#: cps/templates/admin.html:31 cps/web.py:3011 cps/web.py:3017 cps/web.py:3033 +#: cps/templates/admin.html:31 cps/web.py:3026 cps/web.py:3032 cps/web.py:3048 msgid "Add new user" msgstr "" -#: cps/web.py:3023 +#: cps/web.py:3038 #, python-format msgid "User '%(user)s' created" msgstr "" -#: cps/web.py:3027 +#: cps/web.py:3042 msgid "Found an existing account for this e-mail address or nickname." msgstr "" -#: cps/web.py:3051 cps/web.py:3065 +#: cps/web.py:3066 cps/web.py:3080 msgid "E-mail server settings updated" msgstr "" -#: cps/web.py:3058 +#: cps/web.py:3073 #, python-format msgid "Test e-mail successfully send to %(kindlemail)s" msgstr "" -#: cps/web.py:3061 +#: cps/web.py:3076 #, python-format msgid "There was an error sending the Test e-mail: %(res)s" msgstr "" -#: cps/web.py:3066 +#: cps/web.py:3081 msgid "Edit e-mail server settings" msgstr "" -#: cps/web.py:3091 +#: cps/web.py:3106 #, python-format msgid "User '%(nick)s' deleted" msgstr "" -#: cps/web.py:3200 +#: cps/web.py:3215 #, python-format msgid "User '%(nick)s' updated" msgstr "" -#: cps/web.py:3203 +#: cps/web.py:3218 msgid "An unknown error occured." msgstr "" -#: cps/web.py:3205 +#: cps/web.py:3220 #, python-format msgid "Edit User %(nick)s" msgstr "" -#: cps/web.py:3222 +#: cps/web.py:3237 #, python-format msgid "Password for user %(user)s reset" msgstr "" -#: cps/web.py:3242 +#: cps/web.py:3257 msgid "Error opening eBook. File does not exist or file is not accessible" msgstr "" -#: cps/web.py:3273 cps/web.py:3549 cps/web.py:3554 cps/web.py:3709 +#: cps/web.py:3285 cps/web.py:3562 cps/web.py:3567 cps/web.py:3722 msgid "edit metadata" msgstr "" -#: cps/web.py:3287 cps/web.py:3579 +#: cps/web.py:3296 cps/web.py:3592 #, python-format msgid "File extension '%(ext)s' is not allowed to be uploaded to this server" msgstr "" -#: cps/web.py:3291 cps/web.py:3583 +#: cps/web.py:3300 cps/web.py:3596 msgid "File to be uploaded must have an extension" msgstr "" -#: cps/web.py:3303 cps/web.py:3603 +#: cps/web.py:3312 cps/web.py:3616 #, python-format msgid "Failed to create path %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3308 +#: cps/web.py:3317 #, python-format msgid "Failed to store file %(file)s." msgstr "" -#: cps/web.py:3324 +#: cps/web.py:3333 #, python-format msgid "File format %(ext)s added to %(book)s" msgstr "" -#: cps/web.py:3342 +#: cps/web.py:3350 #, python-format msgid "Failed to create path for cover %(path)s (Permission denied)." msgstr "" -#: cps/web.py:3349 +#: cps/web.py:3357 #, python-format msgid "Failed to store cover-file %(cover)s." msgstr "" -#: cps/web.py:3352 +#: cps/web.py:3360 msgid "Cover-file is not a valid image file" msgstr "" -#: cps/web.py:3365 cps/web.py:3369 +#: cps/web.py:3377 cps/web.py:3381 msgid "unknown" msgstr "" -#: cps/web.py:3391 +#: cps/web.py:3403 msgid "Cover is not a jpg file, can't save" msgstr "" -#: cps/web.py:3558 +#: cps/web.py:3449 +#, python-format +msgid "%(langname)s is not a valid language" +msgstr "" + +#: cps/web.py:3571 msgid "Error editing book, please check logfile for details" msgstr "" -#: cps/web.py:3608 +#: cps/web.py:3621 #, python-format msgid "Failed to store file %(file)s (Permission denied)." msgstr "" -#: cps/web.py:3613 +#: cps/web.py:3626 #, python-format msgid "Failed to delete file %(file)s (Permission denied)." msgstr "" -#: cps/web.py:3695 +#: cps/web.py:3708 #, python-format msgid "File %(file)s uploaded" msgstr "" -#: cps/web.py:3725 +#: cps/web.py:3738 msgid "Source or destination format for conversion missing" msgstr "" -#: cps/web.py:3735 +#: cps/web.py:3748 #, python-format msgid "Book successfully queued for converting to %(book_format)s" msgstr "" -#: cps/web.py:3739 +#: cps/web.py:3752 #, python-format msgid "There was an error converting this book: %(res)s" msgstr "" -#: cps/worker.py:215 cps/worker.py:387 +#: cps/worker.py:215 cps/worker.py:398 msgid "Started" msgstr "" -#: cps/worker.py:237 +#: cps/worker.py:251 #, python-format msgid "Convertertool %(converter)s not found" msgstr "" -#: cps/worker.py:272 +#: cps/worker.py:287 #, python-format msgid "Ebook-converter failed: %(error)s" msgstr "" -#: cps/worker.py:283 +#: cps/worker.py:298 #, python-format msgid "Kindlegen failed with Error %(error)s. Message: %(message)s" msgstr "" -#: cps/worker.py:317 cps/worker.py:377 cps/worker.py:438 -msgid "Finished" -msgstr "" - -#: cps/worker.py:344 cps/worker.py:363 +#: cps/worker.py:355 cps/worker.py:374 msgid "Waiting" msgstr "" -#: cps/worker.py:351 +#: cps/worker.py:362 msgid "This e-mail has been sent via Calibre-Web." msgstr "" -#: cps/worker.py:472 +#: cps/worker.py:388 cps/worker.py:484 +msgid "Finished" +msgstr "" + +#: cps/worker.py:476 msgid "Failed" msgstr ""