diff --git a/cps/__init__.py b/cps/__init__.py index 890d5867d..ddd5de65c 100644 --- a/cps/__init__.py +++ b/cps/__init__.py @@ -25,7 +25,7 @@ import sys import os import mimetypes -from flask import Flask, request +from flask import Flask from flask.sessions import SecureCookieSessionInterface from .MyLoginManager import MyLoginManager from flask_principal import Principal @@ -111,7 +111,8 @@ web_server = WebServer() updater_thread = Updater() if limiter_present: - limiter = Limiter(key_func=True, headers_enabled=True, auto_check=False, swallow_errors=False) + limiter = Limiter(key_func=True, headers_enabled=True, in_memory_fallback_enabled=True, default_limits=[], + swallow_errors=True) else: limiter = None diff --git a/cps/error_handler.py b/cps/error_handler.py index 54942ec22..3bc885dd3 100644 --- a/cps/error_handler.py +++ b/cps/error_handler.py @@ -18,7 +18,9 @@ import traceback -from flask import render_template +from flask import render_template, request, flash, make_response +from flask_limiter import RateLimitExceeded +from flask_babel import gettext as _ from werkzeug.exceptions import default_exceptions try: from werkzeug.exceptions import FailedDependency @@ -26,7 +28,10 @@ except ImportError: from werkzeug.exceptions import UnprocessableEntity as FailedDependency from . import config, app, logger, services - +from .render_template import render_title_template +from .web import render_login +from .usermanagement import auth +from cps.string_helper import strip_whitespaces log = logger.create() @@ -85,3 +90,21 @@ def init_errorhandler(): log.debug('LDAP server not accessible while trying to login to opds feed') return error_http(FailedDependency()) + +@app.errorhandler(RateLimitExceeded) +def handle_rate_limit(__): + log.error("Rate limit exceeded {}".format(request.endpoint)) + if "register" in request.endpoint: + flash(_(u"Please wait one minute to register next user"), category="error") + return render_title_template('register.html', config=config, title=_("Register"), page="register") + elif "login" in request.endpoint: + form = request.form.to_dict() + username = strip_whitespaces(form.get('username', "")).lower().replace("\n", "").replace("\r", "") + flash(_("Please wait one minute before next login"), category="error") + return render_login(username, form.get("password", "")) + elif "opds" in request.endpoint: + return auth.auth_error_callback(429) + else: + return make_response('', 429) + + diff --git a/cps/kobo.py b/cps/kobo.py index da9c9bc55..688c11f0d 100644 --- a/cps/kobo.py +++ b/cps/kobo.py @@ -25,6 +25,7 @@ import zipfile from time import gmtime, strftime import json from urllib.parse import unquote +import requests from flask import ( Blueprint, @@ -41,10 +42,9 @@ from werkzeug.datastructures import Headers from sqlalchemy import func from sqlalchemy.sql.expression import and_, or_ from sqlalchemy.exc import StatementError -import requests from . import config, logger, kobo_auth, db, calibre_db, helper, shelf as shelf_lib, ub, csrf, kobo_sync_status -from . import isoLanguages +from . import isoLanguages, limiter from .epub import get_epub_layout from .constants import COVER_THUMBNAIL_SMALL, COVER_THUMBNAIL_MEDIUM, COVER_THUMBNAIL_LARGE, BASE_DIR from .helper import get_download_link @@ -140,7 +140,7 @@ def convert_to_kobo_timestamp_string(timestamp): @kobo.route("/v1/library/sync") @requires_kobo_auth -# @download_required +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleSyncRequest(): if not current_user.role_download(): log.info("Users need download permissions for syncing library to Kobo reader") @@ -336,6 +336,7 @@ def generate_sync_response(sync_token, sync_results, set_cont=False): @kobo.route("/v1/library//metadata") @requires_kobo_auth @download_required +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleMetadataRequest(book_uuid): if not current_app.wsgi_app.is_proxied: log.debug('Kobo: Received unproxied request, changed request port to external server port') @@ -368,7 +369,7 @@ def get_download_url_for_book(book_id, book_format): ) return url_for( "kobo.download_book", - auth_token=kobo_auth.get_auth_token(), + auth_token=get_auth_token(), book_id=book_id, book_format=book_format.lower(), _external=True, @@ -503,9 +504,11 @@ def get_metadata(book): return metadata + @csrf.exempt @kobo.route("/v1/library/tags", methods=["POST", "DELETE"]) @requires_kobo_auth +# @limiter.limit("3/minute", key_func=get_remote_address) # Creates a Shelf with the given items, and returns the shelf's uuid. def HandleTagCreate(): # catch delete requests, otherwise they are handled in the book delete handler @@ -541,6 +544,7 @@ def HandleTagCreate(): @csrf.exempt @kobo.route("/v1/library/tags/", methods=["DELETE", "PUT"]) @requires_kobo_auth +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleTagUpdate(tag_id): shelf = ub.session.query(ub.Shelf).filter(ub.Shelf.uuid == tag_id, ub.Shelf.user_id == current_user.id).one_or_none() @@ -595,6 +599,7 @@ def add_items_to_shelf(items, shelf): @csrf.exempt @kobo.route("/v1/library/tags//items", methods=["POST"]) @requires_kobo_auth +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleTagAddItem(tag_id): items = None try: @@ -625,6 +630,7 @@ def HandleTagAddItem(tag_id): @csrf.exempt @kobo.route("/v1/library/tags//items/delete", methods=["POST"]) @requires_kobo_auth +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleTagRemoveItem(tag_id): items = None try: @@ -758,6 +764,7 @@ def create_kobo_tag(shelf): @csrf.exempt @kobo.route("/v1/library//state", methods=["GET", "PUT"]) @requires_kobo_auth +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleStateRequest(book_uuid): book = calibre_db.get_book_by_uuid(book_uuid) if not book or not book.data: @@ -907,6 +914,7 @@ def get_current_bookmark_response(current_bookmark): @kobo.route("/////image.jpg", defaults={'Quality': ""}) @kobo.route("//////image.jpg") @requires_kobo_auth +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleCoverImageRequest(book_uuid, width, height, Quality, isGreyscale): try: if int(height) > 1000: @@ -943,6 +951,7 @@ def TopLevelEndpoint(): @csrf.exempt @kobo.route("/v1/library/", methods=["DELETE"]) @requires_kobo_auth +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleBookDeletionRequest(book_uuid): log.info("Kobo book delete request received for book %s" % book_uuid) book = calibre_db.get_book_by_uuid(book_uuid) @@ -962,6 +971,7 @@ def HandleBookDeletionRequest(book_uuid): @kobo.route("/v1/library/", methods=["DELETE", "GET", "POST"]) @kobo.route("/v1/library//preview", methods=["POST"]) def HandleUnimplementedRequest(dummy=None): + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] log.debug("Unimplemented Library Request received: %s (request is forwarded to kobo if configured)", request.base_url) return redirect_or_proxy_request() @@ -976,6 +986,9 @@ def HandleUnimplementedRequest(dummy=None): @kobo.route("/v1/analytics/", methods=["GET", "POST"]) @kobo.route("/v1/assets", methods=["GET"]) def HandleUserRequest(dummy=None): + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] + log.error("Key: {}".format(limiter.current_limit.key)) + log.error("Remaining: {}".format(limiter.current_limit.remaining)) log.debug("Unimplemented User Request received: %s (request is forwarded to kobo if configured)", request.base_url) return redirect_or_proxy_request() @@ -983,6 +996,7 @@ def HandleUserRequest(dummy=None): @csrf.exempt @kobo.route("/v1/user/loyalty/benefits", methods=["GET"]) def handle_benefits(): + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] if config.config_kobo_proxy: return redirect_or_proxy_request() else: @@ -992,6 +1006,7 @@ def handle_benefits(): @csrf.exempt @kobo.route("/v1/analytics/gettests", methods=["GET", "POST"]) def handle_getests(): + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] if config.config_kobo_proxy: return redirect_or_proxy_request() else: @@ -1018,6 +1033,7 @@ def handle_getests(): @kobo.route("/v1/affiliate", methods=["GET", "POST"]) @kobo.route("/v1/deals", methods=["GET", "POST"]) def HandleProductsRequest(dummy=None): + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] log.debug("Unimplemented Products Request received: %s (request is forwarded to kobo if configured)", request.base_url) return redirect_or_proxy_request() @@ -1046,7 +1062,10 @@ def make_calibre_web_auth_response(): @kobo.route("/v1/auth/refresh", methods=["POST"]) @kobo.route("/v1/auth/device", methods=["POST"]) @requires_kobo_auth +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleAuthRequest(): + log.error(limiter.current_limit) + log.error(limiter.current_limit) log.debug('Kobo Auth request') if config.config_kobo_proxy: try: @@ -1058,6 +1077,7 @@ def HandleAuthRequest(): @kobo.route("/v1/initialization") @requires_kobo_auth +# @limiter.limit("3/minute", key_func=get_remote_address) def HandleInitRequest(): log.info('Init') @@ -1088,7 +1108,7 @@ def HandleInitRequest(): kobo_resources["image_host"] = calibre_web_url kobo_resources["image_url_quality_template"] = unquote(calibre_web_url + url_for("kobo.HandleCoverImageRequest", - auth_token=kobo_auth.get_auth_token(), + auth_token=get_auth_token(), book_uuid="{ImageId}", width="{width}", height="{height}", @@ -1096,7 +1116,7 @@ def HandleInitRequest(): isGreyscale='isGreyscale')) kobo_resources["image_url_template"] = unquote(calibre_web_url + url_for("kobo.HandleCoverImageRequest", - auth_token=kobo_auth.get_auth_token(), + auth_token=get_auth_token(), book_uuid="{ImageId}", width="{width}", height="{height}", @@ -1104,7 +1124,7 @@ def HandleInitRequest(): else: kobo_resources["image_host"] = url_for("web.index", _external=True).strip("/") kobo_resources["image_url_quality_template"] = unquote(url_for("kobo.HandleCoverImageRequest", - auth_token=kobo_auth.get_auth_token(), + auth_token=get_auth_token(), book_uuid="{ImageId}", width="{width}", height="{height}", @@ -1112,7 +1132,7 @@ def HandleInitRequest(): isGreyscale='isGreyscale', _external=True)) kobo_resources["image_url_template"] = unquote(url_for("kobo.HandleCoverImageRequest", - auth_token=kobo_auth.get_auth_token(), + auth_token=get_auth_token(), book_uuid="{ImageId}", width="{width}", height="{height}", @@ -1128,6 +1148,7 @@ def HandleInitRequest(): @kobo.route("/download//") @requires_kobo_auth @download_required +# @limiter.limit("3/minute", key_func=get_remote_address) def download_book(book_id, book_format): return get_download_link(book_id, book_format, "kobo") diff --git a/cps/kobo_auth.py b/cps/kobo_auth.py index 53f35dcc5..ae9d1c12b 100644 --- a/cps/kobo_auth.py +++ b/cps/kobo_auth.py @@ -67,7 +67,6 @@ from functools import wraps from flask import g, Blueprint, abort, request from .cw_login import login_user, current_user from flask_babel import gettext as _ -from flask_limiter import RateLimitExceeded from . import logger, config, calibre_db, db, helper, ub, lm, limiter from .render_template import render_title_template @@ -154,13 +153,6 @@ def requires_kobo_auth(f): def inner(*args, **kwargs): auth_token = get_auth_token() if auth_token is not None: - try: - limiter.check() - except RateLimitExceeded: - return abort(429) - except (ConnectionError, Exception) as e: - log.error("Connection error to limiter backend: %s", e) - return abort(429) user = ( ub.session.query(ub.User) .join(ub.RemoteAuthToken) @@ -169,7 +161,7 @@ def requires_kobo_auth(f): ) if user is not None: login_user(user) - [limiter.limiter.storage.clear(k.key) for k in limiter.current_limits] + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] return f(*args, **kwargs) log.debug("Received Kobo request without a recognizable auth token.") return abort(401) diff --git a/cps/main.py b/cps/main.py index 44e563f93..b0f56b6d4 100644 --- a/cps/main.py +++ b/cps/main.py @@ -66,8 +66,8 @@ def main(): app.register_blueprint(tasks) app.register_blueprint(web) app.register_blueprint(basic) - app.register_blueprint(opds) limiter.limit("3/minute", key_func=request_username)(opds) + app.register_blueprint(opds) app.register_blueprint(jinjia) app.register_blueprint(about) app.register_blueprint(shelf) @@ -77,9 +77,9 @@ def main(): app.register_blueprint(gdrive) app.register_blueprint(editbook) if kobo_available: + limiter.limit("3/minute", key_func=get_remote_address)(kobo) app.register_blueprint(kobo) app.register_blueprint(kobo_auth) - limiter.limit("3/minute", key_func=get_remote_address)(kobo) if oauth_available: app.register_blueprint(oauth) success = web_server.start() diff --git a/cps/translations/ar/LC_MESSAGES/messages.mo b/cps/translations/ar/LC_MESSAGES/messages.mo index 62900ec3a..72c8194d8 100644 Binary files a/cps/translations/ar/LC_MESSAGES/messages.mo and b/cps/translations/ar/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/ar/LC_MESSAGES/messages.po b/cps/translations/ar/LC_MESSAGES/messages.po index a36fe3a47..7765186a2 100644 --- a/cps/translations/ar/LC_MESSAGES/messages.po +++ b/cps/translations/ar/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2025-06-07 14:44+0300\n" "Last-Translator: UsamaFoad \n" "Language: ar\n" @@ -684,6 +684,22 @@ msgstr "فشل تخزين الملف %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "تمت إضافة تنسيق الملف %(ext)s إلى %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "يرجى الانتظار دقيقة واحدة لتسجيل مستخدم آخر" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "تسجيل" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "يرجى الانتظار دقيقة واحدة قبل تسجيل الدخول التالي" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "لم يكتمل إعداد Google Drive، حاول إلغاء تنشيط Google Drive ثم تنشيطه مرة أخرى" @@ -1435,21 +1451,6 @@ msgstr "عفوًا! حدث خطأ أثناء إرسال الكتاب: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "عفوًا! يرجى تحديث ملفك الشخصي ببريد إلكتروني صالح للقارئ الإلكتروني." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "يرجى الانتظار دقيقة واحدة لتسجيل مستخدم آخر" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "تسجيل" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "خطأ في الاتصال بالواجهة الخلفية للمُحدد، يرجى الاتصال بمسؤول النظام" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "عفوًا! خادم البريد الإلكتروني غير مهيأ، يرجى الاتصال بمسؤول النظام." @@ -1466,10 +1467,6 @@ msgstr "نجاح! تم إرسال بريد إلكتروني للتأكيد." msgid "Cannot activate LDAP authentication" msgstr "لا يمكن تفعيل مصادقة LDAP" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "يرجى الانتظار دقيقة واحدة قبل تسجيل الدخول التالي" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/cs/LC_MESSAGES/messages.mo b/cps/translations/cs/LC_MESSAGES/messages.mo index bad9411ac..0391a86c6 100644 Binary files a/cps/translations/cs/LC_MESSAGES/messages.mo and b/cps/translations/cs/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/cs/LC_MESSAGES/messages.po b/cps/translations/cs/LC_MESSAGES/messages.po index 1bbeeba33..d3f9c834d 100644 --- a/cps/translations/cs/LC_MESSAGES/messages.po +++ b/cps/translations/cs/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2020-06-09 21:11+0100\n" "Last-Translator: Lukas Heroudek \n" "Language: cs_CZ\n" @@ -683,6 +683,22 @@ msgstr "Uložení souboru %(file)s se nezdařilo." msgid "File format %(ext)s added to %(book)s" msgstr "Formát souboru %(ext)s přidán do %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registrovat" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Google Drive nastavení nebylo dokončeno, zkuste znovu deaktivovat a aktivovat Google Drive" @@ -1434,21 +1450,6 @@ msgstr "Při odesílání této knihy došlo k chybě: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registrovat" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "E-mailový server není nakonfigurován, kontaktujte svého správce!" @@ -1465,10 +1466,6 @@ msgstr "Potvrzovací e-mail byl odeslán na váš účet." msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/de/LC_MESSAGES/messages.mo b/cps/translations/de/LC_MESSAGES/messages.mo index 033101d8c..4a19e059e 100644 Binary files a/cps/translations/de/LC_MESSAGES/messages.mo and b/cps/translations/de/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/de/LC_MESSAGES/messages.po b/cps/translations/de/LC_MESSAGES/messages.po index 09c2459c9..d9e829c07 100644 --- a/cps/translations/de/LC_MESSAGES/messages.po +++ b/cps/translations/de/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2025-10-22 19:56+0200\n" "Last-Translator: Sebastian Holzer\n" "Language: de\n" @@ -684,6 +684,22 @@ msgstr "Fehler beim Speichern der Datei %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Dateiformat %(ext)s zu %(book)s hinzugefügt" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Bitte eine Minute warten vor der Registrierung des nächsten Benutzers" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registrieren" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Bitte eine Minute vor dem nächsten Loginversuch warten" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Google Drive Setup is nicht komplett, bitte versuche Google Drive zu deaktivieren und aktiviere es anschließend erneut" @@ -1435,21 +1451,6 @@ msgstr "Beim Senden des Buches trat ein Fehler auf: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "Bitte zuerst die E-Reader E-Mailadresse konfigurieren." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Bitte eine Minute warten vor der Registrierung des nächsten Benutzers" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registrieren" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "Verbindugnsfehler zu Limiter Backend, bitte Administrator kontaktieren" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Der E-Mail Server ist nicht konfiguriert, bitte den Administrator kontaktieren." @@ -1466,10 +1467,6 @@ msgstr "Eine Bestätigungs-E-Mail wurde an deinen E-Mail Account versendet." msgid "Cannot activate LDAP authentication" msgstr "LDAP-Authentifizierung kann nicht aktiviert werden" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Bitte eine Minute vor dem nächsten Loginversuch warten" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/el/LC_MESSAGES/messages.mo b/cps/translations/el/LC_MESSAGES/messages.mo index 0d7fbe5fd..045e481a5 100644 Binary files a/cps/translations/el/LC_MESSAGES/messages.mo and b/cps/translations/el/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/el/LC_MESSAGES/messages.po b/cps/translations/el/LC_MESSAGES/messages.po index 44af81e15..fb21e7bd4 100644 --- a/cps/translations/el/LC_MESSAGES/messages.po +++ b/cps/translations/el/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Depountis Georgios\n" "Language: el\n" @@ -683,6 +683,22 @@ msgstr "Αποτυχία αποθήκευσης αρχείου %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Μορφή αρχείου %(ext)s προστέθηκε σε %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Εγγραφή" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Η ρύθμιση του Google Drive δεν ολοκληρώθηκε, προσπάθησε να απενεργοποιήσεις και να ενεργοποιήσεις ξανά το Google Drive" @@ -1434,21 +1450,6 @@ msgstr "Oυπς! Υπήρξε ένα σφάλμα κατά την αποστολ msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Εγγραφή" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Ο διακομιστής E-Mail δεν έχει διαμορφωθεί, παρακαλούμε επικοινώνησε με το διαχειριστή σου!" @@ -1465,10 +1466,6 @@ msgstr "Το e-mail επιβεβαίωσης έχει σταλεί στον e-ma msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/es/LC_MESSAGES/messages.mo b/cps/translations/es/LC_MESSAGES/messages.mo index e7d9b22c9..4e4a5cece 100644 Binary files a/cps/translations/es/LC_MESSAGES/messages.mo and b/cps/translations/es/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/es/LC_MESSAGES/messages.po b/cps/translations/es/LC_MESSAGES/messages.po index 52aa59fb2..6b38422bb 100644 --- a/cps/translations/es/LC_MESSAGES/messages.po +++ b/cps/translations/es/LC_MESSAGES/messages.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2024-10-29 15:26+0100\n" "Last-Translator: adruki \n" "Language: es\n" @@ -687,6 +687,22 @@ msgstr "Error al guardar el archivo %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Archivo con formato %(ext)s añadido a %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Por favor, espera un minuto para registrar el siguiente usuario" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registro" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Por favor, espera un minuto antes de iniciar sesión de nuevo" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "La configuración de Google Drive no se ha completado, intente desactivar y activar Google Drive nuevamente" @@ -1438,21 +1454,6 @@ msgstr "Hubo un error en el envío del libro: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "Por favor, actualiza tu perfil con un correo electrónico de eReader válido." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Por favor, espera un minuto para registrar el siguiente usuario" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registro" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "Error de conexión con el backend de Limiter, por favor contacta con tu administrador" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "El servidor de correo no está configurado, por favor contacta con tu administrador." @@ -1469,10 +1470,6 @@ msgstr "Se ha enviado un correo electrónico de verificación a su cuenta de cor msgid "Cannot activate LDAP authentication" msgstr "No se puede activar la autenticación LDAP" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Por favor, espera un minuto antes de iniciar sesión de nuevo" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/fi/LC_MESSAGES/messages.mo b/cps/translations/fi/LC_MESSAGES/messages.mo index 9155f5d06..a03b18224 100644 Binary files a/cps/translations/fi/LC_MESSAGES/messages.mo and b/cps/translations/fi/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/fi/LC_MESSAGES/messages.po b/cps/translations/fi/LC_MESSAGES/messages.po index e8f3eb94d..65835cabe 100644 --- a/cps/translations/fi/LC_MESSAGES/messages.po +++ b/cps/translations/fi/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2020-01-12 13:56+0100\n" "Last-Translator: Samuli Valavuo \n" "Language: fi\n" @@ -684,6 +684,22 @@ msgstr "Tiedoston %(file)s tallennus epäonnistui." msgid "File format %(ext)s added to %(book)s" msgstr "Tiedostoformaatti %(ext)s lisätty %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Rekisteröi" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Google Drive asetukset ei ole valmiit. Koita poistaa Google Drive käytöstä ja ottaa se uudelleen käyttöön" @@ -1435,21 +1451,6 @@ msgstr "Kirjan: %(res)s lähettämisessa tapahtui virhe" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Rekisteröi" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "" @@ -1466,10 +1467,6 @@ msgstr "Vahvistusviesti on lähetetty sähköpostiosoitteeseesi." msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/fr/LC_MESSAGES/messages.mo b/cps/translations/fr/LC_MESSAGES/messages.mo index 697d31738..6eb297abc 100644 Binary files a/cps/translations/fr/LC_MESSAGES/messages.mo and b/cps/translations/fr/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/fr/LC_MESSAGES/messages.po b/cps/translations/fr/LC_MESSAGES/messages.po index f3af48a06..c9d8bd406 100644 --- a/cps/translations/fr/LC_MESSAGES/messages.po +++ b/cps/translations/fr/LC_MESSAGES/messages.po @@ -3,7 +3,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2026-01-15 11:30+0000\n" "Last-Translator: \n" "Language: fr\n" @@ -680,6 +680,22 @@ msgstr "Échec de la sauvegarde du fichier %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Le format de fichier %(ext)s a été ajouté à %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Veuillez patienter une minute pour enregistrer le prochain utilisateur." + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Créer un compte" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Veuillez patienter une minute avant de vous reconnecter." + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "La configuration de Google Drive n’est pas terminée, essayez de désactiver et d’activer à nouveau Google Drive" @@ -1431,21 +1447,6 @@ msgstr "Oups ! Une erreur est survenue lors de l'envoi du livre : %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "Oups ! Veuillez mettre à jour votre profil avec une adresse e-mail valide pour votre liseuse." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Veuillez patienter une minute pour enregistrer le prochain utilisateur." - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Créer un compte" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "Erreur de connexion au backend du limiteur, veuillez contacter votre administrateur." - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Oups ! Le serveur de courriel n'est pas configuré, veuillez contacter votre administrateur!" @@ -1462,10 +1463,6 @@ msgstr "Succès ! Le courriel de confirmation a été envoyé à votre adresse." msgid "Cannot activate LDAP authentication" msgstr "Impossible d'activer l'authentification LDAP" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Veuillez patienter une minute avant de vous reconnecter." - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/gl/LC_MESSAGES/messages.mo b/cps/translations/gl/LC_MESSAGES/messages.mo index 8db1456e3..b9c0a10bc 100644 Binary files a/cps/translations/gl/LC_MESSAGES/messages.mo and b/cps/translations/gl/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/gl/LC_MESSAGES/messages.po b/cps/translations/gl/LC_MESSAGES/messages.po index c3994040b..97185809d 100644 --- a/cps/translations/gl/LC_MESSAGES/messages.po +++ b/cps/translations/gl/LC_MESSAGES/messages.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2024-12-08 13:50+0100\n" "Last-Translator: pollitor@gmx.com\n" "Language: gl\n" @@ -682,6 +682,22 @@ msgstr "Produciuse un erro ao almacenar o ficheiro %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Engadiuse o formato de ficheiro %(ext)s a %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Agarde un minuto para rexistrar o seguinte usuario" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Rexístrate" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Agarde un minuto antes do próximo inicio de sesión" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Non se completou a configuración de Google Drive, tenta desactivalo e activalo de novo" @@ -1433,21 +1449,6 @@ msgstr "Vaia! Produciuse un erro ao enviar o libro: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "Vaia! Actualiza o teu perfil cun correo electrónico de eReader válido." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Agarde un minuto para rexistrar o seguinte usuario" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Rexístrate" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "Produciuse un erro de conexión ao back-end do limitador. Ponte en contacto co teu administrador" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Vaia! O servidor de correo electrónico non está configurado, póñase en contacto co seu administrador." @@ -1464,10 +1465,6 @@ msgstr "Éxito! Enviouse o correo electrónico de confirmación." msgid "Cannot activate LDAP authentication" msgstr "Non se pode activar a autenticación LDAP" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Agarde un minuto antes do próximo inicio de sesión" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/hu/LC_MESSAGES/messages.mo b/cps/translations/hu/LC_MESSAGES/messages.mo index bbfac0997..5977c147a 100644 Binary files a/cps/translations/hu/LC_MESSAGES/messages.mo and b/cps/translations/hu/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/hu/LC_MESSAGES/messages.po b/cps/translations/hu/LC_MESSAGES/messages.po index c5742e98a..cc6dccd36 100644 --- a/cps/translations/hu/LC_MESSAGES/messages.po +++ b/cps/translations/hu/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2019-04-06 23:36+0200\n" "Last-Translator: \n" "Language: hu\n" @@ -684,6 +684,22 @@ msgstr "Nem sikerült elmenteni a %(file)s fájlt." msgid "File format %(ext)s added to %(book)s" msgstr "A(z) %(ext)s fájlformátum hozzáadva a könyvhez: %(book)s." +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Regisztrálás" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "A Google Drive beállítása nem fejeződött be, próbáld kikapcsolni és újra aktíválni a Google Drive-ot." @@ -1435,21 +1451,6 @@ msgstr "Hiba történt a könyv küldésekor: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Regisztrálás" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "" @@ -1466,10 +1467,6 @@ msgstr "Jóváhagyó levél elküldve az email címedre." msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/id/LC_MESSAGES/messages.mo b/cps/translations/id/LC_MESSAGES/messages.mo index cd1933bcd..3f3cf3979 100644 Binary files a/cps/translations/id/LC_MESSAGES/messages.mo and b/cps/translations/id/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/id/LC_MESSAGES/messages.po b/cps/translations/id/LC_MESSAGES/messages.po index 8148a0a70..d8d022349 100644 --- a/cps/translations/id/LC_MESSAGES/messages.po +++ b/cps/translations/id/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2023-01-21 10:00+0700\n" "Last-Translator: Arief Hidayat\n" "Language: id\n" @@ -684,6 +684,22 @@ msgstr "Gagal menyimpan berkas %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Format berkas %(ext)s ditambahkan ke %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Daftar" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Pengaturan Google Drive belum selesai, coba nonaktifkan dan aktifkan kembali Google Drive" @@ -1435,21 +1451,6 @@ msgstr "Oops! Terjadi kesalahan saat mengirim buku: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Daftar" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Server email belum diatur, silakan hubungi administrator!" @@ -1466,10 +1467,6 @@ msgstr "E-mail konfirmasi telah dikirimkan ke alamat email Anda." msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/it/LC_MESSAGES/messages.mo b/cps/translations/it/LC_MESSAGES/messages.mo index 9979eda30..5216ee16d 100644 Binary files a/cps/translations/it/LC_MESSAGES/messages.mo and b/cps/translations/it/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/it/LC_MESSAGES/messages.po b/cps/translations/it/LC_MESSAGES/messages.po index 7f3b48946..7c6b2bb66 100644 --- a/cps/translations/it/LC_MESSAGES/messages.po +++ b/cps/translations/it/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2026-01-04 02:22+0100\n" "Last-Translator: Massimo Pissarello \n" "Language: it\n" @@ -684,6 +684,22 @@ msgstr "Impossibile archiviare il file %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Formato file %(ext)s aggiunto a %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Attendi un minuto per registrare il prossimo utente" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registrati" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Attendi un minuto prima del prossimo accesso" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Configurazione di Google Drive non completata, prova a disattivare e attivare nuovamente Google Drive" @@ -1435,21 +1451,6 @@ msgstr "Si è verificato un errore durante l'invio del libro: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "Per favore aggiorna il tuo profilo con un'e-mail eReader valida." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Attendi un minuto per registrare il prossimo utente" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registrati" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "Il server e-mail non è configurato, per favore contatta l'amministratore" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Il server e-mail non è configurato, per favore contatta l'amministratore" @@ -1466,10 +1467,6 @@ msgstr "Tutto OK! L'e-mail di conferma è stata inviata." msgid "Cannot activate LDAP authentication" msgstr "Impossibile attivare l'autenticazione LDAP" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Attendi un minuto prima del prossimo accesso" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/ja/LC_MESSAGES/messages.mo b/cps/translations/ja/LC_MESSAGES/messages.mo index 3fd8e6788..f352f6539 100644 Binary files a/cps/translations/ja/LC_MESSAGES/messages.mo and b/cps/translations/ja/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/ja/LC_MESSAGES/messages.po b/cps/translations/ja/LC_MESSAGES/messages.po index fec6d0380..4a27b68c8 100644 --- a/cps/translations/ja/LC_MESSAGES/messages.po +++ b/cps/translations/ja/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2018-02-07 02:20-0500\n" "Last-Translator: subdiox \n" "Language: ja\n" @@ -684,6 +684,22 @@ msgstr "ファイル %(file)s を保存できません。" msgid "File format %(ext)s added to %(book)s" msgstr "ファイル形式 %(ext)s が %(book)s に追加されました" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "登録" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Googleドライブの設定が完了していません。Googleドライブを無効にしてから再度有効にしてみてください" @@ -1435,21 +1451,6 @@ msgstr "%(res)s を送信中にエラーが発生しました" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "登録" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "メールサーバーが設定されていません。管理者に連絡してください" @@ -1466,10 +1467,6 @@ msgstr "確認メールがこのメールアドレスに送信されました。 msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/km/LC_MESSAGES/messages.mo b/cps/translations/km/LC_MESSAGES/messages.mo index 84b71b8df..b6f353ce2 100644 Binary files a/cps/translations/km/LC_MESSAGES/messages.mo and b/cps/translations/km/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/km/LC_MESSAGES/messages.po b/cps/translations/km/LC_MESSAGES/messages.po index c986f3b78..4c0ed1d4e 100644 --- a/cps/translations/km/LC_MESSAGES/messages.po +++ b/cps/translations/km/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2018-08-27 17:06+0700\n" "Last-Translator: \n" "Language: km_KH\n" @@ -685,6 +685,22 @@ msgstr "មិនអាចរក្សាទុកឯកសារ %(file)s ។" msgid "File format %(ext)s added to %(book)s" msgstr "ឯកសារទម្រង់ %(ext)s ត្រូវបានបន្ថែមទៅ %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "ចុះឈ្មោះ" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" @@ -1436,21 +1452,6 @@ msgstr "មានបញ្ហានៅពេលផ្ញើសៀវភៅនេ msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "ចុះឈ្មោះ" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "" @@ -1467,10 +1468,6 @@ msgstr "" msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/ko/LC_MESSAGES/messages.mo b/cps/translations/ko/LC_MESSAGES/messages.mo index 1c0132817..786fc57c3 100644 Binary files a/cps/translations/ko/LC_MESSAGES/messages.mo and b/cps/translations/ko/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/ko/LC_MESSAGES/messages.po b/cps/translations/ko/LC_MESSAGES/messages.po index a368958ad..5ae337351 100644 --- a/cps/translations/ko/LC_MESSAGES/messages.po +++ b/cps/translations/ko/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2024-11-01 17:50+0900\n" "Last-Translator: limeade23 \n" "Language: ko\n" @@ -684,6 +684,22 @@ msgstr "%(file)s 파일 저장에 실패했습니다." msgid "File format %(ext)s added to %(book)s" msgstr "파일 형식 %(ext)s이(가) %(book)s에 추가되었습니다" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "다음 사용자를 등록은 1분 뒤 가능합니다." + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "등록" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "1분 후 시도해 주세요." + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Google 드라이브 설정이 완료되지 않았습니다. Google 드라이브를 비활성화한 후 다시 활성화해 주세요." @@ -1435,21 +1451,6 @@ msgstr "전송 중 오류가 발생했습니다: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "문제가 발생했습니다. 프로필에 유효한 전자책 리더 이메일을 설정해 주세요." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "다음 사용자를 등록은 1분 뒤 가능합니다." - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "등록" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "Flask-Limiter 시스템 연결에 문제가 발생했습니다. 관리자에게 문의하세요." - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "이메일 서버가 설정되지 않았습니다. 관리자에게 문의하세요." @@ -1466,10 +1467,6 @@ msgstr "인증 이메일을 발송했습니다." msgid "Cannot activate LDAP authentication" msgstr "LDAP 인증을 활성화할 수 없습니다." -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "1분 후 시도해 주세요." - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/nl/LC_MESSAGES/messages.mo b/cps/translations/nl/LC_MESSAGES/messages.mo index f359f031b..d0e320887 100644 Binary files a/cps/translations/nl/LC_MESSAGES/messages.mo and b/cps/translations/nl/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/nl/LC_MESSAGES/messages.po b/cps/translations/nl/LC_MESSAGES/messages.po index 607f85803..1e5dcc74e 100644 --- a/cps/translations/nl/LC_MESSAGES/messages.po +++ b/cps/translations/nl/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web (GPLV3)\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2023-12-20 22:00+0100\n" "Last-Translator: Michiel Cornelissen \n" "Language: nl\n" @@ -685,6 +685,22 @@ msgstr "Kan %(file)s niet opslaan." msgid "File format %(ext)s added to %(book)s" msgstr "Bestandsformaat %(ext)s toegevoegd aan %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Wacht alstublieft één minuut voor het registreren van de volgende gebruiker" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registreren" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Wacht alstublieft één minuut voor de volgende inlogpoging" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Het instellen van Google Drive is niet afgerond, heractiveer Google Drive" @@ -1436,21 +1452,6 @@ msgstr "Fout opgetreden bij het versturen van dit boek: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Wacht alstublieft één minuut voor het registreren van de volgende gebruiker" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registreren" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "E-mailserver is niet geconfigureerd, neem contact op met de beheerder!" @@ -1467,10 +1468,6 @@ msgstr "Er is een bevestigings-e-mail verstuurd naar je e-mailadres." msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Wacht alstublieft één minuut voor de volgende inlogpoging" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/no/LC_MESSAGES/messages.mo b/cps/translations/no/LC_MESSAGES/messages.mo index e42b87ba6..adf45e31b 100644 Binary files a/cps/translations/no/LC_MESSAGES/messages.mo and b/cps/translations/no/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/no/LC_MESSAGES/messages.po b/cps/translations/no/LC_MESSAGES/messages.po index 6ea433d7d..5ad76faed 100644 --- a/cps/translations/no/LC_MESSAGES/messages.po +++ b/cps/translations/no/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2023-01-06 11:00+0000\n" "Last-Translator: Vegard Fladby \n" "Language: no\n" @@ -684,6 +684,22 @@ msgstr "Kunne ikke lagre filen %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Filformat %(ext)s lagt til %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registrere" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Google Disk-konfigurasjonen er ikke fullført. Prøv å deaktivere og aktivere Google Disk på nytt" @@ -1435,21 +1451,6 @@ msgstr "" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registrere" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "" @@ -1466,10 +1467,6 @@ msgstr "" msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/pl/LC_MESSAGES/messages.mo b/cps/translations/pl/LC_MESSAGES/messages.mo index dfcf24045..50d644d2d 100644 Binary files a/cps/translations/pl/LC_MESSAGES/messages.mo and b/cps/translations/pl/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/pl/LC_MESSAGES/messages.po b/cps/translations/pl/LC_MESSAGES/messages.po index f84f31690..970b9b868 100644 --- a/cps/translations/pl/LC_MESSAGES/messages.po +++ b/cps/translations/pl/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre Web - polski (POT: 2021-06-12 08:52)\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2025-12-08 12:51+0100\n" "Last-Translator: Daniel Szepietowski \n" "Language: pl\n" @@ -689,6 +689,22 @@ msgstr "Nie można zapisać pliku %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Format pliku %(ext)s dodany do %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Proszę poczekać minutę przed rejestracją kolejnego użytkownika." + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Zarejestruj się" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Proszę poczekać minutę przed kolejnym logowaniem" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Konfiguracja Google Drive nie została zakończona, spróbuj dezaktywować i ponownie aktywować Google Drive" @@ -1443,21 +1459,6 @@ msgstr "Wystąpił błąd podczas wysyłania tej książki: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "Ups! Zaktualizuj swój profil używając poprawnego adresu email czytnika." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Proszę poczekać minutę przed rejestracją kolejnego użytkownika." - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Zarejestruj się" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "Błąd połączenia z backendem limitera, skontaktuj się z administratorem." - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Serwer e-mail nie jest skonfigurowany, skontaktuj się z administratorem!" @@ -1474,10 +1475,6 @@ msgstr "Wiadomość e-mail z potwierdzeniem została wysłana na Twoje konto e-m msgid "Cannot activate LDAP authentication" msgstr "Nie udało się aktywować autoryzacji za pomocą LDAP" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Proszę poczekać minutę przed kolejnym logowaniem" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/pt/LC_MESSAGES/messages.mo b/cps/translations/pt/LC_MESSAGES/messages.mo index 4752c43ec..900d72d33 100644 Binary files a/cps/translations/pt/LC_MESSAGES/messages.mo and b/cps/translations/pt/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/pt/LC_MESSAGES/messages.po b/cps/translations/pt/LC_MESSAGES/messages.po index ed530425e..bdc4e1348 100644 --- a/cps/translations/pt/LC_MESSAGES/messages.po +++ b/cps/translations/pt/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2023-07-25 11:30+0100\n" "Last-Translator: horus68 \n" "Language: pt\n" @@ -681,6 +681,22 @@ msgstr "Falha ao armazenar o ficheiro %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Formato de ficheiro %(ext)s adicionado a %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Por favor, aguarde um minuto para registar o próximo utilizador" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registar" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Por favor, aguarde um minuto antes de nova autenticação" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Configuração do Google Drive não concluída, tente desativar e ativar o Google Drive novamente" @@ -1432,21 +1448,6 @@ msgstr "Ops! Ocorreu um erro ao enviar este livro: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Por favor, aguarde um minuto para registar o próximo utilizador" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registar" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Ops! O servidor de email não está configurado. Por favor, contacte o seu administrador!" @@ -1463,10 +1464,6 @@ msgstr "Sucesso! O email de confirmação foi enviado para a sua conta de email. msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Por favor, aguarde um minuto antes de nova autenticação" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/pt_BR/LC_MESSAGES/messages.mo b/cps/translations/pt_BR/LC_MESSAGES/messages.mo index 30c1f5da9..feeb1d15e 100644 Binary files a/cps/translations/pt_BR/LC_MESSAGES/messages.mo and b/cps/translations/pt_BR/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/pt_BR/LC_MESSAGES/messages.po b/cps/translations/pt_BR/LC_MESSAGES/messages.po index a08c2c79f..e05311493 100644 --- a/cps/translations/pt_BR/LC_MESSAGES/messages.po +++ b/cps/translations/pt_BR/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: PROJECT VERSION\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language: br\n" @@ -681,6 +681,22 @@ msgstr "Falha ao armazenar o arquivo %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Formato de arquivo %(ext)s adicionado a %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Aguarde um minuto para registrar o próximo usuário" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registe-se" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Aguarde um minuto antes do próximo login" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Configuração do Google Drive não concluída, tente desativar e ativar o Google Drive novamente" @@ -1432,21 +1448,6 @@ msgstr "Ops! Ocorreu um erro ao enviar este livro: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "Ops! Atualize seu perfil com um e-mail de eReader válido." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Aguarde um minuto para registrar o próximo usuário" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registe-se" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "Erro de conexão com o backend do limitador; entre em contato com o administrador" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "O servidor de E-Mail não está configurado, por favor contacte o seu administrador!" @@ -1463,10 +1464,6 @@ msgstr "O e-mail de confirmação foi enviado para a sua conta de e-mail." msgid "Cannot activate LDAP authentication" msgstr "Não foi possível ativar a autenticação LDAP" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Aguarde um minuto antes do próximo login" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/ru/LC_MESSAGES/messages.mo b/cps/translations/ru/LC_MESSAGES/messages.mo index 3591639e9..74aa0db6e 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 808c69cd5..fb4c53d03 100644 --- a/cps/translations/ru/LC_MESSAGES/messages.po +++ b/cps/translations/ru/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2020-04-29 01:20+0400\n" "Last-Translator: ZIZA\n" "Language: ru\n" @@ -685,6 +685,22 @@ msgstr "Не удалось сохранить файл %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Формат файла %(ext)s добавлен в %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Зарегистрироваться" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Настройка Google Drive не завершена, попробуйте деактивировать и снова активировать Google Drive" @@ -1436,21 +1452,6 @@ msgstr "При отправке этой книги произошла ошиб msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Зарегистрироваться" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Сервер электронной почты не настроен, обратитесь к администратору !" @@ -1467,10 +1468,6 @@ msgstr "Письмо с подтверждением отправлено вам msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/sk/LC_MESSAGES/messages.mo b/cps/translations/sk/LC_MESSAGES/messages.mo index 03edaf1c6..11c36e1d6 100644 Binary files a/cps/translations/sk/LC_MESSAGES/messages.mo and b/cps/translations/sk/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/sk/LC_MESSAGES/messages.po b/cps/translations/sk/LC_MESSAGES/messages.po index c4464d812..142ac3d79 100644 --- a/cps/translations/sk/LC_MESSAGES/messages.po +++ b/cps/translations/sk/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2023-11-01 06:12+0100\n" "Last-Translator: Branislav Hanáček \n" "Language: sk_SK\n" @@ -684,6 +684,22 @@ msgstr "Zlyhalo uloženie súboru: %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Súborový formát %(ext)s bol pridaný k %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Počkajte, prosím minútku pred registráciou ďalšieho používateľa" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registrovať" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Počkajte, prosím minútku pred opätovným prihlásením" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Nastavenie Google Drive nie je dokončené, skúste deaktivovať a znovu aktivovať Google Drive" @@ -1435,21 +1451,6 @@ msgstr "Vyskytla sa chyba pri posielaní knihy: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "Nastavte vo vašom profile platnú e-mailovú adresu pre vašu čítačku." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Počkajte, prosím minútku pred registráciou ďalšieho používateľa" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registrovať" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Poštový server nie je nastavený, kontaktujte prosím správcu." @@ -1466,10 +1467,6 @@ msgstr "Úspech! Potvrdzujúci e-mail bol odoslaný." msgid "Cannot activate LDAP authentication" msgstr "Nie je možné aktivovať LDAP autentifikáciu" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Počkajte, prosím minútku pred opätovným prihlásením" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/sl/LC_MESSAGES/messages.mo b/cps/translations/sl/LC_MESSAGES/messages.mo index cee586632..846592563 100644 Binary files a/cps/translations/sl/LC_MESSAGES/messages.mo and b/cps/translations/sl/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/sl/LC_MESSAGES/messages.po b/cps/translations/sl/LC_MESSAGES/messages.po index 36d0680ef..4b63217d5 100644 --- a/cps/translations/sl/LC_MESSAGES/messages.po +++ b/cps/translations/sl/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2024-09-18 19:45+0200\n" "Last-Translator: Andrej Kralj\n" "Language: sl\n" @@ -684,6 +684,22 @@ msgstr "Nisem uspel shraniti datoteke %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Oblina datotek %(ext)s je dodan v %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "Počakajte eno minuto za registracijo naslednjega uporabnika" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registriraj" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "Pred naslednjo prijavo počakajte eno minuto" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Nastavitev Google Drive ni dokončana, poskusite deaktivirati in znova aktivirati Google Drive" @@ -1435,21 +1451,6 @@ msgstr "Ups! Pri pošiljanju knjige je prišlo do napake: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "Ups! Posodobite svoj profil z veljavnim e-poštnim naslovom eReaderja." -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "Počakajte eno minuto za registracijo naslednjega uporabnika" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registriraj" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "Napaka pri povezavi z zalednim strežnikom limiterja, obrnite se na skrbnika" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "Ups! E-poštni strežnik ni nastavljen, obrnite se na skrbnika." @@ -1466,10 +1467,6 @@ msgstr "Uspeh! Potrditveno e-poštno sporočilo je bilo poslano." msgid "Cannot activate LDAP authentication" msgstr "Ni mogoče aktivirati avtentikacije LDAP" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "Pred naslednjo prijavo počakajte eno minuto" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/sv/LC_MESSAGES/messages.mo b/cps/translations/sv/LC_MESSAGES/messages.mo index 038ccccc4..f08fcafe6 100644 Binary files a/cps/translations/sv/LC_MESSAGES/messages.mo and b/cps/translations/sv/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/sv/LC_MESSAGES/messages.po b/cps/translations/sv/LC_MESSAGES/messages.po index 9a12eba30..63e7be99d 100644 --- a/cps/translations/sv/LC_MESSAGES/messages.po +++ b/cps/translations/sv/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/Calibre-Web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2021-05-13 11:00+0000\n" "Last-Translator: Jonatan Nyberg \n" "Language: sv\n" @@ -684,6 +684,22 @@ msgstr "Det gick inte att lagra filen %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "Filformatet %(ext)s lades till %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Registrera" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Installationen av Google Drive är inte klar, försök att inaktivera och aktivera Google Drive igen" @@ -1435,21 +1451,6 @@ msgstr "Det gick inte att skicka den här boken: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Registrera" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "E-postservern är inte konfigurerad, kontakta din administratör!" @@ -1466,10 +1467,6 @@ msgstr "Bekräftelsemail skickades till ditt e-postkonto." msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/tr/LC_MESSAGES/messages.mo b/cps/translations/tr/LC_MESSAGES/messages.mo index 474e9bedf..91fd81cec 100644 Binary files a/cps/translations/tr/LC_MESSAGES/messages.mo and b/cps/translations/tr/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/tr/LC_MESSAGES/messages.po b/cps/translations/tr/LC_MESSAGES/messages.po index fc9e05a7c..82b842d3d 100644 --- a/cps/translations/tr/LC_MESSAGES/messages.po +++ b/cps/translations/tr/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2020-04-23 22:47+0300\n" "Last-Translator: iz \n" "Language: tr\n" @@ -684,6 +684,22 @@ msgstr "%(file)s dosyası kaydedilemedi." msgid "File format %(ext)s added to %(book)s" msgstr "%(book)s kitabına %(ext)s dosya biçimi eklendi" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Kayıt ol" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Google Drive kurulumu tamamlanmadı, Google Drive'ı devre dışı bırakmayı ve tekrar etkinleştirmeyi deneyin" @@ -1435,21 +1451,6 @@ msgstr "" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Kayıt ol" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "E-Posta sunucusu ayarlanmadı, lütfen yöneticinizle iletişime geçin!" @@ -1466,10 +1467,6 @@ msgstr "Onay e-Postası hesabınıza gönderildi." msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/uk/LC_MESSAGES/messages.mo b/cps/translations/uk/LC_MESSAGES/messages.mo index 55a4a235b..572a30f64 100644 Binary files a/cps/translations/uk/LC_MESSAGES/messages.mo and b/cps/translations/uk/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/uk/LC_MESSAGES/messages.po b/cps/translations/uk/LC_MESSAGES/messages.po index 6a63c1d0f..0245c99e1 100644 --- a/cps/translations/uk/LC_MESSAGES/messages.po +++ b/cps/translations/uk/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2017-04-30 00:47+0300\n" "Last-Translator: ABIS Team \n" "Language: uk\n" @@ -696,6 +696,22 @@ msgstr "" msgid "File format %(ext)s added to %(book)s" msgstr "" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Зареєструватись" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" @@ -1461,21 +1477,6 @@ msgstr "Помилка при відправці книги: %(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Зареєструватись" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "" @@ -1492,10 +1493,6 @@ msgstr "" msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, fuzzy, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/vi/LC_MESSAGES/messages.mo b/cps/translations/vi/LC_MESSAGES/messages.mo index 0cc4b13f0..a12db662f 100644 Binary files a/cps/translations/vi/LC_MESSAGES/messages.mo and b/cps/translations/vi/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/vi/LC_MESSAGES/messages.po b/cps/translations/vi/LC_MESSAGES/messages.po index 3fd9412ff..963a53cfb 100644 --- a/cps/translations/vi/LC_MESSAGES/messages.po +++ b/cps/translations/vi/LC_MESSAGES/messages.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-web\n" "Report-Msgid-Bugs-To: https://github.com/janeczku/calibre-web\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2022-09-20 21:36+0700\n" "Last-Translator: Ha Link \n" "Language: vi\n" @@ -681,6 +681,22 @@ msgstr "Lưu file thất bại %(file)s." msgid "File format %(ext)s added to %(book)s" msgstr "" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "Đăng ký" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" @@ -1432,21 +1448,6 @@ msgstr "" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "Đăng ký" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "" @@ -1463,10 +1464,6 @@ msgstr "" msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo index 6f3f26fb5..5095ac477 100644 Binary files a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo and b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po index fc9843f1b..76edf5de4 100644 --- a/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po +++ b/cps/translations/zh_Hans_CN/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2025-12-06 13:53+0800\n" "Last-Translator: qx100\n" "Language: zh_CN\n" @@ -684,6 +684,22 @@ msgstr "保存文件 %(file)s 失败。" msgid "File format %(ext)s added to %(book)s" msgstr "已添加 %(ext)s 格式到 %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "请等待一分钟注册下一个用户" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "注册" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "下次登录前请等待一分钟" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Google Drive 设置未完成,请尝试停用并再次激活 Google 云端硬盘" @@ -1435,21 +1451,6 @@ msgstr "糟糕!发送这本书籍的时候出现错误:%(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "请先配置您的 Kindle 邮箱。" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "请等待一分钟注册下一个用户" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "注册" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "限制器后台连接错误,请联系管理员" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "邮件服务未配置,请联系网站管理员。" @@ -1466,10 +1467,6 @@ msgstr "确认邮件已经发送到您的邮箱。" msgid "Cannot activate LDAP authentication" msgstr "无法激活 LDAP 认证" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "下次登录前请等待一分钟" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/translations/zh_Hant_TW/LC_MESSAGES/messages.mo b/cps/translations/zh_Hant_TW/LC_MESSAGES/messages.mo index 13d1a366a..6c040c0c7 100644 Binary files a/cps/translations/zh_Hant_TW/LC_MESSAGES/messages.mo and b/cps/translations/zh_Hant_TW/LC_MESSAGES/messages.mo differ diff --git a/cps/translations/zh_Hant_TW/LC_MESSAGES/messages.po b/cps/translations/zh_Hant_TW/LC_MESSAGES/messages.po index eba101f38..348cd13d0 100644 --- a/cps/translations/zh_Hant_TW/LC_MESSAGES/messages.po +++ b/cps/translations/zh_Hant_TW/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Calibre-Web\n" "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n" -"POT-Creation-Date: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: 2025-09-10 03:46+0000\n" "Last-Translator: finrodchen \n" "Language: zh_TW\n" @@ -684,6 +684,22 @@ msgstr "保存文件 %(file)s 失敗。" msgid "File format %(ext)s added to %(book)s" msgstr "已添加 %(ext)s 格式到 %(book)s" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "請等待一分鐘後再註冊下一位使用者" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "註冊" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "請於下一次登入前等待一分鐘" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "Google Drive 設置未完成,請嘗試停用並再次激活Google雲端硬碟" @@ -1435,21 +1451,6 @@ msgstr "糟糕!發送這本書籍的時候出現錯誤:%(res)s" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "請等待一分鐘後再註冊下一位使用者" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "註冊" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "郵件服務未配置,請聯繫網站管理員!" @@ -1466,10 +1467,6 @@ msgstr "確認郵件已經發送到您的郵箱。" msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "請於下一次登入前等待一分鐘" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/cps/usermanagement.py b/cps/usermanagement.py index 31c37a933..e9f0776be 100644 --- a/cps/usermanagement.py +++ b/cps/usermanagement.py @@ -43,14 +43,14 @@ def verify_password(username, password): if config.config_login_type == constants.LOGIN_LDAP and services.ldap: login_result, error = services.ldap.bind_user(user.name, password) if login_result: - [limiter.limiter.storage.clear(k.key) for k in limiter.current_limits] + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] return user if error is not None: log.error(error) else: - limiter.check() + # limiter.check() if check_password_hash(str(user.password), password): - [limiter.limiter.storage.clear(k.key) for k in limiter.current_limits] + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] return user ip_address = request.headers.get('X-Forwarded-For', request.remote_addr) log.warning('OPDS Login failed for user "%s" IP-address: %s', username, ip_address) @@ -120,7 +120,7 @@ def load_user_from_reverse_proxy_header(req): if rp_header_username: user = ub.session.query(ub.User).filter(func.lower(ub.User.name) == rp_header_username.lower()).first() if user: - [limiter.limiter.storage.clear(k.key) for k in limiter.current_limits] + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] return user return None diff --git a/cps/web.py b/cps/web.py index 9466dc9d6..961e1df7f 100644 --- a/cps/web.py +++ b/cps/web.py @@ -30,7 +30,6 @@ from flask import session as flask_session from flask_babel import gettext as _ from flask_babel import get_locale from .cw_login import login_user, logout_user, current_user -from flask_limiter import RateLimitExceeded from flask_limiter.util import get_remote_address from sqlalchemy.exc import IntegrityError, InvalidRequestError, OperationalError from sqlalchemy.sql.expression import text, func, false, not_, and_, or_ @@ -39,7 +38,7 @@ from sqlalchemy.sql.functions import coalesce from werkzeug.datastructures import Headers from werkzeug.security import generate_password_hash, check_password_hash -from . import constants, logger, isoLanguages, services +from . import constants, logger, isoLanguages, services, limiter from . import db, ub, config, app from . import calibre_db, kobo_sync_status from .search import render_search_results, render_adv_search_results @@ -55,7 +54,6 @@ from .usermanagement import login_required_if_no_ano from .kobo_sync_status import remove_synced_book from .render_template import render_title_template from .kobo_sync_status import change_archived_books -from . import limiter from .services.worker import WorkerThread from .tasks_status import render_task_status from .usermanagement import user_login_required @@ -1285,15 +1283,6 @@ def register_post(): if not config.config_public_reg: abort(404) to_save = request.form.to_dict() - try: - limiter.check() - except RateLimitExceeded: - flash(_(u"Please wait one minute to register next user"), category="error") - return render_title_template('register.html', config=config, title=_("Register"), page="register") - except (ConnectionError, Exception) as e: - log.error("Connection error to limiter backend: %s", e) - flash(_("Connection error to limiter backend, please contact your administrator"), category="error") - return render_title_template('register.html', config=config, title=_("Register"), page="register") if current_user is not None and current_user.is_authenticated: return redirect(url_for('web.index')) if not config.get_mail_server_configured(): @@ -1358,7 +1347,7 @@ def register(): def handle_login_user(user, remember, message, category): login_user(user, remember=remember) flash(message, category=category) - [limiter.limiter.storage.clear(k.key) for k in limiter.current_limits] + [limiter.limiter.clear(limit.limit, *limit.request_args) for limit in limiter.current_limits] return redirect(get_redirect_location(request.form.get('next', None), "web.index")) @@ -1392,15 +1381,6 @@ def login(): def login_post(): form = request.form.to_dict() username = strip_whitespaces(form.get('username', "")).lower().replace("\n","").replace("\r","") - try: - limiter.check() - except RateLimitExceeded: - flash(_("Please wait one minute before next login"), category="error") - return render_login(username, form.get("password", "")) - except (ConnectionError, Exception) as e: - log.error("Connection error to limiter backend: %s", e) - flash(_("Connection error to limiter backend, please contact your administrator"), category="error") - return render_login(username, form.get("password", "")) if current_user is not None and current_user.is_authenticated: return redirect(url_for('web.index')) if config.config_login_type == constants.LOGIN_LDAP and not services.ldap: diff --git a/messages.pot b/messages.pot index a020a01cd..9131a48bf 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: 2026-02-13 19:17+0100\n" +"POT-Creation-Date: 2026-02-14 11:23+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -683,6 +683,22 @@ msgstr "" msgid "File format %(ext)s added to %(book)s" msgstr "" +#: cps/error_handler.py:98 +msgid "Please wait one minute to register next user" +msgstr "" + +#: cps/error_handler.py:99 cps/templates/layout.html:69 +#: cps/templates/layout.html:104 cps/templates/login.html:27 +#: cps/templates/register.html:17 cps/web.py:1301 cps/web.py:1305 +#: cps/web.py:1311 cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 +#: cps/web.py:1355 +msgid "Register" +msgstr "" + +#: cps/error_handler.py:103 +msgid "Please wait one minute before next login" +msgstr "" + #: cps/gdrive.py:58 msgid "Google Drive setup not completed, try to deactivate and activate Google Drive again" msgstr "" @@ -1434,21 +1450,6 @@ msgstr "" msgid "Oops! Please update your profile with a valid eReader Email." msgstr "" -#: cps/web.py:1291 -msgid "Please wait one minute to register next user" -msgstr "" - -#: cps/templates/layout.html:69 cps/templates/layout.html:104 -#: cps/templates/login.html:27 cps/templates/register.html:17 cps/web.py:1292 -#: cps/web.py:1296 cps/web.py:1301 cps/web.py:1305 cps/web.py:1311 -#: cps/web.py:1335 cps/web.py:1339 cps/web.py:1352 cps/web.py:1355 -msgid "Register" -msgstr "" - -#: cps/web.py:1295 cps/web.py:1402 -msgid "Connection error to limiter backend, please contact your administrator" -msgstr "" - #: cps/web.py:1300 cps/web.py:1351 msgid "Oops! Email server is not configured, please contact your administrator." msgstr "" @@ -1465,10 +1466,6 @@ msgstr "" msgid "Cannot activate LDAP authentication" msgstr "" -#: cps/web.py:1398 -msgid "Please wait one minute before next login" -msgstr "" - #: cps/web.py:1417 #, python-format msgid "you are now logged in as: '%(nickname)s'" diff --git a/pyproject.toml b/pyproject.toml index b5d54ad4e..24b5a3cd3 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,27 +32,27 @@ dependencies = [ "Flask-Principal>=0.3.2,<0.5.1", "Flask>=1.0.2,<3.2.0", "iso-639>=0.4.5,<0.5.0;python_version<'3.12'", - "pycountry>=20.0.0,<25.0.0;python_version>='3.12'", - "PyPDF>=6.1.3,<6.5.0", + "pycountry>=20.0.0,<27.0.0;python_version>='3.12'", + "PyPDF>=6.1.3,<6.8.0", "pytz>=2016.10", "requests>=2.32.0,<2.33.0", "SQLAlchemy>=1.3.0,<2.1.0", "tornado>=6.4.2,<6.6", "Wand>=0.4.4,<0.7.0", - "unidecode>=0.04.19,<1.4.0", + "unidecode>=0.04.19,<1.5.0", "lxml>=4.9.1,<5.4.0", "flask-wtf>=0.14.2,<1.3.0", "chardet>=3.0.0,<5.3.0", "netifaces-plus>=0.12.0,<0.13.0", "urllib3>=1.22,<3.0", - "Flask-Limiter>=2.3.0,<3.13.0", - "regex>=2022.3.2,<2025.3.20", - "bleach>=6.0.0,<6.3.0", + "Flask-Limiter>=2.3.0,<4.2.0", + "regex>=2022.3.2,<2026.1.16", + "bleach>=6.0.0,<6.4.0", "python-magic>=0.4.27,<0.5.0", "python-magic-bin>=0.4.0,<0.5.0;sys_platform=='win32'", "flask-httpAuth>=4.4.0,<5.0.0", - "cryptography>=39.0.0,<45.0.0", - "certifi>=2024.7.4,<2025.8.24", + "cryptography>=39.0.0,<47.0.0", + "certifi>=2024.7.4,<2026.1.5", ] dynamic = ["version"] @@ -70,9 +70,9 @@ content-type = "text/markdown" [project.optional-dependencies] gdrive = [ "google-api-python-client>=2.73.00,<2.200.0", - "gevent>20.6.0,<24.12.0", - "greenlet>=0.4.17,<3.3.0", - "httplib2>=0.9.2,<0.23.0", + "gevent>20.6.0,<25.9.2", + "greenlet>=0.4.17,<3.4.0", + "httplib2>=0.9.2,<0.32.0", "oauth2client>=4.0.0,<4.1.4", "uritemplate>=3.0.0,<4.3.0", "pyasn1-modules>=0.0.8,<0.7.0", @@ -91,19 +91,19 @@ goodreads = [ ] ldap = [ "python-ldap>=3.0.0,<3.5.0", - "Flask-SimpleLDAP>=1.4.0,<2.1.0", + "Flask-SimpleLDAP>=1.4.0,<2.2.0", ] oauth = [ "Flask-Dance>=2.0.0,<7.2.0", - "SQLAlchemy-Utils>=0.33.5,<0.42.0", + "SQLAlchemy-Utils>=0.33.5,<0.43.0", ] metadata = [ "rarfile>=3.2,<5.0", "scholarly>=1.2.0,<1.8", "markdown2>=2.0.0,<2.6.0", - "html2text>=2020.1.16,<2025.2.26", + "html2text>=2020.1.16,<2025.4.16", "python-dateutil>=2.1,<2.10.0", - "beautifulsoup4>=4.0.1,<4.14.0", + "beautifulsoup4>=4.0.1,<4.15.0", "faust-cchardet>=2.1.18,<2.1.20", "py7zr>=0.15.0,<0.21.0", "mutagen>=1.40.0,<1.50.0", diff --git a/requirements.txt b/requirements.txt index 4c5a1ba30..43a4c6cc8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,8 +4,8 @@ Flask-Babel>=3.0.0,<4.1.0 Flask-Principal>=0.3.2,<0.5.1 Flask>=1.0.2,<3.2.0 iso-639>=0.4.5,<0.5.0;python_version<'3.12' -pycountry>=20.0.0,<25.0.0;python_version>='3.12' -PyPDF>=6.1.3,<6.7.0 +pycountry>=20.0.0,<27.0.0;python_version>='3.12' +PyPDF>=6.1.3,<6.8.0 pytz>=2016.10 requests>=2.32.0,<2.33.0 SQLAlchemy>=1.3.0,<2.1.0 @@ -17,7 +17,7 @@ flask-wtf>=0.14.2,<1.3.0 chardet>=3.0.0,<5.3.0 netifaces-plus>=0.12.0,<0.13.0 urllib3>=1.22,<3.0 -Flask-Limiter>=2.3.0,<3.1.3 +Flask-Limiter>=2.3.0,<4.2.0 regex>=2022.3.2,<2026.1.16 bleach>=6.0.0,<6.4.0 python-magic>=0.4.27,<0.5.0 diff --git a/test/Calibre-Web TestSummary_Linux.html b/test/Calibre-Web TestSummary_Linux.html index 962374c38..11271fe2c 100644 --- a/test/Calibre-Web TestSummary_Linux.html +++ b/test/Calibre-Web TestSummary_Linux.html @@ -37,20 +37,20 @@
-

Start Time: 2026-01-24 20:50:12

+

Start Time: 2026-02-18 19:25:49

-

Stop Time: 2026-01-25 04:15:44

+

Stop Time: 2026-02-19 02:59:10

-

Duration: 6h 13 min

+

Duration: 6h 16 min

@@ -2039,13 +2039,13 @@ - + TestLoadMetadata 1 0 - 0 1 0 + 0 Detail @@ -2053,27 +2053,26 @@ - +
TestLoadMetadata - test_load_metadata
- ERROR + FAIL
-